From d9738c39a5938f5bd7efa77e766de98823601122 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Wed, 19 Feb 2025 13:59:44 -0500 Subject: [PATCH] Effects stored in new collection --- src/engine/objects/AbstractWorldObject.java | 4 +-- src/engine/wpakpowers/WpakPowerManager.java | 33 +++++++++++---------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/engine/objects/AbstractWorldObject.java b/src/engine/objects/AbstractWorldObject.java index e06295ee..51241689 100644 --- a/src/engine/objects/AbstractWorldObject.java +++ b/src/engine/objects/AbstractWorldObject.java @@ -20,7 +20,6 @@ import engine.math.AtomicFloat; import engine.math.Bounds; import engine.math.Vector3f; import engine.math.Vector3fImmutable; -import engine.mbEnums; import engine.mbEnums.DispatchChannel; import engine.mbEnums.EffectSourceType; import engine.mbEnums.GameObjectType; @@ -30,6 +29,7 @@ import engine.net.client.ClientConnection; import engine.net.client.msg.UpdateEffectsMsg; import engine.powers.EffectsBase; import engine.server.MBServerStatics; +import engine.wpakpowers.AppliedEffect; import org.pmw.tinylog.Logger; import java.sql.ResultSet; @@ -63,7 +63,7 @@ public abstract class AbstractWorldObject extends AbstractGameObject { // Effects collection for wpak power manager - public ConcurrentHashMap> _effects = new ConcurrentHashMap<>(); + public ConcurrentHashMap _effects = new ConcurrentHashMap<>(); /** * No Id Constructor diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java index 55ddc56a..6bc9e2bd 100644 --- a/src/engine/wpakpowers/WpakPowerManager.java +++ b/src/engine/wpakpowers/WpakPowerManager.java @@ -27,7 +27,6 @@ import engine.net.client.msg.RecyclePowerMsg; import engine.net.client.msg.UpdateStateMsg; import engine.objects.*; import engine.server.MBServerStatics; -import engine.util.Hasher; import engine.wpak.EffectsParser; import engine.wpak.PowerActionParser; import engine.wpak.PowersParser; @@ -37,7 +36,6 @@ import org.pmw.tinylog.Logger; import java.util.HashMap; import java.util.HashSet; -import java.util.concurrent.ConcurrentHashMap; import static engine.math.FastMath.sqr; @@ -64,8 +62,7 @@ public class WpakPowerManager { DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY); // Send Fail to cast message - PlayerCharacter pc = SessionManager - .getPlayerCharacter(origin); + PlayerCharacter pc = SessionManager.getPlayerCharacter(origin); if (pc != null) { sendPowerMsg(pc, 2, msg); @@ -212,9 +209,7 @@ public class WpakPowerManager { return true; else { playerCharacter.modifyHealth(-cost, playerCharacter, true); - ModifyHealthMsg mhm = new ModifyHealthMsg(playerCharacter, playerCharacter, -cost, - 0f, 0f, 0, null, - 9999, 0); + ModifyHealthMsg mhm = new ModifyHealthMsg(playerCharacter, playerCharacter, -cost, 0f, 0f, 0, null, 9999, 0); mhm.setOmitFromChat(1); DispatchManager.dispatchMsgToInterestArea(playerCharacter, mhm, mbEnums.DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, true, false); } @@ -341,23 +336,29 @@ public class WpakPowerManager { for (ActionEntry powerAction : power.actionEntries) { - int effectTokem = Hasher.SBStringHash(powerAction.effect_id); - Effect effect = effect_data.get(effectTokem); + Effect effect = effect_data.get(powerAction.effect_id); - if (effect == null) + if (effect == null) { + Logger.error("Null effect for " + powerAction.effect_id); continue; + } - // New entry for this power effect? + // Create pojo to hold effect/modifiers stored in AWO - if (target._effects.containsKey(effectTokem) == false) - target._effects.put(effectTokem, new ConcurrentHashMap<>()); + AppliedEffect appliedEffect = new AppliedEffect(); + appliedEffect.effect = effect; + appliedEffect.rank = rank; - // Write modifier values + // Add calculated modifiers to pojo for (ModifierEntry modifierEntry : effect.mods) { - modifierEntry.type.behaviorType.apply(caster, target, power, powerAction, effect, modifierEntry, rank); - target._effects.get(effectTokem).put(modifierEntry.type, rank); + Object modifier = modifierEntry.type.behaviorType.apply(caster, target, power, powerAction, effect, modifierEntry, rank); + appliedEffect.modifiers.put(modifierEntry.type, modifier); } + + // Add this power effect to the target + + target._effects.put(effect, appliedEffect); } }