Skills in Cowculator¶
Skills are the heart of every battle in Cowculator. They decide what a fighter can do—attack, heal, buff, debuff, and more.
There are two main types of skills: Active and Passive.
Active Skills¶
Active skills are the abilities your fighters use on their turn. You define the order, and Cowculator executes them sequentially, looping back to the first skill when all have been used.
- When do they trigger? On the fighter's turn (when their turn meter is full).
- What can they do? Deal damage, heal, apply buffs or debuffs, and more.
- Where do you define them? In the
fighter.skillsarray in the/api/battles/startendpoint.
Tip
Skill order = strategy. The right move at the wrong time is still the wrong move!
Skill¶
Represents an active skill. Each Skill includes:
name: Name of the skill.chance: Probability that the skill activates (0–1).actions: List ofSkillActionobjects, processed in order.energy_cost: Energy required to use the skill.
SkillAction¶
Each skill consists of one or more SkillAction. Each SkillAction includes:
action: The action type. One of:name: Action name.chance: Probability the action activates (0–1).target_type: Who the action targets [enemy,self,all].
Example - Active Skill¶
"skills": [{
"skill_id": "1001",
"name": "Squeezy Squeezy Dragon Claw",
"chance": 1.0,
"actions": [{
"data": {
"type": "attack",
"damage_value": 1.1,
"damage_type": "normal"
},
"name": "Attack",
"chance": 1.0,
"target_type": "single_enemy"
}],
"energy_cost": 40
}]
Passive Skills¶
Passive skills don’t require turns to activate. They’re automatically applied and remain active (or conditionally triggered) throughout the battle. There are two types of passive statuses: alwayson1 and chance2.
- When do they trigger? Always-on effects activate at battle start. Chance effects may trigger each turn.
- What do they do? Provide persistent buffs, debuffs, or stat modifications.
- Where are they defined? In the
fighter.passivearray in the/api/battles/startendpoint. - Execution order: Processed in the order listed in
fighter.passive. Each passive skill is applied once and there is no looping.
PassiveSkill¶
Each passive skill includes:
skill_id: Unique identifier for the passive skill.name: Name of the passive skill.passive_status: array ofPassiveStatusAlwaysOnorPassiveStatusChance.
PassiveStatusAlwaysOn¶
An effect that is continuously active throughout the battle.
name: Name of the effect status.passive_buff_type: Type of passive effect. Alwaysalwayson.target_type: Target affected by this status [enemy,self,all].alwayson_effect: The effect applied to stats (e.g., increase attack, reduce speed). List ofStatsUporStatsDown.
PassiveStatusChance¶
An effect that has a probability of triggering each turn.
name: Name of the effect status.passive_buff_type: Type of passive effect. Alwayschance.target_type: Target affected by this status [enemy,self,all].chance_effect: List ofSkillActionthat may be triggered based on chance.
Example – AlwaysOn Passive Skill¶
Reduces enemy speed by 25%:
"passive": [{
"skill_id": "2001",
"name": "Wait You 3000 Years",
"passive_status": [{
"passive_buff_type": "alwayson",
"name": "Wait You 3000 Years",
"target_type": "enemy",
"alwayson_effect": {
"stat": "speed",
"value": 0.25
}
}]
}]
Example – Chance Passive Skill¶
Chance to stun an enemy each turn:
"passive": [{
"skill_id": "2002",
"name": "Lucky Strike",
"passive_status": [{
"passive_buff_type": "chance",
"name": "Lucky Strike",
"target_type": "enemy",
"chance_effect": [{
"action": "ApplyStatus",
"name": "Stun",
"chance": 0.3,
"target_type": "single_enemy",
"data": {
"status_type": "debuff",
"type": "stun",
"duration": 1
}
}]
}]
}]
Active vs Passive Skills¶
| Aspect | Active Skills | Passive Skills |
|---|---|---|
| Trigger timing | Activate on a fighter’s turn (when their turn meter is full). | Always-on effects activate at battle start. Chance effects may trigger each turn. |
| Control | Executed in the order you define in fighter.skills. Loops back after the last skill. |
Executed once in the order listed in fighter.passive. No reactivation or looping. |
| Purpose | Perform actions like attacks, heals, buffs, debuffs. | Provide persistent effects (alwayson) or probabilistic effects (chance). |
| Definition | Defined in fighter.skills in /api/battles/start. |
Defined in fighter.passive in /api/battles/start. |
| Structure | Built from Skill → SkillAction objects. |
Built from PassiveSkill → PassiveStatusAlwaysOn or PassiveStatusChance objects. |
| Examples | - Squeezy Squeezy Dragon Claw that deals damage. - Heal that restores HP. |
- Alwayson buff that increases attack. - Chance effect that stuns an enemy. |