From 5299da784ac072f05b785bdba5b757681e8d4bd4 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Fri, 21 Apr 2023 15:17:37 -0500 Subject: [PATCH] mob respawn fix actual --- src/engine/ai/MobileFSM.java | 38 +++++++++++++------------- src/engine/server/MBServerStatics.java | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/engine/ai/MobileFSM.java b/src/engine/ai/MobileFSM.java index 5cae621d..77ecc455 100644 --- a/src/engine/ai/MobileFSM.java +++ b/src/engine/ai/MobileFSM.java @@ -453,30 +453,30 @@ public class MobileFSM { } //handles checking for respawn of dead mobs even when no players have mob loaded //Despawn Timer with Loot currently in inventory. - if (aiAgent.getCharItemManager().getInventoryCount() > 0) { - if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_WITH_LOOT) { - aiAgent.despawn(); - return; - } - //No items in inventory. - } else { - //Mob's Loot has been looted. - if (aiAgent.isHasLoot()) { - if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_ONCE_LOOTED) { + if(aiAgent.despawned == false) { + if (aiAgent.getCharItemManager().getInventoryCount() > 0) { + if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_WITH_LOOT) { aiAgent.despawn(); - return; + aiAgent.deathTime = System.currentTimeMillis(); } - //Mob never had Loot. + //No items in inventory. } else { - if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER) { - aiAgent.despawn(); - return; + //Mob's Loot has been looted. + if (aiAgent.isHasLoot()) { + if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_ONCE_LOOTED) { + aiAgent.despawn(); + aiAgent.deathTime = System.currentTimeMillis(); + } + //Mob never had Loot. + } else { + if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER) { + aiAgent.despawn(); + aiAgent.deathTime = System.currentTimeMillis(); + } } } - } - if (System.currentTimeMillis() > aiAgent.deathTime + (aiAgent.spawnTime * 1000)) { - aiAgent.despawn(); - aiAgent.respawn(); + }else if (System.currentTimeMillis() > aiAgent.deathTime + (aiAgent.spawnTime * 1000)) { + aiAgent.respawn(); } } public static void CheckForAttack(Mob mob) { diff --git a/src/engine/server/MBServerStatics.java b/src/engine/server/MBServerStatics.java index 0e1ccc12..d46038e7 100644 --- a/src/engine/server/MBServerStatics.java +++ b/src/engine/server/MBServerStatics.java @@ -679,7 +679,7 @@ public class MBServerStatics { public static final int LEVEL_CON_WHITE = 7; public static final int RESPAWN_TIMER = 90 * 1000; public static final int DESPAWN_TIMER = 12 * 1000; - public static final int DESPAWN_TIMER_WITH_LOOT = 90 * 1000; + public static final int DESPAWN_TIMER_WITH_LOOT = 60 * 1000; public static final int DESPAWN_TIMER_ONCE_LOOTED = 5 * 1000; public static final int MAX_COMBAT_HITBOX_RADIUS = 80; public static final int PROC_CHANCE = 5; // %chance to proc