diff --git a/src/engine/objects/MobBase.java b/src/engine/objects/MobBase.java index b76428a5..cd4e5bb3 100644 --- a/src/engine/objects/MobBase.java +++ b/src/engine/objects/MobBase.java @@ -122,8 +122,12 @@ public class MobBase extends AbstractGameObject { this.mask += MBServerStatics.MASK_RAT; this.mobBaseStats = (rune != null) ? new MobBaseStats(rune) : MobBaseStats.GetGenericStats(); - //load effects for mobbase - this.effectsList = DbManager.MobBaseQueries.GET_RUNEBASE_EFFECTS(this.loadID); + this.effectsList = new ArrayList<>(MobBaseEffects.getEffectsForRune(this.loadID)); + + // Server-made rows with no rune entry: NECROPETSTATS on 12021/12022, Wild Boar 13236 PEACE + for (MobBaseEffects serverEffect : DbManager.MobBaseQueries.GET_RUNEBASE_EFFECTS(this.loadID)) + if (!this.effectsList.contains(serverEffect)) + this.effectsList.add(serverEffect); } diff --git a/src/engine/objects/MobBaseEffects.java b/src/engine/objects/MobBaseEffects.java index f41ecfa7..305fa966 100644 --- a/src/engine/objects/MobBaseEffects.java +++ b/src/engine/objects/MobBaseEffects.java @@ -19,6 +19,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashSet; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -115,5 +116,23 @@ public class MobBaseEffects { return reqLvl; } + @Override + public boolean equals(Object other) { + + if (this == other) + return true; + + if (!(other instanceof MobBaseEffects)) + return false; + + MobBaseEffects effect = (MobBaseEffects) other; + return this.token == effect.token && this.rank == effect.rank && this.reqLvl == effect.reqLvl; + } + + @Override + public int hashCode() { + return Objects.hash(this.token, this.rank, this.reqLvl); + } + }