Page 1 of 1

Leveling Up - Skill/Attrib increases calculations

Posted: Tue Dec 20, 2011 9:11 am
by John Adams
All,

Need a little help identifying whether or not we are calculating level-ups properly. These calcs have been in code for a long time, and I plan to convert them to Rules, and would like input on what base + ratio values are considered "default".

Here is how skill/attribs are calculated currently:

Code: Select all

	GetPlayer()->SetTotalHPBase(new_level*new_level*2+40);
	GetPlayer()->SetTotalPowerBase((sint32)(new_level*new_level*2.1+45));
	GetPlayer()->CalculateBonuses();
	GetPlayer()->SetHP(GetPlayer()->GetTotalHP());
	GetPlayer()->SetPower(GetPlayer()->GetTotalPower());
	GetPlayer()->GetInfoStruct()->agi_base = new_level*2+15;
	GetPlayer()->GetInfoStruct()->intel_base = new_level*2+15;
	GetPlayer()->GetInfoStruct()->wis_base = new_level*2+15;
	GetPlayer()->GetInfoStruct()->str_base = new_level*2+15;
	GetPlayer()->GetInfoStruct()->sta_base = new_level*2+15;
	GetPlayer()->GetInfoStruct()->cold_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->heat_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->disease_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->mental_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->magic_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->divine_base = (int16)(new_level*1.5+10);
	GetPlayer()->GetInfoStruct()->poison_base = (int16)(new_level*1.5+10);
	GetPlayer()->SetHPRegen((int)(new_level*.75)+(int)(new_level/10)+3);
	GetPlayer()->SetPowerRegen(new_level+(int)(new_level/10)+4);
	GetPlayer()->GetInfoStruct()->poison_base = (int16)(new_level*1.5+10);

	GetPlayer()->GetSkills()->SetSkillCapsByType(1, 5*new_level);
	GetPlayer()->GetSkills()->SetSkillCapsByType(3, 5*new_level);
	GetPlayer()->GetSkills()->SetSkillCapsByType(6, 5*new_level);
	GetPlayer()->GetSkills()->SetSkillCapsByType(13, 5*new_level);
Looking to replace the multipliers and offsets with Rules values so each server can customize it's own level up values and caps.

Consider whether or not allowing customization might "break" functionality, too. Ie., we do not want some admin saying you get new_level * 1000 + 1bil because you know people will do that ;)

Thanks