Skip to content

Commit

Permalink
Fix up Lathril's combat damage ability
Browse files Browse the repository at this point in the history
  • Loading branch information
radar committed Mar 7, 2024
1 parent 21447df commit a23ca37
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 28 deletions.
16 changes: 11 additions & 5 deletions lib/magic/cards/lathril_blade_of_the_elves.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,19 @@ def resolve!

def activated_abilities = [ActivatedAbility]

class ElfSpawner < TriggeredAbility
def should_perform?
event.target.player?
end

def call
actor.trigger_effect(:create_token, token_class: ElfWarriorToken, amount: event.damage)
end
end

def event_handlers
{
Events::CombatDamageDealt => -> (receiver, event) do
return unless event.target.player?

trigger_effect(:create_token, token_class: ElfWarriorToken, amount: event.damage)
end
Events::CombatDamageDealt => ElfSpawner
}
end
end
Expand Down
8 changes: 7 additions & 1 deletion lib/magic/effects/deal_combat_damage.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,15 @@ def initialize(damage:, **args)
end

def resolve!
target.take_damage(damage)
game.notify!(
Events::CombatDamageDealt.new(source: self, target: target, damage: damage, infect: source.infect?)
Events::CombatDamageDealt.new(
source: source,
target: target,
damage: damage,
)
)

if target.player? && source.has_keyword?(Magic::Keywords::Toxic)
source.trigger_effect(
:add_counter,
Expand Down
2 changes: 1 addition & 1 deletion lib/magic/effects/deal_damage.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def initialize(damage:, **args)
end

def resolve!
target.take_damage(source: source, damage: damage)
target.take_damage(damage)
end
end
end
Expand Down
2 changes: 0 additions & 2 deletions lib/magic/permanent.rb
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,6 @@ def replacement_effect_for(effect)
end

def receive_event(event)
super

trigger_delayed_response(event)
case event
when Events::EnteredTheBattlefield
Expand Down
19 changes: 2 additions & 17 deletions lib/magic/permanents/creature.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,8 @@ def toughness
static_ability_mods.sum(&:toughness)
end

def take_damage(source:, damage:)
game.notify!(
Events::DamageDealt.new(
source: source,
target: self,
damage: damage,
)
)
end

def receive_event(event)
return if !event.respond_to?(:target) || event.target != self

case event
when Events::CombatDamageDealt, Events::DamageDealt
@damage += event.damage
end
def take_damage(damage)
@damage += damage
end

def fight(target, assigned_damage = power)
Expand Down
2 changes: 1 addition & 1 deletion lib/magic/permanents/planeswalker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def change_loyalty!(change)
destroy! if loyalty <= 0
end

def take_damage(source:, damage:)
def take_damage(damage)
super

change_loyalty!(-damage) if planeswalker?
Expand Down
2 changes: 1 addition & 1 deletion lib/magic/player.rb
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def lose_life(loss)
)
end

def take_damage(source:, damage:)
def take_damage(damage)
lose_life(damage)
end

Expand Down

0 comments on commit a23ca37

Please sign in to comment.