From 2a7817df95af598dd02347bb365da513ffa8fc8e Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Sat, 6 Dec 2025 17:52:13 -0800 Subject: [PATCH] Prevent players from giving themselves unavailable characters/discs --- .../emu/nebula/game/character/CharacterStorage.java | 12 +++++++++++- .../java/emu/nebula/game/inventory/Inventory.java | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/emu/nebula/game/character/CharacterStorage.java b/src/main/java/emu/nebula/game/character/CharacterStorage.java index 0e72ca4..4dd3769 100644 --- a/src/main/java/emu/nebula/game/character/CharacterStorage.java +++ b/src/main/java/emu/nebula/game/character/CharacterStorage.java @@ -67,6 +67,11 @@ public class CharacterStorage extends PlayerManager { return null; } + // Prevent players from getting unavliable characters + if (!data.isAvailable()) { + return null; + } + // Create character var character = new GameCharacter(this.getPlayer(), data); @@ -131,11 +136,16 @@ public class CharacterStorage extends PlayerManager { } private GameDisc addDisc(DiscDef data) { - // Sanity check to make sure we dont have this character already + // Sanity check to make sure we dont have this disc already if (this.hasDisc(data.getId())) { return null; } + // Prevent players from getting unavliable discs + if (!data.isAvailable()) { + return null; + } + // Create disc var disc = new GameDisc(this.getPlayer(), data); diff --git a/src/main/java/emu/nebula/game/inventory/Inventory.java b/src/main/java/emu/nebula/game/inventory/Inventory.java index 7bdbeb1..20afb22 100644 --- a/src/main/java/emu/nebula/game/inventory/Inventory.java +++ b/src/main/java/emu/nebula/game/inventory/Inventory.java @@ -385,6 +385,8 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { if (disc != null) { change.add(disc.toProto()); + } else { + amount = 0; } } case Char -> { @@ -396,6 +398,8 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { if (character != null) { change.add(character.toProto()); + } else { + amount = 0; } } case Energy -> { @@ -466,7 +470,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { // Trigger quest + achievement if (amount > 0) { this.getPlayer().trigger(QuestCondition.ItemsAdd, amount, id); - } else { + } else if (amount < 0) { this.getPlayer().trigger(QuestCondition.ItemsDeplete, Math.abs(amount), id); }