diff --git a/Server/src/main/content/global/activity/ttrail/ClueScrollPlugin.java b/Server/src/main/content/global/activity/ttrail/ClueScrollPlugin.java index 13efad3c6..c049c6dab 100644 --- a/Server/src/main/content/global/activity/ttrail/ClueScrollPlugin.java +++ b/Server/src/main/content/global/activity/ttrail/ClueScrollPlugin.java @@ -192,7 +192,7 @@ public abstract class ClueScrollPlugin extends MapZone implements Plugin int hasAmt = 0; for (int i = 0; i < equipment.length; i++) { for (int k = 0; k < equipment[i].length; k++) { - if (player.getEquipment().contains(equipment[i][k], 1)) { + if (player.getEquipment().contains(equipment[i][k], 1) || player.costumeRoomBank.contains(equipment[i][k], 1)) { hasAmt++; break; } diff --git a/Server/src/main/content/global/skill/construction/decoration/costume/SnowscapeFancyDressBox.kt b/Server/src/main/content/global/skill/construction/decoration/costume/SnowscapeFancyDressBox.kt new file mode 100644 index 000000000..8306a1e41 --- /dev/null +++ b/Server/src/main/content/global/skill/construction/decoration/costume/SnowscapeFancyDressBox.kt @@ -0,0 +1,30 @@ +package content.global.skill.construction.decoration.costume + +import core.game.node.scenery.Scenery +import core.game.node.scenery.SceneryBuilder +import core.game.interaction.InteractionListener +import core.game.interaction.IntType +import core.api.* + +/** + * + * + */ +class SnowscapeCostumeRoomBank : InteractionListener { + + val IDs = intArrayOf(18772,18774,18776) + + override fun defineListeners() { + on(IDs, IntType.SCENERY, "open"){ player, node -> + if (!player.houseManager.isInHouse(player)) { + sendMessage(player, "You can only do that in your own house.") + return@on true + } + + setAttribute(player, "inCostumeRoomBank", true) + openBankAccount(player) + + return@on true + } + } +} \ No newline at end of file diff --git a/Server/src/main/core/api/utils/Permadeath.kt b/Server/src/main/core/api/utils/Permadeath.kt index cbd442bc7..d6b248c55 100644 --- a/Server/src/main/core/api/utils/Permadeath.kt +++ b/Server/src/main/core/api/utils/Permadeath.kt @@ -50,6 +50,7 @@ fun permadeath(target: Player) { target.runeSatchel.clear() target.blackSatchel.clear() target.summoningPouches.clear() + target.costumeRoomBank.clear() // Skills target.skills = Skills(target) diff --git a/Server/src/main/core/game/container/impl/BankContainer.java b/Server/src/main/core/game/container/impl/BankContainer.java index 68f1fb72c..8937c1e8d 100644 --- a/Server/src/main/core/game/container/impl/BankContainer.java +++ b/Server/src/main/core/game/container/impl/BankContainer.java @@ -143,6 +143,7 @@ public final class BankContainer extends Container { return; } player.getInterfaceManager().openComponent(762).setCloseEvent((player, c) -> { + removeAttribute(player, "inCostumeRoomBank"); BankContainer.this.close(); return true; }); @@ -168,6 +169,7 @@ public final class BankContainer extends Container { return; } player.getInterfaceManager().openComponent(762).setCloseEvent((player1, c) -> { + removeAttribute(player, "inCostumeRoomBank"); BankContainer.this.close(); return true; }); diff --git a/Server/src/main/core/game/node/entity/player/Player.java b/Server/src/main/core/game/node/entity/player/Player.java index 6416acb37..52c286223 100644 --- a/Server/src/main/core/game/node/entity/player/Player.java +++ b/Server/src/main/core/game/node/entity/player/Player.java @@ -321,6 +321,8 @@ public class Player extends Entity { public final Container runeSatchel = new Container(30, ContainerType.ALWAYS_STACK); // The summoning pouch storage public final Container summoningPouches = new Container(30); + // The costume room bank + public final BankContainer costumeRoomBank = new BankContainer(this); /** * Constructs a new {@code Player} {@code Object}. @@ -1049,6 +1051,9 @@ public class Player extends Entity { * @return Current active bank. */ public BankContainer getBank() { + if (getAttribute("inCostumeRoomBank", false)) { + return costumeRoomBank; + } if (getAttribute("clanbank:enabled",false)) { Player target = Repository.getPlayerByName(this.getCommunication().getCurrentClan()); if (target != null) { diff --git a/Server/src/main/core/game/node/entity/player/info/login/PlayerSaveParser.kt b/Server/src/main/core/game/node/entity/player/info/login/PlayerSaveParser.kt index 2e661c782..fdf7419e0 100644 --- a/Server/src/main/core/game/node/entity/player/info/login/PlayerSaveParser.kt +++ b/Server/src/main/core/game/node/entity/player/info/login/PlayerSaveParser.kt @@ -389,6 +389,9 @@ class PlayerSaveParser(val player: Player) { val summoningPouches = snowscapeData["summoningPouches"] if (summoningPouches != null) player.summoningPouches.parse(summoningPouches as JSONArray) + + val costumeRoomBank = snowscapeData["costumeRoomBank"] + if (costumeRoomBank != null) player.costumeRoomBank.parse(costumeRoomBank as JSONArray) } } diff --git a/Server/src/main/core/game/node/entity/player/info/login/PlayerSaver.kt b/Server/src/main/core/game/node/entity/player/info/login/PlayerSaver.kt index 15ab459af..48b084b2e 100644 --- a/Server/src/main/core/game/node/entity/player/info/login/PlayerSaver.kt +++ b/Server/src/main/core/game/node/entity/player/info/login/PlayerSaver.kt @@ -658,6 +658,8 @@ class PlayerSaver (val player: Player){ snowscapeData.put("summoningPouches", saveContainer(player.summoningPouches)) + snowscapeData.put("costumeRoomBank", saveContainer(player.costumeRoomBank)) + root.put("snowscape_data",snowscapeData) } }