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