diff --git a/src/engine/gameManager/CombatManager.java b/src/engine/gameManager/CombatManager.java
index 3d3c5f81..cbdcd5d5 100644
--- a/src/engine/gameManager/CombatManager.java
+++ b/src/engine/gameManager/CombatManager.java
@@ -505,8 +505,8 @@ public enum CombatManager {
                         if (weapon != null && weapon.getBonusPercent(ModType.WeaponSpeed, SourceType.None) != 0f) //add weapon speed bonus
                             wepSpeed *= (1 + weapon.getBonus(ModType.WeaponSpeed, SourceType.None));
 
-                        if (abstractCharacter.getBonuses() != null && abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None, null) != 0f) //add effects speed bonus
-                            wepSpeed *= (1 + abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None, null));
+                        if (abstractCharacter.getBonuses() != null && abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None) != 0f) //add effects speed bonus
+                            wepSpeed *= (1 + abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None));
 
                         if (wepSpeed < 10)
                             wepSpeed = 10; //Old was 10, but it can be reached lower with legit buffs,effects.
@@ -599,9 +599,9 @@ public enum CombatManager {
             //Dont think we need to do this anymore.
 
             if (tarIsRat)
-                if (ac.getBonuses().getFloatPercentAll(ModType.Slay, SourceType.Rat, null) != 0) {   //strip away current % dmg buffs then add with rat %
+                if (ac.getBonuses().getFloatPercentAll(ModType.Slay, SourceType.Rat) != 0) {   //strip away current % dmg buffs then add with rat %
 
-                    float percent = 1 + ac.getBonuses().getFloatPercentAll(ModType.Slay, SourceType.Rat, null);
+                    float percent = 1 + ac.getBonuses().getFloatPercentAll(ModType.Slay, SourceType.Rat);
 
                     minDamage *= percent;
                     maxDamage *= percent;
@@ -1130,9 +1130,9 @@ public enum CombatManager {
                 if (eff.getPower() != null && (eff.getPower().getToken() == 429506943 || eff.getPower().getToken() == 429408639 || eff.getPower().getToken() == 429513599 || eff.getPower().getToken() == 429415295))
                     swingAnimation = 0;
 
-       // if(source != null && source.getObjectType().equals(GameObjectType.PlayerCharacter)){
-        //    damage *= ((PlayerCharacter)source).ZergMultiplier;
-        //} // Health modifications are modified by the ZergMechanic
+        if(source != null && source.getObjectType().equals(GameObjectType.PlayerCharacter)){
+            damage *= ((PlayerCharacter)source).ZergMultiplier;
+        } // Health modifications are modified by the ZergMechanic
 
         TargetedActionMsg cmm = new TargetedActionMsg(source, target, damage, swingAnimation);
         DispatchMessage.sendToAllInRange(target, cmm);
@@ -1295,7 +1295,7 @@ public enum CombatManager {
             return 0f;
 
         if (bonus != null)
-            rangeMod += bonus.getFloatPercentAll(ModType.WeaponRange, SourceType.None, null);
+            rangeMod += bonus.getFloatPercentAll(ModType.WeaponRange, SourceType.None);
 
         return weapon.getRange() * rangeMod;
     }
diff --git a/src/engine/gameManager/PowersManager.java b/src/engine/gameManager/PowersManager.java
index 2ddd99ed..79b8674e 100644
--- a/src/engine/gameManager/PowersManager.java
+++ b/src/engine/gameManager/PowersManager.java
@@ -564,7 +564,7 @@ public enum PowersManager {
             cost = 0;
 
         if (bonus != null)
-            cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, SourceType.None, null));
+            cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, SourceType.None));
 
         if (playerCharacter.getAltitude() > 0)
             cost *= 1.5f;
diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java
index 5e875c9d..d2d79c38 100644
--- a/src/engine/mobileAI/MobAI.java
+++ b/src/engine/mobileAI/MobAI.java
@@ -1437,7 +1437,7 @@ public class MobAI {
             if (mob.isSit() && mob.getTimeStamp("HEALTHRECOVERED") < System.currentTimeMillis() + 3000)
                 if (mob.getHealth() < mob.getHealthMax()) {
 
-                    float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(Enum.ModType.HealthRecoverRate, Enum.SourceType.None, null)) * 0.01f);
+                    float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(Enum.ModType.HealthRecoverRate, Enum.SourceType.None)) * 0.01f);
                     mob.setHealth(mob.getHealth() + recoveredHealth);
                     mob.getTimestamps().put("HEALTHRECOVERED", System.currentTimeMillis());
 
diff --git a/src/engine/mobileAI/utilities/CombatUtilities.java b/src/engine/mobileAI/utilities/CombatUtilities.java
index 69aa563a..8b8a7c38 100644
--- a/src/engine/mobileAI/utilities/CombatUtilities.java
+++ b/src/engine/mobileAI/utilities/CombatUtilities.java
@@ -151,7 +151,7 @@ public class CombatUtilities {
         int atr = agent.mobBase.getAtr();
         if(agent.getBonuses() != null){
             atr += agent.getBonuses().getFloat(ModType.OCV,SourceType.None);
-            atr *= 1 + agent.getBonuses().getFloatPercentAll(ModType.OCV,SourceType.None, null);
+            atr *= 1 + agent.getBonuses().getFloatPercentAll(ModType.OCV,SourceType.None);
         }
         switch (target.getObjectType()) {
             case PlayerCharacter:
@@ -357,7 +357,7 @@ public class CombatUtilities {
         float damage;
         float min = 40;
         float max = 60;
-        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
+        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
         double minDmg = getMinDmg(agent);
         double maxDmg = getMaxDmg(agent);
         dmgMultiplier += agent.getLevel() * 0.1f;
@@ -371,7 +371,7 @@ public class CombatUtilities {
         ItemBase weapon = agent.getEquip().get(1).getItemBase();
         AbstractWorldObject target = agent.getCombatTarget();
 
-        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
+        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
 
         double minDmg = weapon.getMinDamage();
         double maxDmg = weapon.getMaxDamage();
@@ -395,7 +395,7 @@ public class CombatUtilities {
         //handle r8 mob damage
         DamageType dt = DamageType.Crush;
         AbstractWorldObject target = agent.getCombatTarget();
-        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
+        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
         double min = agent.getMinDamageHandOne();
         double max = agent.getMaxDamageHandOne();
         if (agent.getEquip().get(1) != null) {
diff --git a/src/engine/objects/AbstractIntelligenceAgent.java b/src/engine/objects/AbstractIntelligenceAgent.java
index 0e501e9c..580a3094 100644
--- a/src/engine/objects/AbstractIntelligenceAgent.java
+++ b/src/engine/objects/AbstractIntelligenceAgent.java
@@ -134,7 +134,7 @@ public abstract class AbstractIntelligenceAgent extends AbstractCharacter {
         float ret = MobAIThread.AI_BASE_AGGRO_RANGE;
 
         if (this.bonuses != null)
-            ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, SourceType.None, null));
+            ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, SourceType.None));
 
         return ret;
     }
diff --git a/src/engine/objects/CharacterSkill.java b/src/engine/objects/CharacterSkill.java
index 6c48a4b1..7d90ee77 100644
--- a/src/engine/objects/CharacterSkill.java
+++ b/src/engine/objects/CharacterSkill.java
@@ -1127,7 +1127,7 @@ public class CharacterSkill extends AbstractGameObject {
 
         if (CharacterSkill.GetOwner(this).getBonuses() != null) {
             //Multiply any percent bonuses
-            modAmount *= (1 + CharacterSkill.GetOwner(this).getBonuses().getFloatPercentAll(ModType.Skill, sourceType, null));
+            modAmount *= (1 + CharacterSkill.GetOwner(this).getBonuses().getFloatPercentAll(ModType.Skill, sourceType));
         }
 
         this.modifiedAmount = (int) (modAmount);
diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java
index 8f34c36d..f104420a 100644
--- a/src/engine/objects/Mob.java
+++ b/src/engine/objects/Mob.java
@@ -1177,11 +1177,11 @@ public class Mob extends AbstractIntelligenceAgent {
 
             // apply dex penalty for armor
             // modify percent amounts. DO THIS LAST!
-            strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength, null));
-            dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity, null));
-            conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution, null));
-            intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence, null));
-            spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit, null));
+            strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
+            dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
+            conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
+            intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
+            spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
         } else {
             // apply dex penalty for armor
         }
@@ -1200,7 +1200,7 @@ public class Mob extends AbstractIntelligenceAgent {
         float bonus = 1;
         if (this.bonuses != null)
             // get rune and effect bonuses
-            bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, SourceType.None, null));
+            bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, SourceType.None));
 
         if (this.isPlayerGuard)
             switch (this.mobBase.getLoadID()) {
@@ -1568,9 +1568,9 @@ public class Mob extends AbstractIntelligenceAgent {
 
             //apply effects percent modifiers. DO THIS LAST!
 
-            h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None, null));
-            m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None, null));
-            s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None, null));
+            h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
+            m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
+            s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
         }
 
         // Set max health, mana and stamina
@@ -1853,9 +1853,9 @@ public class Mob extends AbstractIntelligenceAgent {
             int max = (int)this.mobBase.getDamageMax();
             int atr = this.mobBase.getAtr();
             if(this.bonuses != null){
-                min *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
-                max *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
-                atr *= 1 + this.bonuses.getFloatPercentAll(ModType.OCV,SourceType.None, null);
+                min *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
+                max *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
+                atr *= 1 + this.bonuses.getFloatPercentAll(ModType.OCV,SourceType.None);
                 atr += this.bonuses.getFloat(ModType.OCV,SourceType.None);
             }
             this.minDamageHandOne = min;
@@ -1873,9 +1873,9 @@ public class Mob extends AbstractIntelligenceAgent {
             int max = (int)this.mobBase.getDamageMax();
             int atr = this.mobBase.getAtr();
             if(this.bonuses != null){
-                min *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
-                max *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
-                atr *= 1 + this.bonuses.getFloatPercentAll(ModType.OCV,SourceType.None, null);
+                min *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
+                max *= 1 + this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
+                atr *= 1 + this.bonuses.getFloatPercentAll(ModType.OCV,SourceType.None);
                 atr += this.bonuses.getFloat(ModType.OCV,SourceType.None);
             }
             this.minDamageHandTwo = min;
diff --git a/src/engine/objects/PlayerBonuses.java b/src/engine/objects/PlayerBonuses.java
index 4fb85eb7..509aba29 100644
--- a/src/engine/objects/PlayerBonuses.java
+++ b/src/engine/objects/PlayerBonuses.java
@@ -340,7 +340,7 @@ public class PlayerBonuses {
         return amount;
     }
 
-    public float getFloatPercentAll(ModType modType, SourceType sourceType, PlayerCharacter pc) {
+    public float getFloatPercentAll(ModType modType, SourceType sourceType) {
         float amount = 0;
         for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
 
@@ -357,15 +357,6 @@ public class PlayerBonuses {
             amount += this.bonusFloats.get(mod);
         }
 
-        if(pc != null) {
-            if (modType.equals(ModType.PowerDamageModifier) || modType.equals(ModType.MeleeDamageModifier)) {
-                if(pc.ZergMultiplier == 0.0f){
-                    amount = -1.0f;
-                }else {
-                    amount -= 1.0f - pc.ZergMultiplier;
-                }
-            }
-        }
         return amount;
     }
 
diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java
index f57b624a..cebfe983 100644
--- a/src/engine/objects/PlayerCharacter.java
+++ b/src/engine/objects/PlayerCharacter.java
@@ -3717,11 +3717,11 @@ public class PlayerCharacter extends AbstractCharacter {
             dexVal *= this.dexPenalty;
 
             // modify percent amounts. DO THIS LAST!
-            strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength, null));
-            dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity, null));
-            conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution, null));
-            intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence, null));
-            spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit, null));
+            strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
+            dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
+            conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
+            intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
+            spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
 
         } else
             // apply dex penalty for armor
@@ -4182,7 +4182,7 @@ public class PlayerCharacter extends AbstractCharacter {
                 this.rangeHandTwo = weapon.getItemBase().getRange() * (1 + (this.statStrBase / 600));
 
             if (this.bonuses != null) {
-                float range_bonus = 1 + this.bonuses.getFloatPercentAll(ModType.WeaponRange, SourceType.None, null);
+                float range_bonus = 1 + this.bonuses.getFloatPercentAll(ModType.WeaponRange, SourceType.None);
 
                 if (mainHand)
                     this.rangeHandOne *= range_bonus;
@@ -4349,11 +4349,11 @@ public class PlayerCharacter extends AbstractCharacter {
             float percentMinDamage = 1;
             float percentMaxDamage = 1;
 
-            percentMinDamage += this.bonuses.getFloatPercentAll(ModType.MinDamage, SourceType.None, null);
-            percentMinDamage += this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
+            percentMinDamage += this.bonuses.getFloatPercentAll(ModType.MinDamage, SourceType.None);
+            percentMinDamage += this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
 
-            percentMaxDamage += this.bonuses.getFloatPercentAll(ModType.MaxDamage, SourceType.None, null);
-            percentMaxDamage += this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None, null);
+            percentMaxDamage += this.bonuses.getFloatPercentAll(ModType.MaxDamage, SourceType.None);
+            percentMaxDamage += this.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
 
             minDamage *= percentMinDamage;
             maxDamage *= percentMaxDamage;
@@ -4673,9 +4673,9 @@ public class PlayerCharacter extends AbstractCharacter {
             m += this.bonuses.getFloat(ModType.ManaFull, SourceType.None);
             s += this.bonuses.getFloat(ModType.StaminaFull, SourceType.None);
 
-            h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None, null));
-            m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None, null));
-            s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None, null));
+            h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
+            m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
+            s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
 
         }
 
@@ -4757,7 +4757,7 @@ public class PlayerCharacter extends AbstractCharacter {
                     divisr = 16;
                 float blockChance = ((passiveSkill.getModifiedAmount() + blockBonusFromShield) / divisr);
                 if(this.bonuses != null)
-                    blockChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Block, SourceType.None, null);
+                    blockChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Block, SourceType.None);
                 return blockChance;
             case "Parry":
                 if(!fromCombat)
@@ -4781,7 +4781,7 @@ public class PlayerCharacter extends AbstractCharacter {
                 float parryChance =((passiveSkill.getModifiedAmount() + parryBonus) / 4);
 
                 if(this.bonuses != null)
-                    parryChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Parry, SourceType.None, null);
+                    parryChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Parry, SourceType.None);
 
                 return parryChance;
 
@@ -4797,7 +4797,7 @@ public class PlayerCharacter extends AbstractCharacter {
                 float dodgeChance = ((passiveSkill.getModifiedAmount()) / divisor);
 
                 if(this.bonuses != null)
-                    dodgeChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Dodge, SourceType.None, null);
+                    dodgeChance *= 1 + this.bonuses.getFloatPercentAll(ModType.Dodge, SourceType.None);
 
                 return dodgeChance;
             default:
diff --git a/src/engine/objects/PlayerCombatStats.java b/src/engine/objects/PlayerCombatStats.java
index 9b28ffbb..8d6529da 100644
--- a/src/engine/objects/PlayerCombatStats.java
+++ b/src/engine/objects/PlayerCombatStats.java
@@ -505,7 +505,7 @@ public class PlayerCombatStats {
         );
         if(this.owner.bonuses != null){
             minDMG += this.owner.bonuses.getFloat(Enum.ModType.MinDamage, Enum.SourceType.None);
-            minDMG *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.MeleeDamageModifier, Enum.SourceType.None, this.owner);
+            minDMG *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.MeleeDamageModifier, Enum.SourceType.None);
         }
 
         if(this.owner.charItemManager != null){
@@ -585,7 +585,7 @@ public class PlayerCombatStats {
 
         if(this.owner.bonuses != null){
             maxDMG += this.owner.bonuses.getFloat(Enum.ModType.MaxDamage, Enum.SourceType.None);
-            maxDMG *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.MeleeDamageModifier, Enum.SourceType.None, this.owner);
+            maxDMG *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.MeleeDamageModifier, Enum.SourceType.None);
         }
 
         if(this.owner.charItemManager != null){
@@ -676,7 +676,7 @@ public class PlayerCombatStats {
             }
         }
 
-        float bonusValues = 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.AttackDelay,Enum.SourceType.None, null);//1.0f;
+        float bonusValues = 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.AttackDelay,Enum.SourceType.None);//1.0f;
         bonusValues -= stanceValue + delayExtra; // take away stance modifier from alacrity bonus values
         speed *= 1 + stanceValue; // apply stance bonus
         speed *= bonusValues; // apply alacrity bonuses without stance mod
@@ -712,7 +712,7 @@ public class PlayerCombatStats {
             range = weapon.getItemBase().getRange();
         }
         if(owner.bonuses != null){
-            range *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.WeaponRange, Enum.SourceType.None, null);
+            range *= 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.WeaponRange, Enum.SourceType.None);
         }
         if(mainHand){
             this.rangeHandOne = range;
diff --git a/src/engine/objects/Resists.java b/src/engine/objects/Resists.java
index 79b83c8e..3456ee84 100644
--- a/src/engine/objects/Resists.java
+++ b/src/engine/objects/Resists.java
@@ -131,7 +131,7 @@ public class Resists {
         PlayerBonuses bonus = target.getBonuses();
 
         //see if there is a fortitude
-        float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, SourceType.None, null);
+        float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, SourceType.None);
         if (damageCap == 0f || type == DamageType.Healing)
             return damage;
 
@@ -152,7 +152,7 @@ public class Resists {
         if (forts == null || !isValidDamageCapType(forts, type, exclusive))
             return damage;
 
-        float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, SourceType.None, null);
+        float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, SourceType.None);
         //Adjust damage down and return new amount
         float aadc = 1 + adjustedDamage;
         return capFire * aadc;
diff --git a/src/engine/powers/effectmodifiers/HealthEffectModifier.java b/src/engine/powers/effectmodifiers/HealthEffectModifier.java
index 30a3ac90..bb6c2cfb 100644
--- a/src/engine/powers/effectmodifiers/HealthEffectModifier.java
+++ b/src/engine/powers/effectmodifiers/HealthEffectModifier.java
@@ -171,13 +171,14 @@ public class HealthEffectModifier extends AbstractEffectModifier {
 
             // Apply any power effect modifiers (such as stances)
             if (bonus != null){
-                if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, (PlayerCharacter) source));
-                }else{
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, null));
-                }
+                modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
             }
         }
+
+        if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
+            modAmount *= ((PlayerCharacter)source).ZergMultiplier;
+        }
+
         if (modAmount == 0f)
             return;
         if (AbstractWorldObject.IsAbstractCharacter(awo)) {
diff --git a/src/engine/powers/effectmodifiers/ManaEffectModifier.java b/src/engine/powers/effectmodifiers/ManaEffectModifier.java
index b70acca6..3e01825d 100644
--- a/src/engine/powers/effectmodifiers/ManaEffectModifier.java
+++ b/src/engine/powers/effectmodifiers/ManaEffectModifier.java
@@ -130,14 +130,15 @@ public class ManaEffectModifier extends AbstractEffectModifier {
 
             // Apply any power effect modifiers (such as stances)
             if (bonus != null){
-                if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, (PlayerCharacter) source));
-                }else{
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, null));
-                }
+                modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
             }
 
         }
+
+        if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
+            modAmount *= ((PlayerCharacter)source).ZergMultiplier;
+        }
+
         if (modAmount == 0f)
             return;
         if (AbstractWorldObject.IsAbstractCharacter(awo)) {
diff --git a/src/engine/powers/effectmodifiers/StaminaEffectModifier.java b/src/engine/powers/effectmodifiers/StaminaEffectModifier.java
index 93810cd3..930816a2 100644
--- a/src/engine/powers/effectmodifiers/StaminaEffectModifier.java
+++ b/src/engine/powers/effectmodifiers/StaminaEffectModifier.java
@@ -126,13 +126,14 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
 
             // Apply any power effect modifiers (such as stances)
             if (bonus != null){
-                if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, (PlayerCharacter) source));
-                }else{
-                    modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, null));
-                }
+                modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
             }
         }
+
+        if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
+            modAmount *= ((PlayerCharacter)source).ZergMultiplier;
+        }
+
         if (modAmount == 0f)
             return;
         if (AbstractWorldObject.IsAbstractCharacter(awo)) {
diff --git a/src/engine/powers/poweractions/TransferStatPowerAction.java b/src/engine/powers/poweractions/TransferStatPowerAction.java
index fa74bb11..30f185d8 100644
--- a/src/engine/powers/poweractions/TransferStatPowerAction.java
+++ b/src/engine/powers/poweractions/TransferStatPowerAction.java
@@ -218,11 +218,11 @@ public class TransferStatPowerAction extends AbstractPowerAction {
             // Apply any power effect modifiers (such as stances)
             PlayerBonuses bonus = source.getBonuses();
             if (bonus != null){
-                if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
-                    damage *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, (PlayerCharacter) source));
-                }else{
-                    damage *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None, null));
-                }
+                damage *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
+            }
+
+            if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
+                damage *= ((PlayerCharacter)source).ZergMultiplier;
             }
 
             //get amount to transfer