From f606c7cf1485b7e91c83a1c8abdc50b1dd13515a Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Sun, 25 Feb 2024 07:08:27 +1100 Subject: [PATCH] Add Spined Megalodon Fixes #82 --- lib/magic/cards/spined_megalodon.rb | 31 +++++++++++++++++++++++++++++ spec/cards/spined_megalodon_spec.rb | 26 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 lib/magic/cards/spined_megalodon.rb create mode 100644 spec/cards/spined_megalodon_spec.rb diff --git a/lib/magic/cards/spined_megalodon.rb b/lib/magic/cards/spined_megalodon.rb new file mode 100644 index 0000000..9a0902d --- /dev/null +++ b/lib/magic/cards/spined_megalodon.rb @@ -0,0 +1,31 @@ +module Magic + module Cards + class SpinedMegalodon < Creature + card_name "Spined Megalodon" + creature_type "Shark" + cost generic: 5, blue: 2 + power 5 + toughness 7 + + keywords :hexproof + + class ScryTrigger < TriggeredAbility::Base + def should_perform? + return false if event.attacks.none? { |attack| attack.attacker == actor } + true + end + + def call + actor.add_choice(:scry, actor: actor) + end + end + + + def event_handlers + { + Events::PreliminaryAttackersDeclared => ScryTrigger + } + end + end + end +end diff --git a/spec/cards/spined_megalodon_spec.rb b/spec/cards/spined_megalodon_spec.rb new file mode 100644 index 0000000..a6dac10 --- /dev/null +++ b/spec/cards/spined_megalodon_spec.rb @@ -0,0 +1,26 @@ +require "spec_helper" + +RSpec.describe Magic::Cards::SpinedMegalodon do + include_context "two player game" + + let(:permanent) { ResolvePermanent("Spined Megalodon") } + + it "has hexproof" do + expect(permanent).to be_hexproof + end + + it "scries 1 when it attacks" do + skip_to_combat! + + current_turn.declare_attackers! + + p1.declare_attacker( + attacker: permanent, + target: p2 + ) + + current_turn.attackers_declared! + + expect(game.choices.first).to be_a(Magic::Choice::Scry) + end +end