New scenario #3 for UtBS with all required changes.

Hopefully everything works as intended ;)
This commit is contained in:
Piotr Cychowski 2008-01-13 07:18:54 +00:00
parent d5a046fdd3
commit 3381c60efa
16 changed files with 5398 additions and 2597 deletions

View file

@ -32,12 +32,18 @@
[entry]
name = "Asa Swain"
[/entry]
[entry]
name= "Piotr Cychowski"
[/entry]
[/about]
[about]
title= _ "Campaign Maintenance"
[entry]
name = "Jan Rietema (Rhuvaen)"
[/entry]
[entry]
name = "Piotr Cychowski (Mist)"
[/entry]
[/about]
[about]
title= _ "Artwork and Graphics Design"
@ -63,7 +69,7 @@
name = "Peter Geinitz (Shadow)"
[/entry]
[entry]
name = "Hogne Håskjold (Frame)"
name = "Hogne Haskjold (Frame)"
[/entry]
[entry]
name = "Mark Goodenough (Ranger M)"
@ -86,6 +92,9 @@
[entry]
name = "Ringcaat (Thorin N. Tatge)"
[/entry]
[entry]
name = "Zookeeper"
[/entry]
text=_"And special thanks to everyone else who I forgot to mention."
[/about]
[/campaign]
@ -109,6 +118,5 @@
[/units]
{campaigns/Under_the_Burning_Suns/scenarios}
{campaigns/Under_the_Burning_Suns/utils/macros.cfg}
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,106 @@
# Scenario 3: A Stirring in the Night (alternate)
#!-- This would be a side branch to try new things while keeping camapign intact and playable
#!-- As trying to rewrite everything from the start would inadvertly screw something big I'll try it this way
#!-- Because of the sheer size of the task ahead I'll take modular approach
#!-- Main scenario file will only call macros and set the enviroment
#!-- Every macro will be defined in it's own file in /utils/scen3_alt
#!-- This should allow minimalise effort needed when tweaking/fixing/removing/replacing events
#!-- I am aware that tasks requiring mechanical alteration of whole scenario file will be made harder in this way
#!-- But I think this can be overcome by proper shell scripting
#!-- If you are a new maintainer and feel this deployment is limiting feel free to abandon it
#!-- Scenario notes
#!-- Scenario should work under following assumptions
#!-- Player finds himself on the battlefield between feuding undead
#!-- Undead deploy champions (one each)
#!-- Number of tents saved from destruction affects unit limit later in campaign
#!-- Character Garak is removed from campaign at this stage
#!-- There is an orc raid in second half
#!-- Thereis no timeflow, scenario takes place at night
#!-- Above gives us
[scenario]
#textdomain wesnoth-utbs
id="3_Stirring_in_the_Night_alt"
name= _ "A Stirring in the Night (development branch)"
label= _ "A Stirring in the Night (development branch)"
map_data="{campaigns/Under_the_Burning_Suns/maps/03_A_Stirring_in_the_Night.map}"
#!-- This appends the module files for the scenario
{campaigns/Under_the_Burning_Suns/scenarios/scen3_alt}
[music]
name=frantic.ogg
[/music]
#!-- I shouldn't allow the branches to remerge, to many things would get broken at once, but who cares, it sucks anyway ;)
next_scenario=4_Descending_into_Darkness
#don't display snapshot of map in saved games
snapshot="no"
#there is no turn limit for this scenario
turns="-1"
victory_when_enemies_defeated=no
{LONGDARK4}
#! -- Story leading to sceanario
{STORY_CHAPTER_3} #
#! -- Setting up sides
{SIDES_SETUP}#
#! -- standart macro
{STARTING_VILLAGES 1 30}#
#! -- setting up objectives,variables and map objects
#! -- sets variables : $ambush_turn, $sneak_up, $elven_camps, $killed_by_azkotep, $killed_by_ystara, $grak_challenged, $zur_challenged
{PRESTART}#
#! -- initial dialogue, placement of champions ^ probably should be moved to prestart
{SCENARIO_START}#
#! -- at the end of the initial dialogue kaleh raises a war cry, some elves will wake up and respond
{WAR_CRY}#
#! -- count (or store) dying elves and orcs, they will make a host for possesed Garak
#! -- sets variables : $azkotep_casaulties, $ystara_casaulties
#! -- affects variables : $killed_by_ystara, $killed_by_azkotep
{ELF_CORPSE}#
#! -- count destroyed tents, each lost makes future scenarios harder
#! -- includes defeat by loss of tents
#! -- affects variables : $elven_camps
{DESTROY_TENT}#
#! -- instead with providing AI with higher lvl units on medium and hard give it highly experienced lvl1's
#ifdef EASY
#else
{RECRUIT_TWEAK}#
#endif
#! -- if opposing champion wasn't attacked by the player yet Garak can issue a challenge
#! -- affects variables : $grak_challenged, $zur_challenged
{CHALLENGE}#
#! -- if challenge didn't happen by turn 12 and bad guy die garak gets possesed
#! -- sets variable : $ElvishGarak, $defiant_death
#! -- depends on variables : $grak_challenged, $zur_challenged, $azkotep_casaulties[], $ystara_casaulties[], $killed_by_azkotep, $killed_by_ystara
#! -- clears variables : $azkotep_casaulties[], $ystara_casaulties[], $killed_by_azkotep, $killed_by_ystara
{POSSESION}#
#! -- somewhere around turn 8 an orc raiding party makes an entrance
#! -- affects variables : $sneak_up
#! -- depends on variables : $ambush_turn
#! -- clears variables : $ambush_turn
{ORC_PARTY}#
#! -- handles evil guys deaths and victory events, lots of dialogue
#! -- includes glorious victory
#! -- includes normal victory
#! -- sets variables : $scen3 (for compatibility with classic branch)
#! -- depends on variables : $ElvishGarak, $defiant_death, $elven_camps
#! -- clears variables : $ElvishGarak, $grak_challenged, $zur_challenged, $defiant_death, $elven_camps
{CREEP_DEATH}
#! -- and the good guys die
{KALEH_DEATH}#
{FRIEND_DEATH}#
{ELYSSA_DEATH}#
#!-- There will be a number of flavour event's here. Or no :)
[/scenario]

View file

@ -0,0 +1,392 @@
#! -- Inform the player about the possibility of challenge and adjust garak accordingly
#! -- Perform the challenge, set the death events where required
#! -- internal variables : $garak_duel, $garak_x, $garak_y, $challenged
#define CHALLENGE
[event]
name=turn 2
[message]
speaker=Garak
message=_"These champions... I will challenge them. Zhul, bless my weapons with light of Eloh."
[/message]
[message]
speaker=Zhul
message=_"Garak, but the suns..."
[/message]
[message]
speaker=Kaleh
message=_"You will not do any such thing, anyone trying to fight these creeps singlehanded will surely die. We need you, we will not make it without you."
[/message]
[message]
speaker=Garak
message=_"I had dreams this night Kaleh, full of gloom and darkness, my journey will end here one way or another."
[/message]
[message]
speaker=Kaleh
message=_"No! That's not true, our future is what we make of it, stay behind for this fight and... "
[/message]
[message]
speaker=Garak
message=_"And what? You'll help me become a coward? I lived long, I'm not afraid of the end, just let me give it some meaning."
[/message]
[message]
speaker=Zhul
message=_"I bless you champion with the light that will come, I bless you with the memory and the promise. Break your bow champion, and let your sword shine in the dark."
[/message]
[object]
id=Garak_vow
silent=yes
[filter]
description=Garak
[/filter]
[effect]
apply_to=remove_attacks
range=ranged
[/effect]
[effect]
apply_to=new_ability
[abilities]
{ABILITY_STEADFAST}
[/abilities]
[/effect]
[/object]
[/event]
[event]
name=attack
first_time_only=no
[filter]
description=Garak
[or]
description=Grak
[/or]
[or]
description=Zur
[/or]
[/filter]
[filter_second]
description=Garak
[or]
description=Grak
[/or]
[or]
description=Zur
[/or]
[/filter_second]
[if]
[and]
[variable]
name=second_unit.description
equals=Grak
[/variable]
[or]
[variable]
name=second_unit.description
equals=Zur
[/variable]
[/or]
[/and]
[and]
[variable]
name=unit.description
equals=Garak
[/variable]
[/and]
[then]
{VARIABLE challenged $second_unit.description}
{VARIABLE garak_x $x1}
{VARIABLE garak_y $y1}
[store_unit]
[filter]
description=Garak
[/filter]
variable=garak_duel
kill=no
[/store_unit]
[object]
id=$challenged
silent=yes
[filter]
description=Garak
[/filter]
[effect]
apply_to=attack
range=melee
[set_specials]
{WEAPON_SPECIAL_BERSERK}
#ifdef HARD
#elseif
{WEAPON_SPECIAL_MAGICAL}
{WEAPON_SPECIAL_FIRSTSTRIKE}
#endif
mode=append
[/set_specials]
[/effect]
[/object]
[if]
[variable]
name=challenged
equals=Grak
[/variable]
[then]
[message]
description=Garak
message=_"You there! Creep! Stand an face me shade! I challenge you!"
[/message]
[if]
[variable]
name=zur_dueled
equals=0
[/variable]
[then]
[message]
description=Grak
message=_"Foolish mortal... For crossing my path I'll devour your soul and torment it for all eternity..."
[/message]
[/then]
[else]
[message]
description=Grak
message=_"So you destroyed Zur... Come mortal, lets cross our blades... It's time for you to take his place..."
[/message]
[/else]
[/if]
[/then]
[else]
[message]
description=Garak
message=_"You there! Pile of bones! I challenge you, stand and face me!"
[/message]
[if]
[variable]
name=grak_dueled
equals=0
[/variable]
[then]
[message]
description=Zur
message=_"Puny elf... Time to die..."
[/message]
[/then]
[else]
[message]
description=Zur
message=_"Grak was weak... But still you deserve respect... Meet my axe and take his place..."
[/message]
[/else]
[/if]
[/else]
[/if]
[event]
name=die
[filter]
description=Garak
[/filter]
[message]
description=$challenged
message=_"And so it ends... Your champion is dead elves... Come join him..."
[/message]
[/event]
[event]
name=die
[filter]
description=$challenged
[/filter]
{DEBUG_MSG berserk_end}
{VARIABLE_OP garak_duel.experience add 16}
[unstore_unit]
variable=garak_duel
x=$garak_x
y=$garak_y
advance=yes
[/unstore_unit]
[if]
[variable]
name=second_unit.description
equals=Grak
[/variable]
[then]
{VARIABLE grak_dueled 1}
[/then]
[else]
{VARIABLE zur_dueled 1}
[/else]
[/if]
{CLEAR_VARIABLE garak_duel}
{CLEAR_VARIABLE garak_x}
{CLEAR_VARIABLE garak_y}
{CLEAR_VARIABLE challenged}
[/event]
[/then]
[/if]
[if]
[and]
[variable]
name=unit.description
equals=Grak
[/variable]
[or]
[variable]
name=unit.description
equals=Zur
[/variable]
[/or]
[/and]
[and]
[variable]
name=second_unit.description
equals=Garak
[/variable]
[/and]
[then]
{VARIABLE challenged $unit.description}
{VARIABLE garak_x $x1}
{VARIABLE garak_y $y1}
[store_unit]
[filter]
description=Garak
[/filter]
variable=garak_duel
kill=no
[/store_unit]
[object]
id=challenge_duel
silent=yes
[filter]
description=Garak
[/filter]
[effect]
apply_to=attack
range=melee
[set_specials]
{WEAPON_SPECIAL_BERSERK}
#ifdef HARD
#elseif
{WEAPON_SPECIAL_MAGICAL}
{WEAPON_SPECIAL_FIRSTSTRIKE}
#endif
mode=append
[/set_specials]
[/effect]
[/object]
[if]
[variable]
name=challenged
equals=Grak
[/variable]
[then]
[message]
decription=Garak
message=_"You there! Creep! Stand an face me shade! I challenge you!"
[/message]
[if]
[variable]
name=zur_dueled
equals=0
[/variable]
[then]
[message]
description=Grak
message=_"Foolish mortal... For crossing my path I'll devour your soul and torment it for all eternity..."
[/message]
[/then]
[else]
[message]
description=Grak
message=_"So you destroyed Zur... Come mortal, lets cross our blades... It's time for you to take his place..."
[/message]
[/else]
[/if]
[/then]
[else]
[message]
description=Garak
message=_"You there! Pile of bones! I challenge you, stand and face me!"
[/message]
[if]
[variable]
name=grak_dueled
equals=0
[/variable]
[then]
[message]
description=Zur
message=_"Puny elf... Time to die..."
[/message]
[/then]
[else]
[message]
description=Zur
message=_"Grak was weak... But still you deserve respect... Meet my axe and take his place..."
[/message]
[/else]
[/if]
[/else]
[/if]
[event]
name=die
[filter]
description=Garak
[/filter]
[message]
description=$challenged
message=_"And so it ends... Your champion is dead elves... Come join him..."
[/message]
[/event]
[event]
name=die
[filter]
description=$challenged
[/filter]
{DEBUG_MSG berserk_end}
{VARIABLE_OP garak_duel.experience add 16}
[unstore_unit]
variable=garak_duel
x=$garak_x
y=$garak_y
advance=yes
[/unstore_unit]
[if]
[variable]
name=second_unit.description
equals=Grak
[/variable]
[then]
{VARIABLE grak_dueled 1}
[/then]
[else]
{VARIABLE zur_dueled 1}
[/else]
[/if]
{CLEAR_VARIABLE garak_duel}
{CLEAR_VARIABLE garak_x}
{CLEAR_VARIABLE garak_y}
{CLEAR_VARIABLE challenged}
[/event]
[/then]
[/if]
[/event]
[event]
name=die
[filter]
description=Garak
[/filter]
[filter_second]
[not]
description=Grak
[/not]
[not]
description=Zur
[/not]
[/filter_second]
[message]
description=Kaleh
message=_"Where is Garak? Has anybody seen him?"
[/message]
[message]
description=Zhul
message=_"I've seen him jumping into deep darknes awhile ago pursuing agroup of enemies. Let's hope nothing happened to him."
[/message]
[/event]
#enddef

View file

@ -0,0 +1,477 @@
#! -- internal variables : $other_creep
#define CREEP_DEATH
[event]
name=die
[filter]
description=Azkotep,Ystara
[/filter]
[if]
[variable]
name=unit.description
equals=Azkotep
[/variable]
[then]
{VARIABLE other_creep "Ystara"}
[/then]
[else]
{VARIABLE other_creep "Azkotep"}
[/else]
[/if]
[if]
[have_unit]
description=$other_creep
[/have_unit]
[then]
[message]
description=$unit.description
message= _ "You think you have defeated me, don't you? Foolish boy, I shall assume a new form more powerful and horrible than you could ever imagine!"
[/message]
[message]
description=$other_creep
message= _ "How dare you interfere in our contest! I did not need your help. I shall teach you not to cross a lord of darkness."
[/message]
{CLEAR_VARIABLE other_creep}
[/then]
[/if]
[if]
[have_unit]
description=Possessed Garak
[/have_unit]
[or]
[not]
[have_unit]
description=Possesed Garak
[/have_unit]
[/not]
[variable]
name=turn_number
greater_than=11
[/variable]
[/or]
[then]
[message]
description=Kaleh
message= _ "Finally. It is over."
[/message]
[if]
[have_unit]
description=Possessed Garak
[/have_unit]
[then]
[message]
description=Possessed Garak
message= _ "See, I told you I was more powerful. This game is over, now I can leave this shell of a body."
[/message]
[kill]
description=Possessed Garak
animate=no
fire_event=no
[/kill]
[unstore_unit]
variable=ElvishGarak
find_vacant=yes
[/unstore_unit]
[message]
description=Zhul
message= _ "He's...He's still breathing!"
[/message]
[message]
description=Garak
message= _ "Protect the boy for me Zhul, (cough) I go to a better place."
[/message]
[kill]
description=Garak
animate=yes
fire_event=no
[/kill]
[/then]
[else]
[message]
description=Nym
message=_"What about Garak?"
[/message]
[if]
[variable]
name=defiant_death
equals=0
[/variable]
[then]
[message]
description=Kaleh
message=_"I've asked and looked around, there is no sign of him or his body"
[/message]
[message]
description=Zhul
message=_"He's probably dead then, but he died as a warrior. Let's respect his wishes and remember him for that."
[/message]
[/then]
[else]
[message]
description=Zhul
message=_"He died as a hero. Remember that and tell the tale, for it's worth it."
[/message]
[/else]
[/if]
[/else]
[/if]
[message]
description=Kaleh
message= _ "From the sands he came, to the sands he will return. We remember and honor his sacrifice, and I vow that his death will not be in vain. "
[/message]
[message]
description=Zhul
message= _ "Goodbye old friend, may Eloh shine her light eternal upon you."
[/message]
[message]
description=Elyssa
message= _ "He was as brave and valiant a fighter as I have ever seen in my travels."
[/message]
[message]
description=Nym
message= _ "He was a bastard at times.... But...but why did he have to die? It...it just doesn't make sense. "
[/message]
[if]
[variable]
name=elven_camps
equals=12
[/variable]
[then]
[message]
description=Zhul
message= _ "Miraculously, all of our encampments survived the night."
[/message]
[message]
description=Nym
message= _ "Though we saved almost all our people this time, we won't always be so lucky. While elves who have fought with you in the past will gladly return, if the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 1}
[/then]
[else]
[message]
description=Zhul
message= _ "Well, only $elven_camps encampments remain, but we will survive."
[/message]
[message]
description=Kaleh
message= _ "Yes, but at what cost?"
[/message]
[if]
[variable]
name=elven_camps
greater_than=8
[/variable]
[then]
[message]
description=Nym
message= _ "Though we saved almost all our people this time, we won't always be so lucky. While elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 1}
[/then]
[else]
[if]
[variable]
name=elven_camps
greater_than=6
[/variable]
[then]
[message]
description=Nym
message= _ "We have suffered losses, but we we are not broken yet. We have saved most of our people tonight. But while elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARAIBLE scen3 2}
[/then]
[else]
[message]
description=Nym
message= _ "We have suffered grievous losses, but we we are not broken yet. Long will this slaughter be remembered by our people. Where was Eloh during the darkness? And I'm afraid that while elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 3}
[/else]
[/if]
[/else]
[/if]
[/else]
[/if]
[message]
description=Kaleh
message= _ "All this death and destruction. What were those shades arguing over? Was this all just some sort of demented game?"
[/message]
[message]
description=Zhul
message= _ "The lords of the dead are powerful and twisted indeed. Only Eloh knows the truth of what happened tonight."
[/message]
[message]
description=Nym
message= _ "I don't want to be here tomorrow night to find out. The hills to the north are close. Let's be far away before another nightfall."
[/message]
{CLEAR_vARIABLE elven_camps}
{CLEAR_VARIABLE defiant_death}
{CLEAR_VARIABLE zur_challenged}
{CLEAR_VARIABLE grak_challenged}
{CLEAR_VARIABLE ElvishGarak}
{CLEAR_VARIABLE other_creep}
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/then]
[/if]
[if]
[not]
[have_unit]
description=$other_creep
[/have_unit]
[/not]
[variable]
name=turn_number
less_than=12
[/variable]
[then]
[message]
description=Kaleh
message= _ "The undead lords are defeated at last."
[/message]
[message]
description=Ganthos
message= _ "There's too many of them and the night is almost gone. Pull back you wretches, pull back!"
[/message]
[message]
description=Nym
message= _ "I can see the first rays of Naia shining over the horizon. She never looked so beautiful. The undead forces have crumbled into dust and the remaining orcs are retreating with the dawn."
[/message]
[message]
description=Zhul
message= _ "That was a very brave thing you did, Kaleh, defeating both of those Undead Lords. It took great courage and strength. Because of your daring attack, we did not have to wait for the dawn to save us. You were our savior. And many fewer of our people died than would have if we had had to wait out the long night."
[/message]
[message]
description=Nym
message= _ "Though we saved almost all our people this time, we won't always be so lucky. While elves who have fought with you in the past will gladly return, if the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
[message]
speaker=Ystara
message= _ "You have triumphed for the moment, but think not that the dark lords can be so easily vanquished. We shall return, and shall rule long after your bones have crumbled to dust. This is our land, and none shall leave it unscathed."
[/message]
[message]
speaker=Azkotep
message= _ "You fought so hard to protect your precious people, young elf. No great deed should go unpunished."
[/message]
[if]
[have_unit]
description=Garak
[/have_unit]
[then]
[message]
speaker=Ystara
message= _ "A token to remember us by..."
[/message]
[message]
speaker=Garak
message= _ "Aaaauuugggghhhh!"
[/message]
[message]
speaker=Zhul
message= _ "He just collapsed!"
[/message]
[message]
description=Garak
message= _ "Protect the boy for me Zhul, (cough) I go to a better place."
[/message]
[kill]
description=Garak
animate=yes
fire_event=no
[/kill]
[/then]
[else]
[message]
speaker=Ystara
message=_"You will never see your champion again. And we will torment his soul for the rest of the eternity."
[/message]
[message]
speaker=Zhul
message=_"Don't listen to them, they are powerless in their defeat. Even if Garak fell in battle his soul went to a better place and they can't reach him there."
[/message]
[/else]
[/if]
[message]
description=Kaleh
message= _ "From the sands he came, to the sands he will return. We remember and honor his sacrifice, and I vow that his death will not be in vain. "
[/message]
[message]
description=Zhul
message= _ "Goodbye old friend, may Eloh shine her light eternal upon you."
[/message]
[message]
description=Elyssa
message= _ "He was as brave and valiant a fighter as I have ever seen in my travels."
[/message]
[message]
description=Nym
message= _ "He was a bastard at times.... But...but why did he have to die? It...it just doesn't make sense. "
[/message]
#! -- for compatibility with classic path
{VARIABLE scen3 1}
{CLEAR_vARIABLE elven_camps}
{CLEAR_VARIABLE defiant_death}
{CLEAR_VARIABLE zur_challenged}
{CLEAR_VARIABLE grak_challenged}
{CLEAR_VARIABLE ElvishGarak}
{CLEAR_VARIABLE other_creep}
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/then]
[/if]
[/event]
[event]
name=die
[filter]
description=Possesed Garak
[/filter]
[kill]
description=Possessed Garak
animate=no
fire_event=no
[/kill]
[if]
[have_unit]
description=Azkotep
[/have_unit]
[then]
[message]
description=Azkotep
message= _ "Hah, now you have learned the flesh is always weaker than the powers of the undead."
[/message]
[/then]
[else]
[message]
description=Ystara
message= _ "My undead zombies shall always defeat the living."
[/message]
[/else]
[/if]
[message]
description=Kaleh
message= _ "Finally. It is over."
[/message]
[unstore_unit]
variable=ElvishGarak
find_vacant=yes
[/unstore_unit]
[message]
description=Zhul
message= _ "He's...He's still breathing!"
[/message]
[message]
description=Garak
message= _ "Protect the boy for me Zhul, (cough) I go to a better place."
[/message]
[kill]
description=Garak
animate=yes
fire_event=no
[/kill]
[message]
description=Kaleh
message= _ "From the sands he came, to the sands he will return. We remember and honor his sacrifice, and I vow that his death will not be in vain. "
[/message]
[message]
description=Zhul
message= _ "Goodbye old friend, may Eloh shine her light eternal upon you."
[/message]
[message]
description=Elyssa
message= _ "He was as brave and valiant a fighter as I have ever seen in my travels."
[/message]
[message]
description=Nym
message= _ "He was a bastard at times.... But...but why did he have to die? It...it just doesn't make sense. "
[/message]
[if]
[variable]
name=elven_camps
equals=12
[/variable]
[then]
[message]
description=Zhul
message= _ "Miraculously, all of our encampments survived the night."
[/message]
[message]
description=Nym
message= _ "Though we saved almost all our people this time, we won't always be so lucky. While elves who have fought with you in the past will gladly return, if the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 1}
[/then]
[else]
[message]
description=Zhul
message= _ "Well, only $elven_camps encampments remain, but we will survive."
[/message]
[message]
description=Kaleh
message= _ "Yes, but at what cost?"
[/message]
[if]
[variable]
name=elven_camps
greater_than=8
[/variable]
[then]
[message]
description=Nym
message= _ "Though we saved almost all our people this time, we won't always be so lucky. While elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 1}
[/then]
[else]
[if]
[variable]
name=elven_camps
greater_than=6
[/variable]
[then]
[message]
description=Nym
message= _ "We have suffered losses, but we we are not broken yet. We have saved most of our people tonight. But while elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARAIBLE scen3 2}
[/then]
[else]
[message]
description=Nym
message= _ "We have suffered grievous losses, but we we are not broken yet. Long will this slaughter be remembered by our people. Where was Eloh during the darkness? And I'm afraid that while elves who have fought with you in the past will gladly return, as the numbers of our people dwindle, it's going to become more and more costly to recruit new warriors. It would be wise to stockpile gold against this eventuality."
[/message]
{VARIABLE scen3 3}
[/else]
[/if]
[/else]
[/if]
[/else]
[/if]
[message]
description=Kaleh
message= _ "All this death and destruction. What were those shades arguing over? Was this all just some sort of demented game?"
[/message]
[message]
description=Zhul
message= _ "The lords of the dead are powerful and twisted indeed. Only Eloh knows the truth of what happened tonight."
[/message]
[message]
description=Nym
message= _ "I don't want to be here tomorrow night to find out. The hills to the north are close. Let's be far away before another nightfall."
[/message]
{CLEAR_vARIABLE elven_camps}
{CLEAR_VARIABLE defiant_death}
{CLEAR_VARIABLE zur_challenged}
{CLEAR_VARIABLE grak_challenged}
{CLEAR_VARIABLE ElvishGarak}
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/event]
#enddef

View file

@ -0,0 +1,73 @@
#! -- Count number of tents lost by player and fire defeat event when needed
#! -- Each tent lost to undead spawns a WC
#define DESTROY_TENT
[event]
name=capture
first_time_only=no
[terrain]
x=$x1
y=$y1
letter=Dd
[/terrain]
[if]
[variable]
name=unit.side
equals=2
[/variable]
[or]
[variable]
name=unit.side
equals=3
[/variable]
[/or]
[then]
{UNIT_ (Walking Corpse) () ("") $unit.side $x1 $y1}
[if]
[variable]
name=elven_camps
equals=12
[/variable]
[then]
[message]
description=Nym
message= _ "They're raising the corpses of our fallen! What a horrible fate!"
[/message]
[message]
description=Elyssa
message= _ "Then we shall have to give them a proper cremation."
[/message]
[/then]
[/if]
[/then]
[/if]
[gold]
#ifdef EASY
amount=10
#endif
#ifdef NORMAL
amount=20
#endif
#ifdef HARD
amount=30
#endif
side=$unit.side
[/gold]
{VARIABLE_OP elven_camps add -1}
[if]
[variable]
name=elven_camps
equals=5
[/variable]
[then]
[message]
description=Kaleh
message= _ "Too many of our people have been killed. We will surely be overwhelmed by the undead now. All is lost!"
[/message]
[endlevel]
result=defeat
[/endlevel]
[/then]
[/if]
[/event]
#enddef

View file

@ -0,0 +1,52 @@
#!-- This event is pretty simple, with intention of giving Garak a number of walking corpses
#!-- equal to number of lost units. Point to consider is to actualy zombify the killed by storing them
#!-- and unstoring as a recruit list when Garak is posessed.
#define ELF_CORPSE
[event]
name=die
first_time_only=no
[filter]
side=1,4
[/filter]
[if]
[variable]
name=second_unit.side
value=2
[/variable]
[then]
#ifdef HARD
[store_unit]
[filter]
description=$unit.description
[/filter]
variable=azkotep_casaulties[$killed_by_azkotep]
kill=no
[/store_unit]
#endif
{VARIABLE_OP killed_by_azkotep add 1}
[/then]
[/if]
[if]
[variable]
name=second_unit.side
value=3
[/variable]
[then]
#ifdef HARD
[store_unit]
[filter]
description=$unit.description
[/filter]
variable=ystara_casaulties[$killed_by_ystara]
kill=no
[/store_unit]
#endif
{VARIABLE_OP killed_by_ystara add 1}
[/then]
[/if]
[/event]
#enddef

View file

@ -0,0 +1,228 @@
#! -- Creates warning about incoming orcs two turns before they show up
#! -- Creates orcs themselvs on random turnaround turn 8
#! -- Creates die event for orcish boss and reward for killing him
#! -- Internal variables : $orc_warning, $parchment_x, $parchment_y
#define ORC_PARTY
[event]
name=new turn
first_time_only="no"
{VARIABLE orc_warning $ambush_turn}
{VARIABLE_OP orc_warning add -2}
[if]
[variable]
name=turn_number
equals=$orc_warning
[/variable]
[then]
{FREE_UNIT (Desert Scout) (Elven Scout) ( _ "Wounded Elven Scout") 1 1 1}
[message]
description=Elven Scout
message=_"Orcs... Not far behind me... From the hills..."
[/message]
{DEBUG_MSG "Scout dies. There is a lot of crude arrows sticking from his back."}
[kill]
description=Elven Scout
animate=yes
fire_event=no
[/kill]
[/then]
[/if]
{CLEAR_VARIABLE orc_warning}
[/event]
[event]
name=new turn
first_time_only="no"
[if]
[variable]
name=turn_number
numerical_equals=$ambush_turn
[/variable]
[then]
[unit]
#ifdef EASY
type=Orcish Leader
#else
type=Orcish Ruler
#endif
description=Ganthos
user_description= _ "Ganthos"
upkeep=free
canrecruit=1
side=4
x=3
y=4
[/unit]
#ifdef HARD
{FREE_UNIT (Goblin Pillager) (Goblin Raider) ( _ "Goblin Raider") 4 2 4}
{FREE_UNIT (Goblin Pillager) (Goblin Raider) ( _ "Goblin Raider") 4 3 3}
#else
{FREE_UNIT (Wolf Rider) (Goblin Raider) ( _ "Goblin Raider") 4 2 4}
{FREE_UNIT (Wolf Rider) (Goblin Raider) ( _ "Goblin Raider") 4 3 3}
#endif
#ifdef HARD
{FREE_UNIT (Orcish Crossbowman) (Orc Raider) ( _ "Orc Raider") 4 1 5}
{FREE_UNIT (Orcish Crossbowman) (Orc Raider) ( _ "Orc Raider") 4 3 2}
#else
{FREE_UNIT (Orcish Archer) (Orc Raider) ( _ "Orc Raider") 4 1 5}
{FREE_UNIT (Orcish Archer) (Orc Raider) ( _ "Orc Raider") 4 3 2}
#endif
#ifdef NORMAL
{FREE_UNIT (Orcish Assassin) (Orc Raider) ( _ "Orc Raider") 4 2 5}
{FREE_UNIT (Orcish Assassin) (Orc Raider) ( _ "Orc Raider") 4 4 2}
#endif
#ifdef HARD
{FREE_UNIT (Orcish Slayer) (Orc Raider) ( _ "Orc Raider") 4 2 5}
{FREE_UNIT (Orcish Slayer) (Orc Raider) ( _ "Orc Raider") 4 4 2}
#endif
#ifdef EASY
{FREE_UNIT (Orcish Grunt) (Orc Raider) ( _ "Orc Raider") 4 3 6}
{FREE_UNIT (Orcish Grunt) (Orc Raider) ( _ "Orc Raider") 4 5 3}
#else
{FREE_UNIT (Orcish Warrior) (Orc Raider) ( _ "Orc Raider") 4 3 6}
{FREE_UNIT (Orcish Warrior) (Orc Raider) ( _ "Orc Raider") 4 5 3}
#endif
#give orcs an income, if they ever capture a keep to use it
[modify_side]
side=4
#ifdef EASY
income=10
gold=75
#endif
#ifdef NORMAL
income=15
gold=100
#endif
#ifdef HARD
income=20
gold=125
#endif
[/modify_side]
[message]
description=Ganthos
message= _ "What's this on our borders? Stinkin' elves and more undead? We'll teach them a lesson they won't soon forget. Attack!"
[/message]
[message]
description=Kaleh
message= _ "If those raiders capture any of our encampments, I fear our people's fate will be just as bad as if it was captured by the undead."
[/message]
{CLEAR_VARIABLE ambush_turn}
[/then]
[/if]
[/event]
[event]
name=die
[filter]
description=Ganthos
[/filter]
[if]
[variable]
name=second_unit.side
equals=1
[/variable]
[then]
[message]
description=Ganthos
message=_"You got me elf... But you won't be so lucky with the tribes of the hills... (cough)"
[/message]
[message]
description=Ganthos
message=_"I deeply regret... I won't be able to see that..."
[/message]
[/then]
[else]
[message]
description=Ganthos
messsage=_"Killed by a dead creep... (cough)"
[/message]
[/else]
[/if]
[item]
x,y=$x1,$y1
image="items/parchment.png"
[/item]
[message]
description=Nym
message=_"Look, he dropped something! I wonder what it is..."
[/message]
{VARIABLE parchment_x $x1}
{VARIABLE parchment_y $y1}
[event]
name=moveto
[filter]
x=$parchment_x
y=$parchment_y
[/filter]
[if]
[variable]
name=unit.side
equals=1
[/variable]
[then]
[message]
description=unit
message=_"It's some sort of a map. I think I recognize some of those hills ahead on it."
[/message]
[message]
description=Nym
message=_"And these look like camps and patrol routes. A lot of camps and patrol routes. Kaleh, do you think we could sneak up between them?"
[/message]
[message]
description=Kaleh
message=_"Difficult, but worth a try I guess. But first lets try to survive this mess."
[/message]
[message]
description=Nym
message=_"Right, sorry. Damn creeps."
[/message]
{VARIABLE sneak_up 1}
[/then]
[else]
[message]
description=Nym
message=_"And now we'll never know what was on that parchment. Shame."
[/message]
[/else]
[/if]
[removeitem]
x=$parchment_x
y=$parchment_y
[/removeitem]
[/event]
#ifdef EASY
[if]
[have_unit]
race=orc
[/have_unit]
[then]
[message]
race=orc
message=_"Chief has fallen! Flee!"
[/message]
[/then]
[else]
[if]
[have_unit]
race=goblin
[/have_unit]
[then]
[message]
race=goblin
message=_"Boss dead! Run!"
[/message]
[/then]
[/if]
[/else]
[/if]
[kill]
race=orc,goblin
animate=no
fire_event=no
[/kill]
#endif
{CLEAR_VARIABLE parchment_x}
{CLEAR_VARIABLE parchment_y}
[/event]
#enddef

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,103 @@
#define PRESTART
[event]
name=prestart
# set starting scenario objectives
[objectives]
summary= _ "Starting Objectives:"
[objective]
description= _ "Survive Until Dawn (or)"
condition=win
[/objective]
[objective]
description= _ "Defeat all Undead Leaders"
condition=win
[/objective]
[objective]
description= _ "You Control Less Than 6 Villages"
condition=lose
[/objective]
[objective]
description= _ "Death of Kaleh, Nym, Garak or Zhul"
condition=lose
[/objective]
[/objectives]
#recall heroes
[recall]
description=Nym
[/recall]
[recall]
description=Elyssa
[/recall]
[recall]
description=Zhul
[/recall]
[recall]
description=Garak
[/recall]
[item]
x=14
y=10
halo=halo/fire-aura.png
[/item]
[item]
x=16
y=15
halo=halo/fire-aura.png
[/item]
[item]
x=13
y=20
halo=halo/fire-aura.png
[/item]
#ifdef EASY
{RANDOM 7..9}
#endif
#ifdef NORMAL
{RANDOM 6..8}
#endif
#ifdef HARD
{RANDOM 6..8}
#endif
{VARIABLE ambush_turn $random}
# give player 12 villages to protect
{VARIABLE elven_camps 12}
{VARIABLE sneak_up 0}
{VARIABLE killed_by_azkotep 0}
{VARIABLE killed_by_ystara 0}
{VARIABLE grak_challenged 0}
{VARIABLE zur_challenged 0}
{VARIABLE defiant_death 0}
[/event]
#Time Areas correspond with halo around campfires
#North campfire
#!-- FIXME idealy these would be called within the event itself, but unfortunately it's not supported yet
[time_area]
x=14,12,13,14,15,16,12,13,14,15,16,12,13,14,15,16,13,14,15
y=8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12
{DUSK}
[/time_area]
#Central campfire
[time_area]
x=16,14,15,16,17,18,14,15,16,17,18,14,15,16,17,18,15,16,17
y=13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17
{DUSK}
[/time_area]
#South Campfire
[time_area]
x=12,13,14,11,12,13,14,15,11,12,13,14,15,11,12,13,14,15,13
y=18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22
{DUSK}
[/time_area]
#enddef

View file

@ -0,0 +1,35 @@
#! -- Change the difficulty increase model from having computer recruit some lvl2 and 3 units outright
#! -- to advancing or half-advancing recruited lvl 1. At the same time guarantees broader spectrum of opposing units
#! -- as ai advancement is random
#! -- internal variables : $factor
#define RECRUIT_TWEAK
[event]
name=recruit
first_time_only=no
[filter]
side=2,3,4
x=$x1
y=$y1
[/filter]
#ifdef MEDIUM
{VARIABLE factor $unit.max_experience}
{VARIABLE_OP factor multiply 0.5}
[set_variable]
name=unit.experience
value=$factor
[/set_variable]
#else
[set_variable]
name=unit.experience
value=$unit.max_experience
[/set_variable]
#endif
[unstore_unit]
variable=unit
x=$x1
y=$y1
[/unstore_unit]
{CLEAR_VARIABLE factor}
[/event]
#enddef

View file

@ -0,0 +1,100 @@
#!-- This file contains start of scenario event. It sets up initial undead units and plays intro dialogue
#define SCENARIO_START
[event]
name=start
#ifdef EASY
{UNIT_ (Revenant) (Zur) ( _ "Zur") 2 20 22}
{UNIT_ (Wraith) (Grak) ( _ "Grak") 3 22 7}
#!-- On medium and hard change champions type to more menacing and give them some help
#else
{UNIT_ (Skeleton Rider) () ("") 2 20 23}
{UNIT_ (Skeleton Rider) () ("") 2 21 23}
{UNIT_ (Necrophage) () ("") 3 22 6}
{UNIT_ (Necrophage) () ("") 3 23 7}
#endif
#ifdef MEDIUM
{UNIT_ (Deathblade) (Zur) (_"Zur") 2 20 22}
{UNIT_ (Shadow) (Grak) (_"Grak") 3 22 7}
#endif
#ifdef HARD
{UNIT_ (Draug) (Zur) (_"Zur") 2 20 22}
{UNIT_ (Nightgaunt) (Grak) (_"Grak") 3 22 7}
#endif
[message]
description=Nym
message= _ "Kaleh, wake up! Sentries report movement in the sands!"
[/message]
[message]
description=Kaleh
message= _ "Orcs?"
[/message]
[message]
description=Nym
message= _ "I don't..."
[/message]
[message]
description=Azkotep
message= _ "We meet again Ystara."
[/message]
[message]
description=Ystara
message= _ "You think you can take me, Azkotep?"
[/message]
[message]
description=Azkotep
message= _ "My champion, Zur shall slice you to shreds like the puny adept you once were."
[/message]
[message]
description=Ystara
message= _ "You always were an arrogant little bastard. Grek will swallow your soul, or what's left of it."
[/message]
[message]
description=Azkotep
message= _ "You spurned me once and I will make you pay. To battle, my minions! Become my wrath!"
[/message]
[message]
description=Nym
message= _ "... think so. You really know how to pick a campsite, Kaleh."
[/message]
[message]
description=Kaleh
message= _ "Where did they come from? I swear those castles weren't there at sunset."
[/message]
[message]
description=Zhul
message= _ "Many strange things can happen during the long dark. But despite their wraith-like forms, I have no doubt that their cold steel can still bite flesh."
[/message]
[message]
description=Elyssa
message= _ "Like I haven't killed enough undead recently. Why can't these guys just stay dead?"
[/message]
[message]
description=Garak
message= _ "Our encampment is out of the direct line of attack, so we should be somewhat safe, at least."
[/message]
[message]
description=Zhul
message= _ "But if the battle spills around our people will be slaughtered by the undead hordes!"
[/message]
[message]
description=Kaleh
message= _ "There's no way we can escape the battle in time. We must protect the camp from the undead."
[/message]
[message]
description=Zhul
message= _ "I fear that if we lose more than half of the tents we will not have the strength to go on. Garak, wake your men. We must hold off the undead until dawn."
[/message]
[message]
description=Kaleh
message= _ "To arms my people, to arms!"
[/message]
[/event]
#enddef

View file

@ -0,0 +1,157 @@
#define SIDES_SETUP
# Side 1 elves
[side]
side=1
description=Kaleh
type=Desert Fighter
canrecruit=1
controller=human
recruit=Desert Fighter, Desert Archer, Desert Hunter, Desert Shaman, Desert Scout
{INCOME 4 2 0}
shround=no
fog=no
[/side]
# Side 2 undead, starts with pet revenant, Zur
[side]
side=2
description=Azkotep
user_description= _ "Azkotep"
type=Lich
canrecruit=1
controller=ai
{GOLD 100 125 150}
{INCOME 12 15 18}
recruit=Skeleton,Skeleton Archer,Skeleton Rider
[ai]
recruitment_pattern=scout,fighter,archer
aggression=0.9
caution=0.0
# tell the scouts to target villages
#!-- Actualy don't, the undead are interested in fighting themselvs, not hunting for some puny elves
#!-- Whatever, it doesn't work anyway
# keep leader from charging out in battle
passive_leader=yes
# AI will attack a weak unit with a max of 3,4,5 units
# depending on the difficulty
{ATTACK_DEPTH 3 4 5}
#!-- Needed to force AI to recruit non flying units
recruitment_ignore_bad_movement=yes
vilage_value=0
#ifdef EASY
scout_village_targeting=0
#endif
#ifdef MEDIUM
#endif
#ifdef HARD
scout_village_targeting=10
#endif
#!-- Do not target sides 1 and 4, thay are an annoyance not an enemy
#!-- Unless on Hard of course, death to the living
[target]
side=3
value=10
[/target]
[target]
description=Grak
value=20
[/target]
#ifdef HARD
[target]
side=1
value=5
[/target]
[target]
side=4
value=5
[/target]
#endif
[/ai]
[/side]
# Side 3 undead, starts with pet wraith, Grak
[side]
side=3
description=Ystara
user_description= _ "Ystara"
type=Spectre
canrecruit=1
controller=ai
{GOLD 100 125 150}
{INCOME 12 15 18}
recruit=Ghost,Walking Corpse,Ghoul
[ai]
recruitment_pattern=scout,fighter,scout
aggression=0.9
caution=0.0
passive_leader=yes
village_value=0
#ifdef EASY
scout_village_targeting=0
#endif
#ifdef MEDIUM
#endif
#ifdef HARD
scout_village_targeting=10
#endif
{ATTACK_DEPTH 3 4 5}
recruitment_ignore_bad_movement=yes
[target]
side=2
value=10
[/target]
[target]
description=Zur
value=20
[/target]
#ifdef HARD
[target]
side=1
value=5
[/target]
[target]
side=4
value=5
[/target]
#endif
[/ai]
[/side]
# Side 4, Orcish Raiders
# raider shouldn't usually capture elves's keep, but if they do, they can
# summon more units.
[side]
side=4
no_leader=yes
controller=ai
recruit=Orcish Grunt, Orcish Archer, Goblin Spearman, Orcish Assassin
shround=no
fog=no
[ai]
aggression=1.0
caution=0.0
scout_village_targeting=0
village_value=0
{ATTACK_DEPTH 3 4 5}
[/ai]
[/side]
#enddef

View file

@ -0,0 +1,16 @@
#define STORY_CHAPTER_3
[story]
[part]
story= _ "Chapter 3: As we continued north through the desert, the looming hills and mountains promised blessed relief from the seemingly never-ending sand. Soon we got to the end of the foothills, and we decided to rest there for the night. As tired as I was of marching across the sand, I felt strangely afraid. I had lived my entire life in the sands; they were my home, and the rocky hills and white glistening mountaintops seemed foreign and foreboding."
[/part]
[part]
story= _ "I worried if I was doing the right thing, leading my people to strange lands. Despite Eloh's promises, I was not as confident as Zhul was that it would all end well. Looking back I thought it strange that I was the one that Eloh showed herself to. I was never particularly devout, always worried more about day to day matters than the extra-worldly ones. But who was I to question a god?"
[/part]
[part]
story= _ "That night, as I slept, I dreamt again, for the first time since that first fateful night. Eloh came to me again, and this time she appeared in a vision as a beautiful glowing figure, as bright as the suns. She said 'Have courage, for though soon you shall go through a time of darkness, all your trials shall be richly rewarded in the end. You must go under the northern mountains, not over them. You will find the ruins of an ancient watch tower made of black obsidian in the desert by the edge of the hills. By that tower you will find the entrance to the tunnels you seek. Follow the smooth ancient tunnel down under the mountains and when you again see the sky and my suns, I shall contact you. But beware those who lurk in the darkness, they hide from my light, and must not be trusted. I have no power in the dark, so you are my hand of justice. Punish the non-believers. Go now, and fear not the dark.' And again, just like before, I was woken up by a shout in the night. "
[/part]
[/story]
#enddef

View file

@ -0,0 +1,46 @@
#! -- Recall a random number of troops among the tents to make the glorious victory achieveable on harder levels
#! -- internal variables : $tents, $rally_chance, $i
#define WAR_CRY
[event]
name=turn 1
[store_villages]
variable=tents
[/store_villages]
#ifdef EASY
{VARIABLE rally_chance 60}
#endif
#ifdef MEDIUM
{VARIABLE rally_chance 40}
#endif
#ifdef HARD
{VARIABLE rally_chance 20}
#endif
{VARIABLE i 0}
{FOREACH tents i}
{RANDOM 0..100}
[if]
[variable]
name=random
less_than=$rally_chance
[/variable]
[then]
[recall]
side=1
x=$tents[$i].x
y=$tents[$i].y
[/recall]
[/then]
[/if]
{NEXT i}
{CLEAR_VARIABLE tents}
{CLEAR_VARIABLE i}
{CLEAR_VARIABLE rally_chance}
[/event]
#enddef