EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development: Custom Code (https://www.eqemulator.org/forums/forumdisplay.php?f=665)
-   -   A more versatile exp multiplier system (https://www.eqemulator.org/forums/showthread.php?t=22275)

eq4me 01-11-2007 01:02 AM

A more versatile exp multiplier system <<Request>>
 
I pondered this for some time but dont have the time to implement this:

It would be nice to have a more versatile EXP multiplier system.

Imagine you want to run a server where people initially level very fast but getting slower the higher level they become.
So it would be nice to assign an multiplier to an level range. Below an example of what I have in mind:

A table with two unsigned init entries.

level;multiplier
1;8
10;5
30;3
50;2
60;1

So at level 1 you have an 8x EXP multiplier which goes down linear to 5x at level 10 and goes further down to 3x at level 30 and so on.
If someone just wants to have an fixed multiplier he just sets his desired multiplier at level 1 and adds no further rows.

Edit: The same might be cool to have for AAs.

eq4me 01-11-2007 04:20 AM

Its too late to edit the original post so here a correction and an addition.

the value for the exp modifier should be float and not unsigned int.

Especially with high exp modifiers there is the problem that you can not even get your most used skills to max before you level. Maybe it would be a good idea to add (at least part of) the exp multiplier to the success chance for an skill increase. So at least your most needed Skills would stay up to par.

mattmeck 01-11-2007 04:30 AM

This falls under the custom code headline since this would not emulate live, moved for ya

John Adams 01-11-2007 07:23 AM

Weren't these called "Hell Levels" in EQLive? ;)

I like the idea.

Dymerius 01-11-2007 12:32 PM

Technically, there were only certain upper-level Hell Levels.

If I remember correctly... 30, 40, 45(*shiver!*)

Then they added Kunark and level 51 put the other hell levels to shame... and 55... and 57 or 59? It's been so long...

But I do like your idea just because I hate lower levels where your character is undeveloped and basically identical to all other classes...

Zengez 01-12-2007 07:14 AM

51, 54, and 59 were hell lvls, not sure on 57 but i don't think so... and after posting too much serious stuff previously, I just had to point out anyone else notice that 8, 5, 3, 2, 1 is a reverse fibonacci series? math geeks, unite!

John Adams 01-12-2007 08:20 AM

When I first played, they were all the 9's (19 [not so bad] 29, 39) until the 50's. Then 51+ were all hellish.

Sorry to derail. :)

rojadruid 01-12-2007 10:34 AM

Quote:

Originally Posted by Dymerius
If I remember correctly... 30, 40, 45(*shiver!*)

Then they added Kunark and level 51 put the other hell levels to shame... and 55... and 57 or 59? It's been so long...

You would be correct on the hell levels.

Pre beta they where 30, 35, 40, 45, 50. When they made Kunark they added 51, 55, 59.

KLS 01-12-2007 11:12 AM

This wouldn't be very hard and really isn't that bad an idea I threw something like this together quickly:

Code:

Index: exp.cpp
===================================================================
--- exp.cpp        (revision 940)
+++ exp.cpp        (working copy)
@@ -29,8 +29,16 @@
 //                            war  cle    pal    ran    shd    dru    mnk    brd    rog    shm    nec    wiz    mag    enc    bst    bes
 float class_modifiers[16] = { 9.0f, 10.0f, 14.0f, 14.0f, 14.0f, 10.0f, 12.0f, 14.0f, 9.05f, 10.0f, 11.0f, 11.0f, 11.0f, 11.0f, 10.0f, 10.0f};
 
+#define MAX_LEVEL_MOD 70
+float level_modifiers[MAX_LEVEL_MOD] = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
+                                        1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f };
+                                                       
 
-
 void Client::AddEXP(int32 add_exp, int8 conlevel, bool resexp) {
        if (m_epp.perAA<0 || m_epp.perAA>100)
                m_epp.perAA=0;        // stop exploit with sanity check
@@ -44,10 +52,22 @@
                //take that ammount away from regular exp
                add_exp -= add_aaxp;
       
-                //get zone modifier
+                float totalmod = 1.0;
+                //get modifiers... I don't like how we mix floats and ints so much but for now...
                if (zone->GetEXPMod() > 0) {
-                        add_exp = int32(float(add_exp) * zone->GetEXPMod());
+                        totalmod = zone->GetEXPMod();
                }
+               
+                if(RuleR(Character, ExpMultiplier) > 0){
+                        totalmod *= RuleR(Character, ExpMultiplier);
+                }
+               
+                if(GetLevel() <= MAX_LEVEL_MOD && GetLevel >= 1){
+                        totalmod *= level_modifiers[GetLevel()-1];
+                }
+                add_exp = int32(float(add_exp) * totalmod);
+               
+               
       
 #ifdef CON_XP_SCALING
                if (conlevel != 0xFF) {

..also noticed expmodifier rule doesn't appear to be working right now while doing which I will fix. Haven't tested this but yeah could also do it with something in the database too if wanted.. not a difficult concept and very nice for legit servers that want to tweak how they play.

rojadruid 01-13-2007 04:34 AM

The rule idea is a way better idea to do it, scince thats why they are there for customization.

eq4me 01-14-2007 04:29 AM

Thank you KLS, you are my Hero! :-)

My own server project is on ice for the time being due to lack of time but hopefully someone picks this up for his server. I had the idea because I dont like to play to level 70 in an week as much as I dont like slaving my way through the first 10 levels for the same period of time.

Ueguvil 01-14-2007 11:02 AM

This is something I've wanted for a long time. I'd like to be able to fly through the first 10 levels within an hour, but still having each high level take a considerable amount of time.

Ueguvil 06-01-2007 02:31 PM

Bump... Any chance of this being integrated into the official code? Into the rules or something?


All times are GMT -4. The time now is 07:48 AM.

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