diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map b/data/campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map
index c50331364d71..f040d169c705 100644
--- a/data/campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map
+++ b/data/campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map
@@ -1,6 +1,3 @@
-border_size=1
-usage=map
-
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Vud, Xu, Xu, Xu, Xu, Xu, Uh^Crys, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu
Xu, Xu, Xu, Xu, Uh^Crys, Xu, Uh^Crys, Uh^Crys, Uh^Crys, Xu, Uh^Crys, Uh^Crys, Ur, Uh, Ur^Br/, Uu^Br\, Uh^Br\, Uh^Dr, Uh^Crys, Uu, Uh^Vud, Uh^Crys, Uh^Crys, Xu, Xu, Xu, Uu, Xu, Xu, Xu, Ur^Xo, Xu, Xu, Ur^Kov, Xu, Xu, Ur^Xo, Xu, Xu, Xu, Xu, Xu
@@ -35,7 +32,7 @@ Xu, Xu, Xu, Xu, Xu, Uu^Br\, Uu^Br\, Xu, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb,
Xu, Xu, Xu, Xu, Xu, Xu, Urb^Br|, Urb^Br\, Urb^Br\, Xu, Xu, Urb^Vud, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb^Vud, Xu, Xu, Sm^Uf, Sm^Emf, Sm^Uf, Xu, Xu, Uh, Uu, Xu, Xu, Xu
Xu, Xu, Xu, Xu, Xu, Xu, Urb^Br\, Urb, Urb, Urb^Br\, Urb^Br|, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Sm^Emf, Sm^Em, Rb^Uf, Sm^Emf, Xu, Xu, Uu, Uh, Xu, Xu
Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb^Br\, Urb^Br\, Urb, Urb^Br|, Urb, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Rr, Xu, Xu, Xu, Xu, Sm^Uf, Sm^Uf, Sm^Uf, Rb^Uf, Sm^Uf, Xu, Xu, Uu, Xu, Xu, Xu
-Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Urb^Br/, Xu, Xu, Urb, Urb, Urb, Xu, Urb, Urb, Urb^Vud, Urb, Urb, Urb, Urb^Vud, Urb, Xu, Rr, Rr, Rr, Rr, Xu, Xu, Sm^Uf, Rb^Uf, Sm^Em, Sm^Emf, Rb^Uf, Uh, Xu, Uu, Uh, Xu, Xu
+Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Urb^Br/, Xu, Xu, Urb, Urb, Urb, Xu, Urb^Prg, Urb, Urb^Vud, Urb, Urb, Urb, Urb^Vud, Urb, Xu, Rr, Rr, Rr, Rr, Xu, Xu, Sm^Uf, Rb^Uf, Sm^Em, Sm^Emf, Rb^Uf, Uh, Xu, Uu, Uh, Xu, Xu
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Urb, Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Rr, Rr, Xu, Xu, Xu, Rb^Uf, Rb^Uf, Rb^Uf, Xu, Uh, Uu, Uh, Xu, Xu, Xu
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Rr, Rr, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Rr, Rr, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/01_Slipping_Away.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/01_Slipping_Away.cfg
index ff190bcd093b..7711dc60f0a6 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/01_Slipping_Away.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/01_Slipping_Away.cfg
@@ -168,7 +168,7 @@ With further observation, I have determined that this is probably not be the way
[objectives]
side=1
[objective]
- description= _ "Move Ardonna to the signpost."
+ description= _ "Move Ardonna to the signpost"
condition=win
[/objective]
@@ -180,8 +180,7 @@ With further observation, I have determined that this is probably not be the way
[/gold_carryover]
[note]
- red,blue,green=0,255,255
- description= _ "This entire scenario takes place at night."
+ description= _ "This scenario takes place entirely at night."
[/note]
[/objectives]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/02_Dark_Business.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/02_Dark_Business.cfg
index ebb91462b23c..a723377d2e97 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/02_Dark_Business.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/02_Dark_Business.cfg
@@ -215,7 +215,7 @@ I decided to hide in the cemetery. That way I could try my experiment to animate
[objectives]
side=1
[objective]
- description= _ "Kill all the guards, and capture the guardhouse."
+ description= _ "Kill all the guards, and capture the guardhouse"
condition=win
[/objective]
@@ -227,12 +227,13 @@ I decided to hide in the cemetery. That way I could try my experiment to animate
[/gold_carryover]
[note]
- red,blue,green=0,255,255
- description= _ "This entire scenario takes place at night."
+ description= _ "Right-click on a grave adjacent to your leader to raise a unit."
[/note]
[note]
- red,blue,green=0,255,255
- description= _ "Right-click on nearby gravestones to get more units."
+ description= _ "Each grave can be used only once."
+ [/note]
+ [note]
+ description= _ "This scenario takes place entirely at night."
[/note]
[/objectives]
@@ -332,7 +333,7 @@ of Healing"
speaker=narrator
# This puts images of the two units next to each other,
# scaled to the same size:
- image=story/black-background.png~BLIT(portraits/undead/archer.png~SCALE(180,180),6,25 )~BLIT(portraits/undead/skeleton.png,187,0)~CROP(0,0,376,205)~SCALE(171,93)
+ image=story/black-background.png~BLIT(portraits/undead/archer.png~SCALE(180,180),6,25 )~BLIT(portraits/undead/skeleton.png~SCALE(220,220),187,0)~CROP(0,0,376,205)~SCALE(171,93)
message= _ "You can now recruit skeletons and skeleton archers!"
[/message]
[set_variable]
@@ -680,7 +681,7 @@ Well, I might as well do my experiment and worry about leaving later."
[message]
speaker=narrator
image=logo.png
- message= _ "You can recruit or recall from your starting position on the first turn only. To get more units, right-click on gravestones adjacent to your leader. Each grave can only be used once."
+ message= _ "You can recruit or recall from your starting position on the first turn only. To get more units, raise them from their graves."
[/message]
[/event]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg
index 93a1b6b3946c..eadb8ad07e6d 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg
@@ -63,7 +63,7 @@ Even with the delay at the graveyard, I reached the outskirts of Llorcyn at firs
[objectives]
side=1
[objective]
- description= _ "Defeat the enemy leader."
+ description= _ "Defeat the enemy leader"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg
index b2315bba7973..997e4507c1e0 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg
@@ -194,7 +194,7 @@ The journey started well enough, but on the dawn following our departure, the wi
[objectives]
side=1
[objective]
- description= _ "Defeat the enemy leader."
+ description= _ "Defeat the enemy leader"
condition=win
[/objective]
@@ -204,6 +204,16 @@ The journey started well enough, but on the dawn following our departure, the wi
bonus=yes
carryover_percentage=40
[/gold_carryover]
+
+ [note]
+ description= _ "You can recruit from anywhere on the two highest decks."
+ [/note]
+ [note]
+ description= _ "Barrels act as villages."
+ [/note]
+ [note]
+ description= _ "Right-click to simplify the ship graphics."
+ [/note]
[/objectives]
[set_variable]
@@ -571,15 +581,6 @@ The journey started well enough, but on the dawn following our departure, the wi
speaker=Ardonna
message= _ "Oh dear. We must do this again. Come to me my friends!"
[/message]
-
- [message]
- speaker=narrator
- image=logo.png
- message= _ "• You can recruit from anywhere on the two upper decks.
-• Barrels act as villages.
-• Right-click to simplify the ship graphics.
-• You can access the lower deck through the trapdoors."
- [/message]
[/event]
[event]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg
index 3b7c5231e083..3c70d8919dd3 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg
@@ -5,8 +5,9 @@
# enemy to recruit level-2 units occasionally for the whole scenario, but not every turn.
# For that reason, side 2 gets a "level 2 credit". Credit is used to recruit each unit,
# and then recharges a bit every turn. When it is high enough, another level-2 unit is
-# available. (Assuming side 2 has enough gold.) The ship graphic macros are still in
-# effect, and on Easy, there is a barrel on the deck of the ship to provide healing.
+# available. (Assuming side 2 has enough gold.) The ship graphic macros are still in
+# effect, and on Easy, there is an extra merman village near the deck of the ship to
+# provide healing.
[scenario]
name= _ "Blackwater"
@@ -105,7 +106,7 @@ When the captain retained his memories, I reasoned that it may have been because
[objectives]
side=1
[objective]
- description= _ "Kill all enemy units."
+ description= _ "Kill every enemy unit"
condition=win
[/objective]
@@ -115,6 +116,12 @@ When the captain retained his memories, I reasoned that it may have been because
bonus=yes
carryover_percentage=40
[/gold_carryover]
+ [note]
+ description= _ "You can recruit from anywhere on the two highest decks."
+ [/note]
+ [note]
+ description= _ "Right-click to simplify the ship graphics."
+ [/note]
[/objectives]
[item]
@@ -166,10 +173,33 @@ When the captain retained his memories, I reasoned that it may have been because
[/effect]
[/object]
- [set_variable]
- name=sails_hidden
- value=false
- [/set_variable]
+ # Remove sails and rigging if they were hidden at the end of the previous
+ # scenario.
+ [if]
+ [variable]
+ name=sails_hidden
+ boolean_equals=true
+ [/variable]
+
+ [then]
+ [terrain]
+ x,y=5,12
+ terrain=''
+ layer=overlay
+ [/terrain]
+ [terrain]
+ x,y=14,10
+ terrain=''
+ layer=overlay
+ [/terrain]
+ [terrain]
+ x,y=7,10
+ terrain=^Zrlp
+ layer=overlay
+ [/terrain]
+ [/then]
+ [/if]
+
{SHOW_SAILS_MENU_ITEM 1}
{HIDE_SAILS_MENU_ITEM 1}
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/06_Following_the_Shadow.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/06_Following_the_Shadow.cfg
index 2ea2c3d76257..d21c2ae2e103 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/06_Following_the_Shadow.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/06_Following_the_Shadow.cfg
@@ -149,7 +149,7 @@ I was so sure I had the answer! I was wrong. I wanted to believe that I was imag
[objectives]
side=1
[objective]
- description= _ "Find where the ghost went and follow it."
+ description= _ "Find out where the ghost went and follow it"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg
index 2bba17fce7a2..838968c93e8f 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg
@@ -72,13 +72,10 @@ After several days of travel, he approached the frontier town of Carcyn."
[objectives]
side=1
[objective]
- description= _ "Own every building on the map, or"
- condition=win
- [/objective]
- [objective]
- description= _ "Kill every enemy unit."
+ description= _ "Own every building on the map"
condition=win
[/objective]
+ {ALTERNATIVE_OBJECTIVE ( _ "Kill every enemy unit")}
{HOW_TO_LOSE_WITH_RAS-TABAHN}
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/09_Training_Session.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/09_Training_Session.cfg
index b218454da6d3..12c965adc074 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/09_Training_Session.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/09_Training_Session.cfg
@@ -133,11 +133,11 @@
[objectives]
side=1
[objective]
- description= _ "Destroy all the undead units. (There will be three waves.)"
+ description= _ "Destroy all the undead units" + {OBJECTIVE_FOOTNOTE _"(there will be three waves)"}
condition=win
[/objective]
[objective]
- description= _ "Death of all five dark adepts."
+ description= _ "Death of all five dark adepts"
condition=lose
[/objective]
[objective]
@@ -149,8 +149,8 @@
bonus=no
[/gold_carryover]
+ {HAS_NO_TURN_LIMIT}
[note]
- red,blue,green=0,255,255
description= _ "You will not earn gold this scenario, but your gold from the previous scenario will be available in the next."
[/note]
[/objectives]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/10_Merfolk_Revenge.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/10_Merfolk_Revenge.cfg
index bdbe892853f0..c4842b902b3f 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/10_Merfolk_Revenge.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/10_Merfolk_Revenge.cfg
@@ -64,7 +64,7 @@
[objectives]
side=1
[objective]
- description= _ "Defeat the enemy leader."
+ description= _ "Defeat the enemy leader"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg
index 5fadb8ec870f..68896048a9b9 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg
@@ -100,7 +100,7 @@ Rastaban seems like an acceptable ally. He is quite different from the stodgy te
[objectives]
side=1
[objective]
- description= _ "Defeat both enemy leaders."
+ description= _ "Defeat all enemy leaders"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/12_Walking_Trees.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/12_Walking_Trees.cfg
index be089848c37a..838792a9f0e7 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/12_Walking_Trees.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/12_Walking_Trees.cfg
@@ -91,7 +91,7 @@ My primary objective was met, and I had been able to press a number of ghosts in
[objectives]
side=1
[objective]
- description= _ "Move Ardonna to the north-east corner of the map."
+ description= _ "Move Ardonna to the northeast corner of the map"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/14_Entering_the_Northlands.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/14_Entering_the_Northlands.cfg
index 14241297f937..8dd6d3571855 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/14_Entering_the_Northlands.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/14_Entering_the_Northlands.cfg
@@ -109,7 +109,7 @@ We reached the Ford of Abez as the dawn light spread behind the mountain peaks t
[objectives]
side=1
[objective]
- description= _ "Defeat both enemy leaders."
+ description= _ "Defeat all enemy leaders"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/15_Mountain_Pass.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/15_Mountain_Pass.cfg
index 58e59de465d4..e7567eda92a0 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/15_Mountain_Pass.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/15_Mountain_Pass.cfg
@@ -68,7 +68,7 @@ We have reached a pass through the mountains that Ras-Tabahn knew of. The air is
[objectives]
side=1
[objective]
- description= _ "Move Ardryn-Na and Ras-Tabahn to level ground in the North-East corner."
+ description= _ "Move Ardryn-Na and Ras-Tabahn to level ground in the northeast corner"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/16_The_Mage.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/16_The_Mage.cfg
index 7bb05e654268..96d789b6e14b 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/16_The_Mage.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/16_The_Mage.cfg
@@ -5,6 +5,10 @@
# Crelanu. The water destroys undead, but can be removed by living units. It is there
# to prevent easy assassination of Crelanu with a few specters.
+# This is slightly hackish since the closer contains VAR_NAME...
+# wmlindent: opener "{NEAREST_HEX "
+# wmlindent: closer "location}"
+
[scenario]
name= _ "The Mage"
map_data="{campaigns/Secrets_of_the_Ancients/maps/16_The_Mage.map}"
@@ -64,7 +68,7 @@ We crossed the high plateaus, and forded the Arkan-thoria. Then we headed up int
[objectives]
side=1
[objective]
- description= _ "Defeat Crelanu."
+ description= _ "Defeat Crelanu"
condition=win
[/objective]
@@ -451,65 +455,66 @@ We crossed the high plateaus, and forded the Arkan-thoria. Then we headed up int
[not]
[filter]
[/filter]
- [/not]) location}
- [if]
- [variable]
- name=location.length
- greater_than=0
- [/variable]
- [then]
- [unit]
- type=Gryphon
- side=2
- x=$location.x
- y=$location.y
- animate=yes
- id=messenger
- [/unit]
- [/then]
- [else]
- [unit]
- type=Gryphon
- side=2
- placement=leader
- animate=yes
- id=messenger
- [/unit]
- [/else]
- [/if]
- [move_unit]
- id=messenger
- to_x=16
- to_y=24
- [/move_unit]
- [kill]
- id=messenger
- [/kill]
- [redraw][/redraw]
-
- [clear_variable]
- name=rastabahn_stored, rastabahn_harmed, location
- [/clear_variable]
- [endlevel]
- result=victory
- bonus=yes
- {NEW_GOLD_CARRYOVER 40}
- [/endlevel]
- [/event]
-
- [event]
- # Crelanu should still be there as the scenario ends. The last breath event
- # is going to remove him, but we stored him so we can put him back.
- name=victory
- [unstore_unit]
- variable=crelanu_stored
- [/unstore_unit]
- [clear_variable]
- name=crelanu_stored
- [/clear_variable]
- [/event]
-
- {HERO_DEATHS}
- {MANAGE_PROFILE}
- {KIDS_ADVANCE}
- [/scenario]
+ [/not])
+ location}
+ [if]
+ [variable]
+ name=location.length
+ greater_than=0
+ [/variable]
+ [then]
+ [unit]
+ type=Gryphon
+ side=2
+ x=$location.x
+ y=$location.y
+ animate=yes
+ id=messenger
+ [/unit]
+ [/then]
+ [else]
+ [unit]
+ type=Gryphon
+ side=2
+ placement=leader
+ animate=yes
+ id=messenger
+ [/unit]
+ [/else]
+ [/if]
+ [move_unit]
+ id=messenger
+ to_x=16
+ to_y=24
+ [/move_unit]
+ [kill]
+ id=messenger
+ [/kill]
+ [redraw][/redraw]
+
+ [clear_variable]
+ name=rastabahn_stored, rastabahn_harmed, location
+ [/clear_variable]
+ [endlevel]
+ result=victory
+ bonus=yes
+ {NEW_GOLD_CARRYOVER 40}
+ [/endlevel]
+ [/event]
+
+ [event]
+ # Crelanu should still be there as the scenario ends. The last breath event
+ # is going to remove him, but we stored him so we can put him back.
+ name=victory
+ [unstore_unit]
+ variable=crelanu_stored
+ [/unstore_unit]
+ [clear_variable]
+ name=crelanu_stored
+ [/clear_variable]
+ [/event]
+
+ {HERO_DEATHS}
+ {MANAGE_PROFILE}
+ {KIDS_ADVANCE}
+[/scenario]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/18_Abandoned_Outpost.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/18_Abandoned_Outpost.cfg
index 39138c7dd6fe..118e0a261d08 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/18_Abandoned_Outpost.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/18_Abandoned_Outpost.cfg
@@ -79,13 +79,10 @@ Now the process is complete for both of us. I posted a guard so nothing could ha
[objectives]
side=1
[objective]
- description= _ "Move Ardryn-Na and Ras-Tabahn to the west end of the cave, or"
- condition=win
- [/objective]
- [objective]
- description= _ "Kill every enemy unit."
+ description= _ "Move Ardryn-Na and Ras-Tabahn to the west end of the cave"
condition=win
[/objective]
+ {ALTERNATIVE_OBJECTIVE ( _ "Kill every enemy unit")}
{HOW_TO_LOSE_WITH_BOTH}
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/19_Lava_and_Stone.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/19_Lava_and_Stone.cfg
index ec245faef026..e159f5db6380 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/19_Lava_and_Stone.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/19_Lava_and_Stone.cfg
@@ -95,7 +95,7 @@ We continued down the tunnel in utter darkness for a time. The darkness presente
[objectives]
side=1
[objective]
- description= _ "Defeat all enemy leaders."
+ description= _ "Defeat all enemy leaders"
condition=win
[/objective]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/20_North_Knalga.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/20_North_Knalga.cfg
index 9e2b1e4dd31d..894d6e8f4b9a 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/20_North_Knalga.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/20_North_Knalga.cfg
@@ -55,6 +55,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
type=Dummy
[/unit]
{FLAG_VARIANT knalgan}
+ shroud=yes # This is necessary for some sighted events.
[/side]
{STARTING_VILLAGES 2 10}
@@ -69,7 +70,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
[objectives]
side=1
[objective]
- description= _ "Defeat the enemy leader."
+ description= _ "Defeat the enemy leader"
condition=win
[/objective]
@@ -79,6 +80,10 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
bonus=yes
carryover_percentage=40
[/gold_carryover]
+
+ [note]
+ description= _ "You can recruit from anywhere in the Hall of Heroes."
+ [/note]
[/objectives]
[hide_unit]
@@ -127,6 +132,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
x,y=25,12
side=2
id=spotter
+ max_moves=4
[/unit]
# All miners run away from side 1 because they are not soldiers.
@@ -148,7 +154,10 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
id=porter
side=2
[/unit]
+
+ # These two guys shouldn't move until the player has seen them.
{FREEZE_UNIT porter}
+ {FREEZE_UNIT Golbanduth}
# We want the dwarves to reach the caves ahead of the player's units, but
# player 1 gets a head start. To compensate for that, we will give side 2 an
@@ -246,34 +255,42 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
# The statues are not passable, but we want the player to be able to *see*
# behind them, so we'll remove the shroud in those hexes.
[remove_shroud]
+ side=1
radius=1
x,y=36,2
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=30,2
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=36,4
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=30,4
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=36,6
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=30,6
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=30,8
[/remove_shroud]
[remove_shroud]
+ side=1
radius=1
x,y=36,8
[/remove_shroud]
@@ -305,10 +322,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
image=items/anvil.png
x,y=7,35
[/item]
- # [item]
- # image=items/armor-golden.png
- # x,y=5,33
- # [/item]
+
[item]
image=items/axe.png
x,y=6,34
@@ -329,30 +343,151 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
image=items/coal.png
x,y=7,32
[/item]
- # [item]
- # image=items/hammer-runic.png
- # x,y=11,33
- # [/item]
+
+ # ----- Treasury -----
+ [item]
+ image=items/chest-open.png
+ x,y=13,34
+ [/item]
+ [item]
+ image=items/chest-open.png
+ x,y=14,34
+ [/item]
+ [item]
+ image=items/chest-open.png
+ x,y=14,35
+ [/item]
+ [item]
+ image=items/chest-open.png
+ x,y=16,35
+ [/item]
+ [item]
+ image=items/chest.png
+ x,y=17,36
+ [/item]
[/event]
# *************************** PLAY ***************************
[event]
- name=sighted
+ # This event fires when the king sees a unit approaching the castle, and he
+ # is alerted that he needs more units. We want the player to be able to see
+ # the king while he talks about this, so that's what we're actually going to
+ # check: That a player's unit can see the side-2 leader. We can't use
+ # "sighted" for this because that only works when a unit is revealed for the
+ # first time, and the king may have aleady been revealed by a shadow or other
+ # hidden unit. (But, of course, the king wouldn't have been alerted in that
+ # case.) We fire a custom event to have the king open another chest of gold.
+ name=moveto
+ first_time_only=no
+ id=king_alerted_1
+
[filter]
- id=spotter
+ side=1
[/filter]
- [message]
- speaker=spotter
- message= _ "Th’ invaders have made it inna the Crystal Caves!"
- [/message]
+ [store_reachable_locations]
+ [filter]
+ id=$unit.id
+ # These three units are hidden, so they don't count:
+ [not]
+ type=Shadow, Nightgaunt
+ [/not]
+ [and]
+ [not]
+ type=Fugitive
+ [filter_location]
+ terrain=*^V* # Hidden only in villages
+ [/filter_location]
+ [/not]
+ [/and]
+ [/filter]
+ range=vision
+ [filter_location]
+ x,y=20,26
+ [/filter_location]
+ variable=can_see_the_king
+ [/store_reachable_locations]
+
+ [if]
+ [variable]
+ name=can_see_the_king.length
+ greater_than=0
+ [/variable]
+ [then]
+ [store_unit]
+ [filter]
+ id=$unit.id
+ [/filter]
+ variable=alerting_unit
+ [/store_unit]
+ [fire_event]
+ name=get_more_gold
+ [/fire_event]
+ [/then]
+ [else]
+ # If a unit can see the king, this else won't be reached, so undo
+ # won't work for that unit. To solve that, this whole event will
+ # be removed by the get_more_gold event, and undo will only be
+ # blocked on the one move that causes get_more_gold to fire.
+ [allow_undo][/allow_undo]
+ [/else]
+ [/if]
[/event]
[event]
+ # If a previously hidden unit becomes visible near the leader of side 2, we
+ # want that to have the same effect as moving a unit close to him. This event
+ # fires the same custom event as the event above.
name=sighted
+ id=king_alerted_2
+
[filter]
- id=Golbanduth
+ type=Shadow, Nightgaunt, Fugitive
+ # If the fugitive is not keeping to villages, the event above will
+ # fire first with the same effect.
+ [filter_location]
+ x,y=20,26
+ # This is the sight distance of all the units involved:
+ radius=8
+ [/filter_location]
[/filter]
+ [store_unit]
+ [filter]
+ id=$unit.id
+ [/filter]
+ variable=alerting_unit
+ [/store_unit]
+
+ [fire_event]
+ name=get_more_gold
+ [/fire_event]
+ [/event]
+
+ [event]
+ name=get_more_gold
+ [remove_event]
+ # We have to remove the first event to preserve the undo ability. It
+ # shouldn't actually be necessary to remove the second event, but
+ # we might as well.
+ id=king_alerted_1, king_alerted_2
+ [/remove_event]
+
+ # Removing the shroud is necessary here because otherwise, it won't be
+ # cleared until after the event is over, and the king may not be visible
+ # while he talks.
+ [store_reachable_locations]
+ [filter]
+ id=$alerting_unit.id
+ [/filter]
+ range=vision
+ variable=clear_shroud
+ [/store_reachable_locations]
+ [remove_shroud]
+ side=1
+ find_in=clear_shroud
+ [/remove_shroud]
+ [redraw][/redraw]
+
[message]
speaker=Golbanduth
message= _ "The invaders approach! Fetch the last chest o’ gold. We’re equippin’ more soldiers."
@@ -362,20 +497,62 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
speaker=porter
message= _ "Yes, sire."
[/message]
+
{THAW_UNIT porter}
+ {THAW_UNIT Golbanduth}
+
[move_unit]
id=porter
- to_x=15, 18
- to_y=35, 27
+ to_x=16
+ to_y=33
[/move_unit]
+ [terrain]
+ terrain=^Prgo
+ x,y=16,34
+ layer=overlay
+ [/terrain]
+
+ # Now that the gate to the dwarves' treasury is open, the player might be
+ # able to see into it. We will remove the shroud for all visible locations
+ # in case that's true.
+ [store_reachable_locations]
+ [filter]
+ side=1
+ [/filter]
+ range=vision
+ variable=clear_shroud
+ [/store_reachable_locations]
+ [remove_shroud]
+ side=1
+ find_in=clear_shroud
+ [/remove_shroud]
+ [redraw][/redraw]
+
+ [move_unit]
+ id=porter
+ to_x=17
+ to_y=36
+ [/move_unit]
+ [remove_item]
+ x,y=17,36
+ [/remove_item]
+ [move_unit]
+ id=porter
+ to_x=18
+ to_y=27
+ [/move_unit]
+ [item]
+ image=items/chest-open.png
+ x,y=19,27
+ [/item]
[gold]
side=2
#ifdef EASY
- amount=400
+ amount=300
#endif
#ifdef NORMAL
- amount=500
+ amount=450
#endif
#ifdef HARD
amount=600
@@ -396,11 +573,11 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
#define BREAK_STATUE
[animate_unit]
[filter]
- id=demolition
+ id=Ras-Tabahn
[/filter]
flag=attack
[primary_attack]
- range=melee
+ range=ranged
[/primary_attack]
hits=yes
[facing]
@@ -449,13 +626,21 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
to_x=33
to_y=9
[/move_unit]
- [unit]
- side=1
- type=Skeleton
- x,y=32,9
- id=demolition
- [/unit]
+
+ [recall]
+ id=Ras-Tabahn
+ x,y=32,8 # We want him on a specific hex...
+ show=no
+ [/recall]
+ [modify_unit]
+ [filter]
+ id=Ras-Tabahn
+ [/filter]
+ # ...facing a specific way.
+ facing=nw
+ [/modify_unit]
{RECALL_LOYAL_UNITS}
+
[terrain]
x,y=31,9
terrain=^Kov
@@ -467,7 +652,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
[/message]
[message]
speaker=Ras-Tabahn
- message= _ "We are in a Dwarvish burial chamber. That is good. We could always use some more soldiers."
+ message= _ "We are in a Dwarvish burial chamber it seems. That is good. We could always use some more soldiers."
[/message]
[move_unit_fake]
type=Dwarvish Sentinel
@@ -521,6 +706,7 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
[delay]
time=500
[/delay]
+
[message]
speaker=Ardonna
message= _ "Well, we are not going that way."
@@ -559,21 +745,16 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
image=items/debris3.png
x,y=31,9
[/item]
- [message]
- speaker=Ras-Tabahn
- message= _ "...and push the coffin out of the way."
- [/message]
[move_unit]
- id=demolition
+ id=Ras-Tabahn
to_x=30
to_y=8
[/move_unit]
- [modify_unit]
- [filter]
- id=demolition
- [/filter]
- facing=n
- [/modify_unit]
+ [message]
+ speaker=Ras-Tabahn
+ message= _ "...and push the coffin out of the way."
+ [/message]
+
[remove_item]
x,y=30,8
[/remove_item]
@@ -581,23 +762,27 @@ We left the fires of the mountain behind and plunged once more into darkness. Af
image=items/coffin-dwarf-back.png
x,y=30,8
[/item]
- [message]
- speaker=Ras-Tabahn
- message= _ "Good. Now, away with you."
- [/message]
[terrain]
x,y=29,9
terrain=''
layer=overlay
[/terrain]
- [kill]
- id=demolition
- [/kill]
- [message]
- speaker=narrator
- image=logo.png
- message= _ "You can recruit from anywhere in the Hall of Heroes."
- [/message]
+
+ # We want a "sighted" event for the first dwarf other than the guard who sees
+ # a unit from side 1. Now that the guard can't see them anymore, we can add
+ # this event. The next dwarf who sees a unit from side 1 will almost
+ # certainly be the closest miner, so he has the dialog.
+ [event]
+ name=sighted
+ [filter]
+ side=1
+ [/filter]
+ # The other side will always be 2, so we don't need to filter for it.
+ [message]
+ speaker=spotter
+ message= _ "Ach! Th’ invaders have made it inna the Crystal Caves!"
+ [/message]
+ [/event]
[/event]
[event]
diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/21_Against_the_World.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/21_Against_the_World.cfg
index 6d653c62fa50..949548a40ae3 100644
--- a/data/campaigns/Secrets_of_the_Ancients/scenarios/21_Against_the_World.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/21_Against_the_World.cfg
@@ -468,7 +468,7 @@ We finally made it out of the mountains. We crossed the Ford of Abez late this m
[objectives]
side=1
[objective]
- description= _ "Defeat all enemy leaders."
+ description= _ "Defeat all enemy leaders"
condition=win
[/objective]
[objective]
@@ -479,6 +479,8 @@ We finally made it out of the mountains. We crossed the Ford of Abez late this m
description= _ "Death of Ras-Tabahn"
condition=lose
[/objective]
+
+ {HAS_NO_TURN_LIMIT}
{IS_LAST_SCENARIO}
[/objectives]
diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg
index 8fd8e4a939db..10b9cdf97812 100644
--- a/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg
+++ b/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg
@@ -527,8 +527,17 @@
#define JOURNEY_PART STAGE
[part]
+ [background_layer]
+ image=maps/background.jpg
+ scale_vertically=yes
+ scale_horizontally=no
+ keep_aspect_ratio=yes
+ [/background_layer]
[background_layer]
image=maps/titlescreen.png
+ scale_vertically=yes
+ scale_horizontally=no
+ keep_aspect_ratio=yes
base_layer=yes
[/background_layer]
show_title=yes
@@ -959,7 +968,7 @@
[show_if]
[variable]
name=sails_hidden
- equals=false
+ boolean_equals=false
[/variable]
[/show_if]
@@ -998,7 +1007,7 @@
[show_if]
[variable]
name=sails_hidden
- equals=true
+ boolean_equals=true
[/variable]
[/show_if]