BSD-3-CLAUSE License
This is what player1 would see:
admin: init
... seed is [only visible for admin]
... generate inital permutations
admin: addPlayer "player1"
admin: addPlayer "playerFoo"
playerFoo: play age1:agriculture
player1: play age1:clothing
... staring player is playerFoo
playerFoo: draw [got age1 card]
player1: draw [got age1:metalworking]
player1: activate yellow
... playerFoo is affected by the dogma.
... playerFoo has to choose an card from the influence to recycle:
playerFoo: choose [an age1 card]
playerFoo: play age1:codeOfLaws
playerFoo: activate purple
... player1 also used the cooperative dogma
... playerFoo: draw [got age1 card]
player1: dominate age1
player1: draw [got age1:oars]
[...]
where
[
..]
) depend on the viewing user, everything else isadmin
is the user who has created this game...
is generated output which is not savedage1:agriculture
is an id of a cardage1:agriculture:1
is an id of a dogma on a cardThe internal representation might be of type
type History = [UserAction State]
and might look like
deckName :: String
Admin, p1, p2 :: UserId
p1 = U "player1"
p2 = U "Player2"
seed :: Integer
seed = 12345
G [ Admin `does` AddPlayer p1
, Admin `does` AddPlayer p2
, Admin `does` StartGame seed
, p1 `chooses` (`Answer` [1])
, p1 `chooses` (`Answer` [0])
, Admin `does` DeterminesTurnOrder
, p2 `does` Draw
, p1 `does` Draw
, p1 `does` Activate Yellow
, p2 `does` Choose age1:someCard
, p2 `chooses` toPlayMaybe
, p1 `chooses` toPlayMaybe
, p2 `does` Play age1:codeOfLaws
, p2 `does` Activate Purple
, p1 `does` Dominate Age1
, p1 `does` Draw
, [...]
]