diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java index 244f91c8..2413f8fb 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.getGridObjectType().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 464fb563..c7a55f57 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -4771,12 +4771,6 @@ public void dismissNecroPets() { } } - // Ground players who cannot fly but are currently flying - - if (CanFly(this) && - this.getMovementState().equals(MovementState.FLYING)) - GroundPlayer(this); - RealmMap.updateRealm(this); updateBlessingMessage();