Merge branch 'master' into various-fixes

This commit is contained in:
P0nk
2022-08-03 07:43:02 +02:00
9 changed files with 86 additions and 33 deletions

View File

@@ -251,7 +251,6 @@ public class Character extends AbstractCharacterObject {
private boolean loggedIn = false;
private boolean useCS; //chaos scroll upon crafting item.
private long npcCd;
private long lastHpDec = 0;
private int newWarpMap = -1;
private boolean canWarpMap = true; //only one "warp" must be used per call, and this will define the right one.
private int canWarpCounter = 0; //counts how many times "inner warps" have been called.
@@ -1720,10 +1719,6 @@ public class Character extends AbstractCharacterObject {
Character.this.getParty().setEnemy(k);
}
silentPartyUpdateInternal(getParty()); // EIM script calls inside
if (getMap().getHPDec() > 0) {
resetHpDecreaseTask();
}
} else {
log.warn("Chr {} got stuck when moving to map {}", getName(), map.getId());
client.disconnect(true, false); // thanks BHB for noticing a player storage stuck case here
@@ -2767,31 +2762,12 @@ public class Character extends AbstractCharacterObject {
}
}
private void doHurtHp() {
public void doHurtHp() {
if (!(this.getInventory(InventoryType.EQUIPPED).findById(getMap().getHPDecProtect()) != null || buffMapProtection())) {
addHP(-getMap().getHPDec());
lastHpDec = Server.getInstance().getCurrentTime();
}
}
private void startHpDecreaseTask(long lastHpTask) {
hpDecreaseTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
doHurtHp();
}
}, YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL, YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL - lastHpTask);
}
public void resetHpDecreaseTask() {
if (hpDecreaseTask != null) {
hpDecreaseTask.cancel(false);
}
long lastHpTask = Server.getInstance().getCurrentTime() - lastHpDec;
startHpDecreaseTask((lastHpTask > YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL) ? YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL : lastHpTask);
}
public void dropMessage(String message) {
dropMessage(0, message);
}

View File

@@ -940,6 +940,10 @@ public class Client extends ChannelInboundHandlerAdapter {
if (MapId.isDojo(mapId)) {
this.getChannelServer().freeDojoSectionIfEmpty(mapId);
}
if (player.getMap().getHPDec() > 0) {
getWorldServer().removePlayerHpDecrease(player);
}
}
} catch (final Throwable t) {