Hateborne |
06-07-2013 05:32 PM |
MaxHPChange Tweak
We were having issues on EZ server due to the MaxHPChange being both int16 and due to some of the math involved. Thanks to Paldail and lerxst2112, we've produced a slightly more usable form that should resolve our problems while maintaining original functionality.
Code:
diff --git "a/.\\Server\\zone\\/bot.cpp" "b/.\\Server-Original\\zone\\/bot.cpp"
index b54fe70..c88ad72 100644
--- "a/.\\Server\\zone\\/bot.cpp"
+++ "b/.\\Server-Original\\zone\\/bot.cpp"
@@ -11043,7 +11043,7 @@ int32 Bot::CalcMaxHP() {
bot_hp += GroupLeadershipAAHealthEnhancement();
- bot_hp += bot_hp * (spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
+ bot_hp += bot_hp * ((spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000.0f);
max_hp = bot_hp;
if (cur_hp > max_hp)
diff --git "a/.\\Server\\zone\\/client_mods.cpp" "b/.\\Server-Original\\zone\\/client_mods.cpp"
index 1e27185..eaab0ba 100644
--- "a/.\\Server\\zone\\/client_mods.cpp"
+++ "b/.\\Server-Original\\zone\\/client_mods.cpp"
@@ -250,7 +250,7 @@ int32 Client::CalcMaxHP() {
max_hp += GroupLeadershipAAHealthEnhancement();
- max_hp += max_hp * (spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
+ max_hp += max_hp * ((spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000.0f);
if (cur_hp > max_hp)
cur_hp = max_hp;
diff --git "a/.\\Server\\zone\\/common.h" "b/.\\Server-Original\\zone\\/common.h"
index f7716c9..ddc1711 100644
--- "a/.\\Server\\zone\\/common.h"
+++ "b/.\\Server-Original\\zone\\/common.h"
@@ -283,7 +283,7 @@ struct StatBonuses {
int16 HundredHands; //extra haste, stacks with all other haste i
int8 MeleeLifetap; //i
int16 HealRate; // Spell effect that influences effectiveness of heals
- int16 MaxHPChange; // Spell Effect
+ int32 MaxHPChange; // Spell Effect
int16 SkillDmgTaken[HIGHEST_SKILL+2]; // All Skills + -1
int32 HealAmt; // Item Effect
int32 SpellDmg; // Item Effect
diff --git "a/.\\Server\\zone\\/merc.cpp" "b/.\\Server-Original\\zone\\/merc.cpp"
index 3709524..0e652ff 100644
--- "a/.\\Server\\zone\\/merc.cpp"
+++ "b/.\\Server-Original\\zone\\/merc.cpp"
@@ -918,7 +918,7 @@ int32 Merc::CalcMaxHP() {
max_hp += GroupLeadershipAAHealthEnhancement();
- max_hp += max_hp * (spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
+ max_hp += max_hp * ((spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000.0f);
if (cur_hp > max_hp)
cur_hp = max_hp;
diff --git "a/.\\Server\\zone\\/mob.cpp" "b/.\\Server-Original\\zone\\/mob.cpp"
index bce504a..33560ed 100644
--- "a/.\\Server\\zone\\/mob.cpp"
+++ "b/.\\Server-Original\\zone\\/mob.cpp"
@@ -615,8 +615,7 @@ int32 Mob::CalcMaxMana() {
int32 Mob::CalcMaxHP() {
max_hp = (base_hp + itembonuses.HP + spellbonuses.HP);
- max_hp += max_hp * (aabonuses.MaxHPChange + spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
+ max_hp += max_hp * ((aabonuses.MaxHPChange + spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000.0f);
return max_hp;
}
I've never created a git diff, so please don't crucify me too hard if it's wrong. (I've got medium-low resists to it!)
-Hate
|