manasimu 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15aafb1d5f12798204ce6bc38d36acbc1ab98937f7ff4f25ee43eb46bfde71e9
4
- data.tar.gz: cd22e5a0e1773ae2a1d2ebdfde87665a187c57fde927cf22ef950e4888a9568b
3
+ metadata.gz: 3c73ee6bfefc5a1611b3170d86b8dc27dbf75c58f2dc3f2be7d570679cedfab3
4
+ data.tar.gz: f771ef43cafe46bcc75eed2c0964c42e39f32d7c1ab92a0e09e1a5b6ad6b4845
5
5
  SHA512:
6
- metadata.gz: c74b8a9b11f5fb2194b2338923e5b2a765f1f9e60110397ecbdd82d2f34aba61f5b8b1024ba94bdd4b3ffef66a961d179dcc458e1736bec8865aafd3cb320c86
7
- data.tar.gz: 8015c756b8f118a6df781c50239f5364efd63f026611a84621bf50f83d1fe248a0c6c2f4bce56a0f1fea58909c8f97afec3164ee75e3c99c4d1379cee1171f8f
6
+ metadata.gz: c1e61d71e665d98b74a8cfa52d877e2131be56484fdee9d78d85b1e072d5ffa5172444b7c0683c30c94e113f9876048b31d4bbb4af528fac08296d2650bb6ce1
7
+ data.tar.gz: 5a6ea06c33e3227a1f4f74be5a6d4266069090ecda660e29ad7c9b717891367d4764943726f2a0cd32632fafd6e58e505526c6809ed0da87e67b3b133382dd7d
@@ -1,6 +1,7 @@
1
1
  class SlowLandCard < Card
2
2
 
3
3
  def resolve(side, hands, plays)
4
+ super(side, hands, plays)
4
5
  num = 0
5
6
  for card in plays do
6
7
  next if card == self
@@ -15,7 +16,8 @@ class SlowLandCard < Card
15
16
  end
16
17
  end
17
18
 
18
- def step(turn)
19
+ def step_in_plays(turn)
20
+ super(turn)
19
21
  @tapped = false
20
22
  end
21
23
 
@@ -24,6 +26,7 @@ class SlowLandCard < Card
24
26
  end
25
27
 
26
28
  def reset
29
+ super
27
30
  @tapped = false
28
31
  end
29
32
  end
@@ -5,14 +5,17 @@ class TapLandCard < Card
5
5
  end
6
6
 
7
7
  def resolve(side, hands, plays)
8
+ super(side, hands, plays)
8
9
  @tapped = true
9
10
  end
10
11
 
11
- def step(turn)
12
+ def step_in_plays(turn)
13
+ super(turn)
12
14
  @tapped = false
13
15
  end
14
16
 
15
17
  def reset
18
+ super
16
19
  @tapped = false
17
20
  end
18
21
  end
data/lib/manasimu/card.rb CHANGED
@@ -6,11 +6,15 @@ class Card
6
6
  @playable = false
7
7
  end
8
8
 
9
- def step(turn)
10
- @card_type.step(turn - 1, self)
9
+ def step_in_hands(turn)
10
+ @card_type.step_in_hands(turn - 1, self)
11
11
  @can_play = false
12
12
  end
13
13
 
14
+ def step_in_plays(turn)
15
+ @card_type.step_in_plays(turn - 1, self)
16
+ end
17
+
14
18
  def drawed(turn)
15
19
  @drawed = turn
16
20
  @card_type.drawed(turn)
@@ -19,7 +23,9 @@ class Card
19
23
  def played(turn, side = "a")
20
24
  @played = turn
21
25
  @side = side
22
- @card_type.played(turn)
26
+ if not is_land? or not tapped?
27
+ @card_type.played(turn)
28
+ end
23
29
  end
24
30
 
25
31
  def resolve(side = "a", hands, plays)
@@ -77,7 +83,9 @@ class Card
77
83
 
78
84
  def reset
79
85
  @side = nil
80
- @tapped = nil
86
+ @played = nil
87
+ @drawed = nil
88
+ @can_play = false
81
89
  end
82
90
 
83
91
  def is_land?
@@ -105,7 +113,7 @@ class Card
105
113
  end
106
114
 
107
115
  class CardType
108
- attr_accessor :contents, :played, :drawed, :name, :can_plays
116
+ attr_accessor :contents, :played, :drawed, :name, :can_plays, :mana_sources
109
117
 
110
118
  def self.create(card_type, name)
111
119
  ret = card_type.dup
@@ -113,6 +121,7 @@ class CardType
113
121
  ret.played = {}
114
122
  ret.drawed = {}
115
123
  ret.can_plays = {}
124
+ ret.mana_sources = {}
116
125
  ret.name = name
117
126
  ret
118
127
  end
@@ -122,6 +131,7 @@ class CardType
122
131
  @played = {}
123
132
  @drawed = {}
124
133
  @can_plays = {}
134
+ @mana_sources = {}
125
135
  @contents = contents.map {|c| Content.new(c)}
126
136
  end
127
137
 
@@ -129,13 +139,24 @@ class CardType
129
139
  @name ||= @contents[0].name
130
140
  end
131
141
 
132
- def step(turn, card)
142
+ def step_in_hands(turn, card)
133
143
  if turn >= 0 and card.can_play?
134
144
  @can_plays[turn] ||= 0
135
145
  @can_plays[turn] += 1
136
146
  end
137
147
  end
138
148
 
149
+ def step_in_plays(turn, card)
150
+ if turn >= 0 and card.mana_source? and not card.tapped?
151
+ @mana_sources[turn] ||= {}
152
+ size = card.color_identity.length
153
+ card.color_identity.each do |c|
154
+ @mana_sources[turn][c] ||= 0
155
+ @mana_sources[turn][c] += 1.0 / size
156
+ end
157
+ end
158
+ end
159
+
139
160
  def played(turn)
140
161
  @played[turn] ||= 0
141
162
  @played[turn] += 1
@@ -216,6 +237,7 @@ class CardType
216
237
  end
217
238
 
218
239
  def is_land?(side = nil)
240
+ return @is_land if @is_land
219
241
  arr = if side == 'a'
220
242
  [0]
221
243
  elsif side == 'b'
@@ -223,9 +245,10 @@ class CardType
223
245
  else
224
246
  [0,1]
225
247
  end
226
- arr.select do |i|
248
+ @is_land = arr.select do |i|
227
249
  @contents[i] and @contents[i].types == "Land"
228
250
  end.length > 0
251
+ return @is_land
229
252
  end
230
253
 
231
254
  def playable?(lands, capas)
@@ -311,7 +334,8 @@ class CardType
311
334
  drawed += @drawed[i] || 0
312
335
  end
313
336
  can_played = @can_plays[turn] || 0
314
- [played, drawed, can_played]
337
+ mana_sources = @mana_sources[turn] || {}
338
+ [played, drawed, can_played, mana_sources]
315
339
  end
316
340
 
317
341
  def to_s
data/lib/manasimu/game.rb CHANGED
@@ -25,8 +25,8 @@ class Game
25
25
  end
26
26
 
27
27
  def upkeep(turn)
28
- @hands.each { |card| card.step(turn) }
29
- @plays.each { |card| card.step(turn) }
28
+ @hands.each { |card| card.step_in_hands(turn) }
29
+ @plays.each { |card| card.step_in_plays(turn) }
30
30
  end
31
31
 
32
32
  def draw(turn)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manasimu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - so1itaryrove
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-14 00:00:00.000000000 Z
11
+ date: 2022-05-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: mtg arrena mana curve simulator
14
14
  email: so1itaryrove@gmail.com