It can be stationary or programmed to wander around
Its walking animation should not interfere with the player's walking animation
Detect collisions - prevent player from walking through NPCs.
Set an onTalk callback for the NPC. Trigger it when the player faces the NPC and presses the talk button. This could be as simple as showing a single message, or as complex as opening a unique menu system instance with options that modify the player inventory (aka a shop).
NPC can currently walk through anything. We could fix this on an individual basis by setting the canCross method of every NPC, but that's a lot of redundancy. Would be better if we could set a default canCross method that is applied to all PlayerCharacters and NPCs unless overridden.
NPC can walk through PC (though not vice-versa). The map.canMove method needs to have access to the party's locations and not allow NPCs to enter squares where a PC is standing -- although PCs should always be able to walk through each other!
NPC class duplicates a lot of animation code from PlayerCharacter class. As with canCross, we really want a way to set a default walkAnimation used for all PCs and NPCs unless overidden. And then we can move some of the walk animation generator to MapSpriteMixin.
At their most basic, an NPC is just: