From 04194e7035aa12885d00114c8451703c5c177225 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris.kearney@urbanairship.com> Date: Sun, 31 Aug 2014 23:48:23 -0700 Subject: [PATCH] progress on npc interaction --- .../java/com/comandante/creeper/Main.java | 4 +- .../com/comandante/creeper/npc/Derper.java | 60 ------------------- .../comandante/creeper/npc/DruggedPimp.java | 31 ---------- .../java/com/comandante/creeper/npc/Npc.java | 10 +++- .../comandante/creeper/npc/StreetHustler.java | 35 +++++++++++ .../creeper/server/command/KillCommand.java | 2 +- 6 files changed, 47 insertions(+), 95 deletions(-) delete mode 100644 src/main/java/com/comandante/creeper/npc/Derper.java delete mode 100644 src/main/java/com/comandante/creeper/npc/DruggedPimp.java create mode 100644 src/main/java/com/comandante/creeper/npc/StreetHustler.java diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java index 2f31f100..962b6358 100644 --- a/src/main/java/com/comandante/creeper/Main.java +++ b/src/main/java/com/comandante/creeper/Main.java @@ -3,7 +3,7 @@ package com.comandante.creeper; import com.comandante.creeper.entity.EntityManager; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.managers.SessionManager; -import com.comandante.creeper.npc.DruggedPimp; +import com.comandante.creeper.npc.StreetHustler; import com.comandante.creeper.player.PlayerManager; import com.comandante.creeper.player.PlayerMetadata; import com.comandante.creeper.room.Area; @@ -79,7 +79,7 @@ public class Main { // zones end - entityManager.addEntity(new NpcSpawner(new DruggedPimp(gameManager), Area.NEWBIE_ZONE, gameManager, new SpawnRule(10, 30, 4, 100))); + entityManager.addEntity(new NpcSpawner(new StreetHustler(gameManager), Area.NEWBIE_ZONE, gameManager, new SpawnRule(10, 30, 4, 100))); Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); diff --git a/src/main/java/com/comandante/creeper/npc/Derper.java b/src/main/java/com/comandante/creeper/npc/Derper.java deleted file mode 100644 index 43f67a93..00000000 --- a/src/main/java/com/comandante/creeper/npc/Derper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.comandante.creeper.npc; - - -import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.room.Area; -import com.google.common.base.Optional; -import com.google.common.collect.Sets; - -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import static com.comandante.creeper.server.Color.GREEN; -import static com.comandante.creeper.server.Color.RESET; - -public class Derper extends Npc { - - private final static long phraseIntervalMs = 300000; - private final static String NAME = "derper"; - private final Random random; - private final static String colorName = new StringBuilder() - .append(GREEN) - .append("derper") - .append(RESET).toString(); - - - public Derper(GameManager gameManager) { - super(gameManager, NAME, colorName, 0, NpcStats.DERPER.createStats(), "derper's face is melted", Optional.of(Sets.newHashSet(Area.NEWBIE_ZONE))); - this.random = new Random(); - } - - - @Override - public Derper create(GameManager gameManager) { - return new Derper(gameManager); - } - - @Override - public void run() { - super.run(); - if (System.currentTimeMillis() - getLastPhraseTimestamp() > phraseIntervalMs) { - int size = PHRASES.size(); - //npcSay(getRoomId(), PHRASES.get(random.nextInt(size))); - setLastPhraseTimestamp(System.currentTimeMillis()); - } - } - - public static List<String> PHRASES = Arrays.asList( - "Zug, zug.", - "Don't provoke me.", - "Tough guy, eh?", - "I will end you.", - "This is not a drill, I will eliminate your existence.", - "This is smash talk, I will derp you.", - "Have ever been derped by a derper? I will hurt you.", - "I was taught to provoke.", - "Oh hey I will fight you.", - "WORDS OF THREATENING NATURE!" - ); -} diff --git a/src/main/java/com/comandante/creeper/npc/DruggedPimp.java b/src/main/java/com/comandante/creeper/npc/DruggedPimp.java deleted file mode 100644 index 6d1c5d58..00000000 --- a/src/main/java/com/comandante/creeper/npc/DruggedPimp.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.comandante.creeper.npc; - -import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.room.Area; -import com.google.common.base.Optional; -import com.google.common.collect.Sets; - -import java.util.Random; - -import static com.comandante.creeper.server.Color.GREEN; -import static com.comandante.creeper.server.Color.RESET; - -public class DruggedPimp extends Npc { - private final static long phraseIntervalMs = 300000; - private final static String NAME = "drugged pimp"; - private final Random random; - private final static String colorName = new StringBuilder() - .append(GREEN) - .append("drugged pimp") - .append(RESET).toString(); - - public DruggedPimp(GameManager gameManager) { - super(gameManager, NAME, colorName, 0, NpcStats.DRUGGED_PIMP.createStats(), "a drugged pimp is dead and broke", Optional.of(Sets.newHashSet(Area.NEWBIE_ZONE))); - this.random = new Random(); - } - - @Override - public DruggedPimp create(GameManager gameManager) { - return new DruggedPimp(gameManager); - } -} diff --git a/src/main/java/com/comandante/creeper/npc/Npc.java b/src/main/java/com/comandante/creeper/npc/Npc.java index e84d674e..5d0feb22 100644 --- a/src/main/java/com/comandante/creeper/npc/Npc.java +++ b/src/main/java/com/comandante/creeper/npc/Npc.java @@ -9,6 +9,7 @@ import com.google.common.base.Optional; import java.util.HashSet; import java.util.Random; +import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import static com.comandante.creeper.server.Color.RED; @@ -28,6 +29,8 @@ public abstract class Npc extends CreeperEntity { private final Stats stats; private final String dieMessage; private final Optional<HashSet<Area>> roamAreas; + private final Set<String> validTriggers; + private AtomicBoolean isInFight = new AtomicBoolean(false); Random random = new Random(); @@ -48,7 +51,7 @@ public abstract class Npc extends CreeperEntity { return colorName; } - protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Optional<HashSet<Area>> roamAreas) { + protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Optional<HashSet<Area>> roamAreas, Set<String> validTriggers) { this.gameManager = gameManager; this.name = name; this.colorName = colorName; @@ -56,6 +59,11 @@ public abstract class Npc extends CreeperEntity { this.stats = stats; this.dieMessage = dieMessage; this.roamAreas = roamAreas; + this.validTriggers = validTriggers; + } + + public Set<String> getValidTriggers() { + return validTriggers; } public Optional<HashSet<Area>> getRoamAreas() { diff --git a/src/main/java/com/comandante/creeper/npc/StreetHustler.java b/src/main/java/com/comandante/creeper/npc/StreetHustler.java new file mode 100644 index 00000000..5196874f --- /dev/null +++ b/src/main/java/com/comandante/creeper/npc/StreetHustler.java @@ -0,0 +1,35 @@ +package com.comandante.creeper.npc; + +import com.comandante.creeper.managers.GameManager; +import com.comandante.creeper.room.Area; +import com.comandante.creeper.server.Color; +import com.google.common.base.Optional; +import com.google.common.collect.Sets; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import static com.comandante.creeper.server.Color.BRIGHT_RED; +import static com.comandante.creeper.server.Color.GREEN; +import static com.comandante.creeper.server.Color.RESET; + +public class StreetHustler extends Npc { + private final static long phraseIntervalMs = 300000; + private final static String NAME = "street hustler"; + private final static Set<String> validTriggers = new HashSet<String>(Arrays.asList(new String[] + {"s", "street", "hustler", NAME} + )); + + private final static String colorName = GREEN + "s" + Color.YELLOW + "t" + Color.BLUE + "r" + Color.MAGENTA + "e" + Color.BRIGHT_WHITE + "e" + Color.RED + "t" + Color.BRIGHT_GREEN + " hustler" + RESET; + private final static String dieMessage = "a " + colorName + " breathes his last breath in a pool of " + BRIGHT_RED + "blood" + RESET; + + public StreetHustler(GameManager gameManager) { + super(gameManager, NAME, colorName, 0, NpcStats.DRUGGED_PIMP.createStats(), dieMessage, Optional.of(Sets.newHashSet(Area.NEWBIE_ZONE)), validTriggers); + } + + @Override + public StreetHustler create(GameManager gameManager) { + return new StreetHustler(gameManager); + } +} diff --git a/src/main/java/com/comandante/creeper/server/command/KillCommand.java b/src/main/java/com/comandante/creeper/server/command/KillCommand.java index 0424fb34..2181b40a 100644 --- a/src/main/java/com/comandante/creeper/server/command/KillCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/KillCommand.java @@ -47,7 +47,7 @@ public class KillCommand extends Command { Set<String> npcIds = playerCurrentRoom.getNpcIds(); for (String npcId : npcIds) { Npc npcEntity = getGameManager().getEntityManager().getNpcEntity(npcId); - if (npcEntity.getName().equals(target)) { + if (npcEntity.getValidTriggers().contains(target)) { npcEntity.setIsInFight(true); FightRun fightRun = new FightRun(player, npcEntity, getGameManager()); Future<FightResults> fight = getGameManager().getFightManager().fight(fightRun); -- GitLab