EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Server Code Submissions (https://www.eqemulator.org/forums/forumdisplay.php?f=669)
-   -   Zone:HotZoneBonus should also be a multiplier (https://www.eqemulator.org/forums/showthread.php?t=34581)

revloc02c 12-08-2011 02:09 AM

Zone:HotZoneBonus should also be a multiplier
 
This is more of a suggestion that could be a submission:

In exp.cpp
Code:

                //get modifiers
                if(RuleR(Character, ExpMultiplier) >= 0){
                        totalmod *= RuleR(Character, ExpMultiplier);
                }

                if(zone->newzone_data.zone_exp_multiplier >= 0){
                        zemmod *= zone->newzone_data.zone_exp_multiplier;
                }

                if(RuleB(Character,UseRaceClassExpBonuses))
                {
                        if(GetBaseRace() == HALFLING){
                                totalmod *= 1.05;
                        }

                        if(GetClass() == ROGUE || GetClass() == WARRIOR){
                                totalmod *= 1.05;
                        }
                }

                if(zone->IsHotzone())
                {
                        totalmod += RuleR(Zone, HotZoneBonus);
                }

                add_exp = int32(float(add_exp) * totalmod * zemmod);

The HotZoneBonus is added to the modifier, and it should be multiplied just like the other modifiers are. Granted the value in the rule_values table (default is 0.75 I think) may need to change to accommodate this, but multiplying make more sense.

Consider:
If you decided to make your ExpMultiplier really high, say 10 for arguments sake (not a likely value I know, but to help make the point) then adding a 0.75 to the modifier is relatively a very small increase, only 7.5%.
But if your ExpMultiplier was really low...I actually set it to 0.01 (along with some other changes mind you) and when I got to a hot zone I was getting 75 times as much exp as I should have (that's 7500%)...kinda throws things off a little when you kill one goblin in Runny Eye and gain 23 levels.

Changing the code to this:
Code:

if(zone->IsHotzone())
{
        totalmod *= RuleR(Zone, HotZoneBonus);
}

...would keep the bonus consistent. Set the db value to 1.5 and you'd always have 150% exp bonus in hot zones regardless of what the base ExpMultiplier is; set it to 2 and you'll always get 200% exp etc.

One caution if this change is implemented, if the HotZoneBonus value in the rule_values table stays at 0.75 it is going to make hot zones only give 75% exp of a normal zone, making it more of a cold-zone-penalty. So the db value would have to change along with the cpp code.


All times are GMT -4. The time now is 12:05 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.