T S2: initial refactor. Still much to do
This commit is contained in:
parent
b4614de149
commit
5d5f85814f
1 changed files with 148 additions and 527 deletions
|
@ -37,93 +37,6 @@
|
|||
[/if]
|
||||
#enddef
|
||||
|
||||
#define REFUND_AND_REMOVE_RECRUIT
|
||||
[if]
|
||||
[variable]
|
||||
# is it a recall?
|
||||
# FIXME: units could be recalled with 0 xp
|
||||
name=recruit.experience
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
[gold]
|
||||
side=1
|
||||
amount=20
|
||||
[/gold]
|
||||
# put the unit back into the recall list
|
||||
# ugly trait hack...
|
||||
[unit]
|
||||
side=$recruit.side
|
||||
name=$recruit.name
|
||||
type=$recruit.type
|
||||
experience=$recruit.experience
|
||||
gender=$recruit.gender
|
||||
[modifications]
|
||||
[trait]
|
||||
id=$recruit.modifications.trait[0].id
|
||||
name=$recruit.modifications.trait[0].name
|
||||
[effect]
|
||||
apply_to=$recruit.modifications.trait[0].effect[0].apply_to
|
||||
# hitpoints (resilient & quick)
|
||||
increase_total=$recruit.modifications.trait[0].effect[0].increase_total
|
||||
times=$recruit.modifications.trait[0].effect[0].times
|
||||
# damage (strong, dextrous)
|
||||
increase_damage=$recruit.modifications.trait[0].effect[0].increase_damage
|
||||
range=$recruit.modifications.trait[0].effect[0].range
|
||||
# movement (quick), experience (intelligent)
|
||||
increase=$recruit.modifications.trait[0].effect[0].increase
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=$recruit.modifications.trait[0].effect[1].apply_to
|
||||
# hitpoints (resilient & quick)
|
||||
increase_total=$recruit.modifications.trait[0].effect[1].increase_total
|
||||
times=$recruit.modifications.trait[0].effect[1].times
|
||||
# damage (strong, dextrous)
|
||||
increase_damage=$recruit.modifications.trait[0].effect[1].increase_damage
|
||||
range=$recruit.modifications.trait[0].effect[1].range
|
||||
# movement (quick), experience (intelligent)
|
||||
increase=$recruit.modifications.trait[0].effect[1].increase
|
||||
[/effect]
|
||||
[/trait]
|
||||
[trait]
|
||||
id=$recruit.modifications.trait[1].id
|
||||
name=$recruit.modifications.trait[1].name
|
||||
[effect]
|
||||
apply_to=$recruit.modifications.trait[1].effect[0].apply_to
|
||||
# hitpoints (resilient & quick)
|
||||
increase_total=$recruit.modifications.trait[1].effect[0].increase_total
|
||||
times=$recruit.modifications.trait[1].effect[0].times
|
||||
# damage (strong, dextrous)
|
||||
increase_damage=$recruit.modifications.trait[1].effect[0].increase_damage
|
||||
range=$recruit.modifications.trait[1].effect[0].range
|
||||
# movement (quick), experience (intelligent)
|
||||
increase=$recruit.modifications.trait[1].effect[0].increase
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=$recruit.modifications.trait[1].effect[1].apply_to
|
||||
# hitpoints (resilient & quick)
|
||||
increase_total=$recruit.modifications.trait[1].effect[1].increase_total
|
||||
times=$recruit.modifications.trait[1].effect[1].times
|
||||
# damage (strong, dextrous)
|
||||
increase_damage=$recruit.modifications.trait[1].effect[1].increase_damage
|
||||
range=$recruit.modifications.trait[1].effect[1].range
|
||||
# movement (quick), experience (intelligent)
|
||||
increase=$recruit.modifications.trait[1].effect[1].increase
|
||||
[/effect]
|
||||
[/trait]
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[/then]
|
||||
[else]
|
||||
# simply use cost to return
|
||||
[gold]
|
||||
side=1
|
||||
amount=$recruit.cost
|
||||
[/gold]
|
||||
[/else]
|
||||
[/if]
|
||||
#enddef
|
||||
|
||||
#define CHECK_INTELLIGENT NAME
|
||||
[if]
|
||||
[variable]
|
||||
|
@ -347,6 +260,9 @@
|
|||
|
||||
{DEFAULT_SCHEDULE}
|
||||
|
||||
# FIXME
|
||||
{DEFAULT_MUSIC_PLAYLIST}
|
||||
|
||||
[side]
|
||||
side=1
|
||||
controller=human
|
||||
|
@ -420,24 +336,24 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _"Death of Konrad"
|
||||
condition=lose
|
||||
[show_if]
|
||||
[have_unit]
|
||||
id=student
|
||||
gender=male
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
description= _"Death of Konrad"
|
||||
condition=lose
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _"Death of Li’sar"
|
||||
condition=lose
|
||||
[show_if]
|
||||
[have_unit]
|
||||
id=student
|
||||
gender=female
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
description= _"Death of Li’sar"
|
||||
condition=lose
|
||||
[/objective]
|
||||
|
||||
{TURNS_RUN_OUT}
|
||||
|
@ -447,468 +363,160 @@
|
|||
[event]
|
||||
name=start
|
||||
|
||||
{VARIABLE dumbo_dead 0}
|
||||
# TODO: determine necessity
|
||||
{VARIABLE villages_around_keep 0}
|
||||
{VARIABLE village_warn 0}
|
||||
{VARIABLE recruit_num 1}
|
||||
{VARIABLE income_exceeded 0}
|
||||
|
||||
#wmllint: local spelling Galdrad
|
||||
{STUDENT (_"Ho, Galdrad! Has Delfador conjured something else to beat me with? A flock of scarecrows, perhaps?")}
|
||||
# wmlindent: start ignoring
|
||||
{GENDER ({TEACHER (_"This is no game, Konrad! " +
|
||||
_"Orcs have encamped across the river. This is elven country; they are fools to enter here. We Elves are fast and hard to hit in forests. You must defeat their leader so they never threaten us again. I will advise you.")}) ({TEACHER (_"This is no game, Li’sar! " +
|
||||
_"Orcs have encamped across the river. This is elven country; they are fools to enter here. We Elves are fast and hard to hit in forests. You must defeat their leader so they never threaten us again. I will advise you.")})}
|
||||
# wmlindent: stop ignoring
|
||||
{STUDENT (_"What should I do?")}
|
||||
[message]
|
||||
speaker=student
|
||||
message= _ "Ho, Galdrad! Has Delfador conjured something else to beat me with? A flock of scarecrows, perhaps?"
|
||||
[/message]
|
||||
|
||||
# Now we’re into it... start music.
|
||||
{DEFAULT_MUSIC_PLAYLIST}
|
||||
{GENDER (
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _ "This is no game, Konrad! Orcs have encamped across the river. This is elven country; they are fools to enter here. We Elves are fast and hard to hit in forests. You must defeat their leader so they never threaten us again. I will advise you."
|
||||
[/message]
|
||||
) (
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _ "This is no game, Li’sar! Orcs have encamped across the river. This is elven country; they are fools to enter here. We Elves are fast and hard to hit in forests. You must defeat their leader so they never threaten us again. I will advise you."
|
||||
[/message]
|
||||
)}
|
||||
|
||||
[message]
|
||||
speaker=student
|
||||
message= _ "What should I do?"
|
||||
[/message]
|
||||
|
||||
{TALK_ABOUT Dumbo (_"First, we will have to deal with the Orcish Grunt stationed in the middle of the river. He should be little trouble.")}
|
||||
{TALK_ABOUT Thrag (_"By then, their leader will have recruited more units to send against us and the real fight will begin.")}
|
||||
{LABEL (_"Shallow") 19,16}
|
||||
{LABEL (_"Shallow") 18,16}
|
||||
{LABEL (_"Shallow") 18,14}
|
||||
{LABEL (_"Shallow") 19,15}
|
||||
{LABEL (_"Shallow") 20,14}
|
||||
{LABEL (_"Deep water") 14,14}
|
||||
{LABEL (_"Deep water") 20,16}
|
||||
{LABEL (_"Deep water") 4,14}
|
||||
|
||||
{TALK_ABOUT_LOC 19,14 (_"See this dark blue water? It’s too deep for either side to cross. The orcs could slowly wade through that narrow band of shallow lighter-blue water in the east; but we could stand on the shore and force them to fight us from the water, where they are exposed and we are protected by the forest.")}
|
||||
{UNLABEL 19,16}
|
||||
{UNLABEL 18,16}
|
||||
{UNLABEL 18,14}
|
||||
{UNLABEL 19,15}
|
||||
{UNLABEL 20,14}
|
||||
{UNLABEL 14,14}
|
||||
{UNLABEL 20,16}
|
||||
{UNLABEL 4,14}
|
||||
{LABEL (_"Village") 11,14}
|
||||
|
||||
{TALK_ABOUT_LOC 9,14 (_"The more likely attack, then, is across the bridge. That middle island is the key: it has a village for healing injured units and forests in which we fight so well.")}
|
||||
{UNLABEL 11,14}
|
||||
# wmlindent: start ignoring
|
||||
{TEACHER (_"To start, we will need some units:
|
||||
two Elvish Fighters
|
||||
two Elvish Archers
|
||||
one Elvish Shaman")}
|
||||
# wmlindent: stop ignoring
|
||||
|
||||
# See if there are two fighters worth recalling
|
||||
[store_unit]
|
||||
variable=recall
|
||||
[filter]
|
||||
x,y=recall,recall
|
||||
[/filter]
|
||||
[/store_unit]
|
||||
[message]
|
||||
speaker=student
|
||||
message= _ "Let’s go! Attack!"
|
||||
[/message]
|
||||
|
||||
# Higher Level units should come first.
|
||||
{VARIABLE recall_xp1 0}
|
||||
{VARIABLE recall_xp2 0}
|
||||
{FOREACH recall i}
|
||||
{VARIABLE temp_xp $recall[$i].experience}
|
||||
{VARIABLE_OP temp_xp add $recall[$i].variables.previous_xp}
|
||||
[if]
|
||||
[variable]
|
||||
name=temp_xp
|
||||
greater_than=$recall_xp1
|
||||
[/variable]
|
||||
[then]
|
||||
# Move anything from slot 1 to slot 2
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp1
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
{VARIABLE_OP recall_i2 value $recall_i1}
|
||||
{VARIABLE_OP recall_xp2 value $recall_xp1}
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
{VARIABLE_OP recall_i1 value $i}
|
||||
{VARIABLE_OP recall_xp1 value $temp_xp}
|
||||
[/then]
|
||||
[else]
|
||||
[if]
|
||||
[variable]
|
||||
name=temp_xp
|
||||
greater_than=$recall_xp2
|
||||
[/variable]
|
||||
[then]
|
||||
{VARIABLE_OP recall_i2 value $i}
|
||||
{VARIABLE_OP recall_xp2 value $temp_xp}
|
||||
[/then]
|
||||
[/if]
|
||||
[/else]
|
||||
[/if]
|
||||
{NEXT i}
|
||||
{CLEAR_VARIABLE i}
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _ "Hang on! You need to gather your forces. Or do you intend to fight the orcs singlehandedly?"
|
||||
[/message]
|
||||
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp1
|
||||
greater_than=0
|
||||
[/variable]
|
||||
# Do we have a recall list at all? It’s possible that the player lost all their units in the first scenario
|
||||
[have_unit]
|
||||
side=1
|
||||
x,y=recall,recall
|
||||
[/have_unit]
|
||||
[then]
|
||||
{VARIABLE_OP recall_name1 value $recall[$recall_i1].name}
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp2
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
{VARIABLE_OP recall_name2 value $recall[$recall_i2].name}
|
||||
# We have two worth recalling.
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp1
|
||||
equals=$recall_xp2
|
||||
[/variable]
|
||||
[then]
|
||||
{TEACHER (_"During your tutorial, both $recall_name1 and $recall_name2 gained $recall_xp1 experience points. You should <i>recall</i> them now so they can gain more experience, rather than recruiting new Fighters.")}
|
||||
[/then]
|
||||
[else]
|
||||
{TEACHER (_"During your tutorial, $recall_name1 gained $recall_xp1 experience points, and $recall_name2 gained $recall_xp2. You should <i>recall</i> them now so they can gain more experience, rather than recruiting new Fighters.")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[else]
|
||||
# We have one worth recalling.
|
||||
{TEACHER (_"During your tutorial, $recall_name1 gained $recall_xp1 experience points. You should recall that unit now, and recruit a second one (which is cheaper than recalling, anyway).")}
|
||||
[/else]
|
||||
[/if]
|
||||
{LABEL (_"RECALL $recall_name1") 11,3}
|
||||
{PRINT (_"Right click on the tile north-east of you and <i>recall</i> $recall_name1")}
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _"I see you have veteran troops from your training! You should <i>recall</i> them as as to start off the battle with more experienced units."
|
||||
[/message]
|
||||
|
||||
# It's impossible to have a lvl 3 unit by now, and rare to even have a lvl 2, but let's mention it anyway
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _"Some of your units have also managed to level up. They’re even more formidable, so you should recall them first."
|
||||
[show_if]
|
||||
[have_unit]
|
||||
side=1
|
||||
x,y=recall,recall
|
||||
level=2
|
||||
[/have_unit]
|
||||
[/show_if]
|
||||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
[if]
|
||||
[variable]
|
||||
name=recall.length
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
{TEACHER (_"If any Elvish Fighters from your last battle had experience, we would <i>recall</i> them to the current battlefield. However, your veterans gained no experience so it’s cheaper to recruit new units instead. Recruit an Elvish Fighter.")}
|
||||
[/then]
|
||||
[else]
|
||||
{TEACHER (_"If you had any experienced units alive from your last battle we would <i>recall</i> them. Instead we must recruit some new Elvish Fighters.")}
|
||||
[/else]
|
||||
[/if]
|
||||
{LABEL (_"Elvish Fighter") 11,3}
|
||||
{PRINT (_"Right click on the tile north-east of you and recruit an Elvish Fighter")}
|
||||
# Unlikely in any case
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _"Unfortunately, none of your troops survived your training, so you will have to recruit new units. If you had any veteran troops, you could have <i>recalled</i> them to battle this scenario. More experienced units would have been of help against these orcs."
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
|
||||
[message]
|
||||
speaker=narrator
|
||||
caption= _"Recalling"
|
||||
image=wesnoth-icon.png
|
||||
message= _"In addition to recruiting new units each scenario, you can also <i>recall</i> your experienced veterans from previous scenarios, for the cost of 20 gold each. This allows you to build up a formidable army over the course of multiple scenarios by recalling your highest leveled troops or those with good combinations of traits and abilities. To recall a unit, right click while your leader stands on a keep and select the <i>Recall</i> option. Remember to also recruit new troops in addition to recalling old ones."
|
||||
[/message]
|
||||
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _"You also have two new types of units to recruit this scenario: Elvish Archers and Elvish Shamans. I'll tell you more about them when you recruit them."
|
||||
[/message]
|
||||
|
||||
{PRINT ( _ "Recruit and recall your troops")}
|
||||
[/event]
|
||||
|
||||
# Check they recall/recruit correctly in their first turn.
|
||||
# Explaining the Shaman
|
||||
[event]
|
||||
name=recruit
|
||||
[filter]
|
||||
side=1
|
||||
type=Elvish Shaman
|
||||
[/filter]
|
||||
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
# TODO: image?
|
||||
message= _"The Shaman is a fairly weak unit, but she has the ability to <i>heal</i> friendly units around her. She also has a special attack which <i>slows</i> enemies, halving the damage they do for one turn."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# Explaining the Archer
|
||||
[event]
|
||||
name=recruit
|
||||
[filter]
|
||||
side=1
|
||||
type=Elvish Archer
|
||||
[/filter]
|
||||
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
# TODO: image?
|
||||
message= _"Unlike the Elvish Fighter, which has strong melee attacks, the Elvish Archer has strong ranged attacks. It's useful to attack enemy units with strong attacks of a type with units specializing in attacks of the opposite types, so you take less damage."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
# Mention upkeep
|
||||
[event]
|
||||
name=recruit,recall
|
||||
first_time_only=no
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[filter_condition]
|
||||
[have_unit]
|
||||
side=1
|
||||
race=elf
|
||||
count=6
|
||||
[/have_unit]
|
||||
[/filter_condition]
|
||||
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit_num
|
||||
less_than=6
|
||||
[/variable]
|
||||
[then]
|
||||
# What did they recruit?
|
||||
[store_unit]
|
||||
variable=recruit
|
||||
kill=yes
|
||||
[filter]
|
||||
x,y=$x1,$y1
|
||||
[/filter]
|
||||
[/store_unit]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
{NUMEQ recruit_num 5}
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.type
|
||||
not_equals=Elvish Shaman
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said recruit an Elvish <i>Shaman</i>! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
[unstore_unit]
|
||||
variable=recruit
|
||||
[/unstore_unit]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
{UNLABEL 10,2}
|
||||
{CLEAR_PRINT}
|
||||
{TEACHER (_"The Shaman is a fairly weak unit, but she has the ability to <i>heal</i> friendly units around her. She also has a special attack which <i>slows</i> enemies, halving the damage they do.")}
|
||||
{STUDENT (_"So, should I end my turn now?")}
|
||||
# FIXME: If any level 2 units, costs will be higher.
|
||||
{TEACHER (_"While none of your recruited units can move, you still can. Your five units cost you 5 gold in upkeep, leaving you 3 gold poorer per turn. You need more income.")}
|
||||
# wmlindent: start ignoring
|
||||
{GENDER ({PRINT (_"Move Konrad to capture a village")})
|
||||
({PRINT (_"Move Li’sar to capture a village")})}
|
||||
# wmlindent: stop ignoring
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
{NUMEQ recruit_num 4}
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.type
|
||||
not_equals=Elvish Archer
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said recruit an Elvish <i>Archer</i>! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
[unit]
|
||||
id=Eowynial
|
||||
name= _"Eowynial"
|
||||
type=Elvish Archer
|
||||
x,y=$x1,$y1
|
||||
side=1
|
||||
gender=female
|
||||
moves=0
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
{EXPLAIN_QUICK_RESILIENT (_"Eowynial")}
|
||||
|
||||
{UNLABEL 9,4}
|
||||
{UNLABEL 9,3}
|
||||
{LABEL (_"Shaman") 10,2}
|
||||
{PRINT (_"Recruit an Elvish Shaman to your north")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
{NUMEQ recruit_num 3}
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.type
|
||||
not_equals=Elvish Archer
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said recruit an Elvish <i>Archer</i>! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
[unit]
|
||||
id=Elriend
|
||||
name= _"Elriend"
|
||||
type=Elvish Archer
|
||||
x,y=$x1,$y1
|
||||
side=1
|
||||
moves=0
|
||||
[modifications]
|
||||
{TRAIT_STRONG}
|
||||
{TRAIT_INTELLIGENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
{EXPLAIN_STRONG_INTELLIGENT (_"Elriend")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
{NUMEQ recruit_num 2}
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp2
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
# You were supposed to recall $recall_name2.
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.name
|
||||
not_equals=$recall_name2
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said <i>recall</i> $recall_name2|! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
[unstore_unit]
|
||||
variable=recruit
|
||||
[/unstore_unit]
|
||||
{UNLABEL 12,3}
|
||||
# wmlindent: start ignoring
|
||||
{LABEL (_"Archer #1") 9,4}
|
||||
{LABEL (_"Archer #2") 9,3}
|
||||
# wmlindent: stop ignoring
|
||||
{PRINT (_"Recruit two Elvish Archers in the tiles to your west")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[else]
|
||||
# You were supposed to recruit a Fighter.
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.type
|
||||
not_equals=Elvish Fighter
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said recruit an Elvish <i>Fighter</i>! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
[unit]
|
||||
id=Golir
|
||||
name= _"Golir"
|
||||
type=Elvish Fighter
|
||||
x,y=$x1,$y1
|
||||
side=1
|
||||
moves=0
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
{EXPLAIN_QUICK_RESILIENT (_"Golir")}
|
||||
|
||||
{UNLABEL 12,3}
|
||||
# wmlindent: start ignoring
|
||||
{LABEL (_"Archer #1") 9,4}
|
||||
{LABEL (_"Archer #2") 9,3}
|
||||
# wmlindent: stop ignoring
|
||||
{PRINT (_"Recruit two Elvish Archers in the tiles to your west")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
{NUMEQ recruit_num 1}
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp1
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
# You were supposed to recall $recall_name1.
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.name
|
||||
not_equals=$recall_name1
|
||||
[/variable]
|
||||
[then]
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.name
|
||||
equals=$recall_name2
|
||||
[/variable]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said recall $recall_name1, not $recall_name2|! Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"No! I said <i>recall</i> $recall_name1 from the last battle, not recruit a new $recruit.language_name|! Now try again...")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[else]
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
{UNLABEL 11,3}
|
||||
[unstore_unit]
|
||||
variable=recruit
|
||||
[/unstore_unit]
|
||||
[if]
|
||||
[variable]
|
||||
name=recall_xp2
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[then]
|
||||
{PRINT (_"Right click on the tile east of you and recall $recall_name2")}
|
||||
{LABEL (_"RECALL $recall_name2") 12,3}
|
||||
[/then]
|
||||
[else]
|
||||
{LABEL (_"Elvish Fighter") 12,3}
|
||||
{PRINT (_"Right click on the tile east of you and recruit an Elvish Fighter")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[else]
|
||||
# You were supposed to recruit a new fighter.
|
||||
# FIXME: How do we tell if they recalled instead?
|
||||
[if]
|
||||
[variable]
|
||||
name=recruit.type
|
||||
not_equals=Elvish Fighter
|
||||
[/variable]
|
||||
[or]
|
||||
[variable]
|
||||
# FIXME: not a perfect indicator of recall
|
||||
name=recruit.experience
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[/or]
|
||||
[then]
|
||||
{REFUND_AND_REMOVE_RECRUIT}
|
||||
{TEACHER (_"$recruit.language_name|? I said <i>recruit</i> a new <i>Elvish Fighter</i>. Now try again...")}
|
||||
[/then]
|
||||
[else]
|
||||
{UNLABEL 11,3}
|
||||
{VARIABLE_OP recruit_num add 1}
|
||||
[unit]
|
||||
id=Elindel
|
||||
name= _"Elindel"
|
||||
type=Elvish Fighter
|
||||
x,y=$x1,$y1
|
||||
side=1
|
||||
moves=0
|
||||
[modifications]
|
||||
{TRAIT_STRONG}
|
||||
{TRAIT_INTELLIGENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
{EXPLAIN_STRONG_INTELLIGENT (_"Elindel")}
|
||||
{LABEL (_"Elvish Fighter") 12,3}
|
||||
{PRINT (_"Right click on the tile east of you and recruit an Elvish Fighter")}
|
||||
[/else]
|
||||
[/if]
|
||||
[/else]
|
||||
[/if]
|
||||
[/then]
|
||||
[/if]
|
||||
{CLEAR_VARIABLE recruit}
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
# TODO: FIXME
|
||||
message= _"While none of your recruited units can move, you still can. Your five units cost you 5 gold in upkeep, leaving you 3 gold poorer per turn. You need more income."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=capture
|
||||
first_time_only=no
|
||||
[filter]
|
||||
x=7,9,13
|
||||
y=4,2,3
|
||||
id=student
|
||||
[/filter]
|
||||
first_time_only=no
|
||||
|
||||
[allow_undo][/allow_undo]
|
||||
# FIXME: If they somehow capture a village near keep, count could be wrong.
|
||||
|
@ -937,13 +545,14 @@ one Elvish Shaman")}
|
|||
[event]
|
||||
name=capture
|
||||
[filter]
|
||||
side=1
|
||||
x=7,9,13
|
||||
y=4,2,3
|
||||
side=1
|
||||
[not]
|
||||
id=student
|
||||
[/not]
|
||||
[/filter]
|
||||
|
||||
{GENDER ({TEACHER (_"You should leave the villages near your keep for Konrad to capture. He needs to stay nearby to recruit more units anyway.")})
|
||||
({TEACHER (_"You should leave the villages near your keep for Li’sar to capture. She needs to stay nearby to recruit more units anyway.")})}
|
||||
{UNDO_REMINDER}
|
||||
|
@ -964,14 +573,17 @@ one Elvish Shaman")}
|
|||
[/filter]
|
||||
{TEACHER (_"Excellent. Elves are well-protected in the forest. There’s only a 30% chance of hitting an Elvish Archer in that tile.")}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
x,y=9,8
|
||||
side=1
|
||||
[/filter]
|
||||
|
||||
{TEACHER (_"It’s very dangerous to stand in water when there are enemies about! Your unit will have an 80% chance of being hit when the enemy counter-attacks! Get back!")}
|
||||
|
||||
[allow_undo][/allow_undo]
|
||||
{TEACHER (_"It’s very dangerous to stand in water when there are enemies about! Your unit will have an 80% chance of being hit when the enemy counter-attacks! Cancel!")}
|
||||
{UNDO_REMINDER}
|
||||
[/event]
|
||||
|
||||
|
@ -1145,7 +757,7 @@ To move your troops onto that island without wading slowly through the water, yo
|
|||
[filter]
|
||||
id=Dumbo
|
||||
[/filter]
|
||||
{VARIABLE dumbo_dead 1}
|
||||
|
||||
# Only tell them to defend island if not turn 3.
|
||||
[if]
|
||||
[variable]
|
||||
|
@ -1458,6 +1070,7 @@ To move your troops onto that island without wading slowly through the water, yo
|
|||
x=1-13
|
||||
y=18-21
|
||||
[/filter]
|
||||
|
||||
{TALK_ABOUT Thrag (_"Beware of the orc leader: he can do 36 hitpoints of damage at night! Attack with many units at once during the day.")}
|
||||
[/event]
|
||||
|
||||
|
@ -1477,23 +1090,18 @@ To move your troops onto that island without wading slowly through the water, yo
|
|||
[then]
|
||||
[message]
|
||||
speaker=unit
|
||||
#wmllint: display on
|
||||
message= _"Advancing a level has fully healed me!
|
||||
I always have a 60% chance of hitting with my <i>Marksman</i> ability, and I deal 9 damage each for 4 attacks. Use me to dislodge hard-to-hit units."
|
||||
#wmllint: display off
|
||||
message= _"Advancing a level has fully healed me! I always have a 60% chance of hitting with my <i>Marksman</i> ability, and I deal 9 damage each for 4 attacks. Use me to dislodge hard-to-hit units."
|
||||
[/message]
|
||||
[/then]
|
||||
[else]
|
||||
[message]
|
||||
speaker=unit
|
||||
#wmllint: display on
|
||||
message= _"female^Advancing a level has fully healed me!
|
||||
I always have a 60% chance of hitting with my <i>Marksman</i> ability, and I deal 9 damage each for 4 attacks. Use me to dislodge hard-to-hit units."
|
||||
#wmllint: display off
|
||||
message= _"female^Advancing a level has fully healed me! I always have a 60% chance of hitting with my <i>Marksman</i> ability, and I deal 9 damage each for 4 attacks. Use me to dislodge hard-to-hit units."
|
||||
[/message]
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=post_advance
|
||||
[filter]
|
||||
|
@ -1508,6 +1116,7 @@ I am good with both bow and sword, and I have a special ability: <i>Ambush</i>.
|
|||
#wmllint: display off
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=post_advance
|
||||
[filter]
|
||||
|
@ -1522,6 +1131,7 @@ I am good with both bow and sword, and I have a special ability: <i>Leadership</
|
|||
#wmllint: display off
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=post_advance
|
||||
[filter]
|
||||
|
@ -1540,7 +1150,12 @@ I am particularly good with the sword, dealing 8 damage in 4 attacks."
|
|||
|
||||
[event]
|
||||
name=time over
|
||||
{TEACHER (_"You took too long! We’ll never be rid of these orcs!")}
|
||||
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _ "You took too long! We’ll never be rid of these orcs!"
|
||||
[/message]
|
||||
|
||||
[endlevel]
|
||||
result=defeat
|
||||
[/endlevel]
|
||||
|
@ -1551,6 +1166,7 @@ I am particularly good with the sword, dealing 8 damage in 4 attacks."
|
|||
[filter]
|
||||
id=student
|
||||
[/filter]
|
||||
|
||||
[endlevel]
|
||||
result=defeat
|
||||
[/endlevel]
|
||||
|
@ -1558,11 +1174,16 @@ I am particularly good with the sword, dealing 8 damage in 4 attacks."
|
|||
|
||||
[event]
|
||||
name=defeat
|
||||
|
||||
{CLEAR_PRINT}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
name=victory
|
||||
{TEACHER (_"You have beaten the orcs! You may want to try some novice-level campaigns next, such as: <i>The South Guard</i>, <i>An Orcish Incursion</i>, <i>A Tale of Two Brothers</i>, or <i>Heir to the Throne</i>. <i>The South Guard</i> was specifically designed as a beginner’s campaign. Konrad, Li’sar and Delfador are characters from <i>Heir to the Throne</i>.")}
|
||||
|
||||
[message]
|
||||
speaker=Galdrad
|
||||
message= _ "You have beaten the orcs! You may want to try some novice-level campaigns next, such as: <i>The South Guard</i>, <i>An Orcish Incursion</i>, <i>A Tale of Two Brothers</i>, or <i>Heir to the Throne</i>. <i>The South Guard</i> was specifically designed as a beginner’s campaign. Konrad, Li’sar and Delfador are characters from <i>Heir to the Throne</i>."
|
||||
[/message]
|
||||
[/event]
|
||||
[/tutorial]
|
||||
|
|
Loading…
Add table
Reference in a new issue