diff --git a/scripts/buffs/me_evasion_1.py b/scripts/buffs/me_evasion_1.py index 81ea7c1d..723b5ad5 100644 --- a/scripts/buffs/me_evasion_1.py +++ b/scripts/buffs/me_evasion_1.py @@ -7,6 +7,8 @@ def add(core, actor, buff): core.skillModService.addSkillMod(actor, 'expertise_dodge', 35) core.skillModService.addSkillMod(actor, 'display_only_evasion', 5000) core.skillModService.addSkillMod(actor, 'combat_evasion_value', 50) + + core.combatService.endCombat(actor) return def remove(core, actor, buff): diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 051f1690..bf7cc26e 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -775,8 +775,7 @@ public class SimulationService implements INetworkDispatch { core.removeClient(session); object.setAttachment("disconnectTask", disconnectTask); - for(TangibleObject obj : new Vector(object.getDefendersList())) - object.removeDefender(obj); // temp fix for being stuck in combat + core.combatService.endCombat(object); // temp fix for ending combat on disconnect } diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index 6115344a..08a6cee5 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -1381,6 +1381,13 @@ public class CombatService implements INetworkDispatch { } + public void endCombat(CreatureObject defender) { + Vector defenderList = new Vector(defender.getDefendersList()); + if (defenderList.size() > 0) { + defenderList.stream().forEach(attacker -> defender.removeDefender(attacker)); + } + } + public enum HitType{; public static final byte MISS = 0;