Originally Posted by
DarkDragon
I've explained this several times before and won't rehash the argument here in full.
Giving the script engine raw access to implementation details about how ZC is implemented deep under the hood calcifies poor decisions, bugs, and unmaintainanle spaghetti code that infests the core of the ZC logic.
The hardest, and most underrated, part of being a good developer of a long term project is knowing when to listen to what users are asking for, and when to realize that they are succumbing to short-term and ill-informed thinking, saying "no," and standing your ground. Giving people access to engine internals satisfies the users screaming "gimme gimme gimme now now now," at the price of signing ZC's death warrant.
I refuse to make that bargain.
What you say about how to implement actions is absolutely the right way to go. Instead of mucking directly with the Link class internals, scripts should have access to a restricted set of high-level actions, which are then passed on to the game engine, which tries to act on the script command as best as possible. So if a script tries to tell Link to charge, while he's already riding a raft, the game engine does something reasonable (like ignoring the charge command) rather than entering an unpredictable, inconsistent and corrupt state, which is what currently happens when scripts blindly trample willy nilly over internal variables.