check for immunity and no od prior to running power action

This commit is contained in:
2025-03-03 13:43:14 -06:00
parent 58e84bfc21
commit 4ea4609b1b
+18 -3
View File
@@ -28,6 +28,7 @@ import engine.net.client.ClientConnection;
import engine.net.client.msg.*;
import engine.objects.*;
import engine.powers.*;
import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.TrackPowerAction;
import engine.server.MBServerStatics;
@@ -1968,9 +1969,7 @@ public enum PowersManager {
}
}
public static void runPowerAction(AbstractCharacter source,
AbstractWorldObject awo, Vector3fImmutable targetLoc,
ActionsBase ab, int trains, PowersBase pb) {
public static void runPowerAction(AbstractCharacter source, AbstractWorldObject awo, Vector3fImmutable targetLoc, ActionsBase ab, int trains, PowersBase pb) {
AbstractPowerAction pa = ab.getPowerAction();
if (pa == null) {
Logger.error(
@@ -1978,6 +1977,22 @@ public enum PowersManager {
+ ab.getEffectID());
return;
}
if(AbstractCharacter.IsAbstractCharacter(awo)) {
boolean immune = false;
AbstractCharacter absChar = (AbstractCharacter)awo;
for (AbstractEffectModifier mod : ab.getPowerAction().getEffectsBase().getModifiers()) {
if (absChar.getBonuses() != null){
if(absChar.getBonuses().getBool(ModType.ImmuneTo, mod.sourceType) || absChar.getBonuses().getBool(ModType.NoMod, mod.sourceType))
immune = true;
}
}
if(immune)
return;
}
pa.startAction(source, awo, targetLoc, trains, ab, pb);
}