diff --git a/src/main/java/com/comandante/creeper/ConfigureNpc.java b/src/main/java/com/comandante/creeper/ConfigureNpc.java index 9e4277fe057b3c84091926755694a46980d6f72a..85d1f95c13b7e65c0f5f6b06d8d7bf67297c1b23 100755 --- a/src/main/java/com/comandante/creeper/ConfigureNpc.java +++ b/src/main/java/com/comandante/creeper/ConfigureNpc.java @@ -445,6 +445,6 @@ public class ConfigureNpc { SpellRegistry.addSpell(new ClumsinessSpell(gameManager)); SpellRegistry.addSpell(new RestoreSpell(gameManager)); SpellRegistry.addSpell(new AidsSpell(gameManager)); - SpellRegistry.addSpell(new BlackholeSpell(gameManager)); + SpellRegistry.addSpell(new BlackHoleSpell(gameManager)); } } diff --git a/src/main/java/com/comandante/creeper/Items/Loot.java b/src/main/java/com/comandante/creeper/Items/Loot.java index ff21ac250f4f5dee7268c935bf22b0dfd202e0ad..c45ea8e9986b819519eb1579bc4b98e699d7808d 100644 --- a/src/main/java/com/comandante/creeper/Items/Loot.java +++ b/src/main/java/com/comandante/creeper/Items/Loot.java @@ -6,10 +6,10 @@ import java.util.Set; public class Loot implements Serializable { private final Set<ItemType> items; - private final int lootGoldMax; - private final int lootGoldMin; + private final long lootGoldMax; + private final long lootGoldMin; - public Loot(int lootGoldMin, int lootGoldMax, Set<ItemType> items) { + public Loot(long lootGoldMin, long lootGoldMax, Set<ItemType> items) { this.items = items; this.lootGoldMax = lootGoldMax; this.lootGoldMin = lootGoldMin; @@ -19,11 +19,11 @@ public class Loot implements Serializable { return items; } - public int getLootGoldMax() { + public long getLootGoldMax() { return lootGoldMax; } - public int getLootGoldMin() { + public long getLootGoldMin() { return lootGoldMin; } } diff --git a/src/main/java/com/comandante/creeper/Items/LootManager.java b/src/main/java/com/comandante/creeper/Items/LootManager.java index cd7e2f97a64bb38661e9b941f2858a0316736f30..8801134428784ea65475f8a4df693c7098eb4368 100644 --- a/src/main/java/com/comandante/creeper/Items/LootManager.java +++ b/src/main/java/com/comandante/creeper/Items/LootManager.java @@ -2,6 +2,7 @@ package com.comandante.creeper.Items; import com.comandante.creeper.managers.GameManager; import com.google.common.collect.Sets; +import org.apache.commons.lang.math.JVMRandom; import java.util.Random; import java.util.Set; @@ -16,8 +17,8 @@ public class LootManager { private final Random random = new Random(); - private int randInt(int min, int max) { - return random.nextInt((max - min) + 1) + min; + private long randInt(long min, long max) { + return JVMRandom.nextLong((max - min) + 1) + min; } public boolean lootDropSuccess(double percent) { @@ -27,7 +28,7 @@ public class LootManager { return randomValue <= percent; } - public int lootGoldAmountReturn(Loot loot) { + public long lootGoldAmountReturn(Loot loot) { return randInt(loot.getLootGoldMin(), loot.getLootGoldMax()); } diff --git a/src/main/java/com/comandante/creeper/command/Command.java b/src/main/java/com/comandante/creeper/command/Command.java index 83cbc66592d034689429c08fb046fa05cb85b999..43a1901549b7ada1240dd9dada21e7281266a9b4 100644 --- a/src/main/java/com/comandante/creeper/command/Command.java +++ b/src/main/java/com/comandante/creeper/command/Command.java @@ -163,4 +163,16 @@ public abstract class Command extends SimpleChannelUpstreamHandler { // assumes the target class has a no-args Constructor return clazz.getConstructor(GameManager.class).newInstance(gameManager); } + + public static boolean isLong(String s) { + try { + Long.parseLong(s); + } catch(NumberFormatException e) { + return false; + } catch(NullPointerException e) { + return false; + } + // only got here if we didn't return false + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/comandante/creeper/command/LootCommand.java b/src/main/java/com/comandante/creeper/command/LootCommand.java index 3b1113bf3a166603ae78d3c01884396dd18451b4..0099f075a48c25dd38534ccca885d9c437da1319 100644 --- a/src/main/java/com/comandante/creeper/command/LootCommand.java +++ b/src/main/java/com/comandante/creeper/command/LootCommand.java @@ -32,7 +32,7 @@ public class LootCommand extends Command { if (item.getItemTypeId() == Item.CORPSE_ID_RESERVED) { Loot loot = item.getLoot(); if (loot != null) { - int gold = lootManager.lootGoldAmountReturn(loot); + long gold = lootManager.lootGoldAmountReturn(loot); if (gold > 0) { write("You looted " + NumberFormat.getNumberInstance(Locale.US).format(gold) + Color.YELLOW + " gold" + Color.RESET + " from a " + item.getItemName() + ".\r\n"); player.incrementGold(gold); diff --git a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java index a2727f5abd5bc5c6974a5b35a5bf76bcef3b04d1..ce58b46dca7b91c46cc3ef704cd4af1a1e14d956 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java +++ b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java @@ -108,9 +108,9 @@ public class NpcAdapter extends TypeAdapter<Npc> { jsonReader.nextName(); jsonReader.beginObject(); jsonReader.nextName(); - final int lootGoldMin = jsonReader.nextInt(); + final long lootGoldMin = jsonReader.nextLong(); jsonReader.nextName(); - final int lootGoldMax = jsonReader.nextInt(); + final long lootGoldMax = jsonReader.nextLong(); jsonReader.nextName(); jsonReader.beginArray(); Set<ItemType> items = Sets.newHashSet(); @@ -135,37 +135,37 @@ public class NpcAdapter extends TypeAdapter<Npc> { while (jsonReader.hasNext()) { String nextName = jsonReader.nextName(); if (nextName.equals("agile")) { - statsBuilder.setAgile(jsonReader.nextInt()); + statsBuilder.setAgile(jsonReader.nextLong()); } else if (nextName.equals("aim")) { - statsBuilder.setAim(jsonReader.nextInt()); + statsBuilder.setAim(jsonReader.nextLong()); } else if (nextName.equals("armorRating")) { - statsBuilder.setArmorRating(jsonReader.nextInt()); + statsBuilder.setArmorRating(jsonReader.nextLong()); } else if (nextName.equals("currentHealth")) { - statsBuilder.setCurrentHealth(jsonReader.nextInt()); + statsBuilder.setCurrentHealth(jsonReader.nextLong()); } else if (nextName.equals("currentMana")) { - statsBuilder.setCurrentMana(jsonReader.nextInt()); + statsBuilder.setCurrentMana(jsonReader.nextLong()); } else if (nextName.equals("experience")) { - statsBuilder.setExperience(jsonReader.nextInt()); + statsBuilder.setExperience(jsonReader.nextLong()); } else if (nextName.equals("maxHealth")) { - statsBuilder.setMaxHealth(jsonReader.nextInt()); + statsBuilder.setMaxHealth(jsonReader.nextLong()); } else if (nextName.equals("maxMana")) { - statsBuilder.setMaxMana(jsonReader.nextInt()); + statsBuilder.setMaxMana(jsonReader.nextLong()); } else if (nextName.equals("meleSkill")) { - statsBuilder.setMeleSkill(jsonReader.nextInt()); + statsBuilder.setMeleSkill(jsonReader.nextLong()); } else if (nextName.equals("numberOfWeaponRolls")) { - statsBuilder.setNumberOfWeaponRolls(jsonReader.nextInt()); + statsBuilder.setNumberOfWeaponRolls(jsonReader.nextLong()); } else if (nextName.equals("strength")) { - statsBuilder.setStrength(jsonReader.nextInt()); + statsBuilder.setStrength(jsonReader.nextLong()); } else if (nextName.equals("weaponRatingMax")) { - statsBuilder.setWeaponRatingMax(jsonReader.nextInt()); + statsBuilder.setWeaponRatingMax(jsonReader.nextLong()); }else if (nextName.equals("weaponRatingMin")) { - statsBuilder.setWeaponRatingMin(jsonReader.nextInt()); + statsBuilder.setWeaponRatingMin(jsonReader.nextLong()); }else if (nextName.equals("willPower")) { - statsBuilder.setWillpower(jsonReader.nextInt()); + statsBuilder.setWillpower(jsonReader.nextLong()); }else if (nextName.equals("foraging")) { - statsBuilder.setForaging(jsonReader.nextInt()); + statsBuilder.setForaging(jsonReader.nextLong()); }else if (nextName.equals("inventorySize")) { - statsBuilder.setInventorySize(jsonReader.nextInt()); + statsBuilder.setInventorySize(jsonReader.nextLong()); } } jsonReader.endObject(); diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java index d741a79567f5e93432082fea2b741e3af0ca6ed4..74e2c18036ed6564d45881b44f31b9ed3f66fb01 100755 --- a/src/main/java/com/comandante/creeper/player/Player.java +++ b/src/main/java/com/comandante/creeper/player/Player.java @@ -251,7 +251,7 @@ public class Player extends CreeperEntity { } } - public void transferGoldToBank(int amt) { + public void transferGoldToBank(long amt) { synchronized (interner.intern(playerId)) { PlayerMetadata playerMetadata = getPlayerMetadata(); playerMetadata.transferGoldToBank(amt); @@ -267,7 +267,7 @@ public class Player extends CreeperEntity { } } - public void incrementGold(int amt) { + public void incrementGold(long amt) { synchronized (interner.intern(playerId)) { PlayerMetadata playerMetadata = getPlayerMetadata(); playerMetadata.incrementGold(amt); diff --git a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java index 38b092d158f29ac3acc85b7b6471ed5c5d2df19c..44004e8ad0f3137e8a051dea1ac6b4c2288150b7 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java +++ b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java @@ -169,7 +169,7 @@ public class PlayerMetadata implements Serializable { this.goldInBank = amt; } - protected void incrementGold(int amt) { + protected void incrementGold(long amt) { this.gold = gold + amt; } diff --git a/src/main/java/com/comandante/creeper/spells/BlackHole.java b/src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java similarity index 94% rename from src/main/java/com/comandante/creeper/spells/BlackHole.java rename to src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java index bab4595bc95bf4c6e08eac4de152518bb4f4407a..800eafc1ef266607ba75616b2afa457ea2ab3f64 100644 --- a/src/main/java/com/comandante/creeper/spells/BlackHole.java +++ b/src/main/java/com/comandante/creeper/spells/BlackHoleSpell.java @@ -16,7 +16,7 @@ import java.util.Set; import static com.comandante.creeper.server.Color.BOLD_ON; -public class BlackholeSpell extends Spell { +public class BlackHoleSpell extends Spell { private final static String NAME = BOLD_ON + Color.BLACK + "black" + Color.RESET + " hole"; private final static String DESCRIPTION = "A black hole."; @@ -44,7 +44,7 @@ public class BlackholeSpell extends Spell { .setFrozenMovement(false) .setLifeSpanTicks(2); - public BlackholeSpell(GameManager gameManager) { + public BlackHoleSpell(GameManager gameManager) { super(gameManager, validTriggers, manaCost, attackStats, attackMessages, DESCRIPTION, NAME, Sets.newHashSet(holeEffect.createEffect()), isAreaSpell, null, coolDownTicks); } @@ -52,7 +52,7 @@ public class BlackholeSpell extends Spell { public void attackSpell(Set<String> npcIds, Player player) { Stats playerStats = player.getPlayerStatsWithEquipmentAndLevel(); long willpower = playerStats.getWillpower(); - long i = 66666666666 + (willpower * 3); + long i = 66666666666L + (willpower * 3); this.setEffects(Sets.newHashSet(holeEffect.setApplyStatsOnTick(new StatsBuilder().setCurrentHealth(-i).createStats()).createEffect())); super.attackSpell(npcIds, player); } diff --git a/world/npcs/luchtigen.json b/world/npcs/luchtigen.json index 37bb48af3b526cdcf9f9d7aaef677ff4bedf0201..f5c41326d68c8e43af8b36b49c0e4165357e6f4f 100644 --- a/world/npcs/luchtigen.json +++ b/world/npcs/luchtigen.json @@ -32,7 +32,7 @@ "maxPerRoom": 1, "spawnIntervalTicks": 600, "maxInstances": 3 - }, + } }, "validTriggers": [ "luchtigen",