Pet critical logging [skip ci]

This commit is contained in:
Akkadius 2019-10-12 17:24:07 -05:00
parent 6ec577f241
commit bf798c0561
2 changed files with 82 additions and 7 deletions

View File

@ -437,9 +437,28 @@ function TryPetCriticalHit(self, defender, hit)
local CritPetChance = owner:GetAABonuses():PetCriticalHit() + owner:GetItemBonuses():PetCriticalHit() + owner:GetSpellBonuses():PetCriticalHit();
local CritChanceBonus = GetCriticalChanceBonus(self, hit.skill);
eq.debug(
string.format("[%s] [Mob::TryPetCriticalHit] CritPetChance [%i] CritChanceBonus [%i] | Bonuses AA [%i] Item [%i] Spell [%i]",
e.self:GetCleanName(),
CritPetChance,
CritChanceBonus,
owner:GetAABonuses():PetCriticalHit(),
owner:GetItemBonuses():PetCriticalHit(),
owner:GetSpellBonuses():PetCriticalHit()
)
);
if (CritPetChance or critChance) then
critChance = critChance + CritPetChance;
critChance = critChance + (critChance * CritChanceBonus / 100.0);
eq.debug(
string.format("[%s] [Mob::TryPetCriticalHit] critChance [%i] PostCalcs",
e.self:GetCleanName(),
critChance
)
);
end
if (critChance > 0) then
@ -449,9 +468,24 @@ function TryPetCriticalHit(self, defender, hit)
local entity_list = eq.get_entity_list();
critMod = critMod + GetCritDmgMod(self, hit.skill) * 2;
hit.damage_done = (hit.damage_done * critMod) / 100;
entity_list:FilteredMessageClose(this, false, CriticalMessageRange,
MT.CritMelee, Filter.MeleeCrits, string.format('%s scores a critical hit! (%d)',
self:GetCleanName(), e.hit.damage_done));
eq.debug(
string.format("[%s] [Mob::TryPetCriticalHit] critMod [%i] DmgMod [%i] DamageDone [%i]",
e.self:GetCleanName(),
critMod,
GetCritDmgMod(self, hit.skill),
hit.damage_done
)
);
entity_list:FilteredMessageClose(
this,
false,
CriticalMessageRange,
MT.CritMelee,
Filter.MeleeCrits,
string.format('%s scores a critical hit! (%d)', self:GetCleanName(), e.hit.damage_done)
);
end
end
@ -497,7 +531,6 @@ function GetCritDmgMod(self, skill)
local aabonuses = self:GetAABonuses();
local itembonuses = self:GetItemBonuses();
local spellbonuses = self:GetSpellBonuses();
critDmg_mod = critDmg_mod + itembonuses:CritDmgMod(Skill.HIGHEST_SKILL + 1);
critDmg_mod = critDmg_mod + spellbonuses:CritDmgMod(Skill.HIGHEST_SKILL + 1);
critDmg_mod = critDmg_mod + aabonuses:CritDmgMod(Skill.HIGHEST_SKILL + 1);
@ -505,6 +538,10 @@ function GetCritDmgMod(self, skill)
critDmg_mod = critDmg_mod + spellbonuses:CritDmgMod(skill);
critDmg_mod = critDmg_mod + aabonuses:CritDmgMod(skill);
if (critDmg_mod < -100) then
critDmg_mod = -100;
end
return critDmg_mod;
end

View File

@ -3889,12 +3889,32 @@ void Mob::TryPetCriticalHit(Mob *defender, uint16 skill, int32 &damage)
int32 CritPetChance = owner->aabonuses.PetCriticalHit + owner->itembonuses.PetCriticalHit + owner->spellbonuses.PetCriticalHit;
int32 CritChanceBonus = GetCriticalChanceBonus(skill);
Log.Out(
Logs::General,
Logs::Combat,
"[%s] [Mob::TryPetCriticalHit] CritPetChance [%i] CritChanceBonus [%i] | Bonuses AA [%i] Item [%i] Spell [%i]",
GetCleanName(),
CritPetChance,
CritChanceBonus,
owner->aabonuses.PetCriticalHit,
owner->itembonuses.PetCriticalHit,
owner->spellbonuses.PetCriticalHit
);
if (CritPetChance || critChance) {
//For pets use PetCriticalHit for base chance, pets do not innately critical with without it
//even if buffed with a CritChanceBonus effects.
critChance += CritPetChance;
critChance += critChance*CritChanceBonus/100.0f;
Log.Out(
Logs::General,
Logs::Combat,
"[%s] [Mob::TryPetCriticalHit] critChance [%.2f] PostCalcs",
GetCleanName(),
critChance
);
}
if(critChance > 0){
@ -3905,9 +3925,27 @@ void Mob::TryPetCriticalHit(Mob *defender, uint16 skill, int32 &damage)
{
critMod += GetCritDmgMob(skill) * 2; // To account for base crit mod being 200 not 100
damage = (damage * critMod) / 100;
entity_list.FilteredMessageClose_StringID(this, false, 200,
MT_CritMelee, FilterMeleeCrits, CRITICAL_HIT,
GetCleanName(), itoa(damage));
Log.Out(
Logs::General,
Logs::Combat,
"[%s] [Mob::TryPetCriticalHit] critMod [%.2f] DmgMod [%i] DamageDone [%i]",
GetCleanName(),
critMod,
GetCritDmgMob(skill),
damage
);
entity_list.FilteredMessageClose_StringID(
this,
false,
200,
MT_CritMelee,
FilterMeleeCrits,
CRITICAL_HIT,
GetCleanName(),
itoa(damage)
);
}
}
}