Here try to look at it. and Compare to yours
GameClient.CS or GameState
Code:
public void CalculateHPBonus()
{
//if ((int)Account.State >= 3) return;
switch (Entity.Class)
{
case 11: Entity.MaxHitpoints = (uint)(StatHP * 1.05F); break;
case 12: Entity.MaxHitpoints = (uint)(StatHP * 1.08F); break;
case 13: Entity.MaxHitpoints = (uint)(StatHP * 1.10F); break;
case 14: Entity.MaxHitpoints = (uint)(StatHP * 1.12F); break;
case 15: Entity.MaxHitpoints = (uint)(StatHP * 1.15F); break;
default: Entity.MaxHitpoints = (uint)StatHP; break;
}
Entity.MaxHitpoints += Entity.ItemHP;
var plus = Entity.SubClasses.Classes.SingleOrDefault(x => x.Value.ID == 9);
if (plus.Value != null && Entity.SubClass == 9)
Entity.MaxHitpoints += (uint)(plus.Value.Level * 100);
Entity.Hitpoints = Math.Min(Entity.Hitpoints, Entity.MaxHitpoints);
}
public void CalculateStatBonus()
{
byte ManaBoost = 5;
const byte HitpointBoost = 24;
sbyte Class = (sbyte)(Entity.Class / 10);
if (Class == 13 || Class == 14)
ManaBoost += (byte)(5 * (Entity.Class - (Class * 10)));
StatHP = (ushort)((Entity.Strength * 3) +
(Entity.Agility * 3) +
(Entity.Spirit * 3) +
(Entity.Vitality * HitpointBoost));
Entity.MaxMana = (ushort)((Entity.Spirit * ManaBoost) + Entity.ItemMP);
Entity.Mana = Math.Min(Entity.Mana, Entity.MaxMana);
}