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:
parent
300a4b37d1
commit
befe76a519
2 changed files with 296 additions and 247 deletions
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Reference in a new issue