The game action stuff that is independent from ItemAction.hs (both depend on EffectAction.hs). TODO: Add an export list and document after it's rewritten according to #17.
- saveGame :: Action ()
- quitGame :: Action ()
- moveCursor :: Vector -> Int -> ActionFrame ()
- move :: Vector -> ActionFrame ()
- ifRunning :: ((Vector, Int) -> Action a) -> Action a -> Action a
- guessBump :: Ops TileKind -> Feature -> Id TileKind -> Action ()
- bumpTile :: Point -> Feature -> Action ()
- triggerTile :: Point -> Action ()
- playerTriggerDir :: Feature -> Verb -> Action ()
- playerBumpDir :: Feature -> Vector -> Action ()
- playerTriggerTile :: Feature -> Action ()
- actorOpenDoor :: ActorId -> Vector -> Action ()
- tgtAscend :: Int -> ActionFrame ()
- cycleHero :: Action ()
- search :: Action ()
- moveOrAttack :: Bool -> ActorId -> Vector -> Action ()
- actorAttackActor :: ActorId -> ActorId -> Action ()
- actorRunActor :: ActorId -> ActorId -> Action ()
- rollMonster :: COps -> Perception -> State -> Rnd State
- generateMonster :: Action ()
- regenerateLevelHP :: Action ()
- displayHelp :: ActionFrame ()
- displayHistory :: ActionFrame ()
- dumpConfig :: Action ()
- redraw :: Action ()
- addSmell :: Action ()
Guess and report why the bump command failed.
Perform the action specified for the tile in case it's triggered.
Ask for a direction and trigger a tile, if possible.
Player tries to trigger a tile in a given direction.
An actor opens a door: player (hero or controlled monster) or enemy.
Change the displayed level in targeting mode to (at most) k levels shallower. Enters targeting mode, if not already in one.
Switches current hero to the next hero on the level, if any, wrapping. We cycle through at most 10 heroes (@, 0--9).
This function performs a move (or attack) by any actor, i.e., it can handle monsters, heroes and both.
Resolves the result of an actor moving into another. Usually this involves melee attack, but with two heroes it just changes focus. Actors on blocked locations can be attacked without any restrictions. For instance, an actor embedded in a wall can be attacked from an adjacent position. This function is analogous to projectGroupItem, but for melee and not using up the weapon.
Resolves the result of an actor running (not walking) into another. This involves switching positions of the two actors.
Create a new monster in the level, at a random position.