From cfc20253329e24437b0e540e14ec9ad587737ab7 Mon Sep 17 00:00:00 2001 From: beetlenaut Date: Fri, 9 Dec 2016 17:46:10 -0600 Subject: [PATCH] SotA: Cleanup and bugfixes for mainlining - Fix missing custom menu items The right-click menu items, "Hide/Show Sails and Rigging," were missing from the two scenarios that have a ship. - Fix sails and rigging don't stay hidden If you hide the sails and rigging in the first scenario with a ship, they should still be hidden in the next scenario. - Add wooden table background to bigmap - Fix comment that referred to something that existed in an older version. - Fix an incorrectly scaled image There is a message that says "You can now recruit skeletons and skeleton archers!", and the image shown with it only showed half of the skeleton because of scaling issues. - Reformatting and improvements to objectives - Made the objectives for all scenarios match the mainline style better. - Move some adverbs in objective notes - Change narration of recruit ability into objectives note - Rewrite "sighted" events to work better There were two "sighted" events that were written from side 1's point of view even though they were meant to apply to side 2. That was much simpler, but it meant that hidden units like shadows could trigger the events, which they shouldn't have been able to do. The events have been rewritten in a way that takes hidden units into account. There was also a dwarf who used to vanish into the shroud and return with gold. He didn't actually pick anything up though, because the player couldn't see what he was doing anyway. With these changes, a shadow could be in a position to watch him, so he does actually unlock a gate and pick up a chest now. - Remove skeleton from the opening Skeletons are useless in this scenario, and one of the leaders can do what the skeleton used to. --- .../maps/20_North_Knalga.map | 5 +- .../scenarios/01_Slipping_Away.cfg | 5 +- .../scenarios/02_Dark_Business.cfg | 15 +- .../scenarios/03_Bandits.cfg | 2 +- .../scenarios/04_Becalmed.cfg | 21 +- .../scenarios/05_Blackwater.cfg | 44 ++- .../scenarios/06_Following_the_Shadow.cfg | 2 +- .../scenarios/08_Carcyn.cfg | 7 +- .../scenarios/09_Training_Session.cfg | 6 +- .../scenarios/10_Merfolk_Revenge.cfg | 2 +- .../scenarios/11_Battleground.cfg | 2 +- .../scenarios/12_Walking_Trees.cfg | 2 +- .../scenarios/14_Entering_the_Northlands.cfg | 2 +- .../scenarios/15_Mountain_Pass.cfg | 2 +- .../scenarios/16_The_Mage.cfg | 131 ++++---- .../scenarios/18_Abandoned_Outpost.cfg | 7 +- .../scenarios/19_Lava_and_Stone.cfg | 2 +- .../scenarios/20_North_Knalga.cfg | 289 ++++++++++++++---- .../scenarios/21_Against_the_World.cfg | 4 +- .../utils/sota-utils.cfg | 13 +- 20 files changed, 393 insertions(+), 170 deletions(-) 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]