JS-CONTROLLER
Objects, Characters, Rooms, and Auras all have a "controller" property. This property returns the character that is "in control" of the object, character, room, or aura. For example, if a weapon spell went off on a weapon named "Flametongue" in the hands of a skeleton who was, in turn, charmed to a lich, who was, in turn, charmed to a player named Jill, the "controller" property for Flametongue would return Jill.
Basically the point of the controller property is to determine who is ultimately controlling a relevant object, character, room, or aura.
Many things are not controlled by characters. For example, most rooms will return null for the controller property. Furthermore, items lying on the ground will also return null. Characters who are not charmed will return themselves for the controller property.
You can also use the method "isControlledByPC()" to do a quick check to see if the object, character, room, or aura is controlled by a player, regardless of who the player is. This can be useful for when it's okay for a mobile to do something but not okay for a player or a mobile under the control of a player tod o something.