diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java index c62a9f0582547d0404f86924cc4c4284b9b1e1fc..14af45cb7fd2b83d9122d8d0e7a4ab8b16f953c8 100755 --- a/src/main/java/com/comandante/creeper/managers/GameManager.java +++ b/src/main/java/com/comandante/creeper/managers/GameManager.java @@ -414,7 +414,9 @@ public class GameManager { StringBuilder sb = new StringBuilder(); // passing an empty createState because of the "difference calculation" sb.append(Color.MAGENTA + "-+=[ " + Color.RESET).append(npc.getColorName()).append(Color.MAGENTA + " ]=+- " + Color.RESET).append("\r\n"); - sb.append("Level ").append(Levels.getLevel(npc.getStats().getExperience())).append(" ").append(npc.getLevelColor((int) playerLevel).getColor()).append("\r\n"); + sb.append("Level ").append(Levels.getLevel(npc.getStats().getExperience())).append(" ") + .append(npc.getLevelColor((int) playerLevel).getColor()) + .append(" [").append(npc.getTemperament().getFriendlyFormat()).append("]").append("\r\n"); sb.append(Color.MAGENTA + "Stats--------------------------------" + Color.RESET).append("\r\n"); sb.append(buildLookString(npc.getColorName(), npc.getStats(), new StatsBuilder().createStats())).append("\r\n"); if (npc.getEffects() != null && npc.getEffects().size() > 0) { diff --git a/src/main/java/com/comandante/creeper/npc/Npc.java b/src/main/java/com/comandante/creeper/npc/Npc.java index 1715471893971cdcbeb7316458732e8d085f19ae..98c0d23c3fdae96332b2e810179f1342ea82d890 100644 --- a/src/main/java/com/comandante/creeper/npc/Npc.java +++ b/src/main/java/com/comandante/creeper/npc/Npc.java @@ -46,6 +46,7 @@ public class Npc extends CreeperEntity { private final String colorName; private final Stats stats; private final String dieMessage; + private final Temperament temperament; private final Set<Area> roamAreas; private final Set<String> validTriggers; private Loot loot; @@ -62,7 +63,7 @@ public class Npc extends CreeperEntity { private final Random random = new Random(); - protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Set<Area> roamAreas, Set<String> validTriggers, Loot loot, Set<SpawnRule> spawnRules) { + protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Temperament temperament, Set<Area> roamAreas, Set<String> validTriggers, Loot loot, Set<SpawnRule> spawnRules) { this.gameManager = gameManager; this.name = name; this.colorName = colorName; @@ -73,6 +74,7 @@ public class Npc extends CreeperEntity { this.validTriggers = validTriggers; this.loot = loot; this.spawnRules = spawnRules; + this.temperament = temperament; } @Override @@ -253,6 +255,10 @@ public class Npc extends CreeperEntity { return currentRoom; } + public Temperament getTemperament() { + return temperament; + } + public AtomicBoolean getIsAlive() { return isAlive; } diff --git a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java index ce58b46dca7b91c46cc3ef704cd4af1a1e14d956..2818044b818083c99b683f6dd7ca22d46e98487a 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java +++ b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java @@ -30,7 +30,7 @@ public class NpcAdapter extends TypeAdapter<Npc> { jsonWriter.name("name").value(npc.getName()); jsonWriter.name("colorName").value(npc.getColorName()); jsonWriter.name("dieMessage").value(npc.getDieMessage()); - + jsonWriter.name("temperament").value(npc.getDieMessage()); Loot loot = npc.getLoot(); jsonWriter.name("loot"); jsonWriter.beginObject(); @@ -106,6 +106,8 @@ public class NpcAdapter extends TypeAdapter<Npc> { jsonReader.nextName(); final String npcDieMessage = jsonReader.nextString(); jsonReader.nextName(); + final String temperament = jsonReader.nextString(); + jsonReader.nextName(); jsonReader.beginObject(); jsonReader.nextName(); final long lootGoldMin = jsonReader.nextLong(); @@ -205,6 +207,7 @@ public class NpcAdapter extends TypeAdapter<Npc> { NpcBuilder npcBuilder = new NpcBuilder() .setColorName(npcColorName) .setDieMessage(npcDieMessage) + .setTemperament(Temperament.get(temperament)) .setLoot(loot) .setName(npcName) .setRoamAreas(roamAreas) diff --git a/src/main/java/com/comandante/creeper/npc/NpcBuilder.java b/src/main/java/com/comandante/creeper/npc/NpcBuilder.java index 642bc5482ba9dfcd4453f62eef8811a83789470b..cb111624662377679dd53cdbe5223a5cc1c0f0db 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcBuilder.java +++ b/src/main/java/com/comandante/creeper/npc/NpcBuilder.java @@ -19,6 +19,7 @@ public class NpcBuilder { private Set<String> validTriggers; private Loot loot; private Set<SpawnRule> spawnRules; + private Temperament temperament; public NpcBuilder() { } @@ -34,6 +35,7 @@ public class NpcBuilder { this.loot = npc.getLoot(); this.spawnRules = npc.getSpawnRules(); this.gameManager = npc.getGameManager(); + this.temperament = npc.getTemperament(); } public NpcBuilder setGameManager(GameManager gameManager) { @@ -66,6 +68,11 @@ public class NpcBuilder { return this; } + public NpcBuilder setTemperament(Temperament temperament) { + this.temperament = temperament; + return this; + } + public NpcBuilder setRoamAreas(Set<Area> roamAreas) { this.roamAreas = roamAreas; return this; @@ -87,6 +94,6 @@ public class NpcBuilder { } public Npc createNpc() { - return new Npc(gameManager, name, colorName, lastPhraseTimestamp, stats, dieMessage, roamAreas, validTriggers, loot, spawnRules); + return new Npc(gameManager, name, colorName, lastPhraseTimestamp, stats, dieMessage, temperament, roamAreas, validTriggers, loot, spawnRules); } } \ No newline at end of file diff --git a/src/main/java/com/comandante/creeper/npc/Temperament.java b/src/main/java/com/comandante/creeper/npc/Temperament.java new file mode 100644 index 0000000000000000000000000000000000000000..69ee1d12edd0b241d6715f1108236c6ad5e49cf6 --- /dev/null +++ b/src/main/java/com/comandante/creeper/npc/Temperament.java @@ -0,0 +1,25 @@ +package com.comandante.creeper.npc; + +public enum Temperament { + AGGRESSIVE("Aggressive"), + PASSIVE("Passive"); + + private final String friendlyFormat; + + Temperament(String friendlyFormat) { + this.friendlyFormat = friendlyFormat; + } + + public String getFriendlyFormat() { + return friendlyFormat; + } + + public static Temperament get(String s) { + for (Temperament t : Temperament.values()) { + if (t.name().equalsIgnoreCase(s)) { + return t; + } + } + return null; + } +} diff --git a/world/npcs/treeberserker.json b/world/npcs/treeberserker.json index f3a02a5eafdfa3aff3eec8c303d20f12061a9a39..6622f7fe56eea4bce01c5e4d3d985b0e0510486d 100755 --- a/world/npcs/treeberserker.json +++ b/world/npcs/treeberserker.json @@ -2,6 +2,7 @@ "name": "tree berserker", "colorName": "tree \u001B[1m\u001B[35mberserker\u001B[0m", "dieMessage": "a tree \u001B[1m\u001B[35mberserker\u001B[0m breathes his last breath in a pool of \u001B[1m\u001B[31mblood\u001B[0m", + "temperament": "passive", "loot": { "lootGoldMin": 7, "lootGoldMax": 14,