mob respawn fix
This commit is contained in:
@@ -33,7 +33,7 @@ public class MobileFSM {
|
||||
if(mob == null){
|
||||
return;
|
||||
}
|
||||
if(target == null){
|
||||
if(target == null || target.isAlive() == false){
|
||||
mob.setCombatTarget(null);
|
||||
return;
|
||||
}
|
||||
@@ -449,12 +449,14 @@ public class MobileFSM {
|
||||
private static void CheckForRespawn(Mob aiAgent) {
|
||||
if (aiAgent.deathTime == 0) {
|
||||
aiAgent.setDeathTime(System.currentTimeMillis());
|
||||
return;
|
||||
}
|
||||
//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 {
|
||||
@@ -462,16 +464,18 @@ public class MobileFSM {
|
||||
if (aiAgent.isHasLoot()) {
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_ONCE_LOOTED) {
|
||||
aiAgent.despawn();
|
||||
return;
|
||||
}
|
||||
//Mob never had Loot.
|
||||
} else {
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER) {
|
||||
aiAgent.despawn();
|
||||
//update time of death after mob despawns so respawn time happens after mob despawns.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + (aiAgent.spawnTime * 1000)) {
|
||||
aiAgent.despawn();
|
||||
aiAgent.respawn();
|
||||
}
|
||||
}
|
||||
@@ -509,37 +513,6 @@ public class MobileFSM {
|
||||
mob.setCombatTarget(null);
|
||||
}
|
||||
}
|
||||
public static void dead(Mob aiAgent) {
|
||||
//Despawn Timer with Loot currently in inventory.
|
||||
if (aiAgent.getCharItemManager().getInventoryCount() > 0) {
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_WITH_LOOT) {
|
||||
aiAgent.despawn();
|
||||
//update time of death after mob despawns so respawn time happens after mob despawns.
|
||||
aiAgent.setDeathTime(System.currentTimeMillis());
|
||||
//aiAgent.state = STATE.Respawn;
|
||||
}
|
||||
|
||||
//No items in inventory.
|
||||
} else {
|
||||
//Mob's Loot has been looted.
|
||||
if (aiAgent.isHasLoot()) {
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER_ONCE_LOOTED) {
|
||||
aiAgent.despawn();
|
||||
//update time of death after mob despawns so respawn time happens after mob despawns.
|
||||
aiAgent.setDeathTime(System.currentTimeMillis());
|
||||
//aiAgent.state = STATE.Respawn;
|
||||
}
|
||||
//Mob never had Loot.
|
||||
} else {
|
||||
if (System.currentTimeMillis() > aiAgent.deathTime + MBServerStatics.DESPAWN_TIMER) {
|
||||
aiAgent.despawn();
|
||||
//update time of death after mob despawns so respawn time happens after mob despawns.
|
||||
aiAgent.setDeathTime(System.currentTimeMillis());
|
||||
//aiAgent.state = STATE.Respawn;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void chaseTarget(Mob mob) {
|
||||
mob.updateMovementState();
|
||||
if (CombatUtilities.inRange2D(mob, mob.getCombatTarget(), mob.getRange()) == false) {
|
||||
|
||||
Reference in New Issue
Block a user