Use a try/catch to check for the presence of actor/target.fighter in MeleeAction
This commit is contained in:
parent
99838cbd00
commit
46af8863b1
1 changed files with 18 additions and 21 deletions
|
@ -199,12 +199,7 @@ class MeleeAction(MoveAction):
|
||||||
self.target = target
|
self.target = target
|
||||||
|
|
||||||
def perform(self, engine: 'Engine') -> ActionResult:
|
def perform(self, engine: 'Engine') -> ActionResult:
|
||||||
if not self.target:
|
try:
|
||||||
return self.failure()
|
|
||||||
|
|
||||||
if not self.actor.fighter or not self.target.fighter:
|
|
||||||
return self.failure()
|
|
||||||
|
|
||||||
damage = self.actor.fighter.attack_power - self.target.fighter.defense
|
damage = self.actor.fighter.attack_power - self.target.fighter.defense
|
||||||
if damage > 0 and self.target:
|
if damage > 0 and self.target:
|
||||||
log.ACTIONS.debug('%s attacks %s for %d damage!', self.actor, self.target, damage)
|
log.ACTIONS.debug('%s attacks %s for %d damage!', self.actor, self.target, damage)
|
||||||
|
@ -220,7 +215,9 @@ class MeleeAction(MoveAction):
|
||||||
if self.target.fighter.is_dead:
|
if self.target.fighter.is_dead:
|
||||||
log.ACTIONS.info('%s is dead!', self.target)
|
log.ACTIONS.info('%s is dead!', self.target)
|
||||||
return ActionResult(self, alternate=DieAction(self.target))
|
return ActionResult(self, alternate=DieAction(self.target))
|
||||||
|
except AttributeError:
|
||||||
|
return self.failure()
|
||||||
|
else:
|
||||||
return self.success()
|
return self.success()
|
||||||
|
|
||||||
class WaitAction(Action):
|
class WaitAction(Action):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue