Skip to content

Commit

Permalink
Updated Scenario with expansion support and custom soundtrack
Browse files Browse the repository at this point in the history
- Added Mark J. Hadley's soundtrack from the video game. Now plays unique title tracks for cutscenes, background music for the locations, and battle music on monster spawn. One track has been reserved for those who make the ultimate mistake...
- Updated item drops across the board to randomly select from pools of base and expansion items where logical
- Curated the starting item pools to make sure that any situationally overpowered or useless items from all of the expansions were excluded
- Updated monster spawns across the board to randomly select from pools of base and expansion monsters where logical
- Removed the "cult leader" custom monster, replacing it with a regular cultist, allowing the Priest of Dagon model to be reserved for the mission finale
- Reduced the health pools of the "Priest of " custom monsters as they didn't match the standards set by FFG's numbers
- Updated The Horror's Hive to use the Formless Spawn from Horrific Journeys as a base monster if the player has the expansion (still falls back to Child of Dagon otherwise)
- Updated all monster spawns in the warehouse (including from The Horror's Hive) so they always spawn a monster at random from the same pool of base and expansion monsters
- The house man hostage now has 3 unique negative outcomes that will always use an expansion monster for spawning if possible (falling back to cultist if not)
- Added a new monster spawn at the palace that triggers if you decide to go there first, because you deserve to suffer for your poor decision making
- Replaced the free Carbine Rifle in the house with the .45 Automatic, as it was simply making the mission too easy previously
- Removed women token from the start of the dock (as funny as it was to make the player hunt out a token just to immediately remove it in the next prompt)
- Overhauled mythos calculation again. Now tracks location visited count as a separate variable, allowing the mythos levels to be configured independently of in-game location visit order effects
- Mythos now starts with both flavour and minor events, as players would end up spending roughly 1/3 of the mission with nothing interesting happening during mythos
- When ramping up mythos events, the mission will now saddle between categories rather that jumping straight between them
- The palace will always ramp up mythos to it's max level on load. No more free passes for going there early
- Removed last instances of using multiple events to simulate or conditionals (yay!)
  • Loading branch information
EwenDC committed Sep 25, 2021
1 parent 9f448c6 commit d456be3
Show file tree
Hide file tree
Showing 45 changed files with 1,084 additions and 540 deletions.
10 changes: 5 additions & 5 deletions ConsumingShadow/ConsumingShadow.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ format=18
hidden=False
type=MoM
defaultlanguage=English
defaultmusicon=True
defaultmusicon=False
difficulty=0.8
lengthmin=150
lengthmax=210
image=Icon.jpg
version=D5-F0-91-29-5F-FE-F4-3D-F9-C3-2E-F8-72-E0-95-6E-14-7C-07-B8-2D-ED-32-35-DD-7B-6A-87-D6-22-C7-4D
name.English=The Consuming Shadow (v0.94) [BETA]
version=25-A5-57-E9-D6-FD-4B-57-E7-FC-02-C2-E1-6E-C7-CA-BA-3E-7B-31-02-C2-6F-73-1E-D8-5F-8E-4A-31-F3-A4
name.English=The Consuming Shadow (v0.95) [BETA]
synopsys.English=You must identify and stop a cult from summoning an Ancient One before they can complete the ritual.
description.English=In less than 12 hours, a cult is going to help an Ancient One invade our reality. You must work fast to figure out which cult is facilitating the invasion, and then banish the correct god before time runs out. Based on the video game The Consuming Shadow by Ben 'Yahtzee' Croshaw.\n\nThis scenario involves a moderate amount of deduction. A pencil and paper is recommended while playing.
authors.English=Ewen Cameron
description.English=In less than 12 hours, a cult is going to help an Ancient One invade our reality. You must work fast to figure out which cult is facilitating the invasion, and then banish the correct god before time runs out. Based on the video game The Consuming Shadow by Ben 'Yahtzee' Croshaw, featuring the soundtrack by Mark J. Hadley (shared under the CC BY-NC 3.0 license).\n\nThis scenario involves a moderate amount of deduction. A pencil and paper is recommended while playing.
authors.English=Ewen Cameron\nMark J. Hadley
authors_short.English=Ewen Cameron
Binary file modified ConsumingShadow/ConsumingShadow.valkyrie
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicAncient.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicDriven.ogg
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicRust&Debris.ogg
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicSecretive.ogg
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicStoredAway.ogg
Binary file not shown.
Binary file added ConsumingShadowSource/Audio/MusicUnnatural.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes
File renamed without changes
Binary file not shown.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file not shown.
File renamed without changes
File renamed without changes
Binary file added ConsumingShadowSource/Cutscene/Prologue_Music.ogg
Binary file not shown.
File renamed without changes
251 changes: 179 additions & 72 deletions ConsumingShadowSource/Localization.English.txt

Large diffs are not rendered by default.

Binary file removed ConsumingShadowSource/Monster_Child_Of_Dagon.png
Binary file not shown.
Binary file removed ConsumingShadowSource/Monster_Priest_Of_Dagon.png
Binary file not shown.
149 changes: 103 additions & 46 deletions ConsumingShadowSource/dock.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

[EventDock_GreenCrateTrap]
buttons=1
event1=SpawnDock_HouseBoatDeepOne
event1=SpawnDock_HouseBoatDeepOne SpawnDock_HouseBoatHuntingDeepOne
remove=TokenDock_SearchGreenCrate
randomevents=true
audio=AudioNegativeStory

[EventDock_RedCrateTrap]
buttons=1
event1=SpawnDock_RentalDockDeepOne
event1=SpawnDock_RentalDockDeepOne SpawnDock_RentalDockHuntingDeepOne
remove=TokenDock_SearchRedCrate
randomevents=true
audio=AudioNegativeStory

[EventDock_SearchDock2GoodsFaliure]
Expand Down Expand Up @@ -289,13 +291,6 @@ buttons=1
event1=EventDock_SearchPostersSkillCheck
type=TokenSearch

[TokenDock_Woman]
xposition=-30.58517
yposition=8.630016
display=false
buttons=0
type=TokenPurpleWoman

[EventDockStart_MinCam]
operations=DockVisited,=,1 CurrentLocation,=,3 Dock_GreenKeyLocation,=,#rand3 Dock_RedKeyLocation,=,#rand3 Dock_BlueKeyLocation,=,#rand3
display=false
Expand All @@ -304,6 +299,7 @@ event1=EventDock_MaxCam
mincam=true
xposition=-31.5
yposition=3.5
music=Audio/MusicDriven.ogg Audio/MusicAncient.ogg Audio/MusicDarkDwelling.ogg Audio/MusicRust&Debris.ogg Audio/MusicSecretive.ogg Audio/MusicStoredAway.ogg Audio/MusicUnnatural.ogg

[EventDock_MaxCam]
display=false
Expand Down Expand Up @@ -387,14 +383,12 @@ xposition=-30.60251
yposition=8.629572
buttons=1
event1=EventDock_RemoveWoman
add=TokenDock_Woman

[EventDock_RemoveWoman]
xposition=-29.75
yposition=5.25
buttons=1
event1=EventDock_WomanNote
remove=TokenDock_Woman

[EventDock_PlaceStreet2]
xposition=-19.25
Expand Down Expand Up @@ -526,10 +520,33 @@ audio=AudioUnlock1
[EventDock_RedItemPickup]
operations=Dock_RedItemTaken,=,1
vartests=VarOperation:Dock_RedItemTaken,!=,1
display=false
buttons=1
event1=EventDock_RedItemPickup_LuckyRabbitsFoot EventDock_RedItemPickup_LuckyBandana EventDock_RedItemPickup_LuckyCigaretteCase EventDock_RedItemPickup_LuckyRing
randomevents=true
audio=AudioGenericItem1

[EventDock_RedItemPickup_LuckyRabbitsFoot]
buttons=1
event1=
add=QItemLuckyRabbitsFoot
audio=AudioGenericItem1

[EventDock_RedItemPickup_LuckyBandana]
vartests=VarOperation:#PotS,==,1
buttons=1
event1=
add=QItemLuckyBandana

[EventDock_RedItemPickup_LuckyCigaretteCase]
buttons=1
event1=
add=QItemLuckyCigaretteCase

[EventDock_RedItemPickup_LuckyRing]
vartests=VarOperation:#SoT,==,1
buttons=1
event1=
add=QItemLuckyRing

[EventDock_RedClue]
buttons=1
Expand Down Expand Up @@ -709,10 +726,28 @@ audio=AudioUnlock1
[EventDock_BlueItemPickup]
operations=Dock_BlueItemTaken,=,1
vartests=VarOperation:Dock_BlueItemTaken,!=,1
display=false
buttons=1
event1=EventDock_BlueItemPickup_Wrack EventDock_BlueItemPickup_CallTheStorm EventDock_BlueItemPickup_StormOfSpirits
randomevents=true
audio=AudioGenericItem3

[EventDock_BlueItemPickup_Wrack]
buttons=1
event1=
add=QItemWrack
audio=AudioGenericItem3

[EventDock_BlueItemPickup_CallTheStorm]
vartests=VarOperation:#PotS,==,1
buttons=1
event1=
add=QItemCallTheStorm

[EventDock_BlueItemPickup_StormOfSpirits]
vartests=VarOperation:#HJ,==,1
buttons=1
event1=
add=QItemStormOfSpirits

[EventDock_SearchDock2GoodsSkillCheck]
vartests=VarOperation:Dock_BlueKeyLocation,==,Dock_CurrentSearchLocation
Expand Down Expand Up @@ -798,10 +833,11 @@ audio=AudioSpell2
[SpawnDock_SnackShackDeepOneHybrid]
xposition=-26.39629
yposition=11.65662
vartests=VarOperation:$mythosMajor,==,1
vartests=VarOperation:LocationsVisited,>,2
buttons=1
event1=EventMove1SpaceMessage
audio=AudioSuspectTransform
music=Audio/MusicBattleRotund.ogg Audio/MusicSecretive.ogg Audio/MusicUnnatural.ogg Audio/MusicAncient.ogg Audio/MusicDarkDwelling.ogg Audio/MusicDriven.ogg Audio/MusicRust&Debris.ogg Audio/MusicStoredAway.ogg
monster=MonsterDeepOneHybrid

[SpawnDock_PierDeepOne]
Expand All @@ -812,12 +848,25 @@ vartests=VarOperation:DeepOnes,<,4
buttons=1
event1=
audio=AudioMonsterGeneric1
music=Audio/MusicBattleEncompass.ogg Audio/MusicAncient.ogg Audio/MusicUnnatural.ogg Audio/MusicDriven.ogg Audio/MusicRust&Debris.ogg Audio/MusicStoredAway.ogg Audio/MusicDarkDwelling.ogg Audio/MusicSecretive.ogg
monster=MonsterDeepOne

[SpawnDock_PierHuntingDeepOne]
xposition=-26.25
yposition=15.75
operations=HuntingDeepOnes,+,1
vartests=VarOperation:HuntingDeepOnes,<,2 VarTestsLogicalOperator:AND VarOperation:#HJ,==,1
buttons=1
event1=
audio=AudioMonsterGeneric1
music=Audio/MusicBattleEncompass.ogg Audio/MusicUnnatural.ogg Audio/MusicRust&Debris.ogg Audio/MusicAncient.ogg Audio/MusicStoredAway.ogg Audio/MusicSecretive.ogg Audio/MusicDriven.ogg Audio/MusicDarkDwelling.ogg
monster=MonsterHuntingDeepOne

[EventDock_BlueCrateTrap]
buttons=1
event1=SpawnDock_PierDeepOne
event1=SpawnDock_PierDeepOne SpawnDock_PierHuntingDeepOne
remove=TokenDock_SearchBlueCrate
randomevents=true
audio=AudioNegativeStory

[EventDock_SearchBlueCrate]
Expand Down Expand Up @@ -889,28 +938,23 @@ yposition=19.28759
buttons=1
event1=EventDock_CultLeaderJeer
audio=AudioMonsterGeneric2
monster=CustomMonsterCultLeader
music=Audio/MusicBattleEternalServant.ogg Audio/MusicStoredAway.ogg Audio/MusicUnnatural.ogg Audio/MusicAncient.ogg Audio/MusicSecretive.ogg Audio/MusicRust&Debris.ogg Audio/MusicDarkDwelling.ogg Audio/MusicDriven.ogg
monster=MonsterCultist

[EventDock_CultLeaderJeer]
buttons=3
event1=EventDock_CultLeaderJeer_HasturCorrect EventDock_CultLeaderJeer_HasturIncorrectPositive_CondPain EventDock_CultLeaderJeer_HasturIncorrectPositive_CondLust EventDock_CultLeaderJeer_IncorrectNegative
event2=EventDock_CultLeaderJeer_YigCorrect EventDock_CultLeaderJeer_YigIncorrectPositive_CondPain EventDock_CultLeaderJeer_YigIncorrectPositive_CondLust EventDock_CultLeaderJeer_IncorrectNegative
event3=EventDock_CultLeaderJeer_ZharCorrect EventDock_CultLeaderJeer_ZharIncorrectPositive_CondPain EventDock_CultLeaderJeer_ZharIncorrectPositive_CondLust EventDock_CultLeaderJeer_IncorrectNegative
event1=EventDock_CultLeaderJeer_HasturCorrect EventDock_CultLeaderJeer_HasturIncorrectPositive EventDock_CultLeaderJeer_IncorrectNegative
event2=EventDock_CultLeaderJeer_YigCorrect EventDock_CultLeaderJeer_YigIncorrectPositive EventDock_CultLeaderJeer_IncorrectNegative
event3=EventDock_CultLeaderJeer_ZharCorrect EventDock_CultLeaderJeer_ZharIncorrectPositive EventDock_CultLeaderJeer_IncorrectNegative

[EventDock_CultLeaderJeer_HasturCorrect]
vartests=VarOperation:GodName_Madness,==,1
display=false
buttons=1
event1=EventDock_CultLeaderJeer_Correct

[EventDock_CultLeaderJeer_HasturIncorrectPositive_CondPain]
vartests=VarOperation:GodName_Pain,==,1 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive

[EventDock_CultLeaderJeer_HasturIncorrectPositive_CondLust]
vartests=VarOperation:GodName_Lust,==,1 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
[EventDock_CultLeaderJeer_HasturIncorrectPositive]
vartests=VarTestsParenthesis:( VarTestsParenthesis:( VarOperation:GodName_Pain,==,1 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsParenthesis:) VarTestsLogicalOperator:OR VarTestsParenthesis:( VarOperation:GodName_Lust,==,1 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsParenthesis:) VarTestsParenthesis:) VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive
Expand All @@ -925,14 +969,8 @@ display=false
buttons=1
event1=EventDock_CultLeaderJeer_Correct

[EventDock_CultLeaderJeer_YigIncorrectPositive_CondPain]
vartests=VarOperation:GodName_Pain,==,2 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive

[EventDock_CultLeaderJeer_YigIncorrectPositive_CondLust]
vartests=VarOperation:GodName_Lust,==,2 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
[EventDock_CultLeaderJeer_YigIncorrectPositive]
vartests=VarTestsParenthesis:( VarTestsParenthesis:( VarOperation:GodName_Pain,==,2 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsParenthesis:) VarTestsLogicalOperator:OR VarTestsParenthesis:( VarOperation:GodName_Lust,==,2 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsParenthesis:) VarTestsParenthesis:) VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive
Expand All @@ -947,14 +985,8 @@ display=false
buttons=1
event1=EventDock_CultLeaderJeer_Correct

[EventDock_CultLeaderJeer_ZharIncorrectPositive_CondPain]
vartests=VarOperation:GodName_Pain,==,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive

[EventDock_CultLeaderJeer_ZharIncorrectPositive_CondLust]
vartests=VarOperation:GodName_Lust,==,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
[EventDock_CultLeaderJeer_ZharIncorrectPositive]
vartests=VarTestsParenthesis:( VarTestsParenthesis:( VarOperation:GodName_Pain,==,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Pain,!=,3 VarTestsParenthesis:) VarTestsLogicalOperator:OR VarTestsParenthesis:( VarOperation:GodName_Lust,==,3 VarTestsLogicalOperator:AND VarOperation:GodRole_Lust,!=,3 VarTestsParenthesis:) VarTestsParenthesis:) VarTestsLogicalOperator:AND VarOperation:GodRole_Madness,!=,3
display=false
buttons=1
event1=EventDock_CultLeaderJeer_IncorrectPositive
Expand All @@ -976,8 +1008,20 @@ vartests=VarOperation:DeepOnes,<,4
buttons=1
event1=
audio=AudioMonsterGeneric3
music=Audio/MusicBattleEncompass.ogg Audio/MusicAncient.ogg Audio/MusicRust&Debris.ogg Audio/MusicDarkDwelling.ogg Audio/MusicSecretive.ogg Audio/MusicUnnatural.ogg Audio/MusicDriven.ogg Audio/MusicStoredAway.ogg
monster=MonsterDeepOne

[SpawnDock_HouseBoatHuntingDeepOne]
xposition=-22.71981
yposition=18.55039
operations=HuntingDeepOnes,+,1
vartests=VarOperation:HuntingDeepOnes,<,2 VarTestsLogicalOperator:AND VarOperation:#HJ,==,1
buttons=1
event1=
audio=AudioMonsterGeneric3
music=Audio/MusicBattleEncompass.ogg Audio/MusicDriven.ogg Audio/MusicStoredAway.ogg Audio/MusicDarkDwelling.ogg Audio/MusicSecretive.ogg Audio/MusicUnnatural.ogg Audio/MusicRust&Debris.ogg Audio/MusicAncient.ogg
monster=MonsterHuntingDeepOne

[EventDock_ExploreRentalDock]
xposition=-30.16961
yposition=23.06043
Expand All @@ -997,10 +1041,11 @@ audio=AudioSpell2
[SpawnDock_RentalShackDeepOneHybrid]
xposition=-30.66497
yposition=22.46405
vartests=VarOperation:$mythosMinor,==,1 VarTestsLogicalOperator:OR VarOperation:$mythosMajor,==,1
vartests=VarOperation:LocationsVisited,>,1
buttons=1
event1=EventMove1SpaceMessage
audio=AudioMonsterGeneric4
music=Audio/MusicBattleRotund.ogg Audio/MusicDriven.ogg Audio/MusicStoredAway.ogg Audio/MusicRust&Debris.ogg Audio/MusicDarkDwelling.ogg Audio/MusicSecretive.ogg Audio/MusicAncient.ogg Audio/MusicUnnatural.ogg
monster=MonsterDeepOneHybrid

[EventDock_SearchRedCrate]
Expand All @@ -1016,8 +1061,20 @@ vartests=VarOperation:DeepOnes,<,4
buttons=1
event1=
audio=AudioMonsterGeneric1
music=Audio/MusicBattleEncompass.ogg Audio/MusicDarkDwelling.ogg Audio/MusicDriven.ogg Audio/MusicRust&Debris.ogg Audio/MusicSecretive.ogg Audio/MusicAncient.ogg Audio/MusicUnnatural.ogg Audio/MusicStoredAway.ogg
monster=MonsterDeepOne

[SpawnDock_RentalDockHuntingDeepOne]
xposition=-30.39127
yposition=21.0771
operations=HuntingDeepOnes,+,1
vartests=VarOperation:HuntingDeepOnes,<,2 VarTestsLogicalOperator:AND VarOperation:#HJ,==,1
buttons=1
event1=
audio=AudioMonsterGeneric1
music=Audio/MusicBattleEncompass.ogg Audio/MusicDarkDwelling.ogg Audio/MusicAncient.ogg Audio/MusicUnnatural.ogg Audio/MusicRust&Debris.ogg Audio/MusicSecretive.ogg Audio/MusicDriven.ogg Audio/MusicStoredAway.ogg
monster=MonsterHuntingDeepOne

[EventDock_GreenCratePuzzleComplete]
vartests=VarOperation:GodColour_Madness,==,2
display=false
Expand Down Expand Up @@ -1070,14 +1127,14 @@ audio=AudioNegative1
display=false
buttons=0
add=UIDock_IntroImage UICutsceneFrame UIDock_IntroText UIDock_IntroContinue
music=AudioAtmosphere5 AudioAtmosphere3 AudioAtmosphere6
music=Cutscene/Prologue_Music.ogg

[UIDock_IntroImage]
xposition=-0.375
yposition=0
display=false
buttons=0
image=Dock_Image.jpg
image=Cutscene/Dock_Image.jpg
size=0.8125
vunits=True

Expand Down
Loading

0 comments on commit d456be3

Please sign in to comment.