mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-11 03:31:08 +00:00
[Feature] Add support for -1 extradmgskill to allow all skills to be scaled. (#3136)
* [Feature] Add support for -1 extradmgskill to allow all skills to be scaled. - `$mob->GetSkillDmgAmt(skill_id)` now uses `int` instead of `uint16`. - `statbonuses:GetSkillDamageAmount(skill_id)` now uses `-1` properly. - `mob:GetSkillDmgAmt(skill_id)` now uses `int` instead of `uint16`. - A `-1` value in `extradmgskill` denotes the ability to scale all skills at once. - Consolidated `AddItemBonuses()`, `AdditiveWornBonuses()`, `CalcItemBonuses()`, and `CalcRecommendedLevelBonus()` to mob-based methods to avoid code duplication. - Bots, NPCs, and Mercs can now use additive worn effects if the rule is enabled, as well as all other proper stat bonuses that only clients had before. - No SQL update required to change `extradmgskill` and `extradmgamt` to `int` as they already are this type in the database, just had to adjust `item_data.h` and `shareddb.cpp`. * Update mob.cpp * Cleanup. * Cleanup. * Move #include <vector> to header. * Add method for GetExtraDamageSkills * fix additembonuses * Update bonuses.cpp * Update mob.cpp * Out of bounds. * Update bonuses.cpp --------- Co-authored-by: Aeadoin <109764533+Aeadoin@users.noreply.github.com>
This commit is contained in:
+33
-7
@@ -16,6 +16,7 @@
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "../common/data_verification.h"
|
||||
#include "../common/spdat.h"
|
||||
#include "../common/strings.h"
|
||||
#include "../common/misc_functions.h"
|
||||
@@ -3999,7 +4000,7 @@ void Mob::QuestJournalledSay(Client *QuestInitiator, const char *str, Journal::O
|
||||
|
||||
const char *Mob::GetCleanName()
|
||||
{
|
||||
if (!strlen(clean_name)) {
|
||||
if (!strlen(clean_name)) {
|
||||
CleanMobName(GetName(), clean_name);
|
||||
}
|
||||
|
||||
@@ -5549,16 +5550,41 @@ int16 Mob::GetSkillReuseTime(uint16 skill)
|
||||
return skill_reduction;
|
||||
}
|
||||
|
||||
int Mob::GetSkillDmgAmt(uint16 skill)
|
||||
int Mob::GetSkillDmgAmt(int skill_id)
|
||||
{
|
||||
int skill_dmg = 0;
|
||||
|
||||
// All skill dmg(only spells do this) + Skill specific
|
||||
skill_dmg += spellbonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1] + itembonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1] + aabonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1]
|
||||
+ itembonuses.SkillDamageAmount[skill] + spellbonuses.SkillDamageAmount[skill] + aabonuses.SkillDamageAmount[skill];
|
||||
if (!EQ::ValueWithin(skill_id, ALL_SKILLS, EQ::skills::HIGHEST_SKILL)) {
|
||||
return skill_dmg;
|
||||
}
|
||||
|
||||
skill_dmg += spellbonuses.SkillDamageAmount2[EQ::skills::HIGHEST_SKILL + 1] + itembonuses.SkillDamageAmount2[EQ::skills::HIGHEST_SKILL + 1]
|
||||
+ itembonuses.SkillDamageAmount2[skill] + spellbonuses.SkillDamageAmount2[skill];
|
||||
skill_dmg += (
|
||||
spellbonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1] +
|
||||
itembonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1] +
|
||||
aabonuses.SkillDamageAmount[EQ::skills::HIGHEST_SKILL + 1]
|
||||
);
|
||||
|
||||
if (skill_id != ALL_SKILLS) {
|
||||
skill_dmg += (
|
||||
itembonuses.SkillDamageAmount[skill_id] +
|
||||
spellbonuses.SkillDamageAmount[skill_id] +
|
||||
aabonuses.SkillDamageAmount[skill_id]
|
||||
);
|
||||
}
|
||||
|
||||
skill_dmg += (
|
||||
spellbonuses.SkillDamageAmount2[EQ::skills::HIGHEST_SKILL + 1] +
|
||||
itembonuses.SkillDamageAmount2[EQ::skills::HIGHEST_SKILL + 1] +
|
||||
aabonuses.SkillDamageAmount2[EQ::skills::HIGHEST_SKILL + 1]
|
||||
);
|
||||
|
||||
if (skill_id != ALL_SKILLS) {
|
||||
skill_dmg += (
|
||||
itembonuses.SkillDamageAmount2[skill_id] +
|
||||
spellbonuses.SkillDamageAmount2[skill_id] +
|
||||
aabonuses.SkillDamageAmount2[skill_id]
|
||||
);
|
||||
}
|
||||
|
||||
return skill_dmg;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user