/* Plugin Template generated by Pawn Studio */ #include #include "W3SIncs/War3Source_Interface" public Plugin:myinfo = { name = "WCX - Crit/Damage Engine", author = "necavi", description = "WCX Critical strike and extra damage engine", version = "0.1", url = "http://0xf.org" } public OnPluginStart() { } public OnWar3EventPostHurt(victim, attacker, damage) { decl String:weapon[64]; GetEventString(W3GetVar(SmEvent),"weapon",weapon,sizeof(weapon)); if(StrEqual(weapon, "crit",false) || StrEqual(weapon, "bash", false) || StrEqual(weapon, "weapon_crit",false) || StrEqual(weapon, "weapon_bash", false)) return; new Float:CritChance = W3GetBuffSumFloat(attacker, fCritChance); new Float:CritMultiplier = W3GetBuffSumFloat(attacker,fCritModifier); new CritMode = W3GetBuffLastValue(attacker, iCritMode); new DamageMode = W3GetBuffLastValue(attacker, iDamageMode); new Float:DamageMultiplier = W3GetBuffSumFloat(attacker, fDamageModifier); new BonusDamage = W3GetBuffSumInt(attacker,iDamageBonus); new Float:PercentIncrease = 0.0; new DamageIncrease = 0; if((DamageMultiplier > 0.0) ||(BonusDamage > 0) || (DamageMode > 0)) { switch(DamageMode) { //1 (all damage qualifies for damage increase) case(1):{ PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } //2 (bullet damage damage increase) case(2):{ if(!W3IsDamageFromMelee(weapon) && !StrEqual(weapon,"hegrenade",false)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } //3 (grenade damage damage increase) case(3):{ if(StrEqual(weapon,"hegrenade",false)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } //4 (melee damage damage increase) case(4):{ if(W3IsDamageFromMelee(weapon)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } //5 (melee and bullet damage increase) case(5):{ if(!StrEqual(weapon,"hegrenade",false)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } //6 (melee and grenade damage increase) case(6):{ if(StrEqual(weapon,"hegrenade",false)||W3IsDamageFromMelee(weapon)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } //7 (bullet and grenade damage increase) case(7):{ if(StrEqual(weapon,"hegrenade",false)||!W3IsDamageFromMelee(weapon)) { PercentIncrease += DamageMultiplier; DamageIncrease = BonusDamage; } } } } if(CritChance > 0.0 || CritMode > 0) { if(War3_Chance(CritChance)) { switch(CritMode) { //1 (all damage qualifies for damage increase) case(1):{ CritMultiplier += DamageMultiplier; } //2 (bullet damage damage increase) case(2):{ if(!W3IsDamageFromMelee(weapon) && !StrEqual(weapon,"hegrenade",false)) CritMultiplier += DamageMultiplier; } //3 (grenade damage damage increase) case(3):{ if(StrEqual(weapon,"hegrenade",false)) CritMultiplier += DamageMultiplier; } //4 (melee damage damage increase) case(4):{ if(W3IsDamageFromMelee(weapon)) CritMultiplier += DamageMultiplier; } //5 (melee and bullet damage increase) case(5):{ if(!StrEqual(weapon,"hegrenade",false)) CritMultiplier += DamageMultiplier; } //6 (melee and grenade damage increase) case(6):{ if(StrEqual(weapon,"hegrenade",false)||W3IsDamageFromMelee(weapon)) CritMultiplier += DamageMultiplier; } //7 (bullet and grenade damage increase) case(7):{ if(StrEqual(weapon,"hegrenade",false)||!W3IsDamageFromMelee(weapon)) CritMultiplier += DamageMultiplier; } } } } new newdamage = RoundToFloor(PercentIncrease * damage); newdamage = newdamage + DamageIncrease; if(newdamage > 0) War3_DealDamage(victim,newdamage,attacker,_,"weapon_crit"); }