diff --git a/zone/attack.cpp b/zone/attack.cpp index d536c9844..151717bd9 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -318,7 +318,7 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c chancetohit = mod_hit_chance(chancetohit, skillinuse, attacker); // Chance to hit; Max 95%, Min 30% - if(chancetohit > 1000) { + if(chancetohit > 1000 || chancetohit < -1000) { //if chance to hit is crazy high, that means a discipline is in use, and let it stay there } else if(chancetohit > 95) { diff --git a/zone/special_attacks.cpp b/zone/special_attacks.cpp index 21a3a0169..12ec80720 100644 --- a/zone/special_attacks.cpp +++ b/zone/special_attacks.cpp @@ -351,19 +351,14 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) { //Live AA - Technique of Master Wu uint16 bDoubleSpecialAttack = itembonuses.DoubleSpecialAttack + spellbonuses.DoubleSpecialAttack + aabonuses.DoubleSpecialAttack; - if( bDoubleSpecialAttack && (bDoubleSpecialAttack >= 100 || bDoubleSpecialAttack > MakeRandomInt(0,100)) ) { + if (bDoubleSpecialAttack && (bDoubleSpecialAttack >= 100 || bDoubleSpecialAttack > MakeRandomInt(0, 99))) { int MonkSPA [5] = { SkillFlyingKick, SkillDragonPunch, SkillEagleStrike, SkillTigerClaw, SkillRoundKick }; - MonkSpecialAttack(GetTarget(), MonkSPA[MakeRandomInt(0,4)]); + MonkSpecialAttack(GetTarget(), MonkSPA[MakeRandomInt(0, 4)]); - int TripleChance = 25; - - if (bDoubleSpecialAttack > 100) - TripleChance += TripleChance*(100-bDoubleSpecialAttack)/100; - - if(TripleChance > MakeRandomInt(0,100)) { - MonkSpecialAttack(GetTarget(), MonkSPA[MakeRandomInt(0,4)]); - } + // always 1/4 of the double attack chance, 25% at rank 5 (100/4) + if ((bDoubleSpecialAttack / 4) > MakeRandomInt(0, 99)) + MonkSpecialAttack(GetTarget(), MonkSPA[MakeRandomInt(0, 4)]); } if(ReuseTime < 100) {