Ronove
The Soulstealer
Unit #012
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 12 (+6) | 4 (+2) | 3 (+2) | Normal | Distant | B |
Abilities
Passive
After Ronove deals X damage (after n), this may remove a total of X damage from Any Demons.
Engine Implementation
def _ronove_lifesteal_heal(
state,
event,
demon,
depth: int,
):
"""After Ronove deals damage, remove equal damage from Local Allied Demons.
Fires on DAMAGE_DEALT. When Ronove (event.source) deals X effective damage,
remove up to X total damage from allied demons in Ronove's lane.
event.source = Ronove (must be this instance)
event.value = effective damage dealt (after DEF)
"""
if event.source is None:
return None
if event.source.instance_id != demon.instance_id:
return None
if event.value is None or event.value <= 0:
return None
from engine.operations import remove_damage # lazy: avoids circular
heal_remaining = event.value
new_state = state
for target in list(new_state.demons):
if heal_remaining <= 0:
break
if (
target.owner == demon.owner
and target.damage > 0
):
heal_amount = min(heal_remaining, target.damage)
new_state = remove_damage(new_state, target, heal_amount)
heal_remaining -= heal_amount
return new_state if new_state is not state else None
register_trigger("012", 0, _ronove_lifesteal_heal)