Commit 5feaf3a0 authored by Corentin Guillevic's avatar Corentin Guillevic
Browse files

Upgrade composant.adoc and termes.adoc ; Remove useless diagram in conception.adoc

parent 9c88a201
......@@ -48,11 +48,11 @@ component SecurityWrapper as sw
interface Data as dbi
interface GameServices as nai
interface GameService as nai
interface Security as swi
interface ClientServices as ci
interface PlayerService as ci
c - ci
nai - na
......@@ -122,8 +122,6 @@ class "«interface» \n PlayerService" as csi{
== Diagramme de séquence de mise en place
### Pour créer une partie
- TPlayer tPlayer1 = {"Jean", "192.168.1.12:4200"}
- TPlayer tPlayer2 = {"Sébastien", "192.168.1.13:4200"}
......@@ -145,184 +143,110 @@ C1Client -> S1Serveur : getGameDescription(tPlayer1)
C2Client -> S1Serveur : getGameDescription(tPlayer2)
----
### Pour rejoindre une partie
=== Diagramme de séquence du déroulement d'une manche
- ID de la partie 1001
- ID du joueur : 10
- TPlayer tPlayerTraque = {"Jean", "192.168.1.12:4200"}
- TPlayer tPlayerCreature = {"Sébastien", "192.168.1.13:4200"}
[plantuml]
----
hide circle
skinparam monochrome true
C1Client -> S1Serveur : joinGame("1001", "10")
C1Client <-- S1Serveur : sendConfirmation("{token : token10}")
C1Client ->> S1Serveur : waitGameStart("token10")
C1Client <<-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : getGameDescription("token10")
C1Client <-- S1Serveur : sendGameDescription("Traqué,{[L'antre,La jungle,La rivière,La plage,Le rover], [], 3, [Riposte]}, 2, [{Antre, []}, {Jungle, []}, ...], [{Marais, 3}, {Abri, 3}, ...], [10, 5, 8, 15], [20]")
C1Client ->> S1Serveur : waitStartPhase("token10", "PREPHASE_1_ID")
C1Client <<-- S1Serveur : sendConfirmation()
----
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_1", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PREPHASE_1", {GameDescription})
C1Client --> S1Serveur : sendResist(tPlayerTraque, 1)
C1Client <-- S1Serveur : {true, ""}
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PREPHASE_1")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PREPHASE_1")
C2Client <-- S1Serveur : {true, ""}
=== Diagramme de séquence du déroulement d'une partie
C1Client <<-- S1Serveur : sendStartPhase("PHASE_1", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PHASE_1", {GameDescription})
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PHASE_1")
C2Client <-- S1Serveur : {true, ""}
C1Client --> S1Serveur : sendPlayCards(tPlayerTraque, ["La_Plage"])
C1Client <-- S1Serveur : {true, ""}
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PHASE_1")
C1Client <-- S1Serveur : {true, ""}
### Déroulement d'une manche (Traqué)
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_1", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("POSTPHASE_1", {GameDescription})
C1Client --> S1Serveur : sendPlayCards(tPlayerTraque, ["Adrenaline"])
C1Client <-- S1Serveur : {true, ""}
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "POSTPHASE_1")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "POSTPHASE_1")
C2Client <-- S1Serveur : {true, ""}
- Token du joueur : token5
- Equipe du joueur : Traqué
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_2", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PREPHASE_2", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PREPHASE_2")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendPlayCards(tPlayerCreature, ["Soif_de_sang"])
C2Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PREPHASE_2")
C2Client <-- S1Serveur : {true, ""}
[plantuml]
----
hide circle
skinparam monochrome true
C1Client <<-- S1Serveur : sendStartPhase("PHASE_2", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PHASE_2", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PHASE_2")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendPlaceJetons(tPlayerCreature, "{{"Creature", "Place_1"}, {"Cible", "Place_7"}}")
C2Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PHASE_2")
C2Client <-- S1Serveur : {true, ""}
C1Client ->> S1Serveur : waitStartPhase("token5", "PREPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendResist("token5")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token5", "PREPHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendPlayCards("token5", "{La Plage}")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token5", "PHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "POSTPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendPlayCards("token5", "{Adrénaline}")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token5", "POSTPHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PREPHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "PREPHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "PHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "POSTPHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "POSTPHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PREPHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "PREPHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendChooseAction("token5", "POWER_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token5", "PHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "POSTPHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "POSTPHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PREPHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", PREPHASE_4_ID)
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "PHASE_4_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "POSTPHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token5", "POSTPHASE_4_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token5", "PREPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("FINISH_ID", "GameDescription")
----
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_2", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("POSTPHASE_2", {GameDescription})
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "POSTPHASE_2")
C2Client <-- S1Serveur : {true, ""}
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "POSTPHASE_2")
C1Client <-- S1Serveur : {true, ""}
### Déroulement d'une manche (Créature)
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_3", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PREPHASE_3", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PREPHASE_3")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PREPHASE_3")
C2Client <-- S1Serveur : {true, ""}
- Equipe du joueur : Créature
- Token du joueur : token8
C1Client <<-- S1Serveur : sendStartPhase("PHASE_3", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PHASE_3", {GameDescription})
C1Client <- S1Serveur : askAction({"CHOOSE_POWER" ,"Choose a power",[{"1", "Power 1"}, {"2", "Power 2"}]})
C1Client --> S1Serveur : {"CHOOSE_POWER", ["1"]}
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PHASE_3")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PHASE_3")
C2Client <-- S1Serveur : {true, ""}
[plantuml]
----
hide circle
skinparam monochrome true
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_3", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("POSTPHASE_3", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "POSTPHASE_3")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "POSTPHASE_3")
C2Client <-- S1Serveur : {true, ""}
C1Client ->> S1Serveur : waitStartPhase("token8", "PREPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PREPHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "POSTPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_1_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "POSTPHASE_1_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PREPHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendPlayCards("token8", "{Soif de sang}")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token8", "PREPHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendPlaceJetons("token8", "{{Créature, EMPLACEMENT_1_ID} {Cible, EMPLACEMENT_7_ID}}")
C1Client <-- S1Serveur : sendConfirmation()
C1Client -> S1Serveur : sendFinishPhase("token8", "PHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "POSTPHASE_2_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_2_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "POSTPHASE_2_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PREPHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PREPHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "POSTPHASE_3_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_3_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "POSTPHASE_3_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PREPHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PREPHASE_4_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("PHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("token8", "PHASE_4_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "POSTPHASE_4_ID")
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_4_ID", "GameDescription")
C1Client -> S1Serveur : sendFinishPhase("POSTPHASE_4_ID")
C1Client <-- S1Serveur : sendConfirmation()
C1Client ->> S1Serveur : waitStartPhase("token8", "PREPHASE_1_ID")
C1Client <<-- S1Serveur : sendStartPhase("FINISH_ID", "GameDescription")
----
C1Client <<-- S1Serveur : sendStartPhase("PREPHASE_4", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PREPHASE_4", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PREPHASE_4")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PREPHASE_4")
C2Client <-- S1Serveur : {true, ""}
C1Client <<-- S1Serveur : sendStartPhase("PHASE_4", {GameDescription})
C2Client <<-- S1Serveur : sendStartPhase("PHASE_4", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "PHASE_4")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "PHASE_4")
C2Client <-- S1Serveur : {true, ""}
C1Client <<-- S1Serveur : sendStartPhase("POSTPHASE_4", "GameDescription")
C2Client <<-- S1Serveur : sendStartPhase("POSTPHASE_4", {GameDescription})
C1Client --> S1Serveur : sendFinishPhase(tPlayerTraque, "POSTPHASE_4")
C1Client <-- S1Serveur : {true, ""}
C2Client --> S1Serveur : sendFinishPhase(tPlayerCreature, "POSTPHASE_4")
C2Client <-- S1Serveur : {true, ""}
----
\ No newline at end of file
= Conception détaillée
//:source-highlighter: rouge
== Test Highlighter
[source, java]
----
class Klass {
String field;
}
----
[source, ocl]
----
context Klass
inv:
field->select()
----
== Game
[plantuml]
......@@ -1538,93 +1519,3 @@ package Handler{
....
== Game Server (example)
.GameSever
[plantuml]
....
interface GameServer {
createGame(numberOfPlayers : Integer): Integer
join(gameId : Integer): Integer
}
package room {
class "GameServerController" as controller {
createGame(numberOfPlayers : Integer): Integer
join(gameId : Integer): Integer
}
class "Game \n[Thread]" as room {
id : Integer {id}
numberOfPlayers : Integer
}
class "Player" as player {
id : Integer {id}
}
GameServer <|-- controller
controller *- "[*] games" room : \t\t\t
room *-- "[0..7] players" player
}
note right of room: Uncompleted!
....
[plantuml]
....
state Game {
[*] --> Created
Created -> Started : start()
Started -> Phase1 : \t
Phase1 --> [*]
}
note right of Game : Uncompleted!
....
=== Opérations du GameServerController
.Create Game
[source,OCL]
----
GameServerController::createGame(numberOfPlayers : Integer): Integer
pre:
numberOfPlayers > 1 and numberOfPlayers <= 7
post:
self.games -> exists(each | each.isOclNew())and
room.oclinState(Created)
----
.Join Game
[source,OCL]
----
GameServerController::join(gameId : Integer): Integer
pre:
self.games -> exists(each | each.id = gameId)
post:
let room = self.games->select(id = gameId)->first() in
room.players->exists(each| each.isOclNew())
----
.Start Game
[plantuml]
----
partition Game::run() {
start
while (enough players?)
:JoinRequest<
:handleRequest();
endwhile
:Game Start>
stop
}
----
= Pouvoir
PouvoirPlayer et PouvoirServer
Pouvoir conteneur : Disjonction ou conjonction
[plantuml]
....
abstract class PowerContainer {
getType() : PowerContainerType
isApplicable() : Boolean
}
class ColorPowerContainer {
open(color : Color) : PowerContainer
}
class ConditionalPowerContainer {
open() : PowerContainer
getCondition() : PowerCondition
}
class RecurrentPowerContainer {
open() : PowerContainer
getCondition() : PowerCondition
}
class ChoicePowerContainer {
open(idChoice : Integer) : PowerContainer
getAction() : AskAction
}
class MultiPowerContainer {
open() : PowerContainer[*]
}
class SinglePowerContainer {
open() : Power
}
PowerContainer "1" - "1..* powers" PowerContainer
PowerContainer <|-- ColorPowerContainer
PowerContainer <|-- ConditionalPowerContainer
PowerContainer <|-- RecurrentPowerContainer
PowerContainer <|-- ChoicePowerContainer
PowerContainer <|-- MultiPowerContainer
PowerContainer <|-- SinglePowerContainer
....
== Type du pouvoir
- Lieux multiples (2 lieux adjacents)
- Player
- OncePerRound (une fois par tour)
- ColorPower (dépend de la couleur de la partie)
- NextRound
== Liste de pouvoirs (ancienne)
- Copier le pouvoir d'un lieu
- Copier le pouvoir d'un lieu de votre défausse
- Copier le pouvoir d'un lieu où le jeton Créature se trouve
- Reprendre les cartes Lieu de votre défausse
- Reprendre 1 carte Lieu de la défausse
- Reprendre cette carte Lieu et 1 carte Lieu de votre défausse
- Reprendre ette carte Lieu et 2 carte Lieu de votre défausse (Marais comment appliqué la précision ?)
- Reprendre deux cartes Lieu de votre défausse
- Prendre une carte Lieu de la Réserve
- Perdre 1 Volonté supplémentaire si attraper
- Perdre 1 Volonté supplémentaire JetonCréature
- Perdre 1 Volonté
- Récupérer un Volonté
- Placer le pion Balise sur la Plage OU retirer le pion Balise de la Plage pour avancer le pion Secours d’une case (max 1x/tour)
- Avancer le pion Secours d'1 case (max 1x/tour)
- Piocher 2 cartes Survie, en garder une et défausser l'autre
- Piocher 1 carte Survie
- Annuler les effets du Pion Artemia
- Déplacer 1 Traqué de votre choix sur un Lieu adjacent
- Traqués ne peuvent pas résister
- Défausser une carte Lieu
- Au prochain tour, jouer 2 cartes Lieu. Avant de révéler, en choisir une et reprendre l’autre en main
- Au prochain tour, jouer 2 cartes Lieu. Résoudre les deux Lieu individuellement dans l’ordre de votre choix en respectant les règles de la Phase 3. Lorsqu’un Traqué révèle ses cartes Lieu, s’il peut appliquer les effets de la Rivière et de l’Artefact bleu durant
un même tour, il doit choisir l’un des deux effets, puis il peut reprendre une carte Lieu de sa défausse.
- Utiliser jeton cible (sur un lieu)
- Pouvoir du lieu initulisable
- Lieu inaccessible
- Avancer PionAssimilation d'une case
- Désigner 1 Traqué : si vous l’attrapez avec le jeton Créature, avancez le jeton Assimilation d’1 case supplémentaire.
- Dès que les cartes Lieu sont révélées en Phase 3, reculer le pion Assimilation d'1 case pour déplacer le jeton Créature sur un Lieu adjacent.
- Considérez le jeton Cible comme un second jeton Créature.
- Aucune carte Survie ne peut être jouée ou piochée pour le reste du tour.
- Avant de résoudre les Lieux, déplacer 1 Traqué vers 1 Lieu adjacent.
ARRET A DOMINATION (Carte traque)
== Liste de pouvoirs (nouvelle)
=== Cartes Lieu
- Reprendre les cartes Lieu de votre défausse
- Reprendre en main la carte Lieu jouée
- Reprendre en main 1 carte Lieu de votre défausse
- Reprendre en main 2 cartes Lieu de votre défausse
- Prendre une carte Lieu de la réserve que vous ne possédez pas
- Jouer 2 cartes Lieu, avant révélation en choisir 1 et reprendre l'autre en main
- Jouer 2 cartes Lieu, résoudre les 2 dans l'ordre choisi
=== Lieux
- Pouvoir d'un lieu inutilisable
- Cibler 2 Lieux adjacents : ces Lieux sont inaccessibles pour ce tour.
- Ciblez 2 Lieux adjacents (placer le jeton Cible entre ces 2 Lieux) : leur pouvoir est inutilisable.
- Dès que les cartes Lieu sont révélées à la Phase 3, si au moins 1 Traqué se trouve sur le Lieu ciblé : les pouvoirs de tous les Lieux sont inutilisables, les effets des jetons Créature et Artemia sont quand même résolus.
- les pouvoirs de la Plage et de l’Épave sont inutilisables
- reculer le pion Bouclier d'1 Lieu
=== Cartes Survies
- Piocher 2 cartes Survie et en choisir une, jeter l'autre
- Piocher 1 carte Survie
- Aucune carte Survie ne peut être jouée ou piochée pour le reste du tour.
=== Copie
- Copier pouvoir du lieu où se trouve le jeton Créature
- Copier les effets d'une carte Lieu de votre défausse
=== Volonté
- Perdre 2 volonté si attrapé
=== Pion Balise
- Placer/Retirer pion Balise de la plage
=== Traqué
- Défausser 1 carte Lieu et déplacer 1 traqué vers un lieu adjacent
- Ajouter un pion Volonté à un traqué choisi
- Déplacer 1 Traqué vers 1 Lieu adjacent.
- Les traqués ne peuvent pas résister
- Désigner 1 Traqué : si vous l’attrapez avec le jeton Créature, avancez le jeton Assimilation d’1 case supplémentaire.
- Poser cette carte devant 1 Traqué : à la fin de chaque tour, celui-ci doit défausser 1 carte Lieu de sa main. Si ce Traqué tombe à 0 Volonté, défausser cette carte.
- Obligez un Traqué qui utilise l’action Résister à Lâcher prise.
- Cibler 1 Traqué : il défausse toutes ses cartes Lieu sauf 2.
- Désignez 1 Traqué : le Lieu où il se trouve est inutilisable, chaque autre Traqué présent sur ce Lieu perd 1 Volonté.
- Chaque Traqué ne peut récupérer qu'1 carte Lieu quand il utilise le pouvoir d’un Lieu.
- Chaque Traqué présent sur le Lieu ciblé doit, selon son choix, défausser 2 cartes Lieu ou perdre 1 Volonté.
- Dès que les cartes Lieu sont révélées en Phase 3, chaque Traqué adjacent au Lieu ciblé est déplacé sur le Lieu ciblé.
=== Pion Secours/Assimilation
- Avancer le pion Secours d'une case
- Avancer le pion Assimilation d'une case
- Pour chaque Traqué présent sur le Lieu ciblé, avancer le pion Assimilation d’autant de cases, puis le pion Secours d’autant de cases.
=== Cartes Traque
- À jouer à la phase de la carte copiée : copier la dernière carte Traque défaussée.
- Piocher 3 cartes Traque, Jouer 1 de ces cartes durant le tour et défausser les 2 autres.
=== JetonTraque
- Considérer le jeton Cible comme un second jeton Créature.
- Annulez les effets du Jeton Artemia
- Dès que les cartes Lieu sont révélées en Phase 3, reculer le pion Assimilation d'1 case pour déplacer le jeton Créature sur un Lieu adjacent.
- Placer le jeton Créature sur 2 Lieux adjacents : ses effets s’appliquent sur ces 2 Lieux. Si un Traqué copie le pouvoir du Lieu où se trouve le jeton Créature, il copie 1 seul des 2 Lieux.
== Précision sur les pouvoirs
- Si le Marais est révélé grâce au Labyrinthe et que vous l’activez directement, ni le Marais ni le Labyrinthe ne sont repris en main.
- Si plusieurs Traqués explorent la Plage, l’un d’eux peut utiliser le pouvoir de la Plage et les autres peuvent récupérer 1 carte Lieu de leur défausse.
- Si plusieurs Traqués explorent l’Épave, l’un d’eux peut utiliser le pouvoir de l’Épave et les autres peuvent récupérer 1 carte Lieu de leur défausse.
- L’Artefact ne peut être copié (que ce soit par le pouvoir d’un Lieu ou une carte Survie).
- Lorsqu’un Traqué révèle ses cartes Lieu, s’il peut appliquer les effets de la Rivière et de l’Artefact bleu durant
un même tour, il doit choisir l’un des deux effets, puis il peut reprendre une carte Lieu de sa défausse.
\ No newline at end of file
......@@ -46,12 +46,13 @@
|PionSecours
| Pion permettant de marquer le score de l'équipe des Traqués.
|
| Case 2 de secours.
|
| Pouvoir
| Un pouvoir représente un ensemble d'actions. Ces actions peuvent modifier une règle ou un élément de la partie (score, cartes, ...).
| Evitez les effets du jeton Créature ; Reprenez en main cette carte Lieu et une carte Lieu de votre défausse.
|
| Evitez les effets du jeton Créature ; Reprenez en main cette carte Lieu et une carte Lieu de votre défausse.
| Carte
| Objet possédant un pouvoir.
......@@ -66,13 +67,13 @@
|CarteSurvie
| Cartes jouables uniquement par les Traqués et possédant un pouvoir.
|
<