Split, simplify somewhat and extensively comment scenario 01
This commit is contained in:
parent
f1e3294e16
commit
2f66f52049
7 changed files with 1435 additions and 1322 deletions
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,63 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
# The aim of this module is to collate all of the important map settings and get them out of the way
|
||||
# Generaly once these red one they won't be touched in the future.
|
||||
|
||||
|
||||
# It's a good practice to name the scenario file according to scenario id. It's even better to put a scenario number in front
|
||||
# of the name, in this way if anyone in future will have to do something with your files he or she won't have to waste time
|
||||
# on finding out in what order should he read the scenarios.
|
||||
|
||||
id="1_The_Morning_After"
|
||||
name= _ "The Morning After"
|
||||
|
||||
# Map data, note lack of any symbols in fornt of the path below, this means only /data/ folder will be search, userdata will be omitted
|
||||
|
||||
map_data="{campaigns/Under_the_Burning_Suns/maps/01_The_Morning_After.map}"
|
||||
next_scenario=2_Across_the_Harsh_Sands
|
||||
{TURNS 34 32 30}
|
||||
|
||||
# Since the scenario can't end until all the elves are rescued we can't allow it to end with the death of the necromancer
|
||||
victory_when_enemies_defeated=no
|
||||
|
||||
# Whole campaign uses custom timescheudle assuming day - short night - day - long night which is supposed to simulate a world
|
||||
# with two suns in the sky. Custom times of day are defined in /utils/time.cfg
|
||||
{DAWN1}
|
||||
{MORNING1}
|
||||
{MIDDAY1}
|
||||
{AFTERNOON1}
|
||||
{DUSK1}
|
||||
{SHORTDARK}
|
||||
{DAWN2}
|
||||
{MORNING2}
|
||||
{MIDDAY2}
|
||||
{AFTERNOON2}
|
||||
{DUSK2}
|
||||
{LONGDARK1}
|
||||
{LONGDARK2}
|
||||
{LONGDARK3}
|
||||
{LONGDARK4}
|
||||
|
||||
# The playlist for the scenario, only one file for now
|
||||
[music]
|
||||
name=revelation.ogg
|
||||
[/music]
|
||||
|
||||
# And the story. Disclaimer, introduction to the campaign, and first scenario
|
||||
[story]
|
||||
[part]
|
||||
story= _ "Note: This campaign is probably not the best one for beginners. It changes certain Wesnoth standards, such as the elves' stats and the day/night cycle. This campaign emphasizes role-playing elements and tends to have longer scenarios with changing objectives. For these reasons I strongly suggest that you occasionally save your game mid-scenario, so you won't lose all your progress if you get stuck and have to start over."
|
||||
[/part]
|
||||
[part]
|
||||
background="misc/kaleh_story.jpg"
|
||||
story= _ "This is the chronicle of the journey of the Quenoth elves from their homeland in the Great Southern Desert. I write this story so that our descendants may know of our travels, and remember the sacrifices we made."
|
||||
[/part]
|
||||
[part]
|
||||
background="misc/kaleh_story.jpg"
|
||||
story= _ "Chapter 1: I, Kaleh, grew up amidst the shifting sands, under our two suns Sela and Naia. It was a land of hot dry days and cold nights, of roaming horrors, where water was more valuable than gold. We had lived among the sands ever since the forests fell eons ago. It was a hard savage land, but we were tougher still, and we managed to survive settled around a rare oasis. We had heavily fortified our village against any marauders and we were the biggest encampment we knew of. My uncle, Tanuil, led us for many years, and trained us to be self-sufficient and strong against all enemies. A people struggling in an ocean of sand, we thought we were ready for anything. All that changed one fateful night, when the sky rained fire..."
|
||||
[/part]
|
||||
[part]
|
||||
background="misc/night_of_fallen_stars.jpg"
|
||||
story= _ "I remember that night as if it were yesterday. I was not prone to dreaming, but as I slept I had a strange vision. I didn't have long to ponder it though, because I was woken in the dark by the sound of deafening crashes, splintering wood and shouting elves. That night the sky rained flaming rocks, boulders bigger than you could imagine. They smote the landscape like lightning bolts, setting fire to whatever could burn and crushing houses, walls, and elves. There was nowhere to hide, nowhere to go for protection. I was so afraid, I thought that if I tried to flee I would be smashed, so I hid and prayed to Eloh. I never prayed before as hard as I did that night. I heard cries and screams outside, but I could not force myself to move. And somehow, eventually the thin yellow tendrils of a sickly dawn stole over the horizon, as if Naia herself were shocked by the devastation she saw."
|
||||
[/part]
|
||||
[/story]
|
|
@ -0,0 +1,335 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
# We're going to use this piece of WML in two different places without a change, that's why it's placed within a macro
|
||||
#define DARKSORCERER_INTRO
|
||||
# Place the bad guy, give him proper gold an income
|
||||
[unit]
|
||||
#ifdef HARD
|
||||
type=Necromancer
|
||||
#else
|
||||
type=Dark Sorcerer
|
||||
#endif
|
||||
description=Xanthos
|
||||
user_description= _ "Xanthos"
|
||||
canrecruit=yes
|
||||
x=46
|
||||
y=3
|
||||
side=3
|
||||
[/unit]
|
||||
[modify_side]
|
||||
side=3
|
||||
{GOLD 150 175 200}
|
||||
{INCOME 12 15 20}
|
||||
[/modify_side]
|
||||
[remove_shroud]
|
||||
side=1
|
||||
x=44-48
|
||||
y=1-5
|
||||
[/remove_shroud]
|
||||
[message]
|
||||
description=Xanthos
|
||||
message= _ "This place reeks of the stench of death, I could smell it from miles away. Oh how I love it, it is the smell of power, the inevitable triumph of death over life. Puny elves, I shall use the corpses of your families to create an army of undead! All shall bow down before Xanthos the Necromancer!"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "His timing couldn't be worse. I know that undead cultists often prey on small targets, but they haven't had the guts to attack us for years. Why has Eloh heaped so much misfortune upon us?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "Have some more faith girl, the goddess does not give us more than we can handle. With Eloh's grace we shall yet triumph over this pretender."
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "Bah, I've fought these dark cultists before. They can be killed just like anyone else, and our elvish hunters can easily decimate their skeleton armies."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "I have heard of your kind, foul necromancer. You travel the sands, daring to bring back and enslave those who have passed on. But we will prove to you that death is not all-powerful. You shall not desecrate the bodies of my kith and kin! You shall learn to fear the wrath of Eloh and the Quenoth elves!"
|
||||
[/message]
|
||||
[place_shroud]
|
||||
side=1
|
||||
x=44-48
|
||||
y=1-5
|
||||
[/place_shroud]
|
||||
[objectives]
|
||||
summary= _ "New Objectives:"
|
||||
show=yes
|
||||
[objective]
|
||||
description= _ "Rescue Surviving Elves"
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Defeat Xanthos"
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Kaleh, Nym, Garak or Zhul"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[/objectives]
|
||||
#enddef
|
||||
|
||||
# Normal necromancer placement, happens around turn 10 depending on difficulty level
|
||||
[event]
|
||||
#ifdef EASY
|
||||
name=turn 11
|
||||
#endif
|
||||
#ifdef NORMAL
|
||||
name=turn 10
|
||||
#endif
|
||||
#ifdef HARD
|
||||
name=turn 9
|
||||
#endif
|
||||
# If Xanthos does not exist and undead gold is unmodified it means he never showed up. We need this check
|
||||
# in case player triggered him earlier and managed to kill already, otherwise he might get spawned once more
|
||||
[store_side]
|
||||
side=3
|
||||
variable=temp
|
||||
[/store_side]
|
||||
[if]
|
||||
[not]
|
||||
[have_unit]
|
||||
description=Xanthos
|
||||
[/have_unit]
|
||||
[/not]
|
||||
[variable]
|
||||
name=temp.gold
|
||||
numerical_equals=100
|
||||
[/variable]
|
||||
[then]
|
||||
{DARKSORCERER_INTRO}
|
||||
[/then]
|
||||
[/if]
|
||||
{CLEAR_VARIABLE temp}
|
||||
[/event]
|
||||
|
||||
# When dark sorcerer dies, checks to make sure elves have been rescued before ending the scenario. If no set an event
|
||||
# that checks if that changed on each move. It's ugly but there is no better way of doing that at the moment
|
||||
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
description=Xanthos
|
||||
[/filter]
|
||||
[sound]
|
||||
name=wail-long.wav
|
||||
[/sound]
|
||||
[kill]
|
||||
side=3
|
||||
animate=yes
|
||||
[/kill]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "The necromancer is finally vanquished."
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "And at last the dead shall have their rest."
|
||||
[/message]
|
||||
[if]
|
||||
[variable]
|
||||
name=rescued_elves
|
||||
not_equals=5
|
||||
[/variable]
|
||||
[then]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "The necromancer is dead, but I don't think we've explored the entire village. There may still be elves that need rescuing. We should go back and check. "
|
||||
[/message]
|
||||
[event]
|
||||
name=moveto
|
||||
first_time_only=no
|
||||
[filter]
|
||||
x=1-60
|
||||
y=1-60
|
||||
side=1
|
||||
[/filter]
|
||||
[if]
|
||||
[variable]
|
||||
name=rescued_elves
|
||||
equals=5
|
||||
[/variable]
|
||||
[then]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "We've explored the village and I think we've rescued the last of the survivors."
|
||||
[/message]
|
||||
[endlevel]
|
||||
result=victory
|
||||
bonus=yes
|
||||
[/endlevel]
|
||||
[/then]
|
||||
[/if]
|
||||
[/event]
|
||||
[/then]
|
||||
[else]
|
||||
[endlevel]
|
||||
result=victory
|
||||
bonus=yes
|
||||
[/endlevel]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
# This event prevents player from running to dark sorcerer's base before he shows up on turn 11. If the player
|
||||
# approaches his base before turn 11 he appears and attacks. Either way the unit moving into the area also comments
|
||||
# on the plight of those elves who lived out in the open sands.
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=37-60
|
||||
y=1-12
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
[if]
|
||||
[not]
|
||||
[have_unit]
|
||||
side=3
|
||||
[/have_unit]
|
||||
[/not]
|
||||
[then]
|
||||
{DARKSORCERER_INTRO}
|
||||
[/then]
|
||||
[/if]
|
||||
[message]
|
||||
speaker=unit
|
||||
message= _ "Some of our people felt crowded in the village, and wanted to live out on the open sands. They thought they could flee to the safety of our walls if danger came. I shudder to think what has happened to them."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# Elvish hunting party shows up on turn 16
|
||||
[event]
|
||||
name=turn 16
|
||||
[remove_shroud]
|
||||
side=1
|
||||
x=24-32
|
||||
y=1-6
|
||||
[/remove_shroud]
|
||||
{LOYAL_UNIT "Desert Hunter" "Pythos" (_"Pythos") 1 29 2}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Fighter" "Shea" ( _ "Shea") 1 28 2}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Fighter" "Narn" ( _ "Narn") 1 29 1 }
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Scout" "Jokli" ( _ "Jokli") 1 27 2}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Archer" "Lyia" ( _ "Lyia") 1 28 1}
|
||||
[+unit]
|
||||
gender=female
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
description=Pythos
|
||||
message= _ "Hail, is anyone still alive?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Yes, and we could certainly use your help. A necromancer has been attacking us, he intends to use our fallen comrades as fodder for his evil magics. Where have you been?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Pythos
|
||||
message= _ "We were out far in the sands, searching for prey and roaming orcs. As soon as we saw the rock storm we raced back as fast as we could. I only wish we could have come sooner."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "No use crying over spilt water. But we're sure glad you're here now."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# On victory dialogue
|
||||
[event]
|
||||
name=victory
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "It seems that we finally have some peace. But what do we do now?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "Where is Tanuil and his family?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "The keep has been crushed by the rocks. We could find no survivors."
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "Too many have died this night."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Our village is in ruins. The walls that were built by our ancestors over generations have been demolished in a space of hours. Most of our dwellings are destroyed. And the great tree itself is no more. One thing is obvious, we cannot stay here."
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "You are a fool to despair. This has always been our home. The water here is good, we know this land. We can rebuild; Eloh willing, we can thrive again."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Think for a moment. Who else has seen the rock storm? What other foes are coming to pick over the remains of our people? There is no mercy in the desert, and we have many enemies who would seek to gain in our time of weakness."
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "Impudent girl, you should not speak so to your elders, or to your betters."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "I have a right to speak my mind!"
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "Peace, please calm yourselves. In chaos there is nothing but death and destruction. Even in this time of trial we must show our fortitude, and follow our laws. Without laws we are like beasts in the desert, fighting over scraps of meat. Among the survivors Kaleh is by heritage the closest relative to Tanuil and thus our leader. What say you Kaleh?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Last night, before the rock storm, I heard a voice in my sleep. It sounded like sweet music, and somehow I knew it was Eloh. I still remember her exact words: 'You must be strong, young elf, for you enter a time of peril. The home you know will be destroyed, and you must lead your people to a new land. To the north you will find salvation and peace. Cross the desert and head to the mountains. Fear not, for I will guide you and protect you.' I'm not sure why I'm the one she chose to appeal to, but if this is her will, I will see it done. Our home is gone and the desert is a harsh place. If Eloh has prepared a new home for us, then I will lead us there."
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "I fear what dangers lurk in the harsh sands and beyond to the north, but because you are our leader, I will follow your counsel."
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "Then let us collect what supplies we can from the wreckage and head north with great haste. Our home is protection no longer, we must find a new haven for our people."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "What about the bodies of the dead? We can't leave them to be torn by crows or desecrated by other dark mages."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "I agree, we should not forget our dead. We should build a huge pyre and burn them with proper ceremony, so that the smoke may carry them on to the next realm."
|
||||
[/message]
|
||||
[message]
|
||||
description=Zhul
|
||||
message= _ "Kaleh, I don't want to tarry longer than necessary, but I agree that we must see to the dead before we leave. Garak, you and your men start collecting our dead. Nym, help me find oil and wood so that we may build a pyre."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=narrator
|
||||
message= _ "And so it was done. The dead were laid reverently on top of what little wood we could find. But the fire was big enough to burn the bodies to ashes and speed their souls to the hereafter. I remember at the time that the death of so many of our people was not the best omen for the start of such a large journey. They were the first of our people to die in this great endeavor, but they were to be far from the last."
|
||||
[/message]
|
||||
|
||||
# Clear variables
|
||||
{CLEAR_VARIABLE seen_mudcrawler}
|
||||
{CLEAR_VARIABLE rescued_elves}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=time over
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "What's that to the north? It looks like even more undead! The rock storm must have attracted other necromancers. There's no way we can defeat them all. We've run out of time. There's no escape. Eloh save us!"
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,211 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
# This module handles events attached to four villages outside oasis not near necromancer fort. Scenario assumes that
|
||||
# there is a chance to find an unit in each of them unless they have been captured by undead already.
|
||||
|
||||
#! -- Internal variables :
|
||||
# $i, $outer_villages[]{4 sets of coordinates}
|
||||
#! -- Depends on :
|
||||
# $elf_pool[], $elf_pool_counter
|
||||
#! -- Clears :
|
||||
# $elf_pool[], $elf_pool_counter
|
||||
|
||||
# For each village we need to prepare a pair of events, one in case it's initialy captured by player and one in case
|
||||
# it's ransacked by bad guys. Because it needs to be done before play starts, we're going to use 'start' event.
|
||||
|
||||
[event]
|
||||
name=start
|
||||
|
||||
# There is a number of houses inside the oasis and even more tents by the necromancers fort, we need to make sure
|
||||
# that these are ignored. To do this we store coordinates ([store_locations]) of all desert villages (Dd^Vt) that
|
||||
# are not ([not]) within rectangle defined by points 40,1 60,12 (x=40-60, y=1-12) or ([or]) rectangle defined by 22,24 43,34 .
|
||||
# First rectangle includes all villages near necromancer, the second covers whole oasis. These coordinates are stored to
|
||||
# array called outer_villages (variable=outer_villages).
|
||||
|
||||
[store_locations]
|
||||
variable=outer_villages
|
||||
terrain=Dd^Vt
|
||||
[not]
|
||||
x=40-60
|
||||
y=1-12
|
||||
[or]
|
||||
x=22-43
|
||||
y=24-34
|
||||
[/or]
|
||||
[/not]
|
||||
[/store_locations]
|
||||
|
||||
# Now for each stored set of coordinates we need to prepare a capture event that can be triggered both by good and bad guys.
|
||||
# To do this we declare an iterator.
|
||||
{VARIABLE i 0}
|
||||
|
||||
# And use foreach macro, that simulates an loop walking over an array from beginning to end.
|
||||
{FOREACH outer_villages i}
|
||||
|
||||
# In this way for each village we declare an capture event
|
||||
[event]
|
||||
name=capture
|
||||
|
||||
# That triggers for both side 1 and 3 on a village of coordinates x,y
|
||||
[filter]
|
||||
side=1,3
|
||||
x=$outer_villages[$i].x
|
||||
y=$outer_villages[$i].y
|
||||
[/filter]
|
||||
|
||||
# Now depending on which side captured the village there will be different outcomes.
|
||||
[if]
|
||||
|
||||
# When unit capturing village belongs to a player
|
||||
[variable]
|
||||
name=unit.side
|
||||
equals=1
|
||||
[/variable]
|
||||
[then]
|
||||
|
||||
# We generate a random number between 1 and 100
|
||||
{RANDOM 1..100}
|
||||
|
||||
# And check if it's lower than a treshold of finding an unit that's dependent on diffficulty level
|
||||
# 60% on easy, 50% on normal, 40% on hard. We use preprocesor to choose apropriate chance
|
||||
[if]
|
||||
[variable]
|
||||
name=random
|
||||
#ifdef EASY
|
||||
less_than_equal=60
|
||||
#endif
|
||||
#ifdef NORMAL
|
||||
less_than_equal=50
|
||||
#endif
|
||||
#ifdef HARD
|
||||
less_than_equal=40
|
||||
#endif
|
||||
[/variable]
|
||||
[then]
|
||||
|
||||
# So the RNG smiled upon the player, time to pick an random elf from pool we prepared in scenario_start
|
||||
# but we have keep drawing until we hit a nonblank record, since some of them will be cleared already
|
||||
# so we prepare a loop that's going to run until our check on random variable evaluates to ture.
|
||||
# For this we need to set random to a value that will evaluate as false to guarantee at least one loop pass.
|
||||
{VARIABLE random $elf_pool_counter}
|
||||
|
||||
[while]
|
||||
[variable]
|
||||
name=elf_pool[$random].type
|
||||
equals=""
|
||||
[/variable]
|
||||
[do]
|
||||
|
||||
# Now we can draw an elf. It's important to remember that even though we have $elf_pool_counter
|
||||
# units, they are indexed from 0 so we need to substract 1 from drawn number
|
||||
{RANDOM 1..$elf_pool_counter}
|
||||
{VARIABLE_OP random add -1}
|
||||
|
||||
# Create an unit with data drawn and place it on an empty hex by the village, since he village itself is occupied
|
||||
[unit]
|
||||
side=1
|
||||
type=$elf_pool[$random].type
|
||||
description=$elf_pool[$random].description
|
||||
user_description=_ $elf_pool[$random].description
|
||||
gender=$elf_pool[$random].gender
|
||||
x=$x1
|
||||
y=$y1
|
||||
animate=yes
|
||||
|
||||
# Make the unit loyal on easy
|
||||
#ifdef EASY
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
#endif
|
||||
|
||||
# And have it start with 0hp on hard
|
||||
#ifdef HARD
|
||||
moves=0
|
||||
#endif
|
||||
[/unit]
|
||||
[/do]
|
||||
[/while]
|
||||
|
||||
# When done remove uniit from the pool
|
||||
{CLEAR_VARIABLE elf_pool[$random]}
|
||||
|
||||
# And write joyful message
|
||||
[message]
|
||||
speaker=unit
|
||||
message= _ "Oh good, some elves have survived in this outer settlement. They've agreed to help us search for other survivors."
|
||||
[/message]
|
||||
[/then]
|
||||
# And when RNG plays hard ball we need to inform the player he's out of luck
|
||||
[else]
|
||||
[message]
|
||||
speaker=unit
|
||||
message= _ "The encampment is empty. I wonder what happened to the inhabitants?"
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
|
||||
# When the unit belongs to the bad guy... Tough luck, there is actualy no bonus from that now, so we just set up another event
|
||||
# this time for player only for the time he recaptures the village.
|
||||
[else]
|
||||
[event]
|
||||
name=capture
|
||||
[filter]
|
||||
side=1
|
||||
x=$outer_villages[$i].x
|
||||
y=$outer_villages[$i].y
|
||||
[/filter]
|
||||
[message]
|
||||
speaker=unit
|
||||
message= _ "This encampment has been abandoned. There are signs of a struggle and a few bloodstains but nothing else. I fear for those elves who lived out here."
|
||||
[/message]
|
||||
[/event]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
{NEXT i}
|
||||
|
||||
{CLEAR_VARIABLE i}
|
||||
{CLEAR_VARIABLE outer_villages}
|
||||
[/event]
|
||||
|
||||
|
||||
# This event unstores all unspawned units from the pool into the recall list. Reason for this is pretty simple, it's much easier to finish
|
||||
# sc3 for example having two free hunters than two free scouts.
|
||||
|
||||
[event]
|
||||
name=victory
|
||||
|
||||
{VARIABLE i 0}
|
||||
{FOREACH elf_pool i}
|
||||
[if]
|
||||
[variable]
|
||||
name=elf_pool[$i].type
|
||||
not_equals=""
|
||||
[/variable]
|
||||
[then]
|
||||
[unit]
|
||||
side=1
|
||||
type=$elf_pool[$random].type
|
||||
description=$elf_pool[$random].description
|
||||
user_description=_ $elf_pool[$random].description
|
||||
gender=$elf_pool[$random].gender
|
||||
x=$x1
|
||||
y=$y1
|
||||
animate=yes
|
||||
#ifdef EASY
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
#endif
|
||||
[/unit]
|
||||
[/then]
|
||||
[/if]
|
||||
{NEXT i}
|
||||
{CLEAR_VARIABLE elf_pool}
|
||||
{CLEAR_VARIABLE elf_pool_counter}
|
||||
[/event]
|
||||
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
#Internal macros : VILLAGE_EVENT
|
||||
|
||||
# macro for setting up the village occupants
|
||||
|
||||
#define VILLAGE_EVENT TYPE NAME GENDER
|
||||
{VARIABLE elf_pool[$elf_pool_counter].type {TYPE}}
|
||||
{VARIABLE elf_pool[$elf_pool_counter].name {NAME}}
|
||||
{VARIABLE elf_pool[$elf_pool_counter].gender {GENDER}}
|
||||
{VARIABLE_OP elf_pool_counter add 1}
|
||||
#enddef
|
||||
|
||||
# prestart events:
|
||||
# set starting scenario objectives
|
||||
# set starting variables
|
||||
|
||||
[event]
|
||||
name=prestart
|
||||
# set starting scenario objectives
|
||||
[objectives]
|
||||
summary= _ "Starting Objectives:"
|
||||
[objective]
|
||||
description= _ "Rescue Surviving Elves"
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Kaleh, Nym, Garak or Zhul"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[/objectives]
|
||||
|
||||
# There are 3 mudcrawler encounter spots, in the NW and SW corner and in the barracks.
|
||||
# Depending on which way you circle around the village, you will
|
||||
# encounter the NW or barracks first.
|
||||
|
||||
# At start seen a mudcrawler is false
|
||||
{VARIABLE seen_mudcrawler "no"}
|
||||
|
||||
# Can't end scenario until all elves have been rescued (5 events)
|
||||
{VARIABLE rescued_elves 0}
|
||||
|
||||
# Elves in outlying villages - set array index and elf pool counter
|
||||
{VARIABLE elf_pool_counter 0}
|
||||
|
||||
# Elves in the pool - 2 fighters, 2 archers, 2 hunters, 2 scouts
|
||||
{VILLAGE_EVENT "Desert Fighter" _"Lrea" "female"}
|
||||
{VILLAGE_EVENT "Desert Fighter" _"Piyru" "male"}
|
||||
{VILLAGE_EVENT "Desert Archer" _"Frea" "female"}
|
||||
{VILLAGE_EVENT "Desert Archer" _"Danu" "male"}
|
||||
{VILLAGE_EVENT "Desert Hunter" _"Hamuil" "male"}
|
||||
{VILLAGE_EVENT "Desert Hunter" _"Anioh" "male"}
|
||||
{VILLAGE_EVENT "Desert Scout" _"Vemuil" "male"}
|
||||
{VILLAGE_EVENT "Desert Scout" _"Taliu" "male"}
|
||||
[/event]
|
||||
|
||||
#undef VILLAGE_EVENT
|
||||
|
||||
# Dialogue at start of scenario
|
||||
[event]
|
||||
name=start
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Hey Kaleh, are you in there?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Nym, is that you?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Yes, come on out already. The storm has passed. With the morning light Naia has ended the terrible night."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Has the sky really stopped falling?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "I already told you, the sky is clear and empty. Now come quickly, silly, others may need our help."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "What's happened? Oh Eloh, the craters are everywhere, everything is gone, ruined. I can hardly recognize our village. I didn't think it could be this bad."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "C'mon Kaleh, we have to go see if anyone is hurt or needs help. I think I hear people calling from the south. Now is not a time for fear, we must be strong. After all you are the nephew of Tanuil, our leader, and you must answer to the call of duty. Perhaps in the light of day things won't be as bad as you think. Let's explore the village and see who else has survived the night."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Wait, our keep is just to the east. Our leader Tanuil must surely be recruiting others to help deal with the devastation. Perhaps we should go to the keep, before we explore the rest of the village."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# Dialogue when Nym and Kaleh see the ruined keep
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=33-40
|
||||
y=19-26
|
||||
side=1
|
||||
[/filter]
|
||||
[allow_undo]
|
||||
[/allow_undo]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Tanuil's keep, our beautiful fortress, it is destroyed. How will we summon our people to battle?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "We must rally those survivors we can find amidst the rubble. It doesn't look like anyone survived, but at least we can thank Eloh it was a quick death. But come on, we can't dwell on the dead, we must help the living."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "But if Tanuil is dead, who will lead us?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "That's a question for another time. Let's keep exploring the wreckage."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
[side]
|
||||
side=1
|
||||
description=Kaleh
|
||||
user_description= _ "Kaleh"
|
||||
type=Kaleh
|
||||
variation=Youth
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
#ifndef HARD
|
||||
{TRAIT_RESILIENT}
|
||||
#ifdef EASY
|
||||
{TRAIT_INTELLIGENT}
|
||||
#endif
|
||||
#endif
|
||||
[/modifications]
|
||||
canrecruit=yes
|
||||
|
||||
{GOLD 0 0 0}
|
||||
{INCOME 4 2 0}
|
||||
controller=human
|
||||
shroud=yes
|
||||
fog=no
|
||||
|
||||
# Start with Nym
|
||||
|
||||
[unit]
|
||||
type=Nym Hunter
|
||||
description=Nym
|
||||
user_description= _ "Nym"
|
||||
x=27
|
||||
y=22
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
#ifndef HARD
|
||||
{TRAIT_RESILIENT}
|
||||
#ifdef EASY
|
||||
{TRAIT_QUICK}
|
||||
#endif
|
||||
#endif
|
||||
[/modifications]
|
||||
{IS_HERO}
|
||||
[/unit]
|
||||
[/side]
|
||||
|
||||
# Monster side : mudcrawlers and cuttlefish
|
||||
|
||||
[side]
|
||||
no_leader=yes
|
||||
side=2
|
||||
controller=ai
|
||||
shroud=no
|
||||
fog=no
|
||||
team_name=monsters
|
||||
[ai]
|
||||
aggression=1.0
|
||||
caution=0.0
|
||||
# weak ai
|
||||
{ATTACK_DEPTH 1 2 3}
|
||||
[/ai]
|
||||
[/side]
|
||||
|
||||
# Undead side, doesn't start with a leader
|
||||
[side]
|
||||
no_leader=yes
|
||||
side=3
|
||||
controller=ai
|
||||
shroud=no
|
||||
fog=no
|
||||
team_name=evil
|
||||
#Values reset later on, needed for proper execution of Necromancer event
|
||||
{GOLD 100 100 100}
|
||||
{INCOME -2 -2 -2}
|
||||
#ifndef HARD
|
||||
recruit=Skeleton, Skeleton Archer, Vampire Bat, Ghoul, Dark Adept
|
||||
#endif
|
||||
#ifdef HARD
|
||||
recruit=Revenant, Bone Shooter, Blood Bat, Necrophage, Dark Adept, Deathblade
|
||||
#endif
|
||||
[ai]
|
||||
recruitment_ignore_bad_movement=yes
|
||||
recruitment_ignore_bad_combat=yes
|
||||
#ifdef HARD
|
||||
recruitment_pattern=scout,fighter,fighter,fighter,archer
|
||||
#else
|
||||
recruitment_pattern=scout,fighter,archer,fighter
|
||||
#endif
|
||||
aggression=0.80
|
||||
caution=0.10
|
||||
{ATTACK_DEPTH 2 3 4}
|
||||
[/ai]
|
||||
[/side]
|
||||
|
|
@ -0,0 +1,568 @@
|
|||
#textdomain wesnoth-utbs
|
||||
|
||||
# This module is used to handle all events within the oasis boundary. This includes finding all the elves that we
|
||||
# have to rescue, dealing with mudcrawlers and lake monster.
|
||||
#! -- Depends on
|
||||
# $rescued_elves, $seen_mudcrawler
|
||||
|
||||
# North-West mudcrawler/villager encounter
|
||||
# Elvish fighter and 2 archers fighting
|
||||
# Easy: 1 giant mudcrawler, 3 small mudcrawlers
|
||||
# Medium: 2 giant mudcrawlers, 2 small mudcrawlers
|
||||
# Hard: 3 giant mudcrawlers, 1 small mudcrawler
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=17-26
|
||||
y=23-28
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
{VARIABLE_OP rescued_elves add 1}
|
||||
# Place found elves, this schema will repeat over this module as I want to use core macros (which saves maintenance
|
||||
# burden) and have them posses both random traits and loyal.
|
||||
{LOYAL_UNIT "Desert Fighter" "Vecnu" ( _ "Vecnu") 1 24 25}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Archer" "Eranor" ( _ "Eranor") 1 24 27}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Archer" "Seela" ( _ "Seela") 1 21 25}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
gender=female
|
||||
[/unit]
|
||||
|
||||
# Again core macro, monsters shouldn't have traits
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 20 24}
|
||||
|
||||
#ifdef HARD
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 20 25}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 20 25}
|
||||
#endif
|
||||
#ifdef EASY
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 23 27}
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 25 28}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 23 27}
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 24 28}
|
||||
#endif
|
||||
|
||||
[if]
|
||||
[variable]
|
||||
name=seen_mudcrawler
|
||||
equals=no
|
||||
[/variable]
|
||||
[then]
|
||||
|
||||
# Haven't seen a mudcrawler yet, set the flag and perform what-the-hell-is-that routine.
|
||||
|
||||
{VARIABLE seen_mudcrawler yes}
|
||||
[message]
|
||||
description=Vecnu
|
||||
message= _ "Kaleh, Nym, help us!"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "What in Uria's name is that?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Vecnu
|
||||
message= _ "They came with the stones that fell from the sky. I know not what they are, but more seem to be emerging from the craters. If we don't stop them there will be nothing left of our village or our people."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "To battle, my friends! There are still those left who can fight."
|
||||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
|
||||
# Seen a mudcrawler, do let's-kick-their-ass routine
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "There are more of our people fighting the mud monsters!"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Then let's join the battle!"
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
# South-West mudcrawler/villager encounter
|
||||
# Elvish archer and 2 hunters fighting
|
||||
# Easy: 1 giant mudcrawler, 3 small mudcrawlers
|
||||
# Medium: 2 giant mudcrawlers, 2 small mudcrawlers
|
||||
# Hard: 3 giant mudcrawlers, 1 small mudcrawler
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=17-28
|
||||
y=29-36
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
{VARIABLE_OP rescued_elves add 1}
|
||||
{LOYAL_UNIT "Desert Hunter" "Eloshi" ( _ "Eloshi") 1 24 34}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Archer" "Illuvia" ( _ "Illuvia") 1 19 33}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
gender=female
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Hunter" "Raynor" ( _ "Raynor") 1 21 35}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 25 34}
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 21 36}
|
||||
#ifdef HARD
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 24 35}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 24 35}
|
||||
#endif
|
||||
#ifdef EASY
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Mud monster" (_ "Mud monster") 2 20 34}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Mud monster" (_ "Mud monster") 2 20 34}
|
||||
#endif
|
||||
|
||||
[message]
|
||||
description=Kaleh
|
||||
message=_ "More of these muddy crawlies, let's get rid of them with haste."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# Training ground encounter
|
||||
# Easy: 2 giant mudcrawler, 3 small mudcrawlers
|
||||
# Medium: 3 giant mudcrawlers, 2 small mudcrawlers
|
||||
# Hard: 4 giant mudcrawlers, 1 small mudcrawlers
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=32-39
|
||||
y=32-36
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
# We want this village captured to allow player move trough it without loosing the turn
|
||||
[capture_village]
|
||||
side=1
|
||||
x,y=36,34
|
||||
[/capture_village]
|
||||
|
||||
{ADD rescued_elves 1}
|
||||
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 34 33}
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 34 34}
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 34 35}
|
||||
#ifdef HARD
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 35 33}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 35 33}
|
||||
#endif
|
||||
#ifdef EASY
|
||||
{NOTRAIT_UNIT "Small Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 36 32}
|
||||
#else
|
||||
{NOTRAIT_UNIT "Giant Mudcrawler" "Rocky Horror" ( _ "Rocky Horror") 2 36 32}
|
||||
#endif
|
||||
|
||||
[unit]
|
||||
type=Desert Captain
|
||||
description=Garak
|
||||
user_description= _ "Garak"
|
||||
profile=portraits/garak.png
|
||||
x=35
|
||||
y=34
|
||||
side=1
|
||||
[modifications]
|
||||
{TRAIT_STRONG}
|
||||
{TRAIT_LOYAL}
|
||||
[object]
|
||||
[effect]
|
||||
apply_to=attack
|
||||
range=ranged
|
||||
increase_damage=1
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modifications]
|
||||
{IS_HERO}
|
||||
[/unit]
|
||||
|
||||
{LOYAL_UNIT "Desert Fighter" "Jorazan" ( _ "Jorazan") 1 36 33}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Fighter" "Zyara" ( _ "Zyara") 1 35 35}
|
||||
[+unit]
|
||||
gender=female
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
|
||||
[message]
|
||||
speaker=unit
|
||||
message= _ "This is our training ground. And look, there is Garak, the captain of the guard. He and his fighters have survived the night!"
|
||||
[/message]
|
||||
[if]
|
||||
[variable]
|
||||
name=seen_mudcrawler
|
||||
equals=no
|
||||
[/variable]
|
||||
[then]
|
||||
# Again, haven't seen a mudcrawler yet, set the flag and perform what-the-hell-is-that routine.
|
||||
{VARIABLE seen_mudcrawler yes}
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "Kaleh, Nym, help us!"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "What in Uria's name is that?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Garak
|
||||
message= _ "They came with the stones that fell from the sky. I know not what they are, but more seem to be emerging from the craters. If we don't stop them there will be nothing left of our village or our people."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "To battle, my friends! There are still those left who can fight."
|
||||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "But they are fighting many mud creatures. Quick, we must help them!"
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
|
||||
# Garak's speech when they kill the last of training grounds mudcrawlers. For this we use die event
|
||||
# that on each occurence checks if there are any more training ground mudcrawlers alive.
|
||||
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=no
|
||||
[filter]
|
||||
description="Rocky Horror"
|
||||
[/filter]
|
||||
|
||||
[if]
|
||||
[not]
|
||||
[have_unit]
|
||||
description="Rocky Horror"
|
||||
[/have_unit]
|
||||
[/not]
|
||||
[then]
|
||||
[message]
|
||||
speaker=second_unit
|
||||
message= _ "Ha! They're destroyed at last."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Garak
|
||||
message= _ "Thanks for the help. I am glad to see that so many have survived the night. But there's no time to talk, we must save the rest of our people and crush any other of these earthen abominations back into the earth."
|
||||
[/message]
|
||||
[/then]
|
||||
[/if]
|
||||
[/event]
|
||||
[/event]
|
||||
|
||||
# The following three events are nested, because they are supposed to occur in that particular sequence with none of them bypassed.
|
||||
# Thanks to this only one of them is loaded in memory at any given time before resolution.
|
||||
|
||||
# Approaching bridge dialogue
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=30-32
|
||||
y=29-35
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
# That's supposed to allow to undo the move before the event is triggered
|
||||
[allow_undo]
|
||||
[/allow_undo]
|
||||
|
||||
[message]
|
||||
speaker=Kaleh
|
||||
message= _ "This bridge leads to the holy island at the center of our lake."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Nym
|
||||
message= _ "Hmmmm. Some of the druids that worship on the island may still be alive. We should go check."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Kaleh
|
||||
message= _ "Be careful. The bridge is broken, so we'll have to wade through the shallow water."
|
||||
[/message]
|
||||
|
||||
# Finding druids
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=30-32
|
||||
y=27-29
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
{ADD rescued_elves 1}
|
||||
[message]
|
||||
speaker=Kaleh
|
||||
message= _ "The great tree! It has been buried under the rocks. Our most holy sanctuary, defiled. Oh, Eloh, what shall we do?"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Nym
|
||||
message= _ "Is anyone still alive?"
|
||||
[/message]
|
||||
[unit]
|
||||
type=Desert Druid
|
||||
description=Zhul
|
||||
user_description= _ "Zhul"
|
||||
profile=portraits/zhul.png
|
||||
x=31
|
||||
y=27
|
||||
side=1
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_INTELLIGENT}
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
{IS_HERO}
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Shaman" "Ryoko" ( _ "Ryoko") 1 30 27}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
{LOYAL_UNIT "Desert Shaman" "Yuni" ( _ "Yuni") 1 32 27}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
speaker=Zhul
|
||||
message= _ "Finally! We were worried that no one else had survived."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Nym
|
||||
message= _ "Mother priestess, are you all right?"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Zhul
|
||||
message= _ "There's no time to stand on ceremony. I'm fine. I'm afraid only a few of us survived, but we will lend you what skills we have. Show me to those who need healing."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Kaleh
|
||||
message= _ "But the great tree, it has been destroyed!"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Zhul
|
||||
message= _ "All things of this world come to an end, but the power of Eloh endures. A new one shall grow in its place. Come now, let us see to the needs of our people."
|
||||
[/message]
|
||||
|
||||
#Lake monster event
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=30-32
|
||||
y=30-34
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
[unit]
|
||||
type=Cuttle Fish
|
||||
description="Deep One"
|
||||
user_description=_"Deep One"
|
||||
unit_description= _ "The Deep Ones are gigantic aquatic monsters that lurk in the dark places of the world. Rarely do they come to the surface, and when they do the best way to survive an encounter with these monsters is to remain ashore. They can grab their opponents with strong tentacles, or spit a poisonous black ink from a distance."
|
||||
# Deep one is basicaly a weakened Cuttle fish, it would be pretty much unbeatable if left without change
|
||||
[modifications]
|
||||
[trait]
|
||||
id=Deep_one
|
||||
[effect]
|
||||
apply_to=attack
|
||||
range=melee
|
||||
increase_attacks=-4
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=hitpoints
|
||||
increase_total=-27
|
||||
[/effect]
|
||||
#ifndef HARD
|
||||
[effect]
|
||||
apply_to=defense
|
||||
replace=yes
|
||||
[defense]
|
||||
shallow_water=50
|
||||
[/defense]
|
||||
[/effect]
|
||||
#endif
|
||||
[/trait]
|
||||
[/modifications]
|
||||
x=32
|
||||
y=30
|
||||
side=2
|
||||
[/unit]
|
||||
[message]
|
||||
speaker=narrator
|
||||
message= _ "The water of the lake suddenly goes dark and unsettled, only to erupt in a swarm of tentacles in the moment first elf put a foot outside the island."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Nym
|
||||
message= _ "What in Uria's name is that?"
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Zhul
|
||||
message= _ "I felt a great darkness in this lake, but I knew not what it was. The falling rocks must have woken it from its sleep."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Kaleh
|
||||
message= _ "Protect the priestesses, we shall send this monstrosity back to the depths it came from!"
|
||||
[/message]
|
||||
[/event]
|
||||
[/event]
|
||||
[/event]
|
||||
|
||||
# Grasslands dialogue, when Kaleh and Nym approach the eastern fields, this will show only the first time
|
||||
# player enters the stables area
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x=39-44
|
||||
y=26-33
|
||||
side=1
|
||||
[/filter]
|
||||
{ADD rescued_elves 1}
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "These fields seem strangely vacant. Where are the horses?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Maybe they're hiding in the stables. Let's go check."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# These two events actually do the same thing on two different villages, it might be not the most efficient
|
||||
# way of doing thing when considering code lenght, but it saves us some macro abuse and akward capture checks
|
||||
[event]
|
||||
name=capture
|
||||
[filter]
|
||||
x=43
|
||||
y=29
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
# Captured stables and found a scout, if have none of the pair spawn Naru
|
||||
[if]
|
||||
[have_unit]
|
||||
description=Naru
|
||||
[/have_unit]
|
||||
[then]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "Hey Nisa, the rocks have stopped falling. You can come out now!"
|
||||
[/message]
|
||||
{LOYAL_UNIT "Desert Scout" "Nisa" (_"Nisa") 1 $x1 $y1}
|
||||
[+unit]
|
||||
gender=female
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
description=Nisa
|
||||
message= _ "Oh, thank Eloh, I thought they would never stop."
|
||||
[/message]
|
||||
[/then]
|
||||
# If have naru spawn Nisa
|
||||
[else]
|
||||
{LOYAL_UNIT "Desert Scout" "Naru" (_"Naru") 1 $x1 $y1}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "Is it safe to come out? I was so scared."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Where are all the other horses?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "A hunting party left just yesterday, so unless the rocks fell all over the land, many of the horses have probably survived. The few that remained here were scared by the falling rocks and fled into the night. It took all my skill to calm Yasi and keep him from running."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "We'll need your help in checking to see if the outer settlements are okay. Who knows what kinds of damage they suffered in the night? And perhaps some of the people out in the desert have been able to round up some of the loose horses."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Well, let's hope that hunting party comes back soon."
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=capture
|
||||
[filter]
|
||||
x=43
|
||||
y=32
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
[if]
|
||||
[have_unit]
|
||||
description=Naru
|
||||
[/have_unit]
|
||||
[then]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "Hey Nisa, the rocks have stopped falling. You can come out now!"
|
||||
[/message]
|
||||
{LOYAL_UNIT "Desert Scout" "Nisa" (_"Nisa") 1 $x1 $y1}
|
||||
[+unit]
|
||||
gender=female
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
description=Nisa
|
||||
message= _ "Oh, thank Eloh, I thought they would never stop."
|
||||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
{LOYAL_UNIT "Desert Scout" "Naru" (_"Naru") 1 $x1 $y1}
|
||||
[+unit]
|
||||
random_traits=yes
|
||||
[/unit]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "Is it safe to come out? I was so scared."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "Where are all the other horses?"
|
||||
[/message]
|
||||
[message]
|
||||
description=Naru
|
||||
message= _ "A hunting party left just yesterday, so unless the rocks fell all over the land, many of the horses have probably survived. The few that remained here were scared by the falling rocks and fled into the night. It took all my skill to calm Yasi and keep him from running."
|
||||
[/message]
|
||||
[message]
|
||||
description=Kaleh
|
||||
message= _ "We'll need your help in checking to see if the outer settlements are okay. Who knows what kinds of damage they suffered in the night? And perhaps some of the people out in the desert have been able to round up some of the loose horses."
|
||||
[/message]
|
||||
[message]
|
||||
description=Nym
|
||||
message= _ "Well, let's hope that hunting party comes back soon."
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue