2007-05-11 12:44:27 +00:00

990 lines
23 KiB
INI

#textdomain wesnoth-tutorial
{./utils.cfg}
#define DEST X Y
{VARIABLE destx {X}}
{VARIABLE desty {Y}}
{VARIABLE dest set}
#enddef
#FIXME: You'd think that using CLEAR_VARIABLE here would make it fail the
#equals="set" test. You'd be wrong...
#define NODEST
{VARIABLE dest unset}
#enddef
#define STUDENT_START_LOC
9,6
#enddef
#define MARKER_LOC
12,5
#enddef
#define DELFADOR_LOC
13,6
#enddef
#define QUINTAIN_LOC
13,5
#enddef
#define VILLAGE_LOC
11,7
#enddef
#define KEEP_LOC
9,6
#enddef
[tutorial]
id=tutorial
translator_comment=_ "Hello translators! Tutorial is meant to be a little funny at the start, welcoming new players. Please keep friendly fun feeling! Any questions email rusty@rustcorp.com.au!"
name=_ "Wesnoth Tutorial"
map_data="
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Ww, Ww, Gg^Ve, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp
Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp
Gs^Fp, Gg^Ve, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww^Bw/, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg
Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, 1 Kh, Ch, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg
Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ch, Gg, Gg^Ve, Ww^Bw/, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg
Gs^Fp, Gg, Gg^Ve, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp
Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gs^Fp
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp
"
turns=12
[music]
name=elf-land.ogg
[/music]
next_scenario=2_Tutorial
{DAWN}
{MORNING}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{SECOND_WATCH}
victory_when_enemies_defeated=no
[side]
type=Fighter
description=student
user_description=_"Konrad"
canrecruit=1
side=1
controller=human
[/side]
[side]
no_leader=yes
type=Quintain
description=Quintain
user_description=_ "Quintain"
side=2
controller=ai
[ai]
passive_leader=no
caution=0
aggression=5
[target]
description=student
value=10
[/target]
[target]
description=Delfador
value=.1
[/target]
[/ai]
[/side]
[side]
no_leader=yes
description=Delfador
user_description=_ "Delfador"
side=3
team_name=1
controller=null
[/side]
[event]
name=prestart
[unit]
description=Delfador
user_description=_ "Delfador"
type=Elder Mage
x,y={DELFADOR_LOC}
side=3
{IS_HERO}
[/unit]
{LABEL Delfador {DELFADOR_LOC}}
[objectives]
side=1
summary=_ "You will learn the basics of:
movement
attacking
healing
recruiting"
[objective]
description=_ "Destroy a fierce enemy"
condition=win
[/objective]
[objective]
description=_ "Get yourself killed"
condition=lose
[/objective]
[/objectives]
[hide_unit]
x,y={STUDENT_START_LOC}
[/hide_unit]
{VARIABLE student_hp 32}
[/event]
[event]
name=start
[message]
speaker=narrator
message=_"Who would you like to play?"
[option]
message="&" + "konrad-fighter.png" + "=" + _"Konrad"
[command]
{VARIABLE gender male}
{VARIABLE student _"Konrad"}
[/command]
[/option]
[option]
message="&" + "human-princess.png" + "=" + _"Li'sar"
[command]
{VARIABLE gender female}
{VARIABLE student _"Li'sar"}
[store_unit]
[filter]
description=student
[/filter]
kill=yes
variable=student_save
[/store_unit]
{VARIABLE student_x $student_save.x}
{VARIABLE student_y $student_save.y}
[unit]
type=Fighteress
side=1
x,y=$student_x,$student_y
description=student
user_description= _"Li'sar"
canrecruit=1
[/unit]
[redraw][/redraw]
[/command]
[/option]
[/message]
[unhide_unit][/unhide_unit]
{LABEL $student {STUDENT_START_LOC}}
[redraw][/redraw]
{GENDER ([message]
speaker=narrator
message=_ "*Welcome to Wesnoth!" +
_ "
For this tutorial, you are playing Konrad. " +
_ "You are standing in the keep, and your mentor Delfador is on the East side of the river." +
_ "
*Left click or any key to continue..."
[/message]) ([message]
speaker=narrator
message=_ "*Welcome to Wesnoth!" +
_ "
For this tutorial, you are playing Li'sar. " +
_ "You are standing in the keep, and your mentor Delfador is on the East side of the river." +
_ "
*Left click or any key to continue..."
[/message])}
{GENDER ({PRINT (_"Left click on Konrad")})
({PRINT (_"Left click on Li'sar")})}
[/event]
[event]
name=select
[filter]
side=1
[/filter]
{UNLABEL {STUDENT_START_LOC}}
{CLEAR_PRINT}
[redraw][/redraw]
{GENDER ([message]
speaker=narrator
message=_ "*You have selected Konrad.
The places he could move to are highlighted." +
_ "
*Left click or any key to continue..."
[/message]) ([message]
speaker=narrator
message=_ "*You have selected Li'sar.
The places she could move to are highlighted." +
_ "
*Left click or any key to continue..."
[/message])}
{LABEL (_ "HERE") {MARKER_LOC}}
[redraw][/redraw]
{GENDER ([message]
speaker=narrator
message=_ "Move Konrad next to Delfador, by clicking on the place marked 'HERE'." +
_ "
*Left click or any key to continue..."
[/message]) ([message]
speaker=narrator
message=_ "Move Li'sar next to Delfador, by clicking on the place marked 'HERE'." +
_ "
*Left click or any key to continue..."
[/message])}
{DEST 12 5}
{PRINT (_"Left click on tile labelled HERE")}
[/event]
# General catch for them moving to the wrong place.
[event]
name=moveto
first_time_only=no
[allow_undo][/allow_undo]
[filter]
side=1
[/filter]
[if]
[or]
[variable]
name=x1
numerical_not_equals=$destx
[/variable]
[/or]
[or]
[variable]
name=y1
numerical_not_equals=$desty
[/variable]
[/or]
[then]
[if]
[variable]
name=dest
equals="set"
[/variable]
[then]
[redraw][/redraw]
[message]
speaker=narrator
message=_ "*Oops!
You moved to the wrong place! After this message, you can press 'u' to Undo, then try again.
*Left click or any key to continue..."
[/message]
[/then]
[/if]
[/then]
[/if]
[/event]
[event]
name=moveto
[filter]
side=1
x,y={MARKER_LOC}
[/filter]
{CLEAR_PRINT}
{UNLABEL {MARKER_LOC}}
{UNLABEL {DELFADOR_LOC}}
{NODEST}
[redraw][/redraw]
[message]
description=student
message=_ "Good morning Delfador! Is it time to attack things?"
[/message]
[message]
description=Delfador
message=_ "Um, well..."
[/message]
[message]
description=student
message=_ "Have you found an orc for me to fight, huh? A troll?"
[/message]
[message]
description=Delfador
message=_ "Quiet! I will summon an enemy for you..."
[/message]
[scroll_to_unit]
description=Delfador
[/scroll_to_unit]
[sound]
name=lightning.ogg
[/sound]
[colour_adjust]
red=100
green=100
blue=100
[/colour_adjust]
[delay]
time=10
[/delay]
[colour_adjust]
red=0
green=0
blue=0
[/colour_adjust]
[unit]
description=Quintain
type=Quintain
ai_special="guardian"
x,y={QUINTAIN_LOC}
side=2
[/unit]
{LABEL (_"Quintain") {QUINTAIN_LOC}}
[redraw][/redraw]
[message]
description=Delfador
message=_ "... this quintain!"
[/message]
[message]
description=student
message=_ "A quintain? You want me to pretend to fight a dummy??"
[/message]
[message]
description=Delfador
message=_ "Child, you have 32 hitpoints and a sword. I'm fairly sure you'll win."
[/message]
{GENDER ([message]
speaker=narrator
message=_ "To attack the quintain, you will first select the attacker (Konrad) and then the target (the quintain). You will see a description of the details of the attack. When you click OK, Konrad will attack." +
_ "
*Left click or any key to continue..."
[/message]) ([message]
speaker=narrator
message=_ "To attack the quintain, you will first select the attacker (Li'sar) and then the target (the quintain). You will see a description of the details of the attack. When you click OK, Li'sar will attack." +
_ "
*Left click or any key to continue..."
[/message])}
[event]
name=select
[filter]
side=1
[/filter]
{PRINT (_"Click on the quintain to attack it")}
[/event]
{GENDER ({PRINT (_"Left click on Konrad")})
({PRINT (_"Left click on Li'sar")})}
[/event]
# We track student's hitpoints so Delfador can explain them.
[event]
name=attacker_hits
first_time_only=no
[filter_second]
description=student
[/filter_second]
{VARIABLE_OP student_hp add -3}
[/event]
[event]
name=defender_hits
first_time_only=no
[filter]
description=student
[/filter]
{VARIABLE_OP student_hp add -3}
[/event]
[event]
name=attack_end
{CLEAR_PRINT}
{UNLABEL {QUINTAIN_LOC}}
[message]
description=student
message=_ "Hey! This quintain fights back!"
[/message]
[message]
description=Delfador
message=_ "Hmm, maybe we should have started with a doll."
[/message]
[message]
description=student
message=_ "Should I retreat?"
[/message]
[message]
description=Delfador
message=_ "Good idea!"
[/message]
{GENDER ([message]
speaker=narrator
message=_ "Note: the tiny silver crown near Delfador shows that you will lose the game if he is killed. You will also lose the game if your leader (Konrad) is killed."
[/message]) ([message]
speaker=narrator
message=_ "Note: the tiny silver crown near Delfador shows that you will lose the game if he is killed. You will also lose the game if your leader (Li'sar) is killed."
[/message])}
{MOVE Delfador 13 6 13 8}
{VARIABLE future_hp $student_hp}
{VARIABLE_OP future_hp add -15}
[message]
description=Delfador
message=_ "Unfortunately, you've used up your turn attacking the quintain. The quintain will now get a turn."
[/message]
[message]
description=student
message=_ "The DUMMY gets a turn?"
[/message]
[message]
description=Delfador
message=_ "Yes: it's a magical quintain.
Now, this quintain gets five chances to hit you, and if it hits every time, you'll drop from $student_hp to $future_hp hit points. Brace yourself!"
[/message]
{PRINT (_ "Click on the End Turn button on the bottom right")}
[/event]
[event]
name="turn 2"
# There is a 1 in 170,000 chance that the quintain will miss on all
# 10 attacks. Ignoring that.
{CLEAR_PRINT}
[refresh][/refresh]
[message]
description=student
message=_ "Ouch! I need to heal! Only $student_hp hp left!"
[/message]
{LABEL (_"Village") {VILLAGE_LOC}}
[message]
description=Delfador
message=_ "There is a village on the other side of the river. Visiting villages is a good idea, and standing in one will heal you at the start of your next turn: you should retreat to there."
[/message]
{GENDER ({PRINT (_"Left click on Konrad")})
({PRINT (_"Left click on Li'sar")})}
[event]
name=select
[filter]
side=1
[/filter]
{GENDER ({PRINT (_"Click on the village to move Konrad")})
({PRINT (_"Click on the village to move Li'sar")})}
[/event]
{DEST 11 7}
[event]
name=moveto
[filter]
side=1
x,y=11,7
[/filter]
{CLEAR_PRINT}
[redraw][/redraw]
{NODEST}
[message]
speaker=narrator
message=_ "You now 'own' this village: you can see it flies your flag, and soon a '1' will appear next to the house icon at the top of screen. Villages give gold: every turn you gain two gold, plus one for every village you own.
*Left click or any key to continue..."
[/message]
{PRINT (_"Click on the End Turn button")}
[/event]
[/event]
[event]
name=recruit
first_time_only=no
# zookeeper suggested we eliminate traits by killing
# the recruit and replacing it
[kill]
x,y=$x1,$y1
[/kill]
# Each one needs a unique description for next level.
{VARIABLE_OP description_num add 1}
[unit]
description=$description_num
generate_description=yes
type=Elvish Fighter
x,y=$x1,$y1
side=1
upkeep=full
moves=0
[/unit]
[/event]
[event]
name="turn 3"
{CLEAR_PRINT}
{UNLABEL {VILLAGE_LOC}}
[message]
description=Delfador
# FIXME: How many HP really?
message=_ "You're about to be healed by 8 hitpoints. But I think you're going to need some help against that quintain."
[/message]
[message]
description=student
message=_ "I'll recruit some elves!"
[/message]
{LABEL (_"Keep") {KEEP_LOC}}
[message]
description=Delfador
message=_ "A splendid idea. If you return to your keep, you can recruit two units. You have plenty of gold for that."
[/message]
{DEST 9 6}
{GENDER ({PRINT (_"Move Konrad to the keep")})
({PRINT (_"Move Li'sar to the keep")})}
[event]
name=moveto
[filter]
x,y={KEEP_LOC}
[/filter]
{CLEAR_PRINT}
{UNLABEL {KEEP_LOC}}
[set_recruit]
recruit=Elvish Fighter
side=1
[/set_recruit]
[redraw][/redraw]
[message]
speaker=narrator
message=_ "Whenever you're on a keep, you can recruit into castle tiles around it, by right-clicking and selecting 'Recruit'. This time you will only be given one type of unit to choose: select it.
*Left click or any key to continue..."
[/message]
{PRINT (_"Right click on one castle tile and select Recruit")}
[/event]
[event]
name=recruit
[filter]
x,y=10,6
[/filter]
{VARIABLE Fighter1 1}
[if]
[variable]
name=Fighter2
numerical_equals=1
[/variable]
[then]
{CLEAR_PRINT}
[redraw][/redraw]
[message]
speaker=narrator
message=_ "These newly recruited units can do nothing this turn: you will control them next turn.
Note: after this dialog, you can move the mouse over a unit to see a description on the right of the screen.
*Left click or any key to continue..."
[/message]
# They can move to the village if they're smart
{NODEST}
{PRINT (_"Click on the End Turn button")}
[/then]
[else]
{PRINT (_"Right click on the other castle tile and Recruit another unit")}
[/else]
[/if]
[/event]
[event]
name=recruit
[filter]
x,y=9,7
[/filter]
{VARIABLE Fighter2 1}
[if]
[variable]
name=Fighter1
numerical_equals=1
[/variable]
[then]
{CLEAR_PRINT}
[redraw][/redraw]
[message]
speaker=narrator
message=_ "These newly recruited units can do nothing this turn: you will control them next turn.
Note: after this dialog, you can move the mouse over a unit to see a description on the right of the screen.
*Left click or any key to continue..."
[/message]
# They can move to the village if they're smart
{NODEST}
{PRINT (_"Click on the End Turn button")}
[/then]
[else]
{PRINT (_"Right click on the other castle tile and Recruit another unit")}
[/else]
[/if]
[/event]
[/event]
# FIXME: Warn them if they try to attack with Konrad!
[event]
name="turn 4"
{CLEAR_PRINT}
[message]
description=student
message=_ "Hey, the quintain just healed by two hitpoints! I'd better attack it at once!"
[/message]
[message]
description=Delfador
message=_ "Yes, if a unit doesn't do anything for a turn, it will slowly heal.
But before you send your fighters against the quintain, you should know they have two kinds of attack..."
[/message]
[message]
description=student
message=_ "I'll tell them to use the one which does most damage!"
[/message]
[message]
description=Delfador
message=_ "And which would that be? The sword (5-4) or the bow (3-3)? I guess you'll find out..."
[/message]
{PRINT (_"Left click on an Elvish Fighter")}
{VARIABLE encourage (_"End your turn, then attack again.")}
[event]
name=select
[filter]
type=Elvish Fighter
[/filter]
{PRINT (_"Left click on the Quintain to attack it.")}
[/event]
[event]
name=attack
{CLEAR_PRINT}
[/event]
[event]
name=attack_end
[special_filter]
weapon=sword
[/special_filter]
{VARIABLE used_sword 1}
[if]
[variable]
name=used_bow
numerical_equals=1
[/variable]
[then]
[if]
[variable]
name=quintain_dead
numerical_equals=1
[/variable]
[then]
[message]
description=Delfador
message=_ "Your elf used a sword (5-4, or 5 damage, 4 attacks), which is a melee attack, so the quintain defended with its melee attack (3-5). The ranged attack was safer."
[/message]
[/then]
[else]
[message]
description=Delfador
message=_ "Your elf used a sword (5-4, or 5 damage, 4 attacks), which is a melee attack, so the quintain defended with its melee attack (3-5). The ranged attack was safer.
End your turn, then attack again."
[/message]
{PRINT (_"Click on the End Turn button")}
[/else]
[/if]
[/then]
[else]
[message]
description=Delfador
message=_ "Your elf used a sword (5-4, or 5 damage, 4 attacks), which is a melee attack, so the quintain defended with its melee attack (3-5).
You should tell the other Elf to use the bow."
[/message]
{PRINT (_"Attack with the other Elf")}
[event]
name=attack
{CLEAR_PRINT}
[/event]
[/else]
[/if]
[/event]
[event]
name=attack_end
{VARIABLE used_bow 1}
[special_filter]
weapon=bow
[/special_filter]
[if]
[variable]
name=used_sword
numerical_equals=1
[/variable]
[then]
[if]
[variable]
name=quintain_dead
numerical_equals=1
[/variable]
[then]
[message]
description=Delfador
message=_ "Your elf used a bow, which is a ranged attack (3-3, or 3 damage, 3 attacks). The quintain has no ranged attack, only a melee attack, so it could not defend itself."
[/message]
[/then]
[else]
[message]
description=Delfador
message=_ "Your elf used a bow, which is a ranged attack (3-3, or 3 damage, 3 attacks). The quintain has no ranged attack, only a melee attack, so it could not defend itself.
End your turn, then attack again."
[/message]
{PRINT (_"Click on the End Turn button")}
[/else]
[/if]
[/then]
[else]
[message]
description=Delfador
message=_ "Your elf used a bow, which is a ranged attack (3-3, or 3 damage, 3 attacks). The quintain has no ranged attack, only a melee attack, so it could not defend itself."
[/message]
{PRINT (_"Attack with the other Elf")}
[event]
name=attack
{CLEAR_PRINT}
[/event]
[/else]
[/if]
[/event]
[/event]
[event]
name="turn 5"
{CLEAR_PRINT}
[message]
description=Delfador
message=_ "Keep attacking, with both elves, until the quintain is finished!"
[/message]
[/event]
[event]
name="turn 6"
[message]
description=Delfador
message=_ "Maybe you should recruit another elf?"
[/message]
[message]
speaker=narrator
message=_ "Note:
You can right click on a unit to see a detailed Unit Description."
[/message]
[/event]
[event]
name="turn 7"
[if]
[variable]
name=quintain_dead
numerical_equals=1
[/variable]
[then]
[message]
speaker=narrator
message=_ "Note:
Remember to pull back wounded units into villages, and recruit more if you need. Take special care of units with the highest experience points (XP)."
[/message]
[/then]
[/if]
[/event]
[event]
name="turn 8"
[if]
[variable]
name=quintain_dead
numerical_equals=1
[/variable]
[then]
[message]
speaker=narrator
message=_ "Note:
These dummies only attack if you are a single tile away. With care, you should be able to kill them one at a time."
[/message]
[/then]
[/if]
[/event]
[event]
name="turn 9"
[message]
speaker=narrator
message=_ "Note:
Each village you own can support a single unit for free. After that, each unit costs you one gold per turn."
[/message]
[/event]
[event]
name="turn 10"
[message]
speaker=narrator
message=_ "Note:
When a unit gets enough experience (the experience bar is the smaller bar on the right), it will go up a level. Elvish Fighters have two options, and you will get to choose which one you want. Note that level 2 units cost you twice as much to support as level 1 units."
[/message]
[/event]
[event]
name="turn 11"
[message]
speaker=narrator
message=_ "Note:
Once you select a unit, you see percentages for different places: higher means more defensible. For example, defence is good in castles and villages, bad inside rivers. The dummies' attacks are magical, however, so they have a 70% chance of hitting you wherever you stand."
[/message]
[/event]
[event]
name=die
[filter]
description=student
[/filter]
[endlevel]
result=defeat
[/endlevel]
[/event]
[event]
name=die
[filter]
type=Quintain
[/filter]
{CLEAR_PRINT}
[message]
speaker=second_unit
message=_ "The quintain is dead, sirs, and I have gained more experience!"
[/message]
{GENDER ([message]
description=Delfador
message=_ "Yes, you gain more experience through battle, especially killing an opponent: gain enough experience and you become more powerful." +
_ "Now Konrad, I will leave you with more dummies to practice on! After that, we have real work to do..."
[/message]) ([message]
description=Delfador
message=_ "Yes, you gain more experience through battle, especially killing an opponent: gain enough experience and you become more powerful." +
_ "Now Li'sar, I will leave you with more dummies to practice on! After that, we have real work to do..."
[/message])}
{VARIABLE quintain_dead 1}
[unit]
description=Quintain
type=Quintain
ai_special="guardian"
x,y=16,10
side=2
[/unit]
[unit]
description=Quintain
type=Quintain
ai_special="guardian"
x,y=13,11
side=2
[/unit]
[unit]
description=Quintain
type=Quintain
ai_special="guardian"
x,y=9,11
side=2
[/unit]
[unit]
description=Quintain
type=Quintain
ai_special="guardian"
x,y=4,10
side=2
[/unit]
{MOVE Delfador 13 8 2 1}
[kill]
description=Delfador
[/kill]
[scroll_to_unit]
type=Quintain
[/scroll_to_unit]
[event]
name=new turn
first_time_only=no
[message]
speaker=narrator
message=_ "Do you want to keep practicing?"
[option]
message=_ "Yes, I'm still figuring it out."
[/option]
[option]
message=_ "No, I think I've got it."
[command]
[endlevel]
result=victory
[/endlevel]
[/command]
[/option]
[/message]
[/event]
[/event]
[event]
name=time over
[if]
[variable]
name=quintain_dead
numerical_equals=1
[/variable]
[then]
[endlevel]
result=victory
[/endlevel]
[/then]
[else]
[endlevel]
result=defeat
[/endlevel]
[/else]
[/if]
[/event]
[/tutorial]