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
|
||||
|
||||
def perform(self, engine: 'Engine') -> ActionResult:
|
||||
if not self.target:
|
||||
return self.failure()
|
||||
|
||||
if not self.actor.fighter or not self.target.fighter:
|
||||
return self.failure()
|
||||
|
||||
try:
|
||||
damage = self.actor.fighter.attack_power - self.target.fighter.defense
|
||||
if damage > 0 and self.target:
|
||||
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:
|
||||
log.ACTIONS.info('%s is dead!', self.target)
|
||||
return ActionResult(self, alternate=DieAction(self.target))
|
||||
|
||||
except AttributeError:
|
||||
return self.failure()
|
||||
else:
|
||||
return self.success()
|
||||
|
||||
class WaitAction(Action):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue