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

Development::Feature Requests Post suggestions/feature requests here.

Reply
 
Thread Tools Display Modes
  #1  
Old 10-27-2010, 06:54 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

If I was a custom server starting fresh with the knowledge I know today, I would completely change the exp code. Why?

1) The exp code only gives support up to level 90 without rollover past deaths.
2) The exp code factors in NPC con too much.
3) It's based on exp count, not number of kills.
4) 2 and 3.

Why number of kills? It's pretty simple:

1) smaller numbers
2) less exponential growth to leave room for valid integers
3) it's not a float
4) easily tracked

You can do this one of two ways:
1) Extended profile
2) Gut the exp code and use perl

This leaves us with these results:
1) Level support up to 65535 (minus spells being scribeable below 250, but that can be fixed on the server)
2) Completely custom exp formula


I suggest 1. Good luck.
Reply With Quote
  #2  
Old 10-27-2010, 03:14 PM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 539
Default

Quote:
Not to mention my one extra table, allows fine tuning of XP curve on the fly
!=

Quote:
not unless you starting off a fresh a server with no chars
If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else).
Reply With Quote
  #3  
Old 10-27-2010, 07:13 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

Quote:
Originally Posted by Caryatis View Post
If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else).
Even if you are working on an existing server...

changing it so when you log in, checking the level, setting the exp to getexpforlevel(level) then storing a boolean so that you know you logged in since you updated the server (in the extended player profile (m_epp)) *then* calculating experience afterwards would be the ideal goal. It would reset some progress into the level that they had, though, but you could tweak the entire exp formula this way.
Reply With Quote
  #4  
Old 10-27-2010, 07:28 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

To further back my idea,

Code:
Index: common/extprofile.h
===================================================================
--- common/extprofile.h	(revision 1709)
+++ common/extprofile.h	(working copy)
@@ -46,6 +46,7 @@
 	
 	uint32				aa_effects;
 	uint32				perAA;		//% of exp going to AAs
+	bool				expchange;
 };
 
 #pragma pack()
Index: zone/client_packet.cpp
===================================================================
--- zone/client_packet.cpp	(revision 1709)
+++ zone/client_packet.cpp	(working copy)
@@ -8586,6 +8586,13 @@
 	}
 
 
+	if(!m_epp.expchange)
+	{
+	SetEXP(GetEXPForLevel(GetLevel()), GetAAXP(), false);
+	m_epp.expchange = true;
+	}
+
+
 	////////////////////////////////////////////////////////////
 	// Task Packets
 	LoadClientTaskState();
Change EXP Formula, Add in code, ????, profit!
Reply With Quote
  #5  
Old 10-28-2010, 03:54 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default

If you change the modifiers in the exp code you will need a way to let the client/server know something changed or you will encounter one of the problems I did where a newly created character kills a level 1 npc and gains 100+ levels or a level 85 character dies then loses 7 levels instead of 10-15% of the current level.

I had been wanting to do something similar to what Secrets proposed but I simply do not have the needed skill to implement it.
Reply With Quote
  #6  
Old 10-29-2010, 08:18 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

Quote:
Originally Posted by blackdragonsdg View Post
If you change the modifiers in the exp code you will need a way to let the client/server know something changed or you will encounter one of the problems I did where a newly created character kills a level 1 npc and gains 100+ levels or a level 85 character dies then loses 7 levels instead of 10-15% of the current level.

I had been wanting to do something similar to what Secrets proposed but I simply do not have the needed skill to implement it.
The server is the only thing that needs to know the full exp data; the client is quite stupid and only displays a number between 1-100. I don't even think the rezexp stored on the corpse is used, though I could be wrong.


Quote:
yeah thats why I am trying hard to get KLS attention to make this fix official
PEQ doesn't have this issue, therefore it'll never be 'official' until PEQ runs into this issue. Simple fix would be changing the data value to a float for now. If that's too much to ask, well, can't help you really.

However, I can tell you this: SVN checkout + svn update after modifications using tortoisesvn in windows is pretty easy. If you are using another SVN, use tortoisesvn's export function and check out the eqemu revision you stopped on. After that, paste your files into the eqemu folder you checked out. SVN update, resolve the conflicts (as long as you didn't change any major systems, this shouldn't be an issue. Or systems that get changed rarely IE exp.) and compile. Problem solved.
Reply With Quote
  #7  
Old 10-29-2010, 06:39 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default

I think I have figured out why I was getting massive exp loss on death. I always thought exp loss on death was just a varied percentage being taken away from the players current exp. I assumed that was the case which is a noob mistake. I should know better than to assume anything like that.

Yesterday I started looking for the code that controls death and exp loss and well I found it. There is a large modifier in that formula just as there was in exp gain. So I decreased the modifier by the same factor I used in the exp formula. Then I repeatedly killed a level 85 character as a test, the character only lost about 10% exp on each death instead of 7 levels per. Gonna test this some more but it is looking pretty good so far. I also changed the code for death by sacrifice that necros love using.

Are there any other death tricks in the code that I should look for?
Reply With Quote
Reply

Thread Tools
Display Modes

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