Thoughts on Minor Illusion??
So I have found that minor illusion often immediately fails. There are a few cases:
1) The client won't let you change at a location. In this case I get a message from the client saying "You are Unable to change form here". I am ok with that, but I see no message coming to the server when this happens. The buff stays up, but I stay myself - acceptable.
2) The client allows it. I change momentarily to an object and then the client sends OP_Buff to us. We immediately Fade the buff. I have looked at all the data in that packet, and I don't see anything in there that reliably tells us what to do. Where else does the client send OP_BUFF? It is not sent when I click off a buff, or when a buff runs out of time, or when I cast other buffs.
I added an error log to see when this OP_Buff gets sent. Right now, I only see it when Minor Illusion succeeds and then we tear it down.
I added a check inside client_packet.cpp in Handle_OP_Buff:
if (spid == 287)
return;
This makes minor illusion work properly, but I dont know what the client is trying to tell us.
It almost feels like the client has their logic reversed. We get this message when they say it works, and we do NOT get this message when they say it fails.
btw: fadebuff field seems random. I can't see any correlation.
|