From ea23738a3980630ed37e1108b2920231416b9ae6 Mon Sep 17 00:00:00 2001
From: Kearney <ckearney@miradortech.com>
Date: Sun, 25 Jun 2017 08:38:25 -0700
Subject: [PATCH] fixing nasty effect removal bug

---
 pom.xml                                        | 11 -----------
 .../java/com/comandante/creeper/npc/Npc.java   | 18 +++++++++++-------
 .../creeper/spells/LightningSpell.java         |  4 ++--
 3 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/pom.xml b/pom.xml
index aaf93d27..2774e521 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,17 +6,6 @@
     <artifactId>creeper</artifactId>
     <version>0.1.0</version>
 
-    <distributionManagement>
-        <repository>
-            <id>releases</id>
-            <url>http://192.168.1.11:8081/nexus/content/repositories/releases</url>
-        </repository>
-        <snapshotRepository>
-            <id>snapshots</id>
-            <url>http://192.168.1.11:8081/nexus/content/repositories/snapshots</url>
-        </snapshotRepository>
-    </distributionManagement>
-
     <scm>
         <url>https://github.com/chriskearney/github-maven-example</url>
         <connection>scm:git:git://github.com/chriskearney/creeper.git</connection>
diff --git a/src/main/java/com/comandante/creeper/npc/Npc.java b/src/main/java/com/comandante/creeper/npc/Npc.java
index 6d5cb0e3..b1d69c5f 100644
--- a/src/main/java/com/comandante/creeper/npc/Npc.java
+++ b/src/main/java/com/comandante/creeper/npc/Npc.java
@@ -32,7 +32,13 @@ import org.nocrala.tools.texttablefmt.ShownBorders;
 import org.nocrala.tools.texttablefmt.Table;
 
 import java.text.NumberFormat;
-import java.util.*;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Random;
+import java.util.Set;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -52,12 +58,11 @@ public class Npc extends CreeperEntity {
     private final Set<String> validTriggers;
     private final Set<SpawnRule> spawnRules;
     private final ArrayBlockingQueue<NpcStatsChange> npcStatsChanges = new ArrayBlockingQueue<>(3000);
-    private final Interner<Npc> interner = Interners.newWeakInterner();
     private final AtomicBoolean isAlive = new AtomicBoolean(true);
     private final Random random = new Random();
     private long lastPhraseTimestamp;
     private Loot loot;
-    private List<Effect> effects = Lists.newCopyOnWriteArrayList();
+    private List<Effect> effects = Lists.newArrayList();
     private int maxEffects = 4;
     private Map<String, Long> playerDamageMap = Maps.newHashMap();
     private Room currentRoom;
@@ -73,6 +78,8 @@ public class Npc extends CreeperEntity {
     // Things that npcs say randomly when idle
     private final Set<CreeperMessage> idleMessages;
 
+    private final Interner<String> interner = Interners.newWeakInterner();
+
 
     protected Npc(GameManager gameManager,
                   String name,
@@ -108,7 +115,7 @@ public class Npc extends CreeperEntity {
 
     @Override
     public void run() {
-        synchronized (interner.intern(this)) {
+        synchronized (interner.intern(getEntityId())) {
             try {
                 if (isAlive.get()) {
                     if (effectsTickBucket == 5) {
@@ -301,7 +308,6 @@ public class Npc extends CreeperEntity {
         this.currentRoom = currentRoom;
     }
 
-
     private String getBattleReport(long xpEarned) {
         StringBuilder sb = new StringBuilder();
         sb.append(Color.MAGENTA).append("Battle Report----------------------------").append(Color.RESET).append("\r\n");
@@ -337,7 +343,6 @@ public class Npc extends CreeperEntity {
         return sb.toString();
     }
 
-
     public String getColorName() {
         return colorName;
     }
@@ -392,7 +397,6 @@ public class Npc extends CreeperEntity {
     }
 
     public void addEffect(Effect effect) {
-        Interner<String> interner = Interners.newWeakInterner();
         synchronized (interner.intern(getEntityId())) {
             if (effects.size() >= maxEffects) {
             } else {
diff --git a/src/main/java/com/comandante/creeper/spells/LightningSpell.java b/src/main/java/com/comandante/creeper/spells/LightningSpell.java
index a69b0d81..a344899b 100644
--- a/src/main/java/com/comandante/creeper/spells/LightningSpell.java
+++ b/src/main/java/com/comandante/creeper/spells/LightningSpell.java
@@ -1,7 +1,7 @@
 package com.comandante.creeper.spells;
 
-import com.comandante.creeper.items.EffectBuilder;
 import com.comandante.creeper.core_game.GameManager;
+import com.comandante.creeper.items.EffectBuilder;
 import com.comandante.creeper.npc.Npc;
 import com.comandante.creeper.player.CoolDown;
 import com.comandante.creeper.player.CoolDownType;
@@ -62,7 +62,7 @@ public class LightningSpell implements SpellRunnable {
         if (Math.random() < 0.1) {
             long electrofiedPower = (long) ((stats.getLevel() * .3) + (5 * stats.getIntelligence()));
             return getElectrofried(electrofiedPower, 4);
-        }
+          }
         long burnEffectPower = (long) ((stats.getLevel() * .05) + (1 * stats.getIntelligence()));
         return getBurnEffect(burnEffectPower, 2);
     }
-- 
GitLab