Skip to content

Commit

Permalink
Standing Stones
Browse files Browse the repository at this point in the history
  • Loading branch information
halogenandtoast committed Dec 21, 2024
1 parent 82ed1b3 commit 7be022d
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
31 changes: 26 additions & 5 deletions backend/arkham-api/library/Arkham/Location/Cards/StandingStones.hs
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
module Arkham.Location.Cards.StandingStones (standingStones) where

import Arkham.Ability
import Arkham.Card.CardDef
import Arkham.Helpers.SkillTest
import Arkham.Location.Cards qualified as Cards
import Arkham.Location.Import.Lifted
import Arkham.Location.Import.Lifted hiding (RevealChaosToken)
import Arkham.Matcher
import Arkham.Modifier
import Arkham.Scenarios.FatalMirage.Helpers
import Arkham.Story.Cards qualified as Stories

newtype StandingStones = StandingStones LocationAttrs
deriving anyclass (IsLocation, HasModifiersFor)
Expand All @@ -10,10 +17,24 @@ newtype StandingStones = StandingStones LocationAttrs
standingStones :: LocationCard StandingStones
standingStones = location StandingStones Cards.standingStones 2 (PerPlayer 4)

mirageCards :: [CardDef]
mirageCards = [Cards.theBlackStone, Cards.dyersClassroom]

instance HasAbilities StandingStones where
getAbilities (StandingStones attrs) =
extendRevealed attrs []
getAbilities (StandingStones a) =
extendRevealed
a
[ mirage a 2 mirageCards
, playerLimit PerTestOrAbility
$ restricted a 1 (DuringSkillTest $ WhileInvestigating (be a))
$ forced
$ RevealChaosToken #after You #frost
]

instance RunMessage StandingStones where
runMessage msg (StandingStones attrs) = runQueueT $ case msg of
_ -> StandingStones <$> liftRunMessage msg attrs
runMessage msg l@(StandingStones attrs) = runQueueT $ case msg of
UseThisAbility iid (isSource attrs -> True) 1 -> do
assignDamage iid (attrs.ability 1) 1
withSkillTest \sid -> skillTestModifier sid (attrs.ability 1) iid (DiscoveredClues 1)
pure l
_ -> StandingStones <$> mirageRunner Stories.standingStones mirageCards 2 msg attrs
16 changes: 15 additions & 1 deletion backend/arkham-api/library/Arkham/Story/Cards/StandingStones.hs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
module Arkham.Story.Cards.StandingStones (standingStones) where

import Arkham.Helpers.Query
import Arkham.Location.Cards qualified as Locations
import Arkham.Message.Lifted.Choose
import Arkham.Story.Cards qualified as Cards
import Arkham.Story.Import.Lifted

Expand All @@ -12,6 +15,17 @@ standingStones = story StandingStones Cards.standingStones

instance RunMessage StandingStones where
runMessage msg s@(StandingStones attrs) = runQueueT $ case msg of
ResolveStory _ ResolveIt story' | story' == toId attrs -> do
ResolveStory iid ResolveIt story' | story' == toId attrs -> do
mTheBlackStone <- getSetAsideCardMaybe Locations.theBlackStone
mDyersClassroom <- getSetAsideCardMaybe Locations.dyersClassroom

chooseOneM iid do
for_ mTheBlackStone
$ labeled "Put the set-aside The Black Stone location into play."
. placeLocation_
for_ mDyersClassroom
$ labeled "Put the set-aside Dyer's Classroom location into play."
. placeLocation_

pure s
_ -> StandingStones <$> liftRunMessage msg attrs

0 comments on commit 7be022d

Please sign in to comment.