Campaigns: wmlindent pass
[ci skip]
This commit is contained in:
parent
1f17434ec0
commit
daff648482
66 changed files with 807 additions and 861 deletions
|
@ -258,7 +258,7 @@
|
|||
[/if]
|
||||
[/event]
|
||||
|
||||
# This event makes the storm trident even more obvious
|
||||
# This event makes the storm trident even more obvious
|
||||
|
||||
[event]
|
||||
name=turn 3
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#textdomain wesnoth-dw
|
||||
|
||||
#define NOTE_STUN
|
||||
[special_note]
|
||||
note=_ "This unit is able to stun its enemies, disrupting their zones of control."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_ "This unit is able to stun its enemies, disrupting their zones of control."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define WEAPON_SPECIAL_STUN
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#textdomain wesnoth-dm
|
||||
|
||||
#define OBJECT_LOYAL
|
||||
# There are several changes of leader to hero & vice versa during the campaign,
|
||||
# so this object is given to any that may have hero status at some point to ensure
|
||||
# the unit has no upkeep and to avoid taking up another trait slot
|
||||
# There are several changes of leader to hero & vice versa during the campaign,
|
||||
# so this object is given to any that may have hero status at some point to ensure
|
||||
# the unit has no upkeep and to avoid taking up another trait slot
|
||||
[object]
|
||||
[effect]
|
||||
apply_to=loyal
|
||||
|
|
|
@ -389,7 +389,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
# First area (two young ogres)
|
||||
[event]
|
||||
name=last breath
|
||||
|
@ -968,22 +967,22 @@
|
|||
#ifdef EASY
|
||||
{VARIABLE_OP malin.experience add 30}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+30 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+30 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
#ifdef NORMAL
|
||||
{VARIABLE_OP malin.experience add 25}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+25 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+25 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
#ifdef HARD
|
||||
{VARIABLE_OP malin.experience add 20}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+20 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+20 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
|
||||
|
@ -1371,22 +1370,22 @@
|
|||
#ifdef EASY
|
||||
{VARIABLE_OP malin.experience add 30}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+30 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+30 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
#ifdef NORMAL
|
||||
{VARIABLE_OP malin.experience add 25}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+25 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+25 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
#ifdef HARD
|
||||
{VARIABLE_OP malin.experience add 20}
|
||||
[floating_text]
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+20 exp" + "</span>"
|
||||
x,y=$malin.x,$malin.y
|
||||
text="<span color='#800080'>" + "+20 exp" + "</span>"
|
||||
[/floating_text]
|
||||
#endif
|
||||
|
||||
|
|
|
@ -364,7 +364,6 @@
|
|||
variable=orc_leader_store
|
||||
[/store_unit]
|
||||
|
||||
|
||||
{CLEAR_VARIABLE orc_leader_store.status.poisoned}
|
||||
|
||||
[move_unit_fake]
|
||||
|
|
|
@ -466,7 +466,6 @@
|
|||
[show_objectives][/show_objectives]
|
||||
[/event]
|
||||
|
||||
|
||||
# In-scenario Events
|
||||
|
||||
[event]
|
||||
|
|
|
@ -250,7 +250,6 @@
|
|||
{STARTING_VILLAGES 1 3}
|
||||
{STARTING_VILLAGES 2 15}
|
||||
|
||||
|
||||
{PLACE_IMAGE scenery/whirlpool.png 38 23}
|
||||
|
||||
# City
|
||||
|
|
|
@ -193,7 +193,6 @@
|
|||
x,y=2,26
|
||||
[/recall]
|
||||
|
||||
|
||||
[remove_trait]
|
||||
id=Darken Volk
|
||||
trait_id="loyal"
|
||||
|
|
|
@ -207,7 +207,7 @@
|
|||
[/variable]
|
||||
[then]
|
||||
[terrain]
|
||||
x,y=$hex[$i].x,$hex[$i].y
|
||||
x,y=$hex[$i].x,$hex[$i].y
|
||||
terrain=Qxu
|
||||
[/terrain]
|
||||
[/then]
|
||||
|
@ -238,7 +238,7 @@
|
|||
[/variable]
|
||||
[then]
|
||||
[terrain]
|
||||
x,y=$hex[$i].x,$hex[$i].y
|
||||
x,y=$hex[$i].x,$hex[$i].y
|
||||
terrain=Qxu
|
||||
[/terrain]
|
||||
[/then]
|
||||
|
@ -295,7 +295,6 @@
|
|||
animate=no
|
||||
[/harm_unit]
|
||||
|
||||
|
||||
[delay]
|
||||
time=400
|
||||
[/delay]
|
||||
|
@ -314,7 +313,6 @@
|
|||
animate=no
|
||||
[/harm_unit]
|
||||
|
||||
|
||||
[delay]
|
||||
time=700
|
||||
[/delay]
|
||||
|
@ -333,7 +331,6 @@
|
|||
animate=no
|
||||
[/harm_unit]
|
||||
|
||||
|
||||
[delay]
|
||||
time=1000
|
||||
[/delay]
|
||||
|
@ -741,7 +738,6 @@
|
|||
[/objectives]
|
||||
[/event]
|
||||
|
||||
|
||||
#define RESET_RUNES
|
||||
{REMOVE_IMAGE 13 6}
|
||||
{REMOVE_IMAGE 11 9}
|
||||
|
@ -757,7 +753,7 @@
|
|||
{PLACE_IMAGE scenery/rune1.png 13 9}
|
||||
#enddef
|
||||
|
||||
# Ritual part 2
|
||||
# Ritual part 2
|
||||
|
||||
[event]
|
||||
name=die
|
||||
|
@ -969,7 +965,7 @@
|
|||
{MODIFY_UNIT (side=2) moves 0}
|
||||
[/event]
|
||||
|
||||
# Ritual part 3
|
||||
# Ritual part 3
|
||||
|
||||
[event]
|
||||
name=die
|
||||
|
@ -1178,7 +1174,7 @@
|
|||
[/random_placement]
|
||||
[/event]
|
||||
|
||||
# Malin gets to heal upon killing a unit
|
||||
# Malin gets to heal upon killing a unit
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=no
|
||||
|
@ -1215,7 +1211,7 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# Sighting the bosses
|
||||
# Sighting the bosses
|
||||
[event]
|
||||
name=sighted
|
||||
[filter]
|
||||
|
@ -1259,7 +1255,7 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# Ritual runes
|
||||
# Ritual runes
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
|
@ -1528,7 +1524,7 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# Ritual completion
|
||||
# Ritual completion
|
||||
|
||||
[event]
|
||||
name=last breath
|
||||
|
@ -1940,7 +1936,7 @@
|
|||
[/objectives]
|
||||
[/event]
|
||||
|
||||
# text at lair entrance
|
||||
# text at lair entrance
|
||||
[event]
|
||||
name=moveto
|
||||
first_time_only=no
|
||||
|
@ -1977,7 +1973,7 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# monolith
|
||||
# monolith
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -2158,7 +2154,7 @@
|
|||
[/remove_event]
|
||||
[/event]
|
||||
|
||||
# treasure boxes
|
||||
# treasure boxes
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -2283,10 +2279,10 @@
|
|||
[/gold]
|
||||
[/event]
|
||||
|
||||
# potion puzzle
|
||||
# Solution: Pick up the brazier and melt the ice, creating water
|
||||
# pick up the empty flask and move to the water, then pick up the filled flask
|
||||
# go to the altar, which puts the filled flask there and creates a potion
|
||||
# potion puzzle
|
||||
# Solution: Pick up the brazier and melt the ice, creating water
|
||||
# pick up the empty flask and move to the water, then pick up the filled flask
|
||||
# go to the altar, which puts the filled flask there and creates a potion
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
|
@ -2608,10 +2604,10 @@ Into pitch black shadow.</i>"
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# coffin puzzle
|
||||
# Solution: pick up the key, move to the coffin to open it
|
||||
# then, pick up the bones, put them in the coffin
|
||||
# finally, pick up the brazier and cremate the bones
|
||||
# coffin puzzle
|
||||
# Solution: pick up the key, move to the coffin to open it
|
||||
# then, pick up the bones, put them in the coffin
|
||||
# finally, pick up the brazier and cremate the bones
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
|
@ -2906,7 +2902,7 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# reflection pool scene
|
||||
# reflection pool scene
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -3245,7 +3241,7 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[unlock_view][/unlock_view]
|
||||
[/event]
|
||||
|
||||
# Sighting the enemy lair
|
||||
# Sighting the enemy lair
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -3292,7 +3288,7 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[cancel_action][/cancel_action]
|
||||
[/event]
|
||||
|
||||
# Initiate boss battle
|
||||
# Initiate boss battle
|
||||
[event]
|
||||
name=enter hex
|
||||
[filter]
|
||||
|
@ -3625,7 +3621,6 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[/if]
|
||||
#endif
|
||||
|
||||
|
||||
[message]
|
||||
speaker=Xanthric
|
||||
message= _ "<i><big>A few decrepit souls will do you no good, necromancer. Your bones shall soon join my garden of carcasses!</big></i>"
|
||||
|
@ -3667,7 +3662,7 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[cancel_action][/cancel_action]
|
||||
[/event]
|
||||
|
||||
# flavor text if you capture the dragon's keep
|
||||
# flavor text if you capture the dragon's keep
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -3692,7 +3687,7 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
# spawns
|
||||
# spawns
|
||||
[event]
|
||||
name=new turn
|
||||
first_time_only=no
|
||||
|
@ -3784,9 +3779,9 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[unit]
|
||||
side=1
|
||||
#ifdef HARD
|
||||
type=Walking Corpse
|
||||
type=Walking Corpse
|
||||
#else
|
||||
type=Soulless
|
||||
type=Soulless
|
||||
#endif
|
||||
x,y=11,7
|
||||
animate=yes
|
||||
|
@ -3796,9 +3791,9 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[unit]
|
||||
side=1
|
||||
#ifdef EASY
|
||||
type=Soulless
|
||||
type=Soulless
|
||||
#else
|
||||
type=Walking Corpse
|
||||
type=Walking Corpse
|
||||
#endif
|
||||
x,y=10,5
|
||||
animate=yes
|
||||
|
@ -4003,7 +3998,6 @@ And the tongue of fire begets ashen repose.</i>"
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
# Victory
|
||||
[event]
|
||||
name=last breath
|
||||
|
|
|
@ -16,6 +16,6 @@
|
|||
{AMLA_OPTION_CANNIBALIZE2}
|
||||
{AMLA_OPTION_DEATH_CLOUD}
|
||||
{AMLA_DEFAULT}
|
||||
|
||||
|
||||
{DID_DEATH_CLOUD}
|
||||
[/unit_type]
|
||||
|
|
|
@ -341,8 +341,8 @@
|
|||
[/harm_unit]
|
||||
|
||||
[floating_text]
|
||||
x,y=$unit.x,$unit.y
|
||||
text="<span color='#ff0000'>" + "5" + "</span>"
|
||||
x,y=$unit.x,$unit.y
|
||||
text="<span color='#ff0000'>" + "5" + "</span>"
|
||||
[/floating_text]
|
||||
|
||||
{VARIABLE counter 0}
|
||||
|
@ -683,8 +683,8 @@
|
|||
[/harm_unit]
|
||||
|
||||
[floating_text]
|
||||
x,y=$unit.x,$unit.y
|
||||
text="<span color='#ff0000'>" + "2" + "</span>"
|
||||
x,y=$unit.x,$unit.y
|
||||
text="<span color='#ff0000'>" + "2" + "</span>"
|
||||
[/floating_text]
|
||||
[/then]
|
||||
[/if]
|
||||
|
|
|
@ -209,15 +209,15 @@
|
|||
############## MAL KESHAR OPTIONS ##############
|
||||
|
||||
#define AMLA_MAL_KESHAR
|
||||
{AMLA_OPTION_MELEE_TOUCH}
|
||||
{AMLA_OPTION_CHILL_TEMPEST}
|
||||
{AMLA_OPTION_SHADOW_WAVE}
|
||||
{AMLA_OPTION_MALICE2}
|
||||
{AMLA_OPTION_SHADOW_VEIL}
|
||||
{AMLA_OPTION_FROST_NOVA}
|
||||
{AMLA_OPTION_SPELLBIND}
|
||||
{AMLA_OPTION_REND}
|
||||
{AMLA_DEFAULT}
|
||||
{AMLA_OPTION_MELEE_TOUCH}
|
||||
{AMLA_OPTION_CHILL_TEMPEST}
|
||||
{AMLA_OPTION_SHADOW_WAVE}
|
||||
{AMLA_OPTION_MALICE2}
|
||||
{AMLA_OPTION_SHADOW_VEIL}
|
||||
{AMLA_OPTION_FROST_NOVA}
|
||||
{AMLA_OPTION_SPELLBIND}
|
||||
{AMLA_OPTION_REND}
|
||||
{AMLA_DEFAULT}
|
||||
#enddef
|
||||
|
||||
#define AMLA_OPTION_MELEE_TOUCH
|
||||
|
@ -479,12 +479,12 @@
|
|||
############## EIDOLON OPTIONS ##############
|
||||
|
||||
#define AMLA_EIDOLON
|
||||
{AMLA_OPTION_BANEBLADE}
|
||||
{AMLA_OPTION_WAIL}
|
||||
{AMLA_OPTION_REAPER}
|
||||
{AMLA_OPTION_SORROW1}
|
||||
{AMLA_OPTION_SORROW2}
|
||||
{AMLA_DEFAULT}
|
||||
{AMLA_OPTION_BANEBLADE}
|
||||
{AMLA_OPTION_WAIL}
|
||||
{AMLA_OPTION_REAPER}
|
||||
{AMLA_OPTION_SORROW1}
|
||||
{AMLA_OPTION_SORROW2}
|
||||
{AMLA_DEFAULT}
|
||||
#enddef
|
||||
|
||||
#define AMLA_OPTION_BANEBLADE
|
||||
|
@ -646,13 +646,13 @@
|
|||
############## MALIN KESHAR OPTIONS ##############
|
||||
|
||||
#define AMLA_MALIN_KESHAR
|
||||
{AMLA_OPTION_MELEE_SWORD}
|
||||
{AMLA_OPTION_MALIN_RANGED}
|
||||
{AMLA_OPTION_VITALIZE}
|
||||
{AMLA_OPTION_CORPSE_LAUNCHER}
|
||||
{AMLA_OPTION_CORPSE_MASTER}
|
||||
{AMLA_OPTION_ZOMBIE_FRENZY}
|
||||
{AMLA_DEFAULT}
|
||||
{AMLA_OPTION_MELEE_SWORD}
|
||||
{AMLA_OPTION_MALIN_RANGED}
|
||||
{AMLA_OPTION_VITALIZE}
|
||||
{AMLA_OPTION_CORPSE_LAUNCHER}
|
||||
{AMLA_OPTION_CORPSE_MASTER}
|
||||
{AMLA_OPTION_ZOMBIE_FRENZY}
|
||||
{AMLA_DEFAULT}
|
||||
#enddef
|
||||
|
||||
#define AMLA_OPTION_MELEE_SWORD
|
||||
|
|
|
@ -120,15 +120,15 @@
|
|||
#enddef
|
||||
|
||||
#define SET_GOT_INSIDE_MANOR
|
||||
{MODIFY_UNIT (
|
||||
side=1
|
||||
{NOT_ON_RECALL_LIST}
|
||||
[not]
|
||||
id=Malin Keshar
|
||||
{MODIFY_UNIT (
|
||||
side=1
|
||||
{NOT_ON_RECALL_LIST}
|
||||
[not]
|
||||
id=Malin Keshar
|
||||
|
||||
[or]
|
||||
id=Darken Volk
|
||||
[/or]
|
||||
[/not]
|
||||
) variables.got_inside_manor yes}
|
||||
[or]
|
||||
id=Darken Volk
|
||||
[/or]
|
||||
[/not]
|
||||
) variables.got_inside_manor yes}
|
||||
#enddef
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
x=20,28
|
||||
y= 4, 8
|
||||
[/avoid]
|
||||
|
||||
[/ai]
|
||||
{FLAG_VARIANT undead}
|
||||
[/side]
|
||||
|
|
|
@ -349,7 +349,7 @@
|
|||
[/filter]
|
||||
|
||||
[sound]
|
||||
name=thunderstick.ogg
|
||||
name=thunderstick.ogg
|
||||
[/sound]
|
||||
[delay]
|
||||
time=200
|
||||
|
|
|
@ -641,7 +641,7 @@
|
|||
# A denizen of caves answers Konrad's question.
|
||||
[message]
|
||||
race=dwarf
|
||||
# po: "sowl" is a rare word synonymous with "sully", meaning "contaminate".
|
||||
# po: "sowl" is a rare word synonymous with "sully", meaning "contaminate".
|
||||
# po: "toiled" means "difficult, requires effort".
|
||||
message=_ "Lord Konrad, yon rumble was made by nae living creature. ’Tis the echoes o’ the very bedrock witherin’ and crumbling beneath us that we ’eard. Are ye nae feeling the heat redoubling? Is yer breath nae toiled for the ashes sowling the air? I beseech that we not tarry ’ere any more than we ha’ to, lest the forming abysses claim us."
|
||||
[/message]
|
||||
|
|
|
@ -800,7 +800,7 @@ Soooo... It is you who sent your subordinates to attack us. Now when we’ve des
|
|||
message= _ "I’m glad we agree, Li’sar. Now, onward! We must continue downstream, past these drakes."
|
||||
[/message]
|
||||
[/else]
|
||||
)}
|
||||
)}
|
||||
{VARIABLE sergeant_sighted yes}
|
||||
[show_objectives][/show_objectives]
|
||||
[/event]
|
||||
|
|
|
@ -326,7 +326,6 @@
|
|||
#
|
||||
# GL-2016JUL
|
||||
|
||||
|
||||
# For background references, see Delfador's Memoirs, scenario 8 ("Ur Thorodor").
|
||||
|
||||
[event]
|
||||
|
@ -414,7 +413,6 @@
|
|||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
|
||||
[message]
|
||||
speaker=unit
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#enddef
|
||||
|
||||
#define NOTE_INITIATIVE
|
||||
[special_note]
|
||||
note=_"This unit’s grasp of melee tactics allows adjacent allies to strike the first blow even when defending."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit’s grasp of melee tactics allows adjacent allies to strike the first blow even when defending."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
|
|
@ -1,56 +1,56 @@
|
|||
#textdomain wesnoth-httt
|
||||
|
||||
#define HTTT_INTRO
|
||||
[story]
|
||||
[part]
|
||||
music=revelation.ogg
|
||||
story= _ "In the twenty-eighth year of the reign of Garard II, king of Wesnoth, the kingdom was plunged into a bitter war with the Orcs of the North."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
# wmllint: local spelling Galcadar
|
||||
story= _ "The Northern host encamped at Galcadar, by the Ford of Abez, and the king led his forces to meet them. Splitting his army in two, he led one half while his son, the crown prince Eldred, led the other."
|
||||
background=story/httt_story1.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Eldred was a brave and courageous warrior, able to lead his soldiers well. Unfortunately for Garard, his son was also ambitious... and treacherous. In the heat of battle, Eldred’s men turned on the king. And so, Garard was slain in battle that day, along with his brother and all his sons but Eldred."
|
||||
background=story/httt_story2.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Garard’s queen, Asheviere, looked on with glee, having come to watch the battle from a nearby hill. The rule of her son would surely satisfy her lust for power far better than her husband’s had."
|
||||
background=story/httt_story3.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "In exchange for tribute, the warlord of the North happily made peace with Eldred, who proclaimed himself king and led his army south towards Weldyn."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "But Garard’s arch-mage, Delfador, had escaped the battle and, riding with haste, reached Weldyn first. He mustered a force of loyalists to fight Eldred and avenge the king’s death. The loyalist army marched north to meet Eldred."
|
||||
background=story/httt_story4.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Eldred made war upon Delfador and his forces with his mother’s advice ringing in his ears: <i>“Fight no one great or small except the old mage, whose head should be severed from his shoulders.”</i>"
|
||||
background=story/httt_story4.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "And Eldred did indeed meet Delfador face-to-face in battle, in the hinterlands near Tath. Sword clashed against staff, as the wise old mage fought the brash young warrior."
|
||||
background=story/httt_story5.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "In the end Delfador’s men were defeated and routed, but Asheviere found her son’s lifeless body, fixed to the ground by the great mage’s staff."
|
||||
background=story/httt_story6.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Asheviere herself then took command of the army and led it back to Weldyn. Knowing that the king’s young nephews were next in line to the throne, she ordered them all killed, and declared herself Queen of Wesnoth."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Soon after news of Asheviere’s orders reached Delfador, he secretly entered the palace and stole away Konrad, the youngest of Garard’s nephews, thereby saving him from death."
|
||||
background=story/httt_story7.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Fleeing to the Aethenwood beyond the south-western border of Wesnoth, Delfador raised the child Konrad under the protection of the Elves, watching sadly as Asheviere’s reign of terror over the land began..."
|
||||
background=story/httt_story8.jpg
|
||||
[/part]
|
||||
[/story]
|
||||
[story]
|
||||
[part]
|
||||
music=revelation.ogg
|
||||
story= _ "In the twenty-eighth year of the reign of Garard II, king of Wesnoth, the kingdom was plunged into a bitter war with the Orcs of the North."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
# wmllint: local spelling Galcadar
|
||||
story= _ "The Northern host encamped at Galcadar, by the Ford of Abez, and the king led his forces to meet them. Splitting his army in two, he led one half while his son, the crown prince Eldred, led the other."
|
||||
background=story/httt_story1.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Eldred was a brave and courageous warrior, able to lead his soldiers well. Unfortunately for Garard, his son was also ambitious... and treacherous. In the heat of battle, Eldred’s men turned on the king. And so, Garard was slain in battle that day, along with his brother and all his sons but Eldred."
|
||||
background=story/httt_story2.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Garard’s queen, Asheviere, looked on with glee, having come to watch the battle from a nearby hill. The rule of her son would surely satisfy her lust for power far better than her husband’s had."
|
||||
background=story/httt_story3.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "In exchange for tribute, the warlord of the North happily made peace with Eldred, who proclaimed himself king and led his army south towards Weldyn."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "But Garard’s arch-mage, Delfador, had escaped the battle and, riding with haste, reached Weldyn first. He mustered a force of loyalists to fight Eldred and avenge the king’s death. The loyalist army marched north to meet Eldred."
|
||||
background=story/httt_story4.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Eldred made war upon Delfador and his forces with his mother’s advice ringing in his ears: <i>“Fight no one great or small except the old mage, whose head should be severed from his shoulders.”</i>"
|
||||
background=story/httt_story4.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "And Eldred did indeed meet Delfador face-to-face in battle, in the hinterlands near Tath. Sword clashed against staff, as the wise old mage fought the brash young warrior."
|
||||
background=story/httt_story5.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "In the end Delfador’s men were defeated and routed, but Asheviere found her son’s lifeless body, fixed to the ground by the great mage’s staff."
|
||||
background=story/httt_story6.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Asheviere herself then took command of the army and led it back to Weldyn. Knowing that the king’s young nephews were next in line to the throne, she ordered them all killed, and declared herself Queen of Wesnoth."
|
||||
{HTTT_BIGMAP}
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Soon after news of Asheviere’s orders reached Delfador, he secretly entered the palace and stole away Konrad, the youngest of Garard’s nephews, thereby saving him from death."
|
||||
background=story/httt_story7.jpg
|
||||
[/part]
|
||||
[part]
|
||||
story= _ "Fleeing to the Aethenwood beyond the south-western border of Wesnoth, Delfador raised the child Konrad under the protection of the Elves, watching sadly as Asheviere’s reign of terror over the land began..."
|
||||
background=story/httt_story8.jpg
|
||||
[/part]
|
||||
[/story]
|
||||
#enddef
|
||||
|
|
|
@ -206,7 +206,7 @@
|
|||
message= _ "I agree. But, Baldras, what will you tell him? We know something has been going badly wrong in Wesnoth of late, that more than ordinary corruption and incompetence is afoot. But when the effects fall on mere peasants, the wrong of it may not seem so obvious from a noble’s chair."
|
||||
[/message]
|
||||
[sound]
|
||||
name=ambient/wardrums.ogg
|
||||
name=ambient/wardrums.ogg
|
||||
[/sound]
|
||||
[message]
|
||||
speaker=Baldras
|
||||
|
|
|
@ -357,7 +357,7 @@
|
|||
green=0
|
||||
blue=0
|
||||
[/color_adjust]
|
||||
|
||||
|
||||
[terrain_mask]
|
||||
x,y=16,33
|
||||
mask="{campaigns/Liberty/masks/04_Unlawful_Orders_1.mask}"
|
||||
|
@ -487,13 +487,13 @@
|
|||
green=0
|
||||
blue=0
|
||||
[/color_adjust]
|
||||
|
||||
|
||||
[terrain_mask]
|
||||
x,y=16,33
|
||||
mask="{campaigns/Liberty/masks/04_Unlawful_Orders_2.mask}"
|
||||
alignment=even
|
||||
[/terrain_mask]
|
||||
|
||||
|
||||
[redraw]
|
||||
[/redraw]
|
||||
|
||||
|
|
|
@ -734,7 +734,6 @@
|
|||
[/and]
|
||||
[/filter_condition]
|
||||
|
||||
|
||||
[fire_event]
|
||||
name=win event
|
||||
[/fire_event]
|
||||
|
@ -762,7 +761,7 @@
|
|||
|
||||
[message]
|
||||
speaker=Harper
|
||||
message= _ "Attack them directly? I thought you said there was no way we could fight them head on."
|
||||
message= _ "Attack them directly? I thought you said there was no way we could fight them head on."
|
||||
[/message]
|
||||
|
||||
[message]
|
||||
|
|
|
@ -456,7 +456,6 @@
|
|||
{GENERIC_UNIT 2 (Heavy Infantryman) 37 15}
|
||||
{MOVE_UNIT x,y,side=37,15,2 33 15}
|
||||
|
||||
|
||||
[gold]
|
||||
side=2
|
||||
#ifdef EASY
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
name= _ "Galim"
|
||||
x,y=12,11
|
||||
facing=se
|
||||
# todo: is the unit loyal or not? before it had the {IS_LOYAL} but without the real loyal trait.
|
||||
# todo: is the unit loyal or not? before it had the {IS_LOYAL} but without the real loyal trait.
|
||||
[/unit]
|
||||
[/side]
|
||||
|
||||
|
|
|
@ -90,15 +90,7 @@
|
|||
name= _ "Glildur"
|
||||
side=3
|
||||
canrecruit=yes
|
||||
profile="portraits/elves/captain.png~CHAN(
|
||||
if((blue < 100) and (red > green), red*0.6, red),
|
||||
if(
|
||||
(blue < 100) and (red < green), green*0.7,
|
||||
(blue < 100) and (red < 100) and (red > green), green*0.7,
|
||||
green
|
||||
),
|
||||
if((blue < 100) and (red < green), blue*1.5, blue)
|
||||
)"
|
||||
{SOF_GLILDUR_PORTRAIT}
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
|
@ -213,7 +205,6 @@
|
|||
[event]
|
||||
name=prestart
|
||||
|
||||
|
||||
[set_variable]
|
||||
name=incominggold
|
||||
value=5000
|
||||
|
@ -239,7 +230,7 @@
|
|||
{VARIABLE_CONDITIONAL havestone boolean_not_equals yes}
|
||||
[/show_if]
|
||||
[/objective]
|
||||
# {ALTERNATIVE_OBJECTIVE_BONUS ( _ "Defeat Glildur")}
|
||||
# {ALTERNATIVE_OBJECTIVE_BONUS ( _ "Defeat Glildur")}
|
||||
[objective]
|
||||
description= _ "Death of Rugnur"
|
||||
condition=lose
|
||||
|
@ -582,8 +573,8 @@
|
|||
[/event]
|
||||
|
||||
#define SOF1_HOME_AREA
|
||||
x=26,27-28,29-32
|
||||
y=1-2,1-3,1-4 #enddef
|
||||
x=26,27-28,29-32
|
||||
y=1-2,1-3,1-4 #enddef
|
||||
|
||||
# Alanin reaches the dwarvish citadel
|
||||
|
||||
|
@ -853,8 +844,8 @@
|
|||
[filter]
|
||||
id=Glildur
|
||||
[/filter]
|
||||
variable=glildur
|
||||
kill=no
|
||||
variable=glildur
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[/event]
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
id=recruitment_instructions
|
||||
[facet]
|
||||
turns=
|
||||
[value]
|
||||
[value]
|
||||
[limit]
|
||||
type=scout
|
||||
max=2
|
||||
|
@ -432,7 +432,7 @@
|
|||
x,y=$this_item.toggles_x,$this_item.toggles_y
|
||||
animate=yes
|
||||
fire_event=yes
|
||||
[/kill]
|
||||
[/kill]
|
||||
[/then]
|
||||
[/if]
|
||||
[/then]
|
||||
|
|
|
@ -37,10 +37,10 @@
|
|||
team_name=orcs
|
||||
user_team_name= _ "Orcs"
|
||||
{FLAG_VARIANT ragged}
|
||||
# [ai]
|
||||
# aggression=1.0
|
||||
# caution=0.0
|
||||
# [/ai]
|
||||
# [ai]
|
||||
# aggression=1.0
|
||||
# caution=0.0
|
||||
# [/ai]
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -55,10 +55,10 @@
|
|||
team_name=orcs
|
||||
user_team_name= _ "Goblins"
|
||||
{FLAG_VARIANT ragged}
|
||||
# [ai]
|
||||
# aggression=1.0
|
||||
# caution=0.0
|
||||
# [/ai]
|
||||
# [ai]
|
||||
# aggression=1.0
|
||||
# caution=0.0
|
||||
# [/ai]
|
||||
[/side]
|
||||
|
||||
[story]
|
||||
|
@ -70,7 +70,7 @@
|
|||
[/part]
|
||||
[/story]
|
||||
|
||||
# {SOF_TRACK {JOURNEY_02_NEW} }
|
||||
# {SOF_TRACK {JOURNEY_02_NEW} }
|
||||
|
||||
{SOF_DEATHS}
|
||||
|
||||
|
@ -209,7 +209,7 @@
|
|||
image=wesnoth-icon.png
|
||||
message= _ "A dwarf can ride the carts along the tracks. Use the context menu (usually right-click menu) to board or exit the cart. If a cart rider is involved in combat, the rider exits the cart."
|
||||
[/message]
|
||||
[/event]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
|
@ -239,7 +239,7 @@
|
|||
[/and]
|
||||
[/terrain]
|
||||
[terrain]
|
||||
terrain=Wwg
|
||||
terrain=Wwg
|
||||
[and]
|
||||
x=1-26
|
||||
y=9-16
|
||||
|
@ -270,7 +270,7 @@
|
|||
[/filter_location]
|
||||
[/and]
|
||||
animate=no
|
||||
[/kill]
|
||||
[/kill]
|
||||
[message]
|
||||
speaker=Bragdash
|
||||
message= _ "You've flooded your own tunnel, you stupid little gophers!"
|
||||
|
@ -298,7 +298,7 @@
|
|||
fire_event=yes
|
||||
[/kill]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
|
@ -352,6 +352,4 @@
|
|||
{NEW_GOLD_CARRYOVER 40}
|
||||
[/endlevel]
|
||||
[/event]
|
||||
|
||||
[/scenario]
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
#dialogue starts
|
||||
[scroll_to]
|
||||
x,y=11,15
|
||||
[/scroll_to]
|
||||
[/scroll_to]
|
||||
[message]
|
||||
speaker=Durstorn
|
||||
message= _ "Another day older, another foot stuck in the sludge! Let's start with some soft clay... Rugnur, how goes it at the western gate?"
|
||||
|
|
|
@ -363,7 +363,7 @@
|
|||
[/message]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
message= _ "Screech!
|
||||
message= _ "Screech!
|
||||
<i>(Makes eye contact, bobs and cocks head.)</i>"
|
||||
[/message]
|
||||
[message]
|
||||
|
@ -372,7 +372,7 @@
|
|||
[/message]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
message= _ "Krawg!
|
||||
message= _ "Krawg!
|
||||
<i>(Looks out over the icy taiga, turns gaze back toward the dwarves.)</i>"
|
||||
[/message]
|
||||
[message]
|
||||
|
@ -385,12 +385,12 @@
|
|||
[/message]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
message= _ "Yes...
|
||||
message= _ "Yes...
|
||||
<i>(Quickly shifts gaze to nearby woods, adopts a hostile stance, then glances back to the dwarves.)</i>"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Baglur
|
||||
message= _ "Aye, trolls and wolves are closing in... Sure, Krawg, we’ll help you fight them."
|
||||
message= _ "Aye, trolls and wolves are closing in... Sure, Krawg, we’ll help you fight them."
|
||||
[/message]
|
||||
[show_objectives]
|
||||
[/show_objectives]
|
||||
|
@ -431,7 +431,7 @@
|
|||
[then]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
message= _ "Screech!
|
||||
message= _ "Screech!
|
||||
<i>(Nods at the middle distance.)</i>"
|
||||
[/message]
|
||||
[/then]
|
||||
|
|
|
@ -188,7 +188,7 @@
|
|||
[remove_item]
|
||||
image=items/ruby.png
|
||||
x,y=11,4
|
||||
[/remove_item]
|
||||
[/remove_item]
|
||||
[message]
|
||||
speaker=Thursagan
|
||||
message= _ "Hm... a most interesting jewel. I can feel its magical power. I will start drawing up plans for the sceptre immediately."
|
||||
|
|
|
@ -562,7 +562,6 @@
|
|||
replace_if_failed=yes
|
||||
terrain=Uu^Br/
|
||||
[/rule]
|
||||
|
||||
[/terrain_mask]
|
||||
|
||||
# one cart near the player, another cart randomly further out
|
||||
|
@ -575,7 +574,6 @@
|
|||
canrecruit=yes
|
||||
[/filter]
|
||||
radius=7
|
||||
|
||||
[/and]
|
||||
|
||||
variable=possible_cart1_locations
|
||||
|
@ -642,7 +640,6 @@
|
|||
carryover_percentage=40
|
||||
[/gold_carryover]
|
||||
[/objectives]
|
||||
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -72,15 +72,7 @@
|
|||
side=3
|
||||
persistent=yes
|
||||
save_id=Glildur
|
||||
profile="portraits/elves/captain.png~CHAN(
|
||||
if((blue < 100) and (red > green), red*0.6, red),
|
||||
if(
|
||||
(blue < 100) and (red < green), green*0.7,
|
||||
(blue < 100) and (red < 100) and (red > green), green*0.7,
|
||||
green
|
||||
),
|
||||
if((blue < 100) and (red < green), blue*1.5, blue)
|
||||
)"
|
||||
{SOF_GLILDUR_PORTRAIT}
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
|
@ -235,7 +227,7 @@
|
|||
name= _ "Durstorn"
|
||||
unrenamable=yes
|
||||
side=1
|
||||
# profile=portraits/durstorn-insane.png
|
||||
# profile=portraits/durstorn-insane.png
|
||||
profile=portraits/durstorn.png
|
||||
random_traits=no
|
||||
[modifications]
|
||||
|
@ -377,13 +369,13 @@
|
|||
speaker=Thursagan
|
||||
message= {WHISPER _"Are you mad?!"}
|
||||
[/message]
|
||||
# this is causing errors, so doing it the hard way for now but this could be fixed
|
||||
# [modify_unit]
|
||||
# [filter]
|
||||
# id=Durstorn
|
||||
# [/filter]
|
||||
# profile=portraits/durstorn-insane.png
|
||||
# [/modify_unit]
|
||||
# this is causing errors, so doing it the hard way for now but this could be fixed
|
||||
# [modify_unit]
|
||||
# [filter]
|
||||
# id=Durstorn
|
||||
# [/filter]
|
||||
# profile=portraits/durstorn-insane.png
|
||||
# [/modify_unit]
|
||||
[message]
|
||||
speaker=Durstorn
|
||||
message= _ "Of course not!"
|
||||
|
@ -419,7 +411,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -880,7 +871,7 @@
|
|||
amount=full
|
||||
restore_attacks=yes
|
||||
moves=full
|
||||
[/heal_unit]
|
||||
[/heal_unit]
|
||||
[store_unit]
|
||||
[filter]
|
||||
id=Glildur
|
||||
|
|
|
@ -32,15 +32,7 @@
|
|||
id=Glildur
|
||||
name= _ "Glildur"
|
||||
side=2
|
||||
profile="portraits/elves/captain.png~CHAN(
|
||||
if((blue < 100) and (red > green), red*0.6, red),
|
||||
if(
|
||||
(blue < 100) and (red < green), green*0.7,
|
||||
(blue < 100) and (red < 100) and (red > green), green*0.7,
|
||||
green
|
||||
),
|
||||
if((blue < 100) and (red < green), blue*1.5, blue)
|
||||
)"
|
||||
{SOF_GLILDUR_PORTRAIT}
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
[/side]
|
||||
|
||||
# work-around until better AI control is found
|
||||
# Moving this guy to side 4 and adding [micro_ai] type simple_attack works,
|
||||
# Moving this guy to side 4 and adding [micro_ai] type simple_attack works,
|
||||
# but there were some difficult to reproduce instances where AI didn't behave as expected
|
||||
# and Gathor retreated and got out of reach. It might be worth revisiting in the future.
|
||||
# further comment at prestart event
|
||||
|
@ -141,7 +141,7 @@
|
|||
[aspect]
|
||||
id=recruitment_instructions
|
||||
[facet]
|
||||
[value]
|
||||
[value]
|
||||
[limit]
|
||||
type=Orcish Grunt
|
||||
max=2
|
||||
|
@ -287,7 +287,6 @@
|
|||
[/unit]
|
||||
[/event]
|
||||
|
||||
|
||||
[story]
|
||||
[part]
|
||||
story= _ "Rugnur and the dwarves fled down the cave path, deeper into the volcano, with the elves and mercenaries close behind. Unfortunately, they began to see litter and wall markings indicating they were plunging into the land of orcs and trolls."
|
||||
|
@ -308,7 +307,7 @@
|
|||
|
||||
# micro AI to make sure the orc stays on the front lines
|
||||
# need high CA score to keep him from retreating when injured
|
||||
# this does not work reliably (1.15.2+dev),
|
||||
# this does not work reliably (1.15.2+dev),
|
||||
# so moving Gathor to his own side=3 for now
|
||||
# [micro_ai]
|
||||
# side=4
|
||||
|
@ -332,7 +331,7 @@
|
|||
x,y=27,20
|
||||
image=scenery/rock-cairn.png
|
||||
[/item]
|
||||
# set 1
|
||||
# set 1
|
||||
[item]
|
||||
x,y=24,18
|
||||
halo=scenery/rune[1,1,1,1,1,1-glow].png:[200*6]
|
||||
|
@ -403,16 +402,16 @@
|
|||
[objectives]
|
||||
side=1
|
||||
[objective]
|
||||
description= _ "Find and destroy the remaining runic tablets"
|
||||
condition=win
|
||||
description= _ "Find and destroy the remaining runic tablets"
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Rugnur"
|
||||
condition=lose
|
||||
description= _ "Death of Rugnur"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Krawg"
|
||||
condition=lose
|
||||
description= _ "Death of Krawg"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Thursagan"
|
||||
|
@ -422,7 +421,7 @@
|
|||
{IS_LAST_SCENARIO}
|
||||
[/objectives]
|
||||
[/event]
|
||||
# set 2
|
||||
# set 2
|
||||
[item]
|
||||
x,y=24,21
|
||||
halo=scenery/rune[2,2,2,2,2-glow,2].png:[200*6]
|
||||
|
@ -480,16 +479,16 @@
|
|||
[objectives]
|
||||
side=1
|
||||
[objective]
|
||||
description= _ "Find and destroy the remaining runic tablets"
|
||||
condition=win
|
||||
description= _ "Find and destroy the remaining runic tablets"
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Rugnur"
|
||||
condition=lose
|
||||
description= _ "Death of Rugnur"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Krawg"
|
||||
condition=lose
|
||||
description= _ "Death of Krawg"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Thursagan"
|
||||
|
@ -499,7 +498,7 @@
|
|||
{IS_LAST_SCENARIO}
|
||||
[/objectives]
|
||||
[/event]
|
||||
# set 3
|
||||
# set 3
|
||||
# this contains the end-level event
|
||||
[item]
|
||||
x,y=27,17
|
||||
|
@ -524,10 +523,10 @@
|
|||
id=Gathor
|
||||
[/have_unit]
|
||||
[or]
|
||||
[have_unit]
|
||||
id=Toomak
|
||||
[/have_unit]
|
||||
[/or]
|
||||
[have_unit]
|
||||
id=Toomak
|
||||
[/have_unit]
|
||||
[/or]
|
||||
[/filter_condition]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
|
@ -538,7 +537,7 @@
|
|||
message= _ "Krawg puzzled over a stone tile sitting loose on the small mesa. Beneath a spattering of bat guano, there was a glowing rune. Krawg didn't know what to make of it, so the gryphon left it for now."
|
||||
image=wesnoth-icon.png
|
||||
[/message]
|
||||
[/event]
|
||||
[/event]
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
@ -547,15 +546,15 @@
|
|||
[/filter]
|
||||
[filter_condition]
|
||||
[not]
|
||||
[have_unit]
|
||||
id=Gathor
|
||||
[/have_unit]
|
||||
[or]
|
||||
[have_unit]
|
||||
id=Toomak
|
||||
[/have_unit]
|
||||
[/or]
|
||||
[/not]
|
||||
[have_unit]
|
||||
id=Gathor
|
||||
[/have_unit]
|
||||
[or]
|
||||
[have_unit]
|
||||
id=Toomak
|
||||
[/have_unit]
|
||||
[/or]
|
||||
[/not]
|
||||
[/filter_condition]
|
||||
[message]
|
||||
speaker=Krawg
|
||||
|
@ -711,7 +710,7 @@
|
|||
x=1-44
|
||||
animate=no
|
||||
fire_event=no
|
||||
[/kill]
|
||||
[/kill]
|
||||
{FADE_TO_BLACK}
|
||||
[message]
|
||||
speaker=narrator
|
||||
|
@ -743,8 +742,8 @@
|
|||
[recall]
|
||||
side=1
|
||||
[/recall]
|
||||
# original version of this scenario recalled everyone at the start, but that makes this a slog.
|
||||
# instead, recall cost is now just 1, and there are lots of little keeps scattered on the map.
|
||||
# original version of this scenario recalled everyone at the start, but that makes this a slog.
|
||||
# instead, recall cost is now just 1, and there are lots of little keeps scattered on the map.
|
||||
#ifdef __UNUSED__
|
||||
[store_unit]
|
||||
[filter]
|
||||
|
@ -944,142 +943,141 @@
|
|||
),
|
||||
if((blue < 100) and (red < green), blue*1.5, blue)
|
||||
)"
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
{TRAIT_INTELLIGENT}
|
||||
[object]
|
||||
silent=yes
|
||||
[effect]
|
||||
apply_to=image_mod
|
||||
add=CS(-10,-25,+5)
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modifications]
|
||||
extra_recruit=Elvish Hero, Elvish Ranger
|
||||
[/unit]
|
||||
[message]
|
||||
speaker=Glildur
|
||||
message= _ "End of the road, little dwarves! That ruby is as good as ours..."
|
||||
[/message]
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
{TRAIT_INTELLIGENT}
|
||||
[object]
|
||||
silent=yes
|
||||
[effect]
|
||||
apply_to=image_mod
|
||||
add=CS(-10,-25,+5)
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modifications]
|
||||
extra_recruit=Elvish Hero, Elvish Ranger
|
||||
[/unit]
|
||||
[message]
|
||||
speaker=Glildur
|
||||
message= _ "End of the road, little dwarves! That ruby is as good as ours..."
|
||||
[/message]
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
#ifdef HARD
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Lord"}
|
||||
#endif
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
#ifdef HARD
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
{RANDOM_MERCENARY_2 "Dwarvish Dragonguard"}
|
||||
#endif
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
#ifdef HARD
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Champion"}
|
||||
#endif
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
#ifdef HARD
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Avenger"}
|
||||
#endif
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
#ifdef HARD
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
{RANDOM_MERCENARY_2 "Elvish Outrider"}
|
||||
#endif
|
||||
[message]
|
||||
speaker=Rugnur
|
||||
message= _ "Thursagan! The elves are right on our tail! What should we do?"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Thursagan
|
||||
message= _ "We should try to set off the volcano as soon as possible. Draw the elves further into the caves, so they can’t escape when it does erupt."
|
||||
[/message]
|
||||
[terrain]
|
||||
terrain=Qxu^Bp/
|
||||
x=34,34,35
|
||||
y=4,5,6
|
||||
[/terrain]
|
||||
[unstore_unit]
|
||||
variable=harohk
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE harohk}
|
||||
[/event]
|
||||
[message]
|
||||
speaker=Rugnur
|
||||
message= _ "Thursagan! The elves are right on our tail! What should we do?"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Thursagan
|
||||
message= _ "We should try to set off the volcano as soon as possible. Draw the elves further into the caves, so they can’t escape when it does erupt."
|
||||
[/message]
|
||||
[terrain]
|
||||
terrain=Qxu^Bp/
|
||||
x=34,34,35
|
||||
y=4,5,6
|
||||
[/terrain]
|
||||
[unstore_unit]
|
||||
variable=harohk
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE harohk}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=last_breath
|
||||
[filter]
|
||||
id=Glildur
|
||||
[/filter]
|
||||
[message]
|
||||
speaker=Glildur
|
||||
message= _ "Damnation! I almost had it... but now I join Landar..."
|
||||
[/message]
|
||||
[/event]
|
||||
[event]
|
||||
name=last_breath
|
||||
[filter]
|
||||
id=Glildur
|
||||
[/filter]
|
||||
[message]
|
||||
speaker=Glildur
|
||||
message= _ "Damnation! I almost had it... but now I join Landar..."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
#when the elves lose troops, the orcs gain them
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=no
|
||||
[filter]
|
||||
side=2
|
||||
[/filter]
|
||||
[gold]
|
||||
side=4
|
||||
amount=50
|
||||
[/gold]
|
||||
[gold]
|
||||
side=5
|
||||
amount=50
|
||||
[/gold]
|
||||
[/event]
|
||||
#when the elves lose troops, the orcs gain them
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=no
|
||||
[filter]
|
||||
side=2
|
||||
[/filter]
|
||||
[gold]
|
||||
side=4
|
||||
amount=50
|
||||
[/gold]
|
||||
[gold]
|
||||
side=5
|
||||
amount=50
|
||||
[/gold]
|
||||
[/event]
|
||||
|
||||
# the orcs are held back
|
||||
[event]
|
||||
name=enter_hex
|
||||
[filter]
|
||||
side=1
|
||||
x,y=30,3-8
|
||||
[/filter]
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name=turn_number
|
||||
less_than=6
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
{MOVE_UNIT (id=Gathor) 36 5}
|
||||
[remove_shroud]
|
||||
side=1
|
||||
x,y=32-43,3-9
|
||||
[/remove_shroud]
|
||||
[redraw]
|
||||
side=1
|
||||
[/redraw]
|
||||
[message]
|
||||
speaker=Gathor
|
||||
message= _ "Ah ha! I knew it, there are intruders! And yet our damned bridge is broken, it was built by idiots. Come, come, bring planks, we've got to get across!"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Rugnur
|
||||
message= _ "Huh. Well, let's not stay here too long."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Thursagan
|
||||
message= _ "Right, if we can get both the orcs and the elves behind us, maybe they'll fight each other."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
[/scenario]
|
||||
# the orcs are held back
|
||||
[event]
|
||||
name=enter_hex
|
||||
[filter]
|
||||
side=1
|
||||
x,y=30,3-8
|
||||
[/filter]
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name=turn_number
|
||||
less_than=6
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
{MOVE_UNIT (id=Gathor) 36 5}
|
||||
[remove_shroud]
|
||||
side=1
|
||||
x,y=32-43,3-9
|
||||
[/remove_shroud]
|
||||
[redraw]
|
||||
side=1
|
||||
[/redraw]
|
||||
[message]
|
||||
speaker=Gathor
|
||||
message= _ "Ah ha! I knew it, there are intruders! And yet our damned bridge is broken, it was built by idiots. Come, come, bring planks, we've got to get across!"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Rugnur
|
||||
message= _ "Huh. Well, let's not stay here too long."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Thursagan
|
||||
message= _ "Right, if we can get both the orcs and the elves behind us, maybe they'll fight each other."
|
||||
[/message]
|
||||
[/event]
|
||||
[/scenario]
|
||||
|
||||
#undef RANDOM_MERCENARY_2
|
||||
|
|
|
@ -30,6 +30,4 @@
|
|||
[/specials]
|
||||
attack_weight=0.0
|
||||
[/attack]
|
||||
|
||||
|
||||
[/unit_type]
|
||||
|
|
|
@ -8,301 +8,353 @@
|
|||
|
||||
#define SOF_MINECART_PLACE_IMAGE X Y
|
||||
|
||||
[if]
|
||||
[have_location]
|
||||
terrain=*^Br/
|
||||
x,y={X},{Y}
|
||||
[/have_location]
|
||||
[then]
|
||||
[item]
|
||||
# This IPF is needed to keep the cart from sitting too lowin the hex.
|
||||
# Cannot just move image around in the 72x72 canvas because then
|
||||
# it won't overlay the unit sprite correctly.
|
||||
# this might be making the shadows brighter, for some reason -> removing shadows for now
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~CROP(0,24,72,48),0,2)
|
||||
x,y={X},{Y}
|
||||
[/item]
|
||||
[/then]
|
||||
[elseif]
|
||||
[if]
|
||||
[have_location]
|
||||
terrain=*^Br\
|
||||
terrain=*^Br/
|
||||
x,y={X},{Y}
|
||||
[/have_location]
|
||||
[then]
|
||||
[item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~FL(horiz)~CROP(0,24,72,48),0,2)
|
||||
# This IPF is needed to keep the cart from sitting too lowin the hex.
|
||||
# Cannot just move image around in the 72x72 canvas because then
|
||||
# it won't overlay the unit sprite correctly.
|
||||
# this might be making the shadows brighter, for some reason -> removing shadows for now
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~CROP(0,24,72,48),0,2)
|
||||
x,y={X},{Y}
|
||||
[/item]
|
||||
[/then]
|
||||
[/elseif]
|
||||
[else]
|
||||
[item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-n.png~CROP(0,20,72,52),0,1)
|
||||
x,y={X},{Y}
|
||||
[/item]
|
||||
[/else]
|
||||
[/if]
|
||||
[elseif]
|
||||
[have_location]
|
||||
terrain=*^Br\
|
||||
x,y={X},{Y}
|
||||
[/have_location]
|
||||
[then]
|
||||
[item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~FL(horiz)~CROP(0,24,72,48),0,2)
|
||||
x,y={X},{Y}
|
||||
[/item]
|
||||
[/then]
|
||||
[/elseif]
|
||||
[else]
|
||||
[item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-n.png~CROP(0,20,72,52),0,1)
|
||||
x,y={X},{Y}
|
||||
[/item]
|
||||
[/else]
|
||||
[/if]
|
||||
|
||||
#enddef
|
||||
|
||||
#define SOF_OBJ_MINECART VAR
|
||||
[object]
|
||||
silent=yes
|
||||
id=sof_mine_cart_{VAR}
|
||||
take_only_once=no
|
||||
[filter]
|
||||
id=${VAR}.id
|
||||
race=dwarf
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[standing_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/standing_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[idle_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/idle_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[movement_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/movement_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=movement
|
||||
increase=5
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=movement_costs
|
||||
replace=yes
|
||||
[movement_costs]
|
||||
shallow_water=99
|
||||
reef=99
|
||||
swamp_water=99
|
||||
flat=99
|
||||
sand=99
|
||||
forest=99
|
||||
hills=99
|
||||
mountains=99
|
||||
village=99
|
||||
castle=99
|
||||
cave=99
|
||||
frozen=99
|
||||
fungus=99
|
||||
unwalkable=99
|
||||
impassable=99
|
||||
rails=1
|
||||
[/movement_costs]
|
||||
[/effect]
|
||||
[then]
|
||||
# it's one of these
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-n.png~CROP(0,20,72,52),0,1)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~CROP(0,24,72,48),0,2)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~FL(horiz)~CROP(0,24,72,48),0,2)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[/then]
|
||||
[/object]
|
||||
|
||||
[object]
|
||||
silent=yes
|
||||
id=sof_mine_cart_{VAR}
|
||||
take_only_once=no
|
||||
[filter]
|
||||
id=${VAR}.id
|
||||
race=dwarf
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[standing_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/standing_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[idle_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):100
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/idle_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=new_animation
|
||||
[movement_anim]
|
||||
start_time=0
|
||||
base_score=2
|
||||
terrain_type=*^Br*
|
||||
[if]
|
||||
terrain_type=*^Br|
|
||||
[frame]
|
||||
image=misc/mine-cart-n.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-n.png,0,0),0,0):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
terrain_type=*^Br\
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0)~FL(horiz):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[else]
|
||||
terrain_type=*^Br/
|
||||
[frame]
|
||||
image=misc/mine-cart-ne.png~BLIT(${VAR}.image|~TC(${VAR}.side|,magenta)~MASK(misc/mine-cart-mask-ne.png,0,0),0,0):200
|
||||
auto_hflip=no
|
||||
auto_vflip=no
|
||||
[/frame]
|
||||
[/else]
|
||||
[/movement_anim]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=movement
|
||||
increase=5
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=movement_costs
|
||||
replace=yes
|
||||
[movement_costs]
|
||||
shallow_water=99
|
||||
reef=99
|
||||
swamp_water=99
|
||||
flat=99
|
||||
sand=99
|
||||
forest=99
|
||||
hills=99
|
||||
mountains=99
|
||||
village=99
|
||||
castle=99
|
||||
cave=99
|
||||
frozen=99
|
||||
fungus=99
|
||||
unwalkable=99
|
||||
impassable=99
|
||||
rails=1
|
||||
[/movement_costs]
|
||||
[/effect]
|
||||
[then]
|
||||
# it's one of these
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-n.png~CROP(0,20,72,52),0,1)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~CROP(0,24,72,48),0,2)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[remove_item]
|
||||
image=misc/blank-hex.png~BLIT(misc/mine-cart-ne.png~FL(horiz)~CROP(0,24,72,48),0,2)
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/remove_item]
|
||||
[/then]
|
||||
[/object]
|
||||
|
||||
#enddef
|
||||
|
||||
#define SOF_REMOVE_OBJ_MINECART VAR
|
||||
[remove_object]
|
||||
id=${VAR}.id
|
||||
object_id=sof_mine_cart_{VAR}
|
||||
[/remove_object]
|
||||
[remove_object]
|
||||
id=${VAR}.id
|
||||
object_id=sof_mine_cart_{VAR}
|
||||
[/remove_object]
|
||||
|
||||
#enddef
|
||||
|
||||
#define SOF_MINECART_MENU VAR X Y
|
||||
|
||||
{SOF_MINECART_PLACE_IMAGE {X} {Y}}
|
||||
[set_variables]
|
||||
name={VAR}
|
||||
mode=replace
|
||||
[value]
|
||||
load="empty"
|
||||
x={X}
|
||||
y={Y}
|
||||
[/value]
|
||||
[/set_variables]
|
||||
{SOF_MINECART_PLACE_IMAGE {X} {Y}}
|
||||
[set_variables]
|
||||
name={VAR}
|
||||
mode=replace
|
||||
[value]
|
||||
load="empty"
|
||||
x={X}
|
||||
y={Y}
|
||||
[/value]
|
||||
[/set_variables]
|
||||
|
||||
[set_menu_item]
|
||||
id=sof_minecart_boarding_{VAR}
|
||||
description= _ "Board Cart"
|
||||
image=buttons/WML-custom.png
|
||||
[show_if]
|
||||
[variable]
|
||||
name={VAR}.load
|
||||
equals=empty
|
||||
[/variable]
|
||||
[variable]
|
||||
name={VAR}.x
|
||||
equals=$x1
|
||||
[/variable]
|
||||
[variable]
|
||||
name={VAR}.y
|
||||
equals=$y1
|
||||
[/variable]
|
||||
[have_unit]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
race=dwarf
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
[filter_location]
|
||||
terrain=*^Br*
|
||||
[/filter_location]
|
||||
[command]
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_{VAR}
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value=$passenger_{VAR}.id
|
||||
[/set_variable]
|
||||
{SOF_OBJ_MINECART passenger_{VAR}}
|
||||
# this is needed for graphics reasons, not just the movement
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_redraw
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[if]
|
||||
# this variable is removed every new turn
|
||||
[set_menu_item]
|
||||
id=sof_minecart_boarding_{VAR}
|
||||
description= _ "Board Cart"
|
||||
image=buttons/WML-custom.png
|
||||
[show_if]
|
||||
[variable]
|
||||
name=passenger_moves
|
||||
equals=yes
|
||||
name={VAR}.load
|
||||
equals=empty
|
||||
[/variable]
|
||||
[else]
|
||||
[set_variable]
|
||||
name=passenger_redraw.moves
|
||||
add=5
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
[variable]
|
||||
name={VAR}.x
|
||||
equals=$x1
|
||||
[/variable]
|
||||
[variable]
|
||||
name={VAR}.y
|
||||
equals=$y1
|
||||
[/variable]
|
||||
[have_unit]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
race=dwarf
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
[filter_location]
|
||||
terrain=*^Br*
|
||||
[/filter_location]
|
||||
[command]
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_{VAR}
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value=$passenger_{VAR}.id
|
||||
[/set_variable]
|
||||
{SOF_OBJ_MINECART passenger_{VAR}}
|
||||
# this is needed for graphics reasons, not just the movement
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_redraw
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[if]
|
||||
# this variable is removed every new turn
|
||||
[variable]
|
||||
name=passenger_moves
|
||||
value=yes
|
||||
[/set_variable]
|
||||
[/else]
|
||||
[/if]
|
||||
[unstore_unit]
|
||||
variable=passenger_redraw
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE passenger_redraw}
|
||||
[redraw]
|
||||
side=1
|
||||
[/redraw]
|
||||
[/command]
|
||||
[/set_menu_item]
|
||||
[set_menu_item]
|
||||
id=sof_minecart_unboarding_{VAR}
|
||||
description= _ "Leave Cart"
|
||||
image=buttons/WML-custom.png
|
||||
[show_if]
|
||||
[have_unit]
|
||||
x,y=$x1|,$y1|
|
||||
id=${VAR}.load
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
[filter_location]
|
||||
terrain=*^Br*
|
||||
[/filter_location]
|
||||
[command]
|
||||
equals=yes
|
||||
[/variable]
|
||||
[else]
|
||||
[set_variable]
|
||||
name=passenger_redraw.moves
|
||||
add=5
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name=passenger_moves
|
||||
value=yes
|
||||
[/set_variable]
|
||||
[/else]
|
||||
[/if]
|
||||
[unstore_unit]
|
||||
variable=passenger_redraw
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE passenger_redraw}
|
||||
[redraw]
|
||||
side=1
|
||||
[/redraw]
|
||||
[/command]
|
||||
[/set_menu_item]
|
||||
[set_menu_item]
|
||||
id=sof_minecart_unboarding_{VAR}
|
||||
description= _ "Leave Cart"
|
||||
image=buttons/WML-custom.png
|
||||
[show_if]
|
||||
[have_unit]
|
||||
x,y=$x1|,$y1|
|
||||
id=${VAR}.load
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
[filter_location]
|
||||
terrain=*^Br*
|
||||
[/filter_location]
|
||||
[command]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value="empty"
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.x
|
||||
value=$x1
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.y
|
||||
value=$y1
|
||||
[/set_variable]
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_redraw
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[if]
|
||||
[variable]
|
||||
name=passenger_redraw.moves
|
||||
greater_than=$passenger_redraw.max_moves
|
||||
[/variable]
|
||||
[then]
|
||||
[set_variable]
|
||||
name=passenger_redraw.moves
|
||||
value=$passenger_redraw.max_moves
|
||||
[/set_variable]
|
||||
[/then]
|
||||
[/if]
|
||||
[unstore_unit]
|
||||
variable=passenger_redraw
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE passenger_redraw}
|
||||
{SOF_MINECART_PLACE_IMAGE $x1 $y1}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/command]
|
||||
[/set_menu_item]
|
||||
|
||||
# if a cart-rider attacks, they exit the cart
|
||||
[event]
|
||||
name=attack
|
||||
first_time_only=no
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name={VAR}.load
|
||||
equals=$unit.id
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value="empty"
|
||||
|
@ -316,101 +368,49 @@
|
|||
value=$y1
|
||||
[/set_variable]
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=${VAR}.x|,${VAR}.y|
|
||||
[/filter]
|
||||
variable=passenger_redraw
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[if]
|
||||
[variable]
|
||||
name=passenger_redraw.moves
|
||||
greater_than=$passenger_redraw.max_moves
|
||||
[/variable]
|
||||
[then]
|
||||
[set_variable]
|
||||
name=passenger_redraw.moves
|
||||
value=$passenger_redraw.max_moves
|
||||
[/set_variable]
|
||||
[/then]
|
||||
[/if]
|
||||
[unstore_unit]
|
||||
variable=passenger_redraw
|
||||
find_vacant=no
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE passenger_redraw}
|
||||
{SOF_MINECART_PLACE_IMAGE $x1 $y1}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/command]
|
||||
[/set_menu_item]
|
||||
[/event]
|
||||
|
||||
# if a cart-rider attacks, they exit the cart
|
||||
[event]
|
||||
name=attack
|
||||
first_time_only=no
|
||||
[filter_condition]
|
||||
[variable]
|
||||
# if a cart-rider is attacked, they exit the cart
|
||||
[event]
|
||||
name=attack
|
||||
first_time_only=no
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name={VAR}.load
|
||||
equals=$second_unit.id
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
equals=$unit.id
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value="empty"
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.x
|
||||
value=$x1
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.y
|
||||
value=$y1
|
||||
[/set_variable]
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
{SOF_MINECART_PLACE_IMAGE $x1 $y1}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/event]
|
||||
value="empty"
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.x
|
||||
value=$x2
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.y
|
||||
value=$y2
|
||||
[/set_variable]
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
{SOF_MINECART_PLACE_IMAGE $x2 $y2}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/event]
|
||||
|
||||
# if a cart-rider is attacked, they exit the cart
|
||||
[event]
|
||||
name=attack
|
||||
first_time_only=no
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name={VAR}.load
|
||||
equals=$second_unit.id
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
[set_variable]
|
||||
name={VAR}.load
|
||||
value="empty"
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.x
|
||||
value=$x2
|
||||
[/set_variable]
|
||||
[set_variable]
|
||||
name={VAR}.y
|
||||
value=$y2
|
||||
[/set_variable]
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
{SOF_MINECART_PLACE_IMAGE $x2 $y2}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/event]
|
||||
# part of mechanism that prevents infinite movement by reboarding the cart
|
||||
[event]
|
||||
name=side 1 turn
|
||||
first_time_only=no
|
||||
{CLEAR_VARIABLE passenger_moves}
|
||||
[/event]
|
||||
|
||||
# part of mechanism that prevents infinite movement by reboarding the cart
|
||||
[event]
|
||||
name=side 1 turn
|
||||
first_time_only=no
|
||||
{CLEAR_VARIABLE passenger_moves}
|
||||
[/event]
|
||||
|
||||
# variables cleanup
|
||||
[event]
|
||||
name=scenario_end
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/event]
|
||||
# variables cleanup
|
||||
[event]
|
||||
name=scenario_end
|
||||
{SOF_REMOVE_OBJ_MINECART passenger_{VAR}}
|
||||
{CLEAR_VARIABLE passenger_{VAR}}
|
||||
[/event]
|
||||
|
||||
#enddef
|
||||
|
|
|
@ -88,3 +88,17 @@
|
|||
[/endlevel]
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# wmlindent: start ignoring
|
||||
#define SOF_GLILDUR_PORTRAIT
|
||||
profile="portraits/elves/captain.png~CHAN(
|
||||
if((blue < 100) and (red > green), red*0.6, red),
|
||||
if(
|
||||
(blue < 100) and (red < green), green*0.7,
|
||||
(blue < 100) and (red < 100) and (red > green), green*0.7,
|
||||
green
|
||||
),
|
||||
if((blue < 100) and (red < green), blue*1.5, blue)
|
||||
)"
|
||||
#enddef
|
||||
# wmlindent: stop ignoring
|
||||
|
|
|
@ -222,7 +222,7 @@ I decided to hide in the cemetery. That way I could try my experiment to animate
|
|||
[/modifications]
|
||||
[/unit]
|
||||
#enddef
|
||||
# wmllint: whofield PLACE_GUARD 6
|
||||
# wmllint: whofield PLACE_GUARD 6
|
||||
|
||||
# *************************** PRESTART ***************************
|
||||
[event]
|
||||
|
@ -620,7 +620,7 @@ of Healing"
|
|||
name=location
|
||||
[/clear_variable]
|
||||
#enddef
|
||||
# wmllint: whofield MOVE_AND_PLACE_GUARD 3
|
||||
# wmllint: whofield MOVE_AND_PLACE_GUARD 3
|
||||
|
||||
[event]
|
||||
name=guards_emerge
|
||||
|
@ -936,7 +936,7 @@ Well, I might as well do my experiment and worry about leaving later."
|
|||
{MAKE_BATS_NORMAL}
|
||||
{ZOMBIES}
|
||||
|
||||
# wmllint: whofield clear PLACE_GUARD MOVE_AND_PLACE_GUARD
|
||||
# wmllint: whofield clear PLACE_GUARD MOVE_AND_PLACE_GUARD
|
||||
#undef PLACE_GUARD
|
||||
#undef MOVE_AND_PLACE_GUARD
|
||||
#undef SET_MENU_ITEM_FOR
|
||||
|
|
|
@ -311,7 +311,7 @@ We crossed the high plateaus, and forded the Arkan-thoria. Then we headed up int
|
|||
[/if]
|
||||
[remove_item]
|
||||
x,y=$x1,$y1
|
||||
image=holy_water
|
||||
image=holy_water
|
||||
[/remove_item]
|
||||
[store_items]
|
||||
variable=holy_waters
|
||||
|
|
|
@ -137,14 +137,14 @@
|
|||
# concatenation of a boolean, presumably because the strings are all either
|
||||
# "yes" or "no". If that changes, this code can be uncommented, and the code
|
||||
# above removed.
|
||||
# [set_variable]
|
||||
# name=ardonna_zombies
|
||||
# [join]
|
||||
# variable=zombies
|
||||
# key=allow_recruit
|
||||
# separator=","
|
||||
# [/join]
|
||||
# [/set_variable]
|
||||
# [set_variable]
|
||||
# name=ardonna_zombies
|
||||
# [join]
|
||||
# variable=zombies
|
||||
# key=allow_recruit
|
||||
# separator=","
|
||||
# [/join]
|
||||
# [/set_variable]
|
||||
#enddef
|
||||
|
||||
#define LOAD_ZOMBIE_LIST VARIABLE
|
||||
|
@ -166,8 +166,8 @@
|
|||
# longer added to the recruit list directly, but to the zombie recruit dialog.
|
||||
#define NEW_UNIT_TYPE_KILLED FILTER ZOMBIE_TYPE PROFILE_IMAGE
|
||||
[event]
|
||||
# Only humans are ever added with the custom event name, but we include it for
|
||||
# that case.
|
||||
# Only humans are ever added with the custom event name, but we include it for
|
||||
# that case.
|
||||
name=die, add_{ZOMBIE_TYPE}
|
||||
[filter]
|
||||
{FILTER}
|
||||
|
@ -206,12 +206,12 @@
|
|||
boolean_equals=yes
|
||||
[/variable]
|
||||
[then]
|
||||
[set_variable]
|
||||
# This won't include the current one being added.
|
||||
[set_variable]
|
||||
# This won't include the current one being added.
|
||||
name=num_zombie_types
|
||||
add=1
|
||||
[/set_variable]
|
||||
[/then]
|
||||
[/then]
|
||||
[/if]
|
||||
[if]
|
||||
[variable]
|
||||
|
@ -490,7 +490,7 @@
|
|||
[event]
|
||||
name=preload
|
||||
first_time_only=no
|
||||
[lua]
|
||||
[lua]
|
||||
code = <<
|
||||
H = wesnoth.require "helper"
|
||||
T = wml.tag
|
||||
|
|
|
@ -198,8 +198,8 @@
|
|||
#enddef
|
||||
|
||||
#define ENABLE_AI_COMMAND_CA_TRANSPORT_S6
|
||||
[lua]
|
||||
code = <<
|
||||
[lua]
|
||||
code = <<
|
||||
local helper = wesnoth.require "helper"
|
||||
|
||||
function wesnoth.custom_synced_commands.ship_unload(cfg)
|
||||
|
@ -223,5 +223,5 @@ function wesnoth.custom_synced_commands.ship_unload(cfg)
|
|||
end
|
||||
|
||||
>>
|
||||
[/lua]
|
||||
[/lua]
|
||||
#enddef
|
||||
|
|
|
@ -196,7 +196,6 @@
|
|||
{WILDTHING 27 14}
|
||||
[/event]
|
||||
|
||||
|
||||
#ifdef EASY
|
||||
# Compensate that you get less experience points on easy.
|
||||
[event]
|
||||
|
@ -296,7 +295,6 @@
|
|||
|
||||
[event]
|
||||
name=victory
|
||||
|
||||
[/event]
|
||||
|
||||
{HERODEATH_AIGLONDUR}
|
||||
|
|
|
@ -380,7 +380,7 @@
|
|||
[/objectives]
|
||||
[/event]
|
||||
|
||||
# wmllint: unbalanced-on
|
||||
# wmllint: unbalanced-on
|
||||
#define PLACE_ENEMY_UNITS
|
||||
[lua]
|
||||
code = <<
|
||||
|
@ -414,7 +414,7 @@
|
|||
name=orc dialogue
|
||||
[/fire_event]
|
||||
#enddef
|
||||
# wmllint: unbalanced-off
|
||||
# wmllint: unbalanced-off
|
||||
|
||||
[event]
|
||||
name=orc dialogue
|
||||
|
@ -590,7 +590,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=last breath
|
||||
[filter]
|
||||
|
|
|
@ -312,7 +312,6 @@
|
|||
message= _ "Aye. Karrag, calling his troops to battle. Only the Dark Gods know what hellspawn the lich will summon. AXES UP!"
|
||||
[/message]
|
||||
|
||||
|
||||
{REPLACE_SCENARIO_MUSIC knalgan_theme.ogg}
|
||||
{APPEND_MUSIC siege_of_laurelmor.ogg}
|
||||
{APPEND_MUSIC underground.ogg}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#textdomain wesnoth-thot
|
||||
|
||||
#define NOTE_INSPIRE
|
||||
[special_note]
|
||||
note=_"The presence of this unit inspires own units next to it to deal more damage in combat, though this only applies to units of lower or equal level."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"The presence of this unit inspires own units next to it to deal more damage in combat, though this only applies to units of lower or equal level."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define ABILITY_INSPIRE
|
||||
|
|
|
@ -203,7 +203,7 @@
|
|||
|
||||
[message]
|
||||
speaker=Tan-Rarbag
|
||||
# po: meat is a derogatory term for humans used by orcs and also is a subtle reference to orcs eating humans opportunistically
|
||||
# po: meat is a derogatory term for humans used by orcs and also is a subtle reference to orcs eating humans opportunistically
|
||||
message= _ "Run, meat, run! Sooner or later, you will tire and our wolves will hunt you down!"
|
||||
[/message]
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#enddef
|
||||
|
||||
#define NOTE_DISTRACT
|
||||
[special_note]
|
||||
note=_"This unit is capable of distracting opponents, allowing allied units to trespass their Zones of Control and move unhindered around them."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit is capable of distracting opponents, allowing allied units to trespass their Zones of Control and move unhindered around them."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
|
|
@ -94,7 +94,6 @@
|
|||
{campaigns/The_South_Guard/utils/sg_story.cfg}
|
||||
{campaigns/The_South_Guard/utils/bigmap.cfg}
|
||||
|
||||
|
||||
[units]
|
||||
{campaigns/The_South_Guard/units}
|
||||
[/units]
|
||||
|
|
|
@ -701,8 +701,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
|
||||
# Victory - The bandits are defeated.
|
||||
|
||||
[event]
|
||||
|
|
|
@ -422,7 +422,6 @@
|
|||
[/have_unit]
|
||||
[/filter_condition]
|
||||
|
||||
|
||||
{VARIABLE have_bodyguard yes}
|
||||
|
||||
[message]
|
||||
|
|
|
@ -95,8 +95,8 @@
|
|||
recruit=Bone Shooter,Deathblade,Ghoul,Revenant,Blood Bat,Dark Adept
|
||||
#endif
|
||||
|
||||
# decrease Mebrin's moves so he doesn't run around too much
|
||||
# also make him weaker
|
||||
# decrease Mebrin's moves so he doesn't run around too much
|
||||
# also make him weaker
|
||||
[modifications]
|
||||
[object]
|
||||
[effect]
|
||||
|
@ -290,7 +290,7 @@
|
|||
{NAMED_LOYAL_UNIT 2 (Necromancer) 20 27 (Mal Maul) (_"Mal Maul")} {GUARDIAN}
|
||||
#endif
|
||||
|
||||
# trolls
|
||||
# trolls
|
||||
|
||||
{NAMED_LOYAL_UNIT 5 (Troll Hero) 8 17 (Grek) (_"Grek")} {GUARDIAN}
|
||||
#ifdef EASY
|
||||
|
@ -603,7 +603,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
# Confrontation with Mal Brin
|
||||
[event]
|
||||
name=sighted
|
||||
|
@ -768,7 +767,7 @@
|
|||
[/role]
|
||||
[/else]
|
||||
[/role]
|
||||
[/else]
|
||||
[/else]
|
||||
[/role]
|
||||
|
||||
[message]
|
||||
|
@ -854,7 +853,6 @@
|
|||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=last breath
|
||||
[filter]
|
||||
|
|
|
@ -127,8 +127,7 @@
|
|||
{VARIABLE secret_path.x 18}
|
||||
{VARIABLE secret_path.y 35}
|
||||
|
||||
|
||||
# the first undead will spawn on this turn+1 (i.e. turn {6 5 4})
|
||||
# the first undead will spawn on this turn+1 (i.e. turn {6 5 4})
|
||||
#ifdef EASY
|
||||
{VARIABLE first_undead_spawn_turn 5}
|
||||
#endif
|
||||
|
|
|
@ -138,7 +138,6 @@
|
|||
{NAMED_LOYAL_UNIT 1 (Heavy Infantryman) 11 11 (Rheban) (_"Rheban")}
|
||||
{NAMED_LOYAL_UNIT 1 (Bowman) 10 10 (Jul) (_"Jul")}
|
||||
|
||||
|
||||
# Lt. Meris' Section
|
||||
|
||||
{NAMED_LOYAL_UNIT 1 (Lieutenant) 21 10 (Meris) (_"Meris")}
|
||||
|
@ -190,7 +189,6 @@
|
|||
{LOYAL_UNIT 2 (Blood Bat) 32 10}
|
||||
#endif
|
||||
|
||||
|
||||
{MODIFY_UNIT x,y=16-33,1-25 facing sw}
|
||||
|
||||
{CLEAR_VARIABLE stored_side_1}
|
||||
|
|
|
@ -79,7 +79,6 @@
|
|||
{NAMED_GENERIC_UNIT 1 (Bowman) 19 12 () (_"Westin Guard")}
|
||||
{NAMED_GENERIC_UNIT 1 (Lieutenant) 19 11 () (_"Westin Guard")}
|
||||
#endif
|
||||
|
||||
[/side]
|
||||
|
||||
{STARTING_VILLAGES 1 15}
|
||||
|
@ -300,7 +299,7 @@
|
|||
y=8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,7 ,7 ,6 ,6
|
||||
[/move_unit_fake]
|
||||
|
||||
[music]
|
||||
[music]
|
||||
name=the_city_falls.ogg
|
||||
immediate=yes
|
||||
append=no
|
||||
|
|
|
@ -373,7 +373,6 @@
|
|||
{STARTING_VILLAGES 2 5}
|
||||
{STARTING_VILLAGES 3 5}
|
||||
|
||||
|
||||
# Start
|
||||
[event]
|
||||
name=start
|
||||
|
|
|
@ -7,24 +7,24 @@
|
|||
|
||||
# Text for storytelling (by narrator and [story]) is shown in a different color
|
||||
#define NARRATOR_COLOR
|
||||
<<#BAAC7D>> #enddef
|
||||
<<#BAAC7D>> #enddef
|
||||
|
||||
# Explanation of the game mechanics and strategic information uses this instead
|
||||
# Explanation of the game mechanics and strategic information uses this instead
|
||||
#define TUTOR_COLOR
|
||||
<<#D563D7>> #enddef
|
||||
<<#D563D7>> #enddef
|
||||
|
||||
# macro for usage in [message] tags
|
||||
# macro for usage in [message] tags
|
||||
#define NARRATOR: MESSAGE
|
||||
message=<span color='{NARRATOR_COLOR}'> + {MESSAGE} + </span> # wmllint: ignore
|
||||
#enddef
|
||||
|
||||
# macro for usage in [part] tags
|
||||
# macro for usage in [part] tags
|
||||
#define STORY: MESSAGE
|
||||
story=<span color='{NARRATOR_COLOR}'> + {MESSAGE} + </span> # wmllint: ignore
|
||||
#enddef
|
||||
|
||||
# macro for usage in [message] tags
|
||||
# often combined with an image of the explained object
|
||||
# macro for usage in [message] tags
|
||||
# often combined with an image of the explained object
|
||||
#define TUTOR: MESSAGE
|
||||
message=<span color='{TUTOR_COLOR}'> + {MESSAGE} + </span> # wmllint: ignore
|
||||
#enddef
|
||||
|
|
|
@ -425,13 +425,13 @@ Besides... I want my brother back."
|
|||
[/modify_side]
|
||||
|
||||
{MODIFY_AI_ADD_CANDIDATE_ACTION 3 main_loop (
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=ca_muff_toras_move
|
||||
id=ca_muff_toras_move
|
||||
max_score=15000
|
||||
location="campaigns/Two_Brothers/ai/ca_muff_toras_move.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=ca_muff_toras_move
|
||||
id=ca_muff_toras_move
|
||||
max_score=15000
|
||||
location="campaigns/Two_Brothers/ai/ca_muff_toras_move.lua"
|
||||
[/candidate_action]
|
||||
)}
|
||||
|
||||
[remove_shroud]
|
||||
|
|
|
@ -212,7 +212,7 @@
|
|||
condition=win
|
||||
[show_if]
|
||||
[have_unit]
|
||||
# wmllint: recognize Possessed Garak
|
||||
# wmllint: recognize Possessed Garak
|
||||
id=Possessed Garak
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
|
@ -478,7 +478,7 @@
|
|||
{CLEAR_VARIABLE tents}
|
||||
{CLEAR_VARIABLE rally_chance}
|
||||
|
||||
# depending on what units rally, and where, player can lose a village to the north champion purely to RNG, this scout can block that without being too wonderful otherwise
|
||||
# depending on what units rally, and where, player can lose a village to the north champion purely to RNG, this scout can block that without being too wonderful otherwise
|
||||
#ifndef HARD
|
||||
[recall]
|
||||
type=Quenoth Scout
|
||||
|
@ -1223,7 +1223,7 @@
|
|||
[/event]
|
||||
|
||||
#define BOOL_CHECK VARIABLE VALUE
|
||||
{VARIABLE_CONDITIONAL {VARIABLE} boolean_equals {VALUE}}
|
||||
{VARIABLE_CONDITIONAL {VARIABLE} boolean_equals {VALUE}}
|
||||
#enddef
|
||||
|
||||
# Turn 12
|
||||
|
|
|
@ -1375,7 +1375,7 @@
|
|||
x,y=28,24
|
||||
side=4
|
||||
[/capture_village]
|
||||
|
||||
|
||||
[capture_village]
|
||||
x,y=35,27
|
||||
side=4
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
#define UNDEAD_TROLL_DESCRIPTION
|
||||
_ "These undead trolls fight again in death as they did in life, except this time they smell much worse."
|
||||
{NOTE_PLAGUE}
|
||||
_ "These undead trolls fight again in death as they did in life, except this time they smell much worse."
|
||||
{NOTE_PLAGUE}
|
||||
#enddef
|
||||
|
||||
[scenario]
|
||||
|
|
|
@ -1539,7 +1539,7 @@
|
|||
[/store_unit]
|
||||
[/then]
|
||||
[else]
|
||||
# introduce new necromancer triad member
|
||||
# introduce new necromancer triad member
|
||||
|
||||
[remove_shroud]
|
||||
x=13-17
|
||||
|
|
|
@ -62,21 +62,21 @@ A poisoned unit cannot be cured of its poison by a healer, and must seek the car
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
#define NOTE_UTBS_HEALS
|
||||
[special_note]
|
||||
note=_"This unit is capable of basic healing and slowing dehydration."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit is capable of basic healing and slowing dehydration."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_UTBS_CURES
|
||||
[special_note]
|
||||
note=_"This unit is capable of healing those around it, slowing dehydration, and curing them of poison."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit is capable of healing those around it, slowing dehydration, and curing them of poison."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_ETHEREAL
|
||||
[special_note]
|
||||
note=_"SPECIAL_NOTE^This unit is able to move through solid stone walls."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"SPECIAL_NOTE^This unit is able to move through solid stone walls."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
# This is the Teaching ability owned by Garak
|
||||
|
@ -188,33 +188,33 @@ Marksman attacks are only affected if the chance to hit is greater than 60%."
|
|||
#enddef
|
||||
|
||||
#define NOTE_SHOCK
|
||||
[special_note]
|
||||
note=_"This unit’s melee attack can overwhelm the defenses of enemies, preventing them from retaliating as effectively."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit’s melee attack can overwhelm the defenses of enemies, preventing them from retaliating as effectively."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_FORMATION
|
||||
[special_note]
|
||||
note=_"Groups of units of this type are able to shield each other in combat."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"Groups of units of this type are able to shield each other in combat."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_DISENGAGE
|
||||
[special_note]
|
||||
note=_"This unit can move either before or after attacking."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit can move either before or after attacking."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_DAZE
|
||||
[special_note]
|
||||
note=_"This unit can daze its enemies, reducing their accuracy and defense until they end a turn."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit can daze its enemies, reducing their accuracy and defense until they end a turn."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define NOTE_DISTRACT
|
||||
[special_note]
|
||||
note=_"This unit is capable of distracting opponents, allowing allied units to trespass their Zones of Control and move unhindered around them."
|
||||
[/special_note]
|
||||
[special_note]
|
||||
note=_"This unit is capable of distracting opponents, allowing allied units to trespass their Zones of Control and move unhindered around them."
|
||||
[/special_note]
|
||||
#enddef
|
||||
|
||||
#define ABILITY_DISENGAGE_EVENTS
|
||||
|
|
|
@ -46,7 +46,6 @@ Hd, Dd*, Dd^E*, Rd #enddef
|
|||
[for]
|
||||
array=dehydrating_units
|
||||
[do]
|
||||
|
||||
[if]
|
||||
[have_unit]
|
||||
x,y=$dehydrating_units[$i].x,$dehydrating_units[$i].y
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
caption= _ "Welcome to Wesnoth!"
|
||||
image=wesnoth-icon.png
|
||||
message= _ "This is a two-part tutorial intended for people who are new to the game. Part 1 will teach you the basics about movement, attacking, healing, and recruiting. Firstly, you’ll choose a hero (both heroes play the same)." +
|
||||
{CONTINUE_MSG}
|
||||
{CONTINUE_MSG}
|
||||
[/message]
|
||||
|
||||
[select_character][/select_character]
|
||||
|
@ -628,7 +628,7 @@
|
|||
|
||||
[disallow_end_turn]
|
||||
reason=_"You cannot end your turn until you have completed the lesson on healing!"
|
||||
[/disallow_end_turn]
|
||||
[/disallow_end_turn]
|
||||
|
||||
# works around the situation that the player can't do anything anymore
|
||||
# if he disobeys orders - inserts [allow_end_turn][/allow_end_turn]
|
||||
|
@ -695,7 +695,7 @@
|
|||
|
||||
[disallow_end_turn]
|
||||
reason=_"You cannot end your turn until you have completed the lesson on recruiting!"
|
||||
[/disallow_end_turn]
|
||||
[/disallow_end_turn]
|
||||
|
||||
{ALLOW_END_TURN_AFTER_ATTACK}
|
||||
|
||||
|
@ -827,7 +827,7 @@
|
|||
|
||||
[disallow_end_turn]
|
||||
reason=_"You cannot end your turn until you have completed the lesson on attacking!"
|
||||
[/disallow_end_turn]
|
||||
[/disallow_end_turn]
|
||||
|
||||
{ALLOW_END_TURN_AFTER_ATTACK}
|
||||
|
||||
|
|
|
@ -520,7 +520,7 @@ If either Shaman advances to become a Druid, then she’ll be able to heal adjac
|
|||
{PRINT ( _ "Recruit or recall your troops")}
|
||||
[/on_undo]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
first_time_only=no
|
||||
|
@ -578,7 +578,6 @@ If either Shaman advances to become a Druid, then she’ll be able to heal adjac
|
|||
[/if]
|
||||
[/event]
|
||||
|
||||
|
||||
[event]
|
||||
name=turn 2
|
||||
|
||||
|
@ -960,7 +959,7 @@ Please report the bug."
|
|||
[fire_event]
|
||||
name=check_income
|
||||
[/fire_event]
|
||||
|
||||
|
||||
# Just in case the player still hasn't captured 16,9.
|
||||
[if]
|
||||
[have_location]
|
||||
|
|
Loading…
Add table
Reference in a new issue