mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-18 19:41:30 +00:00
Merge branch 'aa' of github.com:EQEmu/Server into aa
This commit is contained in:
commit
33b6748c1b
@ -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;
|
||||||
|
|||||||
@ -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: {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user