diff --git a/lib/magic/cards/life_goes_on.rb b/lib/magic/cards/life_goes_on.rb new file mode 100644 index 0000000..1a01144 --- /dev/null +++ b/lib/magic/cards/life_goes_on.rb @@ -0,0 +1,16 @@ +module Magic + module Cards + class LifeGoesOn < Instant + card_name "Life Goes On" + cost "{G}" + + def resolve! + creature_died = current_turn.events.count { |event| event.is_a?(Events::CreatureDied) } > 0 + life_gain = 4 + life_gain += 4 if creature_died + + trigger_effect(:gain_life, life: life_gain) + end + end + end +end diff --git a/spec/cards/life_goes_on_spec.rb b/spec/cards/life_goes_on_spec.rb new file mode 100644 index 0000000..c7b7888 --- /dev/null +++ b/spec/cards/life_goes_on_spec.rb @@ -0,0 +1,35 @@ +require "spec_helper" + +RSpec.describe Magic::Cards::LifeGoesOn do + include_context "two player game" + let(:life_goes_on) { Card("Life Goes On") } + context "when no creature died" do + it "player gains 4 life" do + p1.add_mana(green: 1) + p1.cast(card: life_goes_on) do + _1.pay_mana(green: 1) + end + + game.tick! + expect(p1.life).to eq(24) + end + end + + context "when a creature died" do + let(:creature) { ResolvePermanent("Wood Elves") } + + before do + creature.sacrifice! + end + + it "player gains 8 life" do + p1.add_mana(green: 1) + p1.cast(card: life_goes_on) do + _1.pay_mana(green: 1) + end + + game.tick! + expect(p1.life).to eq(28) + end + end +end