From ebe52b49aabacfa2330ff31bc87147bf3ba7bb91 Mon Sep 17 00:00:00 2001 From: Seefo Date: Thu, 27 Mar 2014 20:57:51 -0400 Subject: [PATCH] Fixed combat bug, read extended Fixed the combat bug, where if an enemy were to be incapacitated and you were not the attacker, you would remain in combat. --- src/services/combat/CombatService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index 4b738dcc..86c6f2ba 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -87,6 +87,8 @@ public class CombatService implements INetworkDispatch { public void doCombat(final CreatureObject attacker, final TangibleObject target, final WeaponObject weapon, final CombatCommand command, final int actionCounter) { + if(target instanceof CreatureObject) if(((CreatureObject) target).getPosture() == Posture.Incapacitated || ((CreatureObject) target).getPosture() == Posture.Dead) return; + boolean success = true; if((command.getAttackType() == 0 || command.getAttackType() == 1 || command.getAttackType() == 3) && !attemptCombat(attacker, target)) @@ -181,10 +183,14 @@ public class CombatService implements INetworkDispatch { if(target instanceof CreatureObject) { - if(((CreatureObject)(target)).getPosture() == Posture.Incapacitated) + CreatureObject creature = (CreatureObject)target; + if(creature.getPosture() == Posture.Incapacitated || creature.getPosture() == Posture.Dead) { - attacker.removeDefender(target); - target.removeDefender(attacker); + for (TangibleObject defender : creature.getDefendersList()) + { + defender.removeDefender(creature); + creature.removeDefender(defender); + } } } }