From 9b9b1baf68a0f5f6a0e90d5fb8c7819b5ead9da6 Mon Sep 17 00:00:00 2001 From: nemaara Date: Mon, 14 Jan 2019 02:36:17 -0500 Subject: [PATCH] DiD S8: updated gameplay and dialogue --- .../scenarios/08_A_Small_Favor2.cfg | 683 ++++++++++++++++-- 1 file changed, 638 insertions(+), 45 deletions(-) diff --git a/data/campaigns/Descent_Into_Darkness/scenarios/08_A_Small_Favor2.cfg b/data/campaigns/Descent_Into_Darkness/scenarios/08_A_Small_Favor2.cfg index d07cdbd8f4b1..38d6ffc6b801 100644 --- a/data/campaigns/Descent_Into_Darkness/scenarios/08_A_Small_Favor2.cfg +++ b/data/campaigns/Descent_Into_Darkness/scenarios/08_A_Small_Favor2.cfg @@ -4,14 +4,19 @@ id=08_A_Small_Favor2 name= _ "A Small Favor — Part 2" map_data="{campaigns/Descent_Into_Darkness/maps/08_A_Small_Favor2.map}" - {TURNS 30 27 25} + {TURNS 25 22 19} next_scenario=09_A_Small_Favor3 victory_when_enemies_defeated=no - {UNDERGROUND} + [time] + id=indoors + name= _ "Indoors" + image=misc/time-schedules/schedule-indoors.png + lawful_bonus=-10 + [/time] - {SCENARIO_MUSIC loyalists.ogg} - {EXTRA_SCENARIO_MUSIC the_king_is_dead.ogg} + {SCENARIO_MUSIC casualties_of_war.ogg} + {EXTRA_SCENARIO_MUSIC battle.ogg} {EXTRA_SCENARIO_MUSIC siege_of_laurelmor.ogg} # No story; this occurs immediately after the previous scenario @@ -44,9 +49,21 @@ no_leader=yes hidden=yes - # A guard - {NAMED_NOTRAIT_UNIT 2 (Halberdier) 10 4 () ( _ "Guard")} {GUARDIAN} + [ai] + village_value=0 + aggression=0.8 + [/ai] + [/side] + # City guard + [side] + side=3 + controller=ai + team_name=defenders + user_team_name= _ "Defenders" + no_leader=yes + hidden=yes + color=green [ai] village_value=0 aggression=0.8 @@ -56,7 +73,44 @@ # This macro places the doors and adds the door-opening event {MANOR_DOORS 1} - #TODO: Create some scenery (fire, torches, ...) + # Scenery + {PLACE_IMAGE items/ankh-necklace.png 3 15} + {PLACE_IMAGE items/ball-blue.png 2 10} + {PLACE_IMAGE items/ball-magenta.png 25 2} + {PLACE_IMAGE items/ball-green.png 8 2} + {PLACE_IMAGE items/stone-tablet.png 6 16} + {PLACE_IMAGE items/stone-tablet.png 15 13} + {PLACE_IMAGE items/ankh-necklace.png 3 15} + {PLACE_IMAGE items/ornate2.png 17 1} + {PLACE_IMAGE items/potion-blue.png 26 4} + {PLACE_IMAGE items/potion-grey.png 27 5} + {PLACE_IMAGE items/potion-green.png 27 6} + {PLACE_IMAGE items/potion-red.png 25 6} + {PLACE_IMAGE items/potion-yellow.png 26 6} + {PLACE_IMAGE items/altar-evil.png 26 5} + {PLACE_IMAGE items/barrel.png 24 10} + {PLACE_IMAGE items/barrel.png 25 10} + {PLACE_IMAGE items/barrel.png 22 9} + {PLACE_IMAGE items/box.png 25 9} + {PLACE_IMAGE items/box.png 22 11} + {PLACE_IMAGE items/box.png 21 12} + {PLACE_IMAGE items/box.png 9 7} + {PLACE_IMAGE items/chest-open.png 8 7} + {PLACE_IMAGE items/chest-plain-open.png 9 9} + {PLACE_IMAGE items/barrel.png 8 9} + {PLACE_IMAGE items/altar.png 15 2} + {PLACE_IMAGE items/holy-water.png 17 1} + {PLACE_IMAGE items/holy-water.png 18 1} + {PLACE_IMAGE items/ring-white.png 13 3} + {PLACE_IMAGE items/ring-red.png 24 1} + + {PLACE_IMAGE items/dragonstatue.png 11 12} + {PLACE_IMAGE items/dragonstatue.png 10 12} + {PLACE_IMAGE items/dragonstatue.png 21 3} + {PLACE_IMAGE scenery/monolith2.png 14 12} + {PLACE_IMAGE scenery/monolith3.png 13 15} + {PLACE_IMAGE scenery/monolith1.png 17 14} + {PLACE_IMAGE scenery/monolith1.png 17 14} [event] name=prestart @@ -65,7 +119,7 @@ side=1 [objective] condition=win - description= _ "Find the mage Lord Karres" + description= _ "Find mage Lord Karres" [/objective] [objective] condition=lose @@ -91,26 +145,26 @@ variable=random [case] value=0 - {VARIABLE karres_x 10} - {VARIABLE karres_y 18} + {VARIABLE karres_x 1} + {VARIABLE karres_y 11} [/case] [case] value=1 - {VARIABLE karres_x 3} - {VARIABLE karres_y 11} + {VARIABLE karres_x 8} + {VARIABLE karres_y 1} [/case] [case] value=2 - {VARIABLE karres_x 14} + {VARIABLE karres_x 13} {VARIABLE karres_y 3} [/case] [case] value=3 - {VARIABLE karres_x 28} - {VARIABLE karres_y 3} + {VARIABLE karres_x 24} + {VARIABLE karres_y 1} [/case] [/switch] @@ -138,6 +192,9 @@ [value] type=Heavy Infantryman [/value] + [value] + type=Shock Trooper + [/value] [value] type=Spearman [/value] @@ -147,24 +204,45 @@ [value] type=Fencer [/value] + [value] + type=Fencer + [/value] + [value] + type=Duelist + [/value] [value] type=Pikeman [/value] [value] type=Swordsman [/value] +#ifndef EASY + [value] + type=Swordsman + [/value] + [value] + type=Duelist + [/value] +#endif +#ifdef HARD + [value] + type=Swordsman + [/value] + [value] + type=Pikeman + [/value] + [value] + type=Duelist + [/value] +#endif [/set_variables] [random_placement] - num_items=8 + num_items={ON_DIFFICULTY 5 6 7} variable=loc - min_distance=4 + min_distance=3 [filter_location] - terrain=Iwr - [not] - x,y=20,20 - radius=6 - [/not] + terrain=Iwr,Icn,Ior [not] x=1-5 y=1-5 @@ -174,12 +252,16 @@ [/not] [/filter_location] [command] - {NAMED_NOTRAIT_UNIT 2 "$guardtypetable[$($loc.n % $guardtypetable.length)].type" $loc.x $loc.y () (_ "Guard")} {GUARDIAN} + [set_variable] + name=ind + rand=1..$guardtypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {NAMED_NOTRAIT_UNIT 2 "$guardtypetable[$ind].type" $loc.x $loc.y () (_ "Guard")} {GUARDIAN} + {CLEAR_VARIABLE ind} [/command] [/random_placement] - {CLEAR_VARIABLE guardtypetable} - [set_variables] name=magetypetable [value] @@ -191,6 +273,12 @@ [value] type=Mage [/value] + [value] + type=Mage + [/value] + [value] + type=Mage + [/value] [value] type=White Mage [/value] @@ -202,41 +290,96 @@ [/value] #ifndef EASY [value] - type=Silver Mage + type=White Mage + [/value] + [value] + type=Red Mage + [/value] +#endif +#ifdef HARD + [value] + type=White Mage + [/value] + [value] + type=Red Mage + [/value] + [value] + type=Red Mage [/value] #endif [/set_variables] [random_placement] - num_items={ON_DIFFICULTY 12 14 16} + num_items={ON_DIFFICULTY 6 7 8} variable=loc min_distance=2 [filter_location] - terrain=Iwr - [not] - x,y=20,20 - radius=6 - [/not] + terrain=Iwr,Icn,Ior [not] x=1-5 y=1-5 [/not] [not] - [filter_adjacent_location] - terrain=!,Iwr - [/filter_adjacent_location] + [filter][/filter] [/not] [/filter_location] [command] - {GENERIC_UNIT 2 "$magetypetable[$($loc.n % $magetypetable.length)].type" $loc.x $loc.y} + [set_variable] + name=ind + rand=1..$magetypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 2 "$magetypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} [/command] [/random_placement] +#ifdef EASY + [set_variable] + name=S7_turns + value=$(min(7,($S7_turns))) + [/set_variable] + [set_variable] + name=spawn1 + value=$("7 + ($S7_turns)") + [/set_variable] + [set_variable] + name=spawn2 + value=$("14 + ($S7_turns)") + [/set_variable] +#endif +#ifdef NORMAL + [set_variable] + name=S7_turns + value=$(min(6,($S7_turns))) + [/set_variable] + [set_variable] + name=spawn1 + value=$("6 + ($S7_turns)") + [/set_variable] + [set_variable] + name=spawn2 + value=$("12 + ($S7_turns)") + [/set_variable] +#endif +#ifdef HARD + [set_variable] + name=S7_turns + value=$(min(5,($S7_turns))) + [/set_variable] + [set_variable] + name=spawn1 + value=$("5 + ($S7_turns)") + [/set_variable] + [set_variable] + name=spawn2 + value=$("10 + ($S7_turns)") + [/set_variable] +#endif - {CLEAR_VARIABLE magetypetable} [recall] id=Darken Volk - x,y=20,17 + x,y=18,15 [/recall] # We want Volk facing another direction @@ -291,31 +434,473 @@ [message] speaker=narrator image=wesnoth-icon.png - message= _ "Malin and Darken Volk enter the mage lord’s manor, quickly closing the heavy gates behind them." + message= _ "Malin and Darken Volk enter the mage lord’s manor, closing the heavy gates behind them." + [/message] + + [message] + speaker=Darken Volk + message= _ "That gate will not hold back the soldiers for long. We must hurry." [/message] + [/event] + + [event] + name=sighted + [filter] + side=2 + [/filter] + [filter_second] + side=1 + [/filter_second] + + [message] + speaker=unit + message= _ "Undead have entered the manor! Defend yourselves!" + [/message] + [/event] + + # City guard spawns + + [event] + name=new turn + first_time_only=yes + [filter_condition] + [variable] + name=turn_number + numerical_equals=$S7_turns + [/variable] + [/filter_condition] + + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$guardtypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$guardtypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + + [fire_event] + name=city guard dialogue + [/fire_event] + [/event] + + [event] + name=new turn + first_time_only=no + [filter_condition] + [variable] + name=turn_number + greater_than=$S7_turns + [/variable] + [/filter_condition] + + {RANDOM 0..3} + [if] + [variable] + name=random + greater_than=2 + [/variable] + [then] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$guardtypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$guardtypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$magetypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$magetypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [/then] + [/if] + [/event] + + [event] + name=new turn + first_time_only=no + [filter_condition] + [variable] + name=turn_number + greater_than=$spawn1 + [/variable] + [/filter_condition] + + {RANDOM 0..2} + [if] + [variable] + name=random + greater_than=1 + [/variable] + [then] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$guardtypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$guardtypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$magetypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$magetypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [fire_event] + name=city guard dialogue2 + [/fire_event] + [/then] + [/if] + [/event] + [event] + name=new turn + first_time_only=no + [filter_condition] + [variable] + name=turn_number + greater_than=$spawn2 + [/variable] + [/filter_condition] + + {RANDOM 0..11} + [if] + [variable] + name=random + greater_than=6 + [/variable] + [then] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$guardtypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$guardtypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [random_placement] + num_items=1 + variable=loc + min_distance=1 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [not] + [filter][/filter] + [/not] + [/filter_location] + [command] + [set_variable] + name=ind + rand=1..$magetypetable.length + [/set_variable] + {VARIABLE_OP ind sub 1} + {GENERIC_UNIT 3 "$magetypetable[$ind].type" $loc.x $loc.y} + {CLEAR_VARIABLE ind} + [/command] + [/random_placement] + [fire_event] + name=city guard dialogue2 + [/fire_event] + [fire_event] + name=city guard dialogue3 + [/fire_event] + [/then] + [/if] + [/event] + + [event] + name=city guard dialogue + + [message] + side=3 + [filter_location] + x=22,23,21-26 + y=18,18,19-20 + [/filter_location] + message= _ "Hunt down the undead! Destroy them all!" + [/message] + [message] + speaker=Darken Volk + message= _ "The city guard has entered the manor. We will have to hold them off while we search." + [/message] + [/event] + [event] + name=city guard dialogue2 + + [message] + speaker=Darken Volk + message= _ "More guards are coming. We must hasten our search!" + [/message] + [/event] + [event] + name=city guard dialogue3 [message] speaker=Malin Keshar - message= _ "That gate won’t hold back the soldiers for more than a few hours. We’d better hurry." + message= _ "It does not look like we have much time left!" [/message] [/event] + # Flavor text + + [event] + name=moveto + [filter] + x,y=15,13 + side=1 + [/filter] + [message] + speaker=narrator + message= _ "The only thing we have to fear is fear itself." + image=wesnoth-icon.png + [/message] + [delay] + time=350 + [/delay] + [sound] + name=wail-long.wav + [/sound] + [delay] + time=350 + [/delay] + [message] + speaker=narrator + message= _ "... nameless, unreasoning, unjustified terror..." + image=attacks/wail.png + [/message] + [allow_undo][/allow_undo] + [/event] + [event] + name=moveto + [filter] + x,y=6,16 + side=1 + [/filter] + [message] + speaker=narrator + message= _ "There is nothing good or bad, but thinking makes it so." + image=wesnoth-icon.png + [/message] + [allow_undo][/allow_undo] + [/event] [event] - name=die + name=moveto + [filter] + x,y=2,10 + side=1 + [/filter] + [message] + speaker=narrator + message= _ "Mirrors of shallow blue, they stare, +Piercing, unblinking, a pitiless reflection, +Shattering our brittle, fancied reality." + image=wesnoth-icon.png + [/message] + [allow_undo][/allow_undo] + [/event] + [event] + name=moveto + [filter] + x,y=8,2 + side=1 + [/filter] + [message] + speaker=narrator + message= _ "Emerald, verdant green gives way, +Touched by shadow, the dark dye of black, +A fetid stain of pestilence." + image=wesnoth-icon.png + [/message] + [allow_undo][/allow_undo] + [/event] + [event] + name=moveto + [filter] + x,y=25,2 + side=1 + [/filter] + [message] + speaker=narrator + message= _ "Crimson pool, the essence of life, +Flesh and blood flow away to rot, +Leaving only bones to remain." + image=wesnoth-icon.png + [/message] + [allow_undo][/allow_undo] + [/event] + + # Lord Karres + + [event] + name=sighted [filter] id=Lord Karres [/filter] + [filter_second] + side=1 + [/filter_second] + + [message] + speaker=Lord Karres + message= _ "Darken Volk! I should have known it was you! What are you doing here?" + [/message] + [message] + speaker=Darken Volk + message= _ "Taking back what is rightfully mine." + [/message] + [message] + speaker=Lord Karres + message= _ "As impudent as ever. What lies in that book is not meant for human eyes — yours or mine." + [/message] + [message] + speaker=Darken Volk + message= _ "I am not here to argue." + [/message] + [message] + speaker=Lord Karres + message= _ "Of course you are not. I assume your arrogance has only grown over the years." + [/message] + [message] + speaker=Darken Volk + message= _ "If you wish to continue lecturing me, by all means, do so. It will only make you easier to kill." + [/message] + [message] + speaker=Lord Karres + message= _ "I regret that it has come to this." + [/message] + [/event] + + [event] + name=moveto + [filter] + x,y=26,5 + side=1 + [/filter] + [message] + speaker=Darken Volk + message= _ "Someone was... messing... with some potions here." + [/message] + [/event] + + [event] + name=last breath + [filter] + id=Lord Karres + [/filter] + + [message] + speaker=Lord Karres + message= _ "How... dare you..." + [/message] + [message] + speaker=Darken Volk + message= _ "Cease your prattle, you decrepit old man." + [/message] + + [kill] + id=Lord Karres + animate=yes + fire_event=yes + [/kill] {QUAKE rumble.ogg} [terrain] - x,y=5,4 + x=6,7 + y=4,4 terrain=Iwr [/terrain] + [redraw][/redraw] [message] speaker=Darken Volk - message= _ "I feel the breaking of an illusion spell. The book must be in the great hall, in the northwest corner of the manor. Let us move quickly now!" + message= _ "I feel the breaking of an illusion spell. The book is in the great hall, in the northwest corner of the manor. Let us move quickly!" [/message] [objectives] @@ -340,18 +925,19 @@ [event] name=moveto [filter] - x,y=1,1 + x,y=1-3,1-3 id=Malin Keshar,Darken Volk [/filter] [message] speaker=unit - message=_ "I think I found the passage to the great hall. Follow me quickly!" + message=_ "I found the passage to the great hall!" [/message] [endlevel] result=victory bonus=no + linger_mode=no {NEW_GOLD_CARRYOVER 100} carryover_report=no [/endlevel] @@ -361,7 +947,14 @@ # should carry over to the next scenario. [event] name=victory + {SET_GOT_INSIDE_MANOR} + {CLEAR_VARIABLE guardtypetable} + {CLEAR_VARIABLE magetypetable} + {CLEAR_VARIABLE random} + {CLEAR_VARIABLE S7_turns} + {CLEAR_VARIABLE spawn1} + {CLEAR_VARIABLE spawn2} [/event] {HERODEATH_MALIN}