forked from MagicBane/Server
Effects stored in new collection
This commit is contained in:
@@ -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<Integer, ConcurrentHashMap<mbEnums.ModType, Integer>> _effects = new ConcurrentHashMap<>();
|
||||
public ConcurrentHashMap<engine.wpak.data.Effect, AppliedEffect> _effects = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* No Id Constructor
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user