From 3a2ebd1eddfb2ac7f8476045504dd4e19afa85c9 Mon Sep 17 00:00:00 2001 From: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com> Date: Thu, 23 Jun 2022 12:45:44 -0700 Subject: [PATCH] Set world level automatically on level up. --- .../emu/grasscutter/game/player/Player.java | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index e64995956..f52f6d6be 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -429,6 +429,14 @@ public class Player { return this.getProperty(PlayerProperty.PROP_PLAYER_LEVEL); } + public void setLevel(int level) { + this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, level); + this.sendPacket(new PacketPlayerPropNotify(this, PlayerProperty.PROP_PLAYER_LEVEL)); + + this.updateWorldLevel(); + this.updateProfile(); + } + public int getExp() { return this.getProperty(PlayerProperty.PROP_PLAYER_EXP); } @@ -440,6 +448,8 @@ public class Player { public void setWorldLevel(int level) { this.setProperty(PlayerProperty.PROP_PLAYER_WORLD_LEVEL, level); this.sendPacket(new PacketPlayerPropNotify(this, PlayerProperty.PROP_PLAYER_WORLD_LEVEL)); + + this.updateProfile(); } public int getPrimogems() { @@ -508,12 +518,7 @@ public class Player { } if (hasLeveledUp) { - // Set level property - this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, level); - // Update social status - this.updateProfile(); - // Update player with packet - this.sendPacket(new PacketPlayerPropNotify(this, PlayerProperty.PROP_PLAYER_LEVEL)); + this.setLevel(level); } // Set exp @@ -523,6 +528,27 @@ public class Player { this.sendPacket(new PacketPlayerPropNotify(this, PlayerProperty.PROP_PLAYER_EXP)); } + private void updateWorldLevel() { + int currentWorldLevel = this.getWorldLevel(); + int currentLevel = this.getLevel(); + + int newWorldLevel = + (currentLevel >= 55) ? 8 : + (currentLevel >= 50) ? 7 : + (currentLevel >= 45) ? 6 : + (currentLevel >= 40) ? 5 : + (currentLevel >= 35) ? 4 : + (currentLevel >= 30) ? 3 : + (currentLevel >= 25) ? 2 : + (currentLevel >= 20) ? 1 : + 0; + + if (newWorldLevel != currentWorldLevel) { + this.getWorld().setWorldLevel(newWorldLevel); + this.setWorldLevel(newWorldLevel); + } + } + private void updateProfile() { getProfile().syncWithCharacter(this); }