From befe76a519b03049bb187523c4a42502cd393da7 Mon Sep 17 00:00:00 2001 From: Jan Rietema Date: Thu, 27 Mar 2008 17:07:40 +0000 Subject: [PATCH] Long March rebalancing: - added a (small) encampment - less ambushers - reduced ambush range for activation of nearby units - undead and elves now fight each other --- .../maps/6b_The_Long_March.map | 4 +- .../scenarios/06b_The_Long_March.cfg | 539 ++++++++++-------- 2 files changed, 296 insertions(+), 247 deletions(-) diff --git a/data/campaigns/The_South_Guard/maps/6b_The_Long_March.map b/data/campaigns/The_South_Guard/maps/6b_The_Long_March.map index 396af84c52b..705ba65bd06 100644 --- a/data/campaigns/The_South_Guard/maps/6b_The_Long_March.map +++ b/data/campaigns/The_South_Guard/maps/6b_The_Long_March.map @@ -47,8 +47,8 @@ Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Rd Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Hh , Hh , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Rp , Hh , Mm , Hh , Gs^Fp , Gs^Fp , Ss , Ww , Ww , Ww , Ss , Gg , Gg , Gs^Fp , Gs^Fp , Re , Gg , Gs^Fp , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Mm , Hh , Hh , Gg , Hh , Hh , Gs^Fp , Rp , Rp , Hh , Hh , Hh , Gs^Fp , Ss , Gs^Fp , Ww , Ss , Ss , Gs^Fp , Gs^Fp , Re , Re , Gg , Gg , Gs^Fp , Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp Gs^Fp , Gs^Fp , Gg , Gs^Fp , Hh , Mm , Mm , Mm , Mm , Hh , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Gs^Fp , Hh , Ss , Ss , Gg , Ww , Ss , Gg , Gs^Fp , Gs^Fp , Re , Gg , Gg , Gs^Fp , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp -Gs^Fp , Gs^Fp , Hh , Gg , Hh , Mm , Mm , Mm , Mm , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Rp , Gs^Fp , Rp , Rp , Gs^Fp , Gs^Fp , Ss , Ss , Ss , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Re , Gg , 1 Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp -Hh , Hh , Hh , Hh , Hh , Mm , Mm , Mm , Mm , Gs^Fp , Gg , Gs^Fp , Rd , Gs^Fp , Ss , Gs^Fp , Gs^Fp , Rd , Rp , Gs^Fp , Rd , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Re , Re , Gs^Fp , Gg , Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp +Gs^Fp , Gs^Fp , Hh , Gg , Hh , Mm , Mm , Mm , Mm , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Rp , Gs^Fp , Rp , Rp , Gs^Fp , Gs^Fp , Ss , Ss , Ss , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Re , Gg , 1 Ke , Ce , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp +Hh , Hh , Hh , Hh , Hh , Mm , Mm , Mm , Mm , Gs^Fp , Gg , Gs^Fp , Rd , Gs^Fp , Ss , Gs^Fp , Gs^Fp , Rd , Rp , Gs^Fp , Rd , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Re , Re , Ce , Gs^Fp , Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp Hh , Hh , Hh , Hh , Mm , Mm , Hh , Mm , Hh , Hh , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Ss , Ss , Ss , Gs^Fp , Gs^Fp , Rp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Re , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp Hh , Hh , Hh , Hh , Hh , Mm , Hh , Hh , Gs^Fp , Gs^Fp , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Ss , Ss , Ss^Vhs , Ss , Ss , Gs^Fp , Gs^Fp , Gs^Fp , Ss , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Re , Re , Gg , Gs^Fp , Gg , Gs^Fp , Gs^Fp , Gs^Fp Hh , Hh , Hh , Hh , Hh , Hh , Hh , Gg , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gg , Gs^Fp , Ss , Ss , Ss , Ss , Ss , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Re , Gs^Fp , Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp diff --git a/data/campaigns/The_South_Guard/scenarios/06b_The_Long_March.cfg b/data/campaigns/The_South_Guard/scenarios/06b_The_Long_March.cfg index a1f36df74ec..e99e640e39b 100644 --- a/data/campaigns/The_South_Guard/scenarios/06b_The_Long_March.cfg +++ b/data/campaigns/The_South_Guard/scenarios/06b_The_Long_March.cfg @@ -4,9 +4,15 @@ name= _ "The Long March" next_scenario=7b_Pebbles_In_The_Flood - - {SCENARIO_MUSIC nunc_dimittis.ogg} - {EXTRA_SCENARIO_MUSIC knolls.ogg} + [music] + name=revelation.ogg + ms_before=500 + [/music] + [music] + name=northerners.ogg + ms_before=500 + append=yes + [/music] map_data="{campaigns/The_South_Guard/maps/6b_The_Long_March.map}" @@ -18,6 +24,8 @@ {DAWN} {MORNING} {AFTERNOON} + + {VICTORY_AND_DEFEAT_MUSIC} victory_when_enemies_defeated=no turns=40 @@ -27,8 +35,8 @@ [side] side=1 type=Horseman Commander - id=Deoran - name= _ "Deoran" + description=Deoran + user_description= _ "Deoran" unrenamable=yes team_name=South_Guard controller=human @@ -46,38 +54,24 @@ recruit=Bowman, Spearman, Cavalryman, Thug, Footpad, Poacher [/side] - # This is a side for the elvish ambushers, who are still in hiding and will - # remain idle until discovered + # We're not using an extra side for the ambusher elves + # - they will be on the undead side by default (so the undead + # don't trigger ambushes), then change to the active elven side + # and are being stoned to prevent any action + # + # note: this means that elves can trigger ambushes, which should + # be treated as if they "ran for reinforcements" - thus these elves + # switch to their side just as if the player had triggered the ambush + # (this is a better solution than undead triggering ambushes, and + # should occur less often) + + # The Undead Hordes (Part II) [side] side=2 no_leader=yes - # problem: they have to be on the same team - # as the other elves, otherwise they get - # slaughtered by the active ambusher - # - # but they also have to be on the undead team - # otherwise they get slaughtered by those - # - # but that means that the undead and elves are - # all on the same side, which is a shame - team_name=elves - - controller=ai - - [ai] - ai_algorithm=idle_ai - [/ai] - [/side] - - # The Undead Hordes (Part II) - - [side] - side=3 - no_leader=yes - - team_name=elves + team_name=undead controller=ai {GOLD 10 20 30} @@ -94,13 +88,12 @@ [/ai] recruit=Vampire Bat [/side] - + # When discovering an ambusher, the ambusher will be moved to this side so # it may move and attack normally [side] - side=4 - colour=blue + side=3 no_leader=yes team_name=elves controller=ai @@ -115,39 +108,41 @@ [/ai] [/side] + #prestart [event] name=prestart {PLACE_IMAGE (items/gohere.png) 16 3} - {SG_GUARD (Naga Warrior) (Fssth) (_"Fssth") 4 9 14} + {SG_GUARD (Naga Warrior) (Fssth) (_"Fssth") 3 9 14} #ifdef NORMAL - {SG_GUARD (Naga Fighter) (Wizzi) (_"Wizzi") 4 10 14} + {SG_GUARD (Naga Fighter) (Wizzi) (_"Wizzi") 3 10 14} #endif #ifdef HARD - {SG_GUARD (Naga Warrior) (Wizzi) (_"Wizzi") 4 10 14} + {SG_GUARD (Naga Warrior) (Wizzi) (_"Wizzi") 3 10 14} #endif [recall] - id=Sir Gerrick + description=Sir Gerrick [/recall] [recall] - id=Minister Hylas + description=Minister Hylas [/recall] [recall] - id=Jarek + description=Jarek [/recall] [recall] - id=Urza Afalas + description=Urza Afalas [/recall] - + + # retrieve two units from the recall list # but with certain criteria # first: a swordsman - + [store_unit] variable=swordsman [filter] @@ -170,38 +165,39 @@ [/wml_filter] [/filter] [/store_unit] - + # pick the "best" unit # that is, the one with the highest damage + xp/4 # and a little random spice {VARIABLE best_score 0} {VARIABLE best_unit -1} {FOREACH swordsman i} - {VARIABLE dam $swordsman[$i].attack[0].damage} - {VARIABLE_OP dam multiply $swordsman[$i].attack[0].number} - {VARIABLE xp $swordsman[$i].experience} - {VARIABLE_OP xp divide 4} - {VARIABLE_OP dam add xp} - {RANDOM 0..6} - {VARIABLE_OP dam add $random} - [if] - [variable] - name=dam - greater_than=$best_score - [/variable] - [then] - {VARIABLE best_score $dam} - {VARIABLE best_unit $i} - [/then] - [/if] + {VARIABLE dam $swordsman[$i].attack[0].damage} + {VARIABLE_OP dam multiply $swordsman[$i].attack[0].number} + {VARIABLE xp $swordsman[$i].experience} + {VARIABLE_OP xp divide 4} + {VARIABLE_OP dam add xp} + {RANDOM 0..6} + {VARIABLE_OP dam add $random} + [if] + [variable] + name=dam + greater_than=$best_score + [/variable] + [then] + {VARIABLE best_score $dam} + {VARIABLE best_unit $i} + [/then] + [/if] {NEXT i} [recall] - id=$swordsman[$best_unit].id + description=$swordsman[$best_unit].description [/recall] {CLEAR_VARIABLE swordsman} - + + # now an archer - + [store_unit] variable=archer [filter] @@ -225,36 +221,37 @@ [/wml_filter] [/filter] [/store_unit] - + # pick the "best" unit # that is, the one with the highest damage + xp/4 # and a little random spice {VARIABLE best_score 0} {VARIABLE best_unit -1} {FOREACH archer i} - {VARIABLE dam $archer[$i].attack[1].damage} - {VARIABLE_OP dam multiply $archer[$i].attack[1].number} - {VARIABLE xp $archer[$i].experience} - {VARIABLE_OP xp divide 4} - {VARIABLE_OP dam add xp} - {RANDOM 0..6} - {VARIABLE_OP dam add $random} - [if] - [variable] - name=dam - greater_than=$best_score - [/variable] - [then] - {VARIABLE best_score $dam} - {VARIABLE best_unit $i} - [/then] - [/if] + {VARIABLE dam $archer[$i].attack[1].damage} + {VARIABLE_OP dam multiply $archer[$i].attack[1].number} + {VARIABLE xp $archer[$i].experience} + {VARIABLE_OP xp divide 4} + {VARIABLE_OP dam add xp} + {RANDOM 0..6} + {VARIABLE_OP dam add $random} + [if] + [variable] + name=dam + greater_than=$best_score + [/variable] + [then] + {VARIABLE best_score $dam} + {VARIABLE best_unit $i} + [/then] + [/if] {NEXT i} [recall] - id=$archer[$best_unit].id + description=$archer[$best_unit].description [/recall] {CLEAR_VARIABLE archer} - + + # Note: the code for the ambushers is mostly identical to that of # Crossroads in HttT. @@ -272,54 +269,69 @@ {VARIABLE random_ambusher_type_table[6].type "Elvish Ranger"} {VARIABLE random_ambusher_type_table[7].type "Elvish Hero"} {VARIABLE random_ambusher_type_table[8].type "Elvish Fighter"} + +#ifdef NORMAL + {VARIABLE random_ambusher_type_table[9].type "Elvish Archer"} + {VARIABLE random_ambusher_type_table[10].type "Elvish Fighter"} +#endif + +#ifdef EASY + {VARIABLE random_ambusher_type_table[9].type "Elvish Archer"} + {VARIABLE random_ambusher_type_table[10].type "Elvish Fighter"} + {VARIABLE random_ambusher_type_table[11].type "Elvish Archer"} + {VARIABLE random_ambusher_type_table[12].type "Elvish Fighter"} +#endif {VARIABLE random_ambusher_type_i 0} + - # place an elvish ambusher - # who hides in the forest until he changes side - +# place an elvish ambusher +# who hides in the forest until he changes side + #define ELVISH_AMBUSHER X Y SIDE TYPE - [unit] - x={X} - y={Y} - type={TYPE} - side={SIDE} - random_traits=yes - upkeep=loyal - - [status] - hides=yes - [/status] - [/unit] - - [object] - silent=yes - - [filter] - x,y={X},{Y} - [/filter] - - [effect] - apply_to=new_ability - - [abilities] - [hides] - id=elvish_ambush - affect_self=yes - - [filter_self] - # only effective as long as the unit - # is on the ambusher side + [unit] + x={X} + y={Y} + type={TYPE} side={SIDE} + random_traits=yes + generate_description=yes + upkeep=loyal - [filter_location] - terrain=Gs^Fp - [/filter_location] - [/filter_self] - [/hides] - [/abilities] - [/effect] - [/object] + [status] + hides=yes + stone=yes + [/status] + [/unit] + + [object] + silent=yes + + [filter] + x,y={X},{Y} + [/filter] + + [effect] + apply_to=new_ability + + [abilities] + [hides] + id=elvish_ambush + affect_self=yes + + [filter_self] + # only effective as long as the unit + # is on the ambusher side + side={SIDE} + + [filter_location] + terrain=Gs^Fp + [/filter_location] + [/filter_self] + [/hides] + [/abilities] + [/effect] + [/object] #enddef #define ELVISH_AMBUSH_AREA SIDE X_SPAN Y_SPAN NUMBER @@ -341,13 +353,13 @@ [filter] [/filter] [/not] - + # not too close to the starting area [not] x=21-36 y=43-50 [/not] - + # not too close to the fixed ambush [not] x=12-14 @@ -355,7 +367,7 @@ [/not] [filter_adjacent_location] - terrain=Rp,Rd,Re + terrain=Rp,Rd,Re [/filter_adjacent_location] [not] @@ -414,40 +426,38 @@ [/while] #enddef + # undead spawn types depend on difficulty # number of elven ambushers, too # and place different types of Elvish Ambushers # in the fixed central valley ambush - + #ifdef EASY {VARIABLE undead_spawn_types "Ghost,Wraith,Shadow,Skeleton Archer,Revenant,Deathblade,Blood Bat,Ghoul,Ghost,Wraith,Shadow"} - {VARIABLE ambushing_elves 32} - {ELVISH_AMBUSHER 12 34 2 "Elvish Archer"} + {VARIABLE ambushing_elves 26} {ELVISH_AMBUSHER 13 33 2 "Elvish Fighter"} {ELVISH_AMBUSHER 14 30 2 "Elvish Archer"} #endif - + #ifdef NORMAL {VARIABLE undead_spawn_types "Wraith,Shadow,Bone Shooter,Revenant,Deathblade,Blood Bat,Ghoul,Wraith,Shadow"} - {VARIABLE ambushing_elves 40} - {ELVISH_AMBUSHER 12 34 2 "Elvish Archer"} + {VARIABLE ambushing_elves 30} {ELVISH_AMBUSHER 13 33 2 "Elvish Hero"} {ELVISH_AMBUSHER 14 30 2 "Elvish Ranger"} #endif #ifdef HARD {VARIABLE undead_spawn_types "Wraith,Shadow,Bone Shooter,Revenant,Deathblade,Necrophage,Wraith,Shadow,Shadow"} - {VARIABLE ambushing_elves 48} - {ELVISH_AMBUSHER 12 34 2 "Elvish Ranger"} + {VARIABLE ambushing_elves 34} {ELVISH_AMBUSHER 13 33 2 "Elvish Hero"} {ELVISH_AMBUSHER 14 30 2 "Elvish Ranger"} #endif - {ELVISH_AMBUSHER 12 33 2 "Elvish Sorceress"} - {ELVISH_AMBUSHER 14 33 2 "Elvish Captain"} + {ELVISH_AMBUSHER 14 33 2 "Elvish Sorceress"} + {ELVISH_AMBUSHER 12 33 2 "Elvish Captain"} {TIME_ACTIONS ( - {ELVISH_AMBUSH_AREA 2 1-29 23-50 $ambushing_elves} + {ELVISH_AMBUSH_AREA 2 1-29 23-50 $ambushing_elves} )} {CLEAR_VARIABLE possible_ambush_locations} @@ -455,56 +465,58 @@ {CLEAR_VARIABLE random_ambusher_type_i} {CLEAR_VARIABLE ambusher} {CLEAR_VARIABLE ambushing_elves} - + # set ambush dialog variables {VARIABLE ambush 0} {VARIABLE ambush_x 99} {VARIABLE ambush_y 99} {VARIABLE ambush_distance 80} + # store the secret paths and cover them with forest # Rp -> Re covered by forest - + [store_locations] variable=secret_path terrain=Rp [/store_locations] {FOREACH secret_path i} - {MODIFY_TERRAIN Gs^Fp $secret_path[$i].x $secret_path[$i].y} + {MODIFY_TERRAIN Gs^Fp $secret_path[$i].x $secret_path[$i].y} {NEXT i} - + # Rd -> Gg covered by forest [store_locations] variable=secret_track terrain=Rd [/store_locations] {FOREACH secret_track i} - {MODIFY_TERRAIN Gs^Fp $secret_track[$i].x $secret_track[$i].y} + {MODIFY_TERRAIN Gs^Fp $secret_track[$i].x $secret_track[$i].y} {NEXT i} - + # urza dialogue variables # coordinates of last dialogue {VARIABLE urza_x 24} {VARIABLE urza_y 46} {VARIABLE urza_dialogue_num 0} - + # the various messages {VARIABLE urza_dialogue[0].msg ( _ "We have to go even further west. There are elves living to the north, and I don't think they'll receive us too kindly!")} {VARIABLE urza_dialogue[1].msg ( _ "Come on! Hurry!")} {VARIABLE urza_dialogue[2].msg ( _ "Keep moving!")} {VARIABLE urza_dialogue[3].msg ( _ "We're almost there!")} {VARIABLE urza_dialogue[4].msg ( _ "Just a little further!")} + [/event] - + [event] name=moveto first_time_only=no - + # reveal all hidden paths within 3 hexes # of where Urza moves - + [filter] - id=Urza Afalas + description=Urza Afalas [filter_location] terrain=Gg,Hh,Re,Gs^Fp # do the radius checking here, too @@ -530,7 +542,7 @@ [/and] [/store_locations] {FOREACH uncover i} - {MODIFY_TERRAIN Re $uncover[$i].x $uncover[$i].y} + {MODIFY_TERRAIN Re $uncover[$i].x $uncover[$i].y} {NEXT i} [store_locations] variable=uncover @@ -542,20 +554,20 @@ [/and] [/store_locations] {FOREACH uncover i} - {MODIFY_TERRAIN Gg $uncover[$i].x $uncover[$i].y} + {MODIFY_TERRAIN Gg $uncover[$i].x $uncover[$i].y} {NEXT i} - + # check if a new dialogue part is needed - # do that if the distance between this event and the + # do that if the distance between this event and the # last dialogue is more than 8 hexes - + {VARIABLE x_delta $urza_x} {VARIABLE_OP x_delta add -$x1} {VARIABLE_OP x_delta multiply $x_delta} {VARIABLE y_delta $urza_y} {VARIABLE_OP y_delta add -$y1} {VARIABLE_OP y_delta multiply $y_delta} - + [if] [variable] name=x_delta @@ -585,110 +597,145 @@ [/if] [/then] [/if] - + # we'll allow undo even if terrain was uncovered # the dialogue will break undoing, anyway [allow_undo] [/allow_undo] [/event] - + + # elven ambush event [event] name=moveto first_time_only=no [filter] - side=1 + side=1,3 [filter_adjacent] side=2 + race=elf [/filter_adjacent] [/filter] - - # swap all elves within 5 hexes to the active side + + # swap all elves within 4 hexes to the active side # they effectively join the ambush + # and remove stoning + [unstone] + [filter] + side=2 + [filter_location] + terrain=Gs^Fp + [and] + x=$x1 + y=$y1 + radius=4 + [/and] + [/filter_location] + [/filter] + [/unstone] {MODIFY_UNIT ( side=2 [filter_location] terrain=Gs^Fp [and] x,y=$x1,$y1 - radius=5 + radius=4 [/and] [/filter_location] - ) side 4} + ) side 3} [redraw][/redraw] + # do a dialog if the last ambush was far enough away # we just want to prevent triggering all the dialogue in # the first part of the journey! # (...not that there is that much dialogue here...) - + {VARIABLE x_delta $ambush_x} {VARIABLE_OP x_delta add -$x1} {VARIABLE_OP x_delta multiply $x_delta} {VARIABLE y_delta $ambush_y} {VARIABLE_OP y_delta add -$y1} {VARIABLE_OP y_delta multiply $y_delta} - - # if the last ambush dialogue was 9 hexes or more - # distant, do another one + + # store the triggering unit to prevent dialogue when + # a non-player side triggers this + [store_unit] + variable=triggerer + kill=no + [filter] + x,y=$x1,$y1 + [/filter] + [/store_unit] [if] - [variable] - name=x_delta - greater_than=$ambush_distance - [/variable] - [or] - [variable] - name=y_delta - greater_than=$ambush_distance - [/variable] - [/or] + [have_unit] + x,y=$x1,$y1 + side=1 + [/have_unit] [then] - {VARIABLE_OP ambush add 1} - {VARIABLE ambush_x $x1} - {VARIABLE ambush_y $y1} + + # if the last ambush dialogue was 9 hexes or more + # distant, do another one [if] [variable] - name=ambush - equals=1 + name=x_delta + greater_than=$ambush_distance [/variable] + [or] + [variable] + name=y_delta + greater_than=$ambush_distance + [/variable] + [/or] [then] - [message] - race=elf - side=4 - message= _"You humans have kidnapped Mebrin the Sage. You will pay for your crimes." - [/message] - [message] - speaker=Deoran - message= _"Your sage Mebrin is the criminal. He practices necromancy and has turned himself into Lich. By the laws of Wesnoth, the punishment for his crimes is death!" - [/message] - [message] - race=elf - side=4 - message= _"It is you who is a criminal and who is in a company of criminals. We will not let you kill Mebrin!" - [/message] - [message] - speaker=Deoran - message= _"I was a fool to waste my words on you. Prepare to meet your beloved Mebrin - or, should I say Mal M'brin in *hell*, elves!" - [/message] - [/then] - [else] + {VARIABLE_OP ambush add 1} + {VARIABLE ambush_x $x1} + {VARIABLE ambush_y $y1} [if] [variable] name=ambush - greater_than=1 + equals=1 [/variable] [then] [message] race=elf - side=4 - message= _ "Get them!" + side=3 + message= _"You humans have kidnaped Mebrin the Sage. You will pay for your crimes." + [/message] + [message] + description=Deoran + message= _"Your sage Mebrin is the criminal. He practices necromancy and has turned himself into Lich. By the laws of Wesnoth, the punnishment for his crimes is death!" + [/message] + [message] + race=elf + side=3 + message= _"It is you who is a criminal and who is in a company of criminals. We will not let you kill Mebrin!" + [/message] + [message] + description=Deoran + message= _"I was a fool to waste my words on you. Prepare to meet your beloved Mebrin or should I say Mal M'brin in hell, elves !" [/message] - {VARIABLE_OP ambush_distance add 40} [/then] + [else] + [if] + [variable] + name=ambush + greater_than=1 + [/variable] + [then] + [message] + race=elf + side=3 + message= _ "Get them !" + [/message] + {VARIABLE_OP ambush_distance add 40} + [/then] + [/if] + [/else] [/if] - [/else] + [/then] [/if] [/then] [/if] @@ -720,10 +767,10 @@ message= _ "Do we have any choice? Our food is running out, and it will be winter soon..." [/message] - {MOVE_UNIT (id=Urza Afalas) 24 46} - + {MOVE_UNIT (description=Urza Afalas) 24 46} + # reveal the first bit of path - + {MODIFY_TERRAIN Gg 23 47} # note: the following is NOT supposed to be supplied as a RANGE! # change the individual coordinates 22,47 and 21,48 ! @@ -735,12 +782,12 @@ [/remove_shroud] [redraw] [/redraw] - + [message] speaker=Urza Afalas message= _ "This way! The only ford is a bit west of here, and the path to the north will lead you into trouble!" [/message] - + [message] speaker=Sir Gerrick message= _ "I think we should head north. The road leads north, and the ford is north. Why does he want us to head west?" @@ -782,7 +829,7 @@ [event] name=die [filter] - id=Urza Afalas + description=Urza Afalas [/filter] [message] speaker=unit @@ -794,6 +841,7 @@ [/endlevel] [/event] + # re-spawn some undead after turn 2 # up to a maximum number depending on the turn # place them slightly east of the mountain range @@ -806,14 +854,14 @@ {VARIABLE undead_spawns $turn_number} {VARIABLE_OP undead_spawns add -2} - + # we'll subtract the number of undead that already exist [store_unit] [filter] race=undead [/filter] variable=undead - [/store_unit] + [/store_unit] [if] [variable] @@ -829,19 +877,19 @@ {VARIABLE undead_spawns $turn_number} [/else] [/if] - + {VARIABLE_OP undead_spawns add -$undead.length} {REPEAT $undead_spawns ( - {VARIABLE_OP undead_spawn_y random "19..34"} + {VARIABLE_OP undead_spawn_y random "19..34"} - {VARIABLE_OP undead_spawn_type random $undead_spawn_types} + {VARIABLE_OP undead_spawn_type random $undead_spawn_types} - [unit] - side=3 - type=$undead_spawn_type - x,y=19,$undead_spawn_y - [/unit] + [unit] + side=2 + type=$undead_spawn_type + x,y=19,$undead_spawn_y + [/unit] )} [/event] [/event] @@ -850,10 +898,10 @@ name=moveto [filter] x,y=1-18,1-28 - id=Urza Afalas + description=Urza Afalas [/filter] - {MOVE_UNIT (id=Urza Afalas) 9 25} + {MOVE_UNIT (description=Urza Afalas) 9 25} [message] speaker=Urza Afalas message= _ "Hurry! There are bandits in these woods!" @@ -872,36 +920,36 @@ name=moveto [filter] x,y=7-11,1-27 - id=Deoran + description=Deoran [/filter] - {MOVE_UNIT (id=Urza Afalas) 10 18} + {MOVE_UNIT (description=Urza Afalas) 10 18} [message] speaker=Urza Afalas message= _ "The river is just ahead!" [/message] #ifdef HARD - {GENERIC_UNIT 4 Bandit 5 28} + {GENERIC_UNIT 3 Bandit 5 28} #else - {GENERIC_UNIT 4 Thug 5 28} + {GENERIC_UNIT 3 Thug 5 28} #endif #ifdef EASY - {GENERIC_UNIT 4 Thief 6 28} + {GENERIC_UNIT 3 Thief 6 28} #else - {GENERIC_UNIT 4 Rogue 6 28} + {GENERIC_UNIT 3 Rogue 6 28} #endif #ifdef EASY - {GENERIC_UNIT 4 Footpad 5 32} + {GENERIC_UNIT 3 Footpad 5 32} #else - {GENERIC_UNIT 4 Outlaw 5 32} + {GENERIC_UNIT 3 Outlaw 5 32} #endif #ifdef HARD - {GENERIC_UNIT 4 Trapper 5 31} + {GENERIC_UNIT 3 Trapper 5 31} #else - {GENERIC_UNIT 4 Poacher 5 31} + {GENERIC_UNIT 3 Poacher 5 31} #endif [message] type=Trapper @@ -912,7 +960,7 @@ message= _ "The elves payed us well to kill you." [/message] [message] - speaker=Urza Afalas + description=Urza Afalas message= _ "You bastards!" [/message] [message] @@ -924,7 +972,7 @@ message= _ "You would have done the same to us if you were in our place!" [/message] [message] - speaker=Urza Afalas + description=Urza Afalas message= _ "I probably would have..." [/message] [/event] @@ -933,7 +981,7 @@ name=moveto [filter] x,y=5-14,1-19 - id=Deoran + description=Deoran [/filter] [message] @@ -951,9 +999,9 @@ x,y=12-15,31-33 [/filter] - {SG_GUARD (Elvish Fighter) (Urien) (_"Urien") 4 12 34} - {SG_GUARD (Elvish Archer) (Jesa) (_"Jesa") 4 15 31} - {SG_GUARD (Elvish Archer) (Plinth) (_"Plinth") 4 15 34} + {SG_GUARD (Elvish Fighter) (Urien) (_"Urien") 3 12 34} + {SG_GUARD (Elvish Archer) (Jesa) (_"Jesa") 3 15 31} + {SG_GUARD (Elvish Archer) (Plinth) (_"Plinth") 3 15 34} [message] speaker=Plinth @@ -974,7 +1022,7 @@ [event] name=moveto [filter] - id=Deoran + description=Deoran x,y=16,3 [/filter] [message] @@ -995,7 +1043,7 @@ message= _ "But there was a dark cloud looming behind Deoran and his men..." image=wesnoth-icon.png [/message] - + {CLEAR_VARIABLE secret_path} {CLEAR_VARIABLE secret_track} {CLEAR_VARIABLE urza_dialogue} @@ -1012,5 +1060,6 @@ bonus=yes result=victory [/endlevel] + [/event] [/scenario]