diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java index 244f91c8..32e9e6e7 100644 --- a/src/engine/objects/AbstractCharacter.java +++ b/src/engine/objects/AbstractCharacter.java @@ -1600,11 +1600,26 @@ public abstract class AbstractCharacter extends AbstractWorldObject { //Call to apply any new effects to player public synchronized void applyBonuses() { + PlayerCharacter player; //tell the player to applyBonuses because something has changed //start running the bonus calculations + try{ runBonuses(); + + // Check if calculations affected flight. + + if (this.getObjectType().equals(GameObjectType.PlayerCharacter)) { + player = (PlayerCharacter) this; + + // Ground players who cannot fly but are currently flying + + if (CanFly(player) == false && + player.getMovementState().equals(MovementState.FLYING)) + PlayerCharacter.GroundPlayer(player); + } + }catch(Exception e){ Logger.error("Error in run bonuses for object UUID " + this.getObjectUUID()); Logger.error(e); diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index c7a55f57..600af48b 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -4781,10 +4781,6 @@ public void dismissNecroPets() { }finally{ this.updateLock.writeLock().unlock(); } - //temp removal - if(AbstractCharacter.CanFly(this) == false && this.altitude > 0) - GroundPlayer(this); - } } @Override