Leveling Up - Skill/Attrib increases calculations
Posted: Tue Dec 20, 2011 9:11 am
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:
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
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);
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