Christian Walther wrote:A note that may or may not be relevant: Is this new ignore function the only use of disabling drawing of an avatar? If not, and there is another feature that disables drawing of an avatar, I could now subvert that by ignoring and unignoring the player. What about CCR invisibility, does that work differently?
Tsar Hoikas wrote:The ignore function is the only way that I know of to disable the drawing of an avatar, unless you expose the python API through the console or run some custom code. The CCR invisibility uses a custom plMessage, and I'm not even sure if it will make the player invisible anymore. There are some claims that Cyan broke it after the "NotABeast" incident. I opted to not add another creatable as I felt this would decrease the chances of the changes getting merged back to Cyan.
You know what? It occurs to me I was wrong in taking your (technically correct) answer as confirmation that there is no problem.
There
are in fact two independent reasons for disabling drawing of an avatar. We just added them. One is ignoring that player, the other is being ignored by that player when they have /shun on.
Let’s suppose that player X ignores me and has /shun on, so I can’t see them when they are in an age with me. Now I do
/ignore X,
/unignore X. Guess what happens? X becomes visible to me, I have subverted their /shun.
I can try to come up with a fix for that over the weekend, unless you or someone else who is already in their christmas break beats me to it. The two reasons for invisibility must be tracked separately and drawing only re-enabled when both are gone. The question is whether to do that on the xKI.py side or on the C++ side (as it is already done for avatar physics).