View Single Post
  #4  
Old 11-04-2010, 07:03 PM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 541
Default

Updated this code like AndMetal suggested, so it uses the bonuses code and can stack, etc.

Code:
Index: bonuses.cpp
===================================================================
--- bonuses.cpp	(revision 1713)
+++ bonuses.cpp	(working copy)
@@ -1206,8 +1206,11 @@
 					newbon->Accuracy = effect_value;
 				break;
 			}
-
-				
+			case SE_MaxHPChange:
+			{
+				newbon->MaxHPChange += effect_value;
+				break;
+			}
 		}
 	}
 }
Index: client_mods.cpp
===================================================================
--- client_mods.cpp	(revision 1713)
+++ client_mods.cpp	(working copy)
@@ -240,17 +240,7 @@
 
 	max_hp += GroupLeadershipAAHealthEnhancement();
 	
-	int slot = GetBuffSlotFromType(SE_MaxHPChange);
-	if(slot >= 0)
-	{
-		for(int i = 0; i < EFFECT_COUNT; i++)
-		{
-			if (spells[buffs[slot].spellid].effectid[i] == SE_MaxHPChange)
-			{
-				max_hp += max_hp * spells[buffs[slot].spellid].base[i] / 10000;
-			}
-		}
-	}
+	max_hp += max_hp * (spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
 
 	if (cur_hp > max_hp)
 		cur_hp = max_hp;
Index: mob.cpp
===================================================================
--- mob.cpp	(revision 1713)
+++ mob.cpp	(working copy)
@@ -605,19 +605,10 @@
 sint32 Mob::CalcMaxHP() 
 {
 
-	max_hp = (base_hp  + itembonuses.HP + spellbonuses.HP);
+	max_hp = (base_hp + itembonuses.HP + spellbonuses.HP);
 	
-	int slot = GetBuffSlotFromType(SE_MaxHPChange);
-	if(slot >= 0)
-	{
-		for(int i = 0; i < EFFECT_COUNT; i++)
-		{
-			if (spells[buffs[slot].spellid].effectid[i] == SE_MaxHPChange)
-			{
-				max_hp += max_hp * spells[buffs[slot].spellid].base[i] / 10000;
-			}
-		}
-	}
+	max_hp += max_hp * (spellbonuses.MaxHPChange + itembonuses.MaxHPChange) / 10000;
+	
 	return max_hp;
 }
 
Index: mob.h
===================================================================
--- mob.h	(revision 1713)
+++ mob.h	(working copy)
@@ -275,6 +275,7 @@
 
 	sint8 HundredHands;		//extra haste, stacks with all other haste  i
 	sint8 MeleeLifetap;
+	sint16 MaxHPChange;
 	int XPRateMod;
 
 	sint8	Packrat;	//weight reduction for items, 1 point = 10%
Reply With Quote