mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 01:11:29 +00:00
Allow For Old Race/Class Experience Modifiers
Add new ruletypes 'Character:UseOldRaceExpPenalties' and 'Character:UseOldClassExpPenalties' When set to true, adds in bonuses/penalties that existed in Classic Class-based penalties were disabled during Velious, while race-based penalties were not removed until TSS This method uses the original SOE method of increase exp needed to level, rather than decreasing exp gained
This commit is contained in:
parent
efeb80cc8b
commit
e2f1456624
@ -85,6 +85,8 @@ RULE_INT(Character, MaxCharmDurationForPlayerCharacter, 15)
|
|||||||
RULE_INT(Character, BaseHPRegenBonusRaces, 4352) //a bitmask of race(s) that receive the regen bonus. Iksar (4096) & Troll (256) = 4352. see common/races.h for the bitmask values
|
RULE_INT(Character, BaseHPRegenBonusRaces, 4352) //a bitmask of race(s) that receive the regen bonus. Iksar (4096) & Troll (256) = 4352. see common/races.h for the bitmask values
|
||||||
RULE_BOOL(Character, SoDClientUseSoDHPManaEnd, false) // Setting this to true will allow SoD clients to use the SoD HP/Mana/End formulas and previous clients will use the old formulas
|
RULE_BOOL(Character, SoDClientUseSoDHPManaEnd, false) // Setting this to true will allow SoD clients to use the SoD HP/Mana/End formulas and previous clients will use the old formulas
|
||||||
RULE_BOOL(Character, UseRaceClassExpBonuses, true) // Setting this to true will enable Class and Racial experience rate bonuses
|
RULE_BOOL(Character, UseRaceClassExpBonuses, true) // Setting this to true will enable Class and Racial experience rate bonuses
|
||||||
|
RULE_BOOL(Character, UseOldRaceExpPenalties, false) // Setting this to true will enable racial exp penalties for Iksar, Troll, Ogre, and Barbarian, as well as the bonus for Halflings
|
||||||
|
RULE_BOOL(Character, UseOldClassExpPenalties, false) // Setting this to true will enable old class exp penalties for Paladin, SK, Ranger, Bard, Monk, Wizard, Enchanter, Magician, and Necromancer, as well as the bonus for Rogues and Warriors
|
||||||
RULE_BOOL(Character, RespawnFromHover, false) // Use Respawn window, or not.
|
RULE_BOOL(Character, RespawnFromHover, false) // Use Respawn window, or not.
|
||||||
RULE_INT(Character, RespawnFromHoverTimer, 300) // Respawn Window countdown timer, in SECONDS
|
RULE_INT(Character, RespawnFromHoverTimer, 300) // Respawn Window countdown timer, in SECONDS
|
||||||
RULE_BOOL(Character, UseNewStatsWindow, true) // New stats window shows everything
|
RULE_BOOL(Character, UseNewStatsWindow, true) // New stats window shows everything
|
||||||
|
|||||||
35
zone/exp.cpp
35
zone/exp.cpp
@ -665,6 +665,41 @@ uint32 Client::GetEXPForLevel(uint16 check_level)
|
|||||||
mod *= 1000;
|
mod *= 1000;
|
||||||
|
|
||||||
uint32 finalxp = uint32(base * mod);
|
uint32 finalxp = uint32(base * mod);
|
||||||
|
|
||||||
|
if(RuleB(Character,UseOldRaceExpPenalties))
|
||||||
|
{
|
||||||
|
float racemod = 1.0;
|
||||||
|
if(GetBaseRace() == TROLL || GetBaseRace() == IKSAR) {
|
||||||
|
racemod = 1.2;
|
||||||
|
} else if(GetBaseRace() == OGRE) {
|
||||||
|
racemod = 1.15;
|
||||||
|
} else if(GetBaseRace() == BARBARIAN) {
|
||||||
|
racemod = 1.05;
|
||||||
|
} else if(GetBaseRace() == HALFLING) {
|
||||||
|
racemod = 0.95;
|
||||||
|
}
|
||||||
|
|
||||||
|
finalxp = uint32(finalxp * racemod);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(RuleB(Character,UseOldClassExpPenalties))
|
||||||
|
{
|
||||||
|
float classmod = 1.0;
|
||||||
|
if(GetClass() == PALADIN || GetClass() == SHADOWKNIGHT || GetClass() == RANGER || GetClass() == BARD) {
|
||||||
|
classmod = 1.4;
|
||||||
|
} else if(GetClass() == MONK) {
|
||||||
|
classmod = 1.2;
|
||||||
|
} else if(GetClass() == WIZARD || GetClass() == ENCHANTER || GetClass() == MAGICIAN || GetClass() == NECROMANCER) {
|
||||||
|
classmod = 1.1;
|
||||||
|
} else if(GetClass() == ROGUE) {
|
||||||
|
classmod = 0.91;
|
||||||
|
} else if(GetClass() == WARRIOR) {
|
||||||
|
classmod = 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
finalxp = uint32(finalxp * classmod);
|
||||||
|
}
|
||||||
|
|
||||||
finalxp = mod_client_xp_for_level(finalxp, check_level);
|
finalxp = mod_client_xp_for_level(finalxp, check_level);
|
||||||
|
|
||||||
return finalxp;
|
return finalxp;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user