diff --git a/scripts/commands/generic/duel.js b/scripts/commands/generic/duel.js index 991e6e096..f49dd50c2 100644 --- a/scripts/commands/generic/duel.js +++ b/scripts/commands/generic/duel.js @@ -3,5 +3,9 @@ function executeCommand(galacticManager, player, target, args) { var DuelPlayerIntent = Java.type("intents.combat.DuelPlayerIntent"); var DuelEventType = Java.type("intents.combat.DuelPlayerIntent.DuelEventType"); - new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.REQUEST).broadcast(); + if (target.sentDuelRequestToPlayer(player.getCreatureObject())) { + new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.ACCEPT).broadcast(); + } else { + new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.REQUEST).broadcast(); + } } \ No newline at end of file diff --git a/scripts/commands/generic/endduel.js b/scripts/commands/generic/endduel.js index 2919ee85e..ca5b0ca3a 100644 --- a/scripts/commands/generic/endduel.js +++ b/scripts/commands/generic/endduel.js @@ -3,5 +3,9 @@ function executeCommand(galacticManager, player, target, args) { var DuelPlayerIntent = Java.type("intents.combat.DuelPlayerIntent"); var DuelEventType = Java.type("intents.combat.DuelPlayerIntent.DuelEventType"); - new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.END).broadcast(); + if (player.getCreatureObject().sentDuelRequestToPlayer(target)) { + new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.CANCEL).broadcast(); + } else { + new DuelPlayerIntent(player.getCreatureObject(), target, DuelEventType.END).broadcast(); + } } \ No newline at end of file diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index db297b59e..ff827a346 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -87,7 +87,7 @@ public class CreatureObject extends TangibleObject { private List activeDuels = new SynchronizedList(); - private List sentDuels = new SynchronizedList(); + private List sentDuels = new SynchronizedList(); public CreatureObject(long objectId) { super(objectId, BaselineType.CREO); @@ -804,6 +804,10 @@ public class CreatureObject extends TangibleObject { return isEnemy(otherObject) && otherPosture != Posture.INCAPACITATED && otherPosture != Posture.DEAD; } + public boolean sentDuelRequestToPlayer(CreatureObject player) { + return sentDuels.contains(player); + } + public List getActiveDuels() { return activeDuels; } diff --git a/src/services/combat/DuelPlayerService.java b/src/services/combat/DuelPlayerService.java index c76439da0..aee0aef55 100644 --- a/src/services/combat/DuelPlayerService.java +++ b/src/services/combat/DuelPlayerService.java @@ -92,21 +92,12 @@ public class DuelPlayerService extends Service { } } - private DuelEventType getTrueEventType(DuelPlayerIntent dpi) { - if (dpi.getEventType() == DuelEventType.END && dpi.getSender().getSentDuels().contains(dpi.getReciever())) { - return DuelEventType.CANCEL; - } else if (dpi.getEventType() == DuelEventType.REQUEST && dpi.getReciever().getSentDuels().contains(dpi.getSender())) { - return DuelEventType.ACCEPT; - } - return dpi.getEventType(); - } - private void handleDuelPlayerIntent(DuelPlayerIntent dpi) { if (dpi.getReciever() == null || !dpi.getReciever().isPlayer() || dpi.getSender().equals(dpi.getReciever())) { return; } - switch (getTrueEventType(dpi)) { + switch (dpi.getEventType()) { case ACCEPT: handleAcceptDuel(dpi.getSender(), dpi.getReciever()); break;