[Next Message in Time] | [Previous Message in Time] | [Next Message in Topic] | [Previous Message in Topic]

Message ID: 11595
Date: Thu Dec 9 18:48:56 GMT 1999
Author: Ryan Honeyman
Subject: Pixie/Lullaby theory (long)


> The time stamps clearly showed that mobs that were nodded were able to
> attack immediately, despite being nodded, 20% of the time. This was on mobs
> 18+ levels below the bard level. The resist rate is what one would expect,
> about 5%. Hopefully GZ will actually look into this. I sent him the log
> file as well.

Good work Kit. I also experimented with Pixie Strike last night
in the Arena on myself after I died.

I couldn't find any pattern to when the song would and would not work,
but most of the time this is what happened (based on the messages
I recall, forget the exact wording).

You begin to send forth music. (0 sec) (-13 MR)
You are stunned. (0 sec)
Your song ends. (0 sec)
Your song ends. (0 sec)
You are unstunned. (6 sec)
You are no longer stunned. (8 sec)

And again:

You begin to send forth music. (0 sec) (-13 MR)
You are no longer stunned. (8 sec)

And again:

You being to send forth music (0 sec) (-13 MR)
You are no longer stunned. (8 sec)

This time I let the icon fade away first:

You being to send forth music (0 sec) (-13 MR)
You are no longer stunned. (8 sec)

Then I let it fade again:

You begin to send forth music. (0 sec) (-13 MR)
You are stunned. (0 sec)
Your song ends. (0 sec)
Your song ends. (0 sec)
You are unstunned. (6 sec)
You are no longer stunned. (8 sec)

It's really weird. I cannot explain the circumstances when I
actually take the song hit, but dont take the stun with it.
The song does always drop MR when not resisted, it just doesn't
always send the stun component in. Also I wish Verant would
change the song fade message to: You stop sending forth music
instead of You are no longer stunned. Because it's simply not
the case. It's purely text message, and does not indicate anything
other than the fact that the song effects are done. You can break
the stun earlier than the full duration and often do.

Since Pixie and Lullaby are so closely tied together in their
effective impact (stuns a creature) - I am willing to bet there
was an indirect change a month or so ago which is propagating
false signals to the objects stun code. (As it stands now,
both in PvP, against oneself, and against NPCs the effect is
universal - song skill check rolls success, yet the stun is
not accepted by the object)

Since Verant was looking for LPmud coders, I'm guessing that
a lot of their structure is built up upon that model. I coded
on an LPmud for 2 years, both object and area design. And even
some of the base models, like player and monster.

This may be just a wild guessing (read: warning techie lingo coming)

But when you target someone for Pixie Strike. I would imagine you
are picking up the object (player or npc) at that time. When you
begin to sing the song, the server does its basic checking. Are
you in range of the target coords? If so, is this a valid target?
And did the target save vs. your song? At that point, I'm guessing
several things can happen, but most likely:

The server sends you info back saying: Target didnt resist. To
which your client finds the appropriate message to display from
your spell data file. And then the server processes the target
in order to make the effect happen. In our case, our target
must have some variable in the object class for being
stunned. And the attack and movement methods in the object
are setup such that [ if (stunned) return; ] Basically, if
I (the object) am stunned, then don't perform this action.
Then internally the object has a timer on the stun, which
it counts down periodically.

If you try this on yourself, clearly the server is not correctly
giving you the stun 'command' whatever it may be. I first thought,
maybe the server is in fact telling the object it is stunned
but expiring it so quickly that nothing happens. But wouldn't
you see: You are stunned. You are unstunned. at the same
time? I would think so. Or maybe telling an object to stun
for 0 seconds is just skipped since a 0 second stun is obsolete.
That could be, then no messages would display. But that's if
the coded it in said way.

target->stun(0); // send target stun for 0 seconds.

------------------------------

private int stunned;

void function stun(int duration)
{
if (stunned) return; // already stunned, skip.
if (!duration) return; // no duration?, skip.

stunned = duration;
}

Errr, damn hehe... I've got _real_ work to do =)
Sorry for the massive brain dump.

Harmonic.