manasimu 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/manasimu/card/fetchland.rb +64 -0
- data/lib/manasimu/card/snc_fetchland.rb +2 -58
- data/lib/manasimu/card/tapland.rb +5 -0
- data/lib/manasimu/data.rb +3 -0
- data/lib/manasimu/game.rb +4 -5
- data/lib/manasimu/planner.rb +3 -2
- data/lib/manasimu.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d6ea60d2d69b6ec0c517c241c03f51dedb5fcb6f9830d01c5e43a71ca952fb3
|
4
|
+
data.tar.gz: d918b9183adf48e7fd623234f05fce40d9b880ffe80719d9c6532e191b65fafe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0747c61c051fc5477ddb4c695d0b6a53d2038ad52861cd989d3a6cdb7ff8a5e21661c6bf3da6a9eca3a0ff87c260f7ac4c7ee5ba512fcad9e012e65b668ef77a
|
7
|
+
data.tar.gz: b60ead57d04031778ce0d618c9ebf00726e78523deff225aeefc34b4235444546224f7611d1aea215b4a8fdb34bb70a7bf8a935cd575f177a742ef3a6030d840
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class FetchLandCard < TapLandCard
|
2
|
+
attr_accessor :deck
|
3
|
+
|
4
|
+
# enter the battlefield
|
5
|
+
def resolve(side, hands, plays, deck)
|
6
|
+
super(side, hands, plays, deck)
|
7
|
+
return @fetch_source if @fetch_source
|
8
|
+
if deck
|
9
|
+
@fetches = deck
|
10
|
+
.select { |card| card.instance_of? BasicLandCard }
|
11
|
+
.select { |card| @mana_source.include? card.mana_source[0] }
|
12
|
+
.uniq { |card| card.card_type }
|
13
|
+
@deck = deck
|
14
|
+
@fetch_source = @fetches.map { |card| card.mana_source }.flatten.uniq
|
15
|
+
else
|
16
|
+
@fetches = []
|
17
|
+
@fetch_source = []
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def first_produce_symbol=(color)
|
22
|
+
super(color)
|
23
|
+
basic_land = @deck
|
24
|
+
.select { |card| card.instance_of? BasicLandCard }
|
25
|
+
.select { |card| color.to_i.to_s == color || card.mana_source.include?(color) }
|
26
|
+
.first
|
27
|
+
if basic_land
|
28
|
+
@fetched = color
|
29
|
+
@deck.delete basic_land
|
30
|
+
@deck.shuffle!
|
31
|
+
@fetch_source = basic_land.mana_source
|
32
|
+
@fetches = [basic_land]
|
33
|
+
else
|
34
|
+
raise Exception.new('basic land is empty')
|
35
|
+
end
|
36
|
+
@deck
|
37
|
+
end
|
38
|
+
|
39
|
+
def mana_source
|
40
|
+
raise Exception.new('you should resolve first') if not @fetch_source
|
41
|
+
@fetch_source
|
42
|
+
end
|
43
|
+
|
44
|
+
def mana_source=(m)
|
45
|
+
@mana_source = m
|
46
|
+
end
|
47
|
+
|
48
|
+
def configure
|
49
|
+
mana_types = ManaType.all
|
50
|
+
@mana_source = mana_types.map {|mana_type| mana_type.color}.flatten.uniq
|
51
|
+
@fetched = nil
|
52
|
+
self
|
53
|
+
end
|
54
|
+
|
55
|
+
def reset
|
56
|
+
super
|
57
|
+
@fetched = nil
|
58
|
+
@fetch_source = nil
|
59
|
+
end
|
60
|
+
|
61
|
+
def mana_produced?
|
62
|
+
not @fetched.nil?
|
63
|
+
end
|
64
|
+
end
|
@@ -1,64 +1,8 @@
|
|
1
|
-
class SncFetchLandCard <
|
2
|
-
|
3
|
-
attr_accessor :deck
|
4
|
-
|
5
|
-
def resolve(side, hands, plays, deck)
|
6
|
-
super(side, hands, plays, deck)
|
7
|
-
return @fetch_source if @fetch_source
|
8
|
-
@tapped = true
|
9
|
-
if deck
|
10
|
-
@fetches = deck
|
11
|
-
.select { |card| card.instance_of? BasicLandCard }
|
12
|
-
.select { |card| @mana_source.include? card.mana_source[0] }
|
13
|
-
.uniq { |card| card.card_type }
|
14
|
-
@deck = deck
|
15
|
-
@fetch_source = @fetches.map { |card| card.mana_source }.flatten.uniq
|
16
|
-
else
|
17
|
-
@fetches = []
|
18
|
-
@fetch_source = []
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def first_produce_symbol=(color)
|
23
|
-
super(color)
|
24
|
-
if @deck
|
25
|
-
basic_land = @deck
|
26
|
-
.select { |card| card.instance_of? BasicLandCard }
|
27
|
-
.select { |card| color.to_i.to_s == color || card.mana_source.include?(color) }
|
28
|
-
.first
|
29
|
-
if basic_land
|
30
|
-
@deck.delete basic_land
|
31
|
-
@deck.shuffle!
|
32
|
-
@fetch_source = [color]
|
33
|
-
@fetches = [basic_land]
|
34
|
-
else
|
35
|
-
raise Exception.new('basic land is empty')
|
36
|
-
end
|
37
|
-
else
|
38
|
-
[]
|
39
|
-
end
|
40
|
-
@fetched = true
|
41
|
-
end
|
42
|
-
|
43
|
-
def mana_source
|
44
|
-
raise Exception.new('you should resolve first') if not @fetch_source
|
45
|
-
@fetch_source
|
46
|
-
end
|
1
|
+
class SncFetchLandCard < FetchLandCard
|
47
2
|
|
48
3
|
def configure
|
49
4
|
mana_types = ManaType.search_text_by_land_type(card_type.text)
|
50
|
-
|
51
|
-
@fetched = false
|
5
|
+
super.mana_source = mana_types.map {|mana_type| mana_type.color}.flatten.uniq
|
52
6
|
self
|
53
7
|
end
|
54
|
-
|
55
|
-
def reset
|
56
|
-
super
|
57
|
-
@fetched = false
|
58
|
-
@fetch_source = nil
|
59
|
-
end
|
60
|
-
|
61
|
-
def mana_produced?
|
62
|
-
@fetched
|
63
|
-
end
|
64
8
|
end
|
@@ -4,6 +4,7 @@ class TapLandCard < Card
|
|
4
4
|
@tapped
|
5
5
|
end
|
6
6
|
|
7
|
+
# when enter the battlefield
|
7
8
|
def resolve(side, hands, plays, deck)
|
8
9
|
super(side, hands, plays, deck)
|
9
10
|
@tapped = true
|
@@ -14,6 +15,10 @@ class TapLandCard < Card
|
|
14
15
|
@tapped = false
|
15
16
|
end
|
16
17
|
|
18
|
+
def tappend=(tapped)
|
19
|
+
@tapped = tapped
|
20
|
+
end
|
21
|
+
|
17
22
|
def reset
|
18
23
|
super
|
19
24
|
@tapped = false
|
data/lib/manasimu/data.rb
CHANGED
@@ -77,6 +77,9 @@ class Deck
|
|
77
77
|
card = TapLandCard.new(clone)
|
78
78
|
elsif clone.contents[0].text =~ /enters the battlefield tapped unless you control two or more other lands./
|
79
79
|
card = SlowLandCard.new(clone)
|
80
|
+
elsif clone.text =~ /earch your library for a basic land card, put it onto the battlefield tapped, then shuffle/
|
81
|
+
card = FetchLandCard.new(clone)
|
82
|
+
card.configure
|
80
83
|
elsif clone.set_code == 'SNC' and
|
81
84
|
clone.contents[0].text =~ /enters the battlefield, sacrifice it/
|
82
85
|
card = SncFetchLandCard.new(clone)
|
data/lib/manasimu/game.rb
CHANGED
@@ -18,7 +18,7 @@ class Game
|
|
18
18
|
def step(turn)
|
19
19
|
if @debugg
|
20
20
|
puts "---------------------------------"
|
21
|
-
puts "turn #{turn}
|
21
|
+
puts "turn #{turn} basic_lands #{@deck.select {|c| c.instance_of? BasicLandCard}.length}"
|
22
22
|
puts "played"
|
23
23
|
@plays.each do |card| puts " #{card}" end
|
24
24
|
puts "hands"
|
@@ -26,11 +26,12 @@ class Game
|
|
26
26
|
end
|
27
27
|
|
28
28
|
draw(turn)
|
29
|
-
play_cards = plan;
|
29
|
+
play_cards, deck = plan;
|
30
30
|
@hands.each { |card| card.step_in_hands(turn) }
|
31
|
-
|
31
|
+
play_cards.each do |card|
|
32
32
|
play(card, turn)
|
33
33
|
end
|
34
|
+
deck = deck if deck
|
34
35
|
@plays.each { |card| card.step_in_plays(turn) }
|
35
36
|
end
|
36
37
|
|
@@ -53,8 +54,6 @@ class Game
|
|
53
54
|
end
|
54
55
|
|
55
56
|
card.resolve(nil, @hands, @plays, @deck)
|
56
|
-
@deck = card.deck if card.respond_to? :deck
|
57
|
-
|
58
57
|
card.played(turn, nil)
|
59
58
|
@plays << card
|
60
59
|
@hands.delete card
|
data/lib/manasimu/planner.rb
CHANGED
@@ -43,16 +43,17 @@ class Planner
|
|
43
43
|
max_land = lands_in_hand[0]
|
44
44
|
end
|
45
45
|
|
46
|
+
deck = nil
|
46
47
|
if max_lands
|
47
48
|
max_lands.each_with_index do |land, i|
|
48
49
|
if not land.mana_produced? and max_symbols[i]
|
49
|
-
debugger if max_symbols[i].nil?
|
50
50
|
land.first_produce_symbol = max_symbols[i]
|
51
|
+
deck = land.deck if land.respond_to? :deck
|
51
52
|
end
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
[max_land, max_spells].select {|a| a}.flatten
|
56
|
+
[[max_land, max_spells].select {|a| a}.flatten, deck]
|
56
57
|
end
|
57
58
|
|
58
59
|
#
|
data/lib/manasimu.rb
CHANGED
@@ -7,6 +7,7 @@ require_relative './manasimu/card/basicland.rb'
|
|
7
7
|
require_relative './manasimu/card/pathway.rb'
|
8
8
|
require_relative './manasimu/card/tapland.rb'
|
9
9
|
require_relative './manasimu/card/slowland.rb'
|
10
|
+
require_relative './manasimu/card/fetchland.rb'
|
10
11
|
require_relative './manasimu/card/snc_fetchland.rb'
|
11
12
|
require_relative './manasimu/planner.rb'
|
12
13
|
require_relative './manasimu/game.rb'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manasimu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- so1itaryrove
|
@@ -21,6 +21,7 @@ files:
|
|
21
21
|
- lib/manasimu.rb
|
22
22
|
- lib/manasimu/card.rb
|
23
23
|
- lib/manasimu/card/basicland.rb
|
24
|
+
- lib/manasimu/card/fetchland.rb
|
24
25
|
- lib/manasimu/card/pathway.rb
|
25
26
|
- lib/manasimu/card/slowland.rb
|
26
27
|
- lib/manasimu/card/snc_fetchland.rb
|