diff --git a/data/campaigns/Descent_Into_Darkness/maps/03_A_Haunting_in_Winter.map b/data/campaigns/Descent_Into_Darkness/maps/03_A_Haunting_in_Winter.map index cfc722e46988..01a339f50fe6 100644 --- a/data/campaigns/Descent_Into_Darkness/maps/03_A_Haunting_in_Winter.map +++ b/data/campaigns/Descent_Into_Darkness/maps/03_A_Haunting_in_Winter.map @@ -1,22 +1,22 @@ -Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Ww, Xu, Ww, Xu, Uu^Vud, Xu, Ww, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Ii, Xu, Wog, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Vud, Xu, Xu, Xu -Xu, Xu, Uu^Vud, Ww, Uu, Uu, Uu, Uu, Uu, Ww, Uu, Uu^Vud, Xu, Xu, Xu, Uh, Ss, Uu^Ii, Ss, Ss, Ss, Uu^Uf, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Xu, Xu -Xu, Xu, Xu, Uu, Uu^Vud, Uu, Uu, Uu, Xu, Uu, Uu, Uu, Xu, Xu, Uu^Ii, Ss, Ss, Ss, Ss, Ss, Ss, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Uu, Uh, Xu, Xu -Xu, Xu, Xu, Xu, Xu, Uu, Uu, Xu, Xu, Uh, Uu^Vud, Xu, Xu, Uu^Ii, Uu, Ss, Ss, Ss, Ss, Ss, Ss, Uu, Uu, Uh, Uh, Xu, Uu^Uf, Uu^Uf, Uu, Uh, Xu, Xu -Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Xu, Xu, Xu, Xu, Uh, Uu, Ss, Ss, Ss, Ss, Ss, Xu, Uu, Uu, Uh, Uh, Uh, Uu, Uu, Uu, Uh, Xu, Xu -Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Ss, Xu, Xu, Uu, Uu, Xu, Uu, Uu, Uh, Xu, Uu, Uu, Xu, Xu, Xu -Xu, Xu, Xu, Xu, Uh, Uh, Uu, Uu, Uu, Uu, Xu, Xu, Uu, Uu, Xu, Uu, Uu, Wog, Xu, Uu, Uh, Xu, Xu, Uu^Vud, Uu, Uu, Uu, Uu, Uu, Xu, Xu, Xu -Xu, Xu, Xu, Uh, Uu, Uu, Uu, Xu, Uu, Uu, Uu, Uu, Uu, Uu, Xu, Xu, Uu, Wog, Wog, Xu, Xu, Uh, Uh, Xu, Xu, Uu, Uu, Uu, Xu, Uu^Vud, Xu, Xu -Xu, Xu, Uu^Vhs, Uu, Xu, Xu, Uu, Xu, Uh, Uu, Uu, Uu, Uu, Uu, Uu, Xu, Uu, Uu, Uu, Wog, Wog, Xu, Xu, Uh, Uu, Uu, Uu, Xu, Xu, Uh, Xu, Xu -Xu, Xu, Uu, Uu, Uu, Uu, Uu, Uh, Uu, Uu, Uu^Vhs, Xu, Uu, Re, Uu, Xu, Uu^Vhs, Uu, Uu, Uu, Uu, Wog, Wog, Xu, Xu, Uu, Uu, Uu, Uu^Vud, Uh, Xu, Xu -Xu, Xu, Xu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Xu, Xu, Uu, Re, Uu, Xu, Xu, Xu, Xu, Uu, Xu, Xu, Xu, Wog, Xu, Uh, Uu, Uu, Uu, Uu, Xu, Xu -Xu, Xu, Xu, Xu, Uu, Uu, Uu, Xu, Xu, Uu, Uu, Xu, Uu^Uf, Uu, Uu, Uu, Uu, Uu, Uu, Xu, Uu, Uu, Xu, Wog, Qxu, Uu, Cud, Cud, Cud, Uu, Xu, Xu -Xu, Xu, Uu, Uu, Xu, Uu, Uu, Uu^Uf, Uu^Uf, Xu, Uu, Uu, Uu, Uu, Re, Re, Uu, Re, Uu, Re, Re, Uu^Uf, Uu, Xu, Xu, Qxu, Cud, 2 Kud, Cud, Uu, Xu, Xu -Xu, Xu, Uu, Xu, Uu^Uf, Xu, Xu, Uu, Uu, Xu, Re, Uu, Uu, Re, Uu, Uu, Xu, Uu, Xu, Uu, Uu, Re, Uu, Uu, Xu, Qxu, Qxu, Cud, Uu, Uu, Xu, Xu -Xu, Xu, Uu^Uf, Uu^Uf, Uu^Uf, Uu^Uf, Uu^Uf, Uu, Re, Re, Uu, Xu, Uu^Vhs, Uu, Xu, Xu, Ha, Xu, Ha, Xu, Xu, Uu, Re, Uu, Uu, Xu, Qxu, Uu, Xu, Xu, Xu, Xu -Xu, Xu, Uu^Uf, Xu, Uu^Uf, Uu^Uf, Xu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Ms, Aa^Fpa, Aa^Fma, Ha, Ha, Ha, Xu, Uu, Re, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Uu^Uf, Xu, Cud, Cud, Cud, Xu, Uu, Uu, Xu, Xu, Aa^Fma, Aa^Fpa, Aa^Fma, Aa^Fma, Aa, Aa, Aa^Fma, Aa, Re, Re, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Xu, Uu, Cud, 3 Kud, Cud, Uu, Uu, Uu^Vhs, Xu, Xu, Ms^Xm, Aa^Fma, Aa, Aa, Aa^Fma, Aa^Fma, Cea, Aa^Fma, Aa^Fma, Re, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Xu, Uu, Uu, Cud, Uu, Uu, Uu, Uu, Xu, Xu, Ms^Xm, Ms, Aa, Aa, Aa^Fma, Cea, Cea, Cea, Cea, Aa, Aa^Fma, Ms, Ms, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Xu, Xu, Xu, Uu, Xu, Uu^Uf, Xu, Uu^Vhs, Xu, Xu, Ms, Ms, Ha, Ha^Fma, Ha, Aa, Aa, 1 Kea, Ha, Aa^Fma, Aa, Ha, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu -Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ms, Ms, Ha, Ha^Fma, Ha, Aa, Aa, Aa, Ha, Aa^Fma, Aa, Ha, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Rb, Sm, Sm, Ss^Em, Ss^Em, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Uh^Em, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ss^Vhs, Rb^Em, Ss^Em, Sm, Rb, Re^Em, Uu^Emf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur^Vu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Uh^Uf, Uu^Emf, Uu^Em, Rb, Xu, Uu, Xu, Xu, Xu, Ss^Em, Ss^Emf, Sm^Edb, Sm^Edb, Sm^Edb, Rb^Es, Uu, Uu^Uf, Xu, Xu, Xu, Xu, Xu, Xu, Ur^Es, Ur^Es, Xu, Xu +Xu, Xu, Xu, Xu, Uh^Dr, Uh^Uf, Ur, Ur^Es, Uh^Emf, Rb^Es, Uu, Xu, Xu, Rb^Es, Sm^Em, Ss^Em, Ss^Edb, Ss^Edb, Rb^Es, Re^Es, Re, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Re^Es, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Uu^Em, Ur^Es, Uu^Em, Uh^Uf, Uh^Uf, Uu^Vud, Xu, Xu, Rb^Es, Xu, Sm, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Uf, Uh^Dr, Uh^Uf, Uu^Emf, Uu^Em, Uu^Em, Re, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Cud, Uu^Br\, Ur^Es, Uu^Em, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur^Es, Uh^Emf, Re^Em, Uu, Ur, Ur^Es, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xuc, Uu^Br|, Ur^Es, Re, Uu^Emf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uu^Vu, Uh^Uf, Rb^Es, Xu, Xu, Ur^Es, Xu, Ur, Xu, Re, Ur^Es, Xu, Xu, Xu +Xu, Xu, Xu, Xuc, Xu, Xuc, Re^Es, Uu, Re^Em, Uu^Em, Xuc, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Emf, Ur^Es, Uu, Rb^Es, Xu, Xu, Uu^Vud, Xu, Xu, Xu, Xu, Re, Xu, Xu, Xu +Xu, Xu, Xuc, Xuc, Xuc, Re^Es, Uu^Br|, Ur, Uh^Em, Uh^Uf, Xuc, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Xu, Xu, Xu, Xu, Xu, Uh^Uf, Uh^Emf, Uu^Uf, Re^Es, Xu, Xu, Xu +Xu, Xuc, Uu^Vud, Xuc, Xuc, Re, Uu^Br|, Ur, Uh^Vu, Xuc, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Em, Re, Uu^Em, Uh^Uf, Xu, Xu +Xu, Xuc, Cud, Uue^Edb, Uue^Br/, Uu^Br/, Uu^Es, Uu^Es, Xuc, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Rb^Es, Xu, Uu^Em, Xu, Xu, Xu, Uu^Es, Rb^Es, Uu^Em, Uh^Dr, Xu, Xu +Xu, Xuc, Xuc, Uue^Br/, Uue^Dr, Uue^Br\, Uu^Br\, Cud, Xuc, Xu, Xu, Xu, Xu, Xu, Uh^Em, Xu, Ur^Es, Xu, Xu, Xu, Xu, Re, Re^Es, Rb^Es, Xu, Xu, Xu, Uu, Uu^Uf, Uu^Emf, Xu, Xu +Xu, Xu, Xuc, Xuc, Ur^Edb, Uue^Br|, Ur, Xuc, Xuc, Xu, Xu, Xu, Xu, Uh^Uf, Uu^Em, Rb^Es, Re^Vct, Ur^Es, Uu, Xu, Uu, Ur, Uu, Xu, Xu, Xu, Xu, Uu^Em, Xu, Xu, Xu, Xu +Xu, Xu, Uue^Br\, Ur, Uue^Edb, Uue^Br|, Uue^Edb, Ur, Uh^Ii, Xu, Xu, Xu, Uu^Uf, Uh^Emf, Rb^Es, Re, Re^Es, 1 Ur, Ur^Es, Ur^Es, Ur, Ur^Es, Uu^Es, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Ur^Ii, Uue^Br\, Xuc, Xuc, Xuc, Ur^Edb, Uue^Br/, Xu, Xu, Xu, Uu^Em, Rb^Es, Re, Uu^Uf, Xu, Uu, Xu, Xu, Xu, Re^Em, Re, Uu^Dr, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uue^Vud, Ur^Edb, Uue^Dr, Xuc, Uue^Br\, Uue^Br/, Uue^Dr, Ur, Xuc, Xu, Xu, Uu, Re^Es, Uu^Dr, Xu, Xu, Xu, Xu, Xu, Uu^Emf, Re^Em, Uu^Es, Xu, Xu, Xu, Uu^Vu, Uh^Em, Xu, Xu, Xu +Xu, Xu, Xu, Uue^Br/, Cud, Uue^Ii, Ur^Br|, Uue^Edb, Ur^Edb, Ur^Br\, Xuc, Xu, Xu, Xu, Uu, Re^Es, Xu, Xu, Xu, Xu, Xu, Uu^Uf, Uu^Em, Ur, Rb^Es, Uu^Em, Uu^Emf, Uu^Uf, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Cud^Dr, Kud, Ur, Uu^Em, Ur, Uu^Em, Xuc, Xuc, Xu, Xu, Xu, Uu^Edb, Re^Es, Xu, Xu, Xu, Xu, Xu, Xu, Rb^Dr, Ur, Uu, Rb^Es, Uu^Em, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Cud, Uh^Ufi, Uu^Emf, Uu^Uf, Uh^Ii, Xu, Xu, Xu, Uu, Re^Edb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Uu^Vu, Uu^Em, Uu^Emf, Uh^Uf, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Uh^Vud, Uh^Uf, Xu, Xu, Xu, Xu, Xu, Uu^Edb, Re^Edb, Re^Edb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Aa^Edb, Aa, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Aa, Aa, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu diff --git a/data/campaigns/Descent_Into_Darkness/scenarios/03_A_Haunting_in_Winter.cfg b/data/campaigns/Descent_Into_Darkness/scenarios/03_A_Haunting_in_Winter.cfg index 2ba2e7e8b919..972e70e4f730 100644 --- a/data/campaigns/Descent_Into_Darkness/scenarios/03_A_Haunting_in_Winter.cfg +++ b/data/campaigns/Descent_Into_Darkness/scenarios/03_A_Haunting_in_Winter.cfg @@ -4,20 +4,29 @@ id=03_A_Haunting_in_Winter name= _ "A Haunting in Winter" map_data="{campaigns/Descent_Into_Darkness/maps/03_A_Haunting_in_Winter.map}" - victory_when_enemies_defeated=yes - {TURNS 36 34 32} + victory_when_enemies_defeated=no + turns=unlimited next_scenario=04_Beginning_of_the_Revenge + [time_area] + x=15-16 + y=20-21 + {DEFAULT_SCHEDULE} + [/time_area] {UNDERGROUND} - {SCENARIO_MUSIC knalgan_theme.ogg} + {SCENARIO_MUSIC the_deep_path.ogg} {EXTRA_SCENARIO_MUSIC underground.ogg} - {EXTRA_SCENARIO_MUSIC legends_of_the_north.ogg} + {EXTRA_SCENARIO_MUSIC nunc_dimittis.ogg} [story] [part] - music=the_deep_path.ogg - story=_ "Malin and Darken Volk spend the summer and fall traveling up and down the lower Northlands. They attack small goblin villages and orc camps when they find them. Malin’s power grows considerably under the constant tutelage of the necromancer." + music=transience.ogg + story=_ "Malin and Darken Volk spend the summer and fall traveling across the lower Northlands. They attack goblin villages and small orcish camps when they find them. Although Darken Volk is occasionally demanding and irritable, he proves to be an effective mentor. Malin’s power grows considerably under the necromancer’s tutelage." + {STORYTXT_BACKGROUND travel.jpg} + [/part] + [part] + story=_ "The colored patchwork of fall eventually fades to wintry snowfall drifting over barren lands. The nights grow longer as the sun disappears behind a seemingly perpetual mist of pallid clouds. Hounded by the elements, the two necromancers retreat into the hills to seek shelter. By a stroke of good fortune, they stumble across a mostly abandoned cave just as the winter sets in." {STORYTXT_BACKGROUND travel.jpg} [/part] [/story] @@ -28,8 +37,11 @@ [side] side=1 controller=human - recruit=Walking Corpse,Vampire Bat,Ghost,Ghoul - gold=150 + recruit= + income=-2 + village_gold=0 + gold=0 + village_support=2 team_name=good user_team_name= _ "Malin Keshar" {FLAG_VARIANT undead} @@ -37,7 +49,6 @@ # wmllint: recognize Malin Keshar {CHARACTER_STATS_MALIN_KESHAR} - fog=yes shroud=yes facing=ne [/side] @@ -46,63 +57,9 @@ [side] side=2 controller=ai - defeat_condition=no_units_left - recruit=Dwarvish Guardsman,Dwarvish Fighter,Dwarvish Thunderer - {GOLD 0 20 40} - team_name=outlaws - user_team_name= _ "Outlaws" - {FLAG_VARIANT6 ragged} - - type=Dwarvish Steelclad - id=Dap Horner - name= _ "Dap Horner" - canrecruit=yes - - fog=yes - facing=nw - - # Dwarf watchman - {NAMED_LOYAL_UNIT 2 (Dwarvish Guardsman) 14 12 Watchman ( _ "Watchman")} - - [ai] - aggression=0.6 - grouping=offensive - recruitment_pattern=mixed fighter,fighter - [/ai] - [/side] - - [side] - side=3 - controller=ai - defeat_condition=no_units_left - recruit=Footpad,Poacher,Thug,Thief - {GOLD 60 80 100} - team_name=outlaws - user_team_name=_"Outlaws" - {FLAG_VARIANT6 ragged} - - type=Bandit - id=Gorak Cole - name=_ "Gorak Cole" - canrecruit=yes - - fog=yes - facing=ne - - [ai] - aggression=0.7 - [/ai] - [/side] - - [side] - side=4 - controller=ai - team_name=free undead - user_team_name= _ "Free Undead" no_leader=yes hidden=yes - {FLAG_VARIANT undead} - + team_name=monsters [ai] aggression=1.0 caution=0.0 @@ -112,18 +69,44 @@ [goal] name=target [criteria] - id=Malin Keshar + side=1 [/criteria] value=100 [/goal] + [goal] + name=target + [criteria] + side=3 + [/criteria] + value=-100 + [/goal] [/ai] [/side] - [time_area] - x=12-24,12-21,12-20,14-18,16-18,19 - y=19-21,18,17,16,15,16 - {DEFAULT_SCHEDULE} - [/time_area] + [side] + side=3 + controller=ai + no_leader=yes + hidden=yes + team_name=good + [/side] + +#define OBJECTIVE_EXPLORE + [objectives] + side=1 + [objective] + condition=win + description= _ "Explore" + [/objective] + [objective] + condition=lose + description= _ "Death of Malin Keshar" + [/objective] + [gold_carryover] + carryover_percentage=100 + [/gold_carryover] + [/objectives] +#enddef [event] name=prestart @@ -132,52 +115,122 @@ side=1 [objective] condition=win - description= _ "Clear the cave of enemies" + description= _ "Defeat both young ogres" [/objective] [objective] condition=lose description= _ "Death of Malin Keshar" [/objective] - [objective] - condition=lose - description= _ "Death of Darken Volk" - [/objective] - - {TURNS_RUN_OUT} - [gold_carryover] - bonus=yes - carryover_percentage=40 + carryover_percentage=100 [/gold_carryover] [/objectives] - # Set outlaw villages - [capture_village] - x=28,23,29,28 - y=1 ,7 ,8 ,10 + [recall] + id=Darken Volk + [/recall] + + [unit] + type=Young Ogre + x,y=25,17 side=2 - [/capture_village] + id=YOgre1 + hitpoints=13 + facing=sw + ai_special=guardian + [/unit] + [unit] + type=Young Ogre + x,y=24,17 + side=2 + id=YOgre2 + hitpoints=16 + facing=ne + ai_special=guardian + [/unit] - [capture_village] - x=12,9 ,9 ,10 - y=15,18,20,10 - side=3 - [/capture_village] + {PLACE_IMAGE "items/bow.png" 17 6} + [unit] + type=Young Ogre + x,y=18,6 + side=2 + id=Ogre3 + ai_special=guardian + [/unit] - # Ghost variable - {VARIABLE ghost_was_freed no} + [unit] +#ifdef EASY + type=Naga Fighter +#else + type=Naga Warrior +#endif + x,y=15,2 + side=2 + id=Naga2 + ai_special=guardian + [/unit] + [unit] +#ifdef HARD + type=Naga Warrior +#else + type=Naga Fighter +#endif + x,y=16,2 + side=2 + id=Naga1 + ai_special=guardian + [/unit] - # Set ghost leader rebellion turn - [set_variable] - name=free_ghost_turn - rand=5..16 - [/set_variable] + [object] + silent=yes + duration=forever + take_only_once=no + [filter] + id=Naga1 + [/filter] + [effect] + apply_to=movement_costs + replace=yes + [movement_costs] + flat={UNREACHABLE} + cave={UNREACHABLE} + [/movement_costs] + [/effect] + [/object] + [object] + silent=yes + duration=forever + take_only_once=no + [filter] + id=Naga2 + [/filter] + [effect] + apply_to=movement_costs + replace=yes + [movement_costs] + flat={UNREACHABLE} + cave={UNREACHABLE} + [/movement_costs] + [/effect] + [/object] - [recall] - id=Darken Volk - [/recall] + {GENERIC_UNIT 2 (Troll Whelp) 2 15} {GUARDIAN} + {GENERIC_UNIT 2 (Troll Whelp) 6 17} {GUARDIAN} + {GENERIC_UNIT 2 (Troll Whelp) 6 19} {GUARDIAN} - {MODIFY_UNIT (side=1) facing ne} +#ifdef EASY + {GENERIC_UNIT 2 (Troll) 4 17} {GUARDIAN} +#else + {GENERIC_UNIT 2 (Troll Hero) 4 17} {GUARDIAN} +#endif + [remove_shroud] + x=13-16,12,12 + y=11-21,13-14,17-19 + [/remove_shroud] + + {MODIFY_UNIT (id=Darken Volk) max_moves 0} + {MODIFY_UNIT (id=Darken Volk) moves 0} + {MODIFY_UNIT (id=Darken Volk) side 3} [/event] [event] @@ -185,33 +238,316 @@ [message] speaker=Darken Volk - message= _ "Winter comes on fast, and we need a sheltered place to spend it. This cave looks promising, but from the tracks in and out several bands of outlaws already inhabit it. You should clear them out so we may use it safely." + message= _ "I sense many lifeforms in this cavern, but none are very powerful. Most likely they are merely nothing more than beasts. Still, we may be able to use them to continue your training." + [/message] + + [message] + speaker=Malin Keshar + message= _ "Better than nothing. Which way do these creatures lie?" + [/message] + + [message] + speaker=Darken Volk + message= _ "East." + [/message] + + [move_unit] + id=Malin Keshar + to_x,to_y=20,13 + [/move_unit] + [redraw] + side=1 + clear_shroud=yes + [/redraw] + [scroll_to] + x,y=24,17 + [/scroll_to] + + [message] + speaker=YOgre1 + message= _ "Me kill you!" + [/message] + + [harm_unit] + [filter] + id=YOgre2 + [/filter] + [filter_second] + id=YOgre1 + [/filter_second] + [primary_attack] + name=cleaver + [/primary_attack] + [secondary_attack] + name=cleaver + [/secondary_attack] + animate=yes + slowed=yes + amount=6 + [/harm_unit] + + [message] + speaker=YOgre2 + message= _ "No, me kill you!" + [/message] + + [harm_unit] + [filter] + id=YOgre1 + [/filter] + [filter_second] + id=YOgre2 + [/filter_second] + [primary_attack] + name=cleaver + [/primary_attack] + [secondary_attack] + name=cleaver + [/secondary_attack] + animate=yes + slowed=yes + amount=5 + [/harm_unit] + + [message] + speaker=YOgre1 + message= _ "No, me kill— I see human!" + [/message] + + [message] + speaker=YOgre2 + message= _ "Human! We smash human!" + [/message] + + [message] + speaker=Malin Keshar + message= _ "Simple-minded, obtuse creatures." + [/message] + + [message] + speaker=Darken Volk + message= _ "This should be an easy task for you. Once you have slain them both, we shall turn them into skeletons." [/message] [/event] - # Warn player about the rebellion + + # First area (two young ogres) [event] - name=recruit - first_time_only=yes + name=last breath [filter] - type=Ghost + id=YOgre1 [/filter] + [message] + speaker=YOgre1 + # po: this line is just a death scream + message= _ "Arrghhaaugghhh..." # wmllint: no spellcheck + [/message] + + {PLACE_IMAGE "items/bones.png" $x1 $y1} + + {VARIABLE loc1.x $x1} + {VARIABLE loc1.y $y1} + [/event] + [event] + name=last breath + [filter] + id=YOgre2 + [/filter] + + [message] + speaker=YOgre2 + message= _ "Me... die..." + [/message] + + {PLACE_IMAGE "items/bones.png" $x1 $y1} + + {VARIABLE loc2.x $x1} + {VARIABLE loc2.y $y1} + [/event] + + [event] + name=die + first_time_only=no + + [filter] + id=YOgre1,YOgre2 + [/filter] + + [if] + [not] + [have_unit] + id=YOgre1,YOgre2 + [/have_unit] + [/not] + [then] + # this is necessary to stop the units from blocking their hexes + [kill] + id=YOgre1,YOgre2 + [/kill] + [fire_event] + name=cutscene1 + [/fire_event] + [/then] + [/if] + [/event] + [event] + name=cutscene1 + + {FULL_HEAL (id=Malin Keshar)} + + [message] + speaker=Malin Keshar + message= _ "The ogres are dead." + [/message] + + [message] + speaker=Darken Volk + message= _ "Good... I have already showed you how to raise a skeleton before, but perhaps it would be best if we... went over it once again. Other than for ghouls, flesh and blood are useless for undead creatures. First, let out the blood and innards and dispose of them." + [/message] + + [message] + speaker=Malin Keshar + message= _ "Very well." + [/message] + + [move_unit] + id=Malin Keshar + to_x,to_y=$loc1.x,$loc1.y + [/move_unit] + + [sound] + name=axe.ogg + [/sound] + + [delay] + time=750 + [/delay] + + [message] + speaker=Malin Keshar + message= _ "What a mess." + [/message] + + [message] + speaker=Darken Volk + message= _ "The ghouls will take care of it once we have the resources to keep them here. Next, strip away the flesh. A little remaining is fine; too much will hamper your skeletons’ movement." + [/message] + + [delay] + time=350 + [/delay] + + [sound] + name=axe.ogg + [/sound] + + [delay] + time=500 + [/delay] + + [sound] + name=axe.ogg + [/sound] + + [delay] + time=750 + [/delay] + + [message] + speaker=Malin Keshar + message= _ "And then?" + [/message] + [message] speaker=Darken Volk - message= _ "Be careful when imprisoning a soul and use all your might to retain control over it or it might attempt to break free and destroy you!" + message= _ "Bind the strings of energy to the bone. Skeletons are no more than puppets. Novices will directly control their movement with strands of dark magic, but you should have no need for such crude methods. Instead, impart your will upon the skeleton, spread the threads over the bones, then let loose the twine from your hand. If your will is strong enough, the skeleton will be able to move on its own." [/message] [message] speaker=Malin Keshar - message= _ "I... I will try." + message= _ "I will try." [/message] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] + + [delay] + time=400 + [/delay] + + {REMOVE_IMAGE $loc1.x $loc1.y} + + [unit] + type=Skeleton + x,y=$loc1.x,$loc1.y + passable=yes + side=1 + animate=yes + [/unit] + + [message] + speaker=Darken Volk + message= _ "Do it again." + [/message] + + [delay] + time=750 + [/delay] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] + + [delay] + time=400 + [/delay] + + {REMOVE_IMAGE $loc2.x $loc2.y} + + [unit] + type=Skeleton + x,y=$loc2.x,$loc2.y + passable=yes + side=1 + animate=yes + [/unit] + + [terrain] + x=19,20,20 + y=9,9,8 + terrain=Ur + [/terrain] + [redraw][/redraw] + + {CLEAR_VARIABLE loc1} + {CLEAR_VARIABLE loc2} + + [message] + speaker=Darken Volk + message= _ "Good, good. Now head north. I sense another young ogre there." + [/message] + + {OBJECTIVE_EXPLORE} [/event] [event] name=sighted [filter] - race=dwarf + id=Ogre3 [/filter] [filter_second] side=1 @@ -219,135 +555,608 @@ [message] speaker=Malin Keshar - message= _ "Dwarves! They have often been our allies against the orc hordes. Surely they will allow us to winter with them." + message= _ "I can turn this one into a skeleton as well." [/message] + [/event] + + # Second mini area (third young ogre) + [event] + name=die + first_time_only=yes + [filter] + id=Ogre3 + [/filter] + + {FULL_HEAL (side=1)} + + {PLACE_IMAGE "items/bones.png" $x1 $y1} + + [kill] + id=Ogre3 + [/kill] + + [remove_shroud] + x,y=17,6 + radius=1 + [/remove_shroud] [scroll_to] - x,y=$x1,$y1 + x,y=17,6 [/scroll_to] + [delay] + time=1000 + [/delay] + + [message] + speaker=Darken Volk + message= _ "The ogre seems to have looted a bow. Use it to create a Skeleton Archer." + [/message] + [message] - speaker=unit - message= _ "Two necromancers are at the cave entrance! Up yer axes, boys, if ye dinna’ want tae be a walking pile o’ bones." + speaker=Malin Keshar + message= _ "Very well." + [/message] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] + + [delay] + time=400 + [/delay] + + [unit] + type=Skeleton Archer + x,y=$x1,$y1 + side=1 + animate=yes + passable=yes + [/unit] + + {REMOVE_IMAGE $x1 $y1} + {REMOVE_IMAGE 17 6} + + [message] + speaker=Darken Volk + message= _ "It seems that raising skeletons is already a trivial matter for you now. You are indeed... talented." [/message] [message] speaker=Malin Keshar - message= _ "Or not. Why do they hate us so much?" + message= _ "Perhaps, but I will need more than a few skeletons to fight the orcs." [/message] [message] speaker=Darken Volk - message= _ "People fear that which they don’t understand, and death, after all, is the greatest mystery. Those who dare to investigate that mystery are bound to invoke fear and distrust. Worry not, your people will again warm to you once you deal with the orc threat at its source. For now, the cave-dwellers give us no choice." + message= _ "They will come in time, when you learn to control more of them at once. For now, continue exploring these caves. We may yet find something else of use." [/message] + + [terrain] + x=24,25,24,21,21 + y=10,10,11,3,4 + terrain=Rb + [/terrain] + [terrain] + x=25,22 + y=11,3 + terrain=Uu + [/terrain] + [redraw][/redraw] + + {GENERIC_UNIT 2 (Giant Scorpion) 26 8} + {GENERIC_UNIT 2 (Giant Scorpion) 28 10} + {GENERIC_UNIT 2 (Giant Scorpion) 28 3} + {GENERIC_UNIT 2 (Giant Scorpion) 25 4} + {GENERIC_UNIT 2 (Giant Scorpion) 23 6} + + {MODIFY_UNIT (type=Giant Scorpion) max_moves 4} + + {OBJECTIVE_EXPLORE} [/event] + # Third area (scorpions) [event] - name=new turn + name=sighted + [filter] + type=Giant Scorpion + [/filter] + [filter_second] + side=1 + [/filter_second] + + [message] + speaker=Malin Keshar + message= _ "This cave is infested with giant scorpions!" + [/message] + + [message] + speaker=Darken Volk + message= _ "Annoying pests, no more than that. Killing them, however, may provide some useful experience to your skeletons." + [/message] + [/event] + + # Fourth area (nagas and ghosts) + [event] + name=sighted + [filter] + race=naga + [/filter] + [filter_second] + side=1 + [/filter_second] + + [remove_shroud] + x,y=16,2 + radius=3 + [/remove_shroud] + + [message] + speaker=Naga1 + # po: Hsss is just a hissing sound that nagas make. The extra s's in spy and must are also intended to be the same sound. + message= _ "Hssss, I ssspy human vermin... I mussst kill." # wmllint: no spellcheck + [/message] + + [message] + speaker=Naga2 + # po: The extra s's in slay are also intended to mimic a hissing sound. + message= _ "We will ssslay him..." # wmllint: no spellcheck + [/message] + + [message] + speaker=Malin Keshar + message= _ "I do not think I will be the one dying here." + [/message] + + [objectives] + side=1 + [objective] + condition=win + description= _ "Defeat both nagas" + [/objective] + [objective] + condition=lose + description= _ "Death of Malin Keshar" + [/objective] + [gold_carryover] + carryover_percentage=100 + [/gold_carryover] + [/objectives] + [/event] + [event] + name=last breath + [filter] + id=Naga1 + [/filter] + + [message] + speaker=Naga1 + # po: this line is also just a death scream + message= _ "Hsssss..." # wmllint: no spellcheck + [/message] + + {PLACE_IMAGE "items/bones.png" $x1 $y1} + + {VARIABLE loc1.x $x1} + {VARIABLE loc1.y $y1} + [/event] + [event] + name=last breath + [filter] + id=Naga2 + [/filter] + + [message] + speaker=Naga2 + # po: again, drawn out s's are just to mimic hissing + message= _ "Evil... dark... magicssssss..." # wmllint: no spellcheck + [/message] + + {PLACE_IMAGE "items/bones.png" $x1 $y1} + + {VARIABLE loc2.x $x1} + {VARIABLE loc2.y $y1} + [/event] + + [event] + name=die first_time_only=no - [filter_condition] - # Reach or pass ghost turn, and ghost wasn't already freed - [have_unit] - type=Ghost - [/have_unit] - [variable] - name=free_ghost_turn - less_than_equal_to=$turn_number - [/variable] - [variable] - name=ghost_was_freed - equals=no - [/variable] - [/filter_condition] - - # Free the ghost - {MODIFY_ONE_UNIT (type=Ghost) ( - side=4 - id=Tortured Soul - name= _ "Tortured Soul" - canrecruit=yes - facing=se - )} - - {VARIABLE ghost_was_freed yes} - - [message] - side=4 - message=_ "Free! Your foul spells cannot enslave me any longer, Malin the Damned. You shall pay for keeping me from my final rest!" + + [filter] + id=Naga1,Naga2 + [/filter] + + [if] + [not] + [have_unit] + id=Naga1,Naga2 + [/have_unit] + [/not] + [then] + # this is necessary to stop the units from blocking their hexes + [kill] + id=Naga1,Naga2 + [/kill] + [fire_event] + name=cutscene2 + [/fire_event] + [/then] + [/if] + [/event] + + [event] + name=cutscene2 + + [message] + speaker=Darken Volk + message= _ "Since you have mastered reanimating skeletons, I will now teach you to control spirits. The souls of the recently deceased do not stray far from their bodies. You should be able to sense them still." + [/message] + + [move_unit] + id=Malin Keshar + to_x,to_y=$loc1.x,$loc1.y + [/move_unit] + + [delay] + time=300 + [/delay] + + [sound] + name=wail-sml.wav + [/sound] + + [delay] + time=750 + [/delay] + + [sound] + name=wail.wav + [/sound] + + [delay] + time=500 + [/delay] + + [message] + speaker=Malin Keshar + message= _ "I feel them." + [/message] + + [message] + speaker=Darken Volk + message= _ "Controlling spirits can be somewhat hazardous even for experienced necromancers. When imprisoning a soul, use all your might to retain control over it. You must exert your will over its own, or the spirit will break free and destroy you." + [/message] + + [message] + speaker=Malin Keshar + message= _ "I... I will do my best." + [/message] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] + + [delay] + time=400 + [/delay] + + [unit] + type=Ghost + x,y=$loc1.x,$loc1.y + side=1 + animate=yes + passable=yes + id=S3_Rebel_Soul + [/unit] + + [message] + speaker=Malin Keshar + message= _ "I... think I did it—" + [/message] + + {MODIFY_UNIT (id=S3_Rebel_Soul) side 2} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 1} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 2} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 1} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 2} + [delay] + time=400 + [/delay] + + [message] + speaker=S3_Rebel_Soul + # po: more s's indicating hissing + message=_ "Freedom! Your sssorceries sssshall not sshackle me any longer, Malin the Damned!" # wmllint: no spellcheck [/message] [message] speaker=Darken Volk - message=_ "Fool boy! Your will must be stronger or you will never be able to control your soldiers well enough to face the orcs. Many are the young necromancers who have died when their servants turned on them. He will attack you relentlessly." + message=_ "You blithering fool! How did you let your will be overcome by a half-sentient creature that can hardly come up with a single coherent sentence?! Let your will slip further and you shall join other young necromancers who have died at the hands of their own servants." [/message] [message] speaker=Malin Keshar - message=_ "But why are they attacking me? And what should I do?!" + message=_ "My will is strong, but he still does not return to me. What should I do?" [/message] [message] speaker=Darken Volk - message=_ "Destroy the rebel quickly and all will be well. Wait, and he will begin to turn the rest of your forces against you." + message=_ "Subdue the rebel! When you have sapped it of its energies, exert your power over it and do not lose focus." [/message] [/event] - # When the free ghost leader is around, one random unit per turn is freed [event] - name=new turn - first_time_only=no - [filter_condition] - [have_unit] - side=4 - canrecruit=yes - [/have_unit] - [variable] - name=turn_number - greater_than=$free_ghost_turn - [/variable] - [/filter_condition] - - {MODIFY_ONE_UNIT (side,race=1,undead) (side=4)} + name=last breath + [filter] + id=S3_Rebel_Soul + [/filter] + + [message] + speaker=Darken Volk + message=_ "Seize control back while it is weakened!" + [/message] + + [scroll_to] + x,y=$x1,$y1 + [/scroll_to] + + {MODIFY_UNIT (id=S3_Rebel_Soul) side 1} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 2} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 1} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 2} + [delay] + time=400 + [/delay] + {MODIFY_UNIT (id=S3_Rebel_Soul) side 1} + [delay] + time=400 + [/delay] + + [message] + speaker=Malin Keshar + message= _ "I think I’ve got it under control again. That was a close call. Let me try the other one now." + [/message] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] + + [delay] + time=400 + [/delay] + + [unit] + type=Ghost + x,y=$loc2.x,$loc2.y + side=1 + animate=yes + passable=yes + [/unit] + + [delay] + time=500 + [/delay] + + [message] + speaker=Darken Volk + message= _ "No mishaps this time, but you will need to practice more." + [/message] + + {CLEAR_VARIABLE loc1} + {CLEAR_VARIABLE loc2} + + [terrain] + x=11,12 + y=3,3 + terrain=Re + [/terrain] + [terrain] + x=11,12 + y=4,4 + terrain=Uu + [/terrain] + [redraw][/redraw] + + {FULL_HEAL (side=1)} + + {GENERIC_UNIT 2 (Giant Scorpion) 5 5} + {GENERIC_UNIT 2 (Giant Scorpion) 8 3} + {GENERIC_UNIT 2 (Giant Scorpion) 9 8} + {GENERIC_UNIT 2 (Giant Scorpion) 8 8} + + {MODIFY_UNIT (type=Giant Scorpion) max_moves 4} + + {OBJECTIVE_EXPLORE} [/event] + # Fifth area (scorpions/trolls) [event] - name=die + name=enter hex [filter] - side=4 - canrecruit=yes + side=1 + x,y=5-9,6-7 [/filter] - # Regain control of "rebel" ghosts - {MODIFY_UNIT (side,canrecruit=4,no) side 1} - [redraw] - clear_shroud=yes - [/redraw] + [message] + speaker=Malin Keshar + message= _ "Rail tracks and mines... dwarves used to live here, but there do not seem to be any guards. I wonder where they went?" + [/message] + [/event] + + [event] + name=sighted + [filter] + race=troll + [/filter] + [filter_second] + side=1 + [/filter_second] [message] speaker=Malin Keshar - message= _ "I think I’ve got the rest of them under control now. That was a close call." + message= _ "Trolls! I suppose I should have expected this." + [/message] + + [message] + speaker=Darken Volk + message= _ "Threats to your skeletons, but no more than fodder for your ghosts. Eliminate them all." [/message] + + [modify_unit] + [filter] + race=troll + [/filter] + [effect] + apply_to=status + remove=guardian + [/effect] + [/modify_unit] + + [objectives] + side=1 + [objective] + condition=win + description= _ "Defeat the trolls" + [/objective] + [objective] + condition=lose + description= _ "Death of Malin Keshar" + [/objective] + [gold_carryover] + carryover_percentage=100 + [/gold_carryover] + [/objectives] + [/event] + + [event] + name=die + first_time_only=no + [filter] + race=troll + [/filter] + + {VARIABLE loc1.x $x1} + {VARIABLE loc1.y $y1} + + [fire_event] + name=create ghost + [/fire_event] + + [if] + [not] + [have_unit] + race=troll + [/have_unit] + [/not] + [then] + + [message] + speaker=Malin Keshar + message= _ "The trolls are defeated." + [/message] + [endlevel] + result=victory + bonus=no + {NEW_GOLD_CARRYOVER 100} + [/endlevel] + [/then] + [/if] [/event] - # Victory Condition [event] - name=enemies defeated + name=create ghost + first_time_only=yes + + [message] + speaker=Malin Keshar + message= _ "If I act quickly, I can enslave another ghost to help me fight off the rest of these trolls." + [/message] + + [kill] + x,y=$loc1.x,$loc1.y + [/kill] + + [animate_unit] + [filter] + id=Malin Keshar + [/filter] + [primary_attack] + range=ranged + [/primary_attack] + flag=attack + [/animate_unit] - [endlevel] - result=victory - bonus=yes - {NEW_GOLD_CARRYOVER 40} - [/endlevel] + [delay] + time=400 + [/delay] + + [unit] + type=Ghost + x,y=$loc1.x,$loc1.y + side=1 + animate=yes + [/unit] + + [message] + speaker=Darken Volk + message= _ "The boy learns quickly. He should be of great use after all." + [/message] + + {CLEAR_VARIABLE loc1} [/event] [event] name=victory - {CLEAR_VARIABLE free_ghost_turn,ghost_was_freed} + [message] + speaker=Darken Volk + message= _ "You have done well enough so far, but I still have much more to teach you. Come, we have work to do." + [/message] + + {MODIFY_UNIT (id=Darken Volk) max_moves 6} + {MODIFY_UNIT (id=Darken Volk) moves 6} + {MODIFY_UNIT (id=Darken Volk) side 1} [/event] {HERODEATH_MALIN} {HERODEATH_VOLK} - - {TIME_OVER_DEFEAT} [/scenario]