#textdomain wesnoth-sof [scenario] name= _ "Closing the Gates" id=2_Closing_the_Gates turns=15 map_data="{campaigns/Sceptre_of_Fire/maps/2_Closing_the_Gates.map}" next_scenario=2t_In_the_Dwarven_City victory_when_enemies_defeated=no {SCENARIO_MUSIC battle.ogg} {EXTRA_SCENARIO_MUSIC the_city_falls.ogg} {DEFAULT_SCHEDULE} [side] type=Dwarvish Fighter id=Rugnur side=1 canrecruit=yes shroud=yes controller=human recruit=Dwarvish Fighter,Dwarvish Thunderer,Dwarvish Guardsman,Dwarvish Scout team_name=dwarves user_team_name= _ "Dwarves" {FLAG_VARIANT knalgan} [/side] # Give Rugnur control of all the non-boneyard villages inside the cave. # Trolls are going to take a couple of these fairly quickly. {STARTING_VILLAGES_AREA 1 14 11 3} {STARTING_VILLAGES_AREA 1 26 11 6} [side] type=Elvish Captain id=Glindur name= _ "Glindur" side=2 canrecruit=yes {RECRUIT (Elvish Fighter,Elvish Scout,Elvish Archer,Elvish Shaman) (Elvish Fighter,Elvish Hero,Elvish Scout,Elvish Archer,Elvish Shaman) (Elvish Fighter,Elvish Hero,Elvish Scout,Elvish Archer,Elvish Ranger,Elvish Shaman)} {GOLD 200 250 300} team_name=elves user_team_name= _ "Elves" [ai] grouping=offensive [/ai] {FLAG_VARIANT wood-elvish} [/side] [side] no_leader=yes side=3 team_name=trolls user_team_name= _ "Trolls" [/side] [story] [part] story= _ "Next in our story, Rugnur retreated into the caves of Knalga. But the elves pressed on, and would enter the caves shortly." [/part] [/story] {BIGMAP_02} {SOF_DEATHS} [event] name=prestart # {SCATTER_IMAGE (terrain=Gg) 1 scenery/snowbits.png} [objectives] side=1 [objective] description= _ "Place someone on each of the six magic glyphs in order to close the dwarvish gates" condition=win [/objective] [objective] description= _ "Kill all elves in the caves after the gates are closed" condition=win [/objective] [objective] description= _ "Death of Rugnur" condition=lose [/objective] [objective] description= _ "Death of Baglur" condition=lose [/objective] {TURNS_RUN_OUT} [gold_carryover] bonus=yes carryover_percentage=40 [/gold_carryover] [/objectives] [kill] side=1 type=Caravan [/kill] # stores all the locations outside the gate into an array, so checks for # whether there are units still outside don't require maintaining a # static set of coordinates [store_locations] x,y=10,20 radius=20 [filter_radius] [not] terrain=X* [/not] [not] x=12,13,14 y=12,13,13 [/not] [not] x=2,21 y=6,24 [/not] [/filter_radius] variable=locations_outside [/store_locations] [remove_shroud] find_in=locations_outside side=1 [/remove_shroud] {GENERIC_UNIT 3 "Troll Whelp" 6 3} {GENERIC_UNIT 3 "Troll Whelp" 6 3} {GENERIC_UNIT 3 "Troll Whelp" 6 3} {GENERIC_UNIT 3 "Troll Whelp" 30 25} {GENERIC_UNIT 3 "Troll Whelp" 30 25} {GENERIC_UNIT 3 "Troll Whelp" 30 25} #ifdef HARD {GENERIC_UNIT 3 "Troll Whelp" 30 25} #endif #ifdef NORMAL {GENERIC_UNIT 3 "Troll Whelp" 30 25} #endif [/event] [event] name=start {MOVE_UNIT id=Rugnur 22 12} [recall] id=Alanin [/recall] [redraw] side=1 [/redraw] [message] speaker=Rugnur message= _ "These elves are right behind me! We have to go warn the council of this attack...!" [/message] [message] speaker=Alanin message= _ "Here — I’ll go warn the council. You stay here and fight." [/message] [message] speaker=Rugnur message= _ "Yes, that sounds good. I’ll stay here and try to defend the gates..." [/message] {MOVE_UNIT id=Alanin 32 12} [store_unit] [filter] id=Alanin [/filter] variable=changealanin kill=yes [/store_unit] [message] speaker=Glindur message= _ "I see you have sent a messenger to the city. Good idea, but will it really help? We have more troops and more provisions, and we are going to enter those caves and kill you!" [/message] [message] speaker=Rugnur message= _ "(Gulp)" [/message] [message] speaker=Glindur message= _ "Ha! I thought as much. Well then, surrender!" [/message] [message] speaker=Rugnur message= _ "Um... on what terms?" [/message] [message] speaker=Glindur message= _ "Unconditional." [/message] {GENERIC_UNIT 1 "Dwarvish Guardsman" 10 13} {GENERIC_UNIT 1 "Dwarvish Guardsman" 14 15} {GENERIC_UNIT 1 "Dwarvish Guardsman" 12 11} {GENERIC_UNIT 1 "Dwarvish Guardsman" 15 13} #ifdef EASY {GENERIC_UNIT 1 "Dwarvish Guardsman" 12 14} #endif [unit] x,y=22,11 type=Dwarvish Stalwart side=1 id=Baglur name= _ "Baglur" {IS_HERO} profile=portraits/baglur.png facing=sw [modifications] {TRAIT_LOYAL} {TRAIT_RESILIENT} [/modifications] [/unit] [redraw] side=1 [/redraw] [message] speaker=Baglur message= _ "Wait! Rugnur, dinna’ they tell you anything when you took command here?!" [/message] [message] speaker=Rugnur message= _ "Not really. This was supposedly a time of peace. Who are you?" [/message] [message] speaker=Baglur message= _ "Argh! I’m a retired warrior... it looks like I’ll ha’ to come out and help you, else we’ll be overrun by the damn elves... argh again. Well, listen here. This entrance to the city can be closed. There’s a gate. If we can close it, the elves will no’ be able to enter. And you elves; begone from here!" [/message] [message] speaker=Glindur message= _ "Cease your meddling, old dwarf! Rugnur is in charge here, and it is he who will bargain with us." [/message] [message] speaker=Rugnur message= _ "Baglur, how do you close the gates?" [/message] [message] speaker=Baglur message= _ "Och, well that’s the difficulty. It’s a magic gate. Indestructible. But that means it can only be closed by magic. Ye need to position a warrior on each of the six glyphs. When all are occupied, the gates wi’ close. Then the elves will be shut out of the caves forever, at least through this entrance." [/message] [message] speaker=Rugnur message= _ "Don’t we have troops positioned near these glyphs, to unlock them?" [/message] [message] speaker=Baglur message= _ "Och, well, no. Lately trolls have been more in charge of those caves where the glyphs are than we dwarves have." [/message] [message] speaker=Rugnur message= _ "Well, where are they located?" [/message] [message] speaker=Baglur message= _ "Two are down a side passage in the northwest, another two are in a similar location in the southeast, and two are right next to the front gate." [/message] [message] speaker=Glindur message= _ "Have you made up your mind yet about surrendering? If you will not give up, prepare for battle!" [/message] [message] speaker=Rugnur # wmllint: local spelling stonecraft message= _ "You may be more powerful than us, but I doubt even you can blast through dwarf-made stonecraft. We refuse — now let’s close these gates!" [/message] [set_variables] name=glyphs [value] x,y=9,11 image_off=scenery/rune1.png image_on=scenery/rune1-glow.png [/value] [value] x,y=14,3 image_off=scenery/rune2.png image_on=scenery/rune2-glow.png [/value] [value] x,y=30,19 image_off=scenery/rune3.png image_on=scenery/rune3-glow.png [/value] [value] x,y=17,15 image_off=scenery/rune4.png image_on=scenery/rune4-glow.png [/value] [value] x,y=3,5 image_off=scenery/rune1.png image_on=scenery/rune1-glow.png toggles_x=2 toggles_y=6 [/value] [value] x,y=23,24 image_off=scenery/rune2.png image_on=scenery/rune2-glow.png toggles_x=21 toggles_y=24 [/value] [/set_variables] {FOREACH glyphs i} [item] x,y=$glyphs[$i].x,$glyphs[$i].y image=$glyphs[$i].image_off [/item] {NEXT i} [/event] # These macros toggle a glyph on the given location on or off #define GLYPH_ON X Y {FOREACH glyphs glyph_i} [if] [variable] name=glyphs[$glyph_i].x numerical_equals={X} [/variable] [variable] name=glyphs[$glyph_i].y numerical_equals={Y} [/variable] [then] [remove_item] x,y={X},{Y} image=$glyphs[$glyph_i].image_off [/remove_item] [item] x,y={X},{Y} image=$glyphs[$glyph_i].image_on [/item] [if] [variable] name=glyphs[$glyph_i].toggles_x not_equals=$empty [/variable] [then] [sound] name=rumble.ogg [/sound] [terrain] x,y=$glyphs[$glyph_i].toggles_x,$glyphs[$glyph_i].toggles_y terrain=Xu [/terrain] [/then] [/if] [/then] [/if] {NEXT glyph_i} #enddef #define GLYPH_OFF X Y {FOREACH glyphs glyph_i} [if] [variable] name=glyphs[$glyph_i].x numerical_equals={X} [/variable] [variable] name=glyphs[$glyph_i].y numerical_equals={Y} [/variable] [then] [remove_item] x,y={X},{Y} image=$glyphs[$glyph_i].image_on [/remove_item] [item] x,y={X},{Y} image=$glyphs[$glyph_i].image_off [/item] [if] [variable] name=glyphs[$glyph_i].toggles_x not_equals=$empty [/variable] [then] [sound] name=rumble.ogg [/sound] [terrain] x,y=$glyphs[$glyph_i].toggles_x,$glyphs[$glyph_i].toggles_y terrain=Cud [/terrain] [/then] [/if] [/then] [/if] {NEXT glyph_i} #enddef # We reach the northern side entrance [event] name=moveto [filter] x,y=3,5 side=1 [/filter] [message] speaker=unit message= _ "But what about this entrance? The elves can come through it just as easily as the main gate, and it cannot be closed!" [/message] [message] speaker=Baglur message= _ "I think it can be sealed up somehow... Yes, look, activating that glyph seems to have closed up the gap." [/message] [/event] # We reach the southern side entrance [event] name=moveto [filter] x,y=23,24 side=1 [/filter] [message] speaker=unit message= _ "But what about this entrance? The elves can come through it just as easily as the main gate, and it cannot be closed!" [/message] [message] speaker=Baglur message= _ "I think it can be sealed up somehow... Yes, look, activating that glyph seems to have closed up the gap." [/message] [/event] # Check for all glyph activators in place [event] name=moveto first_time_only=no [filter] side=1 [filter_location] find_in=glyphs [/filter_location] [/filter] [filter_condition] [variable] name=gate_closed boolean_equals=no [/variable] [/filter_condition] {GLYPH_ON $x1 $y1} [if] [have_unit] side=1 [filter_location] find_in=glyphs [/filter_location] count=6 [/have_unit] [then] {VARIABLE gate_closed yes} [message] speaker=Rugnur message= _ "We have everyone positioned on the glyphs! What do we do now?" [/message] [message] speaker=Baglur message= _ "Just watch. The gates wi’ close very soon. Then the elves outside — and, unfortunately, our dwarves who are still out there — wi’ become irrelevant." [/message] [scroll_to] x,y=13,13 [/scroll_to] [sound] name=rumble.ogg [/sound] [terrain] x=12,13,14 y=12,13,13 terrain=^Xo layer=overlay [/terrain] [redraw][/redraw] [kill] x=12,13,14 y=12,13,13 animate=yes fire_event=yes [/kill] [delay] time=2000 [/delay] [message] speaker=Glindur message= _ "Agh! Well, you have defeated me for now, but eventually you will have to exit these caves, to give Haldric back his jewel. And when you do, we will be ready for you." [/message] [message] speaker=Baglur message= _ "If that is what ye choose to do, fine, but be prepared to wait for many years." [/message] [kill] [filter_location] find_in=locations_outside [/filter_location] side=1 fire_event=yes animate=yes [/kill] [kill] [filter_location] find_in=locations_outside [/filter_location] side=2,3 fire_event=no [/kill] [place_shroud] find_in=locations_outside [not] x=10, 11, 12, 13, 14 y=13,13-14,13-14,14-15,14-15 [/not] side=1 [/place_shroud] [if] [have_unit] side=2 [/have_unit] [then] [message] speaker=Rugnur message= _ "There are still some elves left in here. We have to eliminate them, too, unless they surrender." [/message] [message] side=2 message= _ "You would have us be cowards! We do not surrender." [/message] [objectives] side=1 [objective] description= _ "Kill all elves in the caves" condition=win [/objective] [objective] description= _ "Death of Rugnur" condition=lose [/objective] [objective] description= _ "Death of Baglur" condition=lose [/objective] {TURNS_RUN_OUT} [gold_carryover] bonus=yes carryover_percentage=40 [/gold_carryover] [/objectives] [/then] [else] [message] speaker=Rugnur message= _ "Well, now I should go down to the city and report. I’m late already..." [/message] [endlevel] result=victory bonus=yes {NEW_GOLD_CARRYOVER 40} [/endlevel] [/else] [/if] [/then] [else] [message] speaker=unit message= _ "My glyph is on." [/message] [allow_undo] [/allow_undo] [/else] [/if] [/event] # Toggles a glyph off when the player steps off it [event] name=moveto first_time_only=no [filter] side=1 [filter_location] [not] find_in=glyphs [/not] [/filter_location] [/filter] [filter_condition] [variable] name=gate_closed boolean_equals=no [/variable] [have_location] x,y=$x2,$y2 find_in=glyphs [/have_location] [/filter_condition] {GLYPH_OFF $x2 $y2} [/event] # Toggles a glyph off when the player unit on it dies [event] name=die first_time_only=no [filter] side=1 [filter_location] find_in=glyphs [/filter_location] [/filter] [filter_condition] [variable] name=gate_closed boolean_equals=no [/variable] [/filter_condition] {GLYPH_OFF $x1 $y1} [/event] # This triggers either when the remaining elves in the caves after the gate # is closed are killed or when all elves are killed before the gate is # closed (unlikely) [event] name=die first_time_only=no [filter] side=2 [/filter] [if] [not] [have_unit] side=2 [not] x,y=$x1,$y1 [/not] [/have_unit] [/not] [then] [message] speaker=Rugnur message= _ "That’s all of the elves. Now I should go down to the city and report. I’m late already..." [/message] [endlevel] result=victory bonus=yes {NEW_GOLD_CARRYOVER 40} [/endlevel] [/then] [/if] [/event] [event] name=victory {CLEAR_VARIABLE glyphs,glyph_i,locations_outside,gate_closed} [/event] [event] name=die [filter] id=Baglur [/filter] [endlevel] result=defeat [/endlevel] [/event] # These handle the graphics for the gate. Normally, the gate is drawn in the # "down" position, and after the impassable overlay ^Xo has been placed on # the gate, an animated version will be drawn, displaying the gate closing. # The map= and images are drawn relative to 11,11. [terrain_graphics] x,y=11,11 map=" *, *, * , *, *, * *, *, * , 1, *, * *, 2, * , *, 3, * *, *, * , *, *, *" [tile] pos=1 x,y=1,1 type=!,*^Xo [/tile] [tile] pos=2 x,y=2,2 type=!,*^Xo [/tile] [tile] pos=3 x,y=3,2 type=!,*^Xo [/tile] [image] name=gate-left-down.png base=90,144 [/image] [image] name=gate-middle-down.png base=144,180 [/image] [image] name=gate-right-down.png base=196,216 [/image] [/terrain_graphics] [terrain_graphics] x,y=11,11 map=" *, *, * , *, *, * *, *, * , 1, *, * *, 2, * , *, 3, * *, *, * , *, *, *" [tile] pos=1 x,y=1,1 type=*^Xo [/tile] [tile] pos=2 x,y=2,2 type=*^Xo [/tile] [tile] pos=3 x,y=3,2 type=*^Xo [/tile] # Technically, these animations loop, but only about once per 15 minutes # so the user should see the loop very rarely. [image] name=gate-left-rising-1.png:500,gate-left-rising-2.png:500,gate-left-rising-3.png:500,gate-left-up.png:50000,gate-left-up.png:50000,gate-left-up.png:50000,gate-left-up.png:50000 base=90,144 [/image] [image] name=gate-middle-rising-1.png:500,gate-middle-rising-2.png:500,gate-middle-rising-3.png:500,gate-middle-up.png:50000,gate-middle-up.png:50000,gate-middle-up.png:50000,gate-middle-up.png:50000 base=144,180 [/image] [image] name=gate-right-rising-1.png:500,gate-right-rising-2.png:500,gate-right-rising-3.png:500,gate-right-up.png:50000,gate-right-up.png:50000,gate-right-up.png:50000,gate-right-up.png:50000 base=196,216 [/image] [/terrain_graphics] [/scenario]