@gamepark/greylune 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/Constants.d.ts +23 -0
  2. package/dist/Constants.d.ts.map +1 -0
  3. package/dist/Constants.js +17 -0
  4. package/dist/Constants.js.map +1 -0
  5. package/dist/GreyluneOptions.d.ts +11 -0
  6. package/dist/GreyluneOptions.d.ts.map +1 -0
  7. package/dist/GreyluneOptions.js +8 -0
  8. package/dist/GreyluneOptions.js.map +1 -0
  9. package/dist/GreyluneRules.d.ts +123 -0
  10. package/dist/GreyluneRules.d.ts.map +1 -0
  11. package/dist/GreyluneRules.js +122 -0
  12. package/dist/GreyluneRules.js.map +1 -0
  13. package/dist/GreyluneSetup.d.ts +18 -0
  14. package/dist/GreyluneSetup.d.ts.map +1 -0
  15. package/dist/GreyluneSetup.js +88 -0
  16. package/dist/GreyluneSetup.js.map +1 -0
  17. package/dist/Memory.d.ts +22 -0
  18. package/dist/Memory.d.ts.map +1 -0
  19. package/dist/Memory.js +23 -0
  20. package/dist/Memory.js.map +1 -0
  21. package/dist/PlayerColor.d.ts +7 -0
  22. package/dist/PlayerColor.d.ts.map +1 -0
  23. package/dist/PlayerColor.js +8 -0
  24. package/dist/PlayerColor.js.map +1 -0
  25. package/dist/Season.d.ts +7 -0
  26. package/dist/Season.d.ts.map +1 -0
  27. package/dist/Season.js +8 -0
  28. package/dist/Season.js.map +1 -0
  29. package/dist/Year.d.ts +8 -0
  30. package/dist/Year.d.ts.map +1 -0
  31. package/dist/Year.js +10 -0
  32. package/dist/Year.js.map +1 -0
  33. package/dist/ai/Evaluation.d.ts +118 -0
  34. package/dist/ai/Evaluation.d.ts.map +1 -0
  35. package/dist/ai/Evaluation.js +1069 -0
  36. package/dist/ai/Evaluation.js.map +1 -0
  37. package/dist/ai/GreyluneAI.d.ts +20 -0
  38. package/dist/ai/GreyluneAI.d.ts.map +1 -0
  39. package/dist/ai/GreyluneAI.js +113 -0
  40. package/dist/ai/GreyluneAI.js.map +1 -0
  41. package/dist/ai/Model.d.ts +38 -0
  42. package/dist/ai/Model.d.ts.map +1 -0
  43. package/dist/ai/Model.js +105 -0
  44. package/dist/ai/Model.js.map +1 -0
  45. package/dist/ai/Simulation.d.ts +13 -0
  46. package/dist/ai/Simulation.d.ts.map +1 -0
  47. package/dist/ai/Simulation.js +20 -0
  48. package/dist/ai/Simulation.js.map +1 -0
  49. package/dist/index.d.ts +5 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +5 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/material/Area.d.ts +9 -0
  54. package/dist/material/Area.d.ts.map +1 -0
  55. package/dist/material/Area.js +10 -0
  56. package/dist/material/Area.js.map +1 -0
  57. package/dist/material/Distance.d.ts +8 -0
  58. package/dist/material/Distance.d.ts.map +1 -0
  59. package/dist/material/Distance.js +9 -0
  60. package/dist/material/Distance.js.map +1 -0
  61. package/dist/material/Effect.d.ts +103 -0
  62. package/dist/material/Effect.d.ts.map +1 -0
  63. package/dist/material/Effect.js +83 -0
  64. package/dist/material/Effect.js.map +1 -0
  65. package/dist/material/EncounterCard.d.ts +61 -0
  66. package/dist/material/EncounterCard.d.ts.map +1 -0
  67. package/dist/material/EncounterCard.js +214 -0
  68. package/dist/material/EncounterCard.js.map +1 -0
  69. package/dist/material/EventTile.d.ts +17 -0
  70. package/dist/material/EventTile.d.ts.map +1 -0
  71. package/dist/material/EventTile.js +52 -0
  72. package/dist/material/EventTile.js.map +1 -0
  73. package/dist/material/LocationType.d.ts +42 -0
  74. package/dist/material/LocationType.d.ts.map +1 -0
  75. package/dist/material/LocationType.js +43 -0
  76. package/dist/material/LocationType.js.map +1 -0
  77. package/dist/material/MaterialSource.d.ts +8 -0
  78. package/dist/material/MaterialSource.d.ts.map +1 -0
  79. package/dist/material/MaterialSource.js +2 -0
  80. package/dist/material/MaterialSource.js.map +1 -0
  81. package/dist/material/MaterialType.d.ts +23 -0
  82. package/dist/material/MaterialType.d.ts.map +1 -0
  83. package/dist/material/MaterialType.js +24 -0
  84. package/dist/material/MaterialType.js.map +1 -0
  85. package/dist/material/Period.d.ts +6 -0
  86. package/dist/material/Period.d.ts.map +1 -0
  87. package/dist/material/Period.js +7 -0
  88. package/dist/material/Period.js.map +1 -0
  89. package/dist/material/PlayerState.d.ts +34 -0
  90. package/dist/material/PlayerState.d.ts.map +1 -0
  91. package/dist/material/PlayerState.js +106 -0
  92. package/dist/material/PlayerState.js.map +1 -0
  93. package/dist/material/QuestTile.d.ts +21 -0
  94. package/dist/material/QuestTile.d.ts.map +1 -0
  95. package/dist/material/QuestTile.js +32 -0
  96. package/dist/material/QuestTile.js.map +1 -0
  97. package/dist/material/Reaction.d.ts +49 -0
  98. package/dist/material/Reaction.d.ts.map +1 -0
  99. package/dist/material/Reaction.js +37 -0
  100. package/dist/material/Reaction.js.map +1 -0
  101. package/dist/material/Tokens.d.ts +29 -0
  102. package/dist/material/Tokens.d.ts.map +1 -0
  103. package/dist/material/Tokens.js +46 -0
  104. package/dist/material/Tokens.js.map +1 -0
  105. package/dist/material/Village.d.ts +23 -0
  106. package/dist/material/Village.d.ts.map +1 -0
  107. package/dist/material/Village.js +29 -0
  108. package/dist/material/Village.js.map +1 -0
  109. package/dist/material/VillageCard.d.ts +90 -0
  110. package/dist/material/VillageCard.d.ts.map +1 -0
  111. package/dist/material/VillageCard.js +359 -0
  112. package/dist/material/VillageCard.js.map +1 -0
  113. package/dist/material/Villager.d.ts +8 -0
  114. package/dist/material/Villager.d.ts.map +1 -0
  115. package/dist/material/Villager.js +7 -0
  116. package/dist/material/Villager.js.map +1 -0
  117. package/dist/material/VpToken.d.ts +10 -0
  118. package/dist/material/VpToken.d.ts.map +1 -0
  119. package/dist/material/VpToken.js +9 -0
  120. package/dist/material/VpToken.js.map +1 -0
  121. package/dist/rules/ActivateCardRule.d.ts +43 -0
  122. package/dist/rules/ActivateCardRule.d.ts.map +1 -0
  123. package/dist/rules/ActivateCardRule.js +183 -0
  124. package/dist/rules/ActivateCardRule.js.map +1 -0
  125. package/dist/rules/AutumnRule.d.ts +9 -0
  126. package/dist/rules/AutumnRule.d.ts.map +1 -0
  127. package/dist/rules/AutumnRule.js +42 -0
  128. package/dist/rules/AutumnRule.js.map +1 -0
  129. package/dist/rules/BonusTokenRule.d.ts +10 -0
  130. package/dist/rules/BonusTokenRule.d.ts.map +1 -0
  131. package/dist/rules/BonusTokenRule.js +20 -0
  132. package/dist/rules/BonusTokenRule.js.map +1 -0
  133. package/dist/rules/ChooseOutcomeRule.d.ts +9 -0
  134. package/dist/rules/ChooseOutcomeRule.d.ts.map +1 -0
  135. package/dist/rules/ChooseOutcomeRule.js +18 -0
  136. package/dist/rules/ChooseOutcomeRule.js.map +1 -0
  137. package/dist/rules/ChooseSkillRule.d.ts +10 -0
  138. package/dist/rules/ChooseSkillRule.d.ts.map +1 -0
  139. package/dist/rules/ChooseSkillRule.js +20 -0
  140. package/dist/rules/ChooseSkillRule.js.map +1 -0
  141. package/dist/rules/CustomMoveType.d.ts +17 -0
  142. package/dist/rules/CustomMoveType.d.ts.map +1 -0
  143. package/dist/rules/CustomMoveType.js +18 -0
  144. package/dist/rules/CustomMoveType.js.map +1 -0
  145. package/dist/rules/DiscardItemRule.d.ts +9 -0
  146. package/dist/rules/DiscardItemRule.d.ts.map +1 -0
  147. package/dist/rules/DiscardItemRule.js +19 -0
  148. package/dist/rules/DiscardItemRule.js.map +1 -0
  149. package/dist/rules/EncounterRule.d.ts +26 -0
  150. package/dist/rules/EncounterRule.d.ts.map +1 -0
  151. package/dist/rules/EncounterRule.js +75 -0
  152. package/dist/rules/EncounterRule.js.map +1 -0
  153. package/dist/rules/EventRule.d.ts +13 -0
  154. package/dist/rules/EventRule.d.ts.map +1 -0
  155. package/dist/rules/EventRule.js +39 -0
  156. package/dist/rules/EventRule.js.map +1 -0
  157. package/dist/rules/FinalScoringRule.d.ts +18 -0
  158. package/dist/rules/FinalScoringRule.d.ts.map +1 -0
  159. package/dist/rules/FinalScoringRule.js +30 -0
  160. package/dist/rules/FinalScoringRule.js.map +1 -0
  161. package/dist/rules/GreyluneRule.d.ts +87 -0
  162. package/dist/rules/GreyluneRule.d.ts.map +1 -0
  163. package/dist/rules/GreyluneRule.js +432 -0
  164. package/dist/rules/GreyluneRule.js.map +1 -0
  165. package/dist/rules/PlaceVillagerRule.d.ts +10 -0
  166. package/dist/rules/PlaceVillagerRule.d.ts.map +1 -0
  167. package/dist/rules/PlaceVillagerRule.js +17 -0
  168. package/dist/rules/PlaceVillagerRule.js.map +1 -0
  169. package/dist/rules/ReactionRule.d.ts +17 -0
  170. package/dist/rules/ReactionRule.d.ts.map +1 -0
  171. package/dist/rules/ReactionRule.js +48 -0
  172. package/dist/rules/ReactionRule.js.map +1 -0
  173. package/dist/rules/ResolveEffectsRule.d.ts +12 -0
  174. package/dist/rules/ResolveEffectsRule.d.ts.map +1 -0
  175. package/dist/rules/ResolveEffectsRule.js +85 -0
  176. package/dist/rules/ResolveEffectsRule.js.map +1 -0
  177. package/dist/rules/ResolveEncounterRule.d.ts +19 -0
  178. package/dist/rules/ResolveEncounterRule.d.ts.map +1 -0
  179. package/dist/rules/ResolveEncounterRule.js +86 -0
  180. package/dist/rules/ResolveEncounterRule.js.map +1 -0
  181. package/dist/rules/ResolveQuestRule.d.ts +17 -0
  182. package/dist/rules/ResolveQuestRule.d.ts.map +1 -0
  183. package/dist/rules/ResolveQuestRule.js +64 -0
  184. package/dist/rules/ResolveQuestRule.js.map +1 -0
  185. package/dist/rules/RuleId.d.ts +27 -0
  186. package/dist/rules/RuleId.d.ts.map +1 -0
  187. package/dist/rules/RuleId.js +28 -0
  188. package/dist/rules/RuleId.js.map +1 -0
  189. package/dist/rules/SeasonRule.d.ts +11 -0
  190. package/dist/rules/SeasonRule.d.ts.map +1 -0
  191. package/dist/rules/SeasonRule.js +32 -0
  192. package/dist/rules/SeasonRule.js.map +1 -0
  193. package/dist/rules/SpecialActionRule.d.ts +15 -0
  194. package/dist/rules/SpecialActionRule.d.ts.map +1 -0
  195. package/dist/rules/SpecialActionRule.js +32 -0
  196. package/dist/rules/SpecialActionRule.js.map +1 -0
  197. package/dist/rules/SpringRule.d.ts +7 -0
  198. package/dist/rules/SpringRule.d.ts.map +1 -0
  199. package/dist/rules/SpringRule.js +16 -0
  200. package/dist/rules/SpringRule.js.map +1 -0
  201. package/dist/rules/StraightenCardRule.d.ts +9 -0
  202. package/dist/rules/StraightenCardRule.d.ts.map +1 -0
  203. package/dist/rules/StraightenCardRule.js +11 -0
  204. package/dist/rules/StraightenCardRule.js.map +1 -0
  205. package/dist/rules/SummerRule.d.ts +30 -0
  206. package/dist/rules/SummerRule.d.ts.map +1 -0
  207. package/dist/rules/SummerRule.js +140 -0
  208. package/dist/rules/SummerRule.js.map +1 -0
  209. package/dist/rules/TellStoryRule.d.ts +22 -0
  210. package/dist/rules/TellStoryRule.d.ts.map +1 -0
  211. package/dist/rules/TellStoryRule.js +72 -0
  212. package/dist/rules/TellStoryRule.js.map +1 -0
  213. package/dist/rules/TheFirstStepRule.d.ts +5 -0
  214. package/dist/rules/TheFirstStepRule.d.ts.map +1 -0
  215. package/dist/rules/TheFirstStepRule.js +7 -0
  216. package/dist/rules/TheFirstStepRule.js.map +1 -0
  217. package/dist/rules/TravelRule.d.ts +13 -0
  218. package/dist/rules/TravelRule.d.ts.map +1 -0
  219. package/dist/rules/TravelRule.js +41 -0
  220. package/dist/rules/TravelRule.js.map +1 -0
  221. package/dist/rules/UseItemRule.d.ts +6 -0
  222. package/dist/rules/UseItemRule.d.ts.map +1 -0
  223. package/dist/rules/UseItemRule.js +35 -0
  224. package/dist/rules/UseItemRule.js.map +1 -0
  225. package/dist/rules/WinterRule.d.ts +24 -0
  226. package/dist/rules/WinterRule.d.ts.map +1 -0
  227. package/dist/rules/WinterRule.js +112 -0
  228. package/dist/rules/WinterRule.js.map +1 -0
  229. package/package.json +39 -0
@@ -0,0 +1,23 @@
1
+ export declare const VILLAGE_GRID_SIDE = 3;
2
+ export declare const VILLAGE_CARDS_REMOVED = 2;
3
+ export declare const EVENT_TILES_REMOVED = 1;
4
+ export declare const QUEST_MARKERS = 3;
5
+ export declare const SEALS_PER_VALUE = 8;
6
+ export declare const ACTIVE_VILLAGERS = 3;
7
+ export declare const STARTING_COINS = 8;
8
+ export declare const MAX_COMPANIONS = 3;
9
+ export declare const MAX_ITEMS = 3;
10
+ export declare const MAX_SKILL = 5;
11
+ export declare const SCORE_TRACK_SIZE = 25;
12
+ export declare const MAX_STORY_VALUE = 3;
13
+ export declare const BONUS_TOKEN_SCORES: number[];
14
+ export declare const BASE_INCOME = 3;
15
+ export declare const SKILLED_SCORE: {
16
+ level: number;
17
+ vp: number;
18
+ };
19
+ export declare const MASTER_SCORE: {
20
+ level: number;
21
+ vp: number;
22
+ };
23
+ //# sourceMappingURL=Constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAGlC,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAGtC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAGpC,eAAO,MAAM,aAAa,IAAI,CAAA;AAG9B,eAAO,MAAM,eAAe,IAAI,CAAA;AAGhC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC,eAAO,MAAM,cAAc,IAAI,CAAA;AAG/B,eAAO,MAAM,cAAc,IAAI,CAAA;AAC/B,eAAO,MAAM,SAAS,IAAI,CAAA;AAG1B,eAAO,MAAM,SAAS,IAAI,CAAA;AAG1B,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAGlC,eAAO,MAAM,eAAe,IAAI,CAAA;AAGhC,eAAO,MAAM,kBAAkB,UAAU,CAAA;AAGzC,eAAO,MAAM,WAAW,IAAI,CAAA;AAG5B,eAAO,MAAM,aAAa;IAAK,KAAK;IAAK,EAAE;CAAK,CAAA;AAChD,eAAO,MAAM,YAAY;;;CAA8B,CAAA"}
@@ -0,0 +1,17 @@
1
+ export const VILLAGE_GRID_SIDE = 3;
2
+ export const VILLAGE_CARDS_REMOVED = 2;
3
+ export const EVENT_TILES_REMOVED = 1;
4
+ export const QUEST_MARKERS = 3;
5
+ export const SEALS_PER_VALUE = 8;
6
+ export const ACTIVE_VILLAGERS = 3;
7
+ export const STARTING_COINS = 8;
8
+ export const MAX_COMPANIONS = 3;
9
+ export const MAX_ITEMS = 3;
10
+ export const MAX_SKILL = 5;
11
+ export const SCORE_TRACK_SIZE = 25;
12
+ export const MAX_STORY_VALUE = 3;
13
+ export const BONUS_TOKEN_SCORES = [8, 20];
14
+ export const BASE_INCOME = 3;
15
+ export const SKILLED_SCORE = { level: 3, vp: 2 };
16
+ export const MASTER_SCORE = { level: MAX_SKILL, vp: 5 };
17
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAGlC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAGtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAGpC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAG9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAGhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAG/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAA;AAG1B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAA;AAG1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAGlC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAGhC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAGzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA;AAG5B,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { OptionsSpecV2 } from '@gamepark/rules-api';
2
+ import { PlayerColor } from './PlayerColor';
3
+ type PlayerOptions = {
4
+ id: PlayerColor;
5
+ };
6
+ export type GreyluneOptions = {
7
+ players: PlayerOptions[];
8
+ };
9
+ export declare const GreyluneOptionsSpecV2: OptionsSpecV2;
10
+ export {};
11
+ //# sourceMappingURL=GreyluneOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneOptions.d.ts","sourceRoot":"","sources":["../src/GreyluneOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAK3C,KAAK,aAAa,GAAG;IAAE,EAAE,EAAE,WAAW,CAAA;CAAE,CAAA;AAMxC,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB,CAAA;AAmBD,eAAO,MAAM,qBAAqB,EAAE,aAInC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { getEnumValues } from '@gamepark/rules-api';
2
+ import { PlayerColor } from './PlayerColor';
3
+ export const GreyluneOptionsSpecV2 = {
4
+ specVersion: 2,
5
+ players: { min: 2, max: 4 },
6
+ identities: { values: getEnumValues(PlayerColor) }
7
+ };
8
+ //# sourceMappingURL=GreyluneOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneOptions.js","sourceRoot":"","sources":["../src/GreyluneOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAgC3C,MAAM,CAAC,MAAM,qBAAqB,GAAkB;IAClD,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC3B,UAAU,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE;CACnD,CAAA"}
@@ -0,0 +1,123 @@
1
+ import { FillGapStrategy, HiddenMaterialRules, HidingStrategy, MaterialGame, MaterialMove, PositiveSequenceStrategy, StackingStrategy, TimeLimit } from '@gamepark/rules-api';
2
+ import { LocationType } from './material/LocationType';
3
+ import { MaterialType } from './material/MaterialType';
4
+ import { PlayerColor } from './PlayerColor';
5
+ import { ActivateCardRule } from './rules/ActivateCardRule';
6
+ import { AutumnRule } from './rules/AutumnRule';
7
+ import { BonusTokenRule } from './rules/BonusTokenRule';
8
+ import { ChooseOutcomeRule } from './rules/ChooseOutcomeRule';
9
+ import { ChooseSkillRule } from './rules/ChooseSkillRule';
10
+ import { DiscardItemRule } from './rules/DiscardItemRule';
11
+ import { EventRule } from './rules/EventRule';
12
+ import { FinalScoringRule } from './rules/FinalScoringRule';
13
+ import { PlaceVillagerRule } from './rules/PlaceVillagerRule';
14
+ import { ReactionRule } from './rules/ReactionRule';
15
+ import { ResolveEffectsRule } from './rules/ResolveEffectsRule';
16
+ import { ResolveEncounterRule } from './rules/ResolveEncounterRule';
17
+ import { ResolveQuestRule } from './rules/ResolveQuestRule';
18
+ import { RuleId } from './rules/RuleId';
19
+ import { SpecialActionRule } from './rules/SpecialActionRule';
20
+ import { SpringRule } from './rules/SpringRule';
21
+ import { StraightenCardRule } from './rules/StraightenCardRule';
22
+ import { SummerRule } from './rules/SummerRule';
23
+ import { TellStoryRule } from './rules/TellStoryRule';
24
+ import { TravelRule } from './rules/TravelRule';
25
+ import { UseItemRule } from './rules/UseItemRule';
26
+ import { WinterRule } from './rules/WinterRule';
27
+ export declare class GreyluneRules extends HiddenMaterialRules<PlayerColor, MaterialType, LocationType> implements TimeLimit<MaterialGame<PlayerColor, MaterialType, LocationType>, MaterialMove<PlayerColor, MaterialType, LocationType>, PlayerColor> {
28
+ rules: {
29
+ 1: typeof WinterRule;
30
+ 2: typeof SpringRule;
31
+ 3: typeof SummerRule;
32
+ 4: typeof AutumnRule;
33
+ 5: typeof ActivateCardRule;
34
+ 6: typeof UseItemRule;
35
+ 7: typeof DiscardItemRule;
36
+ 8: typeof EventRule;
37
+ 9: typeof SpecialActionRule;
38
+ 10: typeof TravelRule;
39
+ 11: typeof ResolveEncounterRule;
40
+ 12: typeof ChooseOutcomeRule;
41
+ 13: typeof ResolveQuestRule;
42
+ 14: typeof TellStoryRule;
43
+ 15: typeof StraightenCardRule;
44
+ 16: typeof PlaceVillagerRule;
45
+ 17: typeof ChooseSkillRule;
46
+ 18: typeof BonusTokenRule;
47
+ 19: typeof ReactionRule;
48
+ 20: typeof ResolveEffectsRule;
49
+ 21: typeof FinalScoringRule;
50
+ 22: typeof FinalScoringRule;
51
+ 23: typeof FinalScoringRule;
52
+ 24: typeof FinalScoringRule;
53
+ };
54
+ locationsStrategies: {
55
+ 1: {
56
+ 4: PositiveSequenceStrategy<number, number, number>;
57
+ 25: PositiveSequenceStrategy<number, number, number>;
58
+ 26: PositiveSequenceStrategy<number, number, number>;
59
+ };
60
+ 2: {
61
+ 7: PositiveSequenceStrategy<number, number, number>;
62
+ 8: PositiveSequenceStrategy<number, number, number>;
63
+ 27: PositiveSequenceStrategy<number, number, number>;
64
+ 28: PositiveSequenceStrategy<number, number, number>;
65
+ };
66
+ 3: {
67
+ 9: PositiveSequenceStrategy<number, number, number>;
68
+ };
69
+ 9: {
70
+ 29: PositiveSequenceStrategy<number, number, number>;
71
+ 22: PositiveSequenceStrategy<number, number, number>;
72
+ 6: StackingStrategy;
73
+ 10: StackingStrategy;
74
+ };
75
+ 8: {
76
+ 13: PositiveSequenceStrategy<number, number, number>;
77
+ };
78
+ 11: {
79
+ 14: StackingStrategy;
80
+ };
81
+ 10: {
82
+ 23: PositiveSequenceStrategy<number, number, number>;
83
+ };
84
+ 12: {
85
+ 32: FillGapStrategy<number, number, number>;
86
+ 12: StackingStrategy;
87
+ };
88
+ 17: {
89
+ 17: PositiveSequenceStrategy<number, number, number>;
90
+ 18: PositiveSequenceStrategy<number, number, number>;
91
+ 20: FillGapStrategy<number, number, number>;
92
+ };
93
+ 18: {
94
+ 19: PositiveSequenceStrategy<number, number, number>;
95
+ 33: PositiveSequenceStrategy<number, number, number>;
96
+ };
97
+ 15: {
98
+ 35: FillGapStrategy<number, number, number>;
99
+ };
100
+ 19: {
101
+ 15: PositiveSequenceStrategy<number, number, number>;
102
+ 37: PositiveSequenceStrategy<number, number, number>;
103
+ };
104
+ };
105
+ hidingStrategies: {
106
+ 1: {
107
+ 4: HidingStrategy<number, number>;
108
+ };
109
+ 2: {
110
+ 7: HidingStrategy<number, number>;
111
+ };
112
+ 3: {
113
+ 9: HidingStrategy<PlayerColor, LocationType>;
114
+ };
115
+ 17: {
116
+ 17: HidingStrategy<number, number>;
117
+ };
118
+ };
119
+ isUnpredictableMove(move: MaterialMove<PlayerColor, MaterialType, LocationType, RuleId>, player: PlayerColor): boolean;
120
+ getScore(player: PlayerColor): number;
121
+ giveTime(): number;
122
+ }
123
+ //# sourceMappingURL=GreyluneRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneRules.d.ts","sourceRoot":"","sources":["../src/GreyluneRules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,mBAAmB,EACnB,cAAc,EAGd,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACV,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAa/C,qBAAa,aACX,SAAQ,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CACnE,YAAW,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC;IAE/I,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;MAyBJ;IAsCD,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkDlB;IAMD,gBAAgB;;;;;;;;;;;;;MAKf;IAOD,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAErH;IAQD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEpC;IAED,QAAQ,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,122 @@
1
+ import { FillGapStrategy, hideFront, HiddenMaterialRules, hideItemId, isStartRule, PositiveSequenceStrategy, StackingStrategy } from '@gamepark/rules-api';
2
+ import { LocationType } from './material/LocationType';
3
+ import { MaterialType } from './material/MaterialType';
4
+ import { playerVp } from './material/PlayerState';
5
+ import { ActivateCardRule } from './rules/ActivateCardRule';
6
+ import { AutumnRule } from './rules/AutumnRule';
7
+ import { BonusTokenRule } from './rules/BonusTokenRule';
8
+ import { ChooseOutcomeRule } from './rules/ChooseOutcomeRule';
9
+ import { ChooseSkillRule } from './rules/ChooseSkillRule';
10
+ import { DiscardItemRule } from './rules/DiscardItemRule';
11
+ import { EventRule } from './rules/EventRule';
12
+ import { FinalScoringRule, scoreStillToCount } from './rules/FinalScoringRule';
13
+ import { PlaceVillagerRule } from './rules/PlaceVillagerRule';
14
+ import { ReactionRule } from './rules/ReactionRule';
15
+ import { ResolveEffectsRule } from './rules/ResolveEffectsRule';
16
+ import { ResolveEncounterRule } from './rules/ResolveEncounterRule';
17
+ import { ResolveQuestRule } from './rules/ResolveQuestRule';
18
+ import { RuleId } from './rules/RuleId';
19
+ import { SpecialActionRule } from './rules/SpecialActionRule';
20
+ import { SpringRule } from './rules/SpringRule';
21
+ import { StraightenCardRule } from './rules/StraightenCardRule';
22
+ import { SummerRule } from './rules/SummerRule';
23
+ import { TellStoryRule } from './rules/TellStoryRule';
24
+ import { TravelRule } from './rules/TravelRule';
25
+ import { UseItemRule } from './rules/UseItemRule';
26
+ import { WinterRule } from './rules/WinterRule';
27
+ const hideEventTile = (item) => (item.location.rotation ? [] : hideItemId(item));
28
+ export class GreyluneRules extends HiddenMaterialRules {
29
+ rules = {
30
+ [RuleId.Winter]: WinterRule,
31
+ [RuleId.Spring]: SpringRule,
32
+ [RuleId.Summer]: SummerRule,
33
+ [RuleId.Autumn]: AutumnRule,
34
+ [RuleId.ActivateCard]: ActivateCardRule,
35
+ [RuleId.UseItem]: UseItemRule,
36
+ [RuleId.DiscardItem]: DiscardItemRule,
37
+ [RuleId.Event]: EventRule,
38
+ [RuleId.SpecialAction]: SpecialActionRule,
39
+ [RuleId.Travel]: TravelRule,
40
+ [RuleId.ResolveEncounter]: ResolveEncounterRule,
41
+ [RuleId.ChooseOutcome]: ChooseOutcomeRule,
42
+ [RuleId.ResolveQuest]: ResolveQuestRule,
43
+ [RuleId.TellStory]: TellStoryRule,
44
+ [RuleId.StraightenCard]: StraightenCardRule,
45
+ [RuleId.PlaceVillager]: PlaceVillagerRule,
46
+ [RuleId.ChooseSkill]: ChooseSkillRule,
47
+ [RuleId.BonusToken]: BonusTokenRule,
48
+ [RuleId.Reaction]: ReactionRule,
49
+ [RuleId.ResolveEffects]: ResolveEffectsRule,
50
+ [RuleId.QuestsScoring]: FinalScoringRule,
51
+ [RuleId.CompanionsScoring]: FinalScoringRule,
52
+ [RuleId.ItemsScoring]: FinalScoringRule,
53
+ [RuleId.SkillsScoring]: FinalScoringRule
54
+ };
55
+ locationsStrategies = {
56
+ [MaterialType.VillageCard]: {
57
+ [LocationType.VillageDeck]: new PositiveSequenceStrategy(),
58
+ [LocationType.Companions]: new PositiveSequenceStrategy(),
59
+ [LocationType.Items]: new PositiveSequenceStrategy()
60
+ },
61
+ [MaterialType.EncounterCard]: {
62
+ [LocationType.EncounterDeck]: new PositiveSequenceStrategy(),
63
+ [LocationType.EncounterRow]: new PositiveSequenceStrategy(),
64
+ [LocationType.UntoldStories]: new PositiveSequenceStrategy(),
65
+ [LocationType.ToldStories]: new PositiveSequenceStrategy()
66
+ },
67
+ [MaterialType.EventTile]: {
68
+ [LocationType.EventPile]: new PositiveSequenceStrategy()
69
+ },
70
+ [MaterialType.Villager]: {
71
+ [LocationType.ActiveVillagers]: new PositiveSequenceStrategy(),
72
+ [LocationType.VillagerReserve]: new PositiveSequenceStrategy(),
73
+ [LocationType.VillageGap]: new StackingStrategy(),
74
+ [LocationType.EventSpace]: new StackingStrategy()
75
+ },
76
+ [MaterialType.Adventurer]: {
77
+ [LocationType.Area]: new PositiveSequenceStrategy()
78
+ },
79
+ [MaterialType.ScoreMarker]: {
80
+ [LocationType.ScoreTrack]: new StackingStrategy()
81
+ },
82
+ [MaterialType.SeasonMarker]: {
83
+ [LocationType.SeasonTrack]: new PositiveSequenceStrategy()
84
+ },
85
+ [MaterialType.QuestMarker]: {
86
+ [LocationType.QuestMarkerSpace]: new FillGapStrategy(),
87
+ [LocationType.QuestRewardSpace]: new StackingStrategy()
88
+ },
89
+ [MaterialType.Seal]: {
90
+ [LocationType.SealStack]: new PositiveSequenceStrategy(),
91
+ [LocationType.SealDiscard]: new PositiveSequenceStrategy(),
92
+ [LocationType.CardSeal]: new FillGapStrategy()
93
+ },
94
+ [MaterialType.IncomeToken]: {
95
+ [LocationType.IncomeTokenStock]: new PositiveSequenceStrategy(),
96
+ [LocationType.IncomeTokenSpace]: new PositiveSequenceStrategy()
97
+ },
98
+ [MaterialType.BonusToken]: {
99
+ [LocationType.BonusTokens]: new FillGapStrategy()
100
+ },
101
+ [MaterialType.VpToken]: {
102
+ [LocationType.VpTokenStack]: new PositiveSequenceStrategy(),
103
+ [LocationType.PlayerVpTokens]: new PositiveSequenceStrategy()
104
+ }
105
+ };
106
+ hidingStrategies = {
107
+ [MaterialType.VillageCard]: { [LocationType.VillageDeck]: hideFront },
108
+ [MaterialType.EncounterCard]: { [LocationType.EncounterDeck]: hideFront },
109
+ [MaterialType.EventTile]: { [LocationType.EventPile]: hideEventTile },
110
+ [MaterialType.Seal]: { [LocationType.SealStack]: hideItemId }
111
+ };
112
+ isUnpredictableMove(move, player) {
113
+ return (isStartRule(move) && move.id === RuleId.Winter) || super.isUnpredictableMove(move, player);
114
+ }
115
+ getScore(player) {
116
+ return playerVp(this, player) + scoreStillToCount(this, player, this.game.rule?.id);
117
+ }
118
+ giveTime() {
119
+ return 60;
120
+ }
121
+ }
122
+ //# sourceMappingURL=GreyluneRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneRules.js","sourceRoot":"","sources":["../src/GreyluneRules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { MaterialGameSetup } from '@gamepark/rules-api';
2
+ import { GreyluneOptions } from './GreyluneOptions';
3
+ import { GreyluneRules } from './GreyluneRules';
4
+ import { LocationType } from './material/LocationType';
5
+ import { MaterialType } from './material/MaterialType';
6
+ import { PlayerColor } from './PlayerColor';
7
+ export declare class GreyluneSetup extends MaterialGameSetup<PlayerColor, MaterialType, LocationType, GreyluneOptions> {
8
+ Rules: typeof GreyluneRules;
9
+ setupMaterial(): void;
10
+ private setupVillageCards;
11
+ private setupEncounterCards;
12
+ private setupEventTiles;
13
+ private setupQuestTiles;
14
+ private setupBank;
15
+ private setupPlayer;
16
+ start(): void;
17
+ }
18
+ //# sourceMappingURL=GreyluneSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneSetup.d.ts","sourceRoot":"","sources":["../src/GreyluneSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAI/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAOtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAe3C,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC;IAC5G,KAAK,uBAAgB;IAErB,aAAa,SAcZ;IAQD,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAmCnB,KAAK,SAEJ;CACF"}
@@ -0,0 +1,88 @@
1
+ import { getEnumValues, MaterialGameSetup } from '@gamepark/rules-api';
2
+ import { range, shuffle } from 'es-toolkit';
3
+ import { ACTIVE_VILLAGERS, EVENT_TILES_REMOVED, QUEST_MARKERS, SEALS_PER_VALUE, STARTING_COINS, VILLAGE_CARDS_REMOVED } from './Constants';
4
+ import { GreyluneRules } from './GreyluneRules';
5
+ import { Area } from './material/Area';
6
+ import { encounterCardsOfPeriod, getEncounterCardPeriod } from './material/EncounterCard';
7
+ import { EventTile } from './material/EventTile';
8
+ import { LocationType } from './material/LocationType';
9
+ import { MaterialType } from './material/MaterialType';
10
+ import { Period } from './material/Period';
11
+ import { heroicQuestAreas, QuestTile } from './material/QuestTile';
12
+ import { BonusToken, coinUnits, IncomeToken, Seal } from './material/Tokens';
13
+ import { getVillageCardPeriod, villageCardsOfPeriod } from './material/VillageCard';
14
+ import { playerVillagers } from './material/Villager';
15
+ import { getVpToken, VpTokenValue } from './material/VpToken';
16
+ import { RuleId } from './rules/RuleId';
17
+ import { Season } from './Season';
18
+ import { encounterRowSize } from './Year';
19
+ export class GreyluneSetup extends MaterialGameSetup {
20
+ Rules = GreyluneRules;
21
+ setupMaterial() {
22
+ this.setupBank();
23
+ this.setupVillageCards();
24
+ this.setupEncounterCards();
25
+ this.setupEventTiles();
26
+ this.setupQuestTiles();
27
+ for (const player of this.players)
28
+ this.setupPlayer(player);
29
+ this.material(MaterialType.FirstPlayerToken).createItem({
30
+ location: { type: LocationType.FirstPlayerTokenSpace, player: this.players[this.players.length - 1] }
31
+ });
32
+ }
33
+ setupVillageCards() {
34
+ const cards = [
35
+ ...shuffle(villageCardsOfPeriod[Period.III]),
36
+ ...shuffle(villageCardsOfPeriod[Period.II]).slice(VILLAGE_CARDS_REMOVED),
37
+ ...shuffle(villageCardsOfPeriod[Period.I]).slice(VILLAGE_CARDS_REMOVED)
38
+ ];
39
+ this.material(MaterialType.VillageCard).createItems(cards.map((card) => ({ id: villageCardId(card), location: { type: LocationType.VillageDeck } })));
40
+ }
41
+ setupEncounterCards() {
42
+ const row = encounterRowSize(this.players.length);
43
+ const cards = [
44
+ ...shuffle(encounterCardsOfPeriod[Period.III]).slice(0, row),
45
+ ...shuffle(encounterCardsOfPeriod[Period.II]).slice(0, 2 * row),
46
+ ...shuffle(encounterCardsOfPeriod[Period.I]).slice(0, 2 * row)
47
+ ];
48
+ this.material(MaterialType.EncounterCard).createItems(cards.map((card) => ({ id: encounterCardId(card), location: { type: LocationType.EncounterDeck } })));
49
+ }
50
+ setupEventTiles() {
51
+ const tiles = shuffle(getEnumValues(EventTile)).slice(EVENT_TILES_REMOVED);
52
+ this.material(MaterialType.EventTile).createItems(tiles.map((id) => ({ id, location: { type: LocationType.EventPile } })));
53
+ }
54
+ setupQuestTiles() {
55
+ const quests = shuffle(getEnumValues(QuestTile));
56
+ this.material(MaterialType.QuestTile).createItems(heroicQuestAreas.map((area, index) => ({
57
+ id: quests[index],
58
+ location: { type: LocationType.QuestTileSpace, id: area }
59
+ })));
60
+ }
61
+ setupBank() {
62
+ const seals = shuffle(getEnumValues(Seal).flatMap((seal) => range(SEALS_PER_VALUE).map(() => seal)));
63
+ this.material(MaterialType.Seal).createItems(seals.map((id) => ({ id, location: { type: LocationType.SealStack } })));
64
+ this.material(MaterialType.IncomeToken).createItems(getEnumValues(IncomeToken).map((id) => ({ id, location: { type: LocationType.IncomeTokenStock } })));
65
+ }
66
+ setupPlayer(player) {
67
+ this.material(MaterialType.Adventurer).createItem({ id: player, location: { type: LocationType.Area, id: Area.Village } });
68
+ this.material(MaterialType.ScoreMarker).createItem({ id: player, location: { type: LocationType.ScoreTrack, x: 0 } });
69
+ this.material(MaterialType.SeasonMarker).createItem({ id: player, location: { type: LocationType.SeasonTrack, id: Season.Spring } });
70
+ this.material(MaterialType.StrengthMarker).createItem({ location: { type: LocationType.StrengthTrack, player, x: 0 } });
71
+ this.material(MaterialType.MagicMarker).createItem({ location: { type: LocationType.MagicTrack, player, x: 0 } });
72
+ this.material(MaterialType.QuestMarker).createItems(range(QUEST_MARKERS).map(() => ({ id: player, location: { type: LocationType.QuestMarkerSpace, player } })));
73
+ const villagers = shuffle(playerVillagers(player));
74
+ this.material(MaterialType.Villager).createItems([
75
+ ...villagers.slice(0, ACTIVE_VILLAGERS).map((id) => ({ id, location: { type: LocationType.ActiveVillagers, player } })),
76
+ ...villagers.slice(ACTIVE_VILLAGERS).map((id) => ({ id, location: { type: LocationType.VillagerReserve, player } }))
77
+ ]);
78
+ this.material(MaterialType.BonusToken).createItems(getEnumValues(BonusToken).map((id) => ({ id, location: { type: LocationType.BonusTokens, player } })));
79
+ this.material(MaterialType.VpToken).createItems(getEnumValues(VpTokenValue).map((value) => ({ id: getVpToken(player, value), location: { type: LocationType.VpTokenStack, id: value } })));
80
+ this.material(MaterialType.Coin).money(coinUnits).addMoney(STARTING_COINS, { type: LocationType.PlayerCoins, player });
81
+ }
82
+ start() {
83
+ this.startRule(RuleId.Winter);
84
+ }
85
+ }
86
+ const villageCardId = (front) => ({ front, back: getVillageCardPeriod(front) });
87
+ const encounterCardId = (front) => ({ front, back: getEncounterCardPeriod(front) });
88
+ //# sourceMappingURL=GreyluneSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreyluneSetup.js","sourceRoot":"","sources":["../src/GreyluneSetup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare enum Memory {
2
+ Gains = 1,
3
+ CurrentGain = 2,
4
+ ActivatedCard = 3,
5
+ ResolvedEncounter = 4,
6
+ LastTilted = 5,
7
+ Ability = 6,
8
+ SpentVillager = 7,
9
+ TravelDistance = 8,
10
+ WentAdventuring = 9,
11
+ StoryRewards = 10,
12
+ StoryTold = 11,
13
+ StoryBoost = 12,
14
+ TemporaryForce = 13,
15
+ TemporaryMagic = 14,
16
+ IgnoredConditions = 15,
17
+ Trigger = 16,
18
+ Resume = 17,
19
+ CostReduction = 18,
20
+ SealValue = 19
21
+ }
22
+ //# sourceMappingURL=Memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../src/Memory.ts"],"names":[],"mappings":"AAOA,oBAAY,MAAM;IAKhB,KAAK,IAAI;IAGT,WAAW,IAAA;IAGX,aAAa,IAAA;IAGb,iBAAiB,IAAA;IAGjB,UAAU,IAAA;IAGV,OAAO,IAAA;IAGP,aAAa,IAAA;IAGb,cAAc,IAAA;IAOd,eAAe,IAAA;IAMf,YAAY,KAAA;IACZ,SAAS,KAAA;IAET,UAAU,KAAA;IAOV,cAAc,KAAA;IACd,cAAc,KAAA;IACd,iBAAiB,KAAA;IAGjB,OAAO,KAAA;IAGP,MAAM,KAAA;IAMN,aAAa,KAAA;IAOb,SAAS,KAAA;CACV"}
package/dist/Memory.js ADDED
@@ -0,0 +1,23 @@
1
+ export var Memory;
2
+ (function (Memory) {
3
+ Memory[Memory["Gains"] = 1] = "Gains";
4
+ Memory[Memory["CurrentGain"] = 2] = "CurrentGain";
5
+ Memory[Memory["ActivatedCard"] = 3] = "ActivatedCard";
6
+ Memory[Memory["ResolvedEncounter"] = 4] = "ResolvedEncounter";
7
+ Memory[Memory["LastTilted"] = 5] = "LastTilted";
8
+ Memory[Memory["Ability"] = 6] = "Ability";
9
+ Memory[Memory["SpentVillager"] = 7] = "SpentVillager";
10
+ Memory[Memory["TravelDistance"] = 8] = "TravelDistance";
11
+ Memory[Memory["WentAdventuring"] = 9] = "WentAdventuring";
12
+ Memory[Memory["StoryRewards"] = 10] = "StoryRewards";
13
+ Memory[Memory["StoryTold"] = 11] = "StoryTold";
14
+ Memory[Memory["StoryBoost"] = 12] = "StoryBoost";
15
+ Memory[Memory["TemporaryForce"] = 13] = "TemporaryForce";
16
+ Memory[Memory["TemporaryMagic"] = 14] = "TemporaryMagic";
17
+ Memory[Memory["IgnoredConditions"] = 15] = "IgnoredConditions";
18
+ Memory[Memory["Trigger"] = 16] = "Trigger";
19
+ Memory[Memory["Resume"] = 17] = "Resume";
20
+ Memory[Memory["CostReduction"] = 18] = "CostReduction";
21
+ Memory[Memory["SealValue"] = 19] = "SealValue";
22
+ })(Memory || (Memory = {}));
23
+ //# sourceMappingURL=Memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Memory.js","sourceRoot":"","sources":["../src/Memory.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,MAuEX;AAvED,WAAY,MAAM;IAKhB,qCAAS,CAAA;IAGT,iDAAW,CAAA;IAGX,qDAAa,CAAA;IAGb,6DAAiB,CAAA;IAGjB,+CAAU,CAAA;IAGV,yCAAO,CAAA;IAGP,qDAAa,CAAA;IAGb,uDAAc,CAAA;IAOd,yDAAe,CAAA;IAMf,oDAAY,CAAA;IACZ,8CAAS,CAAA;IAET,gDAAU,CAAA;IAOV,wDAAc,CAAA;IACd,wDAAc,CAAA;IACd,8DAAiB,CAAA;IAGjB,0CAAO,CAAA;IAGP,wCAAM,CAAA;IAMN,sDAAa,CAAA;IAOb,8CAAS,CAAA;AACX,CAAC,EAvEW,MAAM,KAAN,MAAM,QAuEjB"}
@@ -0,0 +1,7 @@
1
+ export declare enum PlayerColor {
2
+ Blue = 1,
3
+ Orange = 2,
4
+ Red = 3,
5
+ Purple = 4
6
+ }
7
+ //# sourceMappingURL=PlayerColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerColor.d.ts","sourceRoot":"","sources":["../src/PlayerColor.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,MAAM,IAAA;IACN,GAAG,IAAA;IACH,MAAM,IAAA;CACP"}
@@ -0,0 +1,8 @@
1
+ export var PlayerColor;
2
+ (function (PlayerColor) {
3
+ PlayerColor[PlayerColor["Blue"] = 1] = "Blue";
4
+ PlayerColor[PlayerColor["Orange"] = 2] = "Orange";
5
+ PlayerColor[PlayerColor["Red"] = 3] = "Red";
6
+ PlayerColor[PlayerColor["Purple"] = 4] = "Purple";
7
+ })(PlayerColor || (PlayerColor = {}));
8
+ //# sourceMappingURL=PlayerColor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerColor.js","sourceRoot":"","sources":["../src/PlayerColor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,iDAAM,CAAA;IACN,2CAAG,CAAA;IACH,iDAAM,CAAA;AACR,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB"}
@@ -0,0 +1,7 @@
1
+ export declare enum Season {
2
+ Winter = 1,
3
+ Spring = 2,
4
+ Summer = 3,
5
+ Autumn = 4
6
+ }
7
+ //# sourceMappingURL=Season.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Season.d.ts","sourceRoot":"","sources":["../src/Season.ts"],"names":[],"mappings":"AAIA,oBAAY,MAAM;IAChB,MAAM,IAAI;IACV,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;CACP"}
package/dist/Season.js ADDED
@@ -0,0 +1,8 @@
1
+ export var Season;
2
+ (function (Season) {
3
+ Season[Season["Winter"] = 1] = "Winter";
4
+ Season[Season["Spring"] = 2] = "Spring";
5
+ Season[Season["Summer"] = 3] = "Summer";
6
+ Season[Season["Autumn"] = 4] = "Autumn";
7
+ })(Season || (Season = {}));
8
+ //# sourceMappingURL=Season.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Season.js","sourceRoot":"","sources":["../src/Season.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,MAKX;AALD,WAAY,MAAM;IAChB,uCAAU,CAAA;IACV,uCAAM,CAAA;IACN,uCAAM,CAAA;IACN,uCAAM,CAAA;AACR,CAAC,EALW,MAAM,KAAN,MAAM,QAKjB"}
package/dist/Year.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { MaterialSource } from './material/MaterialSource';
2
+ import { Period } from './material/Period';
3
+ export declare const YEARS = 5;
4
+ export declare const encounterRowSize: (players: number) => number;
5
+ export declare const isLastYear: (source: MaterialSource) => boolean;
6
+ export declare const currentYear: (source: MaterialSource, players: number) => number;
7
+ export declare const yearPeriod: (year: number) => Period;
8
+ //# sourceMappingURL=Year.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Year.d.ts","sourceRoot":"","sources":["../src/Year.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,eAAO,MAAM,KAAK,IAAI,CAAA;AAGtB,eAAO,MAAM,gBAAgB,YAAa,MAAM,KAAG,MAAqB,CAAA;AAaxE,eAAO,MAAM,UAAU,WAAY,cAAc,KAAG,OAA6C,CAAA;AAGjG,eAAO,MAAM,WAAW,WAAY,cAAc,WAAW,MAAM,KAAG,MACQ,CAAA;AAG9E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MAAqE,CAAA"}
package/dist/Year.js ADDED
@@ -0,0 +1,10 @@
1
+ import { LocationType } from './material/LocationType';
2
+ import { MaterialType } from './material/MaterialType';
3
+ import { Period } from './material/Period';
4
+ export const YEARS = 5;
5
+ export const encounterRowSize = (players) => players + 3;
6
+ const encounterDeck = (source) => source.material(MaterialType.EncounterCard).location(LocationType.EncounterDeck);
7
+ export const isLastYear = (source) => encounterDeck(source).length === 0;
8
+ export const currentYear = (source, players) => YEARS - Math.floor(encounterDeck(source).length / encounterRowSize(players));
9
+ export const yearPeriod = (year) => (year <= 2 ? Period.I : year <= 4 ? Period.II : Period.III);
10
+ //# sourceMappingURL=Year.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Year.js","sourceRoot":"","sources":["../src/Year.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;AAGtB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,GAAG,CAAC,CAAA;AAUxE,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;AAGlI,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAsB,EAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAGjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,OAAe,EAAU,EAAE,CAC7E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AAG9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA"}