Quote Originally Posted by Gleeok View Post
There's a slight annoyance with classes though: Script classes cannot inherit from application classes, so for example a scripted npc with an npc property can't do 'this.X = 0', but instead '(this.)npc.X = 0', which is weird.
You can use virtual properties to work around that.
Code:
fix X
{
    get const { return npc.X; }
    set { npc.X=value; }
}
That also has the advantage that the handle can be made private in the base class, so you can't accidentally point it to another enemy.
One minor issue what that is that you can't use increment and decrement operators on virtual properties. I think it should be possible to add them, though, if you don't mind messing around with AS's code a bit. They were deliberately removed, and I forget the reason, but I think it had to do with multithreading issues that aren't relevant to ZC.