Skip to content

Commit 893d257

Browse files
Film Fatale
1 parent e43f3d4 commit 893d257

File tree

255 files changed

+4409
-231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

255 files changed

+4409
-231
lines changed

backend/arkham-api/arkham-api.cabal

Lines changed: 65 additions & 0 deletions
Large diffs are not rendered by default.

backend/arkham-api/library/Arkham/Ability.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ restrict = flip withCriteria
239239
haunted :: (HasCardCode a, Sourceable a) => Text -> a -> Int -> Ability
240240
haunted tooltip a n = withTooltip tooltip $ mkAbility a n Haunted
241241

242+
hauntedI :: (HasI18n, HasCardCode a, Sourceable a) => Scope -> a -> Int -> Ability
243+
hauntedI tooltip a n = withI18nTooltip tooltip $ mkAbility a n Haunted
244+
242245
cosmos :: (HasCardCode a, Sourceable a) => a -> Int -> Ability
243246
cosmos a n = mkAbility a n Cosmos
244247

backend/arkham-api/library/Arkham/Act.hs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,4 +354,16 @@ allActs =
354354
, -- The Midwinter Gala
355355
SomeActCard meetAndGreet
356356
, SomeActCard findingTheJewel
357+
, -- Film Fatale
358+
--- Film Fatale
359+
SomeActCard andresRequest
360+
, --- Cosmic Journey
361+
SomeActCard aCosmicJourney
362+
, SomeActCard fromWhenceTheyCame
363+
, --- Forgotten Island
364+
SomeActCard theForgottenIsland
365+
, SomeActCard destroyTheSource
366+
, --- Abominable Contessa
367+
SomeActCard theAbominableContessa
368+
, SomeActCard bloodbath
357369
]

backend/arkham-api/library/Arkham/Act/Cards.hs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@ allActCards =
2424
$ map
2525
(toCardCode &&& id)
2626
[ aCircleUnbroken
27+
, aCosmicJourney
2728
, aFamiliarPattern
2829
, afterHours
2930
, alejandrosPlight
3031
, alejandrosPrison
3132
, allIn
33+
, andresRequest
3234
, arkhamAsylum
3335
, ascendTheMountain
3436
, ascendingTheHillV1
@@ -48,6 +50,7 @@ allActCards =
4850
, beyondTheMistV3
4951
, beyondTheMistV4
5052
, beyondTheWitchHouse
53+
, bloodbath
5154
, breakingAndEntering
5255
, campusSafety
5356
, cavernOfTheForgottenAge
@@ -62,6 +65,7 @@ allActCards =
6265
, darkKnowledgeV1
6366
, darkKnowledgeV2
6467
, descentIntoDark
68+
, destroyTheSource
6569
, discoverTheTruth
6670
, discoveringTheTruth
6771
, disruptingTheRitual
@@ -85,6 +89,7 @@ allActCards =
8589
, followingLeads
8690
, friendsInHighPlacesHenryDeveau
8791
, friendsInHighPlacesHenrysInformation
92+
, fromWhenceTheyCame
8893
, getTheEngineRunning
8994
, getToTheBoats
9095
, harlanIsInDanger
@@ -176,6 +181,7 @@ allActCards =
176181
, strangeOccurences
177182
, strangeRelicsMariaDeSilva
178183
, strangeRelicsMariasInformation
184+
, theAbominableContessa
179185
, theBarrier
180186
, theBindingRite
181187
, theBlackExpanse
@@ -196,6 +202,7 @@ allActCards =
196202
, theFinalDescent
197203
, theFinalMirage
198204
, theFirstOath
205+
, theForgottenIsland
199206
, theFourKeys
200207
, theGateOpens
201208
, theGreatSeal
@@ -982,3 +989,24 @@ meetAndGreet = act "71005" "Meet and Greet" 1 TheMidwinterGala
982989

983990
findingTheJewel :: CardDef
984991
findingTheJewel = act "71006" "Finding the Jewel" 2 TheMidwinterGala
992+
993+
andresRequest :: CardDef
994+
andresRequest = act "72004" "Andres' Request" 1 FilmFatale
995+
996+
aCosmicJourney :: CardDef
997+
aCosmicJourney = act "72025" "A Cosmic Journey" 2 CosmicJourney
998+
999+
fromWhenceTheyCame :: CardDef
1000+
fromWhenceTheyCame = act "72026" "From Whence They Came" 3 CosmicJourney
1001+
1002+
theForgottenIsland :: CardDef
1003+
theForgottenIsland = act "72037" "The Forgotten Island" 2 ForgottenIsland
1004+
1005+
destroyTheSource :: CardDef
1006+
destroyTheSource = act "72038" "Destroy the Source" 3 ForgottenIsland
1007+
1008+
theAbominableContessa :: CardDef
1009+
theAbominableContessa = act "72048" "The Abominable Contessa" 2 AbominableContessa
1010+
1011+
bloodbath :: CardDef
1012+
bloodbath = act "72049" "Bloodbath" 3 AbominableContessa
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
module Arkham.Act.Cards.ACosmicJourney (aCosmicJourney) where
2+
3+
import Arkham.Ability hiding (Cosmos)
4+
import Arkham.Act.Cards qualified as Cards
5+
import Arkham.Act.Import.Lifted
6+
import Arkham.Asset.Cards qualified as Assets
7+
import Arkham.Asset.Uses
8+
import Arkham.Deck qualified as Deck
9+
import Arkham.Enemy.Cards qualified as Enemies
10+
import Arkham.Helpers.Modifiers (ModifierType (..), modifySelect)
11+
import Arkham.Helpers.Scenario
12+
import Arkham.Location.Cards qualified as Locations
13+
import Arkham.Matcher
14+
import Arkham.Message.Lifted.Choose
15+
import Arkham.Message.Lifted.Move
16+
import Arkham.Scenario.Deck
17+
import Arkham.Scenarios.FilmFatale.Helpers (initialLayout)
18+
import Arkham.Trait (Trait (Cosmos, RitualSite))
19+
20+
newtype ACosmicJourney = ACosmicJourney ActAttrs
21+
deriving anyclass IsAct
22+
deriving newtype (Show, Eq, ToJSON, FromJSON, Entity)
23+
24+
aCosmicJourney :: ActCard ACosmicJourney
25+
aCosmicJourney = act (2, A) ACosmicJourney Cards.aCosmicJourney Nothing
26+
27+
instance HasModifiersFor ACosmicJourney where
28+
getModifiersFor (ACosmicJourney a) = do
29+
modifySelect a (EnemyWithTitle "Possessed Extra") [HealthModifier 2]
30+
31+
instance HasAbilities ACosmicJourney where
32+
getAbilities = actAbilities \a ->
33+
[ restricted
34+
a
35+
1
36+
(exists $ assetIs Assets.heliosTelescopeGateToTheCosmos <> AssetWithUseCount Shard (atLeast 3))
37+
$ Objective
38+
$ forced (RoundEnds #when)
39+
]
40+
41+
instance RunMessage ACosmicJourney where
42+
runMessage msg a@(ACosmicJourney attrs) = runQueueT $ case msg of
43+
UseThisAbility _ (isSource attrs -> True) 1 -> do
44+
advancedWithOther attrs
45+
pure a
46+
AdvanceAct (isSide B attrs -> True) _ _ -> do
47+
discardEach attrs AnyEnemy
48+
spaceSet <- selectJust $ locationIs Locations.spaceSet
49+
eachInvestigator \iid -> do
50+
moveTo attrs iid spaceSet
51+
discardAllClues attrs iid
52+
53+
selectEach (mapOneOf LocationWithTrait [Cosmos, RitualSite]) removeLocation
54+
selectEach (AssetWithTrait Cosmos) removeAsset
55+
56+
placeSetAsideLocations_ [Locations.jungleSet, Locations.gothicSet]
57+
push $ SetLayout initialLayout
58+
lead <- getLead
59+
centralLot <- placeSetAsideLocation Locations.centralLotQuietOnSet
60+
flipOverBy lead attrs centralLot
61+
monarchCard <-
62+
selectJust $ VictoryDisplayCardMatch $ basic $ cardIs Enemies.saturniteMonarchGraciousHost
63+
monarch <- createEnemyAt monarchCard centralLot
64+
flipOverBy lead attrs monarch
65+
66+
reelDeck <- take 2 <$> getScenarioDeck ReelDeck
67+
shuffleCardsIntoDeck Deck.EncounterDeck reelDeck
68+
shuffleEncounterDiscardBackIn
69+
70+
addChaosToken #cultist
71+
addChaosToken #tablet
72+
addChaosToken #elderthing
73+
74+
investigators <- select UneliminatedInvestigator
75+
heliosTelescope <- selectJust $ assetIs Assets.heliosTelescopeGateToTheCosmos
76+
leadChooseOneM $ targets investigators (`takeControlOfAsset` heliosTelescope)
77+
78+
advanceActDeck attrs
79+
pure a
80+
_ -> ACosmicJourney <$> liftRunMessage msg attrs

0 commit comments

Comments
 (0)