Disconnecting while dying no longer results in improper death handling in safe zones (e.g. fight caves)
This commit is contained in:
@@ -353,8 +353,11 @@ public class Player extends Entity {
|
||||
public void clear(boolean force) {
|
||||
if (!isActive())
|
||||
return;
|
||||
if (force) {
|
||||
if (!force) {
|
||||
Repository.getDisconnectionQueue().remove(getName());
|
||||
Repository.getDisconnectionQueue().add(this, true);
|
||||
details.save();
|
||||
return;
|
||||
}
|
||||
if (!isArtificial())
|
||||
GameWorld.getLogoutListeners().forEach((it) -> it.logout(this));
|
||||
@@ -372,9 +375,7 @@ public class Player extends Entity {
|
||||
getZoneMonitor().clear();
|
||||
HouseManager.leave(this);
|
||||
UpdateSequence.getRenderablePlayers().remove(this);
|
||||
details.save();
|
||||
sendLogoutEvents();
|
||||
Repository.getDisconnectionQueue().add(this);
|
||||
checkForWealthUpdate(true);
|
||||
}
|
||||
|
||||
@@ -913,7 +914,7 @@ public class Player extends Entity {
|
||||
* @return {@code True} if so.
|
||||
*/
|
||||
public boolean allowRemoval() {
|
||||
return inCombat() || getSkills().getLifepoints() < 1 || DeathTask.isDead(this);
|
||||
return !(inCombat() || getSkills().getLifepoints() < 1 || DeathTask.isDead(this));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -48,12 +48,12 @@ class DisconnectionQueue {
|
||||
*/
|
||||
private fun finish(entry: DisconnectionEntry?, force: Boolean): Boolean {
|
||||
val player = entry!!.player
|
||||
if (!force && player.allowRemoval()) {
|
||||
if (!force && !player.allowRemoval()) {
|
||||
return false
|
||||
}
|
||||
if (entry.isClear) {
|
||||
log(this::class.java, Log.FINE, "Clearing player...")
|
||||
player.clear()
|
||||
player.clear(true)
|
||||
}
|
||||
Repository.removePlayer(player)
|
||||
log(this::class.java, Log.INFO, "Player cleared. Removed ${player.details.username}")
|
||||
|
||||
Reference in New Issue
Block a user