From cb73a81e33a94d1daea85bfa6e7418d7894c73fe Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Sun, 23 Feb 2025 10:30:07 -0600 Subject: [PATCH] fixed breathing --- src/engine/devcmd/cmds/InfoCmd.java | 4 +-- src/engine/objects/PlayerCharacter.java | 41 +++++++++++++++++++++---- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/engine/devcmd/cmds/InfoCmd.java b/src/engine/devcmd/cmds/InfoCmd.java index 328c3ecd..0f80bb00 100644 --- a/src/engine/devcmd/cmds/InfoCmd.java +++ b/src/engine/devcmd/cmds/InfoCmd.java @@ -335,9 +335,9 @@ public class InfoCmd extends AbstractDevCmd { output += "Movement State: " + targetPC.getMovementState().name(); output += newline; output += "Movement Speed: " + targetPC.getSpeed(); - + output += newline; output += "Altitude : " + targetPC.getLoc().y; - + output += newline; output += "Swimming : " + targetPC.isSwimming(); output += newline; output += "isMoving : " + targetPC.isMoving(); diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index bec2aeb8..6eb9c2e4 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -1535,25 +1535,48 @@ public class PlayerCharacter extends AbstractCharacter { return true; Zone zone = ZoneManager.findSmallestZone(breather.getLoc()); + if(zone == null) + return true; + + if(zone.isPlayerCity()) + return true; + + float seaLevel = zone.getSeaLevel(); + if (zone.getSeaLevel() != 0) { + Zone parent = zone.getParent(); + if(parent != null && parent.isMacroZone()){ + float parentLevel = parent.getSeaLevel(); + seaLevel -= parentLevel; + } - float localAltitude = breather.getLoc().y; + if(seaLevel == 0) + return true; + float localAltitude = breather.getLoc().y; + float characterHeight = breather.characterHeight; - if (localAltitude + breather.characterHeight < zone.getSeaLevel() - 2) + if (localAltitude + characterHeight < seaLevel - 2) { + //ChatManager.chatSystemInfo(breather, "YOU CANNOT BREATHE!"); return false; - + } if (breather.isMoving()) { - if (localAltitude + breather.characterHeight < zone.getSeaLevel()) + if (localAltitude + breather.characterHeight < zone.getSeaLevel()) { + //ChatManager.chatSystemInfo(breather, "YOU CANNOT BREATHE!"); return false; + } } } else { - if (breather.getLoc().y + breather.characterHeight < -2) + if (breather.getLoc().y + breather.characterHeight < -2) { + //ChatManager.chatSystemInfo(breather, "YOU CANNOT BREATHE!"); return false; + } if (breather.isMoving()) { - if (breather.getLoc().y + breather.characterHeight < 0) + if (breather.getLoc().y + breather.characterHeight < 0) { + //ChatManager.chatSystemInfo(breather, "YOU CANNOT BREATHE!"); return false; + } } } @@ -5083,6 +5106,12 @@ public class PlayerCharacter extends AbstractCharacter { Zone zone = ZoneManager.findSmallestZone(this.getLoc()); + if(zone == null) + return false; + + if(zone.isPlayerCity()) + return false; + if (zone.getSeaLevel() != 0) { float localAltitude = this.getLoc().y + this.centerHeight;