diff --git a/data/fc/label/en.json b/data/fc/label/en.json index d4383058e..f981d3b9e 100644 --- a/data/fc/label/en.json +++ b/data/fc/label/en.json @@ -45,11 +45,16 @@ }, "104": { "1": "towards portal %game.mapMarker.1%", - "2": "towards portal %game.mapMarker.2%" + "2": "towards portal %game.mapMarker.2%", + "3": "towards portal %game.mapMarker.3%", + "4": "towards portal %game.mapMarker.4%" }, "105": { "1": "Apply if Dimensional Equilibrium Party) is incomplete" }, + "106": { + "1": "All characters must discard one card from their hand or lose one at random from their discard pile." + }, "115": { "1": "Remove one damage token from each altar %game.mapMarker.a% and %game.mapMarker.b%. The Manifestation of Corruption heals [C/2{$math.floor}] hit points for each damage token removed.", "2": "Remove two damage tokens from each altar %game.mapMarker.a% and %game.mapMarker.b%. The Manifestation of Corruption heals [C/2{$math.floor}] hit points for each damage token removed.", diff --git a/data/fc/scenarios/096.json b/data/fc/scenarios/096.json index bff4988e4..ca7ca48ed 100644 --- a/data/fc/scenarios/096.json +++ b/data/fc/scenarios/096.json @@ -6,6 +6,18 @@ "unlocks": [ "97" ], + "requires": [ + [ + "51" + ] + ], + "requirements": [ + { + "global": [ + "End of Gloom" + ] + } + ], "rewards": { "globalAchievements": [ "Through the Portal" diff --git a/data/fc/scenarios/102.json b/data/fc/scenarios/102.json index acee857e3..f3f338176 100644 --- a/data/fc/scenarios/102.json +++ b/data/fc/scenarios/102.json @@ -5,6 +5,13 @@ "unlocks": [ "110" ], + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], "rooms": [ { "roomNumber": 1, diff --git a/data/fc/scenarios/103.json b/data/fc/scenarios/103.json index dababba5e..543a57ce0 100644 --- a/data/fc/scenarios/103.json +++ b/data/fc/scenarios/103.json @@ -5,6 +5,13 @@ "unlocks": [ "110" ], + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], "rewards": { "partyAchievements": [ "Guard Detail" diff --git a/data/fc/scenarios/104.json b/data/fc/scenarios/104.json index 0c60be065..31c1de5ae 100644 --- a/data/fc/scenarios/104.json +++ b/data/fc/scenarios/104.json @@ -5,6 +5,21 @@ "unlocks": [ "111" ], + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], + "rewards": { + "partyAchievements": [ + "Dimensional Equilibrium" + ], + "items": [ + "48-gh" + ] + }, "monsters": [ "harrower-infester", "lurker", diff --git a/data/fc/scenarios/105.json b/data/fc/scenarios/105.json index 93a74f60c..288eaea69 100644 --- a/data/fc/scenarios/105.json +++ b/data/fc/scenarios/105.json @@ -5,6 +5,18 @@ "unlocks": [ "111" ], + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], + "rewards": { + "itemDesigns": [ + "154" + ] + }, "monsters": [ "bandit-guard", "valrath-tracker" diff --git a/data/fc/scenarios/106.json b/data/fc/scenarios/106.json index 3c126c849..7da6b05f2 100644 --- a/data/fc/scenarios/106.json +++ b/data/fc/scenarios/106.json @@ -2,8 +2,12 @@ "index": "106", "name": "Intricate Work", "edition": "fc", - "unlocks": [ - "112" + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } ], "monsters": [ "aesther-scout" diff --git a/data/fc/scenarios/107.json b/data/fc/scenarios/107.json index c6c25d9fa..551fc6c49 100644 --- a/data/fc/scenarios/107.json +++ b/data/fc/scenarios/107.json @@ -2,8 +2,15 @@ "index": "107", "name": "Mechanical Genius", "edition": "fc", - "unlocks": [ - "112" + "rewards": { + "experience": 5 + }, + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } ], "rooms": [ { diff --git a/data/fc/scenarios/108.json b/data/fc/scenarios/108.json index 1bf71aa2e..88b754074 100644 --- a/data/fc/scenarios/108.json +++ b/data/fc/scenarios/108.json @@ -2,6 +2,13 @@ "index": "108", "name": "Prologue to the End", "edition": "fc", + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], "monsters": [ "city-archer", "city-guard", diff --git a/data/fc/scenarios/109.json b/data/fc/scenarios/109.json index c5a60b976..3fba03c16 100644 --- a/data/fc/scenarios/109.json +++ b/data/fc/scenarios/109.json @@ -5,6 +5,13 @@ "unlocks": [ "113" ], + "requirements": [ + { + "global": [ + "Knowledge is Power:2" + ] + } + ], "rewards": { "experience": 10, "items": [ @@ -17,6 +24,43 @@ "valrath-savage", "valrath-tracker" ], + "rules": [ + { + "round": "R == 1", + "start": true, + "spawns": [ + { + "monster": { + "name": "valrath-savage", + "type": "elite" + }, + "marker": "b" + } + ], + "note": "If party achievement Diamara's Aid or Angels of Death is complete, do not apply" + }, + { + "round": "R == 1", + "start": true, + "spawns": [ + { + "monster": { + "name": "city-guard", + "player2": "elite", + "player3": "elite", + "player4": "elite" + }, + "marker": "a" + } + ], + "note": "If party achievement Xangroth's Aid or Angels of Death is complete, do not apply" + }, + { + "round": "R == 10", + "start": false, + "note": "Check Scenario Goal" + } + ], "rooms": [ { "roomNumber": 1, @@ -80,14 +124,6 @@ "name": "city-guard", "player4": "elite" }, - { - "name": "city-guard", - "player4": "elite" - }, - { - "name": "valrath-savage", - "type": "elite" - }, { "name": "valrath-savage", "player2": "normal", diff --git a/data/fc/scenarios/110.json b/data/fc/scenarios/110.json index e350952f7..3de9cabf2 100644 --- a/data/fc/scenarios/110.json +++ b/data/fc/scenarios/110.json @@ -5,6 +5,19 @@ "unlocks": [ "114" ], + "rewards": { + "globalAchievements": [ + "A Peril Averted" + ], + "hints": { + "globalAchievements": [ + "(If this is the second \"A Peril Averted\" achievement gained, read section 118 on page 37)" + ] + }, + "items": [ + "163" + ] + }, "monsters": [ "earth-demon", "flame-demon", diff --git a/data/fc/sections/112.json b/data/fc/sections/112.json index 482dbb048..fef8b856d 100644 --- a/data/fc/sections/112.json +++ b/data/fc/sections/112.json @@ -13,6 +13,9 @@ "ref": "L1a", "initial": true, "marker": "f", + "treasures": [ + "G" + ], "monster": [ { "name": "aesther-scout", diff --git a/data/fc/sections/114-A.json b/data/fc/sections/114-A.json index 4b4a40e1c..c54341fbc 100644 --- a/data/fc/sections/114-A.json +++ b/data/fc/sections/114-A.json @@ -1,6 +1,6 @@ { "index": "114-A", - "name": "> 2+C inhabitants", + "name": "Intimidated ≤ 2+C inhabitants", "edition": "fc", "parent": "102", "conclusion": true, diff --git a/data/fc/sections/114-B.json b/data/fc/sections/114-B.json index 13c9039e3..69565f3aa 100644 --- a/data/fc/sections/114-B.json +++ b/data/fc/sections/114-B.json @@ -1,6 +1,6 @@ { "index": "114-B", - "name": "≤ 2+C inhabitants", + "name": "Intimidated > 2+C inhabitants", "edition": "fc", "parent": "102", "conclusion": true, diff --git a/data/fc/sections/116.json b/data/fc/sections/116.json new file mode 100644 index 000000000..e2d197158 --- /dev/null +++ b/data/fc/sections/116.json @@ -0,0 +1,12 @@ +{ + "index": "116", + "edition": "fc", + "parent": "106", + "conclusion": true, + "rewards": { + "gold": 175, + "hints": { + "gold": "This money must be immediately be spend on any %game.element.air%, %game.element.ice%, %game.element.fire%, %game.element.earth%, %game.element.light%, or %game.element.dark% enhancement" + } + } +} diff --git a/data/fc/sections/119.json b/data/fc/sections/119.json index 0bd258945..3a80d8faa 100644 --- a/data/fc/sections/119.json +++ b/data/fc/sections/119.json @@ -15,8 +15,8 @@ "initial": true, "marker": "h", "treasures": [ - null, - null + "G", + "G" ], "monster": [ { diff --git a/data/fc/sections/22.json b/data/fc/sections/22.json index c040edd71..09a3c1415 100644 --- a/data/fc/sections/22.json +++ b/data/fc/sections/22.json @@ -8,14 +8,6 @@ "living-spirit" ], "rooms": [ - { - "roomNumber": 1, - "ref": "F1a", - "initial": true, - "rooms": [ - 2 - ] - }, { "roomNumber": 2, "ref": "B3b", diff --git a/data/fc/sections/30.json b/data/fc/sections/30.json index de1d8e3db..083930057 100644 --- a/data/fc/sections/30.json +++ b/data/fc/sections/30.json @@ -16,7 +16,7 @@ ], "rooms": [ { - "inital": true, + "initial": true, "roomNumber": 2, "ref": "L2a", "monster": [ diff --git a/data/fc/sections/36.json b/data/fc/sections/36.json index 26facd790..be8fb9f85 100644 --- a/data/fc/sections/36.json +++ b/data/fc/sections/36.json @@ -9,8 +9,12 @@ ], "chooseItem": [ [ - "59-gh", - "112-gh", + "59-gh" + ], + [ + "112-gh" + ], + [ "125-gh" ], [ diff --git a/data/fc/sections/39.json b/data/fc/sections/39.json index f316f76b9..dd8fd3000 100644 --- a/data/fc/sections/39.json +++ b/data/fc/sections/39.json @@ -16,14 +16,6 @@ "ancient-artillery" ], "rooms": [ - { - "roomNumber": 1, - "ref": "F1a", - "initial": true, - "rooms": [ - 2 - ] - }, { "roomNumber": 2, "ref": "I1b", diff --git a/data/fc/sections/40.json b/data/fc/sections/40.json index 733b5bd18..a00c40ad4 100644 --- a/data/fc/sections/40.json +++ b/data/fc/sections/40.json @@ -15,7 +15,7 @@ "initial": true, "marker": "g", "treasures": [ - null + "G" ], "monster": [ { diff --git a/data/fc/sections/46.json b/data/fc/sections/46.json index 70c91a992..db5f85f14 100644 --- a/data/fc/sections/46.json +++ b/data/fc/sections/46.json @@ -16,14 +16,6 @@ "living-spirit" ], "rooms": [ - { - "roomNumber": 1, - "ref": "F1a", - "initial": true, - "rooms": [ - 2 - ] - }, { "roomNumber": 2, "ref": "B3b", diff --git a/data/fc/sections/52.json b/data/fc/sections/52.json index 3ccec8605..5fec4e89c 100644 --- a/data/fc/sections/52.json +++ b/data/fc/sections/52.json @@ -30,21 +30,7 @@ ], "rules": [ { - "round": "R % 8 == 2", - "spawns": [ - { - "monster": { - "name": "lurker", - "player2": "normal", - "player3": "normal", - "player4": "elite" - }, - "marker": "1" - } - ] - }, - { - "round": "R % 8 == 4", + "round": "R % 6 == 4", "spawns": [ { "monster": { @@ -58,7 +44,7 @@ ] }, { - "round": "R % 8 == 6", + "round": "R % 6 == 0", "spawns": [ { "monster": { @@ -72,7 +58,7 @@ ] }, { - "round": "R % 8 == 0", + "round": "R % 6 == 2", "spawns": [ { "monster": { @@ -114,11 +100,5 @@ } ] } - ], - "rooms": [ - { - "roomNumber": 1, - "initial": true - } ] -} \ No newline at end of file +} diff --git a/data/fc/sections/60.json b/data/fc/sections/60.json index 1f9ab8e14..36be22d07 100644 --- a/data/fc/sections/60.json +++ b/data/fc/sections/60.json @@ -16,7 +16,7 @@ ], "rooms": [ { - "inital": true, + "initial": true, "roomNumber": 3, "ref": "J2b", "monster": [ diff --git a/data/fc/sections/67.json b/data/fc/sections/67.json index bce269ebf..2c54ef11d 100644 --- a/data/fc/sections/67.json +++ b/data/fc/sections/67.json @@ -57,7 +57,6 @@ }, { "name": "night-demon", - "player3": "normal", "player4": "normal" } ] diff --git a/data/fc/sections/71.json b/data/fc/sections/71.json index 076884f56..a81a0ed82 100644 --- a/data/fc/sections/71.json +++ b/data/fc/sections/71.json @@ -17,14 +17,6 @@ "stone-golem" ], "rooms": [ - { - "roomNumber": 1, - "ref": "F1a", - "initial": true, - "rooms": [ - 2 - ] - }, { "roomNumber": 2, "ref": "B3b", diff --git a/data/fc/sections/79.json b/data/fc/sections/79.json new file mode 100644 index 000000000..ff45acc20 --- /dev/null +++ b/data/fc/sections/79.json @@ -0,0 +1,95 @@ +{ + "index": "79", + "name": "The Second Portal", + "edition": "fc", + "parent": "104", + "parentSections": [ + [ + "52" + ] + ], + "marker": "1", + "objectives": [ + { + "name": "Hail", + "escort": true, + "health": "6+2xL", + "marker": "a", + "tags": [ + "52" + ], + "actions": [ + { + "type": "move", + "value": 3, + "subActions": [ + { + "type": "custom", + "value": "%data.scenario.rules.fc.104.3%", + "small": true + } + ] + } + ] + } + ], + "rules": [ + { + "round": "true", + "always": true, + "disableRules": [ + { + "edition": "fc", + "scenario": "104", + "index": -1, + "section": true + } + ] + }, + { + "round": "R % 4 == 2", + "spawns": [ + { + "monster": { + "name": "spitting-drake", + "player2": "normal", + "player3": "normal", + "player4": "elite" + }, + "marker": "3" + } + ] + }, + { + "round": "R % 4 == 0", + "spawns": [ + { + "monster": { + "name": "harrower-infester", + "player2": "normal", + "player3": "elite", + "player4": "elite" + }, + "marker": "4" + } + ] + }, + { + "round": "true", + "always": true, + "once": true, + "figures": [ + { + "identifier": { + "type": "objective", + "edition": "escort", + "name": "Hail", + "marker": "a" + }, + "type": "transfer", + "value": "1" + } + ] + } + ] +} \ No newline at end of file diff --git a/data/fc/sections/8.json b/data/fc/sections/8.json index d25c8591a..5e6de9266 100644 --- a/data/fc/sections/8.json +++ b/data/fc/sections/8.json @@ -7,14 +7,17 @@ "monsters": [ "valrath-savage" ], - "rooms": [ + "rules": [ { - "roomNumber": 1, - "initial": true, - "monster": [ + "round": "true", + "once": true, + "always": true, + "spawns": [ { - "name": "valrath-savage", - "type": "elite" + "monster": { + "name": "valrath-savage", + "type": "elite" + } } ] } diff --git a/data/fc/sections/85.json b/data/fc/sections/85.json new file mode 100644 index 000000000..0b3323c71 --- /dev/null +++ b/data/fc/sections/85.json @@ -0,0 +1,81 @@ +{ + "index": "85", + "name": "The Third Portal", + "edition": "fc", + "parent": "104", + "parentSections": [ + [ + "79" + ] + ], + "marker": "1", + "objectives": [ + { + "name": "Hail", + "escort": true, + "health": "6+2xL", + "marker": "a", + "tags": [ + "52" + ], + "actions": [ + { + "type": "move", + "value": 3, + "subActions": [ + { + "type": "custom", + "value": "%data.scenario.rules.fc.104.4%", + "small": true + } + ] + } + ] + } + ], + "rules": [ + { + "round": "true", + "always": true, + "disableRules": [ + { + "edition": "fc", + "scenario": "104", + "index": -1, + "section": true + } + ] + }, + { + "round": "R % 2 == 0", + "spawns": [ + { + "monster": { + "name": "harrower-infester", + "player2": "normal", + "player3": "elite", + "player4": "elite" + }, + "marker": "4" + } + ] + }, + { + "round": "true", + "always": true, + "once": true, + "figures": [ + { + "identifier": { + "type": "objective", + "edition": "escort", + "name": "Hail", + "marker": "a" + }, + "type": "transfer", + "value": "1" + } + ] + } + ] +} \ No newline at end of file diff --git a/data/fc/sections/87.json b/data/fc/sections/87.json index eb7320757..70cb283c9 100644 --- a/data/fc/sections/87.json +++ b/data/fc/sections/87.json @@ -4,6 +4,21 @@ "edition": "fc", "parent": "106", "rules": [ + { + "round": "true", + "always": true, + "once": true, + "figures": [ + { + "identifier": { + "type": "character", + "name": ".*" + }, + "type": "damage", + "value": "3" + } + ] + }, { "round": "true", "always": true, diff --git a/data/fc/sections/91.json b/data/fc/sections/91.json index 9c5ac0652..582c4b1e9 100644 --- a/data/fc/sections/91.json +++ b/data/fc/sections/91.json @@ -4,6 +4,12 @@ "edition": "fc", "parent": "106", "rules": [ + { + "round": "true", + "start": false, + "always": true, + "note": "%data.scenario.rules.fc.106%" + }, { "round": "true", "always": true, diff --git a/data/fc/sections/93.json b/data/fc/sections/93.json index 8ca8f83ca..02b913ac5 100644 --- a/data/fc/sections/93.json +++ b/data/fc/sections/93.json @@ -76,16 +76,11 @@ { "name": "living-spirit", "player3": "normal", - "player4": "normal" - }, - { - "name": "living-spirit", - "player3": "normal" + "player4": "elite" }, { "name": "night-demon", - "player2": "normal", - "player4": "normal" + "type": "elite" } ], "objectives": [