EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Spell Support (https://www.eqemulator.org/forums/forumdisplay.php?f=664)
-   -   Entire spell list stuck on cool down after any spell failure. (https://www.eqemulator.org/forums/showthread.php?t=41725)

Bogreaper 01-23-2018 07:12 AM

Entire spell list stuck on cool down after any spell failure.
 
Good Morning.

We are experiencing an issue where, any time there is a spell failure, the entire spell bar goes on cool down (shaded out and unusable) for an extremely long time (over 2 minutes) any time there is a spell failure. Examples of these failures are, target moves out of sight, target goes out of range, target resists the spell, etc.

One trick we have found to un-freeze/lock the spell list is to use a clicky to cast a spell, this works maybe 80% of the time.

My un-educated guess is that a variable is not getting reset, maybe a function is not being called when the time for cool down is up?

Has anyone seen this issue before, or know of a way to fix it or where to look?

The closest thing I have found to it on other servers is a fizzle at extremely low levels, but at least that spell list cool down does not go on for the length of time this does.

Thanks.

ps. this is a non mq2 server so we can rule that part out of the problem.

image 01-23-2018 07:28 AM

It means there are areas in the code that need to call either InterruptSpell or CastToClient()->SendSpellBarEnable(spell_id);

not really something you can fix without C++ experience.

One example this can happen and I don't think eqemu base has the code to fix it: player 1 starts casting a spell on player 2, player 2 zones out before player 1's spell completes. This can lock up the spell bar.


I had put a fix below this line:
https://github.com/EQEmu/Server/blob...ells.cpp#L1048

Code:

                if ( IsDetrimentalSpell(spell_id) )
                {
                        if ( spell_target == NULL && target_id > 0 && target_id != GetID() )
                        {
                                mlog(SPELLS__CASTING_ERR, "Lost target for spell %i", spell_id);
                                Message_StringID(13,TARGET_NOT_FOUND);
                                InterruptSpell();
                                return;
                        }
                }


Bogreaper 01-23-2018 07:47 AM

Thanks I will try that and let you know.


All times are GMT -4. The time now is 12:27 PM.

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