Prevent players from giving themselves unavailable characters/discs

This commit is contained in:
Melledy
2025-12-06 17:52:13 -08:00
parent dfb93cae4b
commit 2a7817df95
2 changed files with 16 additions and 2 deletions

View File

@@ -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);

View File

@@ -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);
}