ref: 8fc3b8e6e36663f00f8ce7c2830db55a538a72b5
dir: /engine/battle/move_effects/counter.asm/
BattleCommand_Counter: ld a, 1 ld [wAttackMissed], a ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a ret z ld b, a callfar GetMoveEffect ld a, b cp EFFECT_COUNTER ret z call BattleCommand_ResetTypeMatchup ld a, [wTypeMatchup] and a ret z call CheckOpponentWentFirst ret z ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar dec a ld de, wStringBuffer1 call GetMoveData ld a, [wStringBuffer1 + MOVE_POWER] and a ret z ld a, [wStringBuffer1 + MOVE_TYPE] cp SPECIAL ret nc ; BUG: Counter and Mirror Coat still work if the opponent uses an item (see docs/bugs_and_glitches.md) ld hl, wCurDamage ld a, [hli] or [hl] ret z ld a, [hl] add a ld [hld], a ld a, [hl] adc a ld [hl], a jr nc, .capped ld a, $ff ld [hli], a ld [hl], a .capped xor a ld [wAttackMissed], a ret