LambdaHack-0.2.0: A roguelike game engine in early and very active development

Safe HaskellNone

Game.LambdaHack.Actor

Contents

Description

Actors in the game: monsters and heroes. No operation in this module involves the State or Action type.

Synopsis

Actor identifiers and related operations

data ActorId Source

A unique identifier of an actor in a dungeon.

Constructors

AHero !Int

hero index (on the lheroes intmap)

AMonster !Int

monster index (on the lmonsters intmap)

isAHero :: ActorId -> BoolSource

Checks whether an actor identifier represents a hero.

isAMonster :: ActorId -> BoolSource

Checks whether an actor identifier represents a monster.

invalidActorId :: ActorIdSource

An actor that is not on any level.

findHeroName :: CP -> Int -> StringSource

Find a hero name in the config file, or create a stock name.

monsterGenChance :: Int -> Int -> Rnd BoolSource

Chance that a new monster is generated. Currently depends on the number of monsters already present, and on the level. In the future, the strength of the character and the strength of the monsters present could further influence the chance, and the chance could also affect which monster is generated. How many and which monsters are generated will also depend on the cave kind used to build the level.

The Actor type

data Actor Source

Actor properties that are changing throughout the game. If they are dublets of properties from ActorKind, they are usually modified temporarily, but tend to return to the original value from ActorKind over time. E.g., HP.

Constructors

Actor 

Fields

bkind :: !(Id ActorKind)

the kind of the actor

bsymbol :: !(Maybe Char)

individual map symbol

bname :: !(Maybe String)

individual name

bhp :: !Int

current hit points

bdir :: !(Maybe (Vector, Int))

direction and distance of running

btarget :: Target

target for ranged attacks and AI

bloc :: !Point

current location

bletter :: !Char

next inventory letter

btime :: !Time

time of next action

Instances

template :: Id ActorKind -> Maybe Char -> Maybe String -> Int -> Point -> ActorSource

A template for a new actor. The initial target is invalid to force a reset ASAP.

addHp :: Ops ActorKind -> Int -> Actor -> ActorSource

Increment current hit points of an actor.

unoccupied :: [Actor] -> Point -> BoolSource

Checks for the presence of actors in a location. Does not check if the tile is walkable.

heroKindId :: Ops ActorKind -> Id ActorKindSource

The unique kind of heroes.

Type of na actor target

data Target Source

The type of na actor target.

Constructors

TEnemy ActorId Point

target an actor with its last seen location

TLoc Point

target a given location

TCursor

target current position of the cursor; default