✅ Local enemy has plus one ap cost
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestVapulaLocalEnemyApCostAura::test_local_enemy_has_plus_one_ap_cost |
Vapula and an enemy share a lane — enemy gets +1 AP Cost.
Preconditions
-
Lane 0: P1's Vapula (#100)
-
Lane 0: P2's Duban (#001, enemy of Vapula)
Action
- Query ap_cost passive modifier on Duban
from engine.abilities import get_passive_modifiers, clear_registries, FIELD_AURA_MODIFIERS
# Fixture cleared registries + reloaded complex. Also reload passive so
# Vapula's field aura is freshly registered exactly once.
import importlib
import engine.abilities_passive
clear_registries()
importlib.reload(engine.abilities_passive)
# Re-register complex's registrations too (since clear wiped them)
import engine.abilities_complex
importlib.reload(engine.abilities_complex)
vapula = make_demon("100", lane=0, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2)
state, placed = _make_state_with_demons(vapula, duban)
duban_p = placed[1]
mod = get_passive_modifiers(state, duban_p, "basic_ap_cost")
Expected Postconditions
- Duban receives +1 ap_cost modifier from Vapula's field aura
Assertions
assert mod == 1, (
f"Local enemy Duban should have +1 basic_ap_cost from Vapula aura "
f"(applies to Attack/March only, not custom abilities). Got {mod}."
)