EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=590)
-   -   HP regen - see-sawawing at level 1 (https://www.eqemulator.org/forums/showthread.php?t=40478)

superemu 03-19-2016 05:52 PM

HP regen - see-sawawing at level 1
 
Hello,

Another newb question. I rolled up a ranger and noticed that after I have taken some damage, while resting, my hitpoints go up then back down then up again then back down. Eventually, I get regened all the way up, but I am wondering if there is way to smooth out the hitpoint regen.

Thanks for any help you all can provide.

demonstar55 03-19-2016 05:55 PM

The client does HP regen itself as well. You can notice this behavior on live as well.

Coenxai 03-19-2016 05:58 PM

It's possible in theory but basically no

superemu 03-19-2016 06:39 PM

Quote:

Originally Posted by demonstar55 (Post 247772)
The client does HP regen itself as well. You can notice this behavior on live as well.

I don't see this happening on live.

Quote:

It's possible in theory but basically no
Drat.

Coenxai 03-19-2016 07:08 PM

While you're right that this doesn't happen on live (unless maybe under some special circumstance such as affected by spells or racial modifiers), what Demonstar said still rings true.

EQEmu simply pushes an update to hp and mana every two seconds; This becomes an issue because the client and the server fight for different values at different intervals.

I've heard of a couple people solving this problem. I've never seen it fixed personally. If you reverse engineered the client you could probably figure out when to properly push updates. And yeah, it sucks. It's the one thing I wish was fixed :)

demonstar55 03-19-2016 08:17 PM

It happens on live. Not as much as eqemu, but it does happen. There is also other issues like not every client using the same formula. Which would make the issue worse when the server disagrees with the client.

NatedogEZ 03-19-2016 08:54 PM

I noticed this a lot on live with mana regen.. its super annoying :p

Coenxai 03-19-2016 09:14 PM

Weird! I leveled to 25 and I didn't notice it. I popped on again and it's still not happening to me.

superemu 03-19-2016 10:31 PM

Quote:

Originally Posted by Coenxai (Post 247781)
Weird! I leveled to 25 and I didn't notice it. I popped on again and it's still not happening to me.

On live or on an EqEmu server?

Quote:

EQEmu simply pushes an update to hp and mana every two seconds; This becomes an issue because the client and the server fight for different values at different intervals.
That's what I figured. So, I guess what I would like to do is try to get the server to stop pushing and let the client do its thing. I don't care about slowing it down for nostalgia purposes. I'll be looking around for it when I get some time, but to save some of that time, anyone know where that code is in the server source?

Coenxai 03-20-2016 12:42 AM

On live of course? :P

As for the second question, there's really no easy way to answer. I believe it's in your best interest to simply use the marquee (someone tell me this exists and that I'm not crazy.) If I recall someone (probably Akkadius) developed a tool that displays your vitals on-screen--much like a HUD. This will be accurate as it's coming from the server.

superemu 03-20-2016 09:59 AM

Thanks so much for your help. I'll dig around in the code and see what's what. :)

Kayen 03-22-2016 11:13 AM

I have yet to be able to solve this for the innate mana/hp regen.

However, this problem can be some what serious when using damage of time spells on clients, especially large ones. The HP bounce will sometimes make you unconscious.

To resolve it on Storm Haven, I run an SQL script on the spells_new table before exporting it which sets all damage over time spells to 1 damage. This resolves the bounce issue completely, since client side will think its only doing 1 damage and server sets it correctly.

Coenxai 03-22-2016 01:51 PM

Quote:

Originally Posted by Kayen (Post 247836)
I have yet to be able to solve this for the innate mana/hp regen.

However, this problem can be some what serious when using damage of time spells on clients, especially large ones. The HP bounce will sometimes make you unconscious.

To resolve it on Storm Haven, I run an SQL script on the spells_new table before exporting it which sets all damage over time spells to 1 damage. This resolves the bounce issue completely, since client side will think its only doing 1 damage and server sets it correctly.

That's an awesome solution

N0ctrnl 03-22-2016 03:12 PM

For sure. What do you key off of or do you already have your list of spells? :)

Kayen 03-22-2016 06:01 PM

This is what I use. Its not the most elegant SQL but it works.

Code:

-- Need to run on the copied spell table prior to updating file so that NPC cast dots don't cause HP bounce on clients.

UPDATE spells_new_copy SET effect_base_value1 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid1 = 0 AND effect_base_value1 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value2 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid2 = 0 AND effect_base_value2 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;


UPDATE spells_new_copy SET effect_base_value3 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid3 = 0 AND effect_base_value3 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value4 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid4 = 0 AND effect_base_value4 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value5 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid5 = 0 AND effect_base_value5 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value6 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid6 = 0 AND effect_base_value6 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value7 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid7 = 0 AND effect_base_value7 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value8 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid8 = 0 AND effect_base_value8 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value9 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid9 = 0 AND effect_base_value9 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value10 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid10 = 0 AND effect_base_value10 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value11 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid11 = 0 AND effect_base_value11 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;

UPDATE spells_new_copy SET effect_base_value12 = -1 WHERE buffduration >= 1 AND goodEffect = 0 AND effectid12 = 0 AND effect_base_value12 < 0 AND classes1 = 255 AND classes1 = 255 AND classes2 = 255 AND classes3 = 255 AND
classes4 = 255 AND classes5 = 255 AND classes6 = 255 AND classes7 = 255 AND classes8 = 255 AND classes9 = 255 AND classes10 = 255 AND classes11 = 255 AND classes12 = 255 AND classes13 = 255 AND classes14 = 255 AND classes15 = 255
AND classes16 = 255 AND descnum <= 400000;



All times are GMT -4. The time now is 09:06 AM.

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