EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Spell Support (https://www.eqemulator.org/forums/forumdisplay.php?f=664)
-   -   Calm/Harmony/Rest The Dead (https://www.eqemulator.org/forums/showthread.php?t=23454)

inkubus 08-10-2007 05:32 PM

Calm/Harmony/Rest The Dead
 
Any ideas why this either seems to aggro the mob or say 'Your spell did not take hold'? This is on a level 1 skeleton by a level 70 necro.

Sakrateri 08-10-2007 06:20 PM

If it wont take hold then it will aggro the mob,why it wont take hold I dont know , why a level 70 necro would need to harmony a level 1 skelli , I have no idea ..lol.........probably a broke spell.

Zengez 08-12-2007 04:39 PM

LAst I knew harmony class spells all had this problem, they just don't work...

I thought windcatcher (Think it was him, if not sorry whomever I just blatantly scrubbed!) Came up with a temporary haxxors patch, but I believe that was also killed due to a restructuring on another update...

So the long and short of it is, I don't think any of the harmony class spells are working because the harmony effect itself is broke.... Or I could be wrong ;)

inkubus 08-13-2007 07:32 PM

Looking at the beneficial casting code (forgive me if i'm wrong) it looks like nobody would be able to land this 'buff' on an npc unless they're a GM.

From testing i am experiencing the following:

GM:
Harmony - Lands, no aggro. When cast a second time, you can see the buff wear off.
Calm - Aggros 100% of the time.

Normal Player:
Harmony - Does not land. Reports 'Your spell did not take hold'. No aggro.
Calm - Aggros 100% of the time.

I can't seem to find the code for calm. So I'll put that on the back burner for now. But looking at the beneficial code in spells.cpp (line 2228) I can see that there doesn't seem to be a check for harmony beneficial buff spells on NPCs. Now i'm not at home right now so I can't check this but I am guessing we need to add a check in here to fix this.

Quote:

if(!(IsClient() && CastToClient()->GetGM())) // GMs can cast on anything
{
// Beneficial spells check
if(IsBeneficialSpell(spell_id))
{
if
(
IsClient() && //let NPCs do beneficial spells on anybody if they want, should be the job of the AI, not the spell code to prevent this from going wrong
spelltar != this &&
(
!IsBeneficialAllowed(spelltar) ||
(
IsGroupOnlySpell(spell_id) &&
!(
(entity_list.GetGroupByMob(this) &&
entity_list.GetGroupByMob(this)->IsGroupMember(spelltar)) ||
(spelltar == GetPet()) //should be able to cast grp spells on self and pet despite grped status.
)
)
)
)
{
mlog(SPELLS__CASTING_ERR, "Beneficial spell %d can't take hold %s -> %s, IBA? %d", spell_id, GetName(), spelltar->GetName(), IsBeneficialAllowed(spelltar));
Message_StringID(MT_Shout, SPELL_NO_HOLD);
safe_delete(action_packet);
return false;
}
}
else if ( !IsAttackAllowed(spelltar) ) // Detrimental spells - PVP check
{
mlog(SPELLS__CASTING_ERR, "Detrimental spell %d can't take hold %s -> %s", spell_id, GetName(), spelltar->GetName());
spelltar->Message_StringID(MT_Shout, YOU_ARE_PROTECTED, GetCleanName());
safe_delete(action_packet);
return false;
}
}
Anyone got any ideas on this?

Then I am assuming once this is done we make changes to ApplySpellBonuses in bonuses.cpp to add an additional check for SE_Calm?

vales 08-14-2007 12:00 PM

There was a fix for this a long while back. I guess it made it's way back in somehow. IIRC, all of the first spell ranks didn't work. For example, Lull I believe, for Enchanters. However, the next rank spell which was Soothe, worked with no issue.

If you take a look at the changelog on the revision it was fixed, it would probably help a bit more. Sorry, I don't remember the exact revision.

inkubus 08-14-2007 09:32 PM

Working on a temporary fix in this thread. Please see here for further information:

http://www.eqemulator.net/forums/sho...001#post137001

Thanks

Bolly


All times are GMT -4. The time now is 06:08 PM.

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