From 85037e4e17fea00571ace7e4fa7e13bc0a971ec9 Mon Sep 17 00:00:00 2001 From: Mads Boddum Date: Mon, 10 Oct 2016 13:38:15 +0200 Subject: [PATCH] Revival timer is now cancelled for disappeared players --- src/services/combat/CorpseService.java | 29 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/services/combat/CorpseService.java b/src/services/combat/CorpseService.java index 13ceeef5..fa7bc236 100644 --- a/src/services/combat/CorpseService.java +++ b/src/services/combat/CorpseService.java @@ -246,16 +246,25 @@ public final class CorpseService extends Service { } private void handlePlayerEventIntent(PlayerEventIntent i) { - if(i.getEvent() != PlayerEvent.PE_FIRST_ZONE) { - return; - } - - CreatureObject creature = i.getPlayer().getCreatureObject(); - - if(creature.getPosture() == Posture.DEAD && !reviveTimers.containsKey(creature)) { - // They're dead but they have no active revive timer. - // In this case, they died and the application was shut down and started back up. - scheduleCloneTimer(creature); + switch(i.getEvent()) { + case PE_DISAPPEAR: + CreatureObject creature = i.getPlayer().getCreatureObject(); + Future reviveTimer = reviveTimers.remove(creature); + + if (reviveTimer != null) { + // They had an active timer when they disappeared + reviveTimer.cancel(false); + } + break; + case PE_FIRST_ZONE: + creature = i.getPlayer().getCreatureObject(); + + if (creature.getPosture() == Posture.DEAD && !reviveTimers.containsKey(creature)) { + // They're dead but they have no active revive timer. + // In this case, they didn't clone before the application was shut down and started back up. + scheduleCloneTimer(creature); + } + break; } }