@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.
- package/dist/Constants.d.ts +23 -0
- package/dist/Constants.d.ts.map +1 -0
- package/dist/Constants.js +17 -0
- package/dist/Constants.js.map +1 -0
- package/dist/GreyluneOptions.d.ts +11 -0
- package/dist/GreyluneOptions.d.ts.map +1 -0
- package/dist/GreyluneOptions.js +8 -0
- package/dist/GreyluneOptions.js.map +1 -0
- package/dist/GreyluneRules.d.ts +123 -0
- package/dist/GreyluneRules.d.ts.map +1 -0
- package/dist/GreyluneRules.js +122 -0
- package/dist/GreyluneRules.js.map +1 -0
- package/dist/GreyluneSetup.d.ts +18 -0
- package/dist/GreyluneSetup.d.ts.map +1 -0
- package/dist/GreyluneSetup.js +88 -0
- package/dist/GreyluneSetup.js.map +1 -0
- package/dist/Memory.d.ts +22 -0
- package/dist/Memory.d.ts.map +1 -0
- package/dist/Memory.js +23 -0
- package/dist/Memory.js.map +1 -0
- package/dist/PlayerColor.d.ts +7 -0
- package/dist/PlayerColor.d.ts.map +1 -0
- package/dist/PlayerColor.js +8 -0
- package/dist/PlayerColor.js.map +1 -0
- package/dist/Season.d.ts +7 -0
- package/dist/Season.d.ts.map +1 -0
- package/dist/Season.js +8 -0
- package/dist/Season.js.map +1 -0
- package/dist/Year.d.ts +8 -0
- package/dist/Year.d.ts.map +1 -0
- package/dist/Year.js +10 -0
- package/dist/Year.js.map +1 -0
- package/dist/ai/Evaluation.d.ts +118 -0
- package/dist/ai/Evaluation.d.ts.map +1 -0
- package/dist/ai/Evaluation.js +1069 -0
- package/dist/ai/Evaluation.js.map +1 -0
- package/dist/ai/GreyluneAI.d.ts +20 -0
- package/dist/ai/GreyluneAI.d.ts.map +1 -0
- package/dist/ai/GreyluneAI.js +113 -0
- package/dist/ai/GreyluneAI.js.map +1 -0
- package/dist/ai/Model.d.ts +38 -0
- package/dist/ai/Model.d.ts.map +1 -0
- package/dist/ai/Model.js +105 -0
- package/dist/ai/Model.js.map +1 -0
- package/dist/ai/Simulation.d.ts +13 -0
- package/dist/ai/Simulation.d.ts.map +1 -0
- package/dist/ai/Simulation.js +20 -0
- package/dist/ai/Simulation.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/material/Area.d.ts +9 -0
- package/dist/material/Area.d.ts.map +1 -0
- package/dist/material/Area.js +10 -0
- package/dist/material/Area.js.map +1 -0
- package/dist/material/Distance.d.ts +8 -0
- package/dist/material/Distance.d.ts.map +1 -0
- package/dist/material/Distance.js +9 -0
- package/dist/material/Distance.js.map +1 -0
- package/dist/material/Effect.d.ts +103 -0
- package/dist/material/Effect.d.ts.map +1 -0
- package/dist/material/Effect.js +83 -0
- package/dist/material/Effect.js.map +1 -0
- package/dist/material/EncounterCard.d.ts +61 -0
- package/dist/material/EncounterCard.d.ts.map +1 -0
- package/dist/material/EncounterCard.js +214 -0
- package/dist/material/EncounterCard.js.map +1 -0
- package/dist/material/EventTile.d.ts +17 -0
- package/dist/material/EventTile.d.ts.map +1 -0
- package/dist/material/EventTile.js +52 -0
- package/dist/material/EventTile.js.map +1 -0
- package/dist/material/LocationType.d.ts +42 -0
- package/dist/material/LocationType.d.ts.map +1 -0
- package/dist/material/LocationType.js +43 -0
- package/dist/material/LocationType.js.map +1 -0
- package/dist/material/MaterialSource.d.ts +8 -0
- package/dist/material/MaterialSource.d.ts.map +1 -0
- package/dist/material/MaterialSource.js +2 -0
- package/dist/material/MaterialSource.js.map +1 -0
- package/dist/material/MaterialType.d.ts +23 -0
- package/dist/material/MaterialType.d.ts.map +1 -0
- package/dist/material/MaterialType.js +24 -0
- package/dist/material/MaterialType.js.map +1 -0
- package/dist/material/Period.d.ts +6 -0
- package/dist/material/Period.d.ts.map +1 -0
- package/dist/material/Period.js +7 -0
- package/dist/material/Period.js.map +1 -0
- package/dist/material/PlayerState.d.ts +34 -0
- package/dist/material/PlayerState.d.ts.map +1 -0
- package/dist/material/PlayerState.js +106 -0
- package/dist/material/PlayerState.js.map +1 -0
- package/dist/material/QuestTile.d.ts +21 -0
- package/dist/material/QuestTile.d.ts.map +1 -0
- package/dist/material/QuestTile.js +32 -0
- package/dist/material/QuestTile.js.map +1 -0
- package/dist/material/Reaction.d.ts +49 -0
- package/dist/material/Reaction.d.ts.map +1 -0
- package/dist/material/Reaction.js +37 -0
- package/dist/material/Reaction.js.map +1 -0
- package/dist/material/Tokens.d.ts +29 -0
- package/dist/material/Tokens.d.ts.map +1 -0
- package/dist/material/Tokens.js +46 -0
- package/dist/material/Tokens.js.map +1 -0
- package/dist/material/Village.d.ts +23 -0
- package/dist/material/Village.d.ts.map +1 -0
- package/dist/material/Village.js +29 -0
- package/dist/material/Village.js.map +1 -0
- package/dist/material/VillageCard.d.ts +90 -0
- package/dist/material/VillageCard.d.ts.map +1 -0
- package/dist/material/VillageCard.js +359 -0
- package/dist/material/VillageCard.js.map +1 -0
- package/dist/material/Villager.d.ts +8 -0
- package/dist/material/Villager.d.ts.map +1 -0
- package/dist/material/Villager.js +7 -0
- package/dist/material/Villager.js.map +1 -0
- package/dist/material/VpToken.d.ts +10 -0
- package/dist/material/VpToken.d.ts.map +1 -0
- package/dist/material/VpToken.js +9 -0
- package/dist/material/VpToken.js.map +1 -0
- package/dist/rules/ActivateCardRule.d.ts +43 -0
- package/dist/rules/ActivateCardRule.d.ts.map +1 -0
- package/dist/rules/ActivateCardRule.js +183 -0
- package/dist/rules/ActivateCardRule.js.map +1 -0
- package/dist/rules/AutumnRule.d.ts +9 -0
- package/dist/rules/AutumnRule.d.ts.map +1 -0
- package/dist/rules/AutumnRule.js +42 -0
- package/dist/rules/AutumnRule.js.map +1 -0
- package/dist/rules/BonusTokenRule.d.ts +10 -0
- package/dist/rules/BonusTokenRule.d.ts.map +1 -0
- package/dist/rules/BonusTokenRule.js +20 -0
- package/dist/rules/BonusTokenRule.js.map +1 -0
- package/dist/rules/ChooseOutcomeRule.d.ts +9 -0
- package/dist/rules/ChooseOutcomeRule.d.ts.map +1 -0
- package/dist/rules/ChooseOutcomeRule.js +18 -0
- package/dist/rules/ChooseOutcomeRule.js.map +1 -0
- package/dist/rules/ChooseSkillRule.d.ts +10 -0
- package/dist/rules/ChooseSkillRule.d.ts.map +1 -0
- package/dist/rules/ChooseSkillRule.js +20 -0
- package/dist/rules/ChooseSkillRule.js.map +1 -0
- package/dist/rules/CustomMoveType.d.ts +17 -0
- package/dist/rules/CustomMoveType.d.ts.map +1 -0
- package/dist/rules/CustomMoveType.js +18 -0
- package/dist/rules/CustomMoveType.js.map +1 -0
- package/dist/rules/DiscardItemRule.d.ts +9 -0
- package/dist/rules/DiscardItemRule.d.ts.map +1 -0
- package/dist/rules/DiscardItemRule.js +19 -0
- package/dist/rules/DiscardItemRule.js.map +1 -0
- package/dist/rules/EncounterRule.d.ts +26 -0
- package/dist/rules/EncounterRule.d.ts.map +1 -0
- package/dist/rules/EncounterRule.js +75 -0
- package/dist/rules/EncounterRule.js.map +1 -0
- package/dist/rules/EventRule.d.ts +13 -0
- package/dist/rules/EventRule.d.ts.map +1 -0
- package/dist/rules/EventRule.js +39 -0
- package/dist/rules/EventRule.js.map +1 -0
- package/dist/rules/FinalScoringRule.d.ts +18 -0
- package/dist/rules/FinalScoringRule.d.ts.map +1 -0
- package/dist/rules/FinalScoringRule.js +30 -0
- package/dist/rules/FinalScoringRule.js.map +1 -0
- package/dist/rules/GreyluneRule.d.ts +87 -0
- package/dist/rules/GreyluneRule.d.ts.map +1 -0
- package/dist/rules/GreyluneRule.js +432 -0
- package/dist/rules/GreyluneRule.js.map +1 -0
- package/dist/rules/PlaceVillagerRule.d.ts +10 -0
- package/dist/rules/PlaceVillagerRule.d.ts.map +1 -0
- package/dist/rules/PlaceVillagerRule.js +17 -0
- package/dist/rules/PlaceVillagerRule.js.map +1 -0
- package/dist/rules/ReactionRule.d.ts +17 -0
- package/dist/rules/ReactionRule.d.ts.map +1 -0
- package/dist/rules/ReactionRule.js +48 -0
- package/dist/rules/ReactionRule.js.map +1 -0
- package/dist/rules/ResolveEffectsRule.d.ts +12 -0
- package/dist/rules/ResolveEffectsRule.d.ts.map +1 -0
- package/dist/rules/ResolveEffectsRule.js +85 -0
- package/dist/rules/ResolveEffectsRule.js.map +1 -0
- package/dist/rules/ResolveEncounterRule.d.ts +19 -0
- package/dist/rules/ResolveEncounterRule.d.ts.map +1 -0
- package/dist/rules/ResolveEncounterRule.js +86 -0
- package/dist/rules/ResolveEncounterRule.js.map +1 -0
- package/dist/rules/ResolveQuestRule.d.ts +17 -0
- package/dist/rules/ResolveQuestRule.d.ts.map +1 -0
- package/dist/rules/ResolveQuestRule.js +64 -0
- package/dist/rules/ResolveQuestRule.js.map +1 -0
- package/dist/rules/RuleId.d.ts +27 -0
- package/dist/rules/RuleId.d.ts.map +1 -0
- package/dist/rules/RuleId.js +28 -0
- package/dist/rules/RuleId.js.map +1 -0
- package/dist/rules/SeasonRule.d.ts +11 -0
- package/dist/rules/SeasonRule.d.ts.map +1 -0
- package/dist/rules/SeasonRule.js +32 -0
- package/dist/rules/SeasonRule.js.map +1 -0
- package/dist/rules/SpecialActionRule.d.ts +15 -0
- package/dist/rules/SpecialActionRule.d.ts.map +1 -0
- package/dist/rules/SpecialActionRule.js +32 -0
- package/dist/rules/SpecialActionRule.js.map +1 -0
- package/dist/rules/SpringRule.d.ts +7 -0
- package/dist/rules/SpringRule.d.ts.map +1 -0
- package/dist/rules/SpringRule.js +16 -0
- package/dist/rules/SpringRule.js.map +1 -0
- package/dist/rules/StraightenCardRule.d.ts +9 -0
- package/dist/rules/StraightenCardRule.d.ts.map +1 -0
- package/dist/rules/StraightenCardRule.js +11 -0
- package/dist/rules/StraightenCardRule.js.map +1 -0
- package/dist/rules/SummerRule.d.ts +30 -0
- package/dist/rules/SummerRule.d.ts.map +1 -0
- package/dist/rules/SummerRule.js +140 -0
- package/dist/rules/SummerRule.js.map +1 -0
- package/dist/rules/TellStoryRule.d.ts +22 -0
- package/dist/rules/TellStoryRule.d.ts.map +1 -0
- package/dist/rules/TellStoryRule.js +72 -0
- package/dist/rules/TellStoryRule.js.map +1 -0
- package/dist/rules/TheFirstStepRule.d.ts +5 -0
- package/dist/rules/TheFirstStepRule.d.ts.map +1 -0
- package/dist/rules/TheFirstStepRule.js +7 -0
- package/dist/rules/TheFirstStepRule.js.map +1 -0
- package/dist/rules/TravelRule.d.ts +13 -0
- package/dist/rules/TravelRule.d.ts.map +1 -0
- package/dist/rules/TravelRule.js +41 -0
- package/dist/rules/TravelRule.js.map +1 -0
- package/dist/rules/UseItemRule.d.ts +6 -0
- package/dist/rules/UseItemRule.d.ts.map +1 -0
- package/dist/rules/UseItemRule.js +35 -0
- package/dist/rules/UseItemRule.js.map +1 -0
- package/dist/rules/WinterRule.d.ts +24 -0
- package/dist/rules/WinterRule.d.ts.map +1 -0
- package/dist/rules/WinterRule.js +112 -0
- package/dist/rules/WinterRule.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { isCustomMoveType, isMoveItemType } from '@gamepark/rules-api';
|
|
2
|
+
import { Memory } from '../Memory';
|
|
3
|
+
import { RequirementType, usesSeal, vp } from '../material/Effect';
|
|
4
|
+
import { LocationType } from '../material/LocationType';
|
|
5
|
+
import { MaterialType } from '../material/MaterialType';
|
|
6
|
+
import { itemLimit, playerItems } from '../material/PlayerState';
|
|
7
|
+
import { ReactionType, TriggerType } from '../material/Reaction';
|
|
8
|
+
import { Seal } from '../material/Tokens';
|
|
9
|
+
import { villagersAroundSlot } from '../material/Village';
|
|
10
|
+
import { activationTriggers, getVillageCardType, VillageCardType, villageCardData } from '../material/VillageCard';
|
|
11
|
+
import { CustomMoveType } from './CustomMoveType';
|
|
12
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
13
|
+
import { RuleId } from './RuleId';
|
|
14
|
+
export class ActivateCardRule extends GreyluneRule {
|
|
15
|
+
get card() {
|
|
16
|
+
return this.remind(Memory.ActivatedCard);
|
|
17
|
+
}
|
|
18
|
+
get front() {
|
|
19
|
+
return this.villageCards.getItem(this.card).id.front;
|
|
20
|
+
}
|
|
21
|
+
get data() {
|
|
22
|
+
return villageCardData[this.front];
|
|
23
|
+
}
|
|
24
|
+
get villager() {
|
|
25
|
+
return this.remind(Memory.SpentVillager);
|
|
26
|
+
}
|
|
27
|
+
get seals() {
|
|
28
|
+
return this.material(MaterialType.Seal).location(LocationType.CardSeal).parent(this.card);
|
|
29
|
+
}
|
|
30
|
+
get crowd() {
|
|
31
|
+
const location = this.villageCards.getItem(this.card).location;
|
|
32
|
+
return Math.max(0, villagersAroundSlot(this, { x: location.x ?? 0, y: location.y ?? 0 }).length - 1);
|
|
33
|
+
}
|
|
34
|
+
get surcharge() {
|
|
35
|
+
return this.costReduction.noSurcharge ? 0 : this.crowd;
|
|
36
|
+
}
|
|
37
|
+
get price() {
|
|
38
|
+
return Math.max(0, this.data.cost - (this.costReduction.coins ?? 0) + this.surcharge);
|
|
39
|
+
}
|
|
40
|
+
get triggers() {
|
|
41
|
+
return activationTriggers(this.front).filter((trigger) => trigger !== TriggerType.ActivateSeal && (trigger !== TriggerType.PaySurcharge || this.surcharge > 0));
|
|
42
|
+
}
|
|
43
|
+
get isBuilding() {
|
|
44
|
+
return getVillageCardType(this.front) === VillageCardType.Building;
|
|
45
|
+
}
|
|
46
|
+
get sealAbility() {
|
|
47
|
+
return this.isBuilding ? (this.data.abilities ?? []).findIndex((ability) => usesSeal(ability.requirements)) : -1;
|
|
48
|
+
}
|
|
49
|
+
get sealSpent() {
|
|
50
|
+
return this.remind(Memory.SealValue) !== undefined;
|
|
51
|
+
}
|
|
52
|
+
onRuleStart() {
|
|
53
|
+
if (this.sealSpent)
|
|
54
|
+
return this.costReduction.freeSealValue ? this.onlyValue() : this.activate({ ability: this.sealAbility });
|
|
55
|
+
const moves = this.abilityMoves();
|
|
56
|
+
return moves.length === 1 ? moves : [];
|
|
57
|
+
}
|
|
58
|
+
getPlayerMoves() {
|
|
59
|
+
if (this.sealSpent)
|
|
60
|
+
return this.costReduction.freeSealValue ? this.sealValueMoves() : [];
|
|
61
|
+
return this.abilityMoves();
|
|
62
|
+
}
|
|
63
|
+
get outOfReach() {
|
|
64
|
+
return !this.sealSpent && this.abilityMoves().length === 0;
|
|
65
|
+
}
|
|
66
|
+
abilityMoves() {
|
|
67
|
+
if (this.coins < this.price)
|
|
68
|
+
return [];
|
|
69
|
+
if (!this.isBuilding) {
|
|
70
|
+
return this.purchaseVariants().map((variant) => this.customMove(CustomMoveType.ChooseAbility, variant));
|
|
71
|
+
}
|
|
72
|
+
return (this.data.abilities ?? []).flatMap((ability, index) => {
|
|
73
|
+
if (!this.canPay(ability.requirements) || !this.canReceive(ability.gains))
|
|
74
|
+
return [];
|
|
75
|
+
if (index === this.sealAbility)
|
|
76
|
+
return this.sealMoves();
|
|
77
|
+
return [this.customMove(CustomMoveType.ChooseAbility, { ability: index })];
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
sealMoves() {
|
|
81
|
+
const selia = this.reactionChoices([TriggerType.ActivateSeal]).length > 0 && this.canPaySealAt(Seal.One);
|
|
82
|
+
return this.seals
|
|
83
|
+
.filter((item) => selia || this.canPaySealAt(item.id))
|
|
84
|
+
.moveItems({ type: LocationType.SealDiscard });
|
|
85
|
+
}
|
|
86
|
+
canPaySealAt(value) {
|
|
87
|
+
const requirements = this.data.abilities?.[this.sealAbility]?.requirements ?? [];
|
|
88
|
+
const needsCoins = requirements.some((requirement) => requirement.type === RequirementType.SealCoins);
|
|
89
|
+
return !needsCoins || this.coins - this.price >= value;
|
|
90
|
+
}
|
|
91
|
+
sealValueMoves() {
|
|
92
|
+
return [Seal.One, Seal.Two, Seal.Three]
|
|
93
|
+
.filter((value) => this.canPaySealAt(value))
|
|
94
|
+
.map((value) => this.customMove(CustomMoveType.ChooseAbility, { ability: this.sealAbility, value }));
|
|
95
|
+
}
|
|
96
|
+
onlyValue() {
|
|
97
|
+
const moves = this.sealValueMoves();
|
|
98
|
+
return moves.length === 1 ? moves : [];
|
|
99
|
+
}
|
|
100
|
+
purchaseVariants() {
|
|
101
|
+
if (!usesSeal(this.data.immediate?.requirements))
|
|
102
|
+
return [{}];
|
|
103
|
+
return this.seals
|
|
104
|
+
.limit(1)
|
|
105
|
+
.getIndexes()
|
|
106
|
+
.map((seal) => ({ seal, value: this.material(MaterialType.Seal).getItem(seal).id }));
|
|
107
|
+
}
|
|
108
|
+
helps(card, option) {
|
|
109
|
+
const effect = this.reactionEffect(card, option);
|
|
110
|
+
switch (effect.type) {
|
|
111
|
+
case ReactionType.NoSurcharge:
|
|
112
|
+
case ReactionType.CheaperItem:
|
|
113
|
+
return this.coins < this.price;
|
|
114
|
+
case ReactionType.ReduceForceCost:
|
|
115
|
+
return this.blockedBy(RequirementType.SpendForce);
|
|
116
|
+
case ReactionType.ReduceVillagerCost:
|
|
117
|
+
return this.blockedBy(RequirementType.SpendVillagers);
|
|
118
|
+
default:
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
blockedBy(type) {
|
|
123
|
+
return (this.data.abilities ?? []).some((ability) => !this.canPay(ability.requirements) && (ability.requirements ?? []).some((requirement) => requirement.type === type));
|
|
124
|
+
}
|
|
125
|
+
onCustomMove(move) {
|
|
126
|
+
if (isCustomMoveType(CustomMoveType.ChooseAbility)(move))
|
|
127
|
+
return this.activate(move.data);
|
|
128
|
+
return super.onCustomMove(move);
|
|
129
|
+
}
|
|
130
|
+
afterItemMove(move) {
|
|
131
|
+
if (isMoveItemType(MaterialType.VillageCard)(move) && move.itemIndex === this.card)
|
|
132
|
+
return this.afterTake();
|
|
133
|
+
if (!isMoveItemType(MaterialType.Seal)(move) || move.location.type !== LocationType.SealDiscard || !this.isBuilding)
|
|
134
|
+
return [];
|
|
135
|
+
const value = this.material(MaterialType.Seal).getItem(move.itemIndex).id;
|
|
136
|
+
this.memorize(Memory.SealValue, value);
|
|
137
|
+
const selia = this.reactionChoices([TriggerType.ActivateSeal]);
|
|
138
|
+
if (!this.canPaySealAt(value))
|
|
139
|
+
return [...this.useReaction(selia[0].card, selia[0].option), ...this.onlyValue()];
|
|
140
|
+
if (!selia.length)
|
|
141
|
+
return this.activate({ ability: this.sealAbility });
|
|
142
|
+
return this.openReactions([TriggerType.ActivateSeal], RuleId.ActivateCard);
|
|
143
|
+
}
|
|
144
|
+
activate(data) {
|
|
145
|
+
if (data.value !== undefined)
|
|
146
|
+
this.memorize(Memory.SealValue, data.value);
|
|
147
|
+
const requirements = this.isBuilding ? (this.data.abilities[data.ability].requirements ?? []) : [];
|
|
148
|
+
const moves = [
|
|
149
|
+
...this.payCoins(this.price + this.coinCost(requirements)),
|
|
150
|
+
this.villagers.index(this.villager).moveItem({ type: LocationType.Camp }),
|
|
151
|
+
...(data.seal !== undefined ? [this.material(MaterialType.Seal).index(data.seal).moveItem({ type: LocationType.SealDiscard })] : [])
|
|
152
|
+
];
|
|
153
|
+
return this.isBuilding ? [...moves, ...this.exploit(data.ability, requirements)] : [...moves, ...this.take()];
|
|
154
|
+
}
|
|
155
|
+
exploit(ability, requirements) {
|
|
156
|
+
this.pushGains(this.data.abilities[ability].gains ?? []);
|
|
157
|
+
return [...this.payRequirements(requirements.filter((requirement) => !isCoinCost(requirement))), ...this.endOfAction()];
|
|
158
|
+
}
|
|
159
|
+
take() {
|
|
160
|
+
const isItem = getVillageCardType(this.front) === VillageCardType.Item;
|
|
161
|
+
const gains = [...(this.data.immediate?.gains ?? [])];
|
|
162
|
+
if (isItem && this.costReduction.itemVp)
|
|
163
|
+
gains.push(vp(this.costReduction.itemVp));
|
|
164
|
+
this.pushGains(gains);
|
|
165
|
+
return [
|
|
166
|
+
...this.payRequirements(this.data.immediate?.requirements),
|
|
167
|
+
this.villageCards.index(this.card).moveItem({
|
|
168
|
+
type: isItem ? LocationType.Items : LocationType.Companions,
|
|
169
|
+
player: this.player,
|
|
170
|
+
rotation: false
|
|
171
|
+
})
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
afterTake() {
|
|
175
|
+
if (playerItems(this, this.player).length > itemLimit(this, this.player)) {
|
|
176
|
+
this.memorize(Memory.Resume, RuleId.ResolveEffects);
|
|
177
|
+
return [this.startRule(RuleId.DiscardItem)];
|
|
178
|
+
}
|
|
179
|
+
return this.endOfAction();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const isCoinCost = (requirement) => requirement.type === RequirementType.SpendCoins || requirement.type === RequirementType.SealCoins;
|
|
183
|
+
//# sourceMappingURL=ActivateCardRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivateCardRule.js","sourceRoot":"","sources":["../../src/rules/ActivateCardRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAE,cAAc,EAAY,MAAM,qBAAqB,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAe,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAGlB,eAAe,EACf,eAAe,EAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAwBjC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAS,MAAM,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAgB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAM,CAAA;IACtE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAS,MAAM,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3F,CAAC;IAGD,IAAI,KAAK;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtG,CAAC;IAGD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;IACxD,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IACvF,CAAC;IAMD,IAAI,QAAQ;QACV,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC1C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAClH,CAAA;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAA;IACpE,CAAC;IAMD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClH,CAAC;IAGD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAS,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,CAAA;IAC5D,CAAC;IAKD,WAAW;QACT,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7H,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACjC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IACxC,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACxF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC5B,CAAC;IAGD,IAAI,UAAU;QACZ,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;IAC5D,CAAC;IAGO,YAAY;QAClB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;QACzG,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YACpF,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;YACvD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IAMO,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxG,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAU,CAAC,CAAC;aAC7D,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC,CAAA;IAClD,CAAC;IAGO,YAAY,CAAC,KAAW;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,IAAI,EAAE,CAAA;QAChF,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,SAAS,CAAC,CAAA;QACrG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;IACxD,CAAC;IAGO,cAAc;QACpB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACxG,CAAC;IAGO,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACnC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IACxC,CAAC;IAGO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;YAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,KAAK;aACd,KAAK,CAAC,CAAC,CAAC;aACR,UAAU,EAAE;aACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAC9F,CAAC;IAQD,KAAK,CAAC,IAAY,EAAE,MAAc;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAChD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,YAAY,CAAC,WAAW,CAAC;YAC9B,KAAK,YAAY,CAAC,WAAW;gBAC3B,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YAChC,KAAK,YAAY,CAAC,eAAe;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YACnD,KAAK,YAAY,CAAC,kBAAkB;gBAClC,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;YACvD;gBACE,OAAO,KAAK,CAAA;QAChB,CAAC;IACH,CAAC;IAGO,SAAS,CAAC,IAAqB;QACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CACjI,CAAA;IACH,CAAC;IAED,YAAY,CAAC,IAAgB;QAC3B,IAAI,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAyB,CAAC,CAAA;QAC9G,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAOD,aAAa,CAAC,IAAc;QAC1B,IAAI,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;QAC3G,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAA;QAC9H,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;QAC/E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAChH,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACtE,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IAC5E,CAAC;IAMO,QAAQ,CAAC,IAAuB;QACtC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACzE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACpG,MAAM,KAAK,GAAmB;YAC5B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrI,CAAA;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAChH,CAAC;IAGO,OAAO,CAAC,OAAe,EAAE,YAA2B;QAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACzD,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACzH,CAAC;IAMO,IAAI;QACV,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,IAAI,CAAA;QACtE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;QAClF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACrB,OAAO;YACL,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBAC1C,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU;gBAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH,CAAA;IACH,CAAC;IAOO,SAAS;QACf,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;CACF;AAGD,MAAM,UAAU,GAAG,CAAC,WAAwB,EAAW,EAAE,CACvD,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,SAAS,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Gain } from '../material/Effect';
|
|
2
|
+
import { GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
3
|
+
export declare class AutumnRule extends GreyluneRule {
|
|
4
|
+
onRuleStart(): GreyluneMove[];
|
|
5
|
+
private comeHome;
|
|
6
|
+
private straightenCards;
|
|
7
|
+
get income(): Gain[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=AutumnRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutumnRule.d.ts","sourceRoot":"","sources":["../../src/rules/AutumnRule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,IAAI,EAAgB,MAAM,oBAAoB,CAAA;AAK9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAU3D,qBAAa,UAAW,SAAQ,YAAY;IAC1C,WAAW,IAAI,YAAY,EAAE,CAG5B;IAQD,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,eAAe;IASvB,IAAI,MAAM,IAAI,IAAI,EAAE,CAenB;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BASE_INCOME } from '../Constants';
|
|
2
|
+
import { Area } from '../material/Area';
|
|
3
|
+
import { coins, GainType, vp } from '../material/Effect';
|
|
4
|
+
import { LocationType } from '../material/LocationType';
|
|
5
|
+
import { MaterialType } from '../material/MaterialType';
|
|
6
|
+
import { playerCompanions } from '../material/PlayerState';
|
|
7
|
+
import { incomeTokenGains } from '../material/Tokens';
|
|
8
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
9
|
+
export class AutumnRule extends GreyluneRule {
|
|
10
|
+
onRuleStart() {
|
|
11
|
+
this.pushGains(this.income);
|
|
12
|
+
return [...this.comeHome(), ...this.straightenCards(), ...this.endOfAction()];
|
|
13
|
+
}
|
|
14
|
+
comeHome() {
|
|
15
|
+
const travelling = this.adventurer.location((location) => location.id !== Area.Village);
|
|
16
|
+
const away = this.myVillagers.location((location) => location.type !== LocationType.VillagerReserve);
|
|
17
|
+
return [
|
|
18
|
+
...travelling.moveItems({ type: LocationType.Area, id: Area.Village }),
|
|
19
|
+
...(away.exists ? [away.moveItemsAtOnce({ type: LocationType.ActiveVillagers, player: this.player })] : [])
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
straightenCards() {
|
|
23
|
+
return this.playerCards.rotation(true).rotateItems(false);
|
|
24
|
+
}
|
|
25
|
+
get income() {
|
|
26
|
+
const wages = Math.max(0, BASE_INCOME - playerCompanions(this, this.player).length);
|
|
27
|
+
const tokens = this.material(MaterialType.IncomeToken)
|
|
28
|
+
.location(LocationType.IncomeTokenSpace)
|
|
29
|
+
.player(this.player)
|
|
30
|
+
.getItems()
|
|
31
|
+
.flatMap((item) => incomeTokenGains[item.id]);
|
|
32
|
+
const total = (type) => tokens.reduce((sum, gain) => (gain.type === type && 'count' in gain ? sum + this.amount(gain.count) : sum), 0);
|
|
33
|
+
const coinTotal = wages + total(GainType.Coins);
|
|
34
|
+
const vpTotal = total(GainType.Vp);
|
|
35
|
+
return [
|
|
36
|
+
...(coinTotal ? [coins(coinTotal)] : []),
|
|
37
|
+
...(vpTotal ? [vp(vpTotal)] : []),
|
|
38
|
+
...tokens.filter((gain) => gain.type !== GainType.Coins && gain.type !== GainType.Vp)
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=AutumnRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutumnRule.js","sourceRoot":"","sources":["../../src/rules/AutumnRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ItemMove } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
5
|
+
export declare class BonusTokenRule extends GreyluneRule {
|
|
6
|
+
get tokens(): import("@gamepark/rules-api").Material<import("../PlayerColor").PlayerColor, MaterialType, LocationType>;
|
|
7
|
+
getPlayerMoves(): GreyluneMove[];
|
|
8
|
+
beforeItemMove(move: ItemMove): GreyluneMove[];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=BonusTokenRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BonusTokenRule.d.ts","sourceRoot":"","sources":["../../src/rules/BonusTokenRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQ3D,qBAAa,cAAe,SAAQ,YAAY;IAC9C,IAAI,MAAM,6GAET;IAED,cAAc,IAAI,YAAY,EAAE,CAE/B;IAED,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,EAAE,CAI7C;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isDeleteItemType } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { bonusTokenGains } from '../material/Tokens';
|
|
5
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
6
|
+
export class BonusTokenRule extends GreyluneRule {
|
|
7
|
+
get tokens() {
|
|
8
|
+
return this.material(MaterialType.BonusToken).location(LocationType.BonusTokens).player(this.player);
|
|
9
|
+
}
|
|
10
|
+
getPlayerMoves() {
|
|
11
|
+
return this.tokens.deleteItems();
|
|
12
|
+
}
|
|
13
|
+
beforeItemMove(move) {
|
|
14
|
+
if (!isDeleteItemType(MaterialType.BonusToken)(move))
|
|
15
|
+
return [];
|
|
16
|
+
this.pushGains(bonusTokenGains[this.material(MaterialType.BonusToken).getItem(move.itemIndex).id], true);
|
|
17
|
+
return this.endOfAction();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=BonusTokenRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BonusTokenRule.js","sourceRoot":"","sources":["../../src/rules/BonusTokenRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAY,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAc,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQ3D,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtG,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IAED,cAAc,CAAC,IAAc;QAC3B,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QAC/D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAa,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACpH,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CustomMove } from '@gamepark/rules-api';
|
|
2
|
+
import { EncounterRule } from './EncounterRule';
|
|
3
|
+
import { GreyluneMove } from './GreyluneRule';
|
|
4
|
+
export declare class ChooseOutcomeRule extends EncounterRule {
|
|
5
|
+
get card(): number;
|
|
6
|
+
getPlayerMoves(): GreyluneMove[];
|
|
7
|
+
onCustomMove(move: CustomMove): GreyluneMove[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ChooseOutcomeRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChooseOutcomeRule.d.ts","sourceRoot":"","sources":["../../src/rules/ChooseOutcomeRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,qBAAqB,CAAA;AAGlE,OAAO,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAoB7C,qBAAa,iBAAkB,SAAQ,aAAa;IAElD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,cAAc,IAAI,YAAY,EAAE,CAE/B;IAED,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAG7C;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isCustomMoveType } from '@gamepark/rules-api';
|
|
2
|
+
import { Memory } from '../Memory';
|
|
3
|
+
import { CustomMoveType } from './CustomMoveType';
|
|
4
|
+
import { EncounterRule } from './EncounterRule';
|
|
5
|
+
export class ChooseOutcomeRule extends EncounterRule {
|
|
6
|
+
get card() {
|
|
7
|
+
return this.remind(Memory.ResolvedEncounter);
|
|
8
|
+
}
|
|
9
|
+
getPlayerMoves() {
|
|
10
|
+
return this.encounterMoves(this.card).map((data) => this.customMove(CustomMoveType.ResolveOutcome, data));
|
|
11
|
+
}
|
|
12
|
+
onCustomMove(move) {
|
|
13
|
+
if (isCustomMoveType(CustomMoveType.ResolveOutcome)(move))
|
|
14
|
+
return this.resolve(move.data);
|
|
15
|
+
return super.onCustomMove(move);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ChooseOutcomeRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChooseOutcomeRule.js","sourceRoot":"","sources":["../../src/rules/ChooseOutcomeRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAA;AAqBnE,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAElD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAS,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACtD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED,YAAY,CAAC,IAAgB;QAC3B,IAAI,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAA0B,CAAC,CAAA;QAC/G,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ItemMove } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
5
|
+
export declare class ChooseSkillRule extends GreyluneRule {
|
|
6
|
+
get count(): number;
|
|
7
|
+
getPlayerMoves(): GreyluneMove[];
|
|
8
|
+
afterItemMove(move: ItemMove<number, MaterialType, LocationType>): GreyluneMove[];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ChooseSkillRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChooseSkillRule.d.ts","sourceRoot":"","sources":["../../src/rules/ChooseSkillRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAA;AAQxE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED,cAAc,IAAI,YAAY,EAAE,CAE/B;IAED,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAGhF;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isMoveItemType } from '@gamepark/rules-api';
|
|
2
|
+
import { Memory } from '../Memory';
|
|
3
|
+
import { GainType } from '../material/Effect';
|
|
4
|
+
import { MaterialType } from '../material/MaterialType';
|
|
5
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
6
|
+
const skillMarkers = [MaterialType.StrengthMarker, MaterialType.MagicMarker];
|
|
7
|
+
export class ChooseSkillRule extends GreyluneRule {
|
|
8
|
+
get count() {
|
|
9
|
+
const gain = this.remind(Memory.CurrentGain);
|
|
10
|
+
return gain && gain.type === GainType.Skill && typeof gain.count === 'number' ? gain.count : 1;
|
|
11
|
+
}
|
|
12
|
+
getPlayerMoves() {
|
|
13
|
+
return skillMarkers.flatMap((marker) => this.moveSkillMarker(marker, this.count));
|
|
14
|
+
}
|
|
15
|
+
afterItemMove(move) {
|
|
16
|
+
const marker = skillMarkers.find((marker) => isMoveItemType(marker)(move));
|
|
17
|
+
return marker ? this.skillGained(marker, this.count) : [];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ChooseSkillRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChooseSkillRule.js","sourceRoot":"","sources":["../../src/rules/ChooseSkillRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAY,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAQ,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAgB,YAAY,EAAe,MAAM,gBAAgB,CAAA;AAExE,MAAM,YAAY,GAAkB,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;AAM3F,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAO,MAAM,CAAC,WAAW,CAAC,CAAA;QAClD,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChG,CAAC;IAED,cAAc;QACZ,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,aAAa,CAAC,IAAkD;QAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3D,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum CustomMoveType {
|
|
2
|
+
GainCoins = 1,
|
|
3
|
+
GainVp = 2,
|
|
4
|
+
GainCoinsAround = 3,
|
|
5
|
+
ActivateCard = 4,
|
|
6
|
+
ChooseAbility = 5,
|
|
7
|
+
UseItem = 6,
|
|
8
|
+
ChooseEncounter = 7,
|
|
9
|
+
ResolveOutcome = 8,
|
|
10
|
+
SkipEncounter = 9,
|
|
11
|
+
ResolveQuest = 10,
|
|
12
|
+
Pass = 11,
|
|
13
|
+
UseReaction = 12,
|
|
14
|
+
TakeEventOption = 13,
|
|
15
|
+
TakeSpecialAction = 14
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=CustomMoveType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomMoveType.d.ts","sourceRoot":"","sources":["../../src/rules/CustomMoveType.ts"],"names":[],"mappings":"AAQA,oBAAY,cAAc;IAKxB,SAAS,IAAI;IAEb,MAAM,IAAA;IAMN,eAAe,IAAA;IAMf,YAAY,IAAA;IAOZ,aAAa,IAAA;IAGb,OAAO,IAAA;IASP,eAAe,IAAA;IAGf,cAAc,IAAA;IAGd,aAAa,IAAA;IACb,YAAY,KAAA;IAGZ,IAAI,KAAA;IAGJ,WAAW,KAAA;IAUX,eAAe,KAAA;IAUf,iBAAiB,KAAA;CAClB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var CustomMoveType;
|
|
2
|
+
(function (CustomMoveType) {
|
|
3
|
+
CustomMoveType[CustomMoveType["GainCoins"] = 1] = "GainCoins";
|
|
4
|
+
CustomMoveType[CustomMoveType["GainVp"] = 2] = "GainVp";
|
|
5
|
+
CustomMoveType[CustomMoveType["GainCoinsAround"] = 3] = "GainCoinsAround";
|
|
6
|
+
CustomMoveType[CustomMoveType["ActivateCard"] = 4] = "ActivateCard";
|
|
7
|
+
CustomMoveType[CustomMoveType["ChooseAbility"] = 5] = "ChooseAbility";
|
|
8
|
+
CustomMoveType[CustomMoveType["UseItem"] = 6] = "UseItem";
|
|
9
|
+
CustomMoveType[CustomMoveType["ChooseEncounter"] = 7] = "ChooseEncounter";
|
|
10
|
+
CustomMoveType[CustomMoveType["ResolveOutcome"] = 8] = "ResolveOutcome";
|
|
11
|
+
CustomMoveType[CustomMoveType["SkipEncounter"] = 9] = "SkipEncounter";
|
|
12
|
+
CustomMoveType[CustomMoveType["ResolveQuest"] = 10] = "ResolveQuest";
|
|
13
|
+
CustomMoveType[CustomMoveType["Pass"] = 11] = "Pass";
|
|
14
|
+
CustomMoveType[CustomMoveType["UseReaction"] = 12] = "UseReaction";
|
|
15
|
+
CustomMoveType[CustomMoveType["TakeEventOption"] = 13] = "TakeEventOption";
|
|
16
|
+
CustomMoveType[CustomMoveType["TakeSpecialAction"] = 14] = "TakeSpecialAction";
|
|
17
|
+
})(CustomMoveType || (CustomMoveType = {}));
|
|
18
|
+
//# sourceMappingURL=CustomMoveType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomMoveType.js","sourceRoot":"","sources":["../../src/rules/CustomMoveType.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,cAwEX;AAxED,WAAY,cAAc;IAKxB,6DAAa,CAAA;IAEb,uDAAM,CAAA;IAMN,yEAAe,CAAA;IAMf,mEAAY,CAAA;IAOZ,qEAAa,CAAA;IAGb,yDAAO,CAAA;IASP,yEAAe,CAAA;IAGf,uEAAc,CAAA;IAGd,qEAAa,CAAA;IACb,oEAAY,CAAA;IAGZ,oDAAI,CAAA;IAGJ,kEAAW,CAAA;IAUX,0EAAe,CAAA;IAUf,8EAAiB,CAAA;AACnB,CAAC,EAxEW,cAAc,KAAd,cAAc,QAwEzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ItemMove } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
5
|
+
export declare class DiscardItemRule extends GreyluneRule {
|
|
6
|
+
getPlayerMoves(): GreyluneMove[];
|
|
7
|
+
afterItemMove(move: ItemMove<number, MaterialType, LocationType>): GreyluneMove[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=DiscardItemRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscardItemRule.d.ts","sourceRoot":"","sources":["../../src/rules/DiscardItemRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQ3D,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,cAAc,IAAI,YAAY,EAAE,CAE/B;IAMD,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAIhF;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Memory } from '../Memory';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { itemLimit, playerItems } from '../material/PlayerState';
|
|
5
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
6
|
+
import { RuleId } from './RuleId';
|
|
7
|
+
export class DiscardItemRule extends GreyluneRule {
|
|
8
|
+
getPlayerMoves() {
|
|
9
|
+
return this.villageCards.location(LocationType.Items).player(this.player).deleteItems();
|
|
10
|
+
}
|
|
11
|
+
afterItemMove(move) {
|
|
12
|
+
if (move.itemType !== MaterialType.VillageCard)
|
|
13
|
+
return [];
|
|
14
|
+
if (playerItems(this, this.player).length > itemLimit(this, this.player))
|
|
15
|
+
return [];
|
|
16
|
+
return [this.startRule(this.remind(Memory.Resume) ?? RuleId.ResolveEffects)];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=DiscardItemRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscardItemRule.js","sourceRoot":"","sources":["../../src/rules/DiscardItemRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAOjC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;IACzF,CAAC;IAMD,aAAa,CAAC,IAAkD;QAC9D,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,WAAW;YAAE,OAAO,EAAE,CAAA;QACzD,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAA;QACnF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAS,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAA;IACtF,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Effect, Gain, Requirement } from '../material/Effect';
|
|
2
|
+
import { EncounterCard } from '../material/EncounterCard';
|
|
3
|
+
import { GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
4
|
+
export type Ignored = {
|
|
5
|
+
outcome: number;
|
|
6
|
+
requirement: number;
|
|
7
|
+
};
|
|
8
|
+
export type ResolveOutcomeData = {
|
|
9
|
+
card: number;
|
|
10
|
+
outcomes: number[];
|
|
11
|
+
ignored?: Ignored[];
|
|
12
|
+
};
|
|
13
|
+
export declare abstract class EncounterRule extends GreyluneRule {
|
|
14
|
+
get ignores(): number;
|
|
15
|
+
protected front(card: number): EncounterCard;
|
|
16
|
+
protected encounterMoves(card: number): ResolveOutcomeData[];
|
|
17
|
+
private isFree;
|
|
18
|
+
private offerOf;
|
|
19
|
+
private ignoreVariants;
|
|
20
|
+
protected resolve(data: ResolveOutcomeData): GreyluneMove[];
|
|
21
|
+
private incomeOn;
|
|
22
|
+
}
|
|
23
|
+
export declare const outcomeRequirements: (front: EncounterCard, outcomes: number[], ignored?: Ignored[]) => Requirement[];
|
|
24
|
+
export declare const outcomeGains: (front: EncounterCard, outcomes: number[]) => Gain[];
|
|
25
|
+
export declare const outcomeEffect: (front: EncounterCard, data: ResolveOutcomeData) => Effect;
|
|
26
|
+
//# sourceMappingURL=EncounterRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncounterRule.d.ts","sourceRoot":"","sources":["../../src/rules/EncounterRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAqB,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACjF,OAAO,EAAE,aAAa,EAAsC,MAAM,2BAA2B,CAAA;AAK7F,OAAO,EAAoB,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7E,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAG9D,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAAA;AAS1F,8BAAsB,aAAc,SAAQ,YAAY;IAEtD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAGD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAE3C;IAmBD,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAU3D;IAQD,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,cAAc;IAmBtB,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAc1D;IAMD,OAAO,CAAC,QAAQ;CAGjB;AAQD,eAAO,MAAM,mBAAmB,UAAW,aAAa,YAAY,MAAM,EAAE,YAAW,OAAO,EAAE,KAAQ,WAAW,EAKhH,CAAA;AAGH,eAAO,MAAM,YAAY,UAAW,aAAa,YAAY,MAAM,EAAE,KAAG,IAAI,EACW,CAAA;AAGvF,eAAO,MAAM,aAAa,UAAW,aAAa,QAAQ,kBAAkB,KAAG,MAG7E,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { GainType, isCheck } from '../material/Effect';
|
|
2
|
+
import { encounterCardData } from '../material/EncounterCard';
|
|
3
|
+
import { LocationType } from '../material/LocationType';
|
|
4
|
+
import { MaterialType } from '../material/MaterialType';
|
|
5
|
+
import { Memory } from '../Memory';
|
|
6
|
+
import { incomeTokenGains } from '../material/Tokens';
|
|
7
|
+
import { GreyluneRule } from './GreyluneRule';
|
|
8
|
+
import { RuleId } from './RuleId';
|
|
9
|
+
export class EncounterRule extends GreyluneRule {
|
|
10
|
+
get ignores() {
|
|
11
|
+
return this.remind(Memory.IgnoredConditions) ?? 0;
|
|
12
|
+
}
|
|
13
|
+
front(card) {
|
|
14
|
+
return this.encounterCards.getItem(card).id.front;
|
|
15
|
+
}
|
|
16
|
+
encounterMoves(card) {
|
|
17
|
+
const front = this.front(card);
|
|
18
|
+
const outcomes = encounterCardData[front].outcomes;
|
|
19
|
+
const free = outcomes.map((_, outcome) => outcome).filter((outcome) => this.isFree(front, outcome));
|
|
20
|
+
const subsets = (outcomes.length > 1 ? [[0], [1], [0, 1]] : [[0]]).filter((subset) => free.every((outcome) => subset.includes(outcome)));
|
|
21
|
+
const ways = subsets.flatMap((subset) => this.ignoreVariants(front, subset).map((ignored) => (ignored.length ? { card, outcomes: subset, ignored } : { card, outcomes: subset })));
|
|
22
|
+
const offers = ways.map((way) => this.offerOf(front, way));
|
|
23
|
+
return ways.filter((_, index) => offers.indexOf(offers[index]) === index);
|
|
24
|
+
}
|
|
25
|
+
isFree(front, outcome) {
|
|
26
|
+
const requirements = encounterCardData[front].outcomes[outcome].requirements ?? [];
|
|
27
|
+
return requirements.every(isCheck) && this.canPay(requirements);
|
|
28
|
+
}
|
|
29
|
+
offerOf(front, data) {
|
|
30
|
+
const requirements = outcomeRequirements(front, data.outcomes, data.ignored);
|
|
31
|
+
const gains = outcomeGains(front, data.outcomes);
|
|
32
|
+
return JSON.stringify([requirements, gains]);
|
|
33
|
+
}
|
|
34
|
+
ignoreVariants(front, subset) {
|
|
35
|
+
const all = subset.flatMap((outcome) => (encounterCardData[front].outcomes[outcome].requirements ?? []).map((_, requirement) => ({ outcome, requirement })));
|
|
36
|
+
return subsetsUpTo(all, this.ignores)
|
|
37
|
+
.filter((ignored) => this.canPay(outcomeRequirements(front, subset, ignored)))
|
|
38
|
+
.filter((ignored) => ignored.every((entry) => !this.canPay(outcomeRequirements(front, subset, without(ignored, entry)))));
|
|
39
|
+
}
|
|
40
|
+
resolve(data) {
|
|
41
|
+
const front = this.front(data.card);
|
|
42
|
+
const requirements = outcomeRequirements(front, data.outcomes, data.ignored);
|
|
43
|
+
const gains = roadLast(outcomeGains(front, data.outcomes));
|
|
44
|
+
const income = this.incomeOn(data.card);
|
|
45
|
+
const taken = income.length > 0 && gains.some((gain) => gain.type === GainType.IncomeToken);
|
|
46
|
+
this.pushGains(gains.flatMap((gain) => (gain.type === GainType.IncomeToken ? (taken ? incomeTokenGains[gain.token] : []) : [gain])));
|
|
47
|
+
return [
|
|
48
|
+
...this.payRequirements(requirements.filter((requirement) => !isCheck(requirement))),
|
|
49
|
+
...(taken ? income.moveItems({ type: LocationType.IncomeTokenSpace, player: this.player }) : []),
|
|
50
|
+
this.encounterCards.index(data.card).moveItem({ type: LocationType.UntoldStories, player: this.player }),
|
|
51
|
+
this.startRule(RuleId.ResolveEffects)
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
incomeOn(card) {
|
|
55
|
+
return this.material(MaterialType.IncomeToken).location(LocationType.CardIncome).parent(card);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export const outcomeRequirements = (front, outcomes, ignored = []) => outcomes.flatMap((outcome) => (encounterCardData[front].outcomes[outcome].requirements ?? []).filter((_, requirement) => !ignored.some((entry) => entry.outcome === outcome && entry.requirement === requirement)));
|
|
59
|
+
export const outcomeGains = (front, outcomes) => outcomes.flatMap((outcome) => encounterCardData[front].outcomes[outcome].gains ?? []);
|
|
60
|
+
export const outcomeEffect = (front, data) => ({
|
|
61
|
+
requirements: outcomeRequirements(front, data.outcomes, data.ignored),
|
|
62
|
+
gains: outcomeGains(front, data.outcomes)
|
|
63
|
+
});
|
|
64
|
+
const roadLast = (gains) => [
|
|
65
|
+
...gains.filter((gain) => gain.type !== GainType.Travel),
|
|
66
|
+
...gains.filter((gain) => gain.type === GainType.Travel)
|
|
67
|
+
];
|
|
68
|
+
const without = (items, item) => items.filter((entry) => entry !== item);
|
|
69
|
+
const subsetsUpTo = (items, size) => {
|
|
70
|
+
if (size <= 0 || !items.length)
|
|
71
|
+
return [[]];
|
|
72
|
+
const [head, ...tail] = items;
|
|
73
|
+
return [...subsetsUpTo(tail, size), ...subsetsUpTo(tail, size - 1).map((subset) => [head, ...subset])];
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=EncounterRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncounterRule.js","sourceRoot":"","sources":["../../src/rules/EncounterRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CustomMove, ItemMove } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { GreyluneMaterial, GreyluneMove, GreyluneRule } from './GreyluneRule';
|
|
5
|
+
export declare class EventRule extends GreyluneRule {
|
|
6
|
+
get newcomer(): GreyluneMaterial;
|
|
7
|
+
onRuleStart(): GreyluneMove[];
|
|
8
|
+
getPlayerMoves(): GreyluneMove[];
|
|
9
|
+
afterItemMove(move: ItemMove<number, MaterialType, LocationType>): GreyluneMove[];
|
|
10
|
+
onCustomMove(move: CustomMove): GreyluneMove[];
|
|
11
|
+
private takeOption;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=EventRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventRule.d.ts","sourceRoot":"","sources":["../../src/rules/EventRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoC,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAe7E,qBAAa,SAAU,SAAQ,YAAY;IAEzC,IAAI,QAAQ,IAAI,gBAAgB,CAE/B;IAED,WAAW,IAAI,YAAY,EAAE,CAK5B;IAED,cAAc,IAAI,YAAY,EAAE,CAS/B;IAGD,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,YAAY,EAAE,CAGhF;IAGD,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAG7C;IAED,OAAO,CAAC,UAAU;CAKnB"}
|