@gamepark/haati 0.0.0-stage → 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 (94) hide show
  1. package/dist/HaatiOptions.d.ts +4 -0
  2. package/dist/HaatiOptions.d.ts.map +1 -0
  3. package/dist/HaatiOptions.js +5 -0
  4. package/dist/HaatiOptions.js.map +1 -0
  5. package/dist/HaatiRules.d.ts +60 -0
  6. package/dist/HaatiRules.d.ts.map +1 -0
  7. package/dist/HaatiRules.js +69 -0
  8. package/dist/HaatiRules.js.map +1 -0
  9. package/dist/HaatiSetup.d.ts +11 -0
  10. package/dist/HaatiSetup.d.ts.map +1 -0
  11. package/dist/HaatiSetup.js +27 -0
  12. package/dist/HaatiSetup.js.map +1 -0
  13. package/dist/Memory.d.ts +5 -0
  14. package/dist/Memory.d.ts.map +1 -0
  15. package/dist/Memory.js +6 -0
  16. package/dist/Memory.js.map +1 -0
  17. package/dist/index.d.ts +4 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/material/Animal.d.ts +13 -0
  22. package/dist/material/Animal.d.ts.map +1 -0
  23. package/dist/material/Animal.js +22 -0
  24. package/dist/material/Animal.js.map +1 -0
  25. package/dist/material/Character.d.ts +25 -0
  26. package/dist/material/Character.d.ts.map +1 -0
  27. package/dist/material/Character.js +28 -0
  28. package/dist/material/Character.js.map +1 -0
  29. package/dist/material/Collection.d.ts +13 -0
  30. package/dist/material/Collection.d.ts.map +1 -0
  31. package/dist/material/Collection.js +22 -0
  32. package/dist/material/Collection.js.map +1 -0
  33. package/dist/material/LocationType.d.ts +18 -0
  34. package/dist/material/LocationType.d.ts.map +1 -0
  35. package/dist/material/LocationType.js +19 -0
  36. package/dist/material/LocationType.js.map +1 -0
  37. package/dist/material/MaterialSource.d.ts +7 -0
  38. package/dist/material/MaterialSource.d.ts.map +1 -0
  39. package/dist/material/MaterialSource.js +2 -0
  40. package/dist/material/MaterialSource.js.map +1 -0
  41. package/dist/material/MaterialType.d.ts +9 -0
  42. package/dist/material/MaterialType.d.ts.map +1 -0
  43. package/dist/material/MaterialType.js +10 -0
  44. package/dist/material/MaterialType.js.map +1 -0
  45. package/dist/material/Prestige.d.ts +23 -0
  46. package/dist/material/Prestige.d.ts.map +1 -0
  47. package/dist/material/Prestige.js +19 -0
  48. package/dist/material/Prestige.js.map +1 -0
  49. package/dist/rules/ChooseCardsRule.d.ts +13 -0
  50. package/dist/rules/ChooseCardsRule.d.ts.map +1 -0
  51. package/dist/rules/ChooseCardsRule.js +44 -0
  52. package/dist/rules/ChooseCardsRule.js.map +1 -0
  53. package/dist/rules/CustomMoveType.d.ts +5 -0
  54. package/dist/rules/CustomMoveType.d.ts.map +1 -0
  55. package/dist/rules/CustomMoveType.js +6 -0
  56. package/dist/rules/CustomMoveType.js.map +1 -0
  57. package/dist/rules/DiscardCharacterRule.d.ts +6 -0
  58. package/dist/rules/DiscardCharacterRule.d.ts.map +1 -0
  59. package/dist/rules/DiscardCharacterRule.js +15 -0
  60. package/dist/rules/DiscardCharacterRule.js.map +1 -0
  61. package/dist/rules/EndOfRoundRule.d.ts +11 -0
  62. package/dist/rules/EndOfRoundRule.d.ts.map +1 -0
  63. package/dist/rules/EndOfRoundRule.js +71 -0
  64. package/dist/rules/EndOfRoundRule.js.map +1 -0
  65. package/dist/rules/HaatiRule.d.ts +9 -0
  66. package/dist/rules/HaatiRule.d.ts.map +1 -0
  67. package/dist/rules/HaatiRule.js +43 -0
  68. package/dist/rules/HaatiRule.js.map +1 -0
  69. package/dist/rules/MoveAnimalRules.d.ts +28 -0
  70. package/dist/rules/MoveAnimalRules.d.ts.map +1 -0
  71. package/dist/rules/MoveAnimalRules.js +56 -0
  72. package/dist/rules/MoveAnimalRules.js.map +1 -0
  73. package/dist/rules/NewRoundRule.d.ts +11 -0
  74. package/dist/rules/NewRoundRule.d.ts.map +1 -0
  75. package/dist/rules/NewRoundRule.js +23 -0
  76. package/dist/rules/NewRoundRule.js.map +1 -0
  77. package/dist/rules/RefillHandRule.d.ts +8 -0
  78. package/dist/rules/RefillHandRule.d.ts.map +1 -0
  79. package/dist/rules/RefillHandRule.js +32 -0
  80. package/dist/rules/RefillHandRule.js.map +1 -0
  81. package/dist/rules/ResolveDuelRule.d.ts +23 -0
  82. package/dist/rules/ResolveDuelRule.d.ts.map +1 -0
  83. package/dist/rules/ResolveDuelRule.js +127 -0
  84. package/dist/rules/ResolveDuelRule.js.map +1 -0
  85. package/dist/rules/RevealDuelRule.d.ts +10 -0
  86. package/dist/rules/RevealDuelRule.d.ts.map +1 -0
  87. package/dist/rules/RevealDuelRule.js +36 -0
  88. package/dist/rules/RevealDuelRule.js.map +1 -0
  89. package/dist/rules/RuleId.d.ts +15 -0
  90. package/dist/rules/RuleId.d.ts.map +1 -0
  91. package/dist/rules/RuleId.js +16 -0
  92. package/dist/rules/RuleId.js.map +1 -0
  93. package/package.json +31 -3
  94. package/README.md +0 -3
@@ -0,0 +1,4 @@
1
+ import { OptionsSpecV2 } from '@gamepark/rules-api';
2
+ export type HaatiOptions = object;
3
+ export declare const HaatiOptionsSpecV2: OptionsSpecV2;
4
+ //# sourceMappingURL=HaatiOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiOptions.d.ts","sourceRoot":"","sources":["../src/HaatiOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKnD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAKjC,eAAO,MAAM,kBAAkB,EAAE,aAGhC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export const HaatiOptionsSpecV2 = {
2
+ specVersion: 2,
3
+ players: { min: 2, max: 2 }
4
+ };
5
+ //# sourceMappingURL=HaatiOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiOptions.js","sourceRoot":"","sources":["../src/HaatiOptions.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;CAC5B,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { CompetitiveScore, HidingSecretsStrategy, MaterialGame, MaterialItem, MaterialMove, PositiveSequenceStrategy, RollItem, SecretMaterialRules, TimeLimit } from '@gamepark/rules-api';
2
+ import { LocationType } from './material/LocationType';
3
+ import { MaterialType } from './material/MaterialType';
4
+ import { ChooseCardsRule } from './rules/ChooseCardsRule';
5
+ import { DiscardCharacterRule } from './rules/DiscardCharacterRule';
6
+ import { EndOfRoundRule } from './rules/EndOfRoundRule';
7
+ import { HunterRule, JungleElephantRule, JungleTigerRule, MaharajaRule, ThiefRule } from './rules/MoveAnimalRules';
8
+ import { NewRoundRule } from './rules/NewRoundRule';
9
+ import { RefillHandRule } from './rules/RefillHandRule';
10
+ import { ResolveDuelRule } from './rules/ResolveDuelRule';
11
+ import { RevealDuelRule } from './rules/RevealDuelRule';
12
+ export declare class HaatiRules extends SecretMaterialRules<number, MaterialType, LocationType> implements CompetitiveScore<MaterialGame<number, MaterialType, LocationType>, MaterialMove<number, MaterialType, LocationType>, number>, TimeLimit<MaterialGame<number, MaterialType, LocationType>, MaterialMove<number, MaterialType, LocationType>, number> {
13
+ rules: {
14
+ 1: typeof ChooseCardsRule;
15
+ 2: typeof RevealDuelRule;
16
+ 3: typeof ResolveDuelRule;
17
+ 4: typeof JungleElephantRule;
18
+ 5: typeof JungleTigerRule;
19
+ 6: typeof MaharajaRule;
20
+ 7: typeof ThiefRule;
21
+ 8: typeof HunterRule;
22
+ 9: typeof DiscardCharacterRule;
23
+ 10: typeof RefillHandRule;
24
+ 11: typeof EndOfRoundRule;
25
+ 12: typeof NewRoundRule;
26
+ };
27
+ hidingStrategies: {
28
+ 2: {
29
+ 2: HidingSecretsStrategy<number, LocationType>;
30
+ 3: import("@gamepark/rules-api").HidingStrategy<number, number>;
31
+ 7: <P extends number = number, L extends number = number>(item: MaterialItem<P, L>, player?: P) => string[];
32
+ 8: HidingSecretsStrategy<number, LocationType>;
33
+ };
34
+ 3: {
35
+ 5: import("@gamepark/rules-api").HidingStrategy<number, number>;
36
+ 7: <P extends number = number, L extends number = number>(item: MaterialItem<P, L>, player?: P) => string[];
37
+ 8: HidingSecretsStrategy<number, LocationType>;
38
+ };
39
+ };
40
+ locationsStrategies: {
41
+ 2: {
42
+ 2: PositiveSequenceStrategy<number, number, number>;
43
+ 3: PositiveSequenceStrategy<number, number, number>;
44
+ 4: PositiveSequenceStrategy<number, number, number>;
45
+ 7: PositiveSequenceStrategy<number, number, number>;
46
+ 8: PositiveSequenceStrategy<number, number, number>;
47
+ 9: PositiveSequenceStrategy<number, number, number>;
48
+ 10: PositiveSequenceStrategy<number, number, number>;
49
+ };
50
+ 3: {
51
+ 5: PositiveSequenceStrategy<number, number, number>;
52
+ 6: PositiveSequenceStrategy<number, number, number>;
53
+ 7: PositiveSequenceStrategy<number, number, number>;
54
+ };
55
+ };
56
+ roll(_move: RollItem<number, MaterialType, LocationType>): number;
57
+ getScore(player: number): number;
58
+ giveTime(): number;
59
+ }
60
+ //# sourceMappingURL=HaatiRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiRules.d.ts","sourceRoot":"","sources":["../src/HaatiRules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAGhB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,QAAQ,EACR,mBAAmB,EACnB,SAAS,EACV,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAWvD,qBAAa,UACX,SAAQ,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAC9D,YACE,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,EAC5H,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEvH,KAAK;;;;;;;;;;;;;MAaJ;IAED,gBAAgB;;;;;;;;;;;;MAaf;IAED,mBAAmB;;;;;;;;;;;;;;;MAelB;IAGD,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,CAEhE;IAGD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/B;IAED,QAAQ,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,69 @@
1
+ import { hideItemId, hideItemIdToOthers, PositiveSequenceStrategy, SecretMaterialRules } from '@gamepark/rules-api';
2
+ import { LocationType } from './material/LocationType';
3
+ import { MaterialType } from './material/MaterialType';
4
+ import { ChooseCardsRule } from './rules/ChooseCardsRule';
5
+ import { DiscardCharacterRule } from './rules/DiscardCharacterRule';
6
+ import { EndOfRoundRule } from './rules/EndOfRoundRule';
7
+ import { HunterRule, JungleElephantRule, JungleTigerRule, MaharajaRule, ThiefRule } from './rules/MoveAnimalRules';
8
+ import { NewRoundRule } from './rules/NewRoundRule';
9
+ import { RefillHandRule } from './rules/RefillHandRule';
10
+ import { ResolveDuelRule } from './rules/ResolveDuelRule';
11
+ import { RevealDuelRule } from './rules/RevealDuelRule';
12
+ import { RuleId } from './rules/RuleId';
13
+ const hideUnlessRotated = (item, player) => item.location.rotation ? [] : hideItemIdToOthers(item, player);
14
+ const hideItemIdUnlessRotated = (item) => item.location.rotation ? [] : ['id'];
15
+ export class HaatiRules extends SecretMaterialRules {
16
+ rules = {
17
+ [RuleId.ChooseCards]: ChooseCardsRule,
18
+ [RuleId.RevealDuel]: RevealDuelRule,
19
+ [RuleId.ResolveDuel]: ResolveDuelRule,
20
+ [RuleId.JungleElephant]: JungleElephantRule,
21
+ [RuleId.JungleTiger]: JungleTigerRule,
22
+ [RuleId.Maharaja]: MaharajaRule,
23
+ [RuleId.Thief]: ThiefRule,
24
+ [RuleId.Hunter]: HunterRule,
25
+ [RuleId.DiscardCharacter]: DiscardCharacterRule,
26
+ [RuleId.RefillHand]: RefillHandRule,
27
+ [RuleId.EndOfRound]: EndOfRoundRule,
28
+ [RuleId.NewRound]: NewRoundRule
29
+ };
30
+ hidingStrategies = {
31
+ [MaterialType.AnimalCard]: {
32
+ [LocationType.AnimalDeck]: hideItemIdUnlessRotated,
33
+ [LocationType.AnimalSetAside]: hideItemId,
34
+ [LocationType.PlayerHand]: hideItemIdToOthers,
35
+ [LocationType.PlayerDuel]: hideUnlessRotated
36
+ },
37
+ [MaterialType.CharacterCard]: {
38
+ [LocationType.CharacterDeck]: hideItemId,
39
+ [LocationType.PlayerHand]: hideItemIdToOthers,
40
+ [LocationType.PlayerDuel]: hideUnlessRotated
41
+ }
42
+ };
43
+ locationsStrategies = {
44
+ [MaterialType.AnimalCard]: {
45
+ [LocationType.AnimalDeck]: new PositiveSequenceStrategy(),
46
+ [LocationType.AnimalSetAside]: new PositiveSequenceStrategy(),
47
+ [LocationType.AnimalDiscard]: new PositiveSequenceStrategy(),
48
+ [LocationType.PlayerHand]: new PositiveSequenceStrategy(),
49
+ [LocationType.PlayerDuel]: new PositiveSequenceStrategy(),
50
+ [LocationType.Palace]: new PositiveSequenceStrategy(),
51
+ [LocationType.Jungle]: new PositiveSequenceStrategy()
52
+ },
53
+ [MaterialType.CharacterCard]: {
54
+ [LocationType.CharacterDeck]: new PositiveSequenceStrategy(),
55
+ [LocationType.CharacterDiscard]: new PositiveSequenceStrategy(),
56
+ [LocationType.PlayerHand]: new PositiveSequenceStrategy()
57
+ }
58
+ };
59
+ roll(_move) {
60
+ return Math.floor(Math.random() * 2);
61
+ }
62
+ getScore(player) {
63
+ return this.material(MaterialType.RoundVictoryToken).location(LocationType.PlayerRoundVictory).player(player).getQuantity();
64
+ }
65
+ giveTime() {
66
+ return 60;
67
+ }
68
+ }
69
+ //# sourceMappingURL=HaatiRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiRules.js","sourceRoot":"","sources":["../src/HaatiRules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { MaterialGameSetup } from '@gamepark/rules-api';
2
+ import { HaatiOptions } from './HaatiOptions';
3
+ import { HaatiRules } from './HaatiRules';
4
+ import { LocationType } from './material/LocationType';
5
+ import { MaterialType } from './material/MaterialType';
6
+ export declare class HaatiSetup extends MaterialGameSetup<number, MaterialType, LocationType, HaatiOptions> {
7
+ Rules: typeof HaatiRules;
8
+ setupMaterial(_options: HaatiOptions): void;
9
+ start(): void;
10
+ }
11
+ //# sourceMappingURL=HaatiSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiSetup.d.ts","sourceRoot":"","sources":["../src/HaatiSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAItD,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;IACjG,KAAK,oBAAa;IAElB,aAAa,CAAC,QAAQ,EAAE,YAAY,QAenC;IAED,KAAK,SAEJ;CACF"}
@@ -0,0 +1,27 @@
1
+ import { MaterialGameSetup } from '@gamepark/rules-api';
2
+ import { shuffle } from 'es-toolkit';
3
+ import { HaatiRules } from './HaatiRules';
4
+ import { animalCards } from './material/Animal';
5
+ import { characterCards } from './material/Character';
6
+ import { Collection } from './material/Collection';
7
+ import { LocationType } from './material/LocationType';
8
+ import { MaterialType } from './material/MaterialType';
9
+ import { dealRound } from './rules/NewRoundRule';
10
+ import { RuleId } from './rules/RuleId';
11
+ export class HaatiSetup extends MaterialGameSetup {
12
+ Rules = HaatiRules;
13
+ setupMaterial(_options) {
14
+ this.material(MaterialType.CollectionToken).createItems([Collection.Palace, Collection.Jungle].map((id) => ({
15
+ id,
16
+ location: { type: LocationType.CollectionSpot, id, rotation: Math.floor(Math.random() * 2) }
17
+ })));
18
+ this.material(MaterialType.RoundVictoryToken).createItem({ location: { type: LocationType.Reserve }, quantity: 2 });
19
+ this.material(MaterialType.CharacterCard).createItems(shuffle(characterCards).map((id) => ({ id, location: { type: LocationType.CharacterDeck } })));
20
+ this.material(MaterialType.AnimalCard).createItems(shuffle(animalCards).map((id) => ({ id, location: { type: LocationType.AnimalSetAside } })));
21
+ dealRound(this, this.players);
22
+ }
23
+ start() {
24
+ this.startSimultaneousRule(RuleId.ChooseCards);
25
+ }
26
+ }
27
+ //# sourceMappingURL=HaatiSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HaatiSetup.js","sourceRoot":"","sources":["../src/HaatiSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,OAAO,UAAW,SAAQ,iBAAmE;IACjG,KAAK,GAAG,UAAU,CAAA;IAElB,aAAa,CAAC,QAAsB;QAElC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,WAAW,CACrD,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,EAAE;YACF,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;SAC7F,CAAC,CAAC,CACJ,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QAEnH,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEpJ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAC/I,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export declare enum Memory {
2
+ DuelWinner = 1,
3
+ RoundWinner = 2
4
+ }
5
+ //# sourceMappingURL=Memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../src/Memory.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAEhB,UAAU,IAAI;IAEd,WAAW,IAAA;CACZ"}
package/dist/Memory.js ADDED
@@ -0,0 +1,6 @@
1
+ export var Memory;
2
+ (function (Memory) {
3
+ Memory[Memory["DuelWinner"] = 1] = "DuelWinner";
4
+ Memory[Memory["RoundWinner"] = 2] = "RoundWinner";
5
+ })(Memory || (Memory = {}));
6
+ //# sourceMappingURL=Memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Memory.js","sourceRoot":"","sources":["../src/Memory.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,MAKX;AALD,WAAY,MAAM;IAEhB,+CAAc,CAAA;IAEd,iDAAW,CAAA;AACb,CAAC,EALW,MAAM,KAAN,MAAM,QAKjB"}
@@ -0,0 +1,4 @@
1
+ export { HaatiRules } from './HaatiRules';
2
+ export { HaatiOptionsSpecV2 } from './HaatiOptions';
3
+ export { HaatiSetup } from './HaatiSetup';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { HaatiRules } from './HaatiRules';
2
+ export { HaatiOptionsSpecV2 } from './HaatiOptions';
3
+ export { HaatiSetup } from './HaatiSetup';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,13 @@
1
+ export declare enum Animal {
2
+ Elephant = 1,
3
+ Tiger = 2,
4
+ Mouse = 3
5
+ }
6
+ export declare const animals: Animal[];
7
+ export type AnimalCard = number;
8
+ export declare const animalCards: AnimalCard[];
9
+ export declare const getAnimal: (card: AnimalCard) => Animal;
10
+ export declare const getValue: (card: AnimalCard) => number;
11
+ export declare const beats: (a: AnimalCard, b: AnimalCard) => boolean;
12
+ export declare const hasCollection: (cards: AnimalCard[]) => boolean;
13
+ //# sourceMappingURL=Animal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Animal.d.ts","sourceRoot":"","sources":["../../src/material/Animal.ts"],"names":[],"mappings":"AAEA,oBAAY,MAAM;IAChB,QAAQ,IAAI;IACZ,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,eAAO,MAAM,OAAO,UAAwB,CAAA;AAG5C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,eAAO,MAAM,WAAW,EAAE,UAAU,EAA0F,CAAA;AAE9H,eAAO,MAAM,SAAS,SAAU,UAAU,KAAG,MAA+B,CAAA;AAC5E,eAAO,MAAM,QAAQ,SAAU,UAAU,KAAG,MAAmB,CAAA;AAU/D,eAAO,MAAM,KAAK,MAAO,UAAU,KAAK,UAAU,KAAG,OAC4C,CAAA;AAGjG,eAAO,MAAM,aAAa,UAAW,UAAU,EAAE,KAAG,OAGnD,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { getEnumValues } from '@gamepark/rules-api';
2
+ export var Animal;
3
+ (function (Animal) {
4
+ Animal[Animal["Elephant"] = 1] = "Elephant";
5
+ Animal[Animal["Tiger"] = 2] = "Tiger";
6
+ Animal[Animal["Mouse"] = 3] = "Mouse";
7
+ })(Animal || (Animal = {}));
8
+ export const animals = getEnumValues(Animal);
9
+ export const animalCards = animals.flatMap((animal) => Array.from({ length: 8 }, (_, i) => animal * 10 + i + 1));
10
+ export const getAnimal = (card) => Math.floor(card / 10);
11
+ export const getValue = (card) => card % 10;
12
+ const prey = {
13
+ [Animal.Elephant]: Animal.Tiger,
14
+ [Animal.Tiger]: Animal.Mouse,
15
+ [Animal.Mouse]: Animal.Elephant
16
+ };
17
+ export const beats = (a, b) => getAnimal(a) === getAnimal(b) ? getValue(a) > getValue(b) : prey[getAnimal(a)] === getAnimal(b);
18
+ export const hasCollection = (cards) => {
19
+ const values = new Set(cards.map(getValue));
20
+ return [...values].some((value) => [1, 2, 3].every((i) => values.has(value + i)));
21
+ };
22
+ //# sourceMappingURL=Animal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Animal.js","sourceRoot":"","sources":["../../src/material/Animal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,2CAAY,CAAA;IACZ,qCAAK,CAAA;IACL,qCAAK,CAAA;AACP,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AAK5C,MAAM,CAAC,MAAM,WAAW,GAAiB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAE9H,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,IAAI,GAAG,EAAE,CAAA;AAG/D,MAAM,IAAI,GAA2B;IACnC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK;IAC/B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK;IAC5B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ;CAChC,CAAA;AAGD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,CAAa,EAAW,EAAE,CAC7D,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAA;AAGjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAW,EAAE;IAC5D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ export declare enum Character {
2
+ Merchant = 1,
3
+ Maharaja = 2,
4
+ Thief = 3,
5
+ Hunter = 4
6
+ }
7
+ export declare enum Bet {
8
+ Win = 1,
9
+ Lose = 2
10
+ }
11
+ export declare enum CharacterCard {
12
+ MerchantWin = 11,
13
+ MerchantLose = 12,
14
+ MaharajaWin = 21,
15
+ MaharajaLose = 22,
16
+ ThiefWin = 31,
17
+ ThiefLose = 32,
18
+ HunterWin = 41,
19
+ HunterLose = 42
20
+ }
21
+ export declare const characterCards: CharacterCard[];
22
+ export declare const getCharacter: (card: CharacterCard) => Character;
23
+ export declare const getBet: (card: CharacterCard) => Bet;
24
+ export declare const CHARACTER_HAND_LIMIT = 2;
25
+ //# sourceMappingURL=Character.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Character.d.ts","sourceRoot":"","sources":["../../src/material/Character.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,QAAQ,IAAI;IACZ,QAAQ,IAAA;IACR,KAAK,IAAA;IACL,MAAM,IAAA;CACP;AAGD,oBAAY,GAAG;IACb,GAAG,IAAI;IACP,IAAI,IAAA;CACL;AAED,oBAAY,aAAa;IACvB,WAAW,KAAK;IAChB,YAAY,KAAA;IACZ,WAAW,KAAK;IAChB,YAAY,KAAA;IACZ,QAAQ,KAAK;IACb,SAAS,KAAA;IACT,SAAS,KAAK;IACd,UAAU,KAAA;CACX;AAED,eAAO,MAAM,cAAc,iBAAwF,CAAA;AAEnH,eAAO,MAAM,YAAY,SAAU,aAAa,KAAG,SAAkC,CAAA;AACrF,eAAO,MAAM,MAAM,SAAU,aAAa,KAAG,GAAgB,CAAA;AAG7D,eAAO,MAAM,oBAAoB,IAAI,CAAA"}
@@ -0,0 +1,28 @@
1
+ export var Character;
2
+ (function (Character) {
3
+ Character[Character["Merchant"] = 1] = "Merchant";
4
+ Character[Character["Maharaja"] = 2] = "Maharaja";
5
+ Character[Character["Thief"] = 3] = "Thief";
6
+ Character[Character["Hunter"] = 4] = "Hunter";
7
+ })(Character || (Character = {}));
8
+ export var Bet;
9
+ (function (Bet) {
10
+ Bet[Bet["Win"] = 1] = "Win";
11
+ Bet[Bet["Lose"] = 2] = "Lose";
12
+ })(Bet || (Bet = {}));
13
+ export var CharacterCard;
14
+ (function (CharacterCard) {
15
+ CharacterCard[CharacterCard["MerchantWin"] = 11] = "MerchantWin";
16
+ CharacterCard[CharacterCard["MerchantLose"] = 12] = "MerchantLose";
17
+ CharacterCard[CharacterCard["MaharajaWin"] = 21] = "MaharajaWin";
18
+ CharacterCard[CharacterCard["MaharajaLose"] = 22] = "MaharajaLose";
19
+ CharacterCard[CharacterCard["ThiefWin"] = 31] = "ThiefWin";
20
+ CharacterCard[CharacterCard["ThiefLose"] = 32] = "ThiefLose";
21
+ CharacterCard[CharacterCard["HunterWin"] = 41] = "HunterWin";
22
+ CharacterCard[CharacterCard["HunterLose"] = 42] = "HunterLose";
23
+ })(CharacterCard || (CharacterCard = {}));
24
+ export const characterCards = Object.values(CharacterCard).filter((v) => typeof v === 'number');
25
+ export const getCharacter = (card) => Math.floor(card / 10);
26
+ export const getBet = (card) => card % 10;
27
+ export const CHARACTER_HAND_LIMIT = 2;
28
+ //# sourceMappingURL=Character.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Character.js","sourceRoot":"","sources":["../../src/material/Character.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,iDAAY,CAAA;IACZ,iDAAQ,CAAA;IACR,2CAAK,CAAA;IACL,6CAAM,CAAA;AACR,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAGD,MAAM,CAAN,IAAY,GAGX;AAHD,WAAY,GAAG;IACb,2BAAO,CAAA;IACP,6BAAI,CAAA;AACN,CAAC,EAHW,GAAG,KAAH,GAAG,QAGd;AAED,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,gEAAgB,CAAA;IAChB,kEAAY,CAAA;IACZ,gEAAgB,CAAA;IAChB,kEAAY,CAAA;IACZ,0DAAa,CAAA;IACb,4DAAS,CAAA;IACT,4DAAc,CAAA;IACd,8DAAU,CAAA;AACZ,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;AAEnH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAa,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAO,EAAE,CAAC,IAAI,GAAG,EAAE,CAAA;AAG7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { LocationType } from './LocationType';
2
+ export declare enum Collection {
3
+ Palace = 1,
4
+ Jungle = 2
5
+ }
6
+ export type Reward = {
7
+ favor: number;
8
+ honor: number;
9
+ };
10
+ export declare const collectionRewards: Record<Collection, [Reward, Reward]>;
11
+ export declare const getCollectionReward: (collection: Collection, face?: number) => Reward;
12
+ export declare const collectionPlace: Record<Collection, LocationType>;
13
+ //# sourceMappingURL=Collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/material/Collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,oBAAY,UAAU;IACpB,MAAM,IAAI;IACV,MAAM,IAAA;CACP;AAED,MAAM,MAAM,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAMrD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAA;AAED,eAAO,MAAM,mBAAmB,eAAgB,UAAU,oBAAa,MAAqD,CAAA;AAE5H,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAG5D,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { LocationType } from './LocationType';
2
+ export var Collection;
3
+ (function (Collection) {
4
+ Collection[Collection["Palace"] = 1] = "Palace";
5
+ Collection[Collection["Jungle"] = 2] = "Jungle";
6
+ })(Collection || (Collection = {}));
7
+ export const collectionRewards = {
8
+ [Collection.Palace]: [
9
+ { favor: 3, honor: 0 },
10
+ { favor: 1, honor: 1 }
11
+ ],
12
+ [Collection.Jungle]: [
13
+ { favor: 3, honor: 1 },
14
+ { favor: 2, honor: 2 }
15
+ ]
16
+ };
17
+ export const getCollectionReward = (collection, face = 0) => collectionRewards[collection][face ? 1 : 0];
18
+ export const collectionPlace = {
19
+ [Collection.Palace]: LocationType.Palace,
20
+ [Collection.Jungle]: LocationType.Jungle
21
+ };
22
+ //# sourceMappingURL=Collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/material/Collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,+CAAU,CAAA;IACV,+CAAM,CAAA;AACR,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAQD,MAAM,CAAC,MAAM,iBAAiB,GAAyC;IACrE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACtB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;KACvB;IACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACtB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;KACvB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAE,IAAI,GAAG,CAAC,EAAU,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5H,MAAM,CAAC,MAAM,eAAe,GAAqC;IAC/D,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM;IACxC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM;CACzC,CAAA"}
@@ -0,0 +1,18 @@
1
+ export declare enum LocationType {
2
+ Board = 1,
3
+ AnimalDeck = 2,
4
+ AnimalSetAside = 3,
5
+ AnimalDiscard = 4,
6
+ CharacterDeck = 5,
7
+ CharacterDiscard = 6,
8
+ PlayerHand = 7,
9
+ PlayerDuel = 8,
10
+ Palace = 9,
11
+ Jungle = 10,
12
+ CollectionSpot = 11,
13
+ PlayerCollection = 12,
14
+ Reserve = 13,
15
+ PlayerRoundVictory = 14,
16
+ PlayerPrestige = 15
17
+ }
18
+ //# sourceMappingURL=LocationType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocationType.d.ts","sourceRoot":"","sources":["../../src/material/LocationType.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,KAAK,IAAI;IAKT,UAAU,IAAA;IAEV,cAAc,IAAA;IAEd,aAAa,IAAA;IACb,aAAa,IAAA;IACb,gBAAgB,IAAA;IAChB,UAAU,IAAA;IAEV,UAAU,IAAA;IACV,MAAM,IAAA;IACN,MAAM,KAAA;IAEN,cAAc,KAAA;IAEd,gBAAgB,KAAA;IAEhB,OAAO,KAAA;IACP,kBAAkB,KAAA;IAElB,cAAc,KAAA;CACf"}
@@ -0,0 +1,19 @@
1
+ export var LocationType;
2
+ (function (LocationType) {
3
+ LocationType[LocationType["Board"] = 1] = "Board";
4
+ LocationType[LocationType["AnimalDeck"] = 2] = "AnimalDeck";
5
+ LocationType[LocationType["AnimalSetAside"] = 3] = "AnimalSetAside";
6
+ LocationType[LocationType["AnimalDiscard"] = 4] = "AnimalDiscard";
7
+ LocationType[LocationType["CharacterDeck"] = 5] = "CharacterDeck";
8
+ LocationType[LocationType["CharacterDiscard"] = 6] = "CharacterDiscard";
9
+ LocationType[LocationType["PlayerHand"] = 7] = "PlayerHand";
10
+ LocationType[LocationType["PlayerDuel"] = 8] = "PlayerDuel";
11
+ LocationType[LocationType["Palace"] = 9] = "Palace";
12
+ LocationType[LocationType["Jungle"] = 10] = "Jungle";
13
+ LocationType[LocationType["CollectionSpot"] = 11] = "CollectionSpot";
14
+ LocationType[LocationType["PlayerCollection"] = 12] = "PlayerCollection";
15
+ LocationType[LocationType["Reserve"] = 13] = "Reserve";
16
+ LocationType[LocationType["PlayerRoundVictory"] = 14] = "PlayerRoundVictory";
17
+ LocationType[LocationType["PlayerPrestige"] = 15] = "PlayerPrestige";
18
+ })(LocationType || (LocationType = {}));
19
+ //# sourceMappingURL=LocationType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocationType.js","sourceRoot":"","sources":["../../src/material/LocationType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YA2BX;AA3BD,WAAY,YAAY;IACtB,iDAAS,CAAA;IAKT,2DAAU,CAAA;IAEV,mEAAc,CAAA;IAEd,iEAAa,CAAA;IACb,iEAAa,CAAA;IACb,uEAAgB,CAAA;IAChB,2DAAU,CAAA;IAEV,2DAAU,CAAA;IACV,mDAAM,CAAA;IACN,oDAAM,CAAA;IAEN,oEAAc,CAAA;IAEd,wEAAgB,CAAA;IAEhB,sDAAO,CAAA;IACP,4EAAkB,CAAA;IAElB,oEAAc,CAAA;AAChB,CAAC,EA3BW,YAAY,KAAZ,YAAY,QA2BvB"}
@@ -0,0 +1,7 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { LocationType } from './LocationType';
3
+ import { MaterialType } from './MaterialType';
4
+ export type MaterialSource = {
5
+ material(type: MaterialType): Material<number, MaterialType, LocationType>;
6
+ };
7
+ //# sourceMappingURL=MaterialSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialSource.d.ts","sourceRoot":"","sources":["../../src/material/MaterialSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;CAC3E,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MaterialSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialSource.js","sourceRoot":"","sources":["../../src/material/MaterialSource.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export declare enum MaterialType {
2
+ Board = 1,
3
+ AnimalCard = 2,
4
+ CharacterCard = 3,
5
+ CollectionToken = 4,
6
+ RoundVictoryToken = 5,
7
+ Prestige = 6
8
+ }
9
+ //# sourceMappingURL=MaterialType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialType.d.ts","sourceRoot":"","sources":["../../src/material/MaterialType.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,KAAK,IAAI;IACT,UAAU,IAAA;IACV,aAAa,IAAA;IACb,eAAe,IAAA;IACf,iBAAiB,IAAA;IAEjB,QAAQ,IAAA;CACT"}
@@ -0,0 +1,10 @@
1
+ export var MaterialType;
2
+ (function (MaterialType) {
3
+ MaterialType[MaterialType["Board"] = 1] = "Board";
4
+ MaterialType[MaterialType["AnimalCard"] = 2] = "AnimalCard";
5
+ MaterialType[MaterialType["CharacterCard"] = 3] = "CharacterCard";
6
+ MaterialType[MaterialType["CollectionToken"] = 4] = "CollectionToken";
7
+ MaterialType[MaterialType["RoundVictoryToken"] = 5] = "RoundVictoryToken";
8
+ MaterialType[MaterialType["Prestige"] = 6] = "Prestige";
9
+ })(MaterialType || (MaterialType = {}));
10
+ //# sourceMappingURL=MaterialType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialType.js","sourceRoot":"","sources":["../../src/material/MaterialType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,iDAAS,CAAA;IACT,2DAAU,CAAA;IACV,iEAAa,CAAA;IACb,qEAAe,CAAA;IACf,yEAAiB,CAAA;IAEjB,uDAAQ,CAAA;AACV,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB"}
@@ -0,0 +1,23 @@
1
+ import { LocationType } from './LocationType';
2
+ import { MaterialType } from './MaterialType';
3
+ import { MaterialSource } from './MaterialSource';
4
+ export declare const prestigeUnits: number[];
5
+ export declare enum PrestigeSide {
6
+ Favor = 1,
7
+ Honor = 2
8
+ }
9
+ export declare const prestigeLocation: (player: number, side?: PrestigeSide) => {
10
+ type: LocationType;
11
+ player: number;
12
+ rotation: boolean;
13
+ } | {
14
+ rotation?: undefined;
15
+ type: LocationType;
16
+ player: number;
17
+ };
18
+ export declare const getPrestigeSide: (rotation?: boolean) => PrestigeSide;
19
+ export declare const prestigeTokens: (rules: MaterialSource, side: PrestigeSide, player: number) => import("@gamepark/rules-api").Material<number, MaterialType, LocationType>;
20
+ export declare const countPrestige: (rules: MaterialSource, side: PrestigeSide, player: number) => number;
21
+ export declare const gainPrestige: (rules: MaterialSource, side: PrestigeSide, player: number, amount: number) => import("@gamepark/rules-api").ItemMove<number, MaterialType, LocationType>[];
22
+ export declare const totalPrestige: (rules: MaterialSource, player: number) => number;
23
+ //# sourceMappingURL=Prestige.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prestige.d.ts","sourceRoot":"","sources":["../../src/material/Prestige.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,eAAO,MAAM,aAAa,UAAY,CAAA;AAOtC,oBAAY,YAAY;IACtB,KAAK,IAAI;IACT,KAAK,IAAA;CACN;AAMD,eAAO,MAAM,gBAAgB,WAAY,MAAM;;;;;;;;CAC8F,CAAA;AAE7I,eAAO,MAAM,eAAe,cAAe,OAAO,iBAAyD,CAAA;AAG3G,eAAO,MAAM,cAAc,UAAW,cAAc,QAAQ,YAAY,UAAU,MAAM,+EAKf,CAAA;AAEzE,eAAO,MAAM,aAAa,UAAW,cAAc,QAAQ,YAAY,UAAU,MAAM,KAAG,MAC1B,CAAA;AAUhE,eAAO,MAAM,YAAY,UAAW,cAAc,QAAQ,YAAY,UAAU,MAAM,UAAU,MAAM,iFAC4B,CAAA;AAElI,eAAO,MAAM,aAAa,UAAW,cAAc,UAAU,MAAM,KAAG,MAC+B,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { LocationType } from './LocationType';
2
+ import { MaterialType } from './MaterialType';
3
+ export const prestigeUnits = [6, 3, 1];
4
+ export var PrestigeSide;
5
+ (function (PrestigeSide) {
6
+ PrestigeSide[PrestigeSide["Favor"] = 1] = "Favor";
7
+ PrestigeSide[PrestigeSide["Honor"] = 2] = "Honor";
8
+ })(PrestigeSide || (PrestigeSide = {}));
9
+ export const prestigeLocation = (player, side = PrestigeSide.Favor) => side === PrestigeSide.Honor ? { type: LocationType.PlayerPrestige, player, rotation: true } : { type: LocationType.PlayerPrestige, player };
10
+ export const getPrestigeSide = (rotation) => (rotation ? PrestigeSide.Honor : PrestigeSide.Favor);
11
+ export const prestigeTokens = (rules, side, player) => rules
12
+ .material(MaterialType.Prestige)
13
+ .location(LocationType.PlayerPrestige)
14
+ .player(player)
15
+ .rotation((rotation) => getPrestigeSide(rotation) === side);
16
+ export const countPrestige = (rules, side, player) => prestigeTokens(rules, side, player).money(prestigeUnits).count;
17
+ export const gainPrestige = (rules, side, player, amount) => prestigeTokens(rules, side, player).money(prestigeUnits).addMoney(amount, prestigeLocation(player, side), { consolidate: true });
18
+ export const totalPrestige = (rules, player) => countPrestige(rules, PrestigeSide.Favor, player) + countPrestige(rules, PrestigeSide.Honor, player);
19
+ //# sourceMappingURL=Prestige.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prestige.js","sourceRoot":"","sources":["../../src/material/Prestige.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAO7C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAOtC,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iDAAS,CAAA;IACT,iDAAK,CAAA;AACP,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAMD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAC5E,IAAI,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,CAAA;AAE7I,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAG3G,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,IAAkB,EAAE,MAAc,EAAE,EAAE,CAC1F,KAAK;KACF,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC/B,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC;KACrC,MAAM,CAAC,MAAM,CAAC;KACd,QAAQ,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAE,IAAkB,EAAE,MAAc,EAAU,EAAE,CACjG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAA;AAUhE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAqB,EAAE,IAAkB,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE,CACxG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AAElI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAE,MAAc,EAAU,EAAE,CAC7E,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { CustomMove, ItemMove, SimultaneousRule } from '@gamepark/rules-api';
2
+ import { MaterialType } from '../material/MaterialType';
3
+ import { CustomMoveType } from './CustomMoveType';
4
+ import { RuleId } from './RuleId';
5
+ export declare class ChooseCardsRule extends SimultaneousRule {
6
+ getActivePlayerLegalMoves(player: number): (CustomMove<CustomMoveType.Validate, number> | import("@gamepark/rules-api").MoveItem<number, number, number>)[];
7
+ afterItemMove(move: ItemMove): import("@gamepark/rules-api").EndPlayerTurn<number>[];
8
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").EndPlayerTurn<number>[];
9
+ getMovesAfterPlayersDone(): import("@gamepark/rules-api").StartRule<RuleId.RevealDuel>[];
10
+ handCards(type: MaterialType, player: number): import("@gamepark/rules-api").Material<number, number, number>;
11
+ duelCards(type: MaterialType, player: number): import("@gamepark/rules-api").Material<number, number, number>;
12
+ }
13
+ //# sourceMappingURL=ChooseCardsRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChooseCardsRule.d.ts","sourceRoot":"","sources":["../../src/rules/ChooseCardsRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMjC,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,yBAAyB,CAAC,MAAM,EAAE,MAAM,oHAYvC;IAED,aAAa,CAAC,IAAI,EAAE,QAAQ,yDAM3B;IAED,YAAY,CAAC,IAAI,EAAE,UAAU,yDAG5B;IAED,wBAAwB,iEAEvB;IAED,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kEAE3C;IAED,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kEAE3C;CACF"}