Jump to content

Recommended Posts

Hey guys,

I'm working on a product and sometimes, for various reasons, I'll come across a bugged mob or a mob that cannot be reached (ex: the Volatile Mutation that is in a cage, in the Draenei starting zone). 

The WRobot Fight method seems to at least detect that there is a problem. I call Fight.StartFight(guid), the character moves to the mob, and if it's bugged, after a while, I'll get a debug message in the log stating "[Fight] Mob seem bugged". Then it stops the fight... and then my product tries to fight it again. No Blacklist message or anything.

I've looked everywhere in the forums and can't find anything about it. I've seen a few logs where after this message, the mob gets blacklisted, so I assume this part is handled by the WRobot default products.

So in short, when a mob is detected as bugged, is there any way to trigger a guid blacklist? Or maybe it fires an event and I missed it?

Thanks in advance.

Link to comment
https://wrobot.eu/forums/topic/13623-fight-mob-seem-bugged-what-does-it-do/
Share on other sites

I think blacklist events exist, but I don't recall if this case is covered by them. There is a blacklist of GUIDs (which in "real" wow are truly random and NOT re-used like on most p-servers) attached directly to the objectmanager iirc. It's either a list or a map that you can manually add those GUIDs to and they will never be considered in the OM, so for WRobot it's as if those mobs don't even exist. I believe I used this in my free AV plugin for blacklisting AV mobs too.

Blacklist events do exist and I checked them, but the "mob seems bugged" thing doesn't fire anything, as far as I know.

I confirm that there is a GUID blacklist in wManager, and that's what I'm using, but I need to do it dynamically. I can also confirm that Trinity does not generate GUIDs on the fly, it just extracts preset GUIDs from the database for each creature/game object instance. But I suspect not every private server uses the same GUID for each npc , especially if they run on different cores so that would be unreliable.

Then the best you can do is read log events and react to your current target when it happens. That should do the trick for now. 
Don't use the regular blacklist either (wManager.wManagerSetting.AddBlackList - this isn't realiable), it has to be the property directly on the ObjectManager class as seen here.

I realize log events won't help much with identifying the mob correctly, but hopefully this will do the trick as your bot is still targeting the mob, so that you can blacklist it and then stop the fight manually afterwards.

Just Theory Crafting but you may want to see if the lua function UnitCanAttack returns a value on the target, if it shows the target can not attack, you could use OnInteract or on FightsStart event to run a blacklist mob.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...