From 389689ce9e86f783e560496cae434f8b30fee80f Mon Sep 17 00:00:00 2001 From: Eric Gallager Date: Tue, 30 Nov 2021 23:46:51 -0500 Subject: [PATCH] copy over changes from my wesnoth_mods repo ref: https://github.com/cooljeanius/wesnoth_mods/tree/master/campaigns/After_the_Storm --- .gitignore | 3 + episode1/scenarios/08_Fear.cfg | 36 +++--- episode1/scenarios/10_Tears.cfg | 13 ++- .../scenarios/11_Return_to_Wesmere_part_1.cfg | 24 ++-- episode2/scenarios/05_The_Eastern_Front.cfg | 108 ++++++++++++++++-- .../scenarios/08_And_then_there_was_Chaos.cfg | 26 +++-- episode2/scenarios/10_The_Betrayal.cfg | 2 +- .../03_Amidst_the_Ruins_of_Glamdrol.cfg | 42 ++++--- episode3/scenarios/04_01_Outpost_of_Hell.cfg | 22 ++-- episode3/scenarios/07A_Dark_Fire_part_1.cfg | 79 +++++++++++-- 10 files changed, 267 insertions(+), 88 deletions(-) diff --git a/.gitignore b/.gitignore index 0417bbb6..ae6c20a7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ _server.pbl # Maintenance mode toggle base-maint.cfg + +# Comes from applying patches +*.orig diff --git a/episode1/scenarios/08_Fear.cfg b/episode1/scenarios/08_Fear.cfg index c744e7b6..07ffd17e 100644 --- a/episode1/scenarios/08_Fear.cfg +++ b/episode1/scenarios/08_Fear.cfg @@ -43,7 +43,7 @@ team_name=player user_team_name= _ "team_name^Galas" - {GOLD 340 320 300} + {GOLD 380 340 300} shroud,fog=yes,yes @@ -149,6 +149,11 @@ name=start battle first_time_only=yes + [modify_side] + side=1 + {INCOME 3 2 1} + [/modify_side] + [store_starting_location] side=2 variable=sl @@ -157,7 +162,7 @@ [modify_side] side=2 controller=ai - {GOLD 150 170 185} + {GOLD 135 160 185} {INCOME 0 1 2} hidden=no recruit=Chaos Invader,Chaos Raider,Chaos Bowman @@ -177,19 +182,19 @@ [/modifications] [/unit] - {GENERIC_UNIT 2 (Chaos Crossbowman) 11 14} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {FACING sw} + {GENERIC_UNIT 2 {ON_DIFFICULTY (Chaos Bowman) (Chaos Crossbowman) (Chaos Crossbowman)} 11 14} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {FACING sw} #ifndef EASY {GENERIC_UNIT 2 (Chaos Crossbowman) 14 11} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {FACING se} #endif - {GENERIC_UNIT 2 (Doom Guard) 13 13} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {FACING se} + {GENERIC_UNIT 2 {ON_DIFFICULTY (Chaos Invader) (Doom Guard) (Doom Guard)} 13 13} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {FACING se} # not guardians - {GENERIC_UNIT 2 (Chaos Cavalier) 10 12} {NO_UPKEEP_NO_OVERLAY} {FACING se} + {GENERIC_UNIT 2 {ON_DIFFICULTY (Chaos Raider) (Chaos Cavalier) (Chaos Cavalier)} 10 12} {NO_UPKEEP_NO_OVERLAY} {FACING se} #ifndef EASY {GENERIC_UNIT 2 (Chaos Cavalier) 11 11} {NO_UPKEEP_NO_OVERLAY} {FACING se} #endif - {CAPTURE_VILLAGES 2 $sl.x $sl.y 8} + {CAPTURE_VILLAGES 2 $sl.x $sl.y {ON_DIFFICULTY 6 7 8}} [store_starting_location] side=3 @@ -199,7 +204,7 @@ [modify_side] side=3 controller=ai - {GOLD 190 210 220} + {GOLD 180 200 220} {INCOME 0 2 4} hidden=no recruit=Shaxthal Runner Drone,Shaxthal Drone,Shaxthal Razorbird @@ -219,20 +224,19 @@ # This is needed so the AI doesn't send the drone to # capture the village this turn. - [capture_village] - side=3 - x,y=34,24 - [/capture_village] + # I was considering varying this, but on second thought just keep it constant; + # we don't want the drone fleeing on any difficulty: + {CAPTURE_VILLAGES 3 34 24 4} - {GENERIC_UNIT 3 (Shaxthal Sentry Drone) 27 9} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING se} - {GENERIC_UNIT 3 (Shaxthal Sentry Drone) 38 8} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING sw} - {GENERIC_UNIT 3 (Shaxthal Sentry Drone) 30 2} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING se} + {GENERIC_UNIT 3 {ON_DIFFICULTY (Shaxthal Drone) (Shaxthal Sentry Drone) (Shaxthal Sentry Drone)} 27 9} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING se} + {GENERIC_UNIT 3 {ON_DIFFICULTY (Shaxthal Drone) (Shaxthal Sentry Drone) (Shaxthal Sentry Drone)} 38 8} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING sw} + {GENERIC_UNIT 3 {ON_DIFFICULTY (Shaxthal Drone) (Shaxthal Sentry Drone) (Shaxthal Sentry Drone)} 30 2} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING se} #ifndef EASY {GENERIC_UNIT 3 (Shaxthal Sentry Drone) 33 5} {NO_UPKEEP_NO_OVERLAY} {GUARDIAN} {VARIATION surface} {FACING se} #endif # not guardians - {GENERIC_UNIT 3 (Shaxthal Protector Drone) 29 7} {NO_UPKEEP_NO_OVERLAY} {FACING sw} + {GENERIC_UNIT 3 {ON_DIFFICULTY (Shaxthal Runner Drone) (Shaxthal Protector Drone) (Shaxthal Protector Drone)} 29 7} {NO_UPKEEP_NO_OVERLAY} {FACING sw} #ifndef EASY {GENERIC_UNIT 3 (Shaxthal Protector Drone) 31 6} {NO_UPKEEP_NO_OVERLAY} {FACING sw} #endif @@ -379,7 +383,7 @@ [message] speaker=Mal Keshar - message= _ "... Elynia?" + message= _ "...Elynia?" [/message] [delay] diff --git a/episode1/scenarios/10_Tears.cfg b/episode1/scenarios/10_Tears.cfg index a8dee270..0d8757bd 100644 --- a/episode1/scenarios/10_Tears.cfg +++ b/episode1/scenarios/10_Tears.cfg @@ -46,7 +46,7 @@ [side] side=2 recruit=Chaos Invoker,Chaos Invader,Chaos Headhunter,Chaos Hound - {GOLD 230 250 270} + {GOLD 210 240 270} team_name=evil user_team_name= _ "team_name^Enemies" {CHAOS_FLAG} @@ -67,7 +67,7 @@ [/goal] {AI_SIMPLE_ALWAYS_ASPECT aggression 1.00} - {AI_SIMPLE_ALWAYS_ASPECT caution 0.05} + {AI_SIMPLE_ALWAYS_ASPECT caution {ON_DIFFICULTY 0.09 0.07 0.05}} [/ai] type=Chaos Lorekeeper @@ -92,7 +92,7 @@ [side] side=3 recruit=Chaos Raider,Chaos Bowman,Chaos Invader - {GOLD 220 230 240} + {GOLD 200 220 240} team_name=evil user_team_name= _ "team_name^Enemies" {CHAOS_FLAG} @@ -113,7 +113,7 @@ [/goal] {AI_SIMPLE_ALWAYS_ASPECT aggression 1.00} - {AI_SIMPLE_ALWAYS_ASPECT caution 0.05} + {AI_SIMPLE_ALWAYS_ASPECT caution {ON_DIFFICULTY 0.09 0.07 0.05}} [/ai] type=Chaos Razerman @@ -184,7 +184,8 @@ [modify_side] side=1 - gold="$("+{DIFF 240 220 200}+" + $main_side1_stats.gold)" + gold="$("+{DIFF 280 240 200}+" + $main_side1_stats.gold)" + {INCOME 3 2 1} [/modify_side] {CLEAR_VARIABLE main_side1_stats,original_recruit_list_strlen} @@ -227,7 +228,7 @@ # so village ownership has an effect at all. # - {STARTING_VILLAGES 1 5} + {STARTING_VILLAGES 1 {ON_DIFFICULTY 7 6 5}} [event] name=start diff --git a/episode1/scenarios/11_Return_to_Wesmere_part_1.cfg b/episode1/scenarios/11_Return_to_Wesmere_part_1.cfg index d2c76002..95762699 100644 --- a/episode1/scenarios/11_Return_to_Wesmere_part_1.cfg +++ b/episode1/scenarios/11_Return_to_Wesmere_part_1.cfg @@ -4,7 +4,7 @@ id=11_Return_to_Wesmere_part_1 name= _ "Return to Wesmere — Part 1" {MAP 11_Return_to_Wesmere_part_1.map} - {TURNS 34 32 30} + {TURNS 36 33 30} next_scenario="11_Return_to_Wesmere_part_1_cutscene" {B_DEATHS} @@ -57,8 +57,8 @@ team_name=player user_team_name= _ "team_name^Elynia" - {GOLD 360 350 340} - {INCOME 5 4 3} + {GOLD 398 369 340} + {INCOME 9 6 3} # wmllint: recognize Elynia {CHARACTER_STATS_ELYNIA_AS_LEADER} @@ -70,7 +70,7 @@ [criteria] id=Elynia [/criteria] - value=10.0 + value={ON_DIFFICULTY 6.0 8.0 10.0} [/goal] [goal] [criteria] @@ -83,7 +83,7 @@ [side] side=2 recruit=Chaos Invoker,Chaos Invader,Chaos Raider,Chaos Cavalier - {GOLD 170 195 210} + {GOLD 150 170 210} {INCOME 0 2 4} team_name=evil user_team_name= _ "team_name^Enemies" @@ -139,7 +139,7 @@ [side] side=4 recruit=Demon,Demon Zephyr,Chaos Invoker,Chaos Invader,Shaxthal Rayblade - {GOLD 240 240 260} + {GOLD 200 230 260} team_name=evil user_team_name= _ "team_name^Wesmere Defense" {CHAOS_FLAG} @@ -186,7 +186,7 @@ [ai] {AI_SIMPLE_ALWAYS_ASPECT grouping no} {AI_SIMPLE_ALWAYS_ASPECT aggression 1.00} - {AI_SIMPLE_ALWAYS_ASPECT caution 0.01} + {AI_SIMPLE_ALWAYS_ASPECT caution {ON_DIFFICULTY 0.09 0.05 0.01}} {RTW1_ENEMY_TARGETS} @@ -196,8 +196,8 @@ x=21 y=3 [/criteria] - value=5.0 - protect_radius=10 + value={ON_DIFFICULTY 3.0 4.0 5.0} + protect_radius={ON_DIFFICULTY 8 9 10} [/goal] [/ai] @@ -247,13 +247,15 @@ {STARTING_VILLAGES_ALL 4} - {STARTING_VILLAGES 1 4} + {STARTING_VILLAGES 1 {ON_DIFFICULTY 6 5 4}} # you + # no point in varying these next 2 since otherwise they'd just go to side 4, which is also + # an enemy side: {STARTING_VILLAGES 2 4} {STARTING_VILLAGES 3 4} {LIMIT_CONTEMPORANEOUS_RECRUITS 2 "Chaos Cavalier" ({DIFF 2 3 4})} {LIMIT_CONTEMPORANEOUS_RECRUITS 3 "Chaos Crossbowman" ({DIFF 2 3 4})} - {LIMIT_CONTEMPORANEOUS_RECRUITS 4 "Demon Zephyr,Shaxthal Rayblade" ({DIFF 3 4 4})} + {LIMIT_CONTEMPORANEOUS_RECRUITS 4 "Demon Zephyr,Shaxthal Rayblade" ({DIFF 2 3 4})} [event] name=prestart diff --git a/episode2/scenarios/05_The_Eastern_Front.cfg b/episode2/scenarios/05_The_Eastern_Front.cfg index ba40a68d..39e35c17 100644 --- a/episode2/scenarios/05_The_Eastern_Front.cfg +++ b/episode2/scenarios/05_The_Eastern_Front.cfg @@ -23,7 +23,9 @@ team_name=good user_team_name= _ "team_name^Elynia" - {GOLD 250 250 240} + {GOLD 298 269 240} + {INCOME 9 5 1} + village_gold={ON_DIFFICULTY 3 2 1} # wmllint: recognize Elynia {CHARACTER_STATS_ELYNIA} @@ -31,6 +33,7 @@ # wmllint: validate-on [side] + # Southeast side=2 team_name=evil user_team_name= _ "team_name^Elves" @@ -41,7 +44,8 @@ {ai/aliases/stable_singleplayer.cfg} [ai] - {AI_SIMPLE_ALWAYS_ASPECT recruitment_pattern "scout,archer,healer,fighter,mixed fighter,scout,archer"} + {AI_SIMPLE_ALWAYS_ASPECT recruitment_more "Shaxthal Rayblade"} + {AI_SIMPLE_ALWAYS_ASPECT recruitment_pattern "fighter,scout,archer,healer,fighter,mixed fighter,scout,archer"} [/ai] canrecruit=yes @@ -53,16 +57,22 @@ {TRAIT_DEXTROUS} {TRAIT_RESILIENT} [/modifications] +#ifdef EASY + [status] + slowed=yes + [/status] +#endif [/side] [side] + # Northeast side=3 team_name=evil user_team_name= _ "team_name^Elves" {CHAOS_FLAG} recruit=Elvish Archer,Elvish Fighter,Elvish Scout,Elvish Shaman - {GOLD 170 180 190} + {GOLD 130 160 190} {ai/aliases/stable_singleplayer.cfg} [ai] @@ -83,6 +93,7 @@ [/side] [side] + # Northwest side=4 team_name=evil user_team_name= _ "team_name^Elves" @@ -102,6 +113,7 @@ id=Unidë name= _ "Unidë" facing=se + moves={ON_DIFFICULTY 0 1 2} # (this will only apply on the first turn, but that's intentional) [modifications] {TRAIT_RESILIENT} {TRAIT_QUICK} @@ -142,10 +154,10 @@ {UNDEAD_RECRUITMENT:ZYNARA:WILD_GHOSTS_SIDE 6} - {STARTING_VILLAGES 1 5} - {STARTING_VILLAGES 2 7} - {STARTING_VILLAGES 3 5} - {STARTING_VILLAGES 4 8} + {STARTING_VILLAGES 1 {ON_DIFFICULTY 7 6 5}} + {STARTING_VILLAGES 2 {ON_DIFFICULTY 5 6 7}} + {STARTING_VILLAGES 3 {ON_DIFFICULTY 4 5 6}} + {STARTING_VILLAGES 4 {ON_DIFFICULTY 6 7 8}} [event] name=prestart @@ -195,11 +207,38 @@ message= _ "There are so many different flowers in this field! It’s beautiful!" [/message] + [modify_unit] + [filter] + id=Anya + [/filter] + [object] + id=Anyas_floral_fortification + duration=forever + silent=yes + [effect] + apply_to=hitpoints + increase={ON_DIFFICULTY 3 2 1} + increase_total={ON_DIFFICULTY 3 2 1} + heal_full=yes + [/effect] + [/object] + [/modify_unit] + [message] speaker=Elynia message= _ "Indeed it is." [/message] + [message] + speaker=Anya + message= _ "The windmills, too, make the scene quite picturesque... it's a shame that these windmills don't seem to function as villages, like some others do..." + [/message] + + [message] + speaker=Elynia + message= _ "The villages where the windmillkeepers live are close nearby to the windmills, so it's no great loss." + [/message] + [move_unit_fake] side=1 type=$durvan_store.type @@ -277,8 +316,15 @@ message= _ "May the Lords of Light protect us..." [/message] + [modify_unit] + [filter] + id=Unidë + [/filter] + moves={ON_DIFFICULTY 1 2 3} # (again, only applies 1 turn, which is intentional) + [/modify_unit] + [scroll_to] - x,y=8,4 + x,y=8,4 # Unidë's keep [/scroll_to] [message] @@ -288,7 +334,7 @@ [/message] [scroll_to] - x,y=42,35 + x,y=42,35 # Telan's keep [/scroll_to] [message] @@ -298,7 +344,7 @@ [/message] [scroll_to] - x,y=44,12 + x,y=44,12 # Ethanin-Adrael's keep [/scroll_to] [message] @@ -320,6 +366,16 @@ speaker=Elynia message= _ "I fear for the fate of the elves who sent that call for help to the Council..." [/message] + + [event] + name=side 4 turn 2 refresh + [modify_unit] + [filter] + id=Unidë + [/filter] + moves={ON_DIFFICULTY 1 2 3} # (again, only applies 1 turn, which is intentional) + [/modify_unit] + [/event] [/event] [event] @@ -567,6 +623,38 @@ [/message] [/event] + # Justifications for these units: + # 1. Elves control 3 of the 4 corners of the map, leading players to wonder what's in the 4th one. They deserve rewards for investigating. + # 2. Players who like to scout will be left at a disadvantage since their units will be busy scouting instead of fighting; these units compensate for that. + # 3. Elynia has dialogue above saying that they're "close to Aragwaithi territory"; these units show that. + [event] + name=moveto + [filter] + side=1 + x,y=4,34 + [/filter] + # TODO: dialogue + {GENERIC_UNIT 1 (Aragwaith Archer) $x1 $y1} + [/event] + [event] + name=moveto + [filter] + side=1 + x,y=9,39 + [/filter] + # TODO: dialogue + {GENERIC_UNIT 1 (Aragwaith Eagle Rider) $x1 $y1} + [/event] + [event] + name=moveto + [filter] + side=1 + x,y=12,40 + [/filter] + # TODO: dialogue + {GENERIC_UNIT 1 (Aragwaith Scout) $x1 $y1} + [/event] + [event] name=enemies defeated {ENDLEVEL_VICTORY yes} diff --git a/episode2/scenarios/08_And_then_there_was_Chaos.cfg b/episode2/scenarios/08_And_then_there_was_Chaos.cfg index 11319e26..ee041b97 100644 --- a/episode2/scenarios/08_And_then_there_was_Chaos.cfg +++ b/episode2/scenarios/08_And_then_there_was_Chaos.cfg @@ -42,7 +42,9 @@ team_name=good user_team_name= _ "team_name^Elynia" - {GOLD 200 190 180} + {GOLD 218 199 180} + {INCOME 9 6 3} + village_gold={ON_DIFFICULTY 3 2 1} # wmllint: recognize Elynia {CHARACTER_STATS_ELYNIA} @@ -55,12 +57,12 @@ {CHAOS_FLAG} recruit=Elvish Acolyte,Elvish Fighter,Elvish Archer,Elvish Scout - {GOLD 140 150 160} + {GOLD 100 130 160} {ai/aliases/stable_singleplayer.cfg} [ai] - {AI_SIMPLE_ALWAYS_ASPECT aggression 0.80} - {AI_SIMPLE_ALWAYS_ASPECT caution 0.15} + {AI_SIMPLE_ALWAYS_ASPECT aggression {ON_DIFFICULTY 0.78 0.79 0.80}} + {AI_SIMPLE_ALWAYS_ASPECT caution {ON_DIFFICULTY 0.17 0.16 0.15}} {AI_SIMPLE_ALWAYS_ASPECT passive_leader yes} {AI_SIMPLE_ALWAYS_ASPECT recruitment_pattern "archer,scout,fighter,fighter,mixed fighter,archer,mixed fighter,scout,fighter"} [/ai] @@ -84,7 +86,7 @@ {CHAOS_FLAG} recruit=Demon,Imp,Chaos Headhunter,Chaos Invoker - {GOLD 150 175 190} + {GOLD 130 160 190} {ai/aliases/stable_singleplayer.cfg} [ai] @@ -110,12 +112,12 @@ {CHAOS_FLAG} recruit=Shaxthal Runner Drone,Chaos Hound,Chaos Headhunter,Chaos Invoker - {GOLD 150 160 170} + {GOLD 110 140 170} {ai/aliases/stable_singleplayer.cfg} [ai] - {AI_SIMPLE_ALWAYS_ASPECT aggression 0.90} - {AI_SIMPLE_ALWAYS_ASPECT caution 0.10} + {AI_SIMPLE_ALWAYS_ASPECT aggression {ON_DIFFICULTY 0.88 0.89 0.90}} + {AI_SIMPLE_ALWAYS_ASPECT caution {ON_DIFFICULTY 0.12 0.11 0.10}} {AI_SIMPLE_ALWAYS_ASPECT recruitment_pattern "fighter,scout,fighter,mixed fighter,archer,mixed fighter,mixed fighter"} [/ai] @@ -214,10 +216,12 @@ {CHAOS_FLAG} recruit=Demon,Chaos Invader,Chaos Bowman,Chaos Raider - {GOLD 160 170 180} + {GOLD 120 150 180} {ai/aliases/stable_singleplayer.cfg} [ai] + {AI_SIMPLE_ALWAYS_ASPECT recruitment_diversity {ON_DIFFICULTY 4.4 3.3 2.2}} + {AI_SIMPLE_ALWAYS_ASPECT recruitment_randomness {ON_DIFFICULTY 99 88 77}} {AI_SIMPLE_ALWAYS_ASPECT recruitment_pattern "scout,scout,archer,mixed fighter,archer,fighter,scout,fighter,scout"} [/ai] @@ -254,7 +258,9 @@ {STARTING_VILLAGES_ALL 2} - {STARTING_VILLAGES 1 7} + {STARTING_VILLAGES 1 {ON_DIFFICULTY 9 8 7}} # you + # No point in varying these next 3, because otherwise they'd just go to side 2, + # which is also an enemy side: {STARTING_VILLAGES 3 4} {STARTING_VILLAGES 4 4} {STARTING_VILLAGES 5 7} diff --git a/episode2/scenarios/10_The_Betrayal.cfg b/episode2/scenarios/10_The_Betrayal.cfg index 69f7e6ae..3bb6575d 100644 --- a/episode2/scenarios/10_The_Betrayal.cfg +++ b/episode2/scenarios/10_The_Betrayal.cfg @@ -1129,7 +1129,7 @@ {TB_CAPTURE_STARTING_VILLAGES 5 12} [modify_turns] - {QUANTITY value 62 60 58} + {QUANTITY value 70 69 68} [/modify_turns] [redraw][/redraw] diff --git a/episode3/scenarios/03_Amidst_the_Ruins_of_Glamdrol.cfg b/episode3/scenarios/03_Amidst_the_Ruins_of_Glamdrol.cfg index d03f1111..9d0a95bc 100644 --- a/episode3/scenarios/03_Amidst_the_Ruins_of_Glamdrol.cfg +++ b/episode3/scenarios/03_Amidst_the_Ruins_of_Glamdrol.cfg @@ -4,7 +4,7 @@ id=03_Amidst_the_Ruins_of_Glamdrol name= _ "Amidst the Ruins of Glamdrol" {MAP 03_Amidst_the_Ruins_of_Glamdrol.map} - {TURNS 26 24 22} + {TURNS 28 25 22} next_scenario=04_01_Outpost_of_Hell {G_DEATHS} @@ -26,7 +26,8 @@ team_name=good user_team_name= _ "team_name^Elynia" - {GOLD 155 145 140} + {GOLD 195 165 140} + {INCOME 3 2 1} # wmllint: recognize Elynia {CHARACTER_STATS_ELYNIA} @@ -41,7 +42,8 @@ user_team_name= _ "team_name^General Bardyl" {ALLIANCE_FLAG} - {GOLD 210 200 190} + {GOLD 290 240 190} + {INCOME 3 2 1} recruit=Aragwaith Spearman,Aragwaith Archer,Aragwaith Scout,Orcish Grunt,Orcish Archer,Wolf Rider,Orcish Assassin # wmllint: recognize General Bardyl @@ -49,14 +51,14 @@ [unit] x,y=18,13 - experience=97 + experience={ON_DIFFICULTY 99 98 97} # wmllint: recognize Kyara {CHARACTER_STATS_KYARA} [/unit] [unit] x,y=19,13 - experience=142 + experience={ON_DIFFICULTY 144 143 142} # wmllint: recognize Horo {CHARACTER_STATS_HORO} [/unit] @@ -71,6 +73,9 @@ [modifications] {TRAIT_LOYAL} {TRAIT_RESILIENT} +#ifdef EASY + {TRAIT_HEALTHY} +#endif [/modifications] [/unit] @@ -84,6 +89,9 @@ [modifications] {TRAIT_LOYAL} {TRAIT_INTELLIGENT} +#ifdef EASY + {TRAIT_STRONG} +#endif [/modifications] [/unit] @@ -131,7 +139,7 @@ user_team_name= _ "team_name^Nar-hamoth" {CHAOS_FLAG} - {GOLD 180 190 200} + {GOLD 160 180 200} recruit=Demon,Demon Zephyr,Shaxthal Rayblade,Shaxthal Protector Drone,Chaos Invader,Chaos Headhunter,Chaos Invoker {ai/aliases/stable_singleplayer.cfg} @@ -197,7 +205,7 @@ name= _ "Cervan" x,y=6,42 upkeep=loyal - #ai_special=guardian + ai_special=guardian facing=ne [modifications] {TRAIT_INTELLIGENT} @@ -210,7 +218,7 @@ type=Chaos Marksman x,y=16,35 upkeep=loyal - #ai_special=guardian + ai_special=guardian facing=ne [modifications] {TRAIT_RESILIENT} @@ -222,7 +230,7 @@ type=Chaos Marksman x,y=14,34 upkeep=loyal - #ai_special=guardian + ai_special=guardian facing=ne [modifications] {TRAIT_STRONG} @@ -302,7 +310,7 @@ user_team_name= _ "team_name^Enemies" {CHAOS_FLAG} - {GOLD 175 180 185} + {GOLD 155 170 185} recruit=Chaos Bowman,Chaos Raider,Chaos Invader,Shaxthal Runner Drone {ai/aliases/stable_singleplayer.cfg} @@ -439,13 +447,13 @@ #endif [/side] - {STARTING_VILLAGES 1 6} - {STARTING_VILLAGES 2 6} - {STARTING_VILLAGES 3 8} - {STARTING_VILLAGES 4 6} + {STARTING_VILLAGES 1 {ON_DIFFICULTY 8 7 6}} + {STARTING_VILLAGES 2 {ON_DIFFICULTY 8 7 6}} + {STARTING_VILLAGES 3 {ON_DIFFICULTY 6 7 8}} + {STARTING_VILLAGES 4 {ON_DIFFICULTY 4 5 6}} {LIMIT_CONTEMPORANEOUS_RECRUITS 3 ("Demon Zephyr") 1 } - {LIMIT_CONTEMPORANEOUS_RECRUITS 3 ("Shaxthal Rayblade") {DIFF 1 2 2} } + {LIMIT_CONTEMPORANEOUS_RECRUITS 3 ("Shaxthal Rayblade") {DIFF 1 2 3} } {LIMIT_CONTEMPORANEOUS_RECRUITS 3 ("Shaxthal Protector Drone") 1 } [event] @@ -494,7 +502,7 @@ [/set_variables] [repeat] - times={DIFF 3 3 2} + times={DIFF 4 3 2} [do] [apply_amlas] id="Kyara" @@ -507,7 +515,7 @@ [/repeat] [repeat] - times={DIFF 2 2 1} + times={DIFF 3 2 1} [do] [apply_amlas] id="Horo" diff --git a/episode3/scenarios/04_01_Outpost_of_Hell.cfg b/episode3/scenarios/04_01_Outpost_of_Hell.cfg index e29eeec9..2ae8252c 100644 --- a/episode3/scenarios/04_01_Outpost_of_Hell.cfg +++ b/episode3/scenarios/04_01_Outpost_of_Hell.cfg @@ -59,7 +59,8 @@ team_name=good user_team_name= _ "team_name^Elynia" - {GOLD 170 160 150} + {GOLD 190 170 150} + {INCOME 3 2 1} # wmllint: recognize Elynia {CHARACTER_STATS_ELYNIA} @@ -74,7 +75,8 @@ user_team_name= _ "team_name^General Bardyl" {ALLIANCE_FLAG} - {GOLD 170 160 150} + {GOLD 190 170 150} + {INCOME 3 2 1} # wmllint: recognize General Bardyl {CHARACTER_STATS_GENERAL_BARDYL} @@ -182,7 +184,7 @@ [/modifications] [/side] - {LIMIT_RECRUITS 6 (Shaxthal Rayblade) ({DIFF 1 2 2})} + {LIMIT_RECRUITS 6 (Shaxthal Rayblade) ({DIFF 1 2 3})} [side] side=7 @@ -210,7 +212,7 @@ [/modifications] [/side] - {LIMIT_RECRUITS 7 (Ixthala Fire Dancer) ({DIFF 1 2 2})} + {LIMIT_RECRUITS 7 (Ixthala Fire Dancer) ({DIFF 1 2 3})} [side] side=8 @@ -218,7 +220,7 @@ user_team_name= _ "team_name^Aran-Balgur" {CHAOS_FLAG} - {GOLD 180 190 200} + {GOLD 160 180 200} recruit=Chaos Hound,Valdemon Basher,Blood Imp,Chaos Bowman,Shaxthal Runner Drone {ai/aliases/stable_singleplayer.cfg} @@ -237,7 +239,7 @@ [/modifications] [/side] - {LIMIT_RECRUITS 8 (Valdemon Basher) ({DIFF 1 2 2})} + {LIMIT_RECRUITS 8 (Valdemon Basher) ({DIFF 1 2 3})} [side] side=9 @@ -245,8 +247,8 @@ user_team_name= _ "team_name^Aran-Balgur" {CHAOS_FLAG} - {GOLD 150 160 170} - {INCOME 6 8 10} + {GOLD 140 155 170} + {INCOME 4 7 10} recruit=Imp,Blood Imp,Valdemon Basher,Serpent Messenger,Demon Zephyr,Shaxthal Runner Drone,Shaxthal Protector Drone,Chaos Crossbowman,Chaos Bowman,Chaos Raider {ai/aliases/stable_singleplayer.cfg} @@ -356,7 +358,7 @@ [/side] # NOTE: yes, this limits these recruits as a set, not individually. - {LIMIT_RECRUITS 9 (Valdemon Basher,Serpent Messenger,Demon Zephyr,Shaxthal Protector Drone) ({DIFF 3 3 4})} + {LIMIT_RECRUITS 9 (Valdemon Basher,Serpent Messenger,Demon Zephyr,Shaxthal Protector Drone) ({DIFF 2 3 4})} # Let side 9 recruit only every even turn. @@ -2100,7 +2102,7 @@ In any case, you are not so stupid as to attempt such a pointless move now.")} {VARIABLE_RANDOM shapeshifter_flag 1..9001} # Easier difficulties have smaller chances of getting # shapeshifters, probably. - {VARIABLE_MOD shapeshifter_flag ({DIFF 5 3 2})} + {VARIABLE_MOD shapeshifter_flag ({DIFF 6 4 2})} # Don't allow more than a certain amount of shapeshifters # to exist on map at the same time. diff --git a/episode3/scenarios/07A_Dark_Fire_part_1.cfg b/episode3/scenarios/07A_Dark_Fire_part_1.cfg index 5367447f..427eaa37 100644 --- a/episode3/scenarios/07A_Dark_Fire_part_1.cfg +++ b/episode3/scenarios/07A_Dark_Fire_part_1.cfg @@ -501,7 +501,11 @@ [event] name=setup floor 1 - #first_time_only=no +#ifdef __DEBUG__ +#ifdef DEBUG_MODE + first_time_only=no +#endif +#endif # Dummy access guards; not actually playing since their # side isn't AI-controlled. @@ -518,8 +522,10 @@ {NAMED_LOYAL_UNIT 4 "Demon Spelldancer" 22 2 Litharen ( _ "Litharen")} {FACING sw} {GUARDIAN} - #{FINALE_A_GUARDIAN 4 (Demon Warrior) 25 8} {FACING se} - #{FINALE_A_GUARDIAN 4 (Demon Zephyr) 22 2} {FACING sw} +#ifdef NIGHTMARE + {FINALE_A_GUARDIAN 4 (Demon Warrior) 25 8} {FACING se} + {FINALE_A_GUARDIAN 4 (Demon Zephyr) 22 2} {FACING sw} +#endif [store_starting_location] side=4 @@ -534,8 +540,13 @@ name= _ "Romeldan" facing=s [modifications] +#ifdef EASY + {TRAIT_DIM} + {TRAIT_AGED} +#else {TRAIT_STRONG} {TRAIT_QUICK} +#endif [/modifications] [/unit] @@ -552,8 +563,13 @@ name= _ "Captain Verathorn" facing=sw [modifications] +#ifdef EASY + {TRAIT_WEAK} + {TRAIT_SLOW} +#else {TRAIT_RESILIENT} {TRAIT_INTELLIGENT} +#endif [/modifications] [/unit] @@ -562,10 +578,19 @@ x,y=20,10 facing=sw type=Chaos Hound +#ifdef EASY + upkeep=full +#else upkeep=loyal +#endif [modifications] +#ifdef EASY + {TRAIT_WEAK} + {TRAIT_FERAL_MUSTHAVE} +#else {TRAIT_QUICK} {TRAIT_RESILIENT} +#endif [/modifications] [/unit] @@ -580,7 +605,11 @@ upkeep=loyal [modifications] {TRAIT_SLOW} +#ifdef EASY + {TRAIT_WEAK} +#else {TRAIT_RESILIENT} +#endif [/modifications] [/unit] @@ -594,8 +623,13 @@ gender=male upkeep=loyal [modifications] +#ifdef EASY + {TRAIT_SLOW} + {TRAIT_DIM} +#else {TRAIT_STRONG} {TRAIT_DEXTROUS} +#endif [/modifications] [/unit] @@ -609,8 +643,13 @@ gender=male upkeep=loyal [modifications] +#ifdef EASY + {TRAIT_WEAK} + {TRAIT_DIM} +#else {TRAIT_RESILIENT} {TRAIT_QUICK} +#endif [/modifications] [/unit] @@ -624,8 +663,13 @@ gender=male upkeep=loyal [modifications] +#ifdef EASY + {TRAIT_SLOW} + {TRAIT_AGED} +#else {TRAIT_STRONG} {TRAIT_INTELLIGENT} +#endif [/modifications] [/unit] @@ -834,10 +878,20 @@ #define FINALE_A_ACTIVATE_SIDE _SIDE [modify_side] side={_SIDE} - {GOLD 80 90 100} - {INCOME 2 3 4} + {GOLD 60 80 100} + {INCOME 1 3 5} hidden=no [/modify_side] +#ifdef EASY + [modify_unit] + [filter] + side={_SIDE} + [/filter] + [status] + slowed=yes + [/status] + [/modify_unit] +#endif #enddef #define FINALE_A_RECRUITMENT_MECHANICS_NOTE @@ -1136,6 +1190,17 @@ {FINALE_A_ACTIVATE_SIDE 4} +#ifdef EASY + [modify_unit] + [filter] + side=6 + [/filter] + [status] + slowed=yes + [/status] + [/modify_unit] +#endif + {DISABLE_UNLIMITED_PLAYER_MOVES} {ALLOW_END_TURN} @@ -1159,14 +1224,14 @@ {UNLOCK_VIEW} # - # Make player hits always land for the first two turns. + # Make player hits always land for the first {4 3 2} turns. # {VARIABLE finale_a_player_cth yes} [event] delayed_variable_substitution=no - name="turn $($turn_number + 2)" + name="turn $($turn_number + {ON_DIFFICULTY 4 3 2})" {VARIABLE finale_a_player_cth no} [/event]