@@ -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
678675class 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 ):
0 commit comments