You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.9 KiB

#+OPTIONS: toc:nil
* About
This package is a core api for GateRunner card game.
It is written as an exercise in functional programming with fp-ts library
and domain modelling.
Package contains game logic only without any rendering engine.
** Gameplay
During game *player* should go through *levels* thats consist of lines of *doors*.
Every line have three *doors* and player free to open any of them to skip line.
When player interacts with the *door* it turn into *event*.
Every interaction take some *move points* of player. Amount of move points
necessary passing a *door* depends on *ground*.
Player pass the level if it skip all lines with *move points* and *health*
greater than zero.
Player can skip line if he can pass at least one open door with *move points* > 0. *Event* can be ether of:
- empty
- item
- trap
- enemy
*** Empty *event*
Player just pass whole line when interacts with event.
More difficult level is, less empty events it have.
*** Item *event*
Item can increase player's attributes once or permanent
Item that increase attribute once if *poition*, permanently is *artifact* *Poitions* works increase only on *health* and *move points* *Artifacts* can increase *attack* *defence* *health max* *move max*
Player can use *potion* only before open a door
*** Trap *event* *Trap* works like negative *item* thats decrease parameters once or
permanent.
*** Enemy *event* *Enemy* is negative *player*. To pass the enemy we need to compare *attack*, *defence* and *health* until health of *player* or *enemy* will be
equal or less than zero.
Skipping a line from start to finish is on *turn*. It consist of *phases*.
* Plan
** TODO Describe domain *Turn*
,-------------------.
|Turn |
|-------------------|
|phases: phase[] |
|isComplete: boolean|
`-------------------'
** TODO Implement domain and operations over domain elements