Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 03-16-2009, 12:37 PM
nilbog
Hill Giant
 
Join Date: Nov 2007
Posts: 197
Default sharing exp penalties amongst group

After enabling the class/race based experience penalties, I am curious as how to share those penalties amongst the group.

Code:
//Uncomment this to enable Race and Class based XP modifiers (removed from live)
//#define USE_RACE_CLASS_XP_MODS
Works great.. and now the halfling warriors are leveling a hell of a lot faster than the troll shadowknights. But, originally, these penalties were split amongst your group, if you were grouped.

Here's the producer's letter from 1/14/01 defining how the penalties worked, and how they were changed.
http://everquest.allakhazam.com/edit...rs_letter.html

The relevant information from that link is this though:

Quote:
In regards to the sharing of the experience penalty, it was apparent in beta, before the penalty was shared, that those playing characters without an experience penalty leveled faster than those that did. It was obvious that this would occur, but it was to the extreme that a group of friends, all playing together, would become separated to the point that they could no longer group efficiently in the mid to upper-mid levels. So we chose to distribute experience in the group on the basis of the total experience of each member rather than the level, in order to keep groups together.
Here's what I see defined in source.

Code:
29 //experience modifiers based on race and class, used if USE_RACE_CLASS_XP_MODS is defined
   30 //                            hum     bar     eru     elf     hie     def     hef     dwa     tro     ogr     hal    gno     iks,    vah     frog
   31 float  race_modifiers[15] = { 100.0f, 105.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 120.0f, 115.0f, 95.0f, 100.0f, 120.0f, 100.0f, 100.0f}; // Quagmire - Guessed on iks and vah
   32 
   33 //                            war   cle    pal    ran    shd    dru    mnk    brd    rog    shm    nec    wiz    mag    enc    bst    bes
   34 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};

  327 uint32 Client::GetEXPForLevel(int16 check_level)
  328 {
  329 
  330 	int16 check_levelm1 = check_level-1;
  331 	float mod;
  332 	if (check_level < 31)
  333 		mod = 1.0;
  334 	else if (check_level < 36)
  335 		mod = 1.1;
  336 	else if (check_level < 41)
  337 		mod = 1.2;
  338 	else if (check_level < 46)
  339 		mod = 1.3;
  340 	else if (check_level < 52)
  341 		mod = 1.4;
  342 	else if (check_level < 53)
  343 		mod = 1.5;
  344 	else if (check_level < 54)
  345 		mod = 1.6;
  346 	else if (check_level < 55)
  347 		mod = 1.7;
  348 	else if (check_level < 56)
  349 		mod = 1.9;
  350 	else if (check_level < 57)
  351 		mod = 2.1;
  352 	else if (check_level < 58)
  353 		mod = 2.3;
  354 	else if (check_level < 59)
  355 		mod = 2.5;
  356 	else if (check_level < 60)
  357 		mod = 2.7;
  358 	else if (check_level < 61)
  359 		mod = 3.0;
  360 	else
  361 		mod = 3.1;
  362 
  363 	float base = (check_levelm1)*(check_levelm1)*(check_levelm1);
  364 
  365 #ifdef USE_RACE_CLASS_XP_MODS
  366 	int16 tmprace = GetBaseRace();
  367 	if (tmprace == IKSAR) // Quagmire, set these up so they read from array right
  368 		tmprace = 12;
  369 	else if (tmprace == VAHSHIR)
  370 		tmprace = 13;
  371 	else if ((tmprace == FROGLOK) || (tmprace == FROGLOK2))
  372 		tmprace = 14;
  373 	else
  374 		tmprace--;
  375 
  376 	if (tmprace >= sizeof(race_modifiers) || GetClass() < 1 || GetClass() - 1 >= PLAYER_CLASS_COUNT)
  377 		return 0xFFFFFFFF;
  378 
  379 	mod *= class_modifiers[GetClass()-1]*race_modifiers[tmprace];
  380 #else
  381 	mod *= 1000;
  382 #endif
  383 
  384 	return(uint32(base * mod));
  385 }
Anyone have any thoughts/ideas about this?
Reply With Quote
  #2  
Old 03-23-2009, 10:02 PM
Yeormom
Discordant
 
Join Date: Apr 2004
Location: 127.0.0.1
Posts: 402
Default

Penalties we're split with the group? That was mad harsh Verant!
__________________
Yeorwned
Bane of Life [Custom Classic/PvP]
Reply With Quote
  #3  
Old 03-23-2009, 10:09 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yes, I clearly remember that being one of the reasons it was so hard to get a group with my paladin and I know Iksar SKs were really hating life lol. Bad enough that we had such huge penalties to begin with, but to make it harder to get groups because they didn't want to take on our penalties just made it worse. Glad they got rid of that, but I wish it was before I had spent months leveling up my Paladin.

The defined penalties all look pretty accurate from what I recall about them at the time, but that was about 8 years ago lol. Also, don't forget to add Drakkin in there as they will need to get exp for people using SoF as well I think it would be safe to assume they would get a 100.0 mod, the same as humans since they are essentially the same in most aspects.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 03-24-2009 at 06:13 AM..
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:19 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3