diff --git a/src/engine/gameManager/MovementManager.java b/src/engine/gameManager/MovementManager.java index 28440b24..eafc4192 100644 --- a/src/engine/gameManager/MovementManager.java +++ b/src/engine/gameManager/MovementManager.java @@ -18,7 +18,6 @@ import engine.exception.MsgSendException; import engine.job.JobContainer; import engine.job.JobScheduler; import engine.jobs.ChangeAltitudeJob; -import engine.jobs.FlightJob; import engine.math.Bounds; import engine.math.Vector3f; import engine.math.Vector3fImmutable; @@ -339,61 +338,7 @@ public enum MovementManager { } - //Update for when the character is in flight - public static void updateFlight(PlayerCharacter pc, ChangeAltitudeMsg msg, int duration) { - if (pc == null) - return; - - // clear flight timer job as we are about to update stuff and submit a new job - pc.clearTimer(flightTimerJobName); - - if (!pc.isActive()) { - pc.setAltitude(0); - pc.setDesiredAltitude(0); - pc.setTakeOffTime(0); - return; - } - - // Check to see if we are mid height change - JobContainer cjc = pc.getTimers().get(changeAltitudeTimerJobName); - if (cjc != null) { - addFlightTimer(pc, msg, MBServerStatics.FLY_FREQUENCY_MS); - return; - } - - // Altitude is zero, do nothing - if (pc.getAltitude() < 1) - return; - //make sure player is still allowed to fly - boolean canFly = false; - PlayerBonuses bonus = pc.getBonuses(); - - if (bonus != null && !bonus.getBool(ModType.NoMod, SourceType.Fly) && bonus.getBool(ModType.Fly, SourceType.None) && pc.isAlive()) - canFly = true; - - // if stam less that 2 - time to force a landing - if (pc.getStamina() < 10f || !canFly) { - PlayerCharacter.GroundPlayer(pc); - // dont call stop movement here as we want to - // preserve endloc - //pc.stopMovement(); - // sync world location - pc.setLoc(pc.getLoc()); - // force a landing - msg.setStartAlt(pc.getAltitude()); - msg.setTargetAlt(0); - msg.setAmountToMove(pc.getAltitude()); - msg.setUp(false); - DispatchMessage.dispatchMsgToInterestArea(pc, msg, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, true, false); - MovementManager.addChangeAltitudeTimer(pc, msg.getStartAlt(), msg.getTargetAlt(), (int) (MBServerStatics.HEIGHT_CHANGE_TIMER_MS * pc.getAltitude())); - pc.setAltitude(msg.getStartAlt() - 10); - - } else //Add a new flight timer to check stam / force land - if (pc.getAltitude() > 0) - addFlightTimer(pc, msg, MBServerStatics.FLY_FREQUENCY_MS); - - } public static void finishChangeAltitude(AbstractCharacter ac, float targetAlt) { @@ -529,27 +474,6 @@ public enum MovementManager { member.setEndLoc(destination); } } - - //Getting rid of flgith timer. - - public static void addFlightTimer(PlayerCharacter pc, ChangeAltitudeMsg msg, int duration) { - if (pc == null || pc.getTimers() == null) - return; - if (!pc.getTimers().containsKey(flightTimerJobName)) { - FlightJob ftj = new FlightJob(pc, msg, duration); - JobContainer jc = JobScheduler.getInstance().scheduleJob(ftj, duration); - pc.getTimers().put(flightTimerJobName, jc); - } - } - - public static void addChangeAltitudeTimer(PlayerCharacter pc, float startAlt, float targetAlt, int duration) { - if (pc == null || pc.getTimers() == null) - return; - ChangeAltitudeJob catj = new ChangeAltitudeJob(pc, startAlt, targetAlt); - JobContainer jc = JobScheduler.getInstance().scheduleJob(catj, duration); - pc.getTimers().put(changeAltitudeTimerJobName, jc); - } - public static void translocate(AbstractCharacter teleporter, Vector3fImmutable targetLoc, Regions region) { @@ -557,15 +481,10 @@ public enum MovementManager { if (targetLoc == null) return; - Vector3fImmutable oldLoc = new Vector3fImmutable(teleporter.getLoc()); - - + teleporter.stopMovement(targetLoc); - teleporter.setRegion(region); - - //mobs ignore region sets for now. if (teleporter.getObjectType().equals(GameObjectType.Mob)){ @@ -588,17 +507,11 @@ public enum MovementManager { public static void translocateToObject(AbstractCharacter teleporter, AbstractWorldObject worldObject) { - - Vector3fImmutable targetLoc = teleporter.getLoc(); Vector3fImmutable oldLoc = new Vector3fImmutable(teleporter.getLoc()); - teleporter.stopMovement(teleporter.getLoc()); - - - - + teleporter.stopMovement(teleporter.getLoc()); //mobs ignore region sets for now. if (teleporter.getObjectType().equals(GameObjectType.Mob)){ @@ -609,6 +522,7 @@ public enum MovementManager { DispatchMessage.dispatchMsgToInterestArea(oldLoc, teleporter, msg, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, false, false); return; } + boolean collide = false; int maxFloor = -1; int buildingID = 0; @@ -619,6 +533,7 @@ public enum MovementManager { if (collide) break; } + if (!collide) { teleporter.setInBuildingID(0); teleporter.setInBuilding(-1); @@ -633,7 +548,6 @@ public enum MovementManager { } } - TeleportToPointMsg msg = new TeleportToPointMsg(teleporter, targetLoc.getX(), targetLoc.getY(), targetLoc.getZ(), 0, -1, -1); //we shouldnt need to send teleport message to new area, as loadjob should pick it up. // DispatchMessage.dispatchMsgToInterestArea(teleporter, msg, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, true, false); diff --git a/src/engine/jobs/FlightJob.java b/src/engine/jobs/FlightJob.java deleted file mode 100644 index 1bd9366c..00000000 --- a/src/engine/jobs/FlightJob.java +++ /dev/null @@ -1,40 +0,0 @@ -// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . -// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· -// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ -// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ -// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ -// Magicbane Emulator Project © 2013 - 2022 -// www.magicbane.com - - -package engine.jobs; - -import engine.gameManager.MovementManager; -import engine.job.AbstractScheduleJob; -import engine.net.client.msg.ChangeAltitudeMsg; -import engine.objects.PlayerCharacter; - -public class FlightJob extends AbstractScheduleJob { - - private final PlayerCharacter pc; - private final ChangeAltitudeMsg msg; - private final int duration; - - public FlightJob(PlayerCharacter pc, ChangeAltitudeMsg msg, int duration) { - super(); - this.msg = msg; - this.duration = duration; - this.pc = pc; - } - - @Override - protected void doJob() { - if (this.pc != null && this.msg != null) - MovementManager.updateFlight(pc, msg, duration); - } - - @Override - protected void _cancelJob() { - } - -}