Skip to content

Commit cfb0ead

Browse files
committed
Make slots non-dynamic, add to them whenever buffing/enraging
1 parent 34fdc17 commit cfb0ead

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

fireplace/card.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class BaseCard(Entity):
3838
def __init__(self, id, data):
3939
self.data = data
4040
super().__init__()
41+
self.slots = []
4142
self.auras = []
4243
self.requirements = data.requirements.copy()
4344
self.id = id
@@ -171,10 +172,6 @@ def powered_up(self):
171172
def entities(self):
172173
return chain([self], self.buffs)
173174

174-
@property
175-
def slots(self):
176-
return self.buffs
177-
178175
def _set_zone(self, zone):
179176
old_zone = self.zone
180177
super()._set_zone(zone)
@@ -357,6 +354,7 @@ def __init__(self, *args):
357354
self.cant_be_targeted_by_hero_powers = False
358355
self.num_attacks = 0
359356
self.race = Race.INVALID
357+
self._enrage = None
360358
super().__init__(*args)
361359

362360
@property
@@ -431,14 +429,23 @@ def damage(self):
431429
@damage.setter
432430
def damage(self, amount):
433431
amount = max(0, amount)
434-
dmg = self.damage
435432

436433
if self.min_health:
437434
self.log("%r has HEALTH_MINIMUM of %i", self, self.min_health)
438435
amount = min(amount, self.max_health - self.min_health)
439436

440437
self._damage = amount
441438

439+
if self.enraged:
440+
if not self._enrage:
441+
self.log("Enraging %r", self)
442+
self._enrage = Enrage(self.data.enrage_tags)
443+
self.slots.append(self._enrage)
444+
elif self._enrage:
445+
self.log("Enrage fades from %r", self)
446+
self.slots.remove(self._enrage)
447+
self._enrage = None
448+
442449
@property
443450
def enraged(self):
444451
return False
@@ -523,7 +530,6 @@ class Minion(Character):
523530
)
524531

525532
def __init__(self, id, data):
526-
self._enrage = None
527533
self.always_wins_brawls = False
528534
self.divine_shield = False
529535
self.enrage = False
@@ -566,15 +572,6 @@ def exhausted(self):
566572
return True
567573
return super().exhausted
568574

569-
@property
570-
def slots(self):
571-
slots = super().slots[:]
572-
if self.enraged:
573-
if not self._enrage:
574-
self._enrage = Enrage(self.data.enrage_tags)
575-
slots.append(self._enrage)
576-
return slots
577-
578575
@property
579576
def enraged(self):
580577
return self.enrage and self.damage
@@ -676,8 +673,6 @@ def reveal(self):
676673

677674

678675
class Enchantment(BaseCard):
679-
slots = []
680-
681676
def __init__(self, *args):
682677
self.aura_source = None
683678
self.one_turn_effect = False
@@ -695,8 +690,10 @@ def _getattr(self, attr, i):
695690
def _set_zone(self, zone):
696691
if zone == Zone.PLAY:
697692
self.owner.buffs.append(self)
693+
self.owner.slots.append(self)
698694
elif zone == Zone.REMOVEDFROMGAME:
699695
self.owner.buffs.remove(self)
696+
self.owner.slots.remove(self)
700697
super()._set_zone(zone)
701698

702699
def apply(self, target):

fireplace/player.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def __init__(self, name):
3030
self.graveyard = CardList()
3131
self.secrets = CardList()
3232
self.buffs = []
33+
self.slots = []
3334
self.choice = None
3435
self.start_hand_size = 4
3536
self.max_hand_size = 10
@@ -63,10 +64,6 @@ def current_player(self):
6364
def controller(self):
6465
return self
6566

66-
@property
67-
def slots(self):
68-
return self.buffs
69-
7067
@property
7168
def mana(self):
7269
mana = max(0, self.max_mana - self.used_mana - self.overload_locked) + self.temp_mana

0 commit comments

Comments
 (0)