This is aimed to get rid of the extra 'Your song ends.' messages as well as the double messages for things like Sense The Dead.
Code:
--- c:\projects\eqemu svn\EQEmuServer\zone\spells.cpp Wed Oct 7 10:38:39 2009
+++ c:\projects\eqemu work 20091007\zone\spells.cpp Mon Oct 12 19:49:11 2009
@@ -672,3 +672,3 @@
// clients need some packets
- if (IsClient())
+ if (IsClient() && message != SONG_ENDS)
{
@@ -2932,3 +2932,3 @@
{
- if(spelltar->IsClient()) // send to target
+ if(spelltar != this && spelltar->IsClient()) // send to target
spelltar->CastToClient()->QueuePacket(action_packet);
@@ -4319,3 +4319,3 @@
{
- if (IsClient() && (bardsong || IsBardSong(casting_spell_id)))
+ /*if (IsClient() && (bardsong || IsBardSong(casting_spell_id)))
{
@@ -4333,3 +4333,3 @@
delete outapp;
- }
+ } /**/
bardsong = 0;
The first change removes two extra song ends messages. The second change removes the double messages from spells like Sense The Dead. The last two changes comment out the entire out-going packet that is created in _StopSong, the only thing it did was to create another song ends message, as far as my testing could determine.
I've tested these changes against a Titanium client on a private server. Songs were stopped and faded normally. Interrupting the casting of a song also worked fine. #melody functioned as well as ever.
If this breaks anything it wasn't obvious during a couple of hours of running around and killing things with various classes.