[Spells] Implemented SPA 122 SE_ReduceSkill (#4234)

* Implement SPA122 v1

* Implemented SPA 122 ReduceSkill

SE_ReduceSkill SPA 122	 base: skill id, limit: none, max: none, formula: % skill is reduced (positive)

* Implemented SPA 122 Reduce Skill

remove incorrect SPA addition

* Break out multiple lines

* reformatted

reformatted

---------

Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
KayenEQ
2024-05-04 19:11:12 -04:00
committed by GitHub
parent 758859eea6
commit a71ad416b4
6 changed files with 56 additions and 2 deletions
+31
View File
@@ -12414,3 +12414,34 @@ std::vector<Mob*> Client::GetRaidOrGroupOrSelf(bool clients_only)
return v;
}
uint16 Client::GetSkill(EQ::skills::SkillType skill_id) const
{
if (skill_id <= EQ::skills::HIGHEST_SKILL) {
if (spellbonuses.ReduceSkill[skill_id] > 0) {
if (itembonuses.skillmod[skill_id] > 0) {
if (itembonuses.skillmodmax[skill_id] > 0) {
return std::min(m_pp.skills[skill_id] + itembonuses.skillmodmax[skill_id], m_pp.skills[skill_id] + ((m_pp.skills[skill_id] * (itembonuses.skillmod[skill_id] - spellbonuses.ReduceSkill[skill_id])) / 100));
}
return m_pp.skills[skill_id] + ((m_pp.skills[skill_id] * (itembonuses.skillmod[skill_id] - spellbonuses.ReduceSkill[skill_id])) / 100);
}
return m_pp.skills[skill_id] - ((m_pp.skills[skill_id] * spellbonuses.ReduceSkill[skill_id]) / 100);
}
if (itembonuses.skillmod[skill_id] > 0) {
if (itembonuses.skillmodmax[skill_id] > 0){
if (itembonuses.skillmodmax[skill_id] > 0) {
return std::min(m_pp.skills[skill_id] + itembonuses.skillmodmax[skill_id], m_pp.skills[skill_id] * (100 + itembonuses.skillmod[skill_id]) / 100);
}
return m_pp.skills[skill_id] * (100 + itembonuses.skillmod[skill_id]) / 100;
}
return m_pp.skills[skill_id];
}
return 0;
}
}