PDA

View Full Version : In-zone evac line seems broken / un-livelike


Whuppee
01-04-2007, 07:46 AM
I'd like to note from the start that I am presently running a local server. It is entirely possible that these issues do not exist on the public emu servers.


If so.. then I suppose that relegates this post to the "help me with my LAN server" type. And finally, though my consent in the matter would be quite immaterial... I'm not wanting to be a pain--if this post constitutes clutter (read: lan server support / shouldn't be posted here), please do feel free to delete it =P ... but please, then, inform me in some way or another that I either shouldn't post such topics or tell me where I should post them.

In my defense, I'd like to keep a private server running purely as a means of testing quest fixes, and similar. I certainly could make myself an account for the public emu servers.. but I'd then need to level a character to 18 (to test this line). While far from a monumental task.. I'm hoping that it's not that inappropriate for me to ask this as I am. This is important to me because it relates to my ability to fix/test things in general. For example: suppose I try to fix the Iksar Shaman Cudgel Quest? .. should I start levelling a legit shaman rather than asking about it? (and so on...) To me, this approach seems more productive.

_________________
And finally...

To address the un-livelike nature of these spells, first... they don't zone you. The succor/egress spells simply warp you to a set of coordinates within your present zone.

This in-and-of itself wouldn't be so much of a problem if they still retained their primary function.

Namely, they don't wipe agro.

While this doesn't make them useless, it certainly takes away a good deal of their potential.

Take Sebilis, for instance. It really sucks when you evac into a dead-end hallway (the zone-in)... and know a train of mobs is running for you. Sure you can take a few seconds to mem gate and use it to get out of there, but that's really not the point.


I don't know that it would be within my ability to fix, but I'd be quite happy to try to find a fix for this myself. It'd be nice to have some idea of where to start looking, though...

Thanks in advance for your time in reading this.

John Adams
01-05-2007, 06:11 AM
That's one impressive disclaimer. :) Welcome, btw.

I can verify, Succor (1567) and Lesser Succor (2183) do warp you (sometimes into solid walls thanks to bad coords), and do not wipe aggro or zone you (which in itself wipes aggro). Might take a look through spell_effects.cpp, search for "succor" around line 261:
case SE_Succor:
{
float x, y, z, heading;
const char *target_zone;

x = spell.base[1];
y = spell.base[0];
z = spell.base[2];
heading = spell.base[3];

if(!strcmp(spell.teleport_zone, "same"))
{
target_zone = 0;
}
else
{
target_zone = spell.teleport_zone;
}
If you can read the code, that might show you where the zoning does not occur and why. My own disclaimer, I know little about C++ right now, except how to follow flow. I'm more a database guy, but this is where I'd start investigating. Download the source, and simply Search *.cpp, *.h files for key words. Barbaric, I know, but it works for me. :)

Whuppee
01-05-2007, 05:59 PM
Thanks :smile:


And.. that's definately the type of starting point I was looking for. Finally starting to fgrep my way through the files (as per your mention)... it's definately a lot less painful than trying to find my way through all those by hand. Thanks for the suggestion =P


I can see why it's not zoning the player / not wiping agro.

Unfortunately, given my current lack of knowledge as to how all of these files are interlinked, I'm not terribly confident that my fixing this won't break something somewhere else.

It shouldn't take much effort at all to add a line to the SE_Succor case in the spell_effects.cpp that'd remove the caster (and hopefully their group) from the agro list. They'd then be in-zone warped... without actually zoning. While un-livelike, I can't say I'd really want to complain about that. I always hated having to reload the zone, anyway =P

Alternately.. the only way I've found so far that'd force the client to zone (which, as you've noted, would take care of the agro issue by itself)... would involve my modifying zoning.cpp. The way it's coded (MovePC method), zoning to the zone you're already in results in nothing more than a coordinate move. As in, no rezoning.. which is the problem we've been having.

I don't believe that it would take much effort to work around that... but it would be a workaround. A rather crude / ugly one. Style aside, I dislike the idea of fixing this in a way that might blow up in our faces later.


I'll attempt a few variations of the above on my local server.. and see if they, at least, manage to fix this problem. Chances are it might take a much more comprehensive test to discover if my changes have messed up anything else, though. Anyone care to volunteer for that? =P

.. will keep you updated.

John Adams
01-05-2007, 09:28 PM
Post your unified diff here, and I am sure some of us will gladly test it out and let you know if something broke. Don't be shy. :)

KLS
01-07-2007, 02:39 PM
I made it so it wipes your aggro when you cast a succor spell now, you still wont zone though... I doubt anyone will complain about that really though.