@@ -38,6 +38,7 @@ class BaseCard(Entity):
38
38
def __init__ (self , id , data ):
39
39
self .data = data
40
40
super ().__init__ ()
41
+ self .slots = []
41
42
self .auras = []
42
43
self .requirements = data .requirements .copy ()
43
44
self .id = id
@@ -171,10 +172,6 @@ def powered_up(self):
171
172
def entities (self ):
172
173
return chain ([self ], self .buffs )
173
174
174
- @property
175
- def slots (self ):
176
- return self .buffs
177
-
178
175
def _set_zone (self , zone ):
179
176
old_zone = self .zone
180
177
super ()._set_zone (zone )
@@ -357,6 +354,7 @@ def __init__(self, *args):
357
354
self .cant_be_targeted_by_hero_powers = False
358
355
self .num_attacks = 0
359
356
self .race = Race .INVALID
357
+ self ._enrage = None
360
358
super ().__init__ (* args )
361
359
362
360
@property
@@ -431,14 +429,23 @@ def damage(self):
431
429
@damage .setter
432
430
def damage (self , amount ):
433
431
amount = max (0 , amount )
434
- dmg = self .damage
435
432
436
433
if self .min_health :
437
434
self .log ("%r has HEALTH_MINIMUM of %i" , self , self .min_health )
438
435
amount = min (amount , self .max_health - self .min_health )
439
436
440
437
self ._damage = amount
441
438
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
+
442
449
@property
443
450
def enraged (self ):
444
451
return False
@@ -523,7 +530,6 @@ class Minion(Character):
523
530
)
524
531
525
532
def __init__ (self , id , data ):
526
- self ._enrage = None
527
533
self .always_wins_brawls = False
528
534
self .divine_shield = False
529
535
self .enrage = False
@@ -566,15 +572,6 @@ def exhausted(self):
566
572
return True
567
573
return super ().exhausted
568
574
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
-
578
575
@property
579
576
def enraged (self ):
580
577
return self .enrage and self .damage
@@ -676,8 +673,6 @@ def reveal(self):
676
673
677
674
678
675
class Enchantment (BaseCard ):
679
- slots = []
680
-
681
676
def __init__ (self , * args ):
682
677
self .aura_source = None
683
678
self .one_turn_effect = False
@@ -695,8 +690,10 @@ def _getattr(self, attr, i):
695
690
def _set_zone (self , zone ):
696
691
if zone == Zone .PLAY :
697
692
self .owner .buffs .append (self )
693
+ self .owner .slots .append (self )
698
694
elif zone == Zone .REMOVEDFROMGAME :
699
695
self .owner .buffs .remove (self )
696
+ self .owner .slots .remove (self )
700
697
super ()._set_zone (zone )
701
698
702
699
def apply (self , target ):
0 commit comments