|
|
|
|
@ -2,8 +2,13 @@
|
|
|
|
|
|
|
|
|
|
* 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*.
|
|
|
|
|
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*.
|
|
|
|
|
|
|
|
|
|
@ -13,6 +18,8 @@ This package is a core api for GateRunner card game.
|
|
|
|
|
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
|
|
|
|
|
@ -23,8 +30,31 @@ This package is a core api for GateRunner card game.
|
|
|
|
|
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
|
|
|
|
|
|