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)

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 03-16-2009, 12:37 PM
nilbog
Hill Giant
 
Join Date: Nov 2007
Posts: 198
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
 


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 09:40 AM.


 

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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3