Merge branch 'aa' of github.com:EQEmu/Server into aa

This commit is contained in:
KimLS 2015-06-16 21:46:24 -07:00
commit 33b6748c1b
2 changed files with 34 additions and 20 deletions

View File

@ -4412,42 +4412,55 @@ bool Mob::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse)
return false; return false;
} }
void Mob::DoRiposte(Mob* defender) { void Mob::DoRiposte(Mob *defender)
{
Log.Out(Logs::Detail, Logs::Combat, "Preforming a riposte"); Log.Out(Logs::Detail, Logs::Combat, "Preforming a riposte");
if (!defender) if (!defender)
return; return;
defender->Attack(this, MainPrimary, true); defender->Attack(this, MainPrimary, true);
if (HasDied()) return; if (HasDied())
return;
int32 DoubleRipChance = defender->aabonuses.GiveDoubleRiposte[0] + // this effect isn't used on live? See no AAs or spells
defender->spellbonuses.GiveDoubleRiposte[0] + int32 DoubleRipChance = defender->aabonuses.DoubleRiposte + defender->spellbonuses.DoubleRiposte +
defender->itembonuses.GiveDoubleRiposte[0]; defender->itembonuses.DoubleRiposte;
DoubleRipChance = defender->aabonuses.DoubleRiposte + if (DoubleRipChance && zone->random.Roll(DoubleRipChance)) {
defender->spellbonuses.DoubleRiposte + Log.Out(Logs::Detail, Logs::Combat,
defender->itembonuses.DoubleRiposte; "Preforming a double riposted from SE_DoubleRiposte (%d percent chance)", DoubleRipChance);
//Live AA - Double Riposte
if(DoubleRipChance && zone->random.Roll(DoubleRipChance)) {
Log.Out(Logs::Detail, Logs::Combat, "Preforming a double riposed (%d percent chance)", DoubleRipChance);
defender->Attack(this, MainPrimary, true); defender->Attack(this, MainPrimary, true);
if (HasDied()) return; if (HasDied())
return;
} }
//Double Riposte effect, allows for a chance to do RIPOSTE with a skill specfic special attack (ie Return Kick). DoubleRipChance = defender->aabonuses.GiveDoubleRiposte[0] + defender->spellbonuses.GiveDoubleRiposte[0] +
//Coded narrowly: Limit to one per client. Limit AA only. [1 = Skill Attack Chance, 2 = Skill] defender->itembonuses.GiveDoubleRiposte[0];
// Live AA - Double Riposte
if (DoubleRipChance && zone->random.Roll(DoubleRipChance)) {
Log.Out(Logs::Detail, Logs::Combat,
"Preforming a double riposted from SE_GiveDoubleRiposte base1 == 0 (%d percent chance)",
DoubleRipChance);
defender->Attack(this, MainPrimary, true);
if (HasDied())
return;
}
// Double Riposte effect, allows for a chance to do RIPOSTE with a skill specific special attack (ie Return Kick).
// Coded narrowly: Limit to one per client. Limit AA only. [1 = Skill Attack Chance, 2 = Skill]
DoubleRipChance = defender->aabonuses.GiveDoubleRiposte[1]; DoubleRipChance = defender->aabonuses.GiveDoubleRiposte[1];
if(DoubleRipChance && zone->random.Roll(DoubleRipChance)) { if (DoubleRipChance && zone->random.Roll(DoubleRipChance)) {
Log.Out(Logs::Detail, Logs::Combat, "Preforming a return SPECIAL ATTACK (%d percent chance)", DoubleRipChance); Log.Out(Logs::Detail, Logs::Combat, "Preforming a return SPECIAL ATTACK (%d percent chance)",
DoubleRipChance);
if (defender->GetClass() == MONK) if (defender->GetClass() == MONK)
defender->MonkSpecialAttack(this, defender->aabonuses.GiveDoubleRiposte[2]); defender->MonkSpecialAttack(this, defender->aabonuses.GiveDoubleRiposte[2]);
else if (defender->IsClient()) else if (defender->IsClient())
defender->CastToClient()->DoClassAttacks(this,defender->aabonuses.GiveDoubleRiposte[2], true); defender->CastToClient()->DoClassAttacks(this, defender->aabonuses.GiveDoubleRiposte[2], true);
} }
} }
@ -4678,10 +4691,10 @@ void Mob::TrySkillProc(Mob *on, uint16 skill, uint16 ReuseTime, bool Success, ui
ProcMod = static_cast<float>(base2); ProcMod = static_cast<float>(base2);
} }
else if(effect_id == SE_LimitToSkill && base1 <= HIGHEST_SKILL) { else if(effect_id == SE_LimitToSkill && base1 <= HIGHEST_SKILL) {
if (CanProc && base1 == skill && IsValidSpell(proc_spell_id)) { if (CanProc && base1 == skill && IsValidSpell(proc_spell_id)) {
float final_chance = chance * (ProcMod / 100.0f); float final_chance = chance * (ProcMod / 100.0f);
if (zone->random.Roll(final_chance)) { if (zone->random.Roll(final_chance)) {
ExecWeaponProc(nullptr, proc_spell_id, on); ExecWeaponProc(nullptr, proc_spell_id, on);
CanProc = false; CanProc = false;

View File

@ -1156,6 +1156,7 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
case SE_DoubleRiposte: { case SE_DoubleRiposte: {
newbon->DoubleRiposte += base1; newbon->DoubleRiposte += base1;
break;
} }
case SE_GiveDoubleRiposte: { case SE_GiveDoubleRiposte: {