Skip to content

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.skills array in the /api/battles/start endpoint.

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 of SkillAction objects, processed in order.
  • energy_cost: Energy required to use the skill.

SkillAction

Each skill consists of one or more SkillAction. Each SkillAction includes:

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.passive array in the /api/battles/start endpoint.
  • 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 of PassiveStatusAlwaysOn or PassiveStatusChance.

PassiveStatusAlwaysOn

An effect that is continuously active throughout the battle.

  • name: Name of the effect status.
  • passive_buff_type: Type of passive effect. Always alwayson.
  • target_type: Target affected by this status [enemy, self, all].
  • alwayson_effect: The effect applied to stats (e.g., increase attack, reduce speed). List of StatsUp or StatsDown.

PassiveStatusChance

An effect that has a probability of triggering each turn.

  • name: Name of the effect status.
  • passive_buff_type: Type of passive effect. Always chance.
  • target_type: Target affected by this status [enemy, self, all].
  • chance_effect: List of SkillAction that 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 SkillSkillAction objects. Built from PassiveSkillPassiveStatusAlwaysOn 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.


  1. alwayson: The effect is continuously active throughout the battle. 

  2. chance: The effect has a probability of being triggered each turn.