|  |  |  | @ -30,6 +30,8 @@ import engine.objects.Effect;@@ -30,6 +30,8 @@ import engine.objects.Effect; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.objects.PlayerCharacter; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.powers.effectmodifiers.AbstractEffectModifier; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.server.MBServerStatics; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.util.Hasher; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.wpak.data.EffectEntry; | 
			
		
	
		
			
				
					|  |  |  |  | import org.pmw.tinylog.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import java.sql.Connection; | 
			
		
	
	
		
			
				
					|  |  |  | @ -62,7 +64,7 @@ public class EffectsBase {@@ -62,7 +64,7 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  |     // flags
 | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean isItemEffect; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean isSpireEffect; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean ignoreMod; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean ignoreNoMod; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean dontSave; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean cancelOnAttack = false; | 
			
		
	
		
			
				
					|  |  |  |  |     private boolean cancelOnAttackSwing = false; | 
			
		
	
	
		
			
				
					|  |  |  | @ -91,6 +93,33 @@ public class EffectsBase {@@ -91,6 +93,33 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //EffectEntry constructor
 | 
			
		
	
		
			
				
					|  |  |  |  |     public EffectsBase(EffectEntry entry) { | 
			
		
	
		
			
				
					|  |  |  |  |         this.IDString = entry.effect_id; | 
			
		
	
		
			
				
					|  |  |  |  |         this.name = entry.effect_name; | 
			
		
	
		
			
				
					|  |  |  |  |         this.token = Hasher.SBStringHash(entry.effect_name); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //override tokens for some effects like Safemode that use the Action Token instead of the effect Token,
 | 
			
		
	
		
			
				
					|  |  |  |  |         switch (this.IDString) { | 
			
		
	
		
			
				
					|  |  |  |  |             case "INVIS-D": | 
			
		
	
		
			
				
					|  |  |  |  |                 this.token = -1661751254; | 
			
		
	
		
			
				
					|  |  |  |  |                 break; | 
			
		
	
		
			
				
					|  |  |  |  |             case "SafeMode": | 
			
		
	
		
			
				
					|  |  |  |  |                 this.token = -1661750486; | 
			
		
	
		
			
				
					|  |  |  |  |                 break; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         this.isItemEffect = entry.isItemEffect; | 
			
		
	
		
			
				
					|  |  |  |  |         this.isSpireEffect = entry.isSpireEffect; | 
			
		
	
		
			
				
					|  |  |  |  |         this.ignoreNoMod = entry.ignoreNoMod; | 
			
		
	
		
			
				
					|  |  |  |  |         this.dontSave = entry.dontSave; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (this.IDString.startsWith("PRE-")) | 
			
		
	
		
			
				
					|  |  |  |  |             this.isPrefix = true; | 
			
		
	
		
			
				
					|  |  |  |  |         else if (this.IDString.startsWith("SUF-")) | 
			
		
	
		
			
				
					|  |  |  |  |             this.isSuffix = true; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public EffectsBase(EffectsBase copyEffect, int newToken, String IDString) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         UUID = NewID++; | 
			
		
	
	
		
			
				
					|  |  |  | @ -102,7 +131,7 @@ public class EffectsBase {@@ -102,7 +131,7 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  |             int flags = 0; | 
			
		
	
		
			
				
					|  |  |  |  |             this.isItemEffect = ((flags & 1) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |             this.isSpireEffect = ((flags & 2) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |             this.ignoreMod = ((flags & 4) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |             this.ignoreNoMod = ((flags & 4) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |             this.dontSave = ((flags & 8) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (this.IDString.startsWith("PRE-")) | 
			
		
	
	
		
			
				
					|  |  |  | @ -117,7 +146,7 @@ public class EffectsBase {@@ -117,7 +146,7 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  |         this.amountRamp = copyEffect.amountRamp; | 
			
		
	
		
			
				
					|  |  |  |  |         this.isItemEffect = copyEffect.isItemEffect; | 
			
		
	
		
			
				
					|  |  |  |  |         this.isSpireEffect = copyEffect.isSpireEffect; | 
			
		
	
		
			
				
					|  |  |  |  |         this.ignoreMod = copyEffect.ignoreMod; | 
			
		
	
		
			
				
					|  |  |  |  |         this.ignoreNoMod = copyEffect.ignoreNoMod; | 
			
		
	
		
			
				
					|  |  |  |  |         this.dontSave = copyEffect.dontSave; | 
			
		
	
		
			
				
					|  |  |  |  |         this.cancelOnAttack = copyEffect.cancelOnAttack; | 
			
		
	
		
			
				
					|  |  |  |  |         this.cancelOnAttackSwing = copyEffect.cancelOnAttackSwing; | 
			
		
	
	
		
			
				
					|  |  |  | @ -163,7 +192,7 @@ public class EffectsBase {@@ -163,7 +192,7 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  |         int flags = rs.getInt("flags"); | 
			
		
	
		
			
				
					|  |  |  |  |         this.isItemEffect = ((flags & 1) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |         this.isSpireEffect = ((flags & 2) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |         this.ignoreMod = ((flags & 4) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |         this.ignoreNoMod = ((flags & 4) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |         this.dontSave = ((flags & 8) != 0) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (this.IDString.startsWith("PRE-")) | 
			
		
	
	
		
			
				
					|  |  |  | @ -351,7 +380,7 @@ public class EffectsBase {@@ -351,7 +380,7 @@ public class EffectsBase { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean ignoreMod() { | 
			
		
	
		
			
				
					|  |  |  |  |         return this.ignoreMod; | 
			
		
	
		
			
				
					|  |  |  |  |         return this.ignoreNoMod; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean dontSave() { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |