Skip to main content

✅ Vual hp aura fused bottom projects

CategoryInteraction
StatusPassing
Testtests/test_abilities_passive.py::test_vual_hp_aura_fused_bottom_projects

Vual is the fused bottom. The +PWR HP aura still projects to

Preconditions

  • Lane 0: P1's fused demon — Flauros (#013) top, Vual (#083) bottom

  • Effective PWR = 2 (Flauros) + 1 (Vual fPWR) = 3

  • Lane 0: P1's Sabnock (#003) — Local ally (should receive +3 HP aura)

  • Lane 1: P1's Murmur (#002) — Distant ally (no buff)

  • Lane 0: P2's Duban (#001) — Local enemy (no buff — aura is Allied-only)

Action

  • Query hp passive modifier on each demon
fused = make_fused_demon("013", "083", lane=0, owner=Side.PLAYER_1)
sabnock = make_demon("003", lane=0, owner=Side.PLAYER_1)
murmur = make_demon("002", lane=1, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2)

state = make_game_state()
state = place_demon(state, fused)
state = place_demon(state, sabnock)
state = place_demon(state, murmur)
state = place_demon(state, duban)

fused_p = next(d for d in state.demons if d.is_fused)
sabnock_p = next(d for d in state.demons if d.unit_id == "003")
murmur_p = next(d for d in state.demons if d.unit_id == "002")
duban_p = next(d for d in state.demons if d.unit_id == "001")

Expected Postconditions

  • Sabnock hp modifier == 3 (Vual fused-bottom aura projects)

  • Fused demon itself hp modifier == 0 ('Other' self-exclusion via instance_id)

  • Murmur hp modifier == 0 (different lane)

  • Duban hp modifier == 0 (enemy side)

Assertions

assert get_passive_modifiers(state, sabnock_p, "hp") == 3, (
"Local ally of Vual-fused-bottom must get +3 HP aura."
)
assert get_passive_modifiers(state, fused_p, "hp") == 0, (
"Fused demon IS Vual (via bottom) — 'Other' self-exclusion must return 0."
)
assert get_passive_modifiers(state, murmur_p, "hp") == 0, (
"Distant ally must not receive the Local-only aura."
)
assert get_passive_modifiers(state, duban_p, "hp") == 0, (
"Local enemy must not receive the Allied-only aura."
)