From 56d413fc6f07ae73c591f0d3157357ea7599a24a Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris@kearneymail.com> Date: Sun, 14 Aug 2016 16:37:38 -0700 Subject: [PATCH] basicbasic aggro code --- .../creeper/command/LeaveCommand.java | 4 ---- .../creeper/command/MovementCommand.java | 4 ---- .../creeper/player/ExperienceManager.java | 6 ++--- .../com/comandante/creeper/player/Player.java | 22 ++++++++++++++++++- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/comandante/creeper/command/LeaveCommand.java b/src/main/java/com/comandante/creeper/command/LeaveCommand.java index 1325e3a4..e76ca5c8 100644 --- a/src/main/java/com/comandante/creeper/command/LeaveCommand.java +++ b/src/main/java/com/comandante/creeper/command/LeaveCommand.java @@ -30,10 +30,6 @@ public class LeaveCommand extends Command { Room destinationRoom = roomManager.getRoom(leave.get(0).getRoomId()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), "entered " + leave.get(0).getExitDetail() + ".", "N/A"); player.movePlayer(playerMovement); - if (playerMovement != null) { - player.setReturnDirection(java.util.Optional.of(playerMovement.getReturnDirection())); - printCurrentRoomInformation(roomManager.getRoom(playerMovement.getDestinationRoomId())); - } return; } write("There is no Leave exit." + "\r\n"); diff --git a/src/main/java/com/comandante/creeper/command/MovementCommand.java b/src/main/java/com/comandante/creeper/command/MovementCommand.java index 734ae3b4..7750b369 100644 --- a/src/main/java/com/comandante/creeper/command/MovementCommand.java +++ b/src/main/java/com/comandante/creeper/command/MovementCommand.java @@ -87,10 +87,6 @@ public class MovementCommand extends Command { return; } player.movePlayer(playerMovement); - if (playerMovement != null) { - player.setReturnDirection(java.util.Optional.of(playerMovement.getReturnDirection())); - MovementCommand.this.printCurrentRoomInformation(roomManager.getRoom(playerMovement.getDestinationRoomId())); - } }); } diff --git a/src/main/java/com/comandante/creeper/player/ExperienceManager.java b/src/main/java/com/comandante/creeper/player/ExperienceManager.java index a87ec2da..8e862f5c 100644 --- a/src/main/java/com/comandante/creeper/player/ExperienceManager.java +++ b/src/main/java/com/comandante/creeper/player/ExperienceManager.java @@ -4,7 +4,7 @@ import com.comandante.creeper.npc.Npc; public class ExperienceManager { - public int calculateNpcXp(int playerLevel, int npcLevel) { + public static int calculateNpcXp(int playerLevel, int npcLevel) { float xp = 0; if (npcLevel == playerLevel) { xp = (playerLevel * 5 + 45); @@ -30,7 +30,7 @@ public class ExperienceManager { } - public Npc.NpcLevelColor getLevelColor(int playerLevel, int npcLevel) { + public static Npc.NpcLevelColor getLevelColor(int playerLevel, int npcLevel) { if (playerLevel + 5 <= npcLevel) { return Npc.NpcLevelColor.RED; } else { @@ -67,7 +67,7 @@ public class ExperienceManager { } } - private int getZD(int lvl) { + private static int getZD(int lvl) { if (lvl <= 7) { return 5; } diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java index f6c4be8e..7f123c38 100644 --- a/src/main/java/com/comandante/creeper/player/Player.java +++ b/src/main/java/com/comandante/creeper/player/Player.java @@ -12,6 +12,7 @@ import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.managers.SentryManager; import com.comandante.creeper.npc.Npc; import com.comandante.creeper.npc.NpcStatsChangeBuilder; +import com.comandante.creeper.npc.Temperament; import com.comandante.creeper.server.Color; import com.comandante.creeper.spells.Effect; import com.comandante.creeper.stat.Stats; @@ -28,6 +29,7 @@ import org.nocrala.tools.texttablefmt.Table; import java.text.NumberFormat; import java.util.*; +import java.util.stream.Collectors; public class Player extends CreeperEntity { @@ -520,11 +522,29 @@ public class Player extends CreeperEntity { if (next.getPlayerId().equals(playerMovement.getPlayer().getPlayerId())) { continue; } - gameManager.getChannelUtils().write(next.getPlayerId(), playerMovement.getPlayer().getPlayerName() + " arrived.", true); } + setReturnDirection(java.util.Optional.of(playerMovement.getReturnDirection())); + gameManager.currentRoomLogic(playerId, gameManager.getRoomManager().getRoom(playerMovement.getDestinationRoomId())); + gameManager.getRoomManager().getRoom(playerMovement.getDestinationRoomId()); + processNpcAggro(); } } + private void processNpcAggro() { + List<Npc> aggresiveRoomNpcs = currentRoom.getNpcIds().stream() + .map(npcId -> gameManager.getEntityManager().getNpcEntity(npcId)) + .filter(npc -> npc.getTemperament().equals(Temperament.AGGRESSIVE)) + .filter(npc -> {Npc.NpcLevelColor levelColor = npc.getLevelColor((int) Levels.getLevel(getPlayerStatsWithEquipmentAndLevel().getExperience())); + return !levelColor.equals(Npc.NpcLevelColor.WHITE); + }) + .collect(Collectors.toList()); + + aggresiveRoomNpcs.forEach(npc -> { + gameManager.writeToPlayerCurrentRoom(getPlayerId(), getPlayerName() + " has angered a " + npc.getColorName() + "\r\n"); + addActiveFight(npc); + }); + } + public Item getInventoryItem(String itemKeyword) { synchronized (interner.intern(playerId)) { PlayerMetadata playerMetadata = getPlayerMetadata(); -- GitLab