Many of us have scripted around this issue with little jobbies like this:
Code: Select all
var dir := RandomInt( 8 ); npc.facing := dir; Move(dir);
So what I propose is to separate "Movement" (except in the previously mentioned Frozen and Paralyzed states) into two functionalities: Face( ) and Move( ). Face( ) will only ever adjust the NPCs facing attribute (exactly like altering npc.facing directly). Move( ) would cause the NPC to change location, regardless of its previous facing direction. In the above example, Move( N ) would cause the NPC to walk one space north, adjusting his facing in the process, even though he was facing NW before.
The other devs will be giving me feedback on the issue, and letting me know any technical reasons for or against the change that I may be unaware of, but I'd also like you, the users, to provide feedback as well. So please take a second, cast a vote, and leave a comment or question if you are so inclined.