Use a try/catch to check for the presence of actor/target.fighter in MeleeAction

This commit is contained in:
Eryn Wells 2022-05-16 20:51:53 -07:00
parent 99838cbd00
commit 46af8863b1

View file

@ -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):