Beastlord Pets

A forum for reporting bugs NOT related to custom plugins.

Moderator: MacroQuest Developers

SlimFastForYou
a hill giant
a hill giant
Posts: 174
Joined: Sat Jan 24, 2004 1:38 am

Beastlord Pets

Post by SlimFastForYou » Sat Sep 18, 2004 3:36 am

The Beastlord pet seems to be considered an NPC, not pet.

Eg:
/target pet ${Me} <- No spawns
/target npc ${Me} <- Targets the pet

I also have NPCs with their level and class underneath the name (custom INI setting), and pets with the masters name under it. My beastlord pet has the level/class under the name (like all other npcs), yet shaman pets, wizard familiars, and all other class pets show as pets AFAIK.

Anyone else able to confirm this problem?

Spanky_Monkey
a ghoul
a ghoul
Posts: 103
Joined: Wed Feb 19, 2003 3:10 pm

Not that exact problem:

Post by Spanky_Monkey » Sat Sep 18, 2004 9:33 am

but one of my methods for heal target is the following:

/targ npc
/assist
/call checktarget


/targ npc never used to target a warder, now it does... dirty BL's.

I dunno yo but this joint is broked!

Just what I noticed, if you want debug I'll be glad to provide it.

Spanky_Monkey
a ghoul
a ghoul
Posts: 103
Joined: Wed Feb 19, 2003 3:10 pm

Not that exact problem:

Post by Spanky_Monkey » Sat Sep 18, 2004 9:33 am

damn dirty apes and their dubble postz

Anubis
orc pawn
orc pawn
Posts: 12
Joined: Thu Apr 29, 2004 2:45 pm

Post by Anubis » Sun Sep 19, 2004 3:50 am

I am seeing this problem as well with the 9/17 zip

User avatar
fearless
Not a Psychic
Posts: 2684
Joined: Wed Mar 10, 2004 3:52 pm

Post by fearless » Sun Sep 19, 2004 3:44 pm

I am seeing this behavior with Advbot where it is now trying to debuff mage / shammie pets, and the aa pets as well.
Reading . . . it's not just for me.

[url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url]
[quote="Ccomp5950"]Fearless showed me the light, you too shall learn.[/quote]

Amadeus
The Maestro
The Maestro
Posts: 2036
Joined: Sat Jun 29, 2002 3:51 pm

Post by Amadeus » Sun Sep 19, 2004 4:52 pm

Remind me about this bug in a few weeks when I'm done xping.

SlimFastForYou
a hill giant
a hill giant
Posts: 174
Joined: Sat Jan 24, 2004 1:38 am

Post by SlimFastForYou » Sun Sep 19, 2004 5:48 pm

LOL Ama! Well if your using a macro wait until some high level beastlord comes by and ruins your XP session ;) (my macro had a level check workaround to keep the group's beastlord from interfering but some lvl 65 bst ran by last night).

I'll try to find the problem (I will likely fail because I'm n00bish). If I find a workaround I'll post it.

SlimFastForYou
a hill giant
a hill giant
Posts: 174
Joined: Sat Jan 24, 2004 1:38 am

Post by SlimFastForYou » Sun Sep 19, 2004 5:56 pm

Hm well I might have found the problem (have to test it though). I suspect that since the Body Type of beastlord pets (at least my Vah Shir beastlord) is Animal (ID 21)...

From the current source (edit 9/17/04 source, just saw a new zip released) (MQ2Inlines.h):

Code: Select all

	case SPAWN_NPC:
		if (strstr(pSpawn->Name,"s_Mount"))
		{
			return MOUNT;
		}
		switch(pSpawn->BodyType)
		{
		case 3:
			return NPC;
		case 11:
			return UNTARGETABLE;
		case 21:
			return NPC; 
		case 23:
			return NPC;
		case 33:
			return CHEST;
		case 34:
			return NPC;
		case 65:
			return TRAP;
		case 66:
			return TIMER;
		case 67:
			return TRIGGER;
		default:
			if (pSpawn->MasterID)
				return PET;
			else
				return NPC;
		}
		return NPC;
Again, if I do a /echo ${NearestSpawn[warder].Body.ID}, I get 21.

MQ2Inlines.h from the 8/20 zip:

Code: Select all

	case SPAWN_NPC:
		if (strstr(pSpawn->Name,"s_Mount"))
		{
			return MOUNT;
		}
		switch(pSpawn->BodyType)
		{
		case 11:
			return UNTARGETABLE;
		case 33:
			return CHEST;
		case 65:
			return TRAP;
		case 66:
			return TIMER;
		case 67:
			return TRIGGER;
		default:
			if (pSpawn->MasterID)
				return PET;
			else
				return NPC;
		}
		return NPC;
I will try to change case 21 to:

Code: Select all

		case 21:
			if (pSpawn->MasterID)
				return PET;
			return NPC; 
and I'll let you all know how that works out.

Edit: New zip (9/19) was released hours ago (im working with 9/17); i downloaded it and looked at the changelog. It doesn't mention BL pets, and the code I am looking at remains unchanged so I'm ASSUMING the same problem is in the 9/19 zip and going to test this code change now.

SlimFastForYou
a hill giant
a hill giant
Posts: 174
Joined: Sat Jan 24, 2004 1:38 am

Post by SlimFastForYou » Sun Sep 19, 2004 6:21 pm

Woot! That did it! My first MQ bug fix!!!

So when do I get the 5 star developer forum tag? ;p

User avatar
Night Hawk
a grimling bloodguard
a grimling bloodguard
Posts: 590
Joined: Fri Aug 13, 2004 4:56 pm

Post by Night Hawk » Sun Sep 19, 2004 9:55 pm

I use /target ${Me.Pet} in my macros, and hasn't failed me yet.

Amadeus
The Maestro
The Maestro
Posts: 2036
Joined: Sat Jun 29, 2002 3:51 pm

Post by Amadeus » Sun Sep 19, 2004 10:10 pm

Yep..that should fix it. That whole change was a part of me trying to figure out what all the shit was messed up with mq2map and was trying to take into account all the unknown body types ...yadda yadda.

Long story short, I didn't take the whole pet thing into account. I havn't tested it ...but try this:

Code: Select all

static inline eSpawnType GetSpawnType(PSPAWNINFO pSpawn)
{
	if ((pSpawn->MasterID) && (pSpawn->Type == SPAWN_NPC) )
		return PET;

	switch(pSpawn->Type)
	{
	case SPAWN_PLAYER:
		{
			return PC;
		}
	case SPAWN_NPC:
		if (strstr(pSpawn->Name,"s_Mount"))
		{
			return MOUNT;
		}
		switch(pSpawn->BodyType)
		{
		case 3:
			return NPC;
		case 11:
			return UNTARGETABLE;
		case 21:
			return NPC; 
		case 23:
			return NPC;
		case 33:
			return CHEST;
		case 34:
			return NPC;
		case 65:
			return TRAP;
		case 66:
			return TIMER;
		case 67:
			return TRIGGER;
		default:
			if (pSpawn->MasterID)
				return PET;
			else
				return NPC;
		}
		return NPC;
	case SPAWN_CORPSE:
		return CORPSE;
	default:
		return ITEM;
	}
}
That solution should take care of all pets at once. Let me know if it works for you.

SlimFastForYou
a hill giant
a hill giant
Posts: 174
Joined: Sat Jan 24, 2004 1:38 am

Post by SlimFastForYou » Sun Sep 19, 2004 10:11 pm

Try a /target npc. The beastlord warder will get targetted. Try /target pet. It will target the nearest non-beastlord pet in the zone. Likely to foul up any macro that acquires a target (like the one I just posted that you commented on ;) ).