Skip to content

Commit

Permalink
Add Tide Skimmer
Browse files Browse the repository at this point in the history
  • Loading branch information
radar committed Mar 10, 2024
1 parent f11e6a3 commit 5a02717
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 3 deletions.
26 changes: 26 additions & 0 deletions lib/magic/cards/tide_skimmer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module Magic
module Cards
class TideSkimmer < Creature
card_name "Tide Skimmer"
cost "{3}{U}"
creature_type "Drake"
keywords :flying

class AttackerTrigger < TriggeredAbility
def should_perform?
game.current_turn.active_player == controller && game.current_turn.attacks.count >= 2
end

def call
actor.trigger_effect(:draw_cards)
end
end

def event_handlers
{
Events::FinalAttackersDeclared => AttackerTrigger
}
end
end
end
end
1 change: 0 additions & 1 deletion lib/magic/effects/draw_cards.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ def inspect

def resolve!
number_to_draw.times do

player.draw!
end
end
Expand Down
1 change: 1 addition & 0 deletions lib/magic/player.rb
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ def shuffle!
def mill(amount)
amount.times do
card = library.mill
card.move_to_graveyard!
game.notify!(
Events::CardMilled.new(
player: self,
Expand Down
3 changes: 1 addition & 2 deletions lib/magic/stack/choices.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ module Magic
class Stack
class Choices < SimpleDelegator
def add(choice)

self << choice
unshift(choice)
end
end
end
Expand Down
45 changes: 45 additions & 0 deletions spec/cards/tide_skimmer_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require "spec_helper"

RSpec.describe Magic::Cards::TideSkimmer do
include_context "two player game"

let!(:tide_skimmer) { ResolvePermanent("Tide Skimmer") }

before do
skip_to_combat!
end

it "does not draw a card" do
expect(p1).not_to receive(:draw!)

current_turn.declare_attackers!

p1.declare_attacker(
attacker: tide_skimmer,
target: p2
)

current_turn.attackers_declared!
end

context "when there's another flying creature" do
let!(:concordia_pegasus) { ResolvePermanent("Concordia Pegasus") }

it "draws a card" do
expect(p1).to receive(:draw!).once
current_turn.declare_attackers!

p1.declare_attacker(
attacker: tide_skimmer,
target: p2
)

p1.declare_attacker(
attacker: concordia_pegasus,
target: p2
)

current_turn.attackers_declared!
end
end
end

0 comments on commit 5a02717

Please sign in to comment.