EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Bug Reports (https://www.eqemulator.org/forums/forumdisplay.php?f=591)
-   -   Lay on Hands and Harm Touch problem & fix (https://www.eqemulator.org/forums/showthread.php?t=21583)

number6 09-22-2006 05:25 AM

Lay on Hands and Harm Touch problem & fix
 
Hi all,

I've been running a little server at home for just over a week now for a few friends from the old EQ days so we can revisit some old haunts...

We noticed an issue with both Paladin "Lay On Hands" and SK "Harm Touch". Both these abilities have very long reuse timers, but when you zone, the ability button pops back up. If you then hit it, the client becomes locked, presumably because it is waiting for an event from the server. But the server simply sends an "Ability recovery time not yet met" message. From that point you can't issue commands, look at inventory, and so on. Zoning will fix it. This is all with the Titanium client.

This is probably a terrible hack but in client_packet.cpp I added a "InterruptSpell(castspell->spell_id);" after both the message outputs and it has at least meant I can carry on doing stuff now after hitting the button. Clearly the client needs a better way to keep in touch with the state of the ability after zoning though. Anyway I hope this might be of some little help.

Code:

--- client_packet.cpp  2006-09-22 15:51:57.000000000 +0100
***************
*** 2921,2926 ****
--- 2921,2928 ----
                        castspell->spell_id == SPELL_LAY_ON_HANDS && GetClass() == PALADIN) {
                        if(!p_timers.Expired(&database, pTimerLayHands)) {
                                Message(13,"Ability recovery time not yet met.");
+                              InterruptSpell(castspell->spell_id);
+                              // above number6 hack
                                return;
                        }
                        spell_to_cast = SPELL_LAY_ON_HANDS;
***************
*** 2935,2940 ****
--- 2937,2944 ----

                        if(!p_timers.Expired(&database, pTimerHarmTouch)) {
                                Message(13,"Ability recovery time not yet met.");
+                              InterruptSpell(castspell->spell_id);
+                              // above number6 hack
                                return;
                        }

***************

Be seeing you.

fathernitwit 10-02-2006 02:57 PM

looks like a reasonable thing to do if you ask me. Will put it in.

calasoren 12-31-2008 08:13 PM

im having this issue also and was looking for a fix but this fix is for the source files correct? how would i implement this into my current server i have it running pretty much perfect now :) need to change some mob agro and so far the ht, lay hands issue.

Loccochris 01-01-2009 05:49 AM

To get the fix on your server you could do one of 2 things. First if you didn't code any special stuff for your server then you could just download the newest server source and run that. (this will not affect your database in any way or any custom spawns/levels and what not).

Pretty sure they have a SVN system up so you can actually just update the specific fix to your server without having to download the entire new source.

Other way is to just go in change the code in file above and recompile the source for your new server source executable.

Again it all depends on what you are comfortable with.


All times are GMT -4. The time now is 10:15 PM.

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