Long March rebalancing:

- added a (small) encampment

- less ambushers

- reduced ambush range for activation of nearby units

- undead and elves now fight each other
This commit is contained in:
Jan Rietema 2008-03-27 17:07:40 +00:00
parent 300a4b37d1
commit befe76a519
2 changed files with 296 additions and 247 deletions

View File

@ -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

View File

@ -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}"
@ -19,6 +25,8 @@
{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}
@ -99,8 +93,7 @@
# it may move and attack normally
[side]
side=4
colour=blue
side=3
no_leader=yes
team_name=elves
controller=ai
@ -115,35 +108,37 @@
[/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
@ -196,10 +191,11 @@
[/if]
{NEXT i}
[recall]
id=$swordsman[$best_unit].id
description=$swordsman[$best_unit].description
[/recall]
{CLEAR_VARIABLE swordsman}
# now an archer
[store_unit]
@ -251,10 +247,11 @@
[/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.
@ -273,10 +270,23 @@
{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]
@ -285,10 +295,12 @@
type={TYPE}
side={SIDE}
random_traits=yes
generate_description=yes
upkeep=loyal
[status]
hides=yes
stone=yes
[/status]
[/unit]
@ -414,6 +426,7 @@
[/while]
#enddef
# undead spawn types depend on difficulty
# number of elven ambushers, too
# and place different types of Elvish Ambushers
@ -421,30 +434,27 @@
#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}
@ -462,6 +472,7 @@
{VARIABLE ambush_y 99}
{VARIABLE ambush_distance 80}
# store the secret paths and cover them with forest
# Rp -> Re covered by forest
@ -494,6 +505,7 @@
{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]
@ -504,7 +516,7 @@
# 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
@ -592,33 +604,50 @@
[/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!
@ -631,6 +660,22 @@
{VARIABLE_OP y_delta add -$y1}
{VARIABLE_OP y_delta multiply $y_delta}
# 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]
[have_unit]
x,y=$x1,$y1
side=1
[/have_unit]
[then]
# if the last ambush dialogue was 9 hexes or more
# distant, do another one
[if]
@ -656,21 +701,21 @@
[then]
[message]
race=elf
side=4
message= _"You humans have kidnapped Mebrin the Sage. You will pay for your crimes."
side=3
message= _"You humans have kidnaped 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!"
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=4
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]
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!"
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]
[/then]
[else]
@ -682,8 +727,8 @@
[then]
[message]
race=elf
side=4
message= _ "Get them!"
side=3
message= _ "Get them !"
[/message]
{VARIABLE_OP ambush_distance add 40}
[/then]
@ -692,6 +737,8 @@
[/if]
[/then]
[/if]
[/then]
[/if]
[/event]
[event]
@ -720,7 +767,7 @@
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
@ -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
@ -838,7 +886,7 @@
{VARIABLE_OP undead_spawn_type random $undead_spawn_types}
[unit]
side=3
side=2
type=$undead_spawn_type
x,y=19,$undead_spawn_y
[/unit]
@ -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]
@ -1012,5 +1060,6 @@
bonus=yes
result=victory
[/endlevel]
[/event]
[/scenario]