Go Back   EQEmulator Home > EQEmulator Forums > Support > Spell Support

Spell Support Broken Spells? Want them Fixed? Request it here.

Reply
 
Thread Tools Display Modes
  #1  
Old 01-24-2016, 12:01 AM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default Charm Spell Issues

Another charm thread.

Every build of new version that is released over the last few years has always caused the same charm issue for me and I can never figure out how to fix it nor find a fix on the forums so its time for me to ask.

When you have a npc charmed you can click the get lost button to break it.
When you die with a npc charmed your charm stays there after dead and continues to fight for you instead of reverting back to a NPC.

Anybody know a fix? Sounds like a coding thing to me. I have gone over and over it in the spell file.
__________________
Reply With Quote
  #2  
Old 01-24-2016, 12:16 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I haven't played with charm spells much - and I don't know what live behavior should be...


But, You could take a look here for the get lost issue: https://github.com/EQEmu/Server/blob...cket.cpp#L9957

And here for the death issue: https://github.com/EQEmu/Server/blob...tack.cpp#L1367


(Remark out the first one..)

(Add pet pointer validity and pet-type checks, then the spell fade call from the 'get lost' code..)
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #3  
Old 01-24-2016, 01:08 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

Cool thanks Uleat.

Live like charm worked as followed :
Could not break charm with get lost button
Charm pets reverted back to NPC upon owner death
Charm was a duration (currently works)
Charm was only broke by invis, hide, or duration timer (I believe those all work)

Unfortunately this is outta my league but I will keep going back to it and hopefully be able to fix it. I assumed it was live like but my build was always broke or I forgot something in .sql update.
__________________
Reply With Quote
  #4  
Old 01-24-2016, 02:45 PM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,164
Default

What client?
Reply With Quote
  #5  
Old 01-24-2016, 10:09 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

I use titanium client for my server.

EDIT : I would love to use UF but I want classic HPH and you cant get that unless titanium :/
__________________
Reply With Quote
  #6  
Old 01-30-2016, 05:55 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

Yup, no idea. Way outta my league, I am not a coder. I can do perl scripts by being self taught here and researching examples. Creating code in c++ is another story.

Maybe one day it will be more livelike by default in the emu. I guess ill have to wait till then unless I find a coder to help on my server.

Thanks for the guidance guys!!!
__________________
Reply With Quote
  #7  
Old 01-30-2016, 07:48 PM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,164
Default

I fixed one of the issues, but I need to clean up it up since there are some useless flags now that can be removed so I didn't say I fixed the issue :P
Reply With Quote
  #8  
Old 02-01-2016, 07:06 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

I'm very interested if you get it complete Demonstar
__________________
Reply With Quote
  #9  
Old 03-16-2016, 07:10 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

Charm seems to be working in the latest build of march 2016, but previous build I had this was still broken. For anybody with older builds this is how I fixed charm

client_packet.cpp
Code:
	case PET_GETLOST: {
		if (mypet->Charmed())
			break;
		if (mypet->GetPetType() == petCharmed || !mypet->IsNPC()) {
			// eqlive ignores this command 
			// we could just remove the charm 
			// and continue 
			// mypet->BuffFadeByEffect(SE_Charm);
			break;
		}
		else {
			SetPet(nullptr);
		}

attack.cpp
Code:
	/*
		#2: figure out things that affect the player dying and mark them dead
	*/

	InterruptSpell();
	SetPet(0);
	SetHorseId(0);
	dead = true;

	if(GetMerc()) {
		GetMerc()->Suspend();
	}

	if (GetPetType() == petCharmed) { #Added Pet break and wipe on death
		BuffFadeByEffect(SE_Charm);
		WipeHateList();
		SetTarget(nullptr);
	}
__________________
Reply With Quote
  #10  
Old 03-16-2016, 08:02 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

The only thing I got out of that was something about "petting a dead horse"
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #11  
Old 03-16-2016, 08:12 PM
Figback65
Discordant
 
Join Date: Aug 2009
Location: 2131231231
Posts: 255
Default

Quote:
Originally Posted by Uleat View Post
The only thing I got out of that was something about "petting a dead horse"

Hmmm, worked on my old build, lol.
__________________
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:10 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3