diff --git a/.gitignore b/.gitignore index d6fb9bd551af..d65352b72dac 100644 --- a/.gitignore +++ b/.gitignore @@ -175,6 +175,7 @@ data/campaigns/**/images/**/.gitignore .DS_Store [Tt]humbs.db *Neuer Ordner* +.directory # extensions *.pyc diff --git a/data/campaigns/Secrets_of_the_Ancients/_main.cfg b/data/campaigns/Secrets_of_the_Ancients/_main.cfg new file mode 100644 index 000000000000..2aea2a3393c1 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/_main.cfg @@ -0,0 +1,76 @@ +#textdomain wesnoth-sota +[textdomain] + name="wesnoth-sota" +[/textdomain] + +# wmlscope: set export=no +[campaign] + id="Secrets of the Ancients" + icon="units/undead-necromancers/necromancer+female-magic-2.png~RC(magenta>red)" + name= _ "Secrets of the Ancients" + abbrev= _ "SotA" + rank=180 + first_scenario=01_Slipping_Away + extra_defines=ENABLE_ANCIENT_LICH,ENABLE_DEATH_KNIGHT + {CAMPAIGN_DIFFICULTY EASY "units/undead-skeletal/skeleton/skeleton-idle-2.png~RC(magenta>red)"( _ "Unpleasant") ( _ "Normal")} + {CAMPAIGN_DIFFICULTY NORMAL "units/undead-skeletal/revenant/revenant-defend-2.png~RC(magenta>red)" ( _ "Corrupt") ( _ "Challenging")} {DEFAULT_DIFFICULTY} + {CAMPAIGN_DIFFICULTY HARD "units/undead-skeletal/deathknight-lead-2.png~RC(magenta>red)" ( _ "Diabolic") ( _ "Difficult")} + define=CAMPAIGN_SECRETS_OF_THE_ANCIENTS + description= _ "Rediscover the secrets known by the lich lords of the Green Isle. They knew how to live forever, so why can't you? + +(Intermediate level, 21 scenarios.) +" + image="data/campaigns/Secrets_of_the_Ancients/images/portraits/campaign-image.png" + + [about] + title= _ "Campaign Design, Programming, and Artwork" + [entry] + name="Dan Gerhards (beetlenaut)" + [/entry] + [/about] + [about] + title= _ "Additional Artwork" + [entry] + name="Wussel" + comment= "Some improvements to the ship." + [/entry] + [/about] + [about] + title= _ "Translations" + [entry] + name= _ "Hungarian - WhiteWolf" + [/entry] + [entry] + name= _ "Japanese - RatArmy" + [/entry] + [entry] + name= _ "Russian - iven, olga_flox, and marat" + [/entry] + [/about] +[/campaign] + +#ifdef CAMPAIGN_SECRETS_OF_THE_ANCIENTS +[binary_path] + path=data/campaigns/Secrets_of_the_Ancients +[/binary_path] + +{campaigns/Secrets_of_the_Ancients/utils} +{campaigns/Secrets_of_the_Ancients/scenarios} +[units] + {campaigns/Secrets_of_the_Ancients/units} +[/units] +#endif + +#ifdef EDITOR +[binary_path] + path=data/campaigns/Secrets_of_the_Ancients +[/binary_path] + +[editor_group] + id=sota + name= _ "Secrets of the Ancients" + icon="group_custom" +[/editor_group] +{campaigns/Secrets_of_the_Ancients/utils/terrain.cfg} +{campaigns/Secrets_of_the_Ancients/utils/terrain_graphics.cfg} +#endif diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-halo.png b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-halo.png new file mode 100644 index 000000000000..5fa72d2059fb Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-halo.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-shadow.png b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-shadow.png new file mode 100644 index 000000000000..a7e77bbead39 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice-shadow.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice.png b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice.png new file mode 100644 index 000000000000..5bca6424b0ff Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/altar-sacrifice.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/bird-bones.png b/data/campaigns/Secrets_of_the_Ancients/images/items/bird-bones.png new file mode 100644 index 000000000000..bbb06fc1e47c Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/bird-bones.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/boat.png b/data/campaigns/Secrets_of_the_Ancients/images/items/boat.png new file mode 100644 index 000000000000..22713ccc8e04 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/boat.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/coal.png b/data/campaigns/Secrets_of_the_Ancients/images/items/coal.png new file mode 100644 index 000000000000..1885d1ca7e26 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/coal.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf-back.png b/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf-back.png new file mode 100644 index 000000000000..b66c45875d56 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf-back.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf.png b/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf.png new file mode 100644 index 000000000000..ebc2e9d7cd80 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/coffin-dwarf.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/debris1.png b/data/campaigns/Secrets_of_the_Ancients/images/items/debris1.png new file mode 100644 index 000000000000..93b0b8cb5840 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/debris1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/debris2.png b/data/campaigns/Secrets_of_the_Ancients/images/items/debris2.png new file mode 100644 index 000000000000..bbe3dbd69cff Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/debris2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/debris3.png b/data/campaigns/Secrets_of_the_Ancients/images/items/debris3.png new file mode 100644 index 000000000000..4e4c0d828507 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/debris3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/dirt.png b/data/campaigns/Secrets_of_the_Ancients/images/items/dirt.png new file mode 100644 index 000000000000..97f32bcfd1fa Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/dirt.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/dirt1.png b/data/campaigns/Secrets_of_the_Ancients/images/items/dirt1.png new file mode 100644 index 000000000000..f00dbeca4124 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/dirt1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-bottom.png new file mode 100644 index 000000000000..3194e4c5fc1f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-top.png b/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-top.png new file mode 100644 index 000000000000..97f160861c86 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/door-open-top.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins-message.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins-message.png new file mode 100644 index 000000000000..7eb66950bd0d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins-message.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins.png new file mode 100644 index 000000000000..ca92a7c64860 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gold-coins.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gold.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gold.png new file mode 100644 index 000000000000..4794ad577da3 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gold.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone1.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone1.png new file mode 100644 index 000000000000..114f73fa29ca Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone2.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone2.png new file mode 100644 index 000000000000..424e140b428f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone3.png b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone3.png new file mode 100644 index 000000000000..57e96f092213 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/gravestone3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-closed.png b/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-closed.png new file mode 100644 index 000000000000..a8aaa8c836c7 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-closed.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-open.png b/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-open.png new file mode 100644 index 000000000000..44d5a8499973 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/items/trap-doors-open.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/logo.png b/data/campaigns/Secrets_of_the_Ancients/images/logo.png new file mode 100644 index 000000000000..4875cd40de81 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/logo.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/map-border.png b/data/campaigns/Secrets_of_the_Ancients/images/map-border.png new file mode 100644 index 000000000000..07fb5db65606 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/map-border.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna-lich.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna-lich.png new file mode 100644 index 000000000000..9578b24a7c92 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna-lich.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna.png new file mode 100644 index 000000000000..dde490ca602b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/ardonna.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain1.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain1.png new file mode 100644 index 000000000000..0072121650a0 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain2.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain2.png new file mode 100644 index 000000000000..141d7e4050a9 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/bone-captain2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/campaign-image.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/campaign-image.png new file mode 100644 index 000000000000..324b1346dbc2 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/campaign-image.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/captain.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/captain.png new file mode 100644 index 000000000000..ed0f951af4b8 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/captain.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/crelanu.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/crelanu.png new file mode 100644 index 000000000000..84cf46a9cbdb Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/crelanu.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/orcish-shaman.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/orcish-shaman.png new file mode 100644 index 000000000000..bf3ccb63a1dd Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/orcish-shaman.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-adept.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-adept.png new file mode 100644 index 000000000000..c4e411a48c37 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-adept.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-outlaw.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-outlaw.png new file mode 100644 index 000000000000..195297528cd4 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/shynal-outlaw.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/portraits/zombie-farmer.png b/data/campaigns/Secrets_of_the_Ancients/images/portraits/zombie-farmer.png new file mode 100644 index 000000000000..04ddea538781 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/portraits/zombie-farmer.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/alduin-dock.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/alduin-dock.jpg new file mode 100644 index 000000000000..55af9c88228e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/alduin-dock.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/battle.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/battle.jpg new file mode 100644 index 000000000000..0360a001d0d8 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/battle.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/becalmed.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/becalmed.jpg new file mode 100644 index 000000000000..67aad1cba680 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/becalmed.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/black-background.png b/data/campaigns/Secrets_of_the_Ancients/images/story/black-background.png new file mode 100644 index 000000000000..727973ed74e9 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/black-background.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/blackwater.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/blackwater.jpg new file mode 100644 index 000000000000..37c2f554a82d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/blackwater.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/book.png b/data/campaigns/Secrets_of_the_Ancients/images/story/book.png new file mode 100644 index 000000000000..8d0744711d84 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/book.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/cave-glow.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/cave-glow.jpg new file mode 100644 index 000000000000..667cc2f00d3f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/cave-glow.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/cemetery.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/cemetery.jpg new file mode 100644 index 000000000000..e40e0eb905e1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/cemetery.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/elf-road.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/elf-road.jpg new file mode 100644 index 000000000000..8c580048d77f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/elf-road.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-1.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-1.jpg new file mode 100644 index 000000000000..7c4902fd3922 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-1.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-2.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-2.jpg new file mode 100644 index 000000000000..91b9bb63a74f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/ford-of-abez-2.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/mountain-pass.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/mountain-pass.jpg new file mode 100644 index 000000000000..559116752bde Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/mountain-pass.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/room1.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/room1.jpg new file mode 100644 index 000000000000..69bff138cbe7 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/room1.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/room2.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/room2.jpg new file mode 100644 index 000000000000..48153bb1486f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/room2.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/room3.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/room3.jpg new file mode 100644 index 000000000000..fdb7d0e80092 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/room3.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/room4.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/room4.jpg new file mode 100644 index 000000000000..b7746e649c70 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/room4.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/story/trackless-wilds.jpg b/data/campaigns/Secrets_of_the_Ancients/images/story/trackless-wilds.jpg new file mode 100644 index 000000000000..1d3e6c7e2755 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/story/trackless-wilds.jpg differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a1.png new file mode 100644 index 000000000000..83fe374c03ba Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a2.png new file mode 100644 index 000000000000..24a9f7efd3c1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a3.png new file mode 100644 index 000000000000..66c41be57e63 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a4.png new file mode 100644 index 000000000000..31cad14a2eef Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-a4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b1.png new file mode 100644 index 000000000000..87e9ab2fa71a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b2.png new file mode 100644 index 000000000000..ede37feb016b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b3.png new file mode 100644 index 000000000000..fa02535f24fa Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b4.png new file mode 100644 index 000000000000..c0806ea3d0f6 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-b4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-blank.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-blank.png new file mode 100644 index 000000000000..fd52ea105d34 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-blank.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c1.png new file mode 100644 index 000000000000..3c8310772dfd Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c2.png new file mode 100644 index 000000000000..7051fd2fe632 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c3.png new file mode 100644 index 000000000000..168fba9a0f2f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c4.png new file mode 100644 index 000000000000..3a186935c24d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-c4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d1.png new file mode 100644 index 000000000000..dc508e1f5410 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d2.png new file mode 100644 index 000000000000..fa1410f06f5a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d3.png new file mode 100644 index 000000000000..9afb78399dcb Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d4.png new file mode 100644 index 000000000000..cfdb9fffcbb8 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-d4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e1.png new file mode 100644 index 000000000000..df78d251b1a1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e2.png new file mode 100644 index 000000000000..cfd4a5bb4572 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e3.png new file mode 100644 index 000000000000..507aadd453f7 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e4.png new file mode 100644 index 000000000000..1fda3e29af5b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-e4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f1.png new file mode 100644 index 000000000000..e0e9bbdf0de5 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f2.png new file mode 100644 index 000000000000..fdafd00eed91 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f3.png new file mode 100644 index 000000000000..857d589458b1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f4.png new file mode 100644 index 000000000000..0844a5e1fed5 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-f4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g1.png new file mode 100644 index 000000000000..a4256f57a01a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g2.png new file mode 100644 index 000000000000..7a699070c0e3 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g3.png new file mode 100644 index 000000000000..941346f54604 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g4.png new file mode 100644 index 000000000000..032ddb4ba234 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-g4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-tile.png new file mode 100644 index 000000000000..c53b139d0e65 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/crystal-caves/glint-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-bottom.png new file mode 100644 index 000000000000..d9f511fd5c07 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-tile.png new file mode 100644 index 000000000000..89885ae22a82 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-top.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-top.png new file mode 100644 index 000000000000..d9e5c568f9c4 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/fence-top.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-closed.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-closed.png new file mode 100644 index 000000000000..b18d3f80866a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-closed.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-open.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-open.png new file mode 100644 index 000000000000..391e7bbe430f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-open.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-tile.png new file mode 100644 index 000000000000..d90ef47fc5a0 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/gate-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-overlay-editor.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-overlay-editor.png new file mode 100644 index 000000000000..fe3d834b616f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-overlay-editor.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-tile.png new file mode 100644 index 000000000000..18929d8713c6 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/grave-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile-editor.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile-editor.png new file mode 100644 index 000000000000..8ea46a8e26e9 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile-editor.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile.png new file mode 100644 index 000000000000..fd52ea105d34 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/not-here-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-north.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-north.png new file mode 100644 index 000000000000..161f50ae8a86 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-north.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-south.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-south.png new file mode 100644 index 000000000000..9468a6a9a3c5 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/passageway-south.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/README b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/README new file mode 100644 index 000000000000..d0e577a39f81 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/README @@ -0,0 +1,2 @@ +The Ship: +If you want to use the ship in your own content, take a look at the terrain codes in Becalmed.map to see how to put one together. Other than the deck, there are only a few tiles--really big tiles. Flying units will have to be customized to be drawn in a lower z-layer so they fly behind the rigging or it will look awkward. (This is why there are SotA bats in the units folder.) There is a right-click option to hide the sails and rigging of the ship. The code for that is in 04_Becalmed.cfg and utils.cfg. \ No newline at end of file diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/bits-and-pieces.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/bits-and-pieces.png new file mode 100644 index 000000000000..db05224928c6 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/bits-and-pieces.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/forecastle-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/forecastle-deck.png new file mode 100644 index 000000000000..03dec6a58df5 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/forecastle-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/hull.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/hull.png new file mode 100644 index 000000000000..631d6231235a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/hull.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck-edge.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck-edge.png new file mode 100644 index 000000000000..bce2d39a33ab Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck-edge.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck.png new file mode 100644 index 000000000000..59f0bfe4fafe Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/lower-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/main-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/main-deck.png new file mode 100644 index 000000000000..11f6174d5450 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/main-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/pieces.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/pieces.png new file mode 100644 index 000000000000..72f172d3d06f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/pieces.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/poop-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/poop-deck.png new file mode 100644 index 000000000000..389902c5ee21 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/poop-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/railing.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/railing.png new file mode 100644 index 000000000000..6551549def24 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/railing.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/rigging-and-sails.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/rigging-and-sails.png new file mode 100644 index 000000000000..360c3882c9ed Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/editor_tiles/rigging-and-sails.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/forecastle.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/forecastle.png new file mode 100644 index 000000000000..c009748203ed Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/forecastle.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/hull.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/hull.png new file mode 100644 index 000000000000..f569f053e6b9 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/hull.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck-edge.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck-edge.png new file mode 100644 index 000000000000..f413289b96fd Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck-edge.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck.png new file mode 100644 index 000000000000..6230b3853b0b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/lower-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/main-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/main-deck.png new file mode 100644 index 000000000000..6d4abcd7646b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/main-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/poop-deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/poop-deck.png new file mode 100644 index 000000000000..7e08daf418dc Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/poop-deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing-piece.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing-piece.png new file mode 100644 index 000000000000..399677d4eba3 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing-piece.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing.png new file mode 100644 index 000000000000..355c83eeb72c Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/railing.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/rigging-and-sails.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/rigging-and-sails.png new file mode 100644 index 000000000000..2b64b602ea54 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/rigging-and-sails.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--deck.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--deck.png new file mode 100644 index 000000000000..b25a365f9098 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--deck.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--transparent.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--transparent.png new file mode 100644 index 000000000000..fd52ea105d34 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/ship/tile--transparent.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web-tile.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web-tile.png new file mode 100644 index 000000000000..efa8e4cbc39f Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web-tile.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1-bottom.png new file mode 100644 index 000000000000..7b7ea29990d0 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1.png new file mode 100644 index 000000000000..bd641e690647 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2-bottom.png new file mode 100644 index 000000000000..d97cd9060c1b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2.png new file mode 100644 index 000000000000..4e3d0889060a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web3.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web3.png new file mode 100644 index 000000000000..205c9bf3437d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web4.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web4.png new file mode 100644 index 000000000000..6116293e032e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web5.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web5.png new file mode 100644 index 000000000000..ee61e0de40be Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web5.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6-bottom.png new file mode 100644 index 000000000000..cd0fd0540c47 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6.png new file mode 100644 index 000000000000..d8cc7ee96258 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web6.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7-bottom.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7-bottom.png new file mode 100644 index 000000000000..5ea2337cb25b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7-bottom.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7.png new file mode 100644 index 000000000000..56636dd9ba10 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web7.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web8.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web8.png new file mode 100644 index 000000000000..1403f2c38c25 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/spiderweb/web8.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-full.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-full.png new file mode 100644 index 000000000000..90760214aa4b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-full.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-half.png b/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-half.png new file mode 100644 index 000000000000..753e9dad58e3 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/terrain/void-half.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-defend.png b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-defend.png new file mode 100644 index 000000000000..6370b97eb269 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-defend.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-magic.png b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-magic.png new file mode 100644 index 000000000000..008407d1415d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-magic.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-melee.png b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-melee.png new file mode 100644 index 000000000000..d536a7f757a2 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich-melee.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich.png b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich.png new file mode 100644 index 000000000000..1699121ee242 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/ancient-lich/ancient-lich.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/bone-bird.png b/data/campaigns/Secrets_of_the_Ancients/images/units/bone-bird.png new file mode 100644 index 000000000000..6fcb695efec1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/bone-bird.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/bone-captain.png b/data/campaigns/Secrets_of_the_Ancients/images/units/bone-captain.png new file mode 100644 index 000000000000..7a06a7fc5fc6 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/bone-captain.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-1.png new file mode 100644 index 000000000000..2866a7cb8070 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-2.png new file mode 100644 index 000000000000..4f4067434991 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-3.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-3.png new file mode 100644 index 000000000000..d794a7a08e37 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-4.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-4.png new file mode 100644 index 000000000000..c67130235b89 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-5.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-5.png new file mode 100644 index 000000000000..4b1cec33cc1b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-5.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-6.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-6.png new file mode 100644 index 000000000000..d82af76b5e91 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-6.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-7.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-7.png new file mode 100644 index 000000000000..59408ea775c7 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-7.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-8.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-8.png new file mode 100644 index 000000000000..42d5036f4d55 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-8.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-9.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-9.png new file mode 100644 index 000000000000..d99be01edf04 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-attack-9.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-1.png new file mode 100644 index 000000000000..b8509ff21269 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-2.png new file mode 100644 index 000000000000..7b3cf00a13d0 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-defend-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-1.png new file mode 100644 index 000000000000..f45a4bc3d915 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-2.png new file mode 100644 index 000000000000..af4c02e95370 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent-ranged-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent.png new file mode 100644 index 000000000000..866def610591 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/delinquent.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-n.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-n.png new file mode 100644 index 000000000000..17417d5f2f17 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-n.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-s.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-s.png new file mode 100644 index 000000000000..c66a67c00c2e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack-s.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack.png new file mode 100644 index 000000000000..0636d3b09313 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-attack.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-defend.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-defend.png new file mode 100644 index 000000000000..1fe98fc8e3aa Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-defend.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-1.png new file mode 100644 index 000000000000..cb52f0edc41c Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-2.png new file mode 100644 index 000000000000..41a27c1c193a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-3.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-3.png new file mode 100644 index 000000000000..2ee7fa14e6cd Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-4.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-4.png new file mode 100644 index 000000000000..afcd64f8051e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal-die-4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal.png b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal.png new file mode 100644 index 000000000000..181e059e1608 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/delinquent/zombie-shynal.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-1.png new file mode 100644 index 000000000000..1ec4b2892ff1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-2.png new file mode 100644 index 000000000000..2c68fc56367b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-3.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-3.png new file mode 100644 index 000000000000..3a048f4dfbc1 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-3.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-4.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-4.png new file mode 100644 index 000000000000..c90379658d58 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-4.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-5.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-5.png new file mode 100644 index 000000000000..45085b1c0a0a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-5.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-6.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-6.png new file mode 100644 index 000000000000..66bc5a4d9446 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-attack-6.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-1.png new file mode 100644 index 000000000000..061b24d8df67 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-2.png new file mode 100644 index 000000000000..d99461d67e3e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner-defend-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner.png b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner.png new file mode 100644 index 000000000000..a789c20e0d14 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/dwarves/miner.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-lich.png b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-lich.png new file mode 100644 index 000000000000..d66241cda83d Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-lich.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton.png b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton.png new file mode 100644 index 000000000000..1f0cb0fbef05 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton_archer.png b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton_archer.png new file mode 100644 index 000000000000..939661cf32d0 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-skeleton_archer.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-walking_corpse.png b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-walking_corpse.png new file mode 100644 index 000000000000..396061aa267a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/icons/icon-walking_corpse.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/khalif.png b/data/campaigns/Secrets_of_the_Ancients/images/units/khalif.png new file mode 100644 index 000000000000..07ea33e2c3ca Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/khalif.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/leech-giant.png b/data/campaigns/Secrets_of_the_Ancients/images/units/leech-giant.png new file mode 100644 index 000000000000..e3fdea1fa164 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/leech-giant.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/noble.png b/data/campaigns/Secrets_of_the_Ancients/images/units/noble.png new file mode 100644 index 000000000000..2e8626e88b5b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/noble.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-1.png b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-1.png new file mode 100644 index 000000000000..00fa4cf4a8ef Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-1.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-2.png b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-2.png new file mode 100644 index 000000000000..5b6567eea9af Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-defend-2.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-magic.png b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-magic.png new file mode 100644 index 000000000000..53c87834987a Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman-magic.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman.png b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman.png new file mode 100644 index 000000000000..f6f45ef418b3 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/orcish-shaman.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/rastabahn-on-altar.png b/data/campaigns/Secrets_of_the_Ancients/images/units/rastabahn-on-altar.png new file mode 100644 index 000000000000..3503681eb350 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/rastabahn-on-altar.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/sailor.png b/data/campaigns/Secrets_of_the_Ancients/images/units/sailor.png new file mode 100644 index 000000000000..c3a3a1bf577c Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/sailor.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/sea-captain.png b/data/campaigns/Secrets_of_the_Ancients/images/units/sea-captain.png new file mode 100644 index 000000000000..ffd0caeb525b Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/sea-captain.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice5.png b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice5.png new file mode 100644 index 000000000000..b0b95f005733 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice5.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice6.png b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice6.png new file mode 100644 index 000000000000..313f83117ed8 Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice6.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice7.png b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice7.png new file mode 100644 index 000000000000..fa1db47fa20e Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/skeleton-se-sacrifice7.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/images/units/zombie-wolf.png b/data/campaigns/Secrets_of_the_Ancients/images/units/zombie-wolf.png new file mode 100644 index 000000000000..289d7000dbaa Binary files /dev/null and b/data/campaigns/Secrets_of_the_Ancients/images/units/zombie-wolf.png differ diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/01_Slipping_Away.map b/data/campaigns/Secrets_of_the_Ancients/maps/01_Slipping_Away.map new file mode 100644 index 000000000000..9cd003245923 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/01_Slipping_Away.map @@ -0,0 +1,27 @@ +Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Ds, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh, Hh, Hh, Hh, Hh, Hh^Fms, Hh^Fms, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm +Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs^Vht, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gll^Fp, Gll^Fp, Gs, Gs, Gs, Gs, Gs, Hh^Fms, Gs, Hh, Hh, Hh, Hh, Hh^Fp, Mm, Mm, Rrc^Vh, Hh^Fp, Hh^Fp, Mm, Mm, Mm +Wo, Wo, Wo, Ww, Wo, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Ds, Gg, Gs, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gs^Fds, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh, Hh, Hh^Fp, Mm, Mm, Hh^Vhh, Rrc, Rrc^Vh, Mm, Mm, Mm +Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ww, Gg, Gg, Gs, Gs, Gs, Gs^Fds, Gll, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh, Mm, Mm, Hh^Fms, Mm, Hh, Hh^Vhh, Mm, Mm, Hh^Fp, Mm +Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gg, Gs, Gs^Fms, Gs^Fms, Gs, Gs, Gs, Gs^Fms, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh, Hh, Hh, Mm, Hh, Hh^Fp, Hh, Hh, Mm, Mm, Mm, Mm +Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds^Esd, Ds, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs^Eff, Gs^Eff, Gs^Eff, Gs, Hh, Hh, Hh, Hh, Hh, Hh, Gs, Hh, Mm, Mm, Mm, Mm +Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs, Gs, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs^Eff, Gs^Eff, Rb^Gvs, Gs^Vl, Gs^Eff, Hh^Eff, Hh, Hh, Hh, Hh, Gs, Gs, Gs, Hh, Hh, Mm, Hh^Fp, Hh^Fms +Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs, Gs, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Eff, Gs^Eff, Gs^Eff, Gs, Gs^Es, Hh, Hh, Hh, Hh, Gs, Gs, Gs, Gs, Hh, Hh, Hh, Hh^Fms +Ww, Wo, Ww, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Gs^Fds, Gs, Gs, Hh, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh, Hh, Hh, Hh^Fms +Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds^Esd, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fms, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Gs^Fds, Gs, Gs^Fds, Gs, Gs^Fds, Gs, Gs, Gs, Gs^Es, Hh, Gs^Es, Gs +Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs, Gs, Gs, Gs, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gll, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs^Es, Gs^Es, Gs, Gs +Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gs, Gs, Gs^Fms, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Gs^Es, Gs, Gs +Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Ds^Esd, Ds, Ds^Esd, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Fet, Gg^Fet, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gll, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Hh^Fp, Gs +Ds, Ds, Ds, Ww^Bw/, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Ds, Gll^Fp, Ds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gs^Fms, Gg, Gs^Fds, Re, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Hh^Fp, Gs^Fds, Gs^Fds +Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ds, Gs, Gs, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gll, Gll^Fp, Re, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fp, Hh^Fp, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds +Gs, Gs, Gs, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Re, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gll, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rp, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Hh^Fp, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds +Gs, Gs, Ds, Ww, Ds, Ww, Ww, Ds, Ds, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rp, Gs^Fds, Khs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Fet, Hh^Fp, Gs^Fds, Gs^Fds +Gs, Gs, Ds, Ds, Ds, Ds, Ds, Ds, Gs^Fms, Gll^Fp, Rb^Gvs, Gs^Vl, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Rp, Gs^Fds, Chs, Chs, Gd^Fmw, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Fet, Gg^Fet, Gs^Fds, Gs^Fds +Gd, Gd, Gd, Ds^Esd, Ds, Ds, Gs, Gs, Gs^Fds, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gll, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gg, Gs^Fds, Gs^Fds, Gg^Fet, Rp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ss, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds +Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gs, Gs^Fds, Gs^Fds, Re, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Vl, Gs^Fds, Gs^Fds, Gs^Fds +Gs, Gd, Gd, Gd, Gd, Gd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gs^Fds, Gs^Fds, Gs^Vl, Re, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fms, Hh^Fms, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gs^Fds, Gs^Fds +Ch, Ch, Ch, Gd, Gd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll, Gs, Gll, Gs^Fds, Gs^Fds, Gll, Rb^Gvs, Gs^Fds, Gg^Fet, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Eff, Gs^Eff, Gs^Eff, Hh^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ss^Vhs, Gll^Fp, Ww^Ewl, Gs^Fds, Gs^Fds, Gs^Fds, Rb^Gvs, Gs^Fds, Rb^Gvs, Gs^Fds, Gs^Fds +Xv, Xv, Xv, Ch, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs, Gll, Gs^Fms, Gs^Fds, Gs^Fds, Gll^Fp, Rb^Eff, Rb^Eff, Rb^Gvs, Gs^Vl, Rb^Gvs, Rb^Eff, Rb^Eff, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ss, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds +Xv, Xv, Xv, Ch, Gs, Gs, Gs, Gs, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gll, Gll, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rb^Eff, Rb^Eff, Rb^Gvs, Rb^Eff, Rb^Eff, Gs, Gs, Re, Gs, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds +Xv, Xv, Xv, Ch, Gs, 1 Gs, Gs, Gs^Fds, Gll, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Rb^Eff, Gs, Gs, Ds, Ds, Ds, Re, Ww^Ewl, Re, Re, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gll, Gs^Fds, Gg^Fet, Gs^Fds, Gg^Fet, Gs^Fds, Gs^Fds +Xv, Xv, Xv, Ch, Gs, Gs, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Gs^Fds, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Ww, Wwt, Ww, Ww, Ww, Ww^Ewl, Gg^Gvs, Gs^Gvs, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds +Xv, Xv, Ch, Ch, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Gs^Vh, Gs^Gvs, Gs^Gvs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/02_Dark_Business.map b/data/campaigns/Secrets_of_the_Ancients/maps/02_Dark_Business.map new file mode 100644 index 000000000000..07172c567909 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/02_Dark_Business.map @@ -0,0 +1,21 @@ +border_size=1 +usage=map + +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh^Fms, Mm, Hh^Fds, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh^Fds, Hh^Fms, Hh^Fms, Hh^Fds, Hh^Fds, Hh^Fms, Gs^Fds, Gs^Fds, Mm, Mm, Hh^Fds, Hh^Fds, Hh^Fds, Mm, Mm, Mm, Mm, Mm, Mm, Mm +Hh^Fds, Hh^Fds, Mm, Mm, Hh^Fp, Hh, Hh^Fds, Mm, Mm, Hh^Fp, Gg, Gg, Gg^Qov, Gg^Qov, Gg^Qov, Gs^Fds, Hh, Gs^Fds, Gs^Fms, Gs^Fds, Hh^Fds, Hh^Fds, Hh^Fp, Mm, Hh, Mm, Mm, Mm +Hh^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Hh^Fms, Hh^Fp, Hh^Fds, Hh^Fds, Hh, Hh, Gg^Qov, Gg^Qov, Gg, Gg, Gg, Gg^Qov, Gg^Qov, Hh, Hh, Gs^Fds, Gs^Fds, Hh^Fms, Gs^Fms, Hh^Fp, Hh^Fp, Hh, Hh, Mm +Gs^Fds, Gg^Fms, Gs^Fms, Gg^Fms, Hh^Fds, Hh^Fds, Hh^Fds, Gg, Gg^Qov, Gg^Qov, Gg^Gryv, Gg, Rd, Rd, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Hh^Fds, Hh^Fds, Hh^Fds, Mm +Hh, Gs^Fds, Gg, Gs^Fds, Gg, Hh^Fds, Gg^Qov, Gg^Qov, Gg^Gryv, Gg^Gryv, Rd, Rd, Gg, Gg, Gg, Rd, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh^Fds, Hh^Fds, Mm +Hh, Hh, Gg, Gg, Gg^Qov, Gg^Qov, Gg, Gg, Rd, Rd, Gg^Gryv, Gg, Gg, Gg, Gg, Gg^Gryv, Gg^Gryv, Rd, Rd, Gg, Gg^Cov, Gg^Qov, Gg^Qov, Gs^Fds, Hh, Gs^Fds, Hh^Fds, Hh^Fds +Hh, Hh, Gg^Qov, Gg^Qov, Gg^Gryv, Gg^Gryv, Rd, Rd, Gg^Gryv, Gg^Gryv, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Vov, Gg, Gg^Gryv, Gg^Gryv, Rd, Rd^Cov, Gg^Kov, Gg^Cov, Gg^Qov, Gg^Qov, Hh, Hh, Hh +Hh, Gg^Qov, Gg^Qov, Gg, Gg, Rd, Rd, Gg, Gg, Gg^Gryv, Gg, Gs^Fds, Gs^Fds, Wwt, Wwt, Gs^Fds, Gs^Fds, Gg, Gg^Gryv, Gg^Gryv, Gg^Gryv, Rd^Cov, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Hh +Hh, Hh, Hh, Gg^Qov, Gg^Qov, Gg, Gg^Gryv, Rd, Rd, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg^Gryv, Gg^Gryv, Rd, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Gg, Gg +Hh, Hh, Xv, Gg, Gg^Nhyr, Gg^Qov, Gg^Qov, Gg, Gg, Rd, Rd, Gg^Gryv, Gg^Gryv, Gg, Gg, Gg, Gg, Gg^Gryv, Rd, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Gg, Gg, Gg, Gg +Hh, Xv, 1 Xv, Xv, Gg^Nhyr, Gg^Nhyr, Gg^Nhyr, Gg^Qov, Rd^Qov, Rd, Gg^Vhh, Rd, Rd, Gg, Gg^Gryv, Gg, Rd, Rd, Gg^Gryv, Gg^Gryv, Gg^Qov, Gg^Qov, Gg, Gg, Gg, Gg, Rrc, Rrc +Gg, Xv, Xv, Xv, Hh^Nhyr, Gg^Nhyr, Rd^Nhyr, Rd^Nhyr, Gg^Nhyr, Gg^Qov, Gg^Qov, Gg, Gg, Rd, Rd, Rd, Gg, Gg, Gg^Qov, Gg^Qov, Gg, Gg, Gg, Gg, Rrc, Rrc, Rd, Gg +Rrc, Gg, Gg, Gg, Rd^Nhyr, Rd^Nhyr, Hh^Nhyr, Gg^Nhyr, Hh^Nhyr, Gg^Nhyr, Gg^Nhyr, Gg^Qov, Gg^Qov, Gg, Gg^Fnzt, Gg, Gg^Qov, Gg^Qov, Gg, Gg, Gg, Gg, Rrc, Rrc, Gg, Gg, Gs^Vh, Gg +Gg, Rrc, Rrc, Rd, Gg^Nhyr, Hh^Nhyr, Hh^Nhyr, Hh^Nhyr, Hh^Nhyr, Hh^Nhyr, Hh^Nhyr, Gg^Nhyr, Gg^Nhyr, Gg^Qov, Gg^Fnzb, Gg^Qov, Gg^Nhyr, Gg, Gg, Gg, Rrc, Rrc, Gg, Rd, Gg, Gg, Hh, Gg +Gs^Vh, Rd, Gg, Rrc, Rrc, Gg^Nhyr, Rrc^Nhyr, Hh^Nhyr, Hh^Nhyr, Hh^Nhyr, Rrc^Nhyr, Hh^Nhyr, Hh^Nhyr, Gg^Nhyr, Hh^Nhyr, Gg^Nhyr, Hh, Hh, Rrc, Rrc, Rd, Gg, Gg, Gs^Vh, Gg, Hh, Hh, Hh +Hh, Gg, Hh, Gg, Rd, Rrc, Gg, Rrc^Nhyr, Rrc^Nhyr, Rrc^Nhyr, Hh^Cov, Rrc^Nhyr, Rrc^Nhyr, Hh^Nhyr, Hh, Hh, Rrc, Rrc, Hh, Hh, Gg, Gs^Vh, Gg, Gg, Hh, Hh, Hh, Hh +Hh, Hh, Gg, Gs^Vh, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Rrc, Rrc, Rrc, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/03_Bandits.map b/data/campaigns/Secrets_of_the_Ancients/maps/03_Bandits.map new file mode 100644 index 000000000000..25fe696df46b --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/03_Bandits.map @@ -0,0 +1,37 @@ +border_size=1 +usage=map + +Mm, Mm, Mm, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww +Mm, Mm, Mm, Hh, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Fet, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Es, Gs^Fds, Gs^Fds, Ds, Ds, Ds^Es, Ds, Ds, Ww, Ww, Ww +Mm, Mm, Mm, Mm, Hh, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Vht, Gs, Gg, Gs^Fds, Gs^Fds, Ds, Ds, Ds, Ds, Ww, Ww, Wo +Mm, Mm, Mm, Hh^Vhh, Hh^Es, Hh^Fp, Gg^Es, Gs^Fds, Gg, Gs^Vh, Rd, Gs, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gg^Fet, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Wo +Mm, Mm, Mm, Hh, Hh^Es, Hh^Es, Gg^Es, Gg, Rd, Gg, Rd, Rd, Rd, Rd, Rd, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fds, Ds^Esd, Ds^Es, Ds, Ds, Ww, Ww, Ww, Ww, Wo +Mm, Mm, Mm, Hh, Ce, Gg, Rd, Rd, Gg, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Es, Gg^Es, Ds^Esd, Ds^Es, Ds^Es, Ww, Wwr, Ww, Wo, Ww, Ww +Mm, Mm, Mm, Ce, 2 Ket, Ce, Gg, Gg, Gg^Es, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gg^Es, Gg^Es, Gg^Es, Ds^Esd, Ds, Ww, Ww, Ww^Vm, Ww, Ww, Ww +Mm, Mm, Mm, Ce, Ce, Ce, Mm, Gg, Hh^Vhh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gg^Es, Gg, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Wo +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Esd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Es, Gg, Ds, Ds, Ds, Ww, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh^Fet, Hh^Fp, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Ds, Ds, Ds, Ww, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh^Fp, Hh^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Vl, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Ds, Ds, Ds, Ww, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd^Es, Gs^Fds, Gs^Fds, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gs^Fds, Gs^Fds, Gs^Fds, Ds, Ds, Ds, Ds, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh^Fp, Hh, Gs^Fds, Gs^Fds, Gs^Fms, Rd^Es, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gg^Fet, Gs^Fms, Gs^Fds, Gg, Ds, Ds, Ds, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ds, Gg, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Wwf, Hh, Hh^Fp, Hh^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Vh, Gs^Vh, Ww, Ww +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Mm, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Rd, Gs^Fds, Rd, Gs^Fds, Rd, Rd, Ds, Ds, Ds +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh^Fms, Hh^Fp, Hh^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Vl, Gs^Fds, Gs^Fds, Gg, Gg^Es, Rd, Rd, Rd, Gg, Rd, Gg, Gg, Gg, Ds, Ds +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Rd, Rd^Es, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Ds, Ds +Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh^Fet, Hh, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd^Es, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Vht, Ds, Ds, Ds +Mm, Mm, Mm, Mm, Mm, Mm, Gg, Gg^Fms, Gs^Fds, Gg^Es, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Rd, Gg, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Vl, Ds, Ds, Ds +Mm, Mm, Mm, Mm, Hh^Fp, Hh^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Vl, Rd, Gs^Fds, Rd, Rd, Rd, Gs^Fds, Gs^Fds, Gg^Fet, Gs^Fds, Ds, Gg, Ds, Ds, Ww +Mm, Mm, Mm, Mm, Gs^Vh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gg, Gg^Es, Ds^Es, Ds, Ds, Ds, Ds, Ww +Mm, Mm, Mm, Hh, Gs^Fds, Rb^Gvs, Rb^Gvs, Gs^Fds, Gs^Fds, Rd, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Rd, Ds, Ds, Ds, Ds, Ds, Ww +Mm, Mm, Mm, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Rd, Rd, Rd, Ww, Ds, Ds, Ds, Ww +Mm, Mm, Mm, Gs^Vl, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fms, Gs^Fds, Gs^Fds, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Gg, Rd, Rd, Ww, Ww, Ww, Ww, Ww, Ww +Mm, Mm, Mm, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Rb^Gvs, Gs^Vht, Rb^Gvs, Gs^Fds, Gg, Gs^Fms, Gg, Gg, Rd, Ds, Ds, Ww, Ww, Ww, Ww, Wo +Hh, Hh, Hh^Es, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rb^Gvs, Gs^Fds, Rb^Gvs, Gs^Fds, Gg, Gg^Fet, Gg, Gs^Fds, Ds, Ds, Ds, Ww, Ww, Ww, Ww^Vm, Wo +Hh, Hh, Hh^Es, Gs^Fds, Gs^Fds, Gs^Fds, Rd^Es, Rd, Gs^Fds, Gs^Fds, Gs, Gs, Gg, Gs^Fds, Gs, Gs^Fds, Gs^Es, Gs^Fds, Gg, Gg, Ds, Ds, Ds, Ds, Ww, Ww, Wo, Wo, Wo +Hh, Hh, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Rd^Es, Gs, Gs^Es, Gs, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Es, Gs^Fds, Gs^Fds, Gg, Gg^Es, Ds, Ds, Ds, Ww, Ww, Ww, Wo, Wo, Wo +Gs, Gs, Gs^Fds, Gs^Fds, Rd, Gs^Fds, Rd^Es, Gs^Es, Hh^Es, Hh^Fms, Hh^Fms, Gs^Es, Gg^Es, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Ds, Ds, Ds, Ww, Ww, Wwr, Wwr, Wo, Wo, Wo +Gs^Es, Gs, Gs^Fds, Ce, Ce, Ce, Gs^Fms, Gs, Hh^Es, Hh^Es, Gs^Es, Gs^Vht, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs, Gs, Gg, Ds, Ds, Ds, Ww, Ww, Ww, Ww^Vm, Wo, Wo, Wo +Gs^Fds, Gs^Es, Gs, 1 Ke, Ce, Ce, Gs, Gg^Es, Gg^Es, Hh^Es, Gg^Es, Gg^Es, Gg^Es, Gs^Fds, Gs^Fds, Gs, Gg, Gs^Fds, Gg, Ds, Ds, Ds, Ww, Ww, Wo, Wo, Wo, Wo, Wo +Gs^Fds, Gg, Gs^Fds, Rd, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gg^Es, Gg^Es, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Ds, Ds, Ds, Ww, Ww, Wo, Wo, Wo, Wo, Wo diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/04_Becalmed.map b/data/campaigns/Secrets_of_the_Ancients/maps/04_Becalmed.map new file mode 100644 index 000000000000..48e7dbf404a5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/04_Becalmed.map @@ -0,0 +1,23 @@ +border_size=1 +usage=map + +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot^Vm, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Zpoo, Ww^Zpoo, 2 Ww^Zpoo, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zpoo, Ww^Zpoo, Ww^Zpoo, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zdek, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Zfoc, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zdek, Ww^Zdek, Wot^Zpie, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Zfoc, Ww^Zfoc, Ww^Zfoc, Ww^Zfoc, Ww^Zdek, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot^Zrig, Wot^Zral, 1 Ww^Zfoc, Wot^Zhul, Ww^Zfoc, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh, Wot^Vydo, Wot^Vydh +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Zld, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Zld, Zld, Zld, Zld, Zld, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Zld^Vov, Zld^Vov, Zld, Zld, Zld, Zld, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Zld, Zld^Vov, Zld, Zld, Zld, Zld, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Zld, Zld, Zld, Zld, Zlde, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd +Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd, Vyd diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/05_Blackwater.map b/data/campaigns/Secrets_of_the_Ancients/maps/05_Blackwater.map new file mode 100644 index 000000000000..c8d64ab64e77 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/05_Blackwater.map @@ -0,0 +1,31 @@ +border_size=1 +usage=map + +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fds +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt^Vm, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gll^Fp +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gs^Fds +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Gs^Fms, Wwt, Wwt, Wwt, Wwf, Wwf, Gg, Gg, Gg, Gs^Vl, Gs^Fms, Gg, Gs^Fms, Gs^Fms +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Ww^Vm, Wwt, Wwt, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fds, Wwt, Gg, Ss, Ss, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gg, Gg, Ss^Vhs, Ss, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gs^Fds +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Ds, Gg, Gs^Fms, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Gs^Fds, Gs^Fds, Gs^Fds +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt^Zpoo, Wwt^Zpoo, Wwt^Zpoo, Wot, Wwt, Wwt, Wwt^Bw\, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zpoo, Wwt^Zpoo, Wwt^Zpoo, Wwt, Wwt, Ds, Ds^Bw\, Ds, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg +Wot, Wot, Wot, Wot, Wwt, Wot, Wot, Wot, Wot, Wot, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Bw\, Wwt, Wwt, Wwt, Ds, Ds, Gg, Gg^Vh, Gg, Gg^Vh, Gg, Gg, Gg, Rb^Gvs, Gg, Gg, Gg, Gg, Gg, Gg +Wot, Wot, Wot, Wwt, Wwt^Vm, Wwt, Wot, Wot, Wwt^Zfoc, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wwt^Zdek, Wot^Zpie, Wot, Wwt, Wwt^Bw\, Wwt^Bw\, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vhh, Gg, Gg, Gg, Gg, Gg, Gg, Gg +Wot, Wot, Wot, Wwt, Wot, Wot, Wot, Wwt^Zfoc, Wwt^Zfoc, 1 Wwt^Zfoc, Wwt^Zfoc, Wwt^Zdek, Wot^Bw\, Wot, Wwt, Wwt, Wwt, Wwt, Ds, Ds, Ds, Gg, Gg, Gg, Ch, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Gg, Gg, Gg +Wot, Wot, Wot, Wot, Wot, Wot^Zrig, Wot^Zral, Wwt^Zfoc, Wot^Zhul, Wwt^Zfoc, Wot, Wot, Wot, Wwt^Bw\, Wwt^Bw\, Wwt, Ds, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Ch, Ch, Gg, Gg, Wwt, Gg, Gg, Gg, Ce, Ce, Gg, Gg +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt^Vm, Wwt, Wwt^Bw\, Ds, Ds, Gg, Gg, Gg, Gg, Ch, Gg, Kh, Gg, Gg, Wwt, Wwt, Gg^Vh, Gg, Gg, Rrc, Gg, Rrc, Gg +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt^Bw\, Wwt, Wwt, Ds, Ds, Ds, Gg, Gg, Gg, Ch, Ch, 2 Kh, Kh, Gg, Gg, Gg, Gg, Gg^Vh, Rrc, Rrc, Rrc, Rrc, Gg, Rrc +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Wwt^Bw\, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ch, Gg, Gg, Gg, Gg, Rrc, Gg, Gg, Ce, Gg, Gg, Gg +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Gg, Ds, Ds, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ch, Ch, Gg, Gg, Rrc, Rrc, Gg, Gg, Ce, Ce, Gg, Gg +Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Gg, Gs^Vht, Gg, Gg, Ds, Gg, Gg, Gg, Gg, Gg^Vh, Gg, Gg, Gg, Gg, Gg, Gg, Rrc, Rrc, Rrc, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg +Wot, Wot, Wwt^Vm, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Gg, Gg, Gg^Vhh, Gg, Rrc, Rrc, Gg^Vh, Gg^Vh, Gg, Gg, Gg, Gg, Rb^Gvs, Gg, Gg, Gg +Wwt, Wwt, Wwt, Wwrt, Wwt, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Ce, Gg, Rrc, Rrc, Rrc, Gg, Gg, Gg, Rrc, Gg, Gg, Gg, Rb^Gvs, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg +Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ds, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Gg, Rrc, Rrc, Gg, Gg, Rrc, Rrc, Rrc, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg +Wwt, Wwt, Wwt, Wwt, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Rrc, Gg, Ce, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg +Wwt, Wwt, Wwt, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Gg, Gg, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Vl, Gs^Fds, Gs^Fms +Wwt, Wwt, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs^Fms, Gg, Gs^Fms, Gs^Fds, Gll^Fp, Gll^Fp +Wwt, Wwt, Ds, Ds, Ds, Ds^Vht, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gll^Fp, Gll^Fp +Wwt, Wwt, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vc, Gg, Re, Re, Gg, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Rb^Gvs, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Gg, Gg, Gg, Gs^Fms, Gll^Fp, Gs^Fms, Gll^Fp, Gll^Fp +Wwt, Ds, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Vl, Gg, Gs^Fds, Gs^Fms, Gll^Fp, Gll^Fp, Gll^Fp +Ds, Ds, Ds, Ds, Ds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Gg, Gg, Gg, Gg, Gg, Rb^Gvs, Gg, Rb^Gvs, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fms, Gs^Fds, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gll^Fp, Gll^Fp diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/06_Following_the_Shadow.map b/data/campaigns/Secrets_of_the_Ancients/maps/06_Following_the_Shadow.map new file mode 100644 index 000000000000..b198e5dce925 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/06_Following_the_Shadow.map @@ -0,0 +1,31 @@ +border_size=1 +usage=map + +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Ve, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gg^Efm, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gg^Efm, Gg^Efm, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Wwt, Wwt, Gg, Gg, Gg, Gg, Gs, Gg, Gs, Gg, Gg +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gg^Ve, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gg, Gs, Gs, Gg, Gs^Vh, Gg, Wwt, Wwt, Gg, Gg, Ce, Gg, Ce, Gg, Gs, Gs, Hh, Gg, Hh +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Ve, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Wwt, Gg, Gg, Ce, Ce, 2 Ke, Ce, Gg, Gg, Hh, Hh, Hh, Hh +Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gg^Efm, Gg^Ve, Gs^Fms, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Wwt^Bw/, Gg, Gg, Ce, Gs, Gs, Gs, Gg, Gs, Gg, Gg, Gg, Gg +Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Wwt, Wwt, Gg, Gg, Gs, Gg, Gs, Hh, Gs, Hh, Gg, Gg +Gs^Fds, Gs^Fds, Gs^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gg^Efm, Gg^Efm, Gg^Efm, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Hh, Gg, Gg, Hh, Gg, Ww, Hh, Hh, Gg, Hh, Hh, Hh, Hh^Vhh, Mm, Hh, Hh +Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gg, Gg, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Gg, Hh, Hh, Hh, Hh, Ww, Xue, Xue, Hh, Xue, Xue, Xue, Hh, Hh, Mm, Hh +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Efm, Gg^Efm, Gg, Gg, Gg^Efm, Gg, Gs^Fds, Gg, Gg, Gg, Gg^Efm, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Xue, Xue, Uh, Wwg, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Hh, Hh +Gg^Efm, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg^Efm, Gs^Fds, Gg^Efm, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gg^Efm, Gs^Vl, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Xue, Hh, Xue, Xue, Uh^Emf, Uu^Uf, Rb, Wwg, Wwf, Uue^Dr, Uue^Dr, Uh^Dr, Xue, Xue, Xue, Hh, Hh +Gg, Gg^Efm, Gg^Efm, Gg^Efm, Gg, Gg, Gg, Gg, Gs^Vl, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gg, Gg^Efm, Gg, Gg^Efm, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Xue, Uh, Xue, Uue^Vu, Xue, Uu^Uf, Rb^Emf, Uh, Rb, Wwf^Dr, Wwf^Dr, Uu, Uh^Dr, Xue, Xue, Xue, Xue, Xue +Gg, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gg, Gs^Fms, Gs^Fds, Gg^Efm, Gs^Fds, Gg, Gg, Gg, Re^Vct, Gg, Gs, Gg, Gg, Rb, Rb, Uue, Uue, Uue, Uu^Uf, Uh, Uh, Uu^Uf, Uh^Dr, Rb^Emf, Wwf, Uu^Uf, Uh, Uh, Xue, Xue, Xue, Xue +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gg, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Xue, Xue, Uue, Rb, Rb, Rb, Uue, Rb, Uh, Uue, Uu^Uf, Rb^Emf, Wwg, Uu^Uf, Uu^Vu, Uh^Emf, Uh, Xue, Xue, Xue +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gg, Gs^Fds, Gs^Fds, Gg, Gs, Gg, Gg, Gg, Gg, Xue, Xue, Xue, Xue, Xue, Xue, Uue^Dr, Uue^Dr, Uh, Uue, Uue, Rb, Qxe, Uue, Uu, Uu, Xue, Xue, Xue, Xue +Gg, Gg^Efm, Gg^Efm, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs, Gs, Gg, Gg, Gg, Hh, Xue, Xue, Xue, Hh, Xue, Xue, Xue, Uh, Xue, Xue, Uh, Uue, Uue, Uu^Uf, Uue, Uh, Xue, Xue, Xue, Xue +Gg, Gg^Efm, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Xue, Xue, Xue, Xue, Uue, Xue, Uue^Vud, Uue, Rb, Uu^Uf, Uh, Uh, Xue, Xue, Xue, Xue +Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Vh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gg, Gg, Gg, Hh, Hh, Hh, Gs, Gs, Xue, Xue, Xue, Mm, Mm, Mm, Xue, Xue, Uue, Rb, Uh, Uue, Xue, Xue, Xue, Xue +Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Hh, Hh, Gg, Hh, Gg, Hh, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Xue, Uh, Uue, Rb, Rb, Xue, Xue, Xue, Xue +Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Hh, Hh, Gg, Gg, Hh, Gg, Hh, Gg, Gg, Gs, Gs, Gg, Gg, Hh, Hh, Hh, Gg, Hh, Gg, Gg, Hh, Hh, Gg, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Xue, Xue, Uh, Uue, Rb, Uue, Rb, Xue, Xue +Gg, Gg, Gg, Gs, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gs^Vh, Hh, Hh, Hh, Hh, Mm, Mm, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Xue, Xue, Uh, Uh, Uh, Rb, Xue, Uue +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Hh, Gg, Hh, Hh, Hh, Hh, Hh, Gg, Hh, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Hh, Mm, Mm, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Xue, Xue, Xue, Xue, Xue, Uue, Xue +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Gg, Gg, Gs, Hh, Hh, Mm, Mm, Mm, Hh, Mm, Mm, Hh^Vhh, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Xue, Xue, Xue, Xue, Xue, Xue +Gg, Gg, Gg, Gg, Ce, Ce, Ce, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Gs, Mm, Gs, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Xue, Hh +Gg, Gg, Gg, Gg, Ce, 1 Ke, Ce, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Gg, Gg, Hh, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Hh, Mm, Mm, Mm, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Mm, Mm, Mm, Hh, Mm, Hh, Mm^Vhh, Hh, Hh, Hh, Hh, Hh, Hh +Gg, Gg, Gg, Gg, Gg, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Gg, Gg, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Mm, Mm, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Gs, Gs, Hh, Hh +Gg, Gs^Vl, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Mm, Hh, Mm, Mm, Mm, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Mm, Mm, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Mm +Gg, Gg, Gs, Gs, Gs, Gs, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Mm, Hh, Hh, Hh, Mm, Hh, Hh, Hh, Hh, Hh, Mm, Hh, Mm, Hh, Hh^Vhh, Hh, Hh, Hh, Mm, Mm, Mm, Hh, Hh, Hh, Mm, Hh, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Hh, Mm, Hh, Mm, Hh, Hh, Hh, Mm, Mm +Gg, Gg, Hh, Hh, Hh, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/07_Meeting_of_the_Minds.map b/data/campaigns/Secrets_of_the_Ancients/maps/07_Meeting_of_the_Minds.map new file mode 100644 index 000000000000..23727adc53fb --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/07_Meeting_of_the_Minds.map @@ -0,0 +1,13 @@ +border_size=1 +usage=map + +Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce +Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xue, Xue, Uue, Xue, Xuce, Xuce +Xue, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Uue, Uue, Xue, Xuce, Xuce +Uue, Xue, Xue, Xuce, Xuce, Xuce, Xuce, Xuce, Urb, Urb, Urb, Urb, Urb, Uue, Xuce, Xue, Xuce, Xuce +Xue, 1 Uue, Uue, Xue, Xue, Xue, Xuce, Urb, Urb, Urb, Urb, Urb, 2 Urb, Urb, Urb^Ii, Xuce, Xuce, Xuce +Xuce, Xue, Xue, Uue, Uue, Uue, Uue, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xuce, Xuce, Xuce +Xuce, Xuce, Xue, Uue, Uue, Xue, Xuce, Uue, Uue, Urb, Urb, Urb, Urb, Urb, Xuce, Xuce, Xuce, Xuce +Xuce, Xuce, Xue, Uue, Xue, Xue, Xuce, Uue, Uue, Uue, Uue, Urb, Urb, Urb, Xuce, Xuce, Xuce, Xuce +Xuce, Xuce, Xuce, Xue, Xuce, Xuce, Xuce, Xuce, Xuce, Uue, Xuce, Urb, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce +Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce, Xuce diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/08_Carcyn.map b/data/campaigns/Secrets_of_the_Ancients/maps/08_Carcyn.map new file mode 100644 index 000000000000..fd99d09b10bf --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/08_Carcyn.map @@ -0,0 +1,24 @@ +border_size=1 +usage=map + +Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wot, Wot, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wot, Wot, Wwt, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Hh^Fds, Hh^Fms, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wot, Wwt, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wot +Wwt, Wwt, Wwt, Wwt, Wwt^Bw\, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt^Bw\, Wwt, Hh, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt +Wwt, Wwt, Wwt, Wwt, Ds, Ds^Bw\, Ds^Bw\, Wwt, Wwt, Wwt^Bw|, Wwt, Wwt, Wwt, Wwt^Bw|, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Hh^Vhh, Hh, Gg, Gg, Gg, Gg, Wwt, Gg, Gg, Gg, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ds, Wwt +Gg, Wwt, Gg, Ds, Gg, Gg, Rrc^Vh, Gg, Gg, Ds^Bw|, Ds, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Ds, Wwt, Gg, Rrc, Gg, Gg, Gg, Gg, Gg, Wwt, Rb^Gvs, Gg^Vh, Rb^Gvs, Gg, Gg, Gg, Gg, Gg, Gs, Ds, Ds, Ds, Gg, Ds +Gg, Gg, Gg, Gg, Gg, Gg, Rrc, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Gg, Gg, Gg, Gg^Vh, Gg, Wwt, Wwt, Gg, Rrc, Gg, Gg, Gg, Gg, Re, Rb^Wm, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Wm, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gg, Gg +Rrc, Gg, Rrc, Ce, Gs, Gg, Gg, Rrc, Rrc, Gg, Gg, Gg, Gg, Gg, Gg, Rrc, Rrc, Rrc, Gg, Wwt, Gg, Gg, Gg, Rrc, Rrc, Gs, Gg, Gg, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gs, Gs, Gg, Gg, Gg, Gg +Gg, Rrc, Ce, Rrc, Rrc, Gs, Gs, Gg, Rrc, Rrc, Rrc, Gg, Gg, Gg, Gg, Gg, Rrc, Gg, Wwt, Wwt, Rrc, Gg, Rrc, Rrc, Gs^Vh, Rrc, Rrc, Gg, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg^Vh, Gg, Gs, Gg, Hh^Fp, Hh^Fms, Gg +Gg, Gg, Gg, Gs, Rrc^Vhh, Rrc, Rrc, Rrc, Hh, Hh, Gg, Rrc, Rrc, Gs^Fds, Rrc, Rrc, Ch, Rrc, Wwt^Bsb/, Ch, Ch, Rrc, Gg, Gs, Gs, Rr^Vhc, Re, Re, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gs +Gg, Gg, Gg, Gs, Gg, Rrc, Gg, Hh, Hh^Fp, Gg, Rr^Vhc, Rrc, Gg, Rrc, Rrc, 2 Kh, Ch, Rrc, Wwt^Bsb\, Rrc, Kh, Rrc, Gs^Fds, Gg, Gg, Re, Gg, Gg, Re, Re, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg +Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Gs, Gs^Vh, Gs, Gg, Gg, Rrc, Rrc, Wwt, Wwt, Ch, Ch, Rrc, Rrc, Rrc, Gg, Gg, Gg, Re, Re, Gg, Rb^Gvs, Rb^Gvs, Re, Re, Re, Re, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gs^Fms, Gs^Fds +Gg, Gg, Gg, Hh, Gg, Hh^Fms, Gg, Hh^Fp, Hh, Hh, Rrc, Gg, Rrc, Rrc, Gg, Gg, Wwt, Gg, Gg, Rrc, Gg, Gg, Gg, Rrc, Gs^Vh, Re, Gg, Re, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gll^Fp +Gg, Gg, Gs, Gs, Re^Vhh, Gg, Gg, Gg, Hh, Gg, Gg, Rrc, Gg, Rrc, Gg, Gg, Wwt, Gg, Gg, Rrc, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Rb^Wm, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gs^Fms +Gg, Gg, Gs, Re, Re, Re, Gs, Hh^Fms, Gg, Gg, Rrc, Rrc, Gg, Gg^Vh, Gg, Gg, Wwg, Gg, Rr^Vhc, Rrc, Gs^Vh, Gg, Gg, Gs, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gs^Vl, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gg, Gs^Fds, Gs^Fds +Gg, Gg, Gg^Efm, Gs, Gs, Re, Re, Gg, Gg, Rrc, Gg, Gg, Gs^Fms, Gs^Fms, Gg, Wwf, Wwf, Gg, Gs^Fds, Rrc, Gg, Gg, Gs, Gs, Gs, Gs, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs, Gg, Gg, Gs^Fds, Gg, Gg, Gg^Efm, Gs^Fds +Gg, Gg, Gg^Eff, Gg^Eff, Gg^Eff, Gs, Gg, Re, Rrc, Rrc, Gg, Gg, Gg, Gg, Wwt, Wwg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gll^Fp, Gs^Fds, Gg^Eff, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gs^Fms, Gg, Ce, Ce, Ce, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms +Gg, Gg^Eff, Gg^Eff, Gg, Gg^Eff, Gg^Eff, Gg, Ce, Rrc, Ce, Gg, Gg, Wwt, Wwt, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg^Eff, Gg^Eff, Rb^Gvs, Gs^Vl, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg, Gll^Fp, Gg, Ce, 1 Ke, Ce, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fds +Gg, Gg, Gs^Fds, Gg^Eff, Gs^Fds, Gg, Rrc, Rrc, Gg, Gg, Ww^Ewf, Wwt, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gs, Gll^Fp, Gs^Fds, Gs^Fds, Gg, Gg^Eff, Gg^Eff, Rb^Gvs, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Ce, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds +Gg, Gg, Gg, Gg^Efm, Rrc, Rrc, Gg, Gg, Gg, Gg, Ww^Ewf, Wwt, Gs^Vl, Gg, Gs^Fds, Gg, Gs^Fds, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds +Rrc, Rrc, Rrc, Rrc, Gs, Gg, Gs, Gg, Gg, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fms, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fds, Gg^Efm, Gg^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm +Gg, Gg, Gg, Gs, Gg, Gs, Gs, Gg, Gs^Fds, Gg, Gg, Gg^Efm, Gg^Efm, Gg^Efm, Gg, Gs^Fds, Gg, Gg, Gs^Fms, Gll^Fp, Gg, Gg, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gg^Efm, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/09_Training_Session.map b/data/campaigns/Secrets_of_the_Ancients/maps/09_Training_Session.map new file mode 100644 index 000000000000..581c355b0bc5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/09_Training_Session.map @@ -0,0 +1,17 @@ +border_size=1 +usage=map + +Ds, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wot, Wwt, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt +Gg, Ds, Gg, Gg, Gg, Gg, Gg, Wwt, Ds, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Wwt, Gg +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Ds, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg +Gs, Gg, Gg, Gg, Gg, Gg^Vc, Gg, Gg, Gg, Gg, Ds^Es, Ds, Ds, Wwt^Es, Ds, Wwt, Ds, Ds, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg +Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds^Es, Ds, Ds, Ds^Es, Ds, Ds, Gg, Gg, Gg^Efm, Gg, Gs, Gg, Gs, Gs, Gg, Gg +Gs, Gg, Gg, Gg^Efm, Gg^Efm, Gg^Efm, Gs, Gg, Wwt, Wwt, Wwt, Gg, Gg, Ds^Es, Gg, Ds^Es, Gg, Gg, Gg, Gg, Re, Gg, Gg, Gg, Gs, Gg, Gg +Gg, Gs, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Wwt, Gg, Gg, Gs^Vht, Gg, Gg, Gg, Gg^Fms, Gg, Gg, Re, Gg, Gg, Gg, Gg^Efm, Gg^Efm, Gg, Gg +Gg, Gg, Gg, Gg, Ce, Ce, Gg, Gs, Wwt, Gg, Gs, Gg, Gs, Gs, Gs, Gg, Gs, Gs^Fp, Re, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg +Gg, Gg, Gs, Gs, Ce, Ce, Gg, Wwt, Wwt^Bw/r, Gs, Gs^Vc, Gg, Gg, Gg, Gs^Fms, Gs, Gg, Gs^Fms, Gg, Re, Gg, Gg, Gg, Gg^Efm, Gs, Gs, Gg +Gg, Gg, 1 Ke, Gs, Ce, Ce, Gg, Gg^Efm, Wwt, Wwt, Gs, Gg, Gs^Fds, Gs^Fp, Gs^Fds, Gg^Efm, Gs, Gg, Gs, Gg, Re, Re, Gg, Gs, Gs, Gs, Gg +Gg, Gs, Gg, Gs^Cov, Ce, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gg, Gs, Gg, Gg, Gg, Re, Re, Re, Re, Gg, Gs +Gs, Gs, Gs, Gg, Ce, Ce, Gs, Gg, Gg, Gg, Gg, Gs, Gs^Vl, Gg, Gs^Fds, Gs^Fms, Gs^Fds, Gg, Re, Re, Gg, Gg, Gg, Gg, Gg, Gs, Gs +Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg^Efm, Gg, Gg, Gs^Fp, Gg^Efm, Gs^Fms, Gs^Fds, Gg^Efm, Gg^Efm, Gs^Fms, Gs^Fds, Gs^Fds, Gg, Gg^Efm, Gg, Gg, Gg, Gg, Gs, Gs +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fms, Gs^Fms, Gg, Gg, Gg, Gg, Gg, Gg diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/10_Merfolk_Revenge.map b/data/campaigns/Secrets_of_the_Ancients/maps/10_Merfolk_Revenge.map new file mode 100644 index 000000000000..76ca6c69105c --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/10_Merfolk_Revenge.map @@ -0,0 +1,21 @@ +border_size=1 +usage=map + +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wwt +Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot^Vm, Wot, Wot, Wot, Wot +Wot, Wot, Wwt, Wwt, Wwt, Wwt, Wwt, Wot, Wwt, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot, Wot +Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ww^Vm, Wwt, Wwt, Wwt, Wwt, Wot, Wwt, Wot, Wwt, Wot, Wot, Wot, Wot, Wot, Wwt, Wot, Wwt, Wot, Wot, Wot, Wot, Wot, Chw, Wot, Wot, Wot, Wot, Wot +Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ww^Vm, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ww^Vm, Wwt, Wwt, Chw, 2 Khw, Chw, Wot, Wot, Wot, Wot +Wwt, Wwt, Gg^Vh, Wwt, Gg, Wwt, Gg, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Chw, Chw, Chw, Wot, Wot, Wot, Wot +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Ds, Wwt, Ww^Vm, Wwt, Ds, Ds, Gg, Wwt, Wwf, Wwt, Wwf^Es, Wwt, Wwt^Es, Wwt, Wwt^Es, Wwt^Es, Wwt^Es, Wwf, Wwrg, Wwt, Wwt^Es, Wwt, Wwt, Wwt, Wwt, Wot, Wot, Wot +Gg, Gg, Gg, Gg, Gg^Es, Gg, Gg, Gg, Ds, Wwt, Wwt, Ds, Rp, Gg, Gg, Gg, Gg, Ds, Ds^Es, Ds^Es, Ds^Es, Wwf^Es, Ds^Es, Wwf, Wwf^Es, Wwrg, Wwf^Es, Wwrg, Wwrg, Wwt, Wwt, Wwt, Ww^Vm, Wwt, Wot, Wot +Gg, Gs, Gg^Es, Gg, Gg, Gg, Gg, Gg, Wwt, Wwt, Gg, Rp, Gg, Gg, Gg, Gg, Gg^Es, Gg, Gg, Ds, Gg^Es, Ds^Es, Ds, Ds^Es, Ds, Ds^Es, Ds^Es, Wwf^Es, Wwf^Es, Wwf, Wwt, Wwt, Wwt, Wwt, Wwt, Wot +Gs, Gs, Gs, Gg, Gg, Gg, Wwt, Wwt, Gg^Vh, Gg, Gg, Rp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Ds, Ds^Es, Ds^Es, Wwt^Es, Wwt^Es, Wwt, Wwt, Wwt, Wwt, Wot +Hh, Hh, Gs, Gg, Gg, Wwt, Gg, Gg, Gg, Gg, Gg, Rp, Gg, Gg, Gg, Gg, Gg, Gg^Vc, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Es, Gg, Ds, Ds, Wwf^Es, Wwf^Es, Wwrt, Wwt, Wwt, Wwt, Wot +Gs, Hh, Gs, Gg, Gg, Wwt, Gg, Gg^Es, Gg, Gg, Gs, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Es, Gg, Gg, Gg, Gg, Gg^Es, Gg, Ds^Vht, Wwf^Es, Wwt^Es, Wwt^Es, Wwt, Wwt, Wwt +Gg, Gs, Gg, Gg, Gg, Wwt, Gg, Gg, Gs^Fds, Gg, Rp, Re, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Ds, Ds, Wwf^Es, Wwf, Wwt^Es, Wwt, Wwt +Gg, Gg, Gg, Gg, Wwt, Wwt, Gg, Gg, Gg, Gs, Rp, Gs, Gs, Gs, Gs, Gs^Vht, Gg, Gs, Gs, Gg, Gg, Gs, Hh, Hh, Hh, Gs, Gs, Gg, Gg, Gg, Ds, Ds, Ds^Es, Wwf^Es, Wwt, Wwt +Gg, Gs^Fds, Gs^Vl, Gg, Wwt^Bw\, Gg, Ce, Ce, Ce, Gg, Rp, Gg, Gg, Gs, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Hh, Gs, Gg, Gg, Gg, Gg^Es, Ds, Ds, Wwf^Es, Wwt, Wwt +Gg, Gg, Wwt, Wwt, Gs^Fms, Gg, Ce, 1 Ke, Ce, Gg, Rp, Gs, Gs, Gg, Gg, Gs, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs^Vc, Gs, Gs, Gg^Es, Gg, Hh, Gg, Gg, Gg, Gg, Ds, Ds, Wwt +Gs^Fds, Wwt, Gs^Fds, Gg, Gg, Gg, Gg, Ce, Rp, Rp, Gs, Gs, Gs^Fms, Gs, Gs, Gg, Gs, Gs, Hh, Gs, Hh, Gs, Gs, Gs, Gg, Gg, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Ds, Wwt +Wwt, Wwt, Gs^Fds, Gs^Fms, Gs^Fms, Gg, Rp, Rp, Gs^Fds, Gs, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/11_Battleground.map b/data/campaigns/Secrets_of_the_Ancients/maps/11_Battleground.map new file mode 100644 index 000000000000..3bdc67356380 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/11_Battleground.map @@ -0,0 +1,29 @@ +border_size=1 +usage=map + +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Fp, Gs^Fds, Gll^Fp, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Rp, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm, Gs^Fds, Ss, Gg^Efm, Gg^Efm, Gll^Fp, Gll^Fp, Gll^Fp, Ss, Ss, Gg, Sm, Gs^Fds +Gs^Fms, Gg^Fet, Gs^Fds, Gs^Fds, Rb^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Edt, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Rd^Es, Rd^Es, Gg, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Sm^Uf, Ss^Vhs, Sm^Em, Gs^Fds +Gs^Fms, Gs^Fms, Ss, Ss, Sm^Em, Rb^Fms, Gs^Fms, Gs^Fms, Gg^Edt, Gg^Edt, Gg^Edt, Gs^Edt, Gg^Edt, Gg^Edt, Ss^Vhs, Rb^Fds, Ss, Ss, Rp, Ss, Ss, Gs^Fds, Ss, Gs^Fms, Rb^Fp, Gs^Fms, Gll^Fp, Gs^Fds, Gg^Efm, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Ss^Emf, Gs^Fds, Gs^Fds +Gs^Fms, Gs^Fds, Sm, Sm^Em, Sm, Rb^Fdw, Ss, Ss^Fetd, Ss^Dr, Ss, Ss^Dr, Gg^Edt, Gg^Edt, Ss^Edt, Sm, Sm^Fdw, Gg, Rd, Rp, Gg^Es, Ss, Ss, Ss, Sm^Fdw, Sm^Fdw, Rb^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds +Gs^Fds, Gs^Fds, Ss, Sm, Ss^Vhs, Ss^Fdw, Gg^Fetd, Chs^Es, 2 Khs, Chs^Edt, Chs^Dr, Ss, Ss^Uf, Ss, Ss, Sm, Gg^Es, Gg^Es, Rp, Gg^Es, Ss, Wwg, Wwg, Ss^Fdw, Sm, Gg, Rb^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Fet, Gs^Fms, Gs^Fds +Rb^Fms, Rb^Fms, Wwg, Ss, Rb^Fms, Gg^Emf, Gg, Chs^Es, Chs^Bw\, Chs^Edt, Gg^Edt, Gg^Edt, Wwf^Dr, Wwg, Ss^Edb, Gg^Edb, Rp^Edb, Rp, Ss, Gg^Uf, Ss^Uf, Ss, Wwg^Es, Ss, Ss^Em, Sm, Ss^Em, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Ss, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Efm +Wwg, Wwg, Sm^Em, Wwg, Wwg, Ss, Wwg, Ss^Uf, Ss^Edb, Ss^Bw\r, Wwg^Bw\r, Wwg, Gg^Efm, Gg^Efm, Ss^Edb, Ss^Edb, Rp^Edb, Gg^Edb, Ss, Sm, Sm^Em, Rb^Fds, Ss, Wwg^Es, Wwg^Es, Ss^Em, Ss^Em, Rb^Fds, Rb^Fds, Gs^Fms, Gs^Fds, Ss, Gs^Fds, Gs^Fms, Gs^Fds, Ss +Sm, Ss^Em, Ss^Em, Sm^Em, Gg, Wwg, Gg^Edb, Wwg^Es, Wwf^Edb, Wwg^Edb, Gg^Edb, Ss^Bw\r, Ss^Bw\, Gg^Edb, Gg, Ss^Edb, Rd, Ss, Ss, Sm^Em, Ss, Gs^Fms, Ss, Wwg, Sm^Em, Wwg, Wwg, Wwg, Wwg, Rb^Fds, Wwg, Ss, Rb^Fds, Gs^Fms, Gs^Fds, Gg^Efm +Ss, Sm^Fdw, Ss^Fdw, Gg, Gs^Fds, Ss^Edb, Gg^Edb, Gg^Edb, Gs^Edt, Gg^Edb, Gg^Edb, Ss, Wwg, Wwg^Bw\r, Wwg, Gg, Rd, Gg^Efm, Ss, Ss, Rb^Fms, Gs^Fms, Wwg^Ewf, Wwg, Ss, Sm^Em, Sm^Uf, Ss, Rb^Fds, Wwg, Rb^Fds, Wwg, Wwg, Rb^Fds, Ss, Ss +Ss, Ss, Ss^Fdw, Gg^Fp, Gs^Fms, Ss, Ss, Rb^Fms, Rb^Fms, Gs^Edt, Ss, Ss^Vht, Ss, Sm^Bw|r, Sm^Dr, Ss^Dr, Gg^Edb, Gg^Efm, Gg, Sm, Ss, Ss, Wwg^Ewf, Ss^Ewf, Ss, Ss^Em, Gg^Efm, Gs^Vht, Gs^Fds, Rb^Fds, Gs^Fds, Sm^Edt, Chw^Edt, Ww^Vm, Wwg, Wwg +Ss, Ss, Gg, Gs^Fms, Gg^Fp, Ss^Uf, Ss^Em, Ss, Gg, Gg^Fp, Ss, Ss, Ss^Es, Ss^Bsb|, Ss^Edb, Ss^Edb, Ss^Edb, Rp^Edb, Rp, Sm, Wwg, Wwg, Gg, Ss, Ss, Sm, Rb^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Chs^Edt, Ss^Edt, Ss^Fetd, Wwg +Ss, Ss, Gg, Gs^Fds, Gg, Ss^Uf, Ss^Em, Ss, Rb^Fms, Gg, Ww, Wwg^Es, Wwg^Bh/, Chs^Es, Chs^Es, Ss^Edb, Sm^Em, Gg^Edb, Rp, Ss, Ss, Gs^Fms, Gs^Fds, Gs^Fms, Ss, Sm, Rb^Fds, Gs^Fms, Gg^Efm, Gs^Fp, Gs^Fp, Gs^Fds, Chs^Edb, 3 Khs, Ss^Dr, Ss +Ss^Em, Ss^Uf, Ss^Uf, Gg^Efm, Ss^Em, Ss^Em, Gg, Ss, Ss, Ss, Wwg^Bh/, Chw, Ww^Dr, Ss^Es, Gg, Sm^Em, Gg^Emf, Sm^Uf, Rp, Ss^Uf, Ss^Vhs, Gg^Emf, Ss, Ss, Ss, Sm, Rb^Fds, Gs^Fp, Gs^Fds, Gs^Fds, Gg^Efm, Gg^Edb, Chs^Edb, Ss^Uf, Ss^Dr, Ss +Ss, Ss^Uf, Ss^Uf, Ss, Ss, Gg^Efm, Gg, Gg^Efm, Ss, Wwg^Bh/, Ww, Ww^Es, Ss, Ss^Es, Gg, Sm^Uf, Sm^Em, Sm^Uf, Gg^Es, Sm^Emf, Ss, Ss, Ss, Gg, Ss^Em, Rb^Fds, Gg^Edb, Gs^Fms, Gs^Fds, Gs^Fds, Gg^Efm, Ss^Em, Ss, Ss, Wwg, Wwg +Gg, Gg, Ss^Vhs, Ss, Ss, Ss, Ss, Ss^Fdw, Ss^Fdw, Wwg, Ww, Ss, Gg, Ss, Gg^Uf, Sm, Sm^Em, Sm, Rp^Edt, Gg^Emf, Ss, Ss, Wwg, Ss^Em, Ss^Uf, Sm^Em, Ss^Em, Ss^Em, Ss^Uf, Gs^Fds, Ss, Ss, Ss, Ww^Vm, Ww, Ww +Ss, Ss, Ss^Fdw, Ss^Emf, Gg, Gg, Gg, Gg^Efm, Ss^Fdw, Wwg, Ww, Ss, Ss, Gg, Rb^Fms, Rb^Fms, Rb^Fms, Rb^Fms, Rd^Edt, Sm^Edt, Chs, Wwg^Es, Ww, Wwg, Wwg^Ewf, Wwg, Wwg^Es, Ss^Em, Chs, Ss^Em, Ss, Ss, Wwg, Wwg, Ww^Ewf, Ww +Ss, Ss, Wwg, Ss^Fdw, Ww, Gg^Efm, Ww, Ss, Ww, Ww, Ss, Ww, Ss, Ss, Gg, Sm, Rb^Fms, Rp, Gg^Fp, Gg^Dr, Chw, Wwg^Es, Ww, Ww^Es, Wwg^Es, Ww, Ww^Ewf, Wwg^Es, Wwg^Bsb|, Ss, Wwg, Wwg, Ss, Wwg, Wwg, Wwg +Ss, Wwg, Ww, Ww, Ss, Ww, Gg, Ww, Ss, Ss, Sm^Em, Ss, Ss, Gs^Fds, Gg^Efm, Sm^Em, Sm^Em, Rp, Sm, Chs, Wwg^Es, Wwg^Dr, Wwg, Wwg^Ewf, Ss, Chs, Ss, Wwg^Es, Ss^Es, Ss, Ss, Ss, Gg, Ss, Ss, Ss +Ss, Wwg, Ww, Wwg, Wwg^Ewf, Ss, Ss, Gg, Gg, Sm^Em, Gg^Efm, Sm^Em, Gs^Vht, Gg, Ss, Sm, Gg^Edb, Rd^Edb, Gg^Edb, Ss^Es, Ss^Vhs, Wwg, Ss, Ss, Gg, Gg, Gs^Fds, Gg, Ss^Bsb|, Ss, Gg, Gg, Ss^Vhs, Ss, Ss, Ss +Ss, Wwg, Ww, Ww^Ewf, Wwg^Ewf, Ss, Ss, Ss, Rb^Fms, Rb^Fms, Gs^Fms, Gg^Efm, Ss, Ss, Ss, Sm^Uf, Gg^Edb, Rd^Edb, Gg^Edb, Sm^Em, Ss, Ss, Gg^Edb, Gg^Edb, Gg^Edt, Gs^Edt, Rb^Fds, Gg, Gg^Emf, Gg^Efm, Gg^Efm, Ss, Gg^Edt, Gg^Edt, Ss, Ss +Ss, Wwg, Wwg, Ww, Ww, Ss^Emf, Sm^Uf, Sm^Emf, Gg, Rb^Fds, Gg^Fp, Gg^Efm, Ss^Bsb\, Ss, Wwg^Ewf, Ss, Ss, Rd^Edb, Rp^Edb, Sm, Gg, Gg^Edb, Gg^Edb, Gg^Edb, Gg^Edb, Gg, Sm, Sm^Uf, Ss^Uf, Gg^Efm, Ss^Em, Gg^Edt, Gg^Edt, Gg^Edt, Gg^Edt, Gg^Edt +Gs^Fds, Ss, Wwg, Ww, Ww, Ss^Uf, Sm^Uf, Gg^Emf, Ss, Gg, Ss, Ss, Ss, Wwg^Es, Ww^Bsb\, Ss, Chs^Es, Gg^Edb, Gg^Edb, Rp^Edb, Rd^Efm, Gg^Edb, Gg^Edb, Gg^Edt, Gg^Edt, Gg^Edt, Sm^Em, Ss, Ss, Ss, Gg^Emf, Gg^Edt, Gs^Fds, Gs^Fms, Gs^Fds, Gg^Edt +Ww, Ww, Ww, Ww, Ww, Ss^Emf, Ss, Ss, Gg^Edt, Ss, Ss, Gg^Edt, Ss, Wwg^Es, Chw^Es, Chs^Es, Ss^Es, Chs^Es, Chs^Es, Rp^Edb, Rp^Efm, Gg^Edb, Gg^Edb, Gg, Gg^Edb, Ss^Edt, Ss^Vhs, Sm^Em, Ss, Ss^Uf, Gg^Uf, Gg^Emf, Gg, Gs^Fms, Gs^Fms, Gg +Ww, Ww, Ww, Ww, Wwg, Ss^Vhs, Gs^Fds, Ss, Ss, Gg^Edt, Gg^Edt, Ss, Ss, Chw^Es, Ww^Dr, 1 Khw, Ss^Dr, Ss^Es, Ss^Es, Gg^Es, Rd^Es, Gg, Ss^Edb, Ss^Edb, Ss^Edb, Gg^Edb, Gg, Sm, Gg, Ss, Ss^Fdw, Ss^Fetd, Ss^Fdw, Gs^Fds, Gg, Gs^Fds +Gs^Fds, Ww, Wwg, Wwg, Ss, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gg^Edt, Ss, Ss, Wwg, Ww, Wwg, Ss, Ss^Dr, Ss, Gg^Es, Rd^Es, Gg, Gs^Fds, Ss^Edb, Sm, Sm, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg^Fet, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd^Es, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fds, Gs^Fds diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/12_Walking_Trees.map b/data/campaigns/Secrets_of_the_Ancients/maps/12_Walking_Trees.map new file mode 100644 index 000000000000..61b15f79bf89 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/12_Walking_Trees.map @@ -0,0 +1,26 @@ +border_size=1 +usage=map + +Re^Fms, Gs^Fms, Gs^Fms, Hh^Fp, Hh, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Efm, Gs^Fms, Gs^Fds, Hh^Fms, Hh^Fp, Hh, Gs^Fms, Hh^Fp, Hh^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Rp +Gs^Efm, Gs^Fms, Hh^Fp, Hh^Fms, Hh, Gs^Fms, Gg^Fp, Gs^Fds, Gs^Fms, Gg^Fet, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Hh^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Rr, Rp, Gs^Fms +Gs^Fms, Gs^Fms, Hh^Fp, Hh^Fms, Gs^Fms, Gs^Fms, Gg^Efm, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Hh^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Kv, Rrc, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Hh, Hh^Fp, Hh, Gs^Fms, Gs^Fms, Gg^Efm, Gs^Fms, Gs^Fms, Hh^Fp, Gs^Vl, Gs^Es, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Rp^Efm, Rr, Rr, Rrc, Kv, Gs^Fms, Gs^Fms, Gll^Fp +Gs^Fms, Gs^Fms, Hh, Gs^Fms, Hh, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Es, Hh^Fp, Gs^Es, Hh, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rr, Gs^Fms, Gs^Fms, Gs^Fds, Rp^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms +Gs^Fms, Gs^Fms, Gs^Fms, Hh, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Hh^Fp, Hh^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rr^Es, Gg^Ve, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Hh^Fms, Hh^Fp, Hh^Fp, Hh^Edp, Hh, Gs^Fms, Gs^Fms, Rp^Efm, Rp^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gg, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Hh, Gs^Es, Gs^Es, Hh, Wwt, Wwt, Wwt^Ewf, Gs^Fms, Rr, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Gg^Ve, Gs^Fms, Rp^Efm, Gg^Fet, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Hh^Fp, Ww^Ewl, Ww^Bh\, Gs^Vht, Wwt^Ewf, Wwt, Gs^Fms, Rr, Gs^Fms, Gs^Fms, Gg^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Gs^Fms, Rp^Efm, Gs^Fms, Rp^Efm, Gg^Efm, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Wwt^Ewf, Wwt, Ww^Ewl, Wwt, Rp, Ww^Bsb/, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gg^Fet, Gs^Fds, Gs^Fms, Gs^Fms, Gg^Fet, Gg^Fet +Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Rp^Efm, Rp^Efm, Gg^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Wwt^Ewf, Ww^Ewl, Ww^Bsb|, Wwt, Wwt^Ewf, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gg^Fp, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gg, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Wwt, Rr, Wwt^Ewf, Wwt^Ewf, Ww^Ewl, Gs^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gg^Ve, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fds, Hh, Gs^Fms, Gg^Fet, Gs^Fms, Rp, Gs^Fms, Gs^Fds, Gg, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Rp, Gs^Fms, Gs^Fds, Gg^Fp, Gs^Fms, Gs^Efm, Gg^Efm, Gg, Gg, Gg^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Hh, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gg^Fet, Gs^Fms, Rp, Gll^Fp, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gg^Efm, Gll^Fp, Gg, Gs^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms +Gg^Fet, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rr, Re^Es, Gs^Fms, Gg^Fet, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm +Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Gs^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds +Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Rp, Rp^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Rp^Efm, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Wwt, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms +Gs^Fds, Gs^Fds, Gg^Efm, Gs^Vht, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Gs^Fms, Rp, Rp, Rp, Gg^Ve, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Ww^Ewf, Wwt, Gs^Efm, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms +Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Efm, Gg^Fp, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gg^Ve, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds +Gs^Fds, Gs^Fds, Ce, Ce, Ce, Gs^Efm, Re^Es, Re^Es, Rp, Gs^Fms, Rp^Efm, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Ss^Em, Ss^Em, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Ce, 1 Ke, Ce, Re^Es, Gs^Fms, Gs^Fms, Gs^Fms, Re^Es, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gg^Fet, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms +Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gg^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms +Gg, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Rp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gg, Gg, Gg, Gll^Fp, Gg, Gll^Fp, Gg, Gg^Fet, Gg, Gs^Fms, Gg, Gs^Fms, Gg, Gs^Fms, Gg, Gs^Fms, Gg diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/13_Together_Again.map b/data/campaigns/Secrets_of_the_Ancients/maps/13_Together_Again.map new file mode 100644 index 000000000000..04e160ff32b0 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/13_Together_Again.map @@ -0,0 +1,13 @@ +border_size=1 +usage=map + +Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Wwt, Gg, Gg, Gs^Fds, Gg, Rp, Gs, Gg, Gg +Gg, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Wwt, Wwt, Gg, Gg, Gg, Gs, Rp, Gs, Gs, Gs +Gs^Fms, Gg, Gs, Gs, Gs, Gg, Gg, Gs^Fds, Gs^Vl, Gg, Wwt^Bw\, Gg, Ce, Ce, Ce, Gg, Rp, Gg, Gg, Gs +Gs^Fms, Gs^Fms, Gs^Fms, Gs, Gs, Gs, Gg, Gg, Wwt, Wwt, Gs^Fms, Gg, Ce, Ke, Ce, Gg, Rp, Gs, Gs, Gg +Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Wwt, Gs^Fds, Gg, Gg, Gg, Gg, Ce, Rp, Rp, Gs, Gs, Gs^Fms, Gs +Gg, Gs, Gs, Gg, Gg, Gg, Wwt, Wwt, Gs^Fds, Gs^Fms, Gs^Fms, Gg, Rp, Rp, Gs^Fds, Gs, Gs^Fds, Gg, Gg, Gg +Gg, Gg, Wwt, Gg, Wwt, Wwt, Gs^Fms, Gs^Fds, Gg, Gg, Rp, Rp, Gg, Gg, Gs^Fms, Gg, Gs^Fms, Gg, Gg, Gg +Wwt, Wwt, Gg, Wwt, Gg, Gs, Re, Gs^Fms, Rp, Rp, Gs, Gg, Gs, Gg, Gs, Gs^Fms, Gg, Gg, Gg, Gg +Gg, Gs^Vh, Gg, Gg, 1 Rp, Re, Gs, Rp, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gg, Gg, Gs^Vl, Gg, Gg +Gg, Gg, Rp, Rp, Gg, Gg, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gg, Gs^Fms, Gs^Fms diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/14_Entering_the_Northlands.map b/data/campaigns/Secrets_of_the_Ancients/maps/14_Entering_the_Northlands.map new file mode 100644 index 000000000000..422345a65963 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/14_Entering_the_Northlands.map @@ -0,0 +1,40 @@ +border_size=1 +usage=map + +Ms, Ms, Ms, Ha, Hhd, Hhd^Fp, Md, Gll^Fp, Ms, Ms, Ms, Ms, Md, Md, Hhd, Ha, Ha, Ha, Gll^Fp, Gll^Fp, Md, Md, Ms, Ms, Ms, Ms, Ms, Md, Md, Md, Hhd, Re, Hhd, Md, Md, Md, Ms, Md, Ms, Ms, Ms, Ms, Ms, Md, Md +Md, Ms, Md, Hhd, Hhd, Hhd, Md, Md, Md, Ms, Md, Ms, Md, Md, Md, Hhd, Hhd, Md, Md, Gll^Fp, Gll^Fp, Md, Md, Ms, Md, Ms, Hhd^Vhh, Md, Md, Md, Md, Re, Re, Md, Md, Md, Md, Ms, Ms, Ms, Md, Ms, Md, Md, Md +Md, Md, Md, Md, Hhd, Hhd, Hhd, Md, Md, Md, Md, Md, Md, Md, Md, Hhd, Hhd, Hhd, Hhd, Gll^Fp, Gll^Fp, Hhd, Md, Md, Md, Md, Md, Md, Md, Md, Hhd, Hhd, Re, Hhd, Hhd^Es, Md, Md, Md, Md, Md, Hhd, Ha, Md, Md, Hhd +Md, Md, Md, Md, Hhd, Hhd^Es, Hhd, Hhd, Md, Md, Hhd^Fp, Md, Md, Md, Hhd, Hhd, Hhd, Hhd, Hhd, Gll^Fp, Gll^Fp, Hhd, Hhd^Fp, Md, Hhd, Md, Hhd, Md, Hhd, Md, Md, Md, Re, Re, Md, Md, Hhd^Es, Hhd^Vu, Md, Hhd^Es, Hhd, Hhd, Hhd, Hhd, Hhd +Md, Md, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Gll^Fp, Gll^Fp, Gll^Fp, Hhd^Fp, Hhd^Fp, Hhd, Hhd, Hhd^Vhh, Hhd, Hhd, Gd, Hhd, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gd, Hhd, Gd, Hhd, Hhd, Md, Ms, Md, Re, Hhd, Md, Md, Hhd^Es, Hhd^Es, Hhd^Dr, Hhd, Gd, Hhd, Gs, Gs, Gs +Hhd, Hhd, Gd, Ce, Hhd, Ce, Gll^Fp, Gs^Es, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Gs, Hhd, Hhd, Hhd, Gs, Gd, Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gd, Gd, Gd, Hhd, Hhd, Md, Hhd, Re, Re, Hhd, Gs, Hhd, Gd, Hhd^Dr, Hhd, Hhd, Gd, Gs, Hhd, Gs, Gs +Hhd, Hhd, Gd, Ce, Ce, Ce, Gll^Fp, Gll^Fp, Gd, Gll^Fp, Hhd^Fp, Gll^Fp, Hhd, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gd, Hhd, Gd, Hhd, Hhd, Re, Re, Hhd, Hhd, Gd, Gd, Hhd, Gd, Gd, Hhd, Hhd, Hhd, Gd, Gd +Gll^Fp, Hhd, Gd, Gd, Gll^Fp, 3 Ke, Gll^Fp, Gs, Hhd^Fp, Hhd, Hhd, Hhd^Fp, Hhd, Hhd, Hhd^Fp, Hhd^Fp, Gll^Fp, Gll^Fp, Gd, Gll^Fp, Gs, Hhd^Fp, Hhd, Gll^Fp, Re, Gll^Fp, Gs^Vh, Gd, Gd, Gd, Re, Re, Hhd, Hhd, Hhd, Gd, Gd, Gd, Hhd, Hhd^Fp, Gd, Hhd, Gs, Gd, Gs +Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gll^Fp, Hhd^Fp, Hhd, Gd, Hhd^Fp, Gd, Gd^Es, Gs^Dr, Gd, Gll^Fp, Gd, Gd, Gs, Gs, Hhd^Fp, Hhd, Gd, Gd, Gd, Gs, Gd, Gd, Gd, Re, Re, Gd, Gd, Gd, Gd, Gd, Hhd, Gd, Gd, Gs, Gs, Gs^Eff, Gs^Eff, Gs^Eff +Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gd, Gd^Vh, Gll^Fp, Hhd, Hhd, Hhd, Gd, Gd^Es, Gd, Gd^Es, Gd, Gd, Gll^Fp, Gll^Fp, Gs, Gs, Hhd, Hhd, Gd, Gd, Gd, Gs, Gd, Gs, Re, Re, Re, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs^Eff, Gs^Eff, Gd^Vl, Rb^Gvs +Gs, Gs, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Hhd, Md, Md, Md, Hhd, Gd, Gd^Es, Gd, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Gs, Gd, Gs, Gs, Gd, Gs, Gs^Es, Re, Re, Gd, Hhd, Gd, Gs^Fp, Hhd^Fp, Qxe, Gs, Gs, Gs, Gs, Gs, Gs^Es, Gs^Eff, Gs^Eff +Gs^Es, Gd, Gll^Fp, Gll^Fp, Gs, Gs, Hhd, Hhd, Md, Md, Hhd, Hhd, Gd, Gd, Gd, Gs^Vht, Hhd, Gs, Hhd, Hhd, Hhd, Gd, Gs, Gs, Gd, Gd, Gd, Gd, Gd, Re, Re, Hhd, Md, Hhd, Hhd, Gs^Fp, Gs^Vht, Qxe, Gd, Gd, Gd, Gs, Gd, Gs, Gs +Gs^Es, Gd, Gd, Gll^Fp, Gs, Gs, Gs, Hhd, Hhd, Hhd, Hhd, Gd, Gd, Gll^Fp, Gd, Gd, Gd, Gs, Hhd^Fp, Hhd, Hhd^Fp, Hhd^Fp, Gd, Hhd, Hhd, Gd, Hhd, Gd, Gd, Re, Re, Hhd, Hhd, Md, Hhd^Fp, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gs +Gs, Gd, Gs, Gs^Fp, Gs, Gs, Gs, Hhd, Gs, Gd, Gd, Gd, Qxe, Qxe, Gll^Fp, Gd, Gll^Fp, Gll^Fp, Gs^Efm, Hhd^Fp, Gs, Hhd, Hhd^Fp, Hhd, Md, Hhd^Fp, Hhd, Hhd, Hhd, Re, Re, Gd, Gd, Hhd, Gd, Gd, Gd, Gll^Fp, Gs^Fms, Gll^Fp, Gll^Fp, Gd, Gs, Gd, Gs +Gs, Gs^Vc, Gd, Gs, Gll^Fp, Gs, Gd, Gd, Hhd, Gd, Gd, Qxe, Gs, Gd, Gs^Fds, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Hhd, Hhd, Hhd^Fp, Gs, Gd, Gd, Re, Re, Re, Gd, Gd, Gs, Gd, Gs, Gll^Fp, Gll^Fp, Gll^Fp, Gs, Gs, Gs, Gd, Gs +Gs, Gd, Gd, Gd, Gd, Gd, Gd, Hhd^Fp, Gs, Gd, Gs, Qxe, Gd, Gd, Gd, Gs^Fms, Gs, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Gd, Gs, Hhd, Gs, Gs, Gd, Gd, Gd, Gd, Re, Re, Gd, Gd, Gd, Gd, Gd, Gs, Gd, Gll^Fp, Gll^Fp, Gs, Gs, Gs, Gs +Gs, Gd, Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs, Gs, Qxe, Gd, Gd, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Es, Gs, Gd, Gd^Vh, Gs, Rb^Gvs, Gs, Gd, Gd, Gd, Gd, Re, Re, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gll^Fp, Gll^Fp, Gs, Gs +Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gll^Fp, Gll^Fp, Gg, Gg, Gs, Gll^Fp, Gll^Fp, Gd, Gd, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gd, Gd, Gd, Gd, Re, Re, Gs, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gs^Fp, Gd^Vl, Gs, Gs +Gd, Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gs, Gs, Gll^Fp, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Re, Re, Gs, Gd, Gd, Gd, 2 Ke, Gd, Gs, Gd, Gs, Gs, Gs, Gs, Gll^Fp +Gd, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd^Eff, Gll^Fp, Gs, Gs, Gs, Gs^Es, Gd, Gll^Fp, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gd, Gs, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Re, Re, Gd, Gd, Gd, Gd, Gd, Ce, Ce, Gll^Fp, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Gs^Fms +Gd, Gd, Gd, Gd, Gd^Eff, Gd^Eff, Gd^Vh, Gd^Eff, Gd^Eff, Gd, Gd, Gd, Gd, Gd, Gs, Gs^Em, Gs, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Gs, Gs, Gs, Gs, Gs, Gs, Re, Re, Gs, Gd, Gd, Gs, Gs, Gs, Gs, Ce, Ce, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms +Hh, Gd, Gd^Eff, Gd^Eff, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gd^Eff, Gd^Eff, Gll^Fp, Gll^Fp, Gs, Gd, Gd, Gd, Gs, Gd, Gd, Gd, Gs^Fms, Gd, Gs, Gs^Vht, Gs, Gs, Gs, Gd, Gd, Re, Re, Gd, Gd, Gd, Gs, Gs, Gs, Gs, Ce, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms +Mm, Gs, Gs, Gd^Eff, Gd^Eff, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gd^Eff, Gd^Eff, Gg, Gg, Gg, Gd^Fp, Gs, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gs, Gg, Gs, Gs, Gd, Gd, Re, Re, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gll^Fp, Gs, Gg, Gll^Fp, Gs^Fds, Gs^Fds +Mm, Hh, Hh, Gs, Gs, Gd^Eff, Gd, Gd^Eff, Gs, Gg, Gg, Gg, Gg, Gs, Gd, Gd, Gd, Gd, Gd, Gd, Gs, Gd, Gd, Gd, Gd, Gs, Gd, Gd, Gd^Fp, Gd, Re, Re, Gd, Gd, Gd, Gd, Gll^Fp, Gd, Gll^Fp, Gll^Fp, Gg, Gs^Efm, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Hh, Gs, Gg, Gd, Gd, Gs, Gd, Gg, Gs, Gg, Gg, Gd, Gs, Gd, Gs, Gs, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd, Gd^Fp, Gd, Gd^Fp, Re, Re, Gd, Gd, Gd, Gd, Gll^Fp, Gd, Gll, Gs, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Ww +Hh, Mm, Hh, Gg, Gs, Gd, Gs, Gd, Gd, Gd, Gs, Gd, Gd, Gd, Gs, Gs, Gd^Vl, Gd, Gs, Gd, Gs, Gs, Gll^Fp, Gs, Gll^Fp, Gd, Gs, Gd, Gd, Re, Re, Re, Gd^Fp, Gd^Fp, Gd, Gll, Gs^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fms, Ww, Gll^Fp +Gs^Vc, Hh, Hh, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs^Es, Gs, Gs, Gs, Gs^Em, Gs, Gs, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll, Gd, Re, Re, Re, Gd, Gd^Vl, Gd, Gs^Fms, Gd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs^Vc, Gs, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gll^Fp, Gs^Efm, Gs^Fms, Gll, Gll^Fp, Gll^Fp, Gd, Re, Re, Gd, Gd, Gs^Fms, Gs^Fms, Gs, Gs, Gll^Fp, Gs^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Gs, Gs, Gs, Gs, Gll^Fp, Gs, Gll^Fp, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gll^Fp, Gs, Gs, Gd, Gd, Re, Re, Re, Re, Gd, Gs, Gg, Gg, Gg, Gs^Em, Gll, Gll^Fp, Gll^Fp, Gs^Fp, Gs^Em, Gll^Fp, Gll^Fp, Gs^Fms, Gll^Fp +Gg, Gs, Gs^Fms, Gll^Fp, Gs^Fds, Gs^Fms, Gll^Fp, Gs, Gs, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs^Vc, Gs, Gs, Gs, Gd, Re, Re, Re, Gd, Gd, Gs, Gg, Gg, Gg, Gg, Gg, Gs, Gs^Em, Gs, Gs, Gg, Gs^Em, Gg, Gg, Gg +Gs, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gd, Re, Gs, Gs, Gs, Gg, Gs, Gs^Es, Gg, Gg, Gg, Gs, Gg, Gs, Gg, Gs, Gs, Gs, Rd, Re, Rd, Rd, Gs^Vc, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Em, Gg, Gg, Gg, Ds, Gg^Es, Gg +Gg, Gs, Gs, Gs^Fms, Gs, Gs^Em, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Gg, Gg, Ce, Gs, 1 Ke, Rd, Ce, Gs, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Gg, Gg, Gg, Ds, Ds, Ds^Vht, Ds, Gg^Es +Gg, Gs, Gg, Gs, Gs, Gs, Ds, Gg, Gg, Gs^Es, Gg, Gg, Ds, Gg, Gg, Gs, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ce, Ce, Ce, Ds, Ds, Ds, Gg, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds +Ds, Gg, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ds, Ds^Es, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww^Es, Ww^Es, Ww, Wo, Ww, Ww^Es, Ds, Ds +Ww, Ds, Ww, Ww, Ww, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Ww, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Ww, Wo, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww +Wo, Ww, Wo, Wo, Wo, Ww, Wo, Wo, Wo, Wo, Wo, Ww, Wo, Wo, Wo, Ww^Vm, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww^Vm, Wo, Wo, Wo, Wo, Wo +Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/15_Mountain_Pass.map b/data/campaigns/Secrets_of_the_Ancients/maps/15_Mountain_Pass.map new file mode 100644 index 000000000000..c03193b2aff8 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/15_Mountain_Pass.map @@ -0,0 +1,34 @@ +border_size=1 +usage=map + +Ha, Ms, Ha, Ms, Ha^Fpa, Ha^Fpa, Aa^Fpa, Aa^Fpa, Hh, Gll^Fdw, Hh, Hh^Fp, Hh^Fp, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd^Fp, Rb, Gd, Gd, Gd, Gd, Gs, Wwt, Gs, Rb, Gd +Ms, Ha, Ha, Ha, Ha, Ha^Fpa, Ha^Fpa, Ha^Vca, Hh^Fpa, Hh, Hh, Hh, Hh^Fp, Hh^Fp, Hh^Fp, Hhd, Hhd^Fp, Hhd^Fp, Hhd, Hhd, Hhd, Hhd, Hhd, Gd, Gs^Fp, Gs, Wwt, Wwt, Gs, Gd, Gd +Ms, Ms, Ms, Ha, Ha, Ha, Ha, Ha^Fpa, Aa^Fpa, Hh^Fpa, Hh^Fpa, Hh^Fpa, Gs^Fpa, Gs^Fp, Gs^Fpa, Hhd^Fp, Hh, Hhd^Fp, Hhd, Hhd, Hhd, Hhd^Fp, Hh^Fp, Hhd, Wwt, Wwt, Hh, Gs^Fp, Gd, Gd, Gd +Ms, Ms, Ms, Ms, Ms, Ha, Ha, Ha, Ha, Aa^Fpa, Ha^Fpa, Hh^Fpa, Aa^Fpa, Aa^Fpa, Ha^Fpa, Hh^Fpa, Hh^Fpa, Hh^Fpa, Aa^Fpa, Hh^Fpa, Hh, Hhd, Hh, Wwt, Hh, Hh, Hh, Hhd^Fp, Hhd, Gd^Fp, Re +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Ha, Ha, Aa^Fpa, Hh, Ha^Fpa, Hh, Aa^Fpa, Hh^Fpa, Hh^Vhha, Hh^Fpa, Hhd^Fp, Rb, Wwt, Hh^Fp, Hhd^Fp, Hhd^Fp, Hhd, Hhd, Hhd, Hhd +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Hh^Fpa, Hh^Fpa, Hh, Hh, Hh^Fpa, Hh^Fpa, Hh^Fpa, Hh^Fpa, Cha, Cha, Wwt, Hhd^Fpa, Hhd^Fp, Hh^Fpa, Hh^Fp, Gll^Fp, Gll^Fp, Hhd +Ms, Ms, Ms, Ms, Ms, Ms^Vaa, Ms, Ms, Ms, Ms, Ms, Ms, Ms^Voa, Hh^Fpa, Hh^Fpa, Hh^Fpa, Hh, Hh, Hh^Fpa, Hh^Fpa, Rb, 3 Kha, Wwt^Bsb\, Wwt, Wwt, Ha^Fpa, Ha^Fpa, Hh^Fpa, Hh^Fpa, Gll^Fp, Hh +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Ha^Fpa, Hh, Hh, Hh, Hhd^Fpa, Wwt, Rb, Kha, Hhd, Ai, Ai, Ha^Vla, Ha^Fpa, Ha^Fpa, Hh^Fpa +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Hh^Fpa, Hh, Hh^Fpa, Hh^Fpa, Hhd^Fpa, Wwt, Gd^Fp, Hh, Hh^Fpa, Hhd, Wwt, Ha, Ha, Ha^Fpa, Ha^Fpa +Ms, Ms, Ms, Ms, Ha, Ms, Ms, Ms, Ai, Ms, Ai, Ms, Ai, Ms, Ms, Ha, Hh^Fpa, Hh, Hhd, Hhd^Fpa, Ai, Wwt, Gd^Fp, Hh^Fpa, Ha, Ha, Ai, Ha, Ha, Ha, Ha^Fpa +Ms, Ms, 2 Kha, Ha, Ms, Ms, Ai, Ai, Ms, Ai, Ms, Ai, Ai, Ai, Ai, Hh^Fpa, Hh^Fpa, Ha, Wwt, Ai, Hhd^Fpa, Hhd^Fpa, Hh^Fpa, Hh^Fpa, Ha, Ha, Ha, Ai, Ai, Ha, Ha +Ms, Ms, Cha, Cha, Ai, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ai, Ai, Ai, Ha^Fpa, Hhd^Fpa, Re, Hhd^Fpa, Hh^Fpa, Hh, Ha, Ms, Ms, Ms, Ai, Ms, Ms +Ms, Ms, Ai, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Hhd, Re, Hhd, Hh^Fpa, Ha, Ha, Ms, Ms, Ms, Ms, Ai, Ai, Ms +Ms, Ms, Ai, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms, Ms^Xm, Ms, Ms^Xm, Ms, Ms, Ms, Ms, Ha^Fpa, Hhd, Re, Ha^Fpa, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ai, Ms +Ms, Ms, Ai, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms, Ms^Voa, Ms, Ha, Hhd, Re, Ha, Ms, Ms, Ms, Ha^Vla, Ms^Xm, Ms^Xm, Ms, Ms, Ms, Ms +Ai, Ai, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms^Xm, Ms, Ms, Ms, Ha, Ha, Hhd, Hhd, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms^Vaa, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms, Ms, Ms, Ha, Re, Hhd, Hhd, Ms, Ms, Ms, Ms, Ms^Xm, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Re, Hhd, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Re, Re, Ha, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Re, Hhd, Ms, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms^Xm, Ms^Xm, Ms^Xm, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms^Voa, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Hhd, Hhd, Ha, Ms, Ms, Ms, Ms, Ms, Ms^Xm, Ms, Ms^Xm, Ms, Ms^Xm, Aa^Vaa, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Hhd, Hhd, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Hhd, Hhd, Re, Re, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Hhd, Re, Hhd, Hhd, Ha, Ha, Ms, Ms^Voa, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms^Voa, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Hhd, Re, Re, Hhd, Ha, Ha, Ms, Ai, Ai, Ai, Ai, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms^Vaa, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Hhd, Hhd, Re, Hhd, Ms, Ms, Ms, Ms, Ai, Ai, Ai, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Hhd, Re, Hhd, Hhd, Ha, Ms, Ms, Ai, Ai, Ai, Ai, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ha, Ha, Cea, Cea, Cea, Hhd, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ms, Ms, Ha^Fpa, Ha^Fpa, Ms, Ms, Ms, Ms, Ha^Vhha, Hhd, Cea, 1 Kea, Cea, Hhd^Fpa, Ha^Fpa, Ms, Ms, Ms, Ha^Fpa, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms +Ha, Ha, Ha, Ha, Ha, Ha, Ha^Fpa, Hh^Fpa, Hh^Fpa, Hhd, Hhd, Cea, Hhd, Hhd, Hh^Fpa, Ms^Fpa, Hh^Fpa, Ms, Hh^Fpa, Ha^Fpa, Ha^Fpa, Ha^Fpa, Ha^Fpa, Ms, Ha^Fpa, Ha^Vla, Ha^Fpa, Ms, Ms, Ms, Ms +Hhd, Ha, Hhd, Ha, Hhd, Hh^Fpa, Ms, Hh^Fpa, Hhd, Hh^Fpa, Rb, Rb, Hhd, Hhd^Fpa, Hhd, Hh^Fpa, Hhd, Hhd^Fpa, Hhd, Hhd^Fpa, Hhd, Ha^Fpa, Hhd, Ha^Fpa, Hhd, Ha^Fpa, Hhd, Ha, Ha, Ha, Ha diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/16_The_Mage.map b/data/campaigns/Secrets_of_the_Ancients/maps/16_The_Mage.map new file mode 100644 index 000000000000..3cefd0faf54d --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/16_The_Mage.map @@ -0,0 +1,29 @@ +border_size=1 +usage=map + +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Md, Md, Md, Hd, Hd, Hhd^Fp, Gd^Fp, Gs^Fp, Wwt, Ai, Wwt, Wwt, Wwt, Ai, Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Em, Gs^Fp, Md, Md, Md, Md, Md, Md +Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Md, Md, Md, Md, Md, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Ai, Ds, Ai, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Md, Md, Hhd +Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gd^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vl, Gs^Fp, Gs^Fp, Gd^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gd^Fp, Gd^Fp, Hh^Fmf, Gd^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vl, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp +Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Gd^Fp, Hh^Fms, Hh^Fmf, Hh^Fms, Hh^Fmf, Hh^Fms, Gd^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Hh^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Hhd, Hhd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ai, Ai, Ai, Wwt, Ai, Wwt, Ai, Ai, Ai, Ai^Es, Mm, Mm, Hh, Hh, Hh, Ch, Ch, Ch, Gs^Fp, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd +Gs, Gg, Gg, Gg, Gd, Hh^Fms, Gs, Ai, Wwt, Wot, Wot, Wwt, Wot, Wwt, Wwt, Ai, Ai, Ai, Wwt, Ai, Ch, 2 Kh, Ch, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm +Hh, Gd, Gd, Gs^Fp, Gs^Fp, Hh^Fms, Ai, Ai, Wwt, Wot, Wot, Wot, Wot, Wot, Wot, Wwt, Wot, Wwt, Wwt, Ai, Ch, Ch, Ch, Hh^Fms, Hh^Fms, Hh^Fms, Hh^Fms, Hhd, Gg^Ve, Mm, Mm, Mm +Hhd^Fdw, Hhd^Fp, Hhd^Fp, Hhd^Fdw, Gs^Fp, Gd^Fp, Hh^Fmf, Hh^Fms, Ai, Wwt, Ai^Es, Wwt, Wwt, Wot, Wot, Wot, Wot, Wot, Wwt, Ai, Hh^Fms, Hh, Re, Gs, Gd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp +Hhd^Fdw, Hhd^Fdw, Hhd^Fp, Gs^Fp, Gs^Fp, Gd^Fp, Gd^Fp, Hh^Fms, Hh^Fmf, Hh^Fms, Gs^Fp, Ai, Ai, Wwt, Wwt, Wwt, Wwt, Wwt, Wwt, Ai, Hh^Fdf, Hh^Fp, Re, Re, Gd, Hhd, Hhd, Hh^Fms, Hh^Fms, Hhd, Hh^Fms, Hhd +Gs^Fp, Hhd^Fp, Gs^Fp, Gs^Fp, Hh^Fp, Gs^Fp, Gs^Fp, Gd^Fp, Gd^Fp, Gd^Fp, Gs^Fp, Re, Re, Hh^Fms, Ai, Wwt, Ai, Ai, Ai^Es, Ai, Hh^Fms, Hh^Fms, Re, Re, Gs^Fp, Hh^Fp, Gs^Fp, Hhd, Hhd, Hh^Fp, Hh^Fms, Hhd +Md, Md, Md, Md, Gd^Ve, Gg, Gg, Gg, Gg, Re, Re, Re, Re, Re, Re, Re, Re, Re, Re, Re, Re, Re, Re, Wwt, Ai, Md, Md, Md, Ms, Md, Md, Md +Hhd, Hhd, Hhd, Hhd, Gd, Gs, Gg, Gg, Re, Re, Gg^Vh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Gg, Wwt, Wwt, Ai, Ai, Md, Ms, Ms, Ms, Md +Hh, Gd, Gs, Gd, Gs, Gg, Re, Re, Hh, Hh, Hh, Hh, Hh, Gs, Hh, Gg, Gs, Gg, Hh, Hh, Hh, Gg, Hh, Gg, Gs, Gg, Gd, Hd, Md, Md, Md, Md +Gs, Gs, Hh, Hh, Hh, Re, Re, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Gs^Vl, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Gd, Gd, Hd, Hd, Hd, Hd, Hd +Gg, Gg, Hh, Hh, Re, Re, Hhd, Hh, Hhd, Hh, Hh, Hh, Hh, Hh, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Hh, Hhd, Hhd, Hhd, Hhd, Hhd, Gd, Gd^Vh, Hd, Hd, Hd +Hh, Hh, Hh, Hh, Re, Re, Hhd, Hhd, Mm, Hhd, Hhd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Hh, Hhd, Hd, Md, Md, Md, Md, Md, Md, Md, Md, Hd +Mm, Mm, Hh^Fp, Hh^Fp, Re, Re, Hhd, Mm, Hhd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh, Hhd, Hhd, Md, Hd, Hd, Md, Md, Md, Hd, Hd, Md, Md +Hh, Hh, Hh, Hh^Fp, Ce, Re, Re, Hhd, Hhd, Hhd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Md, Md, Md, Hd, Hd, Hd, Md, Md, Ms, Md +Hhd, Hh, Hh, Ce, 1 Ke, Ce, Re, Re, Hhd, Hhd, Hhd, Hh^Fp, Hhd, Hhd, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Md, Md, Ms, Ms, Ms, Md, Hd, Md, Ms, Ms, Ms, Ms +Hhd, Hhd, Hh, Ce, Ce, Ce, Re, Re, Hhd, Hhd, Hhd, Hhd, Mm, Mm, Mm, Mm, Gll^Ve, Hh^Fp, Hh^Fp, Hh^Fp, Md, Ms, Ms, Ms, Ms, Md, Hd, Md, Md, Ms, Ms, Ms +Md, Md, Hh, Hh, Hhd, Hh, Re, Re, Mm, Mm, Mm, Hhd, Mm, Mm, Mm, Hhd, Hhd, Hhd, Hhd, Md, Md, Ms, Ms, Ms, Ms, Md, Hd, Md, Md, Ms, Md, Ms +Md, Md, Hhd, Hhd, Hhd, Hhd, Re, Re, Mm, Ms, Mm, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Hhd, Md, Md, Md, Md, Ms, Md, Md, Md, Hd, Hd, Md, Ms, Md +Xue, Xue, Xue, Xue, Re, Re, Re, Hhd^Vhh, Mm, Mm, Ms, Md, Md, Md, Md, Md, Md, Md, Md, Md, Md, Md, Ms^Vhha, Md, Md, Md, Md, Md, Hd, Ms^Vhha, Ms, Ms +Uu, Uu, Uu, Uu, Xue, Re, Re, Hhd, Md, Md, Md, Md, Md, Md, Hh^Fp, Md, Hh^Fp, Md, Md, Md, Md, Ms, Ms, Ms, Ms, Ms, Ms, Md, Hd, Ms, Ms, Ms +Xue, Xue, Xue, Xue, Xue, Re, Re, Md, Md, Md, Md, Md, Gg, Hh^Fp, Hh^Fp, Hh^Fp, Hh^Fp, Md, Md, Md, Md, Ms, Ms, Ms, Ms, Ms, Ms, Md, Md, Hd, Ms, Ms diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/17_Mortality.map b/data/campaigns/Secrets_of_the_Ancients/maps/17_Mortality.map new file mode 100644 index 000000000000..751245f77241 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/17_Mortality.map @@ -0,0 +1,12 @@ +border_size=1 +usage=map + +Uh^Vud, Xu, Rb^Es, Xu, Xu, Xu, Rb^Es, Uh^Vud, Uh, Xu, Xu, Xu, Xu, Ai, Ai, Xu, Xu, Xu +Xu, Uu, Xu, Rb^Es, Uu, Ur^Es, Xu, Rb^Es, Ur^Es, Xu, Xu, Xu, Xu, Xu, Xu, Ai^Es, 1 Ur, Uu +Xu, Rb^Es, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Es, Xu, Uu, Cud^Wyb, Cud, Xu, Uu, Ww, Ww^Es, Xu +Rb^Es, Ur^Es, Uh, Xu, Xu, Uu^Wyb, Urb, Uu^Vud, Uu, Ur, Ur, Uu, Uu, Cud, Cud, Ur, Ai^Es, Xu +Ur^Es, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Cud, Uu^Dr, Uu^Dr, Uu, Ur, Ur, Cud^Dr, Xu, Xu, Ai^Es +Xu, Xu, Xu, Urb, Urb^Es, Urb, Urb, Cud^Es, Cud, Cud, Cud, Uu, Uu^Es, Uu, Uu^Vud, Xu, Xu, Ai^Es +Uh, Xu, Xu, Cud^Es, Cud^Es, Urb, Urb, Urb^Es, Urb^Es, Cud, Cud, Cud^Dr, Urb, Uu^Es, Uu^Dr, Xu, Xu, Xu +Xu, Xu, Cud^Es, Kud, Cud^Es, Urb^Es, Urb^Es, Urb^Es, Urb^Es, Urb, Urb, Urb, Urb, Urb, Uu^Wyb, Xu, Xu, Xu +Xu, Cud, Urb^Es, Cud^Es, Urb^Es, Cud^Dr, Cud, Urb, Cud, Urb, Urb, Urb, Urb^Dr, Uu^Es, Xu, Xu, Xu, Xu diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/18_Abandoned_Outpost.map b/data/campaigns/Secrets_of_the_Ancients/maps/18_Abandoned_Outpost.map new file mode 100644 index 000000000000..38c221abacc4 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/18_Abandoned_Outpost.map @@ -0,0 +1,20 @@ +border_size=1 +usage=map + +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ai, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ai^Es, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ai, Xu, Xu, Uh^Wyb, Xu, Xu, Xu, Uh^Vu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ai^Es, Ai, Xu, Xu, Xu, Xu, Xu, Xu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ai, Uu, Uue^Uf, Rb^Es, Uu^Em, Uh, Uu^Es, Uu^Es, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Vud, Xu, Rb^Es, Xu, Xu, Xu, Rb^Es, Uh^Vud, Uh, Xu, Xu, Xu, Xu, Ai, Ai, Xu, Xu, Xu, Uu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xue, Xu, Xu, Xu, Xu, Xu, Uh^Es, Xu, Ai^Es, Ai, Xu, Uu^Es, Uu^Es, Ur^Es, Ur^Es, Uue^Uf, Xu, Xu, Uh, Xu, Uh^Wyb, Xu, Xu, Xu, Xu, Uu, Xu, Rb^Es, Uu, Ur^Es, Xu, Rb^Es, Ur^Es, Xu, Xu, Xu, Xu, Xu, Xu, Ai^Es, Ur, Uu, Xu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Uue^Wyb, Rb^Es, Rb^Es, Uue^Vu, Xue, Xue, Xue, Xu, Uh^Wyb, Uu^Vud, Uh^Es, Ww^Es, Ww^Es, Xu, Xu, Uh^Wyb, Uh^Vu, Uh, Xu, Ur^Es, Uu^Es, Uu^Em, Uh, Xu, Uh, Rb^Es, Xu, Xu, Xu, Xu, Rb^Es, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Es, Xu, Uu, Cud^Wyb, Cud, Xu, Uu, Ww, Ww^Es, Xu, Xu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Uue, Xue, Xue, Xue, Uue^Dr, Uue^Uf, Xue, Xue, Uh, Uu, Uh^Es, Ww, Uu^Es, Xu, Xu, Xu, Uh, Uh, Xu, Uu^Vud, Ur^Em, Qxu^Wyb, Uh^Uf, Uh, Rb^Es, Uh^Uf, Xu, Xu, Xu, Rb^Es, Ur^Es, Uh, Xu, Xu, Uu^Wyb, Urb, Uu^Vud, Uu, Ur, Ur, Uu, Uu, Cud, Cud, Ur, Ai^Es, Xu, Xu +Xue, Xue, Xue, Xue, Xue, Xue, Xue, Rb^Es, Xue, Xue, Xue, Xue, Uue^Uf, Xue, Rb^Wyb, Xue, Xu, Uu, Ai^Es, Xu, Uu^Es, Uh^Wyb, Uh, Xu, Uh, Uu, Uh, Uh^Em, Ur^Em, Qxu^Wyb, Uh, Rb^Es, Xu, Uh, Xu, Xu, Ur^Em, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Cud, Uu, Uu, Uu, Ur, Ur, Cud^Dr, Xu, Xu, Ai^Es, Xu +Xue, Xue, Xue, Xue, Uue^Vu, Uue^Wyb, Uue^Uf, Uue^Uf, Uue, Xue, Xue, Uue^Dr, Uue, Uue, Uue^Uf, Xue, Xue, Xu, Uh, Ww^Es, Ur^Es, Uu^Es, Cud, Kud, Ur^Es, Ur, Rb^Es, Uh^Em, Uh, Rb^Es, Rb^Em, Uu^Em, Ur^Em, Ur^Es, Uu^Vud, Uu, Xu, Xu, Xu, Urb, Urb^Es, Urb, Urb, Cud^Es, Cud, Cud^Qov, Cud, Uu, Uu^Es, Uu, Uu^Vud, Xu, Xu, Ai, Ai +Xu, Xue, Xue, Xue, Rb^Es, Uue, Rb^Es, Uue, Rb^Es, Rb^Es, Uue, Xue, Uue^Uf, Rb^Es, Uue^Dr, Uue^Uf, Uue^Dr, Rb^Es, Uue, Ww, Ww^Es, Uh, Cud^Es, Uu, Uu, Xu, Xu, Xu, Uh, Rb^Es, Uh, Uh, Xu, Uu^Em, Uu^Em, Ur^Es, Uh, Xu, Xu, Cud^Es, Cud^Es, Urb, Urb, Urb^Es, Urb^Es, Cud, Cud, Cud^Dr, Urb, Uu^Es, Uu^Dr, Xu, Xu, Xu, Ai +Uu, Xu, Rb^Es, Uue, Xu, Uue^Dr, Uh^Es, Rb^Es, Rb^Es, Uue, Uue, Rb^Es, Uue, Uue^Uf, Uue, Uue, Qxe, Rb^Es, Uue^Dr, Rb^Es, Ai^Es, Xu, Xu, Ur^Es, Uh, Xu, Xu, Uh, Ur^Em, Uh^Uf, Uh, Xu, Rb^Es, Ur^Es, Xu, Xu, Xu, Xu, Cud^Es, 1 Kud, Cud^Es, Urb^Es, Urb^Es, Urb^Es, Urb^Es, Urb, Urb, Urb, Urb, Urb, Uu^Wyb, Xu, Xu, Xu, Xu +Xu, Ur^Es, Xue, Xu, Xue, Xu, Xue, Uh^Es, Uh^Es, Rb^Es, Uh^Es, Uue, Xue, Xue, Uue^Uf, Uue^Uf, Uue^Dr, Uue^Uf, Uue^Wyb, Xue, Xue, Ww^Es, Xu, Uh^Wyb, Uh, Uh, Rb^Es, Rb^Es, Uu^Dr, Uh, Uu, Ur^Es, Uu^Wyb, Ur^Wyb, Xu, Xu, Xu, Cud, Urb^Es, Cud^Es, Urb^Es, Cud^Dr, Cud, Urb, Cud, Urb, Urb, Urb, Urb^Dr, Uu^Es, Xu, Xu, Xu, Xu, Xu +Xue, Xue, Xue, Xue, Uue^Vu, Xue, Uue^Wyb, Xue, Xue, Uh^Wyb, Xu, Uh^Es, Rb^Es, Xue, Uue^Uf, Uue^Dr, Uue, Uue^Uf, Xue, Xue, Ai^Es, Ai^Es, Xu, Xu, Xu, Uu^Dr, Rb^Es, Uu^Dr, Rb^Es, Xu, Xu, Xu, Xu, Xu, Uh^Wyb, Xu, Cud^Dr, Cud, Urb, Urb^Es, Urb, Urb^Es, Urb, Cud, Kud, Cud, Urb^Es, Urb^Es, Uu^Es, Uu^Es, Uu^Wyb, Xu, Xu, Xu, Xu +Xue, Xue, Xue, Xue, Uue^Dr, Uue, Rb^Es, Xue, Rb^Es, Xue, Uue, Uh^Es, Xu, Uue^Vu, Xue, Uue^Wyb, Xue, Xue, Xue, Ai, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uu, Xu, Uu^Vu, Uh, Uh^Es, Uh, Ur^Es, Uu^Es, Ur, Ur, Ur^Es, Urb, Urb, Urb^Es, Cud^Dr, Cud, Cud, Cud, Cud^Dr, Uu^Es, Uu^Vud, Uu, Xu, Xu, Uh^Wyb, Xu, Xu +Xue, Xue, Xue, Rb^Es, Rb^Es, Qxe, Uue, Rb^Es, Uue^Wyb, Uue, Xue, Xue, Xue, Xue, Xue, Xue, Ai, Xue, Ai, Ai^Es, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Dr, Ur^Es, Ur^Es, Ur^Es, Uu, Ur^Es, Ur, Uu^Es, Uu^Es, Uh, Uu, Uh, Ur^Es, Cud^Es, Cud^Dr, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Xu, Uh, Uu^Vud, Xu, Xu +Xue, Xue, Xue, Uue^Dr, Uue^Dr, Qxe, Uue^Vu, Xue, Xue, Xue, Xue, Xue, Ai, Ai, Ai^Es, Ai^Es, Xu, Ai^Es, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Wyb, Uu, Ur^Es, Uu, Uh, Uu^Es, Uh, Uh, Uu, Uh^Es, Xu, Cud^Es, Xu, Xu, Xu, Xu, Uh^Vud, Ur^Wyb, Ur, Uu, Xu, Uu, Uu, Ur, Uu^Wyb, Uu^Wyb, Xu +Xue, Xue, Xue, Xue, Xue, Uue^Wyb, Xue, Xue, Xue, Xue, Ai, Ai, Xue, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Xu, Uu, Xu, Uh, Xu, Uh^Wyb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xue, Xu, Xue, Xu, Xue, Xu, Xu, Xue, Ai, Ai, Xue, Xu, Xue, 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 diff --git a/data/campaigns/Secrets_of_the_Ancients/maps/19_Lava_and_Stone.map b/data/campaigns/Secrets_of_the_Ancients/maps/19_Lava_and_Stone.map new file mode 100644 index 000000000000..25f0864d7b38 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/19_Lava_and_Stone.map @@ -0,0 +1,43 @@ +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, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Ur, Uu, Uu, Uu, Uu, Xu, Ur, Ur, Ur, Ur +Qlf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ql, Ql, Ql, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Vud, Uu, Xu, Xu, Xu, Ur, Ur, Uu, Ur, Ur, Xu, Xu, Xu, Xu +Qlf, Qlf, Qlf, Qlf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ql, Ql, Ql, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Uu, Xu, Xu, Xu, Cud, Cud, Ur, Uu, Uu, Xu, Xu, Xu, Xu +Xu, Qlf, Qlf, Qlf, Qlf, Xu, Xu, Xu, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Uh, Ur, Uu^Vud, Uu^Vud, Xu, Xu, Xu, Xu, Xu, Uh, Xu, Uu, Cud, Cud, 1 Kud, Cud, Uu, Xu, Xu, Xu, Xu +Xu, Qlf, Xu, Qlf, Qlf, Qlf, Qlf, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Xu, Ql, Ql^Bs/, Ur, Ql, Ql, Ql, Xu, Xu, Xu, Xu, Xu, Uh, Uu, Ur, Ur, Uu, Cud, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Qlf, Qlf, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ur, Ur, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Uh, Uh, Uh, Uh, Ur, Uh, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Qlf, Qlf, Ql, Ql, Uh, Xu, Xu, Xu, Xu, Xu, Uu, Ql^Bs/, Ql, Uu, Uu, Ql, Ql, Ql, Ql, Ql, Ql, Uu, Ur, Ur, Ur, Ur, Uh, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Qlf, Qlf, Qlf, Xu, Xu, Xu, Uh, Uh, Uh^Vu, Uh, Uh, Ur, Ql, Ql, Ql, Ql, Uu, Ur, Uu, Ur, Ql, Ql^Bs/, Ur, Ql, Uu, Ur, Uh, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Qlf, Cud, Cud, Cud, Uu, Uu, Uh, Ur, Ur, Uu, Uu, Uu, Ql, Ql, Ql, Ql, Ur, Uh, Uh, Uh, Ur, Ql, Ql, Ql, Ql, Ur, Uu, Uh, Ql, Ql, Xu, Uu^Vud, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Cud, Uu, 2 Kud, Uu, Uu, Uh, Ur, Uh, Uu, Ur, Ur, Uh, Uu, Ql^Bs\, Ql, Ql, Uh, Uh, Uh, Uh, Uu^Vud, Ql, Ql, Ql, Ql, Ur, Uu, Ql, Ql, Ql, Ql, Ql, Ur, Ur, Xu, Xu, Xu +Xu, Xu, Xu, Cud, Uu, Ur, Uu, Uh, Xu, Xu, Uh, Uh, Uh, Uu, Ur, Ql, Ql, Uu, Uu, Uu, Uh, Xu, Xu, Uh, Uu, Ql, Ql^Bs/, Uu, Uh, Xu, Ql, Ql, Ql, Ql, Ql, Ql, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Uu, Ur, Ur, Uu, Uh, Uh^Vu, Xu, Uh, Uh, Xu, Uh, Ql^Bs\, Ql, Ql, Ql, Uu, Uh, Uh, Xu, Uh, Uh, Uh, Uh, Ql, Uu, Ur, Uu, Ql^Bs\, Ql, Ql, Ql, Ql, Ql, Ql, Xu, Ql, Xu +Xu, Xu, Xu, Xu, Uh, Uu, Uu, Ur, Uu, Uh, Ur, Xu, Xu, Ql, Ql, Ql^Bs\, Ql^Bs\, Ql, Uu, Uu, Uu, Uh, Uh, Uh, Ur, Ur, Ql, Ql, Ql, Ql, Ql, Ql^Bs\, Uu, Uh, Xu, Ql, Ql, Ql, Ql, Ql +Xu, Xu, Xu, Xu, Xu, Uh, Uh, Ur, Uu, Uh, Xu, Xu, Xu, Ql, Ql, Ql, Xu, Uu, Ql, Ql, Uu, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ur, Uu, Uu, Uh, Uu^Vud, Xu, Xu, Ql, Ql, Ql +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uh, Uh, Uh, Xu, Uh, Ql, Ql, Ql, Xu, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Uu, Uu, Uu, Ur, Uu, Ur, Uh, Xu, Xu, Xu, Xu, Ql +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Uu, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ql, Ql, Ql, Ql, Ql, Ql, Ql, Uh, Uh, Uh, Uu, Uu, Ur, Uu, Uh, Uh, Uh, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Ur, Ur, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uh, Uh, Uh, Uh, Uu, Ur, Uh, Uh, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Uu, Uu, Uh, Xu, Uh, Xu, Uh, Xu, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Xu, Uh, Uh, Ur, Uh, Uh, Uh^Uf, Uh, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uh, Uh, Ur, Ur, Uu, Uh, Uh, Uu, Uh, Uu, Uh, Uu, Uh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Xu, Uh^Vu, Xu, Uh^Uf, Uh^Uf, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uh^Vu, Uh, Uu, Ur, Uu, Uu, Uu, Uu, Ur, Ur, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Uf, Wwg, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Qxu, Qxu, Xu, Xu, Uh, Uh, Uh, Uu, Ur, Uu, Ur, Qxu, Ur, Qxu, Qxu, Qxu, Qxu, Qxu, Uu, Uh, Uu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Wwg, Wwg, Wog, Wwg, Uh^Uf, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Qxu, Qxu, Uh, Uh, Uh, Uu, Uu, Qxu^Bs\, Qxu^Bs\, Ur, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Uh, Uh, Uu, Uu, Uu, Xu, Xu, Xu, Wwg, Wog, Wog, Wog, Wwg, Wwg, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Qxu, Qxu, Uh, Uu, Qxu, Qxu, Uu, Ur, Qxu, Ur, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Qxu, Uh^Vu, Uu, Uu, Uu, Xu, Uh^Uf, Wwg, Wwg, Wog, Wwg, Wog, Wwg, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uu, Qxu, Qxu, Qxu, Uu, Uu, Uu^Vu, Uu, Uu, Ur, Qxu, Qxu, Qxu, Qxu, Uh, Qxu, Qxu, Qxu, Uu, Uu, Uu, Uh, Uh^Uf, Uh^Uf, Uh^Uf, Wwg, Uh^Uf, Wwg, Uh^Uf, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Qxu, Qxu, Uh, Uu, Ur, Uu, Ur, Uu, Uu, Uu, Uu, Qxu, Ur, Uh, Uu, Uu, Uu, Qxu, Uu, Uu, Uh, Uh, Uu, Uu, Uh^Uf, Uh^Uf, Uh^Uf, Uh^Uf, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Uh, Uu, Qxu, Qxu, Uh, Uh, Uh, Uh, Uu, Uu, Ur, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uh, Uh, Uh, Uh, Uh, Qxu, Uu^Uf, Uh, Uu^Vu, Uh^Uf, Uh, Uh, Xu, Xu, Xu +Xu, Xu, Uh, Uh, Ur, Qxu, Uh, Uu, Uh, Uh, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Uu, Uu, Cud, Cud, Cud, Uu, Uu, Uu, Uu, Uh, Uh, Uh, Uu, Ur, Qxu, Qxu, Uu, Qxu, Uh, Uh, Xu, Xu, Xu +Xu, Xu, Uu, Uh, Uh, Ur, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Uu, Xu, Uu, Uu, Cud, Cud, Cud, Xu, Xu, Xu, Uh, Uu, Uh, Uh, Uu, Ur, Qxu, Qxu, Qxu, Qxu, Qxu, Xu, Xu, Xu, Xu +Xu, Xu, Uh, Uh, Uu^Vu, Uh, Uu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Uu, Xu, Uu, Uu, Cud, 3 Kud, Cud, Xu, Xu, Xu, Uu, Uu, Uu, Uh, Uu, Uu, Ur, Uu, Qxu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Uh, Xu, Uu, Xu, Xu, Uu, Xu, Ur, Uu, Ur, Ur, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Xu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Ur, Ur, Uu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Xu, Uu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Uu, Wwg, Wwg, Wwg, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Qxu, Xu, Xu, Xu, Qxu, Qxu +Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Ur, Wwg, Uu, Ur, Uu, Wwg, Xu, Xu, Xu, Xu, Ur, Ur, Ur, Ur, Ur, Ur, Uu, Uu, Qxu, Uu, Ur, Ur, Uu, Uu, Qxu, Qxu, Xu, Qxu, Qxu, Qxu, Xu, Qxu +Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Wwg, Wwg, Uu, Uu^Vu, Uu, Wwg, Wwg, Wwg, Wwg, Uu, Wwg, Uu, Uu, Ur, Qxu, Qxu, Qxu, Qxu, Qxu, Uu, Ur, Uu, Qxu, Qxu^Bs\, Uu, Uu, Uu^Vu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Wwg, Wwg, Xu, Uu, Uu, Uu, Uu, Ur, Ur, Wwg, Wwg, Uu, Uu, Uu, Uu, Qxu, Qxu, Qxu, Uu, Qxu, Qxu, Qxu, Qxu, Qxu, Uu, Ur, Cud, Cud, Ql, Ql, Xu, Xu +Xu, Xu, Xu, Uu, Uu, Xu, Uu, Xu, Xu, Wwg, Xu, Xu, Xu, Xu, Xu, Uu, Uu, Uu, Uu, Wwg, Wwg, Xu, Xu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Uu, Ur, Cud, 4 Kud, Ql, Ql, Xu, Xu +Xu, Xu, Xu, Uu, Uu, Xu, Uu, Xu, Xu, Wwg, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwg, Xu, Uu, Uu, Uu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Uu^Vu, Uu, Cud, Xu, Ql, Xu, Xu +Xu, Xu, Uu, Uu, Xu, Xu, Xu, Xu, Xu, Wwg, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwg, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Uu, Uu, Xu, Xu, Xu, Xu, Xu, Xu, Wwg, Wwg, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwg, Wwg, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu 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 new file mode 100644 index 000000000000..f040d169c705 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map @@ -0,0 +1,38 @@ +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 +Xu, Xu, Xu, Uh^Crys, Uh^Vud, Xu, Uh^Crys, Uh^Crys, Uu, Uh^Crys, Uu, Uh^Dr, Uu^Br/, Ur^Br/, Xu, Xu, Uu, Uu^Br\, Ur^Br/, Ur^Br\, Ur^Br\, Uh^Crys, Uu, Xu, Uh^Dr, Uh^Br|, Uh^Dr, Xu, Uu, Xu, Xu, Ur^Xo, Ur^Kov, Ur^Kov, Ur^Kov, Ur^Xo, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Uh^Dr, Uu, Uu, Xu, Xu, Ur, Uu, Xu, Xu, Uh^Crys, Xu, Uu^Vud, Xu, Xu, Ur, Uh^Br|, Xu, Xu, Uu^Br\, Uu^Br\, Uu, Uu^Br/, Ur^Br/, Uh^Crys, Ur, Uu, Xu, Ur^Xo, Xu, Ur^Kov, Ur^Qov, Ur^Kov, Xu, Ur^Xo, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uh^Crys, Uh^Br\, Uh^Br\, Uu, Xu, Uu, Uh^Crys, Uu, Uh^Crys, Uh^Crys, Uu, Uh, Ur^Br\, Uu, Uh^Br/, Uu^Br\, Uu^Br\, Xu, Xu, Uu, Ur, Uu^Br/, Uu^Br|, Ur^Vud, Xu, Xu, Uu, Xu, Xu, Ur^Xo, Ur^Kov, Ur^Kov, Ur^Kov, Ur^Xo, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Uh^Crys, Uu, Uu^Br|, Xu, Uu, Uu^Crys, Ur, Ur^Br\, Uh^Crys, Ur^Br/, Uu^Br/, Uh^Dr, Uh^Br\, Uh^Crys, Uu, Uu^Crys, Ur^Br\, Ur, Ur, Uh^Crys, Xu, Uh^Br\, Uu, Xu, Uh, Xu, Xu, Ur^Xo, Xu, Ur^Kov, Ur^Qov, Ur^Kov, Xu, Ur^Xo, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uh^Crys, Uu, Uu, Uu^Br|, Xu, Xu, Uh^Br/, Uu^Br/, Xu, Uh^Br\, Uh, Uh^Br|, Uh^Dr, Uh^Crys, Uh^Crys, Uu^Crys, Uu, Uh^Br|, Ur^Vud, Uh^Crys, Xu, Xu, Uu, Uh^Br|, Xu, Uu, Uh, Xu, Xu, Ur^Xo, Ur^Kov, Ur^Kov, Ur^Kov, Ur^Xo, Xu, Xu, Xu, Xu, Xu, Xu +Wo, Xu, Xu, Uh, Xu, Uh^Br\, Uu^Br|, Uu^Br/, Uu, Uh^Vud, Uh^Crys, Uh^Crys, Xu, Ur^Br|, Uu^Br\, Uh^Crys, Xu, Xu, Uh, Uu^Br|, Uu, Uu, Uu, Xu, Ur^Br/, Uu^Br/, Xu, Ur, Uu, Xu^Pysg, Ur^Kov, Xu, Ur^Kov, Ur^Qov, Ur^Kov, Xu, Ur^Xo, Xu, Xu, Xu, Xu, Xu +Wo, Xu, Xu, Uh^Crys, Uh^Vud, Uu, Uh^Br|, Ur, Xu, Uu, Uh^Crys, Uh^Crys, Uu, Uu, Uh^Dr, Ur^Br|, Uu, Xu, Xu, Ur^Br\, Uh^Br\, Uu, Uh^Br/, Ur^Br/, Ur^Br\, Xu, Uh^Vud, Xu, Ur, Uu^Xo, Xu^Pysg, Ur^Xo, Ur^Kov, 1 Ur^Kov, Ur^Kov, Ur^Xo, Xu, Xu, Xu, Xu, Xu, Xu +Wo, Xu, Xu, Xu, Xu, Uh^Crys, Uh^Br|, Uh, Uh^Crys, Ur, Uu, Ur, Uh^Crys, Ur, Uh^Br/, Ur^Br|, Ur, Uu^Crys, Xu, Xu, Uh^Br|, Uu^Br\, Xu, Ur, Uh^Crys, Uh^Br\, Uu^Br|, Xu, Xu, Ur, Uh^Dr, Xu, Urb, Ur^Kov, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Wo, Wo, Xu, Uh^Br/, Uh^Br/, Xu, Uh, Uu, Ur, Uh, Xu, Xu, Uh^Dr, Xu, Uh^Crys, Uu, Ur, Uu^Crys, Xu, Uu^Br|, Uh^Crys, Uu, Uh, Uh^Crys, Uh, Uh^Br\, Xu, Xu, Ur, Uh^Br|, Xu, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uh, Wo^Br/, Wo, Xu, Xu, Uh^Vud, Uh, Uu, Uh^Crys, Uu, Xu, Xu, Uh, Uh^Crys, Uh^Vud, Uu, Xu, Xu, Uh^Br|, Uh^Crys, Uu^Crys, Xu, Uh^Crys, Uh^Crys, Xu, Uu^Br|, Xu, Uu, Uu^Br|, Xu, Xu, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uh^Crys, Uh^Br|, Xu, Wo, Wo, Xu, Sm^Uf, Uh, Uh, Uh^Crys, Uh^Crys, Uh^Crys, Uh^Crys, Uu, Uu, Ur, Xu, Xu, Uu^Br\, Uh^Vud, Uh^Crys, Uh, Uh, Uh^Crys, Xu, Uu^Br\, Uu, Uh^Dr, Uu^Br|, Xu, Xu, Urb, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Uh^Br|, Uh, Xu, Wo^Ii, Xu, Ss^Ii, Sm^Emf, Sm^Uf, Rb^Em, Uu, Uu, Uh^Crys, Ur, Uh, Xu, Xu, Uh^Crys, Uh, Uh^Br\, Uh^Br\, Ur, Xu, Xu, Uh^Br/, Uh^Br|, Uu^Br\, Uu, Uh^Br/, Xu, Xu, Urb, Urb^Xo, Xu, Xu, Xu, Xu, Xu, Xu, Xu +Xu, Xu, Uh^Crys, Uh^Br|, Uh^Vud, Xu, Ww^Ii, Ss^Ii, Rb^Uf, Sm^Uf, Sm^Em, Rb^Uf, Uh, Rb^Uf, Uh, Uu, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Br\, Uu^Br/, Ur^Br/, Uu^Crys, Uh^Vud, Uh, Uh^Br/, Xu, Xu, Urb, Urb^Gyto, Xu, Xu, Uh, Xu, Uh, Xu, Xu, Xu +Xu, Xu, Uh^Br/, Uh^Br|, Xu, Ww, Ww, Xu, Sm^Uf, Rb^Uf, Rb^Uf, Rb^Uf, Rb^Em, Uh, Xu, Uu, Ur, Uu, Uu, Xu, Xu, Xu, Xu, Uh^Crys, Uh^Crys, Uh^Crys, Uh^Crys, Uh, Uu, Uh^Crys, Xu, Xu, Urb, Urb, Xu, Uh^Vu, Xu, Uh, Xu, Xu, Xu, Xu +Xu, Xu, Uh^Br|, Xu, Ww, Ww, Xu, Xu, Sm^Uf, Sm^Emf, Sm^Uf, Rb^Uf, Uu, Ur, Xu, Xu, Xu, Ur, Ur, Xu, Xu, Xu, Xu, Uh^Crys, Xu, Uh, Xu, Uu, Xu, Xu, Urb, Urb, Xu, Xu, Xu, Xu, Xu, Uh^Crys, Uh, Xu, Xu, Xu +Xu, Xu, Xu, Uh^Br\, Ww^Br\, Xu, Xu, Xu, Xu, Sm^Uf, Sm^Uf, Sm^Uf, Uh^Crys, Ur, Ur, Xu, Xu, Ur, Urb^Vud, Urb, Urb, Xu, Urb^Vud, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Urb, Xu, Xu, Xu, Wwt, Wwt, Wwt, Xu, Uh, Xu, Xu, Xu +Xu, Xu, Xu, Ww, Xu, Uh^Br\, Uh^Br|, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Ur, Ur, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Xu, Xu, Xu, Urb, Urb, Xu, Xu, Wwt, Wwt, Wot, Wot, Wot, Wwt, Wwt, Xu, Xu, Xu +Xu, Xu, Xu, Ww, Xu, Xu, Uh^Br\, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Wwt, Wot, Wot, Wo^Ii, Wo^Ii, Wot, Wwt, Wwt, Xu, Xu +Xu, Xu, Ww, Ww, Xu, Xu, Uh^Br|, Xu, Xu, Xu, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xu, Xu, Xu, Xu, Wwt, Wwt, Wot, Wot, Wot, Wwt, Xu, Xu, Xu +Ww, Ww, Xu, Xu, Xu, Xu, Uu^Br/, Xu, Xu, Xu, Urb, Urb^Vud, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb^Vud, Urb, Xu, Xu, Xu, Xu, Wwt^Bsb|, Wwt, Wwt, Xu, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Uu^Br/, Uu^Br/, Xu, Xu, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb^Vud, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Xu, Xu, Ur, Ur, Xu, Ur, Ur, Xu, Xu +Xu, Xu, Uu^Br|, Uu^Br/, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Ur, Xu, Ur, Ur, Ur, Xu, Xu +Xu, Xu, Uu^Br|, Xu, Urb^Vud, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Cud, Xol, Cud, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb^Vud, Xu, Uh, Xu, Xu, Xu +Xu, Xu, Uu^Br|, Xu, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb^Vud, Urb, Urb, Cud, Xol^Cov, Cud, 2 Kud, Cud, Xol^Cov, Cud, Urb, Urb, Urb^Vud, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Xu, Uh, Xu, Xu, Xu +Xu, Xu, Uu^Br|, Xu, Urb^Vud, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Cud, Urb, Cud, Xol, Cud, Urb, Cud, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb^Vud, Xu, Xu, Uh, Xu, Xu +Xu, Xu, Uu^Br|, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Cud, Urb, Cud, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xu, Xu, Uh, Uh, Xu, Xu +Xu, Xu, Xu, Uu^Br\, Uu^Br\, Xu, Xu, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb^Vud, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Xu, Xu, Uu, Uu, Uh^Crys, Xu, Xu, Xu +Xu, Xu, Xu, Xu, Xu, Uu^Br\, Uu^Br\, Xu, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Urb, Xol, Urb, Urb, Urb, Urb, Urb, Xu, Ur, Xu, Xu, Uh, Xu, Xu, Xu, Xu, Xu +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^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/maps/21_Against_the_World.map b/data/campaigns/Secrets_of_the_Ancients/maps/21_Against_the_World.map new file mode 100644 index 000000000000..4295f7d9ef36 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/maps/21_Against_the_World.map @@ -0,0 +1,48 @@ +border_size=1 +usage=map + +Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ds, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ds, Gd, Ds, Ds, Ds, Ds, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo^Vm, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Ww, Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Gs^Vh, Gs, Gd^Fp, Gs^Fp, Gs^Fp, Ds, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Ww, Ww, Gs^Vh, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo^Vm, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Ww, Ww, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww^Bw\, Ww, Ds, Ww, Gs, Gs, Ds, Wo^Bw/, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Chw, Chw, 7 Khw, Chw, Chw, Wo, Wo, Wo, Wo, Wo, Ww, Gs^Vh, Gs^Fp, Gg, Gs^Fp, Gs^Vl, Ds, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Chw, Ww, Chw, Wwr, Wwr, Wo, Wo, Wo, Wo, Wo, Ww, Ww, Gs^Fp, Ds, Ds, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo +Ww, Ww, Ww, Ww, Ds, Ww, Ds, Ds, Ds, Ww, Ds, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Ds, Ds, Ds, Ww, Ww, Ww^Vm, Ww, Ww, Ww, Ww, Ww, Wo, Ww, Wo, Ww, Wo, Wo, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Ww, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo +Ds, Ww, Ds, Ds, Gg, Ds, Gg^Es, Ds, Rd, Ds, Rd, Gg^Es, Gg, Gg, Ds, Ww, Ww, Ww, Ds, Gg, Gg, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Wwr, Wo, Ww, Wo, Ww, Wo, Wo, Wo, Ww, Wo, Ww, Ww, Ww, Ww, Ds, Ww, Ww, Ww, Ww, Wo, Wo, Wo +Gg, Ds, Gs, Gg, Gg, Gg, Gs, Gg^Es, Re, Rd, Re, Gs^Es, Gs, Gg^Vh, Gg, Ds, Ds, Ds, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Gg, Ds, Gg, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ds, Ww, Ds, Ww, Ds, Ww, Ds, Ww, Ds, Ww, Ww, Ww, Ww, Ww, Ds, Ds, Ds, Ds, Ds, Ww, Ww^Vm, Ww, Wo, Wo +Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gs, Re, Re, Re, Gs, Gg, Gs, Gs, Gg, Gs, Gs, Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Ds, Gs, Ds, Gs, Ds, Gg, Ds, Gg, Ds, Ds, Ds, Gg, Ds, Gg, Ds, Ds, Ds, Ds, Ds, Gg, Ds, Gg, Ds, Ds, Ds, Ww, Ww, Wo, Wo +Gg, Gs, Gg, Gs, Gs, Gs, Gs, Gs^Vh, Gs, Re, Re, Re, Gs, Gs, Gg, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh^Fp, Gs, Hh^Fp, Gs, Gg, Gs, Gs, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ds, Ww, Wo, Wo, Wo +Gs, Gg, Gs, Gs, Ce, Gg, Gs, Gs, Gg, Gs, Re, Re, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Hh^Fp, Gg, Gg, Hh^Fp, Gs, Gs, Gs^Vc, Gs, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Mm, Hh, Hh, Gg, Gs, Gs, Gg, Gs, Gg, Ds, Ww, Wo, Wo, Wo +Gs, Gg, Gs, Ce, 5 Ke, Ce, Gs, Gs, Gs, Gs, Re, Re, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg^Fp, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs^Vc, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gg, Gg, Hh^Fp, Hh^Fp, Mm, Mm, Mm, Hh^Fp, Hh, Gg, Gs, Gg^Fp, Gg^Fp, Gg^Fp, Ds, Wo, Wo, Wo, Wo +Re, Re, Re, Ce, Ce, Ce, Re, Gs, Re, Re, Re, Re, Re, Gs, Gd, Gs, Gs, Gs^Fp, Gs^Fp, Gs^Fms, Gs, Gs, Gs, Gs, Gg, Gg, Gg^Fp, Gs, Gs, Gd, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Hh, Hh^Fp, Hh, Gg^Fp, Hh, Gg, Gg^Ve, Gg, Gg^Fp, Ww, Ww, Wo, Wo, Ww, Ww +Gg, Gs, Gg, Re, Re, Re, Gs, Re, Gs, Gs, Gs, Re, Re, Gs, Gd, Gd, Gs, Gs, Gg^Fms, Gs^Fp, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gd, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Fp, Gg^Fp, Ss, Ww, Ww, Ww^Vm, Wo, Ww, Ww +Gg, Gs, Gs, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Re, Re, Gs, Gs, Gd, Gs, Gs, Gs, Gs, Gs, Gs^Vl, Gs, Gs, Gs, Gs, Gd, Gs, Gd, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gd, Gs, Gs, Gs^Vht, Gs, Gg, Gll^Fp, Gg, Gll^Fp, Ss, Ss, Gll^Fp, Ss, Ww, Ww, Wo, Wo, Ww, Ww, Gg^Fp, Gg^Fp +Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Re, Re, Re, Re, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gd, Gd, Gd, Gd, Gs, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gg^Em, Ss, Sm, Ss, Ss, Gg^Em, Ss, Gs^Fms, Ss, Ww, Ww, Wo, Wo, Ww, Gg^Fms, Gg^Fp, Gg^Fp +Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gd, Gd, Gd, Gd, Re, Re, Re, Re, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gg^Fp, Gg, Gg, Gg, Gs, Gs, Gs, Gg, Gg, Gg, Ss, Ss, Ss, Sm, Ss, Chs, Chs, Chs, Ss, Ww, Wo, Wo, Wo, Ww, Gg^Fms, Gs^Fds, Gg, Gg +Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gd, Gd, Gs, Gs, Gd, Gd, Re, Re, Gs, Gs, Gd, Gs, Gs, Gd, Gs, Gs, Gs, Gs, Gg, Gg^Fp, Gg^Fp, Gg^Fms, Gg^Fp, Gll^Fp, Gg^Fms, Gg, Gg^Fp, Gs, Gs, Gs, Gs, Gg, Ss, Ww, Ss, Ss^Vhs, Ss, Chs, 3 Khs, Chs, Ss, Ww, Ww, Wo, Wo, Ww, Ww, Gg^Fp, Gg^Fp, Gg^Fp, Gg +Gg, Gg, Gs, Gs, Gs, Gs, Gg^Fp, Gg^Fp, Gg^Fp, Gs, Gs, Gd, Gs, Gd, Gs, Re, Re, Re, Re, Gs, Gs, Gs, Gs, Gd, Gs, Gs, Gs, Gg, Gs, Gg^Fp, Gg^Fp, Gg, Gg^Fms, Gs, Gs, Gg^Em, Gg^Fp, Gs, Gg^Fp, Gs, Gg^Em, Sm, Sm, Ww, Gll^Fp, Chs, Sm, Sm, Ww, Ss^Vhs, Wo, Wo, Wo, Ww, Gg^Fp, Gg^Fp, Gg^Fp, Gg, Gg^Fp, Gg^Fp +Gg, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs^Vh, Gs, Gs, Gs, Gs, Gs, Gs, Re, Re, Re, Re, Gs, Re, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Ce, Gg^Fp, Gg^Fp, Gs^Ve, Gg^Fp, Ss, Gg^Fp, Gg^Fms, Gg^Fp, Gg, Ss, Gg^Fp, Gg^Fp, Ss, Ss, Ss, Ww, Ww, Wo, Wo, Wo, Wo, Ww, Ww, Gg^Fp, Gg^Fp, Gll^Fp, Gg, Gg, Gg^Fp +Gg, Gg, Hh, Gg, Gg, Gs, Gs, Gs, Gd, Gs, Gs, Gs, Gs, Gs, Hh, Hh, Hh, Hh^Fp, Hh^Fp, Re, Re, Re, Re, Re, Re, Re, Re, Gs, Ce, Ce, 1 Ke, Ce, Ce, Gg^Fms, Gg, Gg, Gs, Gg, Gg, Gg, Gg^Fp, Ss, Ss, Sm, Ww, Ww, Wo, Wo, Ww, Wo, Ww, Ww, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gg^Fp, Gg +Hh, Hh, Gg, Gg, Mm, Gs, Gs, Gs, Gs, Gd, Gd, Gs, Gg, Hh, Mm, Mm, Mm, Hh^Fp, Hh^Fp, Gs, Gs, Re, Gs, Re, Re, Re, Re, Re, Re, Ce, Ce, Ce, Gg^Fp, Gg^Fp, Gg, Gs, Gs, Gs, Gs^Vht, Gg, Ww, Ss, Ww, Ww, Wo, Wo, Wo, Ww, Gg^Fp, Ww, Gg^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gg^Fp, Gll^Fp, Gg^Fp, Gg^Fp, Gg, Gg^Fp +Gg, Hh, Gg, Mm, Mm, Mm, Mm, Gg, Gs, Gd, Gd, Gs, Gg, Hh, Hh, Mm, Hh, Hh, Gg, Gs, Gs, Gs^Vht, Gs, Gg, Gs, Gs, Gs, Re, Re, Re, Re, Gg, Gg, Gg^Fp, Gg^Fp, Gs, Gs, Gs, Ww, Ww, Wo, Ww, Wo, Wo, Wo, Ww^Vm, Ww, Gg^Fp, Sm^Em, Gg^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg^Fp, Gg, Gg, Gg^Fp, Gg^Fp, Gg +Mm, Hh, Hh, Mm, Mm, Mm, Mm, Gg, Gs, Gs, Gd, Gs, Gg, Gg, Gg, Hh, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gd, Gd, Gs, Gs, Re, Re, Re, Re, Gg, Gg, Gg, Ww, Ww, Wo, Wo, Ww, Wo, Ww, Ww, Wo, Ww, Ss, Gg^Em, Ss, Ww, Gg^Em, Gll^Fp, Gs^Fds, Gs^Fds, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm, Mm, Hh^Vhh, Hh, Mm, Mm, Mm, Gs, Gs, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Gg^Vh, Re, Re, Re, Ww, Ww, Wo, Wo, Ww, Ww, Gg^Fp, Ww, Gg^Fp, Ss, Wo, Ww, Gg^Fp, Ss, Ss, Sm^Em, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp, Gll^Fp, Gg^Fp, Gll^Fp, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gs, Gs, Mm, Gg, Gg, Hh^Fp, Hh^Fp, Gg, Gs, Gs, Gs, Hh, Hh, Gg, Gs, Gs, Gg^Fp, Gs, Ww, Gg^Fp, Ww, Ww, Wo, Wo, Wo, Ww^Bsb\, Ww^Bsb\, Wo, Gg, Gg, Gg, Gg^Fms, Gs^Fds, Gg^Fp, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Gll^Fp, Ss, Gg^Ve, Gg^Fms, Gg^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fds, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Mm, Gs, Mm, Gg, Hh, Hh, Hh^Fp, Hh, Hh, Gs, Hh, Hh, Ww, Gg, Ww, Gg^Fp, Ww, Ww, Wo, Ww, Wo, Wo, Gg, Ww, Ww, Wo, Re, Re, Re, Gg, Gs, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Gll^Fp, Ss, Gg, Gg^Fp, Gg^Fp, Gg^Fet, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Wo, Wo, Wo, Ww, Ww, Mm, Mm, Hh, Hh, Mm, Hh, Hh, Hh, Hh^Fp, Hh, Hh, Wo, Hh, Ww, Ww, Wo, Ww, Wo, Ww^Vm, Gg^Fp, Wo, Gg^Fp, Wo, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Re, Re, Gs, Gs^Ve, Gg, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww^Bh|, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Hh, Wo, Gg, Gg, Gg, Gg^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gg, Hh^Fp, Gg, Gg, Gg, Gg, Re, Re, Re, Gs, Gg^Fp, Gg, Ss, Ww, Ww, Gg^Fms, Gll^Fp, Gll^Fp, Gll^Fp, Gg^Fp, Gg, Gg^Fp, Gll^Fp, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Mm, Ww, Mm, Ww, Mm, Ww, Hh, Ww, Mm, Ww, Hh, Hh, Hh^Fp, Hh, Hh, Gg, Gg, Gg, Gg, Gs, Gs, Gg, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Hh^Fp, Gs, Gg, Gs, Gg, Re, Re, Gs, Gll^Fp, Gg^Fms, Gg^Fp, Gg^Fp, Ww, Ww, Gg^Fp, Gg^Fp, Gll^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fet, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm^Vud, Mm, Mm, Hh, Mm, Mm, Mm, Hh, Hh, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh^Fp, Hh^Fp, Gs, Gg, Gg, Gs, Gd, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gg, Re, Re, Re, Gg^Fp, Gg^Fp, Gll^Fp, Gg, Ww, Ww, Ww, Gg, Gg^Fp, Gg^Fp, Gs^Fds, Gg^Fet, Gs^Fds, Gg^Fp, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Gg, Mm, Mm, Mm, Mm, Gg, Mm^Vud, Mm, Mm, Gg, Hh, Gg, Gs, Gs, Gs, Hh^Fp, Gg, Gg, Gs, Gs, Gg, Gg, Gs, Gs, Gs, Gg, Gs, Gs, Gs, Gs, Gs, Gs, Gd, Re, Re, Re, Re, Gg, Gg^Fp, Gg, Gg, Ww, Ww, Gg^Fp, Gg^Fp, Gg^Fds, Cv, Cv, Cv, Gg^Fds, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh^Fp, Hh^Fp, Gs, Gd, Gd, Gs, Hh, Gg, Gg, Hh, Gg, Gs, Gg, Gs^Vh, Gs, Gg, Gs, Hh^Fp, Gg, Gg, Gs, Gs, Gd, Gd, Re, Re, Gs, Gg^Fp, Gg^Fp, Gg, Gg^Ve, Ww, Ww, Gg, Gg^Fds, Cv, 6 Kv, Cv, Gg^Fds, Gg^Fp, Gll^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Ha^Vhha, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Mm, Mm, Mm, Mm, Hh^Fp, Hh, Hh, Gs, Gs, Gd, Gs, Hh^Fp, Hh, Hh, Hh, Gs, Gg, Gs, Gg, Gg, Hh, Hh, Hh^Fp, Gs, Gs, Gd, Gd, Gd, Re, Re, Re, Re, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Ww, Ww^Bw/, Gg, Gg^Fp, Cv, Gg^Fet, Gs^Fds, Gg^Fp, Gg^Fp, Gll^Fp, Gll^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Cud, Cud, Cud, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Hh, Hh, Hh^Fp, Hh, Hh^Fp, Hh, Hh^Fp, Gg, Gs, Gs, Gg, Gs, Gg, Gs, Gs, Gs, Gd, Gd, Gs, Gd, Re, Re, Gs, Gg^Fp, Re, Re, Re, Re, Ww^Bw/, Ww, Ww, Gg, Gs^Fds, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, 4 Kud, Cud, Cud, Mm, Mm, Mm, Gg, Mm, Mm, Mm, Hh, Hh, Mm, Gg, Mm, Mm, Mm, Hh, Gs, Hh, Hh, Hh, Gg, Gs, Gs, Gs, Gg, Hh^Fp, Hh^Fp, Gs, Gs, Gs, Gs, Re, Re, Gg, Gg^Fp, Gg, Gg^Fp, Gll^Fp, Gg^Fp, Gll^Fp, Gg^Fp, Ww, Ww, Gg, Gg, Gg, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm, Mm^Xm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Cud, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Gs, Hh, Gs, Gg, Gs, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Re, Re, Gg^Fp, Gg^Fms, Gs^Fds, Gg^Fms, Gg^Fp, Gg, Gg^Fds, Gg^Fms, Gg^Fp, Ww, Ww, Ww, Gg^Fms, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Cud, Mm^Vud, Hh, Gg, Mm, Mm, Mm, Gg, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Gs, Gs, Gg, Gs, Gs, Gd, Gg, Gs, Gs, Gs, Gg, Gg^Fp, Gg^Fp, Gg, Gg, Re, Re, Gg, Gg, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp, Ss, Gg^Fms, Gg^Fp, Gg, Ww, Ww, Gg^Fp, Gg^Fms, Gg^Fp, Gg^Fp, Gg^Fp +Mm, Mm^Xm, Mm^Xm, Mm, Mm, Mm^Xm, Mm^Xm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh^Vhh, Hh, Gs, Hh^Fp, Hh, Gs, Gg, Gs, Gs, Gs, Gg, Gg, Gg^Fp, Gg^Fp, Gg^Ve, Gg^Fp, Gg, Re, Re, Gg, Gg^Fp, Gg, Gg^Fp, Gg, Gg, Gg, Gg^Fet, Gg^Fp, Gg^Fms, Gg^Fp, Gg^Fp, Ww, Ww, Gg^Fp, Gg^Fp, Gg^Fp +Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm, Mm^Vud, Mm, Mm^Xm, Mm^Xm, Mm, Mm, Mm, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gs, Gs, Hh, Gg, Gs, Gg, Ce, Ce, Gs, Ce, Ce, Gg, Gg^Fp, Gg, Gg^Fp, Gg, Re, Re, Gg^Fp, Gg, Gg^Ve, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg, Gs^Fds, Gll^Fp, Gs^Fds, Ww, Ww, Ww, Ww, Ww +Mm^Xm, Mm^Xm, Mm^Xm, Mm, Mm, Mm, Mm, Mm^Xm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Mm, Mm, Hh, Hh, Gg, Gs, Gs, Gs, Gg, Gg, Ce, 2 Ce^Kov, Ce, Gs, Gs, Gg, Gs, Gg, Gd, Re, Re, Gg^Fp, Gg^Fp, Gg, Gg, Gg, Gg^Fms, Gll^Fp, Gg^Fp, Gg^Fms, Gg, Gll^Fp, Gs^Fds, Gs^Fds, Gg, Gg^Fp, Gg^Fp, Ww +Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm^Vud, Mm, Mm, Mm, Mm, Mm, Hh, Hh, Gs, Gg, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gd, Gd, Re, Re, Gg, Gg, Gg, Gg^Fp, Gg, Gg, Gg^Fp, Gg, Gg^Fms, Gs^Vl, Gg, Gg^Fp, Gg^Fp, Gg^Fp, Gg^Fp, Gg, Gg +Mm, Mm^Xm, Mm, Mm^Xm, Mm, Mm^Xm, Mm^Xm, Mm^Xm, Mm, Mm^Xm, Mm, Mm, Mm, Mm, Gg, Mm, Gg, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gg^Fp, Gg, Gg^Fp, Gg, Gs, Gll^Fp, Re, Re, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Gg^Fp, Gg^Fp, Gg, Gll^Fp, Gg, Gg^Fp, Gg^Fp, Gg, Gg, Gg, Gg 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 new file mode 100644 index 000000000000..7711dc60f0a6 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/01_Slipping_Away.cfg @@ -0,0 +1,356 @@ +#textdomain wesnoth-sota + +# ------------- +# Conventions for SoTA Scenario Files: +# There are four sections to most scenario files. The first is story, map, side +# definitions, and schedule. Then there is prestart, play, and opening/ending. These +# three sections are clearly marked. Prestart just has the prestart event. Opening/ending +# contains most of the dialog and the scenario-ending events. Play has everything else. +# Macros are usually defined right before the event in which they are used. However, if +# they are very long or used in more than one section, they get their own marked section +# just before prestart. If they are used in more than one scenario, they go in sota-utils. +# ------------- + +# The placement of enemies in this scenario is carefully adjusted rather than totally +# random. That's why there are so many macro calls. Also, the enemies can't attack inside +# a fence, and we don't want them to move through the fences on their turn. To get this +# effect, we use a custom terrain overlay ^Fync. It *looks* just like normal fences, but +# it is an alias of Unwalkable. On the AI's turn, we swap it in for all the fences. Then, +# on the players turn, we turn the fences back to normal so that Ardonna can go through +# them. + +[scenario] + name= _ "Slipping Away" + map_data="{campaigns/Secrets_of_the_Ancients/maps/01_Slipping_Away.map}" + + id=01_Slipping_Away + next_scenario=02_Dark_Business + victory_when_enemies_defeated=no + [story] + [part] + [background_layer] + image=story/black-background.png + scale=yes + base_layer=yes + [/background_layer] + [image] + x,y=400,200 + centered=yes + file=story/book.png + [/image] + title= _ "Chapter One: Unlawful Research" + show_title=yes + title_alignment=left + story= _ "From the Journal of Ardonna of Tarrynth + +9 XII, 22 YW: + +It’s unfair that we humans must die after so few years. Elves and dwarves live far longer. Though this may be the natural order, we need not embrace it! The lords on the Green Isle knew how to live forever. Pursuit of that knowledge was declared illegal by King Haldric I, but I believe it is worth the risk. As I watched my family waste away of various maladies, I vowed that I would not share their fate, and if I can rediscover the secrets of the ancients I will be a hero to the whole continent! I shall begin research in earnest this winter." + [/part] + [part] + [background_layer] + image=story/room1.jpg + scale=no + [/background_layer] + story= _ "26 II, 23 YW: + +My experiments with bats have proven unfruitful. I have determined that they do not truly drain the life force of their victims — it is an illusion. The loss of blood weakens the victim, while the bat gains vitality because it has fed. There is nothing I can learn from bats about extending life. Now I have a problem. I am forced to keep the bats and pretend they are my pets because I cannot admit why I was studying them. In truth, it is not a burden — I have grown somewhat fond of the creatures, and I don’t mind appearing eccentric. I am already marked as different because my hair is so light, and I lack a sense of smell." + [/part] + [part] + [background_layer] + image=story/room2.jpg + scale=no + [/background_layer] + story=_ "4 III, 23 YW: + +Today, headmaster Aimucasur himself taught a class on moving objects with one’s mind. The technique involves projecting one’s will inside the item, and then learning to move it as an extension of the body. Incantations focus the mind to the task. We practiced with inanimate objects, but clearly the same principle could be applied to unliving flesh. Nobody dared voice the thought, because showing interest in the necromantic arts results in expulsion. I was pondering that fact in class when I noticed Aimucasur glowering at me. I must be more careful in the future about which of my thoughts appear on my face." + [/part] + [part] + [background_layer] + image=story/room3.jpg + scale=no + [/background_layer] + story= _ "15 III, 23 YW: + +One of my bats must have been old, for it died. Boldly then, I decided to animate the corpse. I was pleased to see that it worked, but what was interesting was this: The first time the bat twitched, I felt a last spark of life energy flash through its body. I noted that it flowed through some kind of pathway. That gave me an idea. With my mind, I searched out all the life force pathways in its body using what I could sense in the living bats as a guide. Then I animated them all at once, and the bat slowly flapped off the floor on its own! (That is a trick old Aimucasur probably doesn’t know!) Even better, the energy running through the life force network seemed to maintain itself, so I didn’t need to continue to concentrate. Could this be the whole secret? Could all the ancient lords have had someone bring them back after death? I would need another mage I trusted completely, but perhaps I can find someone with whom to make a pact." + [/part] + [part] + [background_layer] + image=story/room4.jpg + scale=no + [/background_layer] + story= _ "Later: + +With further observation, I have determined that this is probably not be the way death is avoided. The reanimated bat has no will! It does nothing unless I nudge it with my mind. Perhaps the will of a human is stronger, and someday soon I will have the opportunity to find out...because I’m quitting the Academy. I will be in my room when old Morvihn checks for the night, but not two hours later! I grow weary of this place and its restrictions on thought. So, no more brown initiate’s robes, no more being ridiculed on account of my hair, no more pompous instructors. I will teach myself the so-called “dark” arts and learn how to live forever! The ancients from the Green Isle found a way, so I can discover it too. When all these oldsters here find themselves breathing their last, they will have to beg me for the secret. Perhaps I will be generous. Perhaps not." + [/part] + {JOURNEY_PART 1} + [/story] + + {FIRST_WATCH_HOUR3} + {FIRST_WATCH_HOUR3} + {FIRST_WATCH_HOUR4} + {FIRST_WATCH_HOUR4} + {MIDNIGHT_HOUR} + {MIDNIGHT_HOUR} + {SECOND_WATCH_HOUR1} + {SECOND_WATCH_HOUR1} + {SECOND_WATCH_HOUR2} + {SECOND_WATCH_HOUR2} + {SECOND_WATCH_HOUR3} + {SECOND_WATCH_HOUR3} + {SECOND_WATCH_HOUR4} + {SECOND_WATCH_HOUR4} + {SECOND_WATCH_HOUR5} + {SECOND_WATCH_HOUR5} + {SECOND_WATCH_HOUR6} + {SECOND_WATCH_HOUR6} + {DAWN_HOUR} + {MORNING_HOUR1} + + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 18 19 20} + + [side] + # wmllint: who SIDE_1_ARDONNA is Ardonna + {SIDE_1_ARDONNA} + facing=se + {GOLD 15 5 0} + fog=yes + [/side] + + [side] + side=2 + controller=ai + no_leader=yes + hidden=yes + [/side] + + # *************************** MACROS *************************** +#define PLACE_BAT X Y TRAIT1 + [unit] + type=Vampire Bat SotA + x={X} + y={Y} + side=1 + [modifications] + {TRAIT_{TRAIT1}} + [/modifications] + [/unit] +#enddef + +#define PLACE_WOLF X Y TRAIT1 TRAIT2 SPECIAL + [unit] + type=Wolf + x={X} + y={Y} + side=2 + [modifications] + {TRAIT_{TRAIT1}} + {TRAIT_{TRAIT2}} + [/modifications] + {SPECIAL} + [/unit] +#enddef + +#define PLACE_RAT X Y + [unit] + type=Giant Rat + x={X} + y={Y} + side=2 + [/unit] +#enddef + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Move Ardonna to the signpost" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + + [note] + description= _ "This scenario takes place entirely at night." + [/note] + [/objectives] + + [label] + x,y=39,2 + text= _ "Llorvin" # The name of the town mentioned in the opening. + [/label] + + # Player's starting units: + {PLACE_BAT 5 23 QUICK} + {PLACE_BAT 4 23 RESILIENT} + {PLACE_BAT 4 24 INTELLIGENT} + {PLACE_BAT 5 25 STRONG} + {PLACE_BAT 6 24 RESILIENT} + [unit] + x,y=6,23 + type=Walking Corpse + variation=bat + side=1 + [/unit] + + {PLACE_WOLF 39 4 QUICK RESILIENT ai_special=guardian} + {PLACE_WOLF 35 2 RESILIENT INTELLIGENT ai_special=guardian} + {PLACE_WOLF 17 16 QUICK INTELLIGENT ()} + {PLACE_RAT 26 1} + {PLACE_RAT 38 14} + {PLACE_RAT 24 20} + {PLACE_RAT 28 8} +#ifdef EASY + {PLACE_WOLF 35 4 AGED RESILIENT ()} +#endif +#ifndef EASY + {PLACE_WOLF 24 7 QUICK RESILIENT ()} + {PLACE_WOLF 42 1 STRONG INTELLIGENT ()} + {PLACE_RAT 25 21} +#endif +#ifdef HARD + {PLACE_WOLF 42 25 STRONG RESILIENT ()} +#endif + [/event] + + # *************************** PLAY *************************** + [event] + name=side 2 turn + first_time_only=no + [terrain] + [and] + terrain=*^Eff + [/and] + terrain=^Fync + layer=overlay + [/terrain] + [/event] + + [event] + name=side 1 turn + first_time_only=no + [terrain] + [and] + terrain=*^Fync + [/and] + terrain=^Eff + layer=overlay + [/terrain] + [/event] + + [event] + name=turn 6 + {PLACE_RAT 25 1} + {PLACE_RAT 42 21} + [/event] + + [event] + name=turn 7 + {PLACE_WOLF 10 25 QUICK INTELLIGENT ()} +#ifndef EASY + {PLACE_WOLF 23 1 QUICK STRONG ()} + {PLACE_WOLF 42 21 STRONG RESILIENT ()} +#endif +#ifdef HARD + {PLACE_WOLF 42 22 QUICK RESILIENT ()} + {PLACE_WOLF 15 1 RESILIENT INTELLIGENT ()} +#endif + [/event] + + # This macro is to make rats move out of the castle instead of simply materializing. +#define MOVE_AND_PLACE_RAT X Y + [move_unit_fake] + type=Giant Rat + x=28,{X} + y=16,{Y} + side=2 + [/move_unit_fake] + {PLACE_RAT {X} {Y}} +#enddef + + [event] + name=recruit + + [event] + name=side 2 turn end + {MOVE_AND_PLACE_RAT 27 16} + {MOVE_AND_PLACE_RAT 29 17} +#ifndef EASY + {MOVE_AND_PLACE_RAT 28 15} + {MOVE_AND_PLACE_RAT 29 16} +#endif + [message] + speaker=Ardonna + message= _ "I suspected some of the rats would show themselves." + [/message] + [/event] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=start + [message] + speaker=Ardonna + message= _ "I should get off the island in case the ethics committee is concerned about a rogue mage. I shall not be dragged back in disgrace! I should be able to reach the town of Llorvin before morning. I can hide there until I can head for the dock. I will need some traveling money for that, so go, my bat friends, and find me some gold!" + [/message] + [message] + speaker=Ardonna + message= _ "It would be good to have even more bats as well. There was a colony in that ruined castle where we practiced conjuring fire, so I will try to find that. The castle was also infested with huge rats as I remember, but I can certainly destroy those. I will have to use ice though, as I never mastered fire." + [/message] + {HIGHLIGHT_IMAGE 39 2 "scenery/signpost.png" ()} + [scroll_to_unit] + id=Ardonna + [/scroll_to_unit] + [/event] + + [event] + name=sighted + [filter] + race=wolf + [/filter] + [message] + speaker=Ardonna + message= _ "Wolves! This journey may be more dangerous than I thought. Well, we can find safety inside the sturdy fences built by farmers and woodcutters. The wild animals surely won't be able to enter." + [/message] + [/event] + + [event] + name=moveto + [filter] + id=Ardonna + x,y=39,2 + [/filter] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + [event] + name=time over + + [message] + speaker=Ardonna + message= _ "The morning has come, and I am still in the open. I will be caught for sure!" + [/message] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef PLACE_WOLF +#undef PLACE_BAT +#undef PLACE_RAT +#undef MOVE_AND_PLACE_RAT +[/scenario] 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 new file mode 100644 index 000000000000..e1aff061c3b9 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/02_Dark_Business.cfg @@ -0,0 +1,706 @@ +#textdomain wesnoth-sota + +# Walking corpses are summoned from graves using the right-click menu. Each grave is +# marked by a stone on the map and has its own terrain type. Each can only be used once, +# so a pile of dirt is used to mark one after it is used. After the player captures the +# guardhouse, they can summon skeletons as well, but that ability is lost if the enemy +# units retake it. The opening has some interesting WML to keep Ardonna hidden while +# the guards are talking amongst themselves. It is explained there. + +[scenario] + name= _ "Dark Business" + map_data="{campaigns/Secrets_of_the_Ancients/maps/02_Dark_Business.map}" + + id=02_Dark_Business + next_scenario=03_Bandits + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/cemetery.jpg + scale=no + [/background_layer] + story= _ "16 III, 23 YW: + +I decided to hide in the cemetery. That way I could try my experiment to animate a human body when night fell. With my dark cloak, I resembled the mourners, and with my hood up, nobody could see my hair." + [/part] + {JOURNEY_PART 2} + [/story] + + {FIRST_WATCH_HOUR3} + {FIRST_WATCH_HOUR3} + {FIRST_WATCH_HOUR4} + {FIRST_WATCH_HOUR4} + {MIDNIGHT_HOUR} + {MIDNIGHT_HOUR} + {SECOND_WATCH_HOUR1} + {SECOND_WATCH_HOUR1} + {SECOND_WATCH_HOUR2} + {SECOND_WATCH_HOUR2} + {SECOND_WATCH_HOUR3} + {SECOND_WATCH_HOUR3} + {SECOND_WATCH_HOUR4} + {SECOND_WATCH_HOUR4} + {SECOND_WATCH_HOUR5} + {SECOND_WATCH_HOUR5} + {SECOND_WATCH_HOUR6} + {SECOND_WATCH_HOUR6} + {DAWN_HOUR} + + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 18 18 18} + + [side] + {SIDE_1_ARDONNA} + {GOLD 50 40 30} + facing=se + # The scenario won't be shrouded, but some of the intro dialog is: + shroud=yes + [/side] + + [side] + side=2 + controller=ai + no_leader=yes + user_team_name= _ "Guards" + {FLAG_VARIANT loyalist} + [/side] + + # *************************** MACROS *************************** + + # This menu item macro is used for "recruiting" walking corpses, skeletons, and skeleton + # archers from graves. UNIT is the unit type, UNIT_STRING is similar but has underscores + # and is used for the id and icon filename. GOLD is the cost (a number). +#define SET_MENU_ITEM_FOR UNIT UNIT_STRING GOLD + # We need a varialbe to use in the switch statement: + [set_variable] + name=unit_string + value={UNIT_STRING} + [/set_variable] + # The following sentences could be built from the macro arguments, but that might + # make them impossible to translate properly. So, we use a switch statement instead. + [switch] + variable=unit_string + [case] + value=walking_corpse + [set_variable] + name=description_text + value= _ "Raise Walking Corpse (8 Gold)" + [/set_variable] + [/case] + [case] + value=skeleton + [set_variable] + name=description_text + value= _ "Raise Skeleton (15 Gold)" + [/set_variable] + [/case] + [case] + value=skeleton_archer + [set_variable] + name=description_text + value= _ "Raise Skeleton Archer (14 Gold)" + [/set_variable] + [/case] + [/switch] + [clear_variable] + name=unit_string + [/clear_variable] + + [set_menu_item] + id=raise_{UNIT_STRING} + description=$description_text + image=units/icons/icon-{UNIT_STRING}.png + + [show_if] + [and] + # Show if: This is a grave overlay terrain... + [have_location] + terrain=*^Gryv + x,y=$x1,$y1 + + # ...within 1 hex of the leader... + [and] + [filter] + id=Ardonna + [/filter] + radius=1 + [/and] + [/have_location] + + # ...And there is not a unit here already. + [not] + [have_unit] + x,y=$x1,$y1 + [/have_unit] + [/not] + [/and] + [/show_if] + + [command] + [store_gold] + side=1 + variable=gold + [/store_gold] + + [if] + [variable] + name=gold + less_than={GOLD} + [/variable] + [then] + [message] + speaker=narrator + image=items/gold-coins-message.png + message=_ "You don't have enough gold to raise that unit." + [/message] + [/then] + [else] + [gold] + side=1 + amount=-{GOLD} + [/gold] + [item] # Marks the grave as used. + x,y=$x1,$y1 + image=items/dirt.png + [/item] + [delay] # This makes it a bit animated. + time=400 + [/delay] + [unit] + side=1 + x,y=$x1,$y1 + type={UNIT} + animate=yes + moves=0 + attacks_left=0 + [/unit] + + # Remove the overlay that defines this terrain as a grave: + [terrain] + terrain='' + layer=overlay + x,y=$x1,$y1 + [/terrain] + [/else] + [/if] + [/command] + [/set_menu_item] +#enddef + +#define PLACE_GUARD X Y TYPE TRAIT1 TRAIT2 NAME + [unit] + type={TYPE} + id={NAME} + name={NAME} + x,y={X},{Y} + side=2 + facing=sw + [modifications] + {TRAIT_{TRAIT1}} + {TRAIT_{TRAIT2}} + [/modifications] + [/unit] +#enddef + + # *************************** PRESTART *************************** + [event] + name=prestart + + [hide_unit] + id=Ardonna + [/hide_unit] + + [objectives] + side=1 + [objective] + description= _ "Kill all the guards, and capture the guardhouse" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + + [note] + description= _ "Right-click on a grave adjacent to your leader to raise a unit." + [/note] + [note] + description= _ "Each grave can be used only once." + [/note] + [note] + description= _ "This scenario takes place entirely at night." + [/note] + [/objectives] + + [label] + x,y=10,11 + text= _ "Guardhouse" + immutable=no + [/label] + [item] + x,y=15,7 + image=scenery/temple1.png + [/item] + [label] + x,y=15,7 + # This label bled into the two hexes on either side, and obscured + # the units there. It's better on two lines. The extra spaces before + # "Temple" are to center that word above the others. + text= _ " Temple +of Healing" + immutable=no + [/label] + [item] + x,y=23,8 + image=items/gravestone1.png + [/item] + + {PLACE_GUARD 10 11 (Spearman) RESILIENT QUICK (_"Gwillyn")} + {PLACE_GUARD 10 10 (Spearman) QUICK RESILIENT (_"Veomyr")} + {PLACE_GUARD 8 10 (Spearman) STRONG RESILIENT (_"Syrillin")} + {PLACE_GUARD 7 10 (Bowman) STRONG INTELLIGENT (_"Glant")} + +#ifdef HARD + {PLACE_GUARD 8 9 (Spearman) STRONG INTELLIGENT (_"Renvan")} + {PLACE_GUARD 10 9 (Bowman) STRONG RESILIENT (_"Vin")} +#endif + +#ifdef EASY + {PLACE_GUARD 9 10 (Lieutenant) AGED INTELLIGENT (_"Caradoc")} +#else + {PLACE_GUARD 9 10 (Lieutenant) RESILIENT INTELLIGENT (_"Caradoc")} +#endif + + # We don't want the guard on the village to move from there: + {FREEZE_UNIT Gwillyn} + + [store_locations] + terrain=*^Gryv + variable=graves + [/store_locations] + + [for] + array=graves + variable=i + [do] + [set_variable] + name=stone_number + rand=1..3 + [/set_variable] + [item] + x=$graves[$i].x + y=$graves[$i].y + image=items/gravestone$stone_number|.png + [/item] + [/do] + [/for] + + [clear_variable] + name=graves,stone_number + [/clear_variable] + + {SET_MENU_ITEM_FOR (Walking Corpse) walking_corpse 8} + [/event] + + # *************************** PLAY *************************** + [event] + name=side 1 turn end + + # Remove the (invisible) keep: + [terrain] + terrain='' + layer=overlay + x=20, 21, 22 + y=6-7, 7-8, 7 + [/terrain] + [/event] + + [event] + name=capture + first_time_only=no + + [filter] + side=1 + x,y=10,11 + [/filter] + + [allow_recruit] + type=Skeleton,Skeleton Archer + side=1 + [/allow_recruit] + [message] + 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~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] + name=can_recruit_skeletons + value=yes + [/set_variable] + + [fire_event] + name=guards_emerge + [/fire_event] + + {SET_MENU_ITEM_FOR (Skeleton) skeleton 15} + {SET_MENU_ITEM_FOR (Skeleton Archer) skeleton_archer 14} + + [fire_event] + name=check for win + [/fire_event] + [/event] + + # This macro animates guards moving out of the guardhouse. Each guard moves to the + # nearest unoccupied, walkable, hex, without an ^Nhyr overlay. ^Nhyr ("Not here") marks + # hexes outside the fence where the unit shouldn't be placed. We use it because it's made + # to be invisible in the minimap. ^Fnzb is the base fence tile. +#define MOVE_AND_PLACE_GUARD TRAIT1 TRAIT2 NAME + {NEAREST_HEX 10 11 20 ( + [and] + terrain=!,*^Nhyr,*^Qov,*^Fnzb + [not] + x,y=10,11 + [/not] + [not] + [filter] + [/filter] + [/not] + [/and] ) location} + + [move_unit_fake] + type=Spearman + x=10, $location.x + y=11, $location.y + side=2 + [/move_unit_fake] + {PLACE_GUARD $location.x $location.y (Spearman) {TRAIT1} {TRAIT2} {NAME}} + [clear_variable] + name=location + [/clear_variable] +#enddef + + [event] + name=guards_emerge + first_time_only=yes + + {MOVE_AND_PLACE_GUARD STRONG RESILIENT (_"Blollyn")} + {MOVE_AND_PLACE_GUARD INTELLIGENT RESILIENT (_"Ceoran")} +#ifdef HARD + {MOVE_AND_PLACE_GUARD INTELLIGENT QUICK (_"Vindry")} + {MOVE_AND_PLACE_GUARD STRONG QUICK (_"Aethacyn")} + {MOVE_AND_PLACE_GUARD STRONG INTELLIGENT (_"Elomyr")} +#endif + [/event] + + # A capture event does not fire when a leaderless side takes a village, but that is + # what we need. The filters make this event fire when a unit from side 2 retakes the + # "guardhouse" village. The can_recruit_skeletons variable is used to check whether + # side 1 owned the village before. + [event] + name=moveto + first_time_only=no + + [filter] + side=2 + x,y=10,11 + [/filter] + [filter_condition] + [variable] + name=can_recruit_skeletons + equals=yes + [/variable] + [/filter_condition] + + [disallow_recruit] + type=Skeleton,Skeleton Archer + side=1 + [/disallow_recruit] + [message] + speaker=narrator + image=logo.png + message= _ "You can no longer recruit skeletons and skeleton archers." + [/message] + [clear_menu_item] + id=raise_skeleton_archer, raise_skeleton + [/clear_menu_item] + [set_variable] + name=can_recruit_skeletons + value=no + [/set_variable] + [/event] + + [event] + name=die + first_time_only=no + [filter] + side=2 + [/filter] + [fire_event] + name=check for win + [/fire_event] + [/event] + + [event] + name=check for win + first_time_only=no + + [if] + [and] + [have_location] + x,y=10,11 + owner_side=1 + [/have_location] + [not] + [have_unit] + side=2 + [/have_unit] + [/not] + [/and] + + [then] + [clear_variable] + name=can_recruit_skeletons,gold,description_text,unit_string + [/clear_variable] + [clear_menu_item] + id=raise_skeleton_archer, raise_skeleton, raise_walking_corpse + [/clear_menu_item] + + [allow_recruit] + type=Walking Corpse + side=1 + [/allow_recruit] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/then] + [/if] + [/event] + + [event] + name=recruit,recall + [message] + speaker=Ardonna +#ifdef HARD + message= _ "Wait, that guard said there were twelve of them, so where are the other five?" +#else + message= _ "Wait, that guard said there were seven of them, so where are the other two?" +#endif + [/message] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=start + + [place_shroud] + side=1 + [/place_shroud] + [remove_shroud] + side=1 + x,y=9,11 + radius=5 + [/remove_shroud] + [message] + speaker=Syrillin + message= _ "Why are we stuck guarding a cemetery all night?" + [/message] + [message] + speaker=Veomyr + image=portraits/humans/spearman-2.png +#ifdef HARD + message= _ "And why twelve of us? Who wants to break into a cemetery that badly?" +#else + message= _ "And why seven of us? Who wants to break into a cemetery that badly?" +#endif + [/message] + [message] + speaker=Glant + message= _ "I don’t know, but this evening a mage from the academy was here talking to the mayor, my brother says." + [/message] + [message] + speaker=Caradoc + message= _ "Well I say you shouldn’t question orders, so pipe down." + [/message] + [place_shroud] + side=1 + [/place_shroud] + + # Until now, Ardonna has been invisible. To keep her from clearing the + # shroud around her until she is revealed in the graveyard, she started + # buried in the middle of a void. The void kept her from seeing anything. + # She is not in her starting location though. The position where we actually + # want her to start would take a lot of work to un-void, so she was at the + # edge of the map in a place where we wanted only hill terrain. + [teleport] + [filter] + id=Ardonna + [/filter] + x,y=22,7 + animate=no + clear_shroud=no + check_passability=no + [/teleport] + [terrain] # Turn void into hills + terrain=Hh + [and] + terrain=Xv + [/and] + [/terrain] + + [unhide_unit] + id=Ardonna + [/unhide_unit] + [remove_shroud] + side=1 + x,y=22,7 + radius=5 + [/remove_shroud] + + [message] + speaker=Ardonna + message= _ "They must be guarding the cemetery from me! Maybe Aimucasur really was suspicious. It’s a good thing I’m here already, but how am I going to get out? + +Well, I might as well do my experiment and worry about leaving later." + [/message] + + [item] + x,y=23,8 + image=items/dirt.png + [/item] + [delay] + time=400 + [/delay] + [unit] + side=1 + x,y=23,8 + id=first_zombie + type=Walking Corpse + animate=yes + moves=0 + attacks_left=0 + facing=nw + [/unit] + + [message] + speaker=Ardonna + message= _ "Hello?" + [/message] + [message] + speaker=first_zombie + image=portraits/zombie-farmer.png + message= _ "Uhngh." + [/message] + [message] + speaker=Ardonna + message= _ "Do you remember anything?" + [/message] + [message] + speaker=first_zombie + image=portraits/zombie-farmer.png + message= _ "Uhrrr." + [/message] + [message] + speaker=Ardonna + message= _ "It seems that my first guess was correct. The poor creature is mindless." + [/message] + + [place_shroud] + side=1 + [/place_shroud] + [remove_shroud] + side=1 + x,y=9,11 + radius=5 + [/remove_shroud] + [message] + speaker=Veomyr + image=portraits/humans/spearman-2.png + message= _ "I heard something over there!" + [/message] + [modify_unit] + [filter] + side=2 + [/filter] + facing=ne + [/modify_unit] + [message] + speaker=Glant + message= _ "Who’s there?" + [/message] + + [remove_shroud] + side=1 + [/remove_shroud] + [move_unit] + id=Ardonna + to_x=21 + to_y=7 + [/move_unit] + [modify_unit] + # This is not really necessary at the moment (as of 1.11.7) because + # dark adepts can't face north anyway. This is in case that changes. + [filter] + id=Ardonna + [/filter] + facing=sw + [/modify_unit] + [message] + speaker=Ardonna + message= _ "It’s only me. Is the cemetery closed then? I was about to leave." + [/message] + [message] + speaker=Syrillin + message= _ "You and that...other person. Who is that?" + [/message] + [message] + speaker=Ardonna + message= _ "Oh, him. See here, I don't want any trouble, but he is a little...ah..." + [/message] + [message] + speaker=Caradoc + message= _ "He's dead! This is dark sorcery like in my granddad’s time in the old country! The penalty is death. Attack and destroy them both!" + [/message] + [message] + speaker=Ardonna + message= _ "Hey! Don't do that, or I will need more of them." + [/message] + [message] + speaker=Ardonna + message= _ "I would do better if I had weapons, and I bet I can find some in the guardhouse. Go take it, my companions." + [/message] + [message] + speaker=Caradoc + message= _ "Gwyllin, don’t move from that guardhouse." + [/message] + [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, raise them from their graves." + [/message] + [/event] + + [event] + name=time over + + [message] + speaker=Ardonna + message= _ "The morning has come, and we have not escaped the city. We will be caught for sure!" + [/message] + [/event] + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef PLACE_GUARD +#undef MOVE_AND_PLACE_GUARD +#undef SET_MENU_ITEM_FOR +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg new file mode 100644 index 000000000000..eadb8ad07e6d --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/03_Bandits.cfg @@ -0,0 +1,268 @@ +#textdomain wesnoth-sota + +# There is one complicated event, but it is described in the code. + +[scenario] + name= _ "Bandits" + map_data="{campaigns/Secrets_of_the_Ancients/maps/03_Bandits.map}" + + id=03_Bandits + next_scenario=04_Becalmed + + [story] + [part] + [background_layer] + image=story/trackless-wilds.jpg + scale=no + [/background_layer] + story= _ "17 III, 23 YW: + +Even with the delay at the graveyard, I reached the outskirts of Llorcyn at first light, and it was far behind me when the sun rose above the mountain peaks. I doubt the Academy will be looking for me in the trackless wilds inhabited only by woodcutters, and with my new companions, I feel safe enough to travel during the day. I am heading east and then north towards the docks. A ship should be leaving for Blackwater Port in a few days, and I mean to be on it." + [/part] + {JOURNEY_PART 3} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 35 35 35} + + [side] + {SIDE_1_ARDONNA} + {GOLD 150 150 140} + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Bandits" + type=Bandit + id=Garcyn + name= _ "Garcyn" + recruit=Thug, Footpad, Ruffian, Poacher + {GOLD 150 200 250} + [unit] + type=Outlaw + gender=female + id=Mossa + name= _ "Mossa" + x,y=9,16 + [modifications] + {TRAIT_QUICK} + {TRAIT_STRONG} + [/modifications] + [/unit] + {FLAG_VARIANT knalgan} + [/side] + + {STARTING_VILLAGES 2 7} + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat the enemy leader" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [set_variable] + name=undead_seen + value=no + [/set_variable] + [/event] + + [event] + name=side 1 turn 1 refresh + [modify_unit] + [filter] + id=Mossa + [/filter] + moves=0 + attacks_left=0 + [/modify_unit] + [/event] + + # *************************** PLAY *************************** + +#define THEY_ARE_UNDEAD ID + [message] + speaker={ID} + message= _ "They are not underfed, they’re dead! How can they be dead? They’re horrible!" + [/message] + [message] + speaker=Garcyn + message= _ "Huh. Well, they’re not the first ugly things we’ve seen in the wilds. Your club crushes bone just fine, so crush them." + [/message] + [set_variable] + name=undead_seen + value=yes + [/set_variable] +#enddef + + # The first time a unit from side 2 gets close to an undead unit, the conversation + # above is triggered. This happens no matter which unit is the one that moved. + # The next two events control this behavior. The variable undead_seen is to make + # sure only one of the events triggers the conversation. It's a lot of work for a + # small effect, but it's important to the plot that the average person hasn't ever + # seen the undead. + [event] + name=moveto + first_time_only=no + + # An outlaw gets close to an undead unit: + [filter] + side=2 + [/filter] + [filter_condition] + [variable] + name=undead_seen + equals=no + [/variable] + [and] + [have_location] + [and] + x,y=$x1,$y1 + radius=3 + [/and] + [and] + [filter] + race=undead + [/filter] + [/and] + [/have_location] + [/and] + [/filter_condition] + + {THEY_ARE_UNDEAD $unit.id} + [/event] + + [event] + name=moveto + first_time_only=no + + # An undead unit gets close to an outlaw: + [filter] + race=undead + [/filter] + [filter_condition] + [variable] + name=undead_seen + equals=no + [/variable] + [/filter_condition] + + [store_unit] + variable=seen_by + [filter] + side=2 + [filter_location] + x,y=$x1,$y1 + radius=3 + [/filter_location] + [/filter] + [/store_unit] + + [if] + [variable] + name=seen_by.length + greater_than=0 + [/variable] + [then] + {THEY_ARE_UNDEAD $seen_by.id} + [/then] + [/if] + [allow_undo] + [/allow_undo] + [/event] + + [event] + name=die + [filter] + id=Mossa + [/filter] + [message] + speaker=Garcyn + message= _ "No!" + [/message] + [message] + speaker=Garcyn + message= _ "You have earned my wrath, wench. Death will be too good for you!" + [/message] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=start + [message] + speaker=Mossa + message= _ "What have we here?" + [/message] + [move_unit] + id=Mossa + to_x=5 + to_y=7 + [/move_unit] + [message] + speaker=Mossa + message= _ "Prey approaches, dearest. It’s an unusual band, but the ones with weapons look underfed." + [/message] + [message] + speaker=Garcyn + message= _ "Easy pickings then." + [/message] + [message] + speaker=Ardonna + message= _ "I think we were just spotted from that hill. Weapons up, my friends. We may be walking into an ambush." + [/message] + [/event] + + [event] + name=last breath + [filter] + id=Garcyn + [/filter] + [message] + speaker=Garcyn + message= _ "Please! Don’t kill me." + [/message] + [message] + speaker=Ardonna + message= _ "No? Fine then. I have an idea for another experiment." + [/message] + [clear_variable] + name=undead_seen,seen_by + [/clear_variable] + [/event] + + [event] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + [event] + name=time over + [message] + speaker=Ardonna + message= _ "The ship will surely leave before we can reach it!" + [/message] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef THEY_ARE_UNDEAD +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg new file mode 100644 index 000000000000..f8b9a8efa04d --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/04_Becalmed.cfg @@ -0,0 +1,657 @@ +#textdomain wesnoth-sota + +# During the opening, characters move in and out of the trapdoors leading below decks, +# and into the passenger cabin doors as well. Macros open and close the various doors as +# necessary. A menu item is provided to remove the terrain image that +# contains the ship's sails. The macro for that is in utils because it is also used for +# the next scenario. The ship terrain is fairly complicated, but the terrain files have +# more details. The ship is the reason for SotA-only bats: Normal bats are drawn above +# all terrain, but that looks wrong with the ship sails, so SotA bats are drawn on a +# lower z-level. + +[scenario] + name= _ "Becalmed" + map_data="{campaigns/Secrets_of_the_Ancients/maps/04_Becalmed.map}" + + id=04_Becalmed + next_scenario=05_Blackwater + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "22 III, 23 YW + +Research sometimes requires experiments, so I began. I forced my will into the life-force pathways of the bandit, thus turning him into my puppet. He resisted, but on account of my recent practice, my will proved the stronger. More strangely, the inside of his body also resisted, attacking me, the invader. However, since I wasn’t physically there, it ended up attacking itself! Over a period of hours, slabs of flesh became weak and threatened to fall off his frame. I was obliged to stitch them in place." + [/part] + [part] + [background_layer] + image=story/black-background.png + scale=no + base_layer=yes + [/background_layer] + [image] + file=portraits/ardonna.png + x,y=64,0 + scale=no + [/image] + [image] + file=portraits/undead/ghoul.png~FL() + x,y=320,0 + scale=no + [/image] + story= _ "Some of the bandit’s companions had perished in better condition than the leader, and I got the idea to add their flesh to my puppet. I stitched on muscles where they seemed to fit, and used enchantments to improve the bonding, thus improving the strength of the creature. At first, each new piece of flesh caused another violent reaction from the body’s defenses. Eventually, the reactions weakened, and the body stabilized in its new configuration, though by this time it was suppurating and unrecognizable. The mind inside gibbered at what it had become, but the bandit had wished for me a fate worse than death, so it didn’t seem unfair." + [/part] + [part] + [background_layer] + image=story/alduin-dock.jpg + scale=no + [/background_layer] + story= _ "Working through the next day in the bandit’s own keep, I repeated the procedure on several of his gravely wounded companions, though none of them became as strong a specimen as the leader. One of them didn’t survive, but it was no loss — I conscripted him into my army anyway. Then, I made my way to the docks, and under the cover of night, loaded my army into the hold of the waiting ship. The following afternoon, I embarked as a normal passenger." + [/part] + [part] + [background_layer] + image=story/becalmed.jpg + scale=no + [/background_layer] + story= _ "25 III, 23 YW + +The journey started well enough, but on the dawn following our departure, the wind died completely, and we were stranded. There was enough food for the paying passengers for a couple days of this, but none for my companions, and the living ones soon got hungry. When one of the crew disappeared on the second evening, I suspected the cause. I was not wrong." + [/part] + {JOURNEY_PART 4} + [/story] + + # This is the same as the default schedule, but starts at dusk. + {DUSK} + {FIRST_WATCH} + {SECOND_WATCH} + {DAWN} + {MORNING} + {AFTERNOON} + + [time_area] + [time] + id=lower_deck + name= _ "Underground" + image=misc/time-schedules/schedule-underground.png + lawful_bonus=-25 + red=-35 + green=-30 + blue=-25 + [/time] + x=14, 0-99 + y=12, 13-99 + [/time_area] + + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 14 15 16} + + [side] + {SIDE_1_ARDONNA} + # We are assuming substantial gold from the previous scenario: + {GOLD 60 40 20} + facing=ne + [/side] + + [side] + side=2 + controller=ai + team_name=bad + user_team_name= _ "Ship’s Crew" + type=Sea Captain + name= _ "Rudic" + id=Rudic + profile=portraits/captain.png + recruit=Sailor + {GOLD 80 110 150} + income=6 + facing=sw + color=white + [/side] + + # These two sides are only to provide color and ellipses for the other ship + # passengers. The units look out of place without them. + [side] + side=3 + team_name=good + controller=null + hidden=yes + color=teal + [unit] + type=Noble + x,y=11, 7 + facing=se + [/unit] + [/side] + + [side] + side=4 + team_name=good + controller=null + hidden=yes + color=orange + [unit] + type=Khalif + x,y=12, 16 + facing=se + [/unit] + [/side] + + {STARTING_VILLAGES 2 8} + +#define OPEN_TRAP_DOORS X Y + [remove_item] + x,y={X},{Y} + image=items/trap-doors-closed.png + [/remove_item] + [item] + x,y={X},{Y} + image=items/trap-doors-open.png + [/item] +#enddef + +#define CLOSE_TRAP_DOORS X Y + [remove_item] + x,y={X},{Y} + image=items/trap-doors-open.png + [/remove_item] + [item] + x,y={X},{Y} + image=items/trap-doors-closed.png + [/item] +#enddef + + # *************************** PRESTART *************************** + [event] + name=prestart + {FREEZE_UNIT Rudic} # Otherwise, he attacks suicidally on the first turn! + + [item] + x,y=10,8 + image=items/trap-doors-closed.png + [/item] + [item] + x,y=14,6 + image=items/trap-doors-closed.png + [/item] + [item] + x,y=13,15 + image=items/trap-doors-closed.png + [/item] + + [unit] + type=Ghoul + side=1 + name= _ "Garcyn" + x,y=recall,recall + [modifications] + {TRAIT_STRONG} + [/modifications] + [/unit] + + [objectives] + side=1 + [objective] + description= _ "Defeat the enemy leader" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + 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] + name=sails_hidden + value=no + [/set_variable] + {SHOW_SAILS_MENU_ITEM -1} + {HIDE_SAILS_MENU_ITEM -1} + + [tunnel] + [source] + x,y=10,8 + [/source] + [target] + x,y=10,16 + [/target] + [filter] + [/filter] + pass_allied_units=yes + [/tunnel] + [tunnel] + [source] + x,y=14,6 + [/source] + [target] + x,y=14,14 + [/target] + [filter] + [/filter] + pass_allied_units=yes + [/tunnel] + + [item] + x,y=11,12 + halo=map-border.png + [/item] + [/event] + + # *************************** PLAY *************************** +#define MOVE_TO_LOWER_DECK X Y + [move_unit] + x,y={X},{Y} + to_x=14 + to_y=6 + [/move_unit] + [teleport] + [filter] + x,y=14,6 + [/filter] + x,y=14,14 + animate=yes + [/teleport] + [move_unit] + x,y=14,15 + to_x=13 + to_y=16 + [/move_unit] +#enddef + + # This next event scripts the first turn AI moves. If we don't do this, sometimes too + # many units go to the lower deck, and sometimes none do. This has a large impact on + # the difficulty of the scenario. Also, the ai units would box in the player's units and + # block the trapdoor. + [event] + name=side 2 turn 1 refresh + + # If Ardonna has (stupidly) moved onto the main deck, the scripted moves + # will cause the ai to ignore her zone of control and the ai units could + # move behind her. To prevent this, we will skip the scripted moves and let + # the ai attack her if she has moved off her deck or in range. + [if] + [have_unit] + id=Ardonna + [filter_location] + terrain=*^Zfoc # Ship forecastle + [or] + # She can take one of the first two barrels on the + # lower deck. The AI can't possibly kill her, so it + # will stick to the script. She's fair game on the + # third barrel though. + x=1-10 + y=11-99 + [/or] + [or] + # She also doesn't get *immediately* attacked if she + # is just guarding her trapdoor. + x=9,10 + y=8 + [/or] + [/filter_location] + [/have_unit] + + [then] + [move_unit] + x,y=15,6 + to_x=11 + to_y=7 + [/move_unit] + [move_unit] + y=6 + to_x=13 + to_y=8 + [/move_unit] + {MOVE_TO_LOWER_DECK 14 5} + {MOVE_TO_LOWER_DECK 15 5} + + [modify_unit] + [filter] + side=2 + [/filter] + moves=0 + [/modify_unit] + [/then] + [/if] + [/event] + +#undef MOVE_TO_LOWER_DECK + + # Force more newly-recruited units to guard the lower deck: + [event] + name=side 2 turn 1 end + [micro_ai] + side=2 + ai_type=zone_guardian + action=add + [filter] + y=6 + [/filter] + [filter_location] + x=0-99 + y=0-12 + [/filter_location] + [filter_location_enemy] + x=0-99 + y=13-99 + [/filter_location_enemy] + [/micro_ai] + [/event] + + # We need an event for each trap door, going each direction. The code for each is very + # similar so we can make all four with one macro. +#define CREATE_TRAP_DOOR Y1 Y2 TRAP_X TRAP_Y + [event] + name=exit_hex + first_time_only=no + [if] + # Checking the unit's x position is not necessary. There is only one + # way the unit's y position can change by the amount being used here: + [variable] + name=y1 + equals={Y1} + [/variable] + [and] + [variable] + name=y2 + equals={Y2} + [/variable] + [/and] + [then] + {OPEN_TRAP_DOORS {TRAP_X} {TRAP_Y}} + [/then] + [/if] + [allow_undo][/allow_undo] + [/event] +#enddef + + {CREATE_TRAP_DOOR 8 16 10 8} + {CREATE_TRAP_DOOR 16 8 10 8} + {CREATE_TRAP_DOOR 6 14 14 6} + {CREATE_TRAP_DOOR 14 6 14 6} + +#undef CREATE_TRAP_DOOR + + [event] + name=moveto + first_time_only=no + {CLOSE_TRAP_DOORS 10 8} + {CLOSE_TRAP_DOORS 14 6} + [allow_undo][/allow_undo] + [/event] + + # *************************** OPENING / ENDING *************************** +#define OPEN_DOOR X Y + [item] + x,y={X},{Y} + image=items/door-open-bottom.png + redraw=no + [/item] + [item] + x={X} + y="$({Y}-1)" + image=items/door-open-top.png + [/item] + [redraw][/redraw] +#enddef + +#define CLOSE_DOOR X Y + [remove_item] + x={X} + y="$({Y}-1)" + [/remove_item] + [remove_item] + x,y={X},{Y} + [/remove_item] +#enddef + +#define PLACE_SAILOR + {NEAREST_HEX 16 6 3 (terrain=*^Zpoo + [not][filter][/filter][/not]) location} + [unit] + x=$location.x + y=$location.y + type=Sailor + side=2 + [/unit] + [clear_variable] + name=location + [/clear_variable] +#enddef + + [event] + name=start + + [scroll_to] + x,y=12,6 + [/scroll_to] + + [delay] + time=1000 + [/delay] + + [allow_recruit] + side=1 + type=Ghoul + [/allow_recruit] + [message] + speaker=narrator + image=portraits/undead/ghoul.png~SCALE(93, 93) + message= _ "You can now recruit ghouls!" + [/message] + + [scroll_to] + x,y=12,15 + [/scroll_to] + + [delay] + time=700 + [/delay] + + # Joc the sailor comes upstairs to talk to the captain: + {OPEN_TRAP_DOORS 13 15} + [delay] + time=400 + [/delay] + [move_unit_fake] + type=Sailor + side=2 + x=13, 14 + y=15, 14 + [/move_unit_fake] + {CLOSE_TRAP_DOORS 13 15} + {OPEN_TRAP_DOORS 14 6} + [move_unit_fake] + type=Sailor + side=2 + x=14, 16 + y=6, 6 + [/move_unit_fake] + [unit] + side=2 + x,y=16, 6 + type=Sailor + name=_ "Joc" + id=Joc + facing=nw + [/unit] + {CLOSE_TRAP_DOORS 14 6} + + [message] + speaker=Joc + message= _ "I found Janryn in the hold. Or, ah...some of him. He’s dead. I didn’t stay to find out what killed him, but there was someone shuffling around in the shadows, and he smelled foul." + [/message] + [message] + speaker=Rudic + message= _ "Murderous stowaways on my ship? I won’t have it! Go round up the rest of the crew and get them up here. We’re going hunting. All passengers are confined to quarters immediately." + [/message] + + # Joc goes back down and through the bottom trap door: + [kill] + id=Joc + [/kill] + {OPEN_TRAP_DOORS 14 6} + [move_unit_fake] + type=Sailor + side=2 + x=16, 14 + y=6, 6 + [/move_unit_fake] + {CLOSE_TRAP_DOORS 14 6} + {OPEN_TRAP_DOORS 13 15} + [move_unit_fake] + type=Sailor + side=2 + x=14, 13 + y=14, 15 + [/move_unit_fake] + {CLOSE_TRAP_DOORS 13 15} + + # The other two passengers go through doors and disappear: + [kill] + side=4 + [/kill] + {OPEN_DOOR 14 13} + [move_unit_fake] + type=Khalif + side=4 + x=12, 14 + y=16, 13 + [/move_unit_fake] + {CLOSE_DOOR 14 13} + + {OPEN_TRAP_DOORS 10 8} + [kill] + side=3 + [/kill] + [move_unit_fake] + type=Noble + side=3 + x=11, 10 + y=7, 8 + [/move_unit_fake] + {CLOSE_TRAP_DOORS 10 8} + {OPEN_DOOR 16 14} + [move_unit_fake] + type=Noble + side=4 + x=10, 16 + y=16, 14 + [/move_unit_fake] + {CLOSE_DOOR 16 14} + + {REPEAT 5 {PLACE_SAILOR}} + + [message] + speaker=Rudic + message= _ "You! Dark girl. Why are you not in your cabin?" + [/message] + [message] + speaker=Ardonna + message= _ "What if I said something in defense of the stowaways?" + [/message] + [message] + speaker=Rudic + message= _ "I would pitch you over the side with them. What do you know?" + [/message] + [message] + speaker=Ardonna + message= _ "They are my companions, and the poor things are just terribly hungry. I’m sorry we didn’t pay the full amount, but maybe we can reach some arrangement." + [/message] + [message] + speaker=Rudic + message= _ "They killed my crew member and played me for a fool! The only arrangement that suits me is the lot of you off my ship, preferably at the bottom of the sea." + [/message] + [message] + speaker=Ardonna + message= _ "Oh dear. We must do this again. Come to me my friends!" + [/message] + [/event] + + [event] + name=die + [filter] + id=Rudic + [/filter] + + [message] + speaker=Ardonna + message= _ "Good riddance. But, with the captain dead, who will sail the ship and guide us into port now?" + [/message] + [message] + speaker=Ardonna + message= _ "Rise Captain, and please retain your memories." + [/message] + + [store_unit] + [filter] + id=Rudic + [/filter] + variable=rudic_stored + kill=yes + [/store_unit] + [unit] + type=Bone Captain + id=Bone Captain + side=1 + x=$rudic_stored.x + y=$rudic_stored.y + name= _ "Rudic" + {IS_LOYAL} + [modifications] + {TRAIT_LOYAL} + [/modifications] + animate=yes + [/unit] + [clear_variable] + name=rudic_stored + [/clear_variable] + + [message] + speaker=Ardonna + message= _ "Can you still sail this ship?" + [/message] + [message] + speaker=Bone Captain + image=portraits/bone-captain1.png + message= _ "Sail. Yes. Need wind." + [/message] + [message] + speaker=Ardonna + message= _ "Oh! It worked! Take us to port, Captain, as soon as you do have the wind." + [/message] + [/event] + + [event] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef PLACE_SAILOR +#undef OPEN_DOOR +#undef CLOSE_DOOR +#undef OPEN_TRAP_DOORS +#undef CLOSE_TRAP_DOORS +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg new file mode 100644 index 000000000000..aaaea7f0aff2 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/05_Blackwater.cfg @@ -0,0 +1,435 @@ +#textdomain wesnoth-sota + +# The enemy leader is modified to be unable to reach sea or sand. Otherwise, he tends to +# attack and die easily because of his terrible defense on those terrains. We want the +# 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 an extra merman village near the deck of the ship to +# provide healing. + +[scenario] + name= _ "Blackwater" + map_data="{campaigns/Secrets_of_the_Ancients/maps/05_Blackwater.map}" + + id=05_Blackwater + next_scenario=06_Following_the_Shadow + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story=_ "29 III, 23 YW + +When the captain retained his memories, I reasoned that it may have been because he was raised so soon after his death. Further experiments with the other passengers bore out that conclusion. Just think: They may be the first people on this continent to live forever!" + [/part] + [part] + [background_layer] + image=story/blackwater.jpg + scale=no + [/background_layer] + story=_ "Happily, the captain was fairly wealthy, so that will solve my income problems for a time. Now I must go, as the captain prepares to guide the ship into port." + [/part] + {JOURNEY_PART 5} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 28 28 28} + + [side] + {SIDE_1_ARDONNA} + {GOLD 270 230 200} + income=6 + facing=se + [/side] + + {STARTING_VILLAGES 2 6} + + [side] + side=2 + controller=ai + user_team_name= _ "Guard" + id=Gweddyn + type=Knight + name= _ "Gweddyn" + facing=nw + recruit=Horseman, Cavalryman, Spearman, Bowman, Mage + {GOLD 250 310 380} + {FLAG_VARIANT loyalist} + [unit] + type=Mage + gender=male + x,y=24,14 + name= _ "Bremen" + id=Bremen + facing=nw + [/unit] + [unit] + type=Cavalryman + x,y=24,11 + facing=nw + [/unit] + [unit] + type=Swordsman + x,y=21,14 + facing=nw + [/unit] + [unit] + type=Bowman + x,y=24,15 + facing=nw + [/unit] + [/side] + +#ifdef EASY + {LIMIT_CONTEMPORANEOUS_RECRUITS 2 (Mage) 2} +#endif + + # Dummy side for ghost + [side] + side=3 + team_name=good + controller=null + hidden=yes + color=darkred + [/side] + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Kill every enemy unit" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + 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] + x,y=10,10 + image=items/trap-doors-closed.png + [/item] + [item] + x,y=14,8 + image=items/trap-doors-closed.png + [/item] + + #debug: + [allow_recruit] + side=1 + type=Ghoul,Skeleton,Skeleton Archer,Walking Corpse + [/allow_recruit] + + # If this variable is 1 or more, side 2 can recruit a level 2 unit. + # It costs one credit to do so. The credit rercharges a little each turn. +#ifdef HARD + [set_variable] + name=level_2_credit + value=1 + [/set_variable] +#else + [set_variable] + name=level_2_credit + value=0 + [/set_variable] +#endif + + {RECALL_LOYAL_UNITS} + + # This object will keep the knight from attacking from terrible terrain, + # which he will otherwise. + [object] + [filter] + id=Gweddyn + [/filter] + silent=yes + duration=forever + [effect] + apply_to=movement_costs + replace=yes + [movement_costs] + sand={UNREACHABLE} + shallow_water={UNREACHABLE} + [/movement_costs] + [/effect] + [/object] + + # Remove sails and rigging if they were hidden at the end of the previous + # scenario. + [if] + [variable] + name=sails_hidden + boolean_equals=yes + [/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} + +#ifdef EASY + [terrain] # An extra village is available on EASY + x,y=9,9 + terrain=Wwrt^Vm + [/terrain] +#endif + [/event] + + # *************************** PLAY *************************** + # The next two events control the ability of side 2 to recruit a level-2 unit. + [event] + name=side 2 turn + first_time_only=no + + [set_variable] + name=level_2_credit +#ifdef EASY + add=0.25 +#endif +#ifdef NORMAL + add=0.5 +#endif +#ifdef HARD + add=0.7 +#endif + [/set_variable] + [if] + [variable] + name=level_2_credit + greater_than_equal_to=1 + [/variable] + [then] + [allow_recruit] + side=2 + type=Javelineer,Swordsman + [/allow_recruit] + [/then] + [/if] + [/event] + + [event] + name=recruit + first_time_only=no + + [filter] + side=2 + level=2 + [/filter] + [set_variable] + name=level_2_credit + sub=1 + [/set_variable] + [if] + [variable] + name=level_2_credit + less_than=1 + [/variable] + [then] + [disallow_recruit] + side=2 + type=Javelineer,Swordsman + [/disallow_recruit] + [/then] + [/if] + [/event] + + [event] + name=die + first_time_only=no + + [filter] + side=2 + [/filter] + + [if] + [not] + [have_unit] + side=2 + [/have_unit] + [/not] + + [then] + [fire_event] + name=closing + [/fire_event] + + [clear_variable] + name=level_2_credit,sails_hidden + [/clear_variable] + [clear_menu_item] + id=show-sails,hide-sails + [/clear_menu_item] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/then] + [/if] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=start + [message] + speaker=Gweddyn + message= _ "Ho Rudic! Welcome. You are late, old friend." + [/message] + [message] + speaker=Bone Captain + message= _ "Late." + [/message] + [message] + speaker=Gweddyn + message= _ "Not talking much today? What happened?" + [/message] + [message] + speaker=Bone Captain + message= _ "Happened? Dead." + [/message] + [message] + speaker=Gweddyn + message= _ "Ha! Well, actually, you do look terrible. Very...gray, and your face is.... But we’re speaking! You can’t actually be dead!" + [/message] + [message] + speaker=Bone Captain + message= _ "Yes. Dead." + [/message] + [message] + speaker=Gweddyn + message= _ "What madness is this?" + [/message] + [message] + speaker=Bremen + message= _ "It’s sorcery my lord. Dark sorcery." + [/message] + [message] + speaker=Gweddyn + message= _ "Necromancy! The penalty for that is death. Rudic, who is responsible for this?" + [/message] + [message] + speaker=Bone Captain + message= _ "She." + [/message] + [message] + speaker=Ardonna + message= _ "Ah, well. I should have known this wouldn’t be easy." + [/message] + [message] + speaker=Gweddyn + message= _ "Kill her!" + [/message] + [message] + speaker=Ardonna + message= _ "We must leave no one alive to report us, or the entire country will become unsafe. We have no choice. We must kill them all." + [/message] + [/event] + + [event] + name=closing + [message] + speaker=Ardonna + message= _ "We are finished." + [/message] + [move_unit_fake] + x=34,30 + y=7, 10 + type=Shadow + side=3 + [/move_unit_fake] + [unit] + type=Shadow + side=3 + id=Shadow + x,y=30,10 + facing=sw + [/unit] + [message] + speaker=Shadow + message= _ "Girl. You will follow." + [/message] + [message] + speaker=Ardonna + message= _ "What in the world are you?" + [/message] + [message] + speaker=Shadow + message= _ "Spirit and shadow. You will follow." + [/message] + [message] + speaker=Ardonna + message= _ "You’re a ghost...a real ghost! I will indeed follow you. Lead on." + [/message] + [kill] + id=Shadow + [/kill] + [move_unit_fake] + x=30,34 + y=10,7 + type=Shadow + side=3 + [/move_unit_fake] + [/event] + + [event] + name=die + [filter] + side=2 + canrecruit=yes + [/filter] + [if] + [have_unit] + side=2 + [/have_unit] + [then] + [message] + speaker=Ardonna + message= _ "Blackwater Port is defeated, but we must let none escape. Finish them all." + [/message] + [/then] + [/if] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef SHOW_SAILS_MENU_ITEM +#undef HIDE_SAILS_MENU_ITEM +[/scenario] 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 new file mode 100644 index 000000000000..2df977786834 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/06_Following_the_Shadow.cfg @@ -0,0 +1,578 @@ +#textdomain wesnoth-sota + +# A large number of bats spawn in the cave under these two conditions: +# (1) Six non-bat units are in the cave (Bats don't stomp on the floor.) +# (2) Ardonna has been in the cave for two turns in a row. (That gets her solidly into +# the cave, but not close to the exit. If she is alone, it's the player's fault when +# the bats kill her.) + +[scenario] + name= _ "Following the Shadow" + map_data="{campaigns/Secrets_of_the_Ancients/maps/06_Following_the_Shadow.map}" + + id=06_Following_the_Shadow + next_scenario=07_Meeting_of_the_Minds + + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + [if] + [have_unit] + id=Bone Captain + search_recall_list=yes + [/have_unit] + [then] + story=_ "3 IV, 23 YW + +I was so sure I had the answer! I was wrong. I wanted to believe that I was imagining it, but it’s now clear that the captain’s memories are fading. He still retains speech, and the others fight better when he is watching (many used to be his crew after all — it would be habit for them), but he remembers precious little else now. The same is true of my other recently-raised friends. I am disappointed, but the existence of my strange new companion keeps me from being depressed." + [/then] + [else] + story=_ "3 IV, 23 YW + +I was so sure I had the answer! I was wrong. I wanted to believe that I was imagining it, but my recently-raised friends are losing their memories. They retain the power of speech, but precious little else. I am disappointed, but the existence of my strange new companion keeps me from being depressed." + [/else] + [/if] + [/part] + + [part] + [background_layer] + image=portraits/undead/shadow.png + scale=no + base_layer=yes + [/background_layer] + story=_ "The phantom leads us north. It has identified itself as the ghost of Vash-Gorn, an orc. So it remembers! It seems that the problem has been solved, but the ghost ignores all my questions. I am burning with curiosity, so I hope we reach our destination soon! We travel only by day because at night, the spirit is practically invisible. We have not had any trouble on the road yet, but we are a rather large company now, so I have not expected it." + [/part] + {JOURNEY_PART 6} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + turns=38 + +#define CAVE_TERRAINS + U*,U*^*,Rb,Rb^*,*^Dr,Qxe,Wwf,Wwg +#enddef + + [side] + {SIDE_1_ARDONNA} + {GOLD 200 175 150} + shroud=yes + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Goblin Raiders" + team_name=bad + type=Direwolf Rider + name= _ "Bogdush" + id=Bogdush + facing=sw + recruit=Wolf Rider, Goblin Knight, Goblin Pillager + {GOLD 250 325 400} + [unit] + x,y=46,3 + type=Goblin Pillager + moves=0 + name= _ "Blaust" + id=Blaust + facing=se + [/unit] + {FLAG_VARIANT6 ragged} + [/side] + + [side] + side=3 + controller=ai + user_team_name= _ "Bats" + hidden=yes + team_name=bats + no_leader=yes + [ai] + [avoid] + # Bats stay in the cave. + terrain=!,{CAVE_TERRAINS} + [/avoid] + [/ai] + [/side] + + [side] + side=4 + team_name=good + controller=null + hidden=yes + color=darkred + [/side] + {STARTING_VILLAGES 1 6} + {STARTING_VILLAGES 2 6} + +#ifdef HARD + {LIMIT_CONTEMPORANEOUS_RECRUITS 2 (Goblin Knight) 2} +#endif + + # *************************** PRESTART *************************** + + [event] + name=prestart + {RECALL_LOYAL_UNITS} + + # Using a shroud_data file would work too, but this is easier to modify if + # necessary: + [remove_shroud] + side=1 + [/remove_shroud] + [place_shroud] + side=1 + terrain={CAVE_TERRAINS} + [/place_shroud] + [place_shroud] + # Shrouded floor next to cave wall leaves part of the cave wall + # unshrouded, showing part of the shape of the cave before it is + # discovered. This tag covers up most of the offending walls. Some of + # them can't be covered without covering the *outside* of the cave + # walls as well, so we are leaving those as they are. + x=41-44, 46, 47, 47-50, 50-54 + y=10-14, 8 , 18, 8 , 9-19 + [/place_shroud] + [remove_shroud] + # So the player can see the three entrances: + side=1 + x=36, 37, 43 + y=11, 11, 15 + [/remove_shroud] + + [objectives] + side=1 + [objective] + description= _ "Find out where the ghost went and follow it" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [time_area] + {UNDERGROUND} + terrain={CAVE_TERRAINS} + [/time_area] + [/event] + + # *************************** PLAY *************************** + [event] + name=moveto + [filter_condition] + [have_location] + x,y=47,13 + [filter_vision] + side=1 + [/filter_vision] + [/have_location] + [/filter_condition] + [scroll_to] + x,y=47,13 + [/scroll_to] + [delay] + time=1000 + [/delay] + [message] + speaker=Ardonna + message= _ "Look, there is a cavern below the cave floor. What might we rouse if we go tromping about in the cave? I hope it is nothing worse than bats." + [/message] + [message] + speaker=Bone Captain + message= _ "Ghost?" + [/message] + [message] + speaker=Ardonna + message= _ "Surely the ghost would not have gone that way, where I cannot follow." + [/message] + [/event] + + [event] + name=moveto + [filter_condition] + [have_location] + x,y=53,20 + [filter_vision] + side=1 + [/filter_vision] + [/have_location] + [/filter_condition] + [scroll_to] + x,y=53,20 + [/scroll_to] + [delay] + time=500 + [/delay] + [message] + speaker=Ardonna + message= _ "There is a tunnel at the back of the cave! The ghost must have gone through there." + [/message] + {HIGHLIGHT_IMAGE 53 20 "items/gohere.png" ()} + [remove_item] + x,y=53,20 + [/remove_item] + [/event] + + # If we don't do this, the first wolf attacks by himself, leaving him little + # chance of surviving or doing much damage. + [event] + name=side 2 turn 1 refresh + [modify_unit] + [filter] + id=Blaust + [/filter] + moves=0 + attacks_left=0 + [/modify_unit] + [/event] + + # This checks to see if the conditions are correct for activating the bats. The + # bats will spawn as their turn ends, so they can't spawn and attack at the same + # time. (Which would be a bad surprise.) This way, the player gets one turn to + # arrange their defences. + [event] + name=side 3 turn end + first_time_only=no + id=check_for_bat_activation + + # If Ardonna is not in the cave, reset (or set) a counter. + [if] + [have_unit] + id=Ardonna + [filter_location] + terrain=!,{CAVE_TERRAINS} + [/filter_location] + [/have_unit] + [then] + [set_variable] + name=turns_in_cave + value=0 + [/set_variable] + [/then] + [/if] + + # If Ardonna *is* in the cave, increment the counter. + [if] + [have_unit] + id=Ardonna + [filter_location] + terrain={CAVE_TERRAINS} + [/filter_location] + [/have_unit] + [then] + [set_variable] + name=turns_in_cave + add=1 + [/set_variable] + [/then] + [/if] + + # If Ardonna's counter gets to 2, activate the bats. + [if] + [variable] + name=turns_in_cave + equals=2 + [/variable] + [then] + [fire_event] + name=activate bats + [/fire_event] + [/then] + [/if] + + # Activate the bats if there are six or more non-flying units in the cave. + [if] + [have_unit] + side=1 + [filter_location] + terrain={CAVE_TERRAINS} + [/filter_location] + [not] + race=bats + [/not] + [not] + variation=bat # undead bat + [/not] + count=6-99 # six or more + [/have_unit] + [then] + [fire_event] + name=activate bats + [/fire_event] + [/then] + [/if] + [/event] + + # Four hard-coded, animated bats appear every time, the number of others, which are + # randomly placed, is based on difficulty. +#ifdef EASY +#define NUMBER_OF_EXTRA_BATS + 5 +#enddef +#endif + +#ifdef NORMAL +#define NUMBER_OF_EXTRA_BATS + 7 +#enddef +#endif + +#ifdef HARD +#define NUMBER_OF_EXTRA_BATS + 10 +#enddef +#endif + + # Animates bats coming from the chasm in the center of the cave (at 47,13) +#define MOVE_AND_PLACE_BAT X Y TYPE + # X and Y values are passed to the macro, but that location may be occupied. This + # macro finds the nearest unoccupied location in case it is. That is the location + # that will actually be used in case it is different than X and Y. + {NEAREST_HEX {X} {Y} 99 ( + [not] + [filter] + [/filter] + [or] + x,y=47,13 + [/or] + [/not]) location} + + [move_unit_fake] + type={TYPE} + side=3 + x=47,$location.x + y=13,$location.y + [/move_unit_fake] + [unit] + type={TYPE} + side=3 + x=$location.x + y=$location.y + [/unit] + [clear_variable] + name=location + [/clear_variable] +#enddef + + [event] + name=activate bats + + [event] + # We don't want the bats activated twice: + id=check_for_bat_activation + remove=yes + [/event] + [clear_variable] + name=turns_in_cave + [/clear_variable] + + {MOVE_AND_PLACE_BAT 45 11 (Vampire Bat)} + {MOVE_AND_PLACE_BAT 45 14 (Blood Bat)} + {MOVE_AND_PLACE_BAT 47 9 (Blood Bat)} + {MOVE_AND_PLACE_BAT 48 10 (Dread Bat)} + + [store_locations] + terrain={CAVE_TERRAINS} + variable=possible_bat_locations + [/store_locations] + + [set_variable] + name=bat_index + value=1 + [/set_variable] + [while] + [variable] + name=bat_index + less_than_equal_to={NUMBER_OF_EXTRA_BATS} + [/variable] + + [do] + # Choose a location by selecting an array index: + [set_variable] + name=location_index + rand="0..$($possible_bat_locations.length-1)" + [/set_variable] + + # [while] the location is no good, [do] choose another one: + [while] + [have_location] + x=$possible_bat_locations[$location_index].x + y=$possible_bat_locations[$location_index].y + [filter] + # It's no good because there is already a unit here. + [/filter] + [/have_location] + [or] + [variable] + # It's no good because it's off the edge of the map. + # (It can only go off in the positive x direction.) + name=possible_bat_locations[$location_index].x + greater_than=53 + [/variable] + [/or] + [do] + [set_variable] + name=location_index + rand=0.."$($possible_bat_locations.length-1)" + [/set_variable] + [/do] + [/while] + + # The bat_index reaches higher with each difficulty level. The + # types of bats are hard-coded instead of random because it can + # make a large difference in the difficulty. + [switch] + variable=bat_index + [case] + value=1, 5, 8 + [set_variable] + name=bat_type + value=Vampire Bat + [/set_variable] + [/case] + [case] + value=2, 4, 6, 9 + [set_variable] + name=bat_type + value=Blood Bat + [/set_variable] + [/case] + [case] + value=3, 7, 10 + [set_variable] + name=bat_type + value=Dread Bat + [/set_variable] + [/case] + [/switch] + # Put a bat on the map at the selected location: + [unit] + type=$bat_type + x=$possible_bat_locations[$location_index].x + y=$possible_bat_locations[$location_index].y + side=3 + [/unit] + + [set_variable] + name=bat_index + add=1 + [/set_variable] + [/do] + [/while] + [message] + speaker=Ardonna + message= _ "So it’s only bats, but rather a lot of them." + [/message] + + [clear_variable] + name=possible_bat_locations, bat_index, bat_type, location_index + [/clear_variable] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=moveto + + [filter] + x,y=53,20 + id=Ardonna + [/filter] + + [message] + speaker=Ardonna + message= _ "Now let’s see where that ghost went." + [/message] + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + [event] + name=start + + [unit] + type=Shadow + side=4 + id=Shadow + x,y=27,15 + facing=sw + [/unit] + [message] + speaker=Shadow + message= _ "Come." + [/message] + [kill] + id=Shadow + [/kill] + [move_unit_fake] + x=27,38 + y=15,12 + type=Shadow + side=4 + [/move_unit_fake] + [message] + speaker=Ardonna + message= _ "Let’s follow it into the cave." + [/message] + [message] + speaker=Blaust + message= _ "I don’t know, Bogdush. The chief said he wanted stuff that was helpful for the war." + [/message] + [message] + speaker=Bogdush + message= _ "It’s a mage! That would be helpful for the war, you idiot! It’s only a pup, and unless I miss my guess, it’s a female too. It will be easy to capture." + [/message] + [message] + speaker=Blaust + message= _ "What about the others? They look like the dead ones back on the Green Isle." + [/message] + [message] + speaker=Bogdush + message= _ "They are. It makes our job of killing them that much easier!" + [/message] + [modify_unit] + [filter] + id=Blaust + [/filter] + facing=sw + [/modify_unit] + [message] + speaker=Ardonna + message= _ "You must be Goblins. You will stand out of my way if you wish to live." + [/message] + [message] + speaker=Bogdush + message= _ "Oh, it’s a mage that makes jokes too! Let’s go." + [/message] + [/event] + + [event] + name=time over + + [message] + speaker=narrator + image=logo.png + message= _ "You have no more time." + [/message] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef MOVE_AND_PLACE_BAT +#undef CAVE_TERRAINS +#undef NUMBER_OF_EXTRA_BATS +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/07_Meeting_of_the_Minds.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/07_Meeting_of_the_Minds.cfg new file mode 100644 index 000000000000..e7238e727f36 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/07_Meeting_of_the_Minds.cfg @@ -0,0 +1,239 @@ +#textdomain wesnoth-sota + +[scenario] + name= _ "Meeting of the Minds" + map_data="{campaigns/Secrets_of_the_Ancients/maps/07_Meeting_of_the_Minds.map}" + + [story] + [part] + story=_ "9 IV, 23 YW + +The tunnel at the back of the cave narrowed and ran on for quite some time. Patches of fungus on the wall gave off a feeble glow that kept me from stumbling too badly. Finally I saw a brighter light up ahead." + [/part] + {JOURNEY_PART 7} + [/story] + + id=07_Meeting_of_the_Minds + next_scenario=08_Carcyn + + {UNDERGROUND} + {DEFAULT_MUSIC_PLAYLIST} + + {ANIMATED_BRAZIER 11 5} + {ANIMATED_BRAZIER 9 4} + + [side] + {SIDE_1_ARDONNA} + shroud=yes + gold=0 + [/side] + + [side] + side=2 + controller=ai + team_name=good + user_team_name= _ "Ras-Tabahn" + type=Dark Sorcerer SotA + name= _ "Ras-Tabahn" + id=Ras-Tabahn + canrecruit=yes + color=darkred + facing=sw + [unit] + type=Shadow + id=Shadow + x,y=11,7 + facing=nw + [/unit] + [unit] + type=Ghost + x,y=8,4 + facing=sw + experience=6 + [/unit] + [unit] + type=Skeleton + x,y=3,6 + facing=n + experience=3 + [/unit] + [unit] + type=Skeleton + x,y=4,6 + facing=n + experience=16 + [/unit] + [/side] + + [event] + name=prestart + + [item] + x,y=13,3 + image=scenery/gate-rusty-sw.png + [/item] + [item] + x,y=9,5 + image=scenery/summoning-center.png + [/item] + [item] + x,y=12,6 + image=items/potion-green.png + [/item] + [item] + x,y=13,6 + image=items/potion-blue.png + [/item] + [item] + x,y=13,7 + image=items/gold-coins.png + [/item] + [item] + x,y=7,4 + image=items/ornate1.png + [/item] + [item] + x,y=8,3 + image=items/book1.png + [/item] + [item] + x,y=14,4 + image=items/ball-green.png + [/item] + [item] + x,y=10,4 + image=items/altar-evil.png + [/item] + [item] + x,y=11,3 + image=items/chest-plain-open.png + [/item] + [item] + x,y=10,7 + image=items/coffin-closed.png + [/item] + [item] + x,y=9,3 + image=items/chest-plain-closed.png + [/item] + [item] + x,y=14,1 + image=units/leech-giant.png + [/item] + [/event] + + # move_unit doesn't automatically clear the shroud until all the move_unit commands are + # finished. But, it looks better if the shroud clears as Ardonna moves. This macro makes + # that easier to do: +#define MOVE_AND_UNSHROUD X Y + [move_unit] + id=Ardonna + to_x,to_y={X},{Y} + [/move_unit] + [redraw] + remove_shroud=yes + side=1 + [/redraw] +#enddef + + [event] + name=start + + [delay] + time=1000 + [/delay] + {MOVE_AND_UNSHROUD 2 4} + {MOVE_AND_UNSHROUD 3 5} + {MOVE_AND_UNSHROUD 4 5} + {MOVE_AND_UNSHROUD 5 5} + {MOVE_AND_UNSHROUD 6 5} + {MOVE_AND_UNSHROUD 7 6} + [remove_shroud] + side=1 + [/remove_shroud] + [delay] + time=2000 + [/delay] + [message] + speaker=Ardonna + message= _ "Oh, wow." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I am Ras-Tabahn. Welcome to my laboratory, Ardonna of Tarynth!" + [/message] + [message] + speaker=Ardonna + message= _ "How do you know my name?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I know much about you. My ghosts have been watching you for some time now, and you and I share the goal of resisting death. I have been hoping several students would free themselves from that conservative academy, but it seems that you will be the only one. Fortunately, you are quite innovative, and have even accomplished something which I have not. You have useful creatures — I believe you call them ghouls?" + [/message] + [message] + speaker=Ardonna + message= _ "Yes, I can show you how to make your own, but have you not solved the problem already with your ghosts?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Alas, no. Ghosts can retain some memories if they are raised quickly enough, and they make good scouts and soldiers after they have some experience, but you wouldn’t want to become one yourself. You see the blades Vash-Gorn carries? It took a complicated ritual to bind that metal to the spirit, and one couldn’t perform that ritual oneself without a physical body. Being unable to interact with the world would be terribly frustrating. No matter; I have another idea." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I believe I know how to get the information we seek, but it would have been too difficult to obtain myself. Therefore, we shall go on a mission, you and I. First, we will enlarge our armies, and then..." + [/message] + [message] + speaker=Ardonna + message= _ "Wait. I have heard nothing yet that makes me think I should trust you." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Ah...yes, I suppose not. Let me teach you some of what I know today, and see if that informs your opinion. However, the question of trust is not the most important. The question is whether or not we can work together. Listen. The ancient Wesfolk honed their craft over generations. There is more to know than one individual can learn in a lifetime. If you do your research alone, you will one day be as old as I, and death will pursue you just as relentlessly. However, if we combine our research, we have a chance of finishing before it is too late for us." + [/message] + [message] + speaker=Ardonna + message= _ "For you, you mean. I am only nineteen. Still, you make a good case. We can work together for now." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Splendid. Here is what I propose. First, we part ways for a time, and you raise a force of ghosts following my instructions. Meanwhile, I am going to try to train some local peasants in the magical arts. I don't expect much from that uneducated rabble, but hopefully some will be intelligent enough to add to our firepower. When we reunite, you will show me how to make one of those shambling ghouls. I am actually in no hurry, as they have a terrible odor." + [/message] + [message] + speaker=Ardonna + message= _ "Well I can’t smell, so I didn’t know about that." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Curious, but convenient for one such as us." + [/message] + [message] + speaker=Ardonna + message= _ "Why can’t I just raise some of the goblins outside?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Those goblins were too weak, and it would take their spirits a long time to become strong enough to be useful. You are going to raise Elvish warriors instead. A few miles into the Grey Woods, there lies an ancient battleground from a civil war hundreds of years ago. You will follow an old elf road there and raise an army of ghosts while I visit Carcyn, a nearby town. We will meet at the end of the elf road by the Great River, and I will explain where we should go next." + [/message] + [message] + speaker=Ardonna + message= _ "Very well. We will do as you suggest." + [/message] + [endlevel] + result=victory + linger_mode=no + carryover_report=no + bonus=no + carryover_percentage=100 + # We don't use carryover_add because we're about to switch leaders. + [/endlevel] + [/event] + +#undef MOVE_AND_UNSHROUD +#undef JOURNEY_STAGE1 +#undef JOURNEY_STAGE2 +#undef JOURNEY_STAGE3 +#undef JOURNEY_STAGE4 +#undef JOURNEY_STAGE5 +#undef JOURNEY_STAGE6 +#undef JOURNEY_STAGE7 +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg new file mode 100644 index 000000000000..838968c93e8f --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/08_Carcyn.cfg @@ -0,0 +1,467 @@ +#textdomain wesnoth-sota + +# We are switching to Ras-Tabahn for the next three scenarios. Ardonna and her recall +# list still exist and will be back later. + +# Moving a unit to the jailhouse gets you two loyal, level-0 units. One is a ruffian, and +# the other is a female version of a ruffian called a delinquent. She can't level into a +# thug, but both of them can level into DAs. (This is recommended. You can evenually have +# a pair of loyal ancient liches if you take this option.) Winning the scenario also +# works to get these units. + +[scenario] + name= _ "Carcyn" # The name of the city and its most prominent citizen + map_data="{campaigns/Secrets_of_the_Ancients/maps/08_Carcyn.map}" + + id=08_Carcyn + next_scenario=09_Training_Session + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/black-background.png + scale=yes + base_layer=yes + [/background_layer] + [image] + x,y=400,200 + centered=yes + file=portraits/humans/necromancer.png~FL() + [/image] + title= _ "Chapter Two: Two Missions" + show_title=yes + title_alignment=left + story= _ "We will first follow the adventures of Ras-Tabahn. + +After several days of travel, he approached the frontier town of Carcyn." + [/part] + {JOURNEY_PART 8} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 28 28 28} + + [side] + # wmllint: who SIDE_1_RAS-TABAHN is Ras-Tabahn + {SIDE_1_RAS-TABAHN} + {GOLD 200 200 200} + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Town Defense" + type=Swordsman + name= _ "Carcyn Fisher" + id=Carcyn Fisher + recruit=Cavalryman,Spearman,Bowman + profile=portraits/humans/swordsman-2.png + # Not a lot of gold is needed because of the large income from the villages: + {GOLD 100 150 200} + {FLAG_VARIANT loyalist} + [/side] + {LIMIT_RECRUITS 2 Cavalryman 4} + {STARTING_VILLAGES 2 30} + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Own every building on the map" + condition=win + [/objective] + {ALTERNATIVE_OBJECTIVE ( _ "Kill every enemy unit")} + + {HOW_TO_LOSE_WITH_RAS-TABAHN} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + # Add the units Ras-Tabahn had in his laboratory to his recall list: + [unit] + type=Shadow + side=1 + [/unit] + [unit] + type=Ghost + experience=6 + side=1 + [/unit] + [unit] + type=Skeleton + experience=3 + side=1 + [/unit] + [unit] + type=Skeleton + experience=16 + side=1 + [/unit] + + [unit] + x,y=14,9 + type=Mage + side=2 + name= _ "Wynran" + id=Wynran + [modifications] + {TRAIT_STRONG} + {TRAIT_RESILIENT} + [/modifications] + [/unit] + + [unit] + x,y=15,10 + type=Mage + side=2 + name= _ "Raydah" + id=Raydah + gender=female + [modifications] + {TRAIT_QUICK} + {TRAIT_INTELLIGENT} + [/modifications] + [/unit] + + [label] + x,y=4,8 + text= _ "Inn" + color=255, 255, 255 + [/label] + [label] + x,y=6,4 + text= _ "Tackle Shop" #po: or Fishing Supplies + color=255, 255, 255 + [/label] + [label] + x,y=3,15 + text= _ "Cemetery" + color=255, 255, 255 + [/label] + [label] + x,y=10,9 + text= _ "Mercantile" #po: the old word for "general store" + color=255, 255, 255 + [/label] + [label] + x,y=18,8 + text= _ "Carcyn" #po: The name of the city + color=255, 255, 255 + [/label] + [label] + x,y=18,13 + text= _ "Public House" #po: the old word for "pub". "Bar" is about the same. + color=255, 255, 255 + [/label] + [label] + x,y=4,12 + text= _ "Jailhouse" #po: or just "Jail" + color=255, 255, 255 + [/label] + [label] + x,y=23,3 + text= _ "Boatworks" #po: or Boatyard + color=255, 255, 255 + [/label] + [label] + x,y=25,8 + text= _ "Grange Hall" #po: "Grange" in the American usage: farmers' association + color=255, 255, 255 + [/label] + [item] + x,y=4,1 + image=items/boat.png~RC(magenta>white) + [/item] + [item] + x,y=23,2 + image=items/boat.png~RC(magenta>orange)~FL() + [/item] + [/event] + + # *************************** PLAY *************************** + # After recruiting a second unit, Carcyn has filled his starting castle. He doesn't + # move to the other, larger castle to continue recruiting unless we tell him to: + [event] + name=recruit + [filter] + side=2 + [/filter] + + [event] + name=recruit + [filter] + side=2 + [/filter] + [move_unit] + id=Carcyn Fisher + to_x=20 + to_y=9 + [/move_unit] + [/event] + [/event] + + # We want the magi to move out with the other units, not on their own, so we'll + # take away their movement points before the other units get recruited. + [event] + name=side 2 turn 1 refresh + + [modify_unit] + [filter] + type=Mage + [/filter] + moves=0 + [/modify_unit] + [/event] + + # Moving a unit to the jailhouse gets you two loyal, level-0 units. + [event] + name=moveto + [filter] + x,y=4,12 + side=1 + [/filter] + [fire_event] + name=get_kids + [/fire_event] + [/event] + + [event] + name=get_kids + + [move_unit_fake] + type=Delinquent + side=1 + x=4,5 + y=12,12 + [/move_unit_fake] + [unit] + x,y=5,12 + type=Delinquent + side=1 + name= _ "Shynal" + id=Shynal + gender=female + {IS_LOYAL} + [modifications] + {TRAIT_RESILIENT} + {TRAIT_LOYAL} + [/modifications] + profile="portraits/shynal-outlaw.png" + [/unit] + [move_unit_fake] + type=Ruffian + side=1 + x=4,5 + y=12,13 + [/move_unit_fake] + [unit] + x,y=5,13 + type=Ruffian SotA + side=1 + name= _ "Carcyn" + id=Carcyn + {IS_LOYAL} + [modifications] + {TRAIT_STRONG} + {TRAIT_LOYAL} + [/modifications] + [/unit] + [message] + speaker=Carcyn + message= _ "Carcyn Fisher at your service, and this is my friend Shynal." + [/message] + [message] + speaker=Shynal + message= _ "“Friend?” (Giggle) Oh, yes, we’re very good friends." + [/message] + [message] + speaker=Carcyn + message= _ "Or...you know. Thanks so much for getting us out, sir. We would be glad to follow you!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "You are Carcyn the Third I presume?" + [/message] + [if] + [have_unit] + id=Carcyn Fisher + [/have_unit] + [then] + [message] + speaker=Carcyn + message= _ "Don’t remind me. My father is the one who threw me in this hole." + [/message] + [message] + speaker=Carcyn Fisher + message= _ "You stay out of this, son." + [/message] + [message] + speaker=Carcyn + message= _ "Not a chance! I’ve waited all my life to see someone put you in your place. Here is someone you can’t push around!" + [/message] + [message] + speaker=Shynal + message= _ "And we’re leaving this stinking town!" + [/message] + [/then] + [else] + [message] + speaker=Carcyn + message= _ "The only Carcyn now. I’ve waited all my life to see someone to put my father in his place. I guess you did that." + [/message] + [message] + speaker=Shynal + message= _ "You’re the only Carcyn for me." + [/message] + [/else] + [/if] + [/event] + + [event] + name=recruit, recall + [filter] + side=1 + [/filter] + [message] + speaker=Raydah + message= _ "Look at that! He’s not from the Academy." + [/message] + [message] + speaker=Carcyn Fisher + message= _ "Hold your tongue! I can see that! I tolerate advisors but not when they only speak the obvious." + [/message] + [/event] + + [event] + name=last breath + [filter] + id=Carcyn Fisher + [/filter] + [message] + speaker=Ras-Tabahn + message= _ "I warned you not to defy me." + [/message] + [/event] + + # *************************** OPENING / ENDING *************************** + [event] + name=start + + [message] + speaker=Ras-Tabahn + message= _ "Greetings! I am Ras-Tabahn the mage." + [/message] + [message] + speaker=Carcyn Fisher + message= _ "Greetings, traveler. I am Carcyn Fisher the Second. How can I be of service?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I come with an offer. An offer of training in the magical arts. An offer of learning, adventure, and escape from this town." + [/message] + [message] + speaker=Carcyn Fisher + message= _ "No one in my town wishes to “escape”! We don’t care to hear your offer. Peddle your corruption elsewhere." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "The offer is not intended for you, it is for your youth. I will send my agents to every house and public space in this town and repeat my offer. You will allow this." + [/message] + [message] + speaker=Carcyn Fisher + message= _ "I will do no such thing! I will be dead before I allow you to ensorcell our children!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "That may well be true." + [/message] + [/event] + + [event] + name=turn 2 + [message] + speaker=Ras-Tabahn + message= _ "Hmm. The youngsters most willing to leave may be the ones in the jailhouse. I should investigate." + [/message] + [/event] + + [event] + name=capture,die + first_time_only=no + + # Check for a win. + [if] + # If there are no villages left that are not owned by side 1... + [not] + [have_location] + terrain=*^V* + [not] + owner_side=1 + [/not] + [/have_location] + [/not] + # ...OR all enemy units are dead... + [or] + [not] + [have_unit] + side=2 + [/have_unit] + [/not] + [/or] + [then] + [capture_village] + side=1 + x=1-99 + y=1-99 + [/capture_village] + [delay] + time=800 + [/delay] + [fire_event] + name=get_kids + [/fire_event] + # ...then the player wins. + [message] + speaker=narrator + image=portraits/humans/dark-adept.png~SCALE(93, 93) + message= _ "You can now recruit dark adepts!" + [/message] + # This message is actually a lie. DA recruitment is not added + # until the end of the next scenario. We don't want the + # automatically-recruited DA's there to be able to recruit more. + [clear_variable] + name=side_2_limited_recruits,side_2_limited_recruits_length + [/clear_variable] + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/then] + [else] + [allow_undo] + [/allow_undo] + [/else] + [/if] + [/event] + + [event] + name=time over + + [message] + speaker=Ras-Tabahn + message= _ "This has taken too long. We will surely miss our meeting with Ardonna now." + [/message] + [/event] + + {HERO_DEATHS} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..12c965adc074 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/09_Training_Session.cfg @@ -0,0 +1,422 @@ +#textdomain wesnoth-sota + +# Ras-Tahban starts in the keep, and the DAs are in castle tiles. It looks better with +# the keep not actually attached to the castle. So, to make the castle tiles function, +# there is an invisible castle overlay on one of the grass tiles in between the two (3,10) +# making the castle continuous. Nothing is supposed to be recruited on the grass tile +# with the overlay, so the loyal kids are both set to start on it to block it. But, the +# kids may be dead. In that case, a dummy unit is used. Its image is an empty .png, +# and has no movement points. It is petrified so it can't be attacked, and It is deleted +# after the first turn (when no more recruits are possible.) + +[scenario] + name= _ "Training Session" + map_data="{campaigns/Secrets_of_the_Ancients/maps/09_Training_Session.map}" + + id=09_Training_Session + next_scenario=10_Merfolk_Revenge + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=portraits/humans/dark-adept.png + scale=no + [/background_layer] + story= _ "Ras-Tabahn’s offer enticed a large group of youngsters all eager to train as magi. The fact that it was illicit training in the dark arts was unimportant. More important was the escape from the drudgery of a fixed future, planned in advance by their parents. Ras-Tabahn spent a number of days in the forest outside of Carcyn instructing them on how to call on the spirit world and channel a small amount of its power. Soon after they moved on, they came across three farmsteads on the riverbank that had clearly been raided." + [/part] + {JOURNEY_PART 9} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + turns=-1 + + [side] + {SIDE_1_RAS-TABAHN} + gold=0 + [/side] + + [side] + side=2 + controller=ai + no_leader=yes + gold=0 + color=black + hidden=yes + [ai] + aggression=0.6 + [/ai] + [/side] + + # *************************** MACROS *************************** + + # This macro is the same for all difficulty levels. +#define PLACE_CORPSE_1 X Y + [unit] + x,y={X},{Y} + type=Soulless + side=2 + [/unit] +#enddef + + # This macro uses a different unit type for EASY difficulty level. +#ifdef EASY +#define PLACE_CORPSE_2 X Y + [unit] + x,y={X},{Y} + type=Walking Corpse + side=2 + [/unit] +#enddef +#else +#define PLACE_CORPSE_2 X Y + [unit] + x,y={X},{Y} + type=Soulless + side=2 + [/unit] +#enddef +#endif + + # This uses a different unit type for HARD difficulty level. +#ifdef HARD +#define PLACE_CORPSE_3 X Y + [unit] + x,y={X},{Y} + type=Soulless + side=2 + [/unit] +#enddef +#else +#define PLACE_CORPSE_3 X Y + [unit] + x,y={X},{Y} + type=Walking Corpse + side=2 + [/unit] +#enddef +#endif + +#define PLACE_DARK_ADEPT X Y TRAIT1 TRAIT2 GENDER + [unit] + x={X} + y={Y} + type=Dark Adept SotA + side=1 + moves=0 + gender={GENDER} # Otherwise, they're all male, and there's no reason for that. + [modifications] + {TRAIT_{TRAIT1}} + {TRAIT_{TRAIT2}} + [/modifications] + facing=sw + [/unit] +#enddef + + # *************************** PRESTART *************************** + [event] + name=prestart + + # Gold is removed now, and will be returned later. + [store_gold] + side=1 + variable=rastabahn_gold + [/store_gold] + + # This is exactly enough to recall five units. + [modify_side] + side=1 + gold=100 + [/modify_side] + + [objectives] + side=1 + [objective] + description= _ "Destroy all the undead units" + {OBJECTIVE_FOOTNOTE _"(there will be three waves)"} + condition=win + [/objective] + [objective] + description= _ "Death of all five dark adepts" + condition=lose + [/objective] + [objective] + description= _ "Death of Ras-Tabahn" + condition=lose + [/objective] + + [gold_carryover] + bonus=no + [/gold_carryover] + + {HAS_NO_TURN_LIMIT} + [note] + description= _ "You will not earn gold this scenario, but your gold from the previous scenario will be available in the next." + [/note] + [/objectives] + + [item] + x,y=22,3 + image=scenery/village-human-burned4.png + [/item] + [item] + x,y=24,7 + image=scenery/village-human-burned1.png + [/item] + [item] + x,y=21,11 + image=scenery/village-human-burned2.png + [/item] + + {PLACE_DARK_ADEPT 4 7 QUICK INTELLIGENT male} + {PLACE_DARK_ADEPT 4 8 STRONG RESILIENT female} + {PLACE_DARK_ADEPT 4 9 QUICK RESILIENT female} + {PLACE_DARK_ADEPT 4 10 RESILIENT INTELLIGENT male} + {PLACE_DARK_ADEPT 4 11 STRONG QUICK female} + + [recall] + id=Shynal + x,y=3,10 + [/recall] + [recall] + id=Carcyn + x,y=3,10 + [/recall] + [modify_unit] + [filter] + id=Shynal + [/filter] + facing=sw + moves=0 + [/modify_unit] + [modify_unit] + [filter] + id=Carcyn + [/filter] + facing=nw + moves=0 + [/modify_unit] + + [modify_unit] + [filter] + id=Ras-Tabahn + [/filter] + facing=ne + [/modify_unit] + + [if] + [not] + [have_unit] + x,y=3,10 + [/have_unit] + [/not] + [then] + [unit] + name="" + x,y=3,10 + side=2 # By default, side 1 gets an orb and 2 doesn't. + type=Dummy + id=dummy + [/unit] + [petrify] + id=dummy + [/petrify] + [/then] + [/if] + + {FREEZE_UNIT (Ras-Tabahn)} + [/event] + + # *************************** PLAY *************************** + [event] + name=turn 1 end + + [terrain] + x,y=3,10 + terrain="" + layer=overlay + [/terrain] + [modify_side] + side=1 + gold=0 + [/modify_side] + [kill] + id=dummy + [/kill] + + [event] + name=turn_refresh + first_time_only=no + [modify_side] + side=1 + gold=0 + [/modify_side] + [/event] + [/event] + + [event] + name=turn 3 + {REPEAT 4 {PLACE_CORPSE_2 24 7}} + {REPEAT 2 {PLACE_CORPSE_3 24 7}} + [/event] + + [event] + name=turn 5 + {REPEAT 4 {PLACE_CORPSE_1 22 3}} + {REPEAT 3 {PLACE_CORPSE_3 22 3}} + + # The player isn't allowed to win before turn 5, but now they can. + [event] + name=die + first_time_only=no + [filter] + side=2 + [/filter] + + # Check for a win. + [if] + # If there are no corpses or soulless left... + [not] + [have_unit] + side=2 + [/have_unit] + [/not] + [then] + # This allow_recruit didn't happen at the end of the previous + # scenario so that DAs couldn't recruit each other in this one. + [allow_recruit] + side=1 + # This type of Dark Adept cannot advance to a lich. + type=Dark Adept SotA + [/allow_recruit] + # Gold was removed at the beginning, and is returned now. + [gold] + side=1 + amount=$rastabahn_gold + [/gold] + [clear_variable] + name=rastabahn_gold + [/clear_variable] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 100} + [/endlevel] + [/then] + [/if] + [/event] + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=die + first_time_only=no + [filter] + side=1 + [/filter] + + # Check for a loss. + [if] + # If there are none of the *original* DA's left (the kids don't count)... + [not] + [have_unit] + type=Dark Adept SotA, Dark Sorcerer SotA, Necromancer SotA + [and] + [filter_wml] + upkeep=full + [/filter_wml] + [/and] + [/have_unit] + [/not] + [then] + [endlevel] + result=defeat + [/endlevel] + [/then] + [/if] + [/event] + + [event] + name=start + [scroll_to] + x,y=23,10 + [/scroll_to] + [delay] + time=1000 + [/delay] + [message] + speaker=Ras-Tabahn + message= _ "What happened here, I wonder. Well, no matter. What was bad for these families is good for us. I will animate them, and you will attack. Practice both freezing and life force attacks. You may each choose one soldier from our army for protection, and I will call it up for you. After that, I will not help. I intend most of you to survive this battle, so try not to die." + [/message] + + [if] + {BOTH_KIDS_LIVE} + [then] + [message] + speaker=Ras-Tabahn + message= _ "You kids may watch." + [/message] + [message] + speaker=Shynal + message= _ "Can we help?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "As you wish. (Cough, cough)" + [/message] + [/then] + [/if] + + [if] + {ONE_KID_LIVES} + [then] + [message] + speaker=Ras-Tabahn + message= _ "You may watch." + [/message] + # Only one of the two following messages will be read. + [message] + speaker=Carcyn + message= _ "Can I help?" + [/message] + [message] + speaker=Shynal + message= _ "Can I help?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "As you wish. (Cough, cough)" + [/message] + [/then] + [/if] + + [message] + speaker=narrator + image=logo.png + message= _ "You can recruit from in front of each dark adept during the first turn only." + [/message] + + {REPEAT 3 {PLACE_CORPSE_1 21 11}} + {REPEAT 4 {PLACE_CORPSE_3 21 11}} + + [modify_unit] + [filter] + side=1 + [/filter] + facing=se + [/modify_unit] + [/event] + + [event] + name=time over + + [message] + speaker=Ras-Tabahn + message= _ "This has taken too long. We will surely miss our meeting with Ardonna now." + [/message] + [/event] + + {HERO_DEATHS} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..09fb43ca977a --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/10_Merfolk_Revenge.cfg @@ -0,0 +1,578 @@ +#textdomain wesnoth-sota + +# At the end of this scenario, Ras-Tabahn and his army and gold have to be stored so they +# can be brought back when R-T rejoins Ardonna. There is some dialog about having at +# least 50 gold because that's probably necessary to win Entering_the_Northlands on hard. +# EtN is the next scenario chronologically, but not the next in the game, so having to +# come all the way back to this scenario for more gold would be annoying--hence the tip. +# You get the ability to recruit chocobones when a unit inspects the bones of a +# flightless bird half-buried in the sand. There is one long event for this. Almost the +# same event appears in Mountain_Pass if the player doesn't find the bones here. + +[scenario] + name= _ "Merfolk Revenge" + map_data="{campaigns/Secrets_of_the_Ancients/maps/10_Merfolk_Revenge.map}" + + id=10_Merfolk_Revenge + next_scenario=11_Battleground + + [story] + [part] + [background_layer] + image=portraits/merfolk/triton.png + scale=no + [/background_layer] + story= _ "Ras-Tabahn’s party reached the end of the elf road near the Great River where they were to wait for Ardonna. As they arrived, another party did as well." + [/part] + {JOURNEY_PART 10} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 25 26 27} + + [side] + {SIDE_1_RAS-TABAHN} + {GOLD 150 130 110} + [/side] + + {STARTING_VILLAGES 2 5} + {STARTING_VILLAGES 1 5} + + [side] + side=2 + controller=ai + user_team_name= _ "Merfolk" + type=Merman Triton + name= _ "Okean" + id=Okean + recruit=Merman Netcaster, Merman Fighter, Merman Hunter, Mermaid Initiate + color=purple + facing=sw + {GOLD 210 290 370} + {FLAG_VARIANT long} + [ai] + caution=3 + recruitment_diversity=3.0 + [/ai] + [/side] + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat the enemy leader" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_RAS-TABAHN} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [recall] + id=Shynal + x,y=8,14 + moves=0 + [/recall] + [recall] + id=Carcyn + x,y=8,15 + moves=0 + [/recall] + + [set_variable] + name=bird_bones_found + value=no + [/set_variable] + [item] + x,y=32,12 + image=items/bird-bones.png + [/item] + [/event] + + [event] + name=start + [/event] + + # *************************** PLAY *************************** + + # This long event creates a chocobone when a unit moves to where bird bones are + # buried in the sand. + # There is a short conversation, but there are many possibilities for which units + # are involved, so there are a lot of ifs. There is also a lot of animation around + # the appearance of the chocobone involving a skeleton and a flightless-bird unit. + [event] + name=moveto + [filter] + x,y=32,12 + side=1 + [/filter] + + [if] + [variable] + name=unit.race + equals=undead + [/variable] + [then] + # Bones examined by a ghost, skeleton, ghoul, or corpse. + [message] + speaker=$unit.id + message= _ "Bones. Claws and wings." + [/message] + [/then] + [else] + # Bones examined by a human. + [message] + speaker=$unit.id + message= _ "There are some large bones here. I can see claws and wings." + [/message] + [/else] + [/if] + + # Choose a human for Ras-Tabahn to talk to. + [store_unit] + [filter] + race=human + x=1-99 + [not] + id=Ras-Tabahn + [/not] + [/filter] + variable=all_other_humans + [/store_unit] + [if] + [variable] + name=all_other_humans.length + greater_than=0 + [/variable] + [then] + [set_variable] + name=other_human + value=$all_other_humans[0].id + [/set_variable] + [/then] + [else] + [set_variable] + name=other_human + value=nobody + [/set_variable] + [/else] + [/if] + [clear_variable] + name=all_other_humans + [/clear_variable] + + [if] + [have_unit] + id=$other_human + [/have_unit] + [then] + [message] + speaker=$other_human + message= _ "How odd. I wonder what are they from. A gryphon perhaps?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "A large flightless bird would be my guess." + [/message] + [message] + speaker=$other_human + message= _ "Well, there is an easy way to find out." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Indeed. Let us see." + [/message] + [/then] + [else] + [message] + speaker=Ras-Tabahn + message= _ "I wonder what are they from. A large flightless bird perhaps? Let us see." + [/message] + [/else] + [/if] + + # Remove the bones and show a resurected bird: + [animate_unit] + # Fire the recruitment animation (actually an extra_anim): + [filter] + id=Ras-Tabahn + [/filter] + flag=recruit2 + [facing] + x,y=32,12 + [/facing] + [/animate_unit] + [remove_item] + # Remove the bones: + x,y=32,12 + [/remove_item] + [unit] + # Show the bird fading in. The engine will automatically find an empty + # location for it. + x,y=32,12 + id=bird + type=Bone Bird + side=1 + facing=se + animate=yes + [/unit] + [store_unit] + # Store the bird so we can get its location later: + [filter] + id=bird + [/filter] + variable=bird + [/store_unit] + + [message] + speaker=$other_human + message= _ "Oh, you were right!" + [/message] + + [message] + speaker=Ras-Tabahn + message= _ "I wonder if it could carry someone light. A skeleton maybe." + [/message] + + # Replace the bird with a Chocobone: + [animate_unit] + # Fire the recruitment animation (actually an extra_anim): + [filter] + id=Ras-Tabahn + [/filter] + flag=recruit2 + [/animate_unit] + [unit] + # Animate a skeleton getting recruited: + side=1 + animate=yes + type=Skeleton + id=rider + placement=leader + [/unit] + [store_unit] + # Remove the skeleton, but store it so we can get its location: + [filter] + id=rider + [/filter] + variable=rider + kill=yes + [/store_unit] + [move_unit_fake] + # Show a skeleton moving from where the skeleton appeared to wherever + # the bird is: + type=Skeleton + side=1 + x=$rider.x, $bird.x + y=$rider.y, $bird.y + [/move_unit_fake] + [kill] + id=bird + animate=no + [/kill] + [unit] + # Now we show a joined skeleton and bird: + x,y=$bird.x, $bird.y + type=Chocobone + side=1 + animate=no + facing=se + [/unit] + + [message] + speaker=Ras-Tabahn + message= _ "Splendid! These birds could be quite useful." + [/message] + [allow_recruit] + side=1 + type=Chocobone + [/allow_recruit] + [message] + speaker=narrator + image=units/undead-skeletal/chocobone.png~SCALE(93,93) + message= _ "You can now recruit chocobones!" + [/message] + [set_variable] + # This variable causes the bird bones *not* to appear on Mountain_Pass. + # It won't be cleared until then. + name=bird_bones_found + value=yes + [/set_variable] + [clear_variable] + name=bird, rider, other_human + [/clear_variable] + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=enemies defeated + + # Copy Ras-Tabahn and his units to an array, saving them for later. We don't + # kill them because that would remove them from the screen during linger + # mode. They won't automatically be healed, so do that first. + [heal_unit] + [filter] + side=1 + [/filter] + amount=full + restore_statuses=yes + [/heal_unit] + [store_unit] + [filter] + side=1 + [/filter] + variable=rastabahn_recall_list + [/store_unit] + # Change the location of the copies to be the recall list instead of the map: + [for] + array=rastabahn_recall_list + variable=i + [do] + [set_variable] + name=rastabahn_recall_list[$i].x + value=recall + [/set_variable] + [set_variable] + name=rastabahn_recall_list[$i].y + value=recall + [/set_variable] + [/do] + [/for] + + # We want to be able to add Ras-Tabahn's gold to the total when the two + # characters are reunited, but only Ardonna's gold will be carried over + # from the scenario right before that. We are storing R-T's gold now, + # but we want to store what it would be after the bonus. We need to + # calculate the bonus and store it before ending the scenario. + [store_turns] + variable=turns + [/store_turns] + [store_villages] + variable=villages + [/store_villages] + [store_gold] + side=1 + variable=gold + [/store_gold] + + # This is the formula used by the game: + [set_variable] + name=rastabahn_gold + value="$((($turns - $turn_number) * ($villages.length + 2) + ($gold)) * 0.4)" + [/set_variable] + [set_variable] + name=rastabahn_gold + round=0 + [/set_variable] + + [set_variable] + name=gold_message + value= _ "Hopefully this will be enough gold." + [/set_variable] + + [if] + [variable] + name=rastabahn_gold + less_than=46 + [/variable] + [then] + [set_variable] + name=gold_message + value= _ "We have won, but I am afraid this may not be enough gold." + [/set_variable] + [/then] + [/if] + + [if] + [variable] + name=rastabahn_gold + greater_than=55 + [/variable] + [then] + [set_variable] + name=gold_message + value= _ "Good. We ended with a fair amount of gold." + [/set_variable] + [/then] + [/if] + + # During the next message about gold, the carryover report will not have been + # shown yet, so the player won't know how much gold R-T is talking about. To + # fix that, we temporarily set the amount of gold shown at the top of the + # screen to be equal to the carryover amount. Then we have to set it back to + # make the carrover report correct. + [gold] + side=1 + amount="$(-1 * $gold + $rastabahn_gold)" + [/gold] + [message] + speaker=Ras-Tabahn + message=$gold_message + [/message] + [gold] + side=1 + amount="$(-1 * $rastabahn_gold + $gold)" + [/gold] + + # R-T gold should not be negative: + [if] + [variable] + name=rastabahn_gold + less_than=0 + [/variable] + [then] + [set_variable] + name=rastabahn_gold + value=0 + [/set_variable] + [/then] + [/if] + + # We don't need "bonus=yes" etc., but it will cause the carryover report + # to be generated correctly: + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [clear_variable] + name=turns, villages, gold, gold_message + [/clear_variable] + [/event] + + [event] + name=start + [message] + speaker=Okean + message= _ "You! You have destroyed the town of Carcyn!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "The town is hardly destroyed. I just encouraged a change of leadership." + [/message] + [message] + speaker=Okean + message= _ "Your words mock us. Those humans were valuable trading partners of ours. We will have justice!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Actually, I expect you will follow them into the ground if you try to harm us." + [/message] + + [if] + {BOTH_KIDS_LIVE} + [then] + [message] + speaker=Ras-Tabahn + message= _ "This is going to cost us, but I want to keep some gold around for emergencies — I think 50 is about right. You kids help me collect some. (Cough, cough)" + [/message] + [message] + speaker=Carcyn + message= _ "Right away sir." + [/message] + [message] + speaker=Shynal + message= _ "Are you feeling well?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Yes, yes. I’m quite all right." + [/message] + [message] + speaker=Shynal + message= _ "I don’t fancy wading in the water to fight these things." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "No problem. We can lure them onto land." + [/message] + [message] + speaker=Shynal + message= _ "How?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Have you never been fishing before? With bait of course." + [/message] + [/then] + [/if] + + [if] + {ONE_KID_LIVES} + [then] + [message] + speaker=Ras-Tabahn + message= _ "This is going to cost us, but I want to keep some gold around for emergencies — I think 50 is about right. Help me collect some. (Cough, cough)" + [/message] + # Only one of the two following messages will be read. + [message] + speaker=Carcyn + message= _ "Right away sir. Are you feeling well?" + [/message] + [message] + speaker=Shynal + message= _ "Right away sir. Are you feeling well?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Yes, yes. I’m quite all right." + [/message] + [message] + speaker=Carcyn + message= _ "I don’t fancy wading in the water to fight these things." + [/message] + [message] + speaker=Shynal + message= _ "I don’t fancy wading in the water to fight these things." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "No problem. We can lure them onto land." + [/message] + [message] + speaker=Carcyn + message= _ "How?" + [/message] + [message] + speaker=Shynal + message= _ "How?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Have you never been fishing before? With bait of course." + [/message] + [/then] + [/if] + + [if] + {NO_KIDS_LIVE} + [then] + [message] + speaker=Ras-Tabahn + message= _ "This is going to cost me, but I want to keep some gold around for emergencies — I think 50 is about right. I’d better send someone to collect some. (Cough, cough) I hope I can lure these fish onto land. Maybe I should recruit some bait." + [/message] + [/then] + [/if] + [/event] + + [event] + name=time over + + [message] + speaker=narrator + image=logo.png + message= _ "You have no more time." + [/message] + [/event] + + {HERO_DEATHS} + {KIDS_ADVANCE} +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg new file mode 100644 index 000000000000..68896048a9b9 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/11_Battleground.cfg @@ -0,0 +1,256 @@ +#textdomain wesnoth-sota + +# A loyal saurain healer is added at the end of this scenario--very useful. + +# This is slightly hackish since the closer contains VAR_NAME... +# wmlindent: opener "{NEAREST_HEX " +# wmlindent: closer "location}" + +[scenario] + name= _ "Battleground" + map_data="{campaigns/Secrets_of_the_Ancients/maps/11_Battleground.map}" + + id=11_Battleground + next_scenario=12_Walking_Trees + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "11 IV, 23 YW + +Rastaban seems like an acceptable ally. He is quite different from the stodgy teachers at the academy who were so full of themselves and loved to hear themselves talk. He also never once disparaged me for being a girl or even mentioned my hair. As long as he continues to respect me, everything will go fine. If not, well, I am surrounded by the remnants of those who assumed I was weak." + [/part] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "The question remains whether or not it is wise to trust him. As he said, I don't need to at this time, but if we are to travel together it will become necessary. He has shown me something marvelous in the ghosts, so that is a large mark in his favor. On consideration, I have decided to trust him, but only provisionally. For now, we are both vulnerable, and he must know that attacking me would be unwise. However, if he were to become indestructible first, I would do well to stay alert." + [/part] + [part] + [background_layer] + image=story/battle.jpg + scale=no + [/background_layer] + story= _ "The site of the battle was immediately obvious when I came upon it. Multiple fortresses stared at each other across a basin that was now mostly flooded. Sluggish water pooled near the road, and the slime of decay was on every surface. Weapons, armor and less-easily identifiable bits of detritus rose from the swamp. I could easily imagine great siege engines heaving stones at walls that were now crumbled ruins, and the clash of combatants who were now bleached white bones jutting from the wreckage." + [/part] + [part] + [background_layer] + image=portraits/undead/ghost.png + scale=no + [/background_layer] + story= _ "Well, these combatants were going to get a second chance for glory when they fought for me. The more strong willed among them may even remember desiring it." + [/part] + {JOURNEY_PART 11} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 30 31 32} + + [side] + {SIDE_1_ARDONNA} + gold=0 + # Gold is not set here because if Ardonna's gold is higher, it will replace + # this value anyway (because of the original bonus rules). If we use zero, + # Ardonna's previous carryover gold will always be higher and will be what + # side one starts with. We'll add more in the prestart event. + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Saurians" + team_name=bad + type=Saurian Soothsayer + name= _ "Krissaz" + id=Krissaz + facing=se + recruit=Saurian Augur,Saurian Soothsayer,Saurian Oracle + {GOLD 100 150 200} + [/side] + + [side] + side=3 + controller=ai + user_team_name= _ "Nagas" + team_name=bad + type=Naga Myrmidon + name= _ "Blianxkep" + id=Blianxkep + facing=sw + recruit=Naga Fighter,Naga Warrior + {GOLD 180 230 300} + [/side] + + # *************************** PRESTART *************************** + + [event] + name=prestart + + [gold] + # This is actually the default starting gold. + side=1 + amount=100 + [/gold] + + [objectives] + side=1 + [objective] + description= _ "Defeat all enemy leaders" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + {RECALL_LOYAL_UNITS} + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=start + + [message] + speaker=narrator + image=portraits/undead/ghost.png~SCALE(93, 93) + message= _ "You can now recruit ghosts!" + [/message] + + [allow_recruit] + side=1 + type=Ghost + [/allow_recruit] + + [message] + speaker=Blianxkep + message= _ "The fish people gave good value for the last load. More metal of that type is desired." + [/message] + [message] + speaker=Krissaz + message= _ "Firssst, pay us our ssshare." # no spellcheck + [/message] + [message] + speaker=Blianxkep + message= _ "Wait, who approaches?" + [/message] + [message] + speaker=Ardonna + message= _ "I am a mage and not a threat to you gentle...reptiles. I wish only to animate some spirits, so I won’t disturb your salvage operation." + [/message] + [message] + speaker=Krissaz + message= _ "No! You can’t make thisss place more haunted than it isss! The femalesss already won’t come here, and we are forced to rely on these ssserpents for protection." # no spellcheck + [/message] + [message] + speaker=Ardonna + message= _ "I was only informing you out of courtesy. In truth, I don’t require your permission." + [/message] + [message] + speaker=Blianxkep + message= _ "We will help you drive off this foe if you will consider your share paid in full." + [/message] + [message] + speaker=Krissaz + message= _ "When the mage isss dead and her sssouls put to ressst, we agree. We will have been compensssated adequately." # no spellcheck + [/message] + [message] + speaker=Ardonna + message= _ "Every time..." + [/message] + [/event] + + [event] + name=victory + + # Find the nearest hex to (16,4) that doesn't have unit on it: + {NEAREST_HEX 16 4 20 ( + [not] + [filter] + [/filter] + [/not] ) + location} + + [move_unit_fake] + type=Saurian Soothsayer + x=8, $location.x + y=4, $location.y + side=1 + [/move_unit_fake] + + [unit] + name= _ "Vendraxis" + id=Vendraxis + type=Saurian Soothsayer + x=$location.x + y=$location.y + side=1 + {IS_LOYAL} + [modifications] + {TRAIT_LOYAL} + {TRAIT_RESILIENT} + [/modifications] + [/unit] + + [clear_variable] + name=location + [/clear_variable] + + [message] + speaker=Vendraxis + message= _ "Human, take me with you!" + [/message] + [message] + speaker=Ardonna + message= _ "Why should I allow that? Your people attacked me!" + [/message] + [message] + speaker=Vendraxis + message= _ "I tried to ssstop them! For myself, I wissshed not to attack. I wissshed to learn. My race livesss but a short time compared to yoursss. I would learn to exssstend my ssspan, and the planetsss told me you know this sssecret." # no spellcheck + [/message] + [message] + speaker=Ardonna + message= _ "Actually, I am searching for that secret now. But could you follow the orders of a woman?" + [/message] + [message] + speaker=Vendraxis + message= _ "I have ssstared into the darknesss between the starsss and not been intimidated by the void, but your mind holdsss a darknesss of another kind, frightening and forbidden by my clan. I sssubmit to your power. Now that I know you are female, I will find it easier as it is the way of my kind." # no spellcheck + [/message] + [message] + speaker=Ardonna + message= _ "Very well, come along. I am Ardonna." + [/message] + [message] + speaker=Vendraxis + message= _ "Yesss, but the planetsss tell me your name isss now untrue. I do not underssstand thisss." # no spellcheck + [/message] + [message] + speaker=Ardonna + message= _ "Nor do I. Your planets are quite cryptic." + [/message] + [message] + speaker=Vendraxis + message= _ "They reveal what they will." + [/message] + [/event] + + [event] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} +[/scenario] 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 new file mode 100644 index 000000000000..838792a9f0e7 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/12_Walking_Trees.cfg @@ -0,0 +1,391 @@ +#textdomain wesnoth-sota + +# There is no leader for side 2, but the side starts with a canrecruit unit who leaves +# at the beginning. Woses spawn on many turns, but they are invisible on their forest +# hexes. So, in their first turn, they move one hex and tear up the dirt on their +# starting location. That way the player isn't totally surprised. + +[scenario] + name= _ "Walking Trees" + map_data="{campaigns/Secrets_of_the_Ancients/maps/12_Walking_Trees.map}" + + id=12_Walking_Trees + next_scenario=13_Together_Again + + [story] + [part] + [background_layer] + image=story/elf-road.jpg + scale=no + [/background_layer] + story= _ "17 IV, 23 YW + +My primary objective was met, and I had been able to press a number of ghosts into service. Also, I had a new companion with a talent for healing. I doubted that Ras-Tabahn was already waiting at the appointed place, but I still wanted to hurry, so we followed the elf road north as quickly as we could. Fortunately, it was not in bad repair, though in many places it was overgrown, leaving only a few smooth cobbles to mark the way. The second day, we were still deep in the woods when we encountered an elf sorceress." + [/part] + {JOURNEY_PART 12} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 18 18 18} + victory_when_enemies_defeated=no + + [side] + {SIDE_1_ARDONNA} + {GOLD 200 190 180} + [/side] + + [side] + side=2 + no_leader=yes + controller=ai + user_team_name= _ "Forest" + team_name=bad + gold=0 + income=-2 + color=teal + [unit] + type=Elvish Enchantress + x,y=24,2 + name=_ "Isthiniel" + id=Isthiniel + canrecruit=yes + facing=sw + [/unit] + hidden=yes + {FLAG_VARIANT wood-elvish} + [/side] + + # For each difficulty level, the first 16 woses are level-1, the rest are level-2. +#ifdef EASY +#define MAX_NUMBER_OF_WOSES + 18 +#enddef +#define WOSES_PER_TURN + 4 +#enddef +#endif + +#ifdef NORMAL +#define MAX_NUMBER_OF_WOSES + 22 +#enddef +#define WOSES_PER_TURN + 4 +#enddef +#endif + +#ifdef HARD +#define MAX_NUMBER_OF_WOSES + 25 +#enddef +#define WOSES_PER_TURN + 5 +#enddef +#endif + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Move Ardonna to the northeast corner of the map" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_ARDONNA} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + {RECALL_LOYAL_UNITS} + + [set_variable] + name=wose_x + value=15 + [/set_variable] + [set_variable] + name=wose_y + value=13 + [/set_variable] + [set_variable] + name=number_of_woses + value=1 + [/set_variable] + [/event] + + # *************************** PLAY *************************** + [event] + name=start,side 2 turn 3 refresh,side 2 turn 6 refresh,side 2 turn 9 refresh,side 2 turn 11 refresh + first_time_only=no + + [set_variable] + name=woses_this_turn + value=1 + [/set_variable] + [while] + [and] + [variable] + name=number_of_woses + less_than_equal_to={MAX_NUMBER_OF_WOSES} + [/variable] + [variable] + name=woses_this_turn + less_than_equal_to={WOSES_PER_TURN} + [/variable] + [/and] + + # Put a wose in a random location with some constraints: + [do] + # [do] keep choosing a location [while] the location is no good. + [while] + [have_location] + x=$wose_x + y=$wose_y + terrain=!,*^F* # No good. Not a forest hex. + + [or] + terrain=Ke + [and] + x=$wose_x + y=$wose_y + radius=7 # Too close to the player’s keep. + [/and] + [/or] + + [or] + [filter] + side=1 + [/filter] + [and] + x=$wose_x + y=$wose_y + radius=2 + # The wose would be adjacent to one of the + # player's units after it moved one hex. + [/and] + [/or] + + [or] + x=$wose_x + y=$wose_y + [filter] + [/filter] # Another unit is there already. + [/or] + [/have_location] + + [do] + # Choose a random location, which gets closer to the + # top corner after turn 8. + [if] + [variable] + name=turn_number + greater_than=8 + [/variable] + [then] + [set_variable] + name=wose_x + rand=13..27 + [/set_variable] + [set_variable] + name=wose_y + rand=1..13 + [/set_variable] + [/then] + [else] + [set_variable] + name=wose_x + rand=1..27 + [/set_variable] + [set_variable] + name=wose_y + rand=1..21 + [/set_variable] + [/else] + [/if] + [/do] + [/while] + + [if] + [variable] + name=number_of_woses + greater_than=16 + [/variable] + [then] + [set_variable] + name=wose_type + value=Elder Wose + [/set_variable] + [/then] + [else] + [set_variable] + name=wose_type + value=Wose + [/set_variable] + [/else] + [/if] + + [unit] + type=$wose_type + x=$wose_x + y=$wose_y + side=2 + [/unit] + + [set_variable] + name=number_of_woses + add=1 + [/set_variable] + [set_variable] + name=woses_this_turn + add=1 + [/set_variable] + [/do] + [/while] + + [store_locations] + variable=new_wose_locations + terrain=*^F* + [filter] + side=2 + [/filter] + [/store_locations] + + [if] + [variable] + name=turn_number + greater_than=1 + [/variable] + [then] + [modify_unit] + [filter] + [filter_location] + find_in=new_wose_locations + [/filter_location] + [/filter] + moves=1 + [/modify_unit] + [/then] + [/if] + [/event] + + # If a newly spawned wose is moving from its starting location, change the location + # to dark dirt. (The wose will probably be invisible in the forest, but the dirt + # will tell where it spawned.) + [event] + name=moveto + first_time_only=no + [filter] + side=2 + [/filter] + [filter_condition] + [have_location] + x,y=$x2,$y2 + find_in=new_wose_locations + [/have_location] + [/filter_condition] + + [terrain] + terrain=Rb + x,y=$x2,$y2 + [/terrain] + [item] + x,y=$x2,$y2 + image=items/dirt1.png + [/item] + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=start + [message] + speaker=Isthiniel + message= _ "I felt our dead stirring and corruption descending on the forest. When I left to investigate, I expected to find grim, veiled forces at work. Instead I find a human mage boldly marching down our road! I will not allow you to continue to molest our peace, and you must release the dead you have enslaved." + [/message] + [message] + speaker=Ardonna + message= _ "Well, that I won’t do. However, if you do not attack, you will be rid of me soon, as I only wish to leave these woods." + [/message] + [message] + speaker=Isthiniel + message= _ "Attack? No, I cannot. Most of my people won’t come here; it is only duty that drives me. However, the woods themselves are disturbed, and they will cast you out on their own. I can feel them awaken." + [/message] + [terrain] + terrain=Rb + x,y=24,4 + [/terrain] + [item] + x,y=24,4 + image=items/dirt1.png + [/item] + [move_unit_fake] + type=Ancient Wose + x=24, 22 + y=4, 3 + [/move_unit_fake] + [unit] + type=Ancient Wose + name= _ "Dolmathengalin" + id=Dolmathengalin + x,y=22,3 + side=2 + [/unit] + [message] + speaker=Dolmathengalin + message= _ "You are greeted daughter of elves. Why does the forest moan in despair?" + [/message] + [message] + speaker=Vendraxis + message= _ "That tree can talk!" + [/message] + [message] + speaker=Isthiniel + message= _ "That dark mage has woken our dead and stifles the air with her very presence. Please wake your people, Elder, and destroy her." + [/message] + [message] + speaker=Dolmathengalin + message= _ "This shall be done." + [/message] + [message] + speaker=Isthiniel + message= _ "I shall leave you. I have no wish to witness this violence." + [/message] + [kill] + id=Isthiniel + [/kill] + [move_unit_fake] + type=Elvish Enchantress + x=24, 27 + y=2, 1 + [/move_unit_fake] + [/event] + + [event] + name=moveto + [filter] + id=Ardonna + x,y=27,1 + [/filter] + + [clear_variable] + name=wose_x, wose_y, wose_type, random, number_of_woses, woses_this_turn, new_wose_locations + [/clear_variable] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + +#undef MAX_NUMBER_OF_WOSES +#undef WOSES_PER_TURN +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/13_Together_Again.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/13_Together_Again.cfg new file mode 100644 index 000000000000..6da5ce726e2e --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/13_Together_Again.cfg @@ -0,0 +1,204 @@ +#textdomain wesnoth-sota + +[scenario] + name= _ "Together Again" + map_data="{campaigns/Secrets_of_the_Ancients/maps/13_Together_Again.map}" + + id=13_Together_Again + next_scenario=14_Entering_the_Northlands + + [story] + [part] + [background_layer] + image=story/elf-road.jpg + scale=no + [/background_layer] + story= _ "21 IV, 23 YW + +I never would have been able to escape the trees without ghosts. They had proven their worth and saved my life. Thus Ras-Tabahn had also moved up in my estimation. After we escaped the trees, we met no more resistance on the road, and soon arrived at the meeting place where Ras-Tabahn was waiting." + [/part] + {JOURNEY_PART 13} + [/story] + + {DEFAULT_MUSIC_PLAYLIST} + + [side] + {SIDE_1_ARDONNA} + gold=0 + [/side] + + [event] + name=prestart + + [for] + array=rastabahn_recall_list + variable=i + [do] + [unstore_unit] + variable=rastabahn_recall_list[$i] + [/unstore_unit] + [/do] + [/for] + [gold] + side=1 + amount=$rastabahn_gold + [/gold] + [clear_variable] + name=rastabahn_gold,rastabahn_recall_list + [/clear_variable] + + [recall] + id=Shynal + x,y=13,2 + [/recall] + [recall] + id=Carcyn + x,y=14,3 + [/recall] + [recall] + id=Ras-Tabahn + x,y=14,2 + [/recall] + [modify_unit] + [filter] + side=1 + [/filter] + facing=sw + [/modify_unit] + [modify_unit] + [filter] + id=Ardonna + [/filter] + facing=ne + [/modify_unit] + [/event] + + [event] + name=start + + [delay] + time=1000 + [/delay] + [move_unit] + id=Ardonna + to_x=13 + to_y=3 + [/move_unit] + [recall] + id=Bone Captain + x,y=12,3 + show=no + [/recall] + [recall] + id=Vendraxis + x,y=13,4 + show=no + [/recall] + [modify_unit] + [filter] + id=Vendraxis + [/filter] + facing=ne + [/modify_unit] + [message] + speaker=Ras-Tabahn + message= _ "Greetings Ardonna! (Cough) I was successful, and I see that you were as well." + [/message] + [message] + speaker=Ardonna + message= _ "Well met, Ras-Tabahn. Yes I was. Now, can you explain the mission you spoke of?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Gladly. I assume you studied the great mage Crelanu in history class. He fought with King Haldric the First. Since he faced the immortal lords of the Green Isle directly, he undoubtedly knows more than we about their methods. Recently, I have learned where to find him." + [/message] + [message] + speaker=Ardonna + message= _ "Of course I know about Crelanu. But can we force him to reveal his knowledge to us?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "That shouldn’t be necessary. I have also learned that he wrote a book containing all his secrets, which must include all he knows of immortality. We need only borrow this book. I knew that getting that book was not something I could accomplish on my own, but now, with a force such as ours, it should be easily done." + [/message] + [message] + speaker=Ardonna + message= _ "Yes, that seems like a plan with a good chance of success. I will join you in your effort." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I thought as much. We must cross the Great River, and head north into the Heart Mountains." + [/message] + [if] + [have_unit] + id=Vendraxis + [/have_unit] + [then] + [message] + speaker=Ardonna + message= _ "Before we leave, I have an unrelated question. Vendraxis here has said that my name is untrue. Do you have an idea what could that mean?" + [/message] + [/then] + [else] + [message] + speaker=Ardonna + message= _ "Before we leave, I have an unrelated question. I met a mystic who said that my name was untrue. Do you have an idea what could that mean?" + [/message] + [/else] + [/if] + [message] + speaker=Ras-Tabahn + message= _ "Possibly. When an academy mage completes his studies, he is granted syllables of power, which become his new name. You are well beyond that point, but you are with the free magi now, so choose your own name. I was originally Rassin Tabin, but that is fairly ordinary, and at one point, it no longer suited." + [/message] + [message] + speaker=Ardonna + message= _ "I suppose you are right. I am no longer the ordinary girl Ardonna, and Vendraxis was correct. From now I shall be...Ardryn-Na." + [/message] + # We will change her name, but will keep using the same id. + [modify_unit] + [filter] + id=Ardonna + [/filter] + name= _ "Ardryn-Na" + [/modify_unit] + [message] + speaker=Ras-Tabahn + message= _ "Well then Ardryn-Na, let us head north." + [/message] + [delay] + time=1000 + [/delay] + + # Now that Ardonna is the leader again, we need to add DAs to her list, and + # maybe Chocobones too: + [allow_recruit] + side=1 + type=Dark Adept SotA + [/allow_recruit] + [if] + [variable] + name=bird_bones_found + equals=yes + [/variable] + [then] + [allow_recruit] + side=1 + type=Chocobone + [/allow_recruit] + [/then] + [/if] + + [endlevel] + result=victory + linger_mode=no + carryover_report=no + bonus=no + {NEW_GOLD_CARRYOVER 100} + [/endlevel] + [/event] +#undef JOURNEY_STAGE8 +#undef JOURNEY_STAGE9 +#undef JOURNEY_STAGE10 +#undef JOURNEY_STAGE11 +#undef JOURNEY_STAGE12 +#undef JOURNEY_STAGE13 +[/scenario] 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 new file mode 100644 index 000000000000..cea78344a6f5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/14_Entering_the_Northlands.cfg @@ -0,0 +1,244 @@ +#textdomain wesnoth-sota + +# Walkthrough tip if you have trouble: Use walking corpses. Recruit about five, including +# a soulless or two. Make more at every opportunity: two or three per turn. You need the +# enemy to attack their former soldiers instead of your leveled ones. + +[scenario] + name= _ "Entering the Northlands" + map_data="{campaigns/Secrets_of_the_Ancients/maps/14_Entering_the_Northlands.map}" + + id=14_Entering_the_Northlands + next_scenario=15_Mountain_Pass + + [story] + [part] + [background_layer] + image=story/black-background.png + scale=yes + base_layer=yes + [/background_layer] + [image] + x,y=400,200 + centered=yes + file=story/ford-of-abez-1.jpg + [/image] + title= _ "Chapter Three: To Conquer Death" + show_title=yes + title_alignment=left + story= _ "24 IV, 23 YW + +We reached the Ford of Abez as the dawn light spread behind the mountain peaks to the north. As we waded across, the dark water reached to our waists, which made for slow going. I dared not imagine what manner of tentacled creature lurked below, but we completed the crossing without incident. The water was chill with snowmelt, so our teeth were chattering when we reached the far shore. The rising sun was warm though, and had us dried in short order. Despite this, Ras-Tabahn was not well off. He collapsed in the sand and went into a paroxysm of coughing the like of which I had never seen. When he could speak again, he assured me that it was only on account of the cold, and I should not be unduly troubled. I am uneasy all the same." + [/part] + {JOURNEY_PART 14} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 36 35 34} + + [side] + # wmllint: who SIDE_1_BOTH is Ardonna,Ras-Tabahn + {SIDE_1_BOTH} + {GOLD 170 170 170} + [/side] + + [side] + side=2 + type=Orcish Sovereign + controller=ai + user_team_name= _ "Orcs" + name= _ "Rod-Ishnak" + id=Rod-Ishnak + team_name=bad + recruit=Orcish Crossbowman,Orcish Warrior + {GOLD 100 140 200} + {INCOME 17 22 28} + {FLAG_VARIANT6 ragged} + [/side] + + [side] + side=3 + type=Orcish Warlord + controller=ai + user_team_name= _ "Orcs" + name= _ "Vok-Hroog" + id=Vok-Hroog + profile=portraits/orcs/grunt-6.png + team_name=bad + [unit] + x,y=6,6 + type=Orcish Shaman + name= _ "Krongk" + id=Krongk + [/unit] + recruit=Orcish Crossbowman,Orcish Warrior + {GOLD 100 140 200} + {INCOME 15 20 26} + {FLAG_VARIANT6 ragged} + [/side] + + # Without these, the AI tends to get nothing *but* Orcish Crossbowmen, and the scenario + # becomes unbeatable (probably), not to mention boring. +#ifdef EASY + {LIMIT_CONTEMPORANEOUS_RECRUITS 2,3 (Orcish Crossbowman) 4} +#endif +#ifdef NORMAL + {LIMIT_CONTEMPORANEOUS_RECRUITS 2,3 (Orcish Crossbowman) 5} +#endif +#ifdef HARD + {LIMIT_CONTEMPORANEOUS_RECRUITS 2,3 (Orcish Crossbowman) 6} +#endif + + {STARTING_VILLAGES 2 6} + + # *************************** PRESTART *************************** +#define STARTING_ORC SIDE TYPE + {FIND_CASTLE_HEX {SIDE} location} + [unit] + x=$location.x + y=$location.y + type={TYPE} + side={SIDE} + [/unit] +#enddef + + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat all enemy leaders" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_BOTH} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [set_variables] + name=starting_orc_units + mode=append + [split] + list="Orcish Archer,Orcish Archer,Wolf Rider,Wolf Rider,Goblin Pillager" + key=type + separator="," + [/split] + [/set_variables] + + [for] + array=starting_orc_units + variable=i + [do] + {STARTING_ORC 2 $starting_orc_units[$i].type} + [/do] + [/for] + + [for] + array=starting_orc_units + variable=i + [do] + {STARTING_ORC 3 $starting_orc_units[$i].type} + [/do] + [/for] + + [clear_variable] + name=location,starting_orc_units + [/clear_variable] + + {FREEZE_UNIT Krongk} + + {RECALL_LOYAL_UNITS} + [/event] + # *************************** PLAY *************************** + [event] + name=attack + [filter_second] + id=Krongk + [/filter_second] + [message] + speaker=Krongk + message= _ "They’re attacking me!" + [/message] + [message] + speaker=Vok-Hroog + message= _ "Yeah, yeah." + [/message] + {THAW_UNIT Krongk} + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=start + [message] + speaker=Ras-Tabahn + message= _ "We have crossed into the north. The dwarven kingdom of Knalga lies straight ahead." + [/message] + [message] + speaker=Shynal + message= _ "Now I’m really far from home. I’ve never been north of the river before. I hope I get to see some dwarves!" + [/message] + [message] + speaker=Vok-Hroog + message= _ "I claim this territory in the name of Krag-Ubor, the ruler of all true orcs! Leave now, Ishnak, or face the combined wrath of the five tribes." + [/message] + [message] + speaker=Rod-Ishnak + message= _ "I arrived first, Hroog. It’s mine!" + [/message] + [message] + speaker=Ardonna + message= _ "This could be trouble." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Many orcs are decent sorts (cough, cough). I fought alongside Krag-Ubor once, who the farther orc just mentioned." + [/message] + [message] + speaker=Vok-Hroog + message= _ "Wait who’s that?" + [/message] + [message] + speaker=Rod-Ishnak + message= _ "Wizards and deaders just like from back home! I hate those! I suggest a contest. Whoever kills the most wizards and skeletons and stuff takes this territory and all the human slaves." + [/message] + [message] + speaker=Vok-Hroog + message= _ "Huh. Fine. That sounds like good sport." + [/message] + [message] + speaker=Krongk + message= _ "I declare this competition official. I will support the claim of the winner." + [/message] + [message] + speaker=Vok-Hroog + message= _ "Yeah, yeah." + [/message] + [message] + speaker=Ardonna + message= _ "I did say this was trouble." + [/message] + [message] + speaker=Shynal + message= _ "But we’ll win, won’t we?" + [/message] + [/event] + + [event] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..e7567eda92a0 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/15_Mountain_Pass.cfg @@ -0,0 +1,391 @@ +#textdomain wesnoth-sota + +# If the bird bones were not found on the beach, then you get the ability to recruit +# chocobones when a unit inspects the bones of a flightless bird half-buried in the snow. +# There is one long event for this. If the bones *were* found earlier, this event is +# removed in the prestart event. + +[scenario] + name= _ "Mountain Pass" + map_data="{campaigns/Secrets_of_the_Ancients/maps/15_Mountain_Pass.map}" + + id=15_Mountain_Pass + next_scenario=16_The_Mage + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/mountain-pass.jpg + scale=no + [/background_layer] + story= _ "6 V, 23 YW + +We have reached a pass through the mountains that Ras-Tabahn knew of. The air is cool in these upper reaches. Mist rises from the snow in the afternoon, and the icicles drip the purest water from rock overhangs. I find it all refreshing, but Ras-Tabahn’s coughing fits are frequent. Sometimes he is reduced to speaking in short phrases due to lack of breath. Of course he is quite old — 50 at least — but I am also certain that he is ill. His thinness leads me to believe it is consumption, but he refuses to discuss it, preferring to deny the severity of his problem." #po: "consumption" is an old word for tuberculosis + [/part] + {JOURNEY_PART 15} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 30 30 30} + + [side] + {SIDE_1_BOTH} + # This assumes plenty of gold from the previous scenario. + {GOLD 150 100 50} + fog=yes + [/side] + + [side] + side=2 + type=Gryphon + controller=ai + user_team_name= _ "Gryphons" + team_name=bad + recruit=Gryphon + {GOLD 160 180 200} + {INCOME 20 30 30} + [/side] + + [side] + side=3 + type=Gryphon + controller=ai + user_team_name= _ "Gryphons" + team_name=bad + recruit=Gryphon + {GOLD 160 180 200} + {INCOME 20 30 30} + [/side] + + {STARTING_VILLAGES 1 6} + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Move Ardryn-Na and Ras-Tabahn to level ground in the northeast corner" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_BOTH} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [if] + [variable] + name=bird_bones_found + not_equals=yes + [/variable] + [then] + [item] + x,y=16,21 + image=items/bird-bones.png + [/item] + [/then] + [else] + # If chocobones can already be recruited, you lose one unit. + # Even though that unit tended to die fairly quickly, you still + # should be compensated, so here's a little gold. + [gold] + side=1 + amount=18 + [/gold] + [event] + id=bird_bones + remove=yes + [/event] + [/else] + [/if] + + [clear_variable] + name=bird_bones_found + [/clear_variable] + + {RECALL_LOYAL_UNITS} + [/event] + # *************************** PLAY *************************** + + # This long event creates a chocobone when a unit moves to where bird bones are + # buried in the snow. The event is removed if chocobones were discovered on the + # beach with the Merfolk. + # There is a short conversation, but there are many possibilities for which units + # are involved, so there are a lot of ifs. There is also a lot of animation around + # the appearance of the chocobone involving a skeleton and a flightless-bird unit. + [event] + name=moveto + id=bird_bones + + [filter] + x,y=16,21 + side=1 + [/filter] + [if] + [variable] + name=unit.race + equals=bats + [/variable] + [or] + [variable] + name=unit.variation + equals=bat + [/variable] + [/or] + [then] + # Bones examined by a bat or undead bat + [message] + speaker=Ras-Tabahn + message= _ "There are some...large bones there. Claws and wings...I think." + [/message] + [/then] + [else] + [if] + [variable] + name=unit.race + equals=undead + [/variable] + [then] + # Bones examined by a ghost, skeleton, or ghoul. + [message] + speaker=$unit.id + message= _ "Bones. Claws and wings." + [/message] + [/then] + [else] + # Bones examined by a human or Vendraxis. + [message] + speaker=$unit.id + message= _ "There are some large bones here. I can see claws and wings." + [/message] + [/else] + [/if] + [/else] + [/if] + + [message] + speaker=Ardonna + message= _ "I wonder what are they from. A gryphon perhaps?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "A large (cough, cough) flightless bird...would be my guess." + [/message] + [message] + speaker=Ardonna + message= _ "Well, there is an easy way to discover the truth." + [/message] + + # Remove the bones and show a resurrected bird: + [animate_unit] + # Fire the recruitment animation (actually an extra_anim): + [filter] + id=Ardonna + [/filter] + flag=recruit2 + [facing] + x,y=16,21 + [/facing] + [/animate_unit] + [remove_item] + # Remove the bones: + x,y=16,21 + [/remove_item] + [unit] + # Show the bird fading in. The engine will automatically find an empty + # location for it. + x,y=16,21 + id=bird + type=Bone Bird + side=1 + facing=se + animate=yes + [/unit] + [store_unit] + # Store the bird so we can get its location later: + [filter] + id=bird + [/filter] + variable=bird + [/store_unit] + + [message] + speaker=Ardonna + message= _ "Oh, you were right!" + [/message] + + [if] + [have_unit] + id=Vendraxis + [/have_unit] + [then] + [message] + speaker=Ras-Tabahn + message= _ "I wonder...if it could carry...someone light. Vendraxis perhaps." + [/message] + [message] + speaker=Vendraxis + message= _ "I will not climb on that ridiculous thing!" + [/message] + [/then] + [else] + [message] + speaker=Ras-Tabahn + message= _ "I wonder...if it could carry...someone light." + [/message] + [/else] + [/if] + + [message] + speaker=Ardonna + message= _ "A skeleton could ride it I think." + [/message] + + # Replace the bird with a Chocobone: + [modify_unit] + # We're about to animate a recruit which will most likely appear to + # Ardonna's upper left, so we'll face her that direction: + [filter] + id=Ardonna + [/filter] + facing=nw + [/modify_unit] + [animate_unit] + # Fire the recruitment animation (actually an extra_anim): + [filter] + id=Ardonna + [/filter] + flag=recruit2 + [/animate_unit] + [unit] + # Animate a skeleton getting recruited: + side=1 + animate=yes + type=Skeleton + id=rider + placement=leader + [/unit] + [store_unit] + # Remove the skeleton, but store it so we can get its location: + [filter] + id=rider + [/filter] + variable=rider + kill=yes + [/store_unit] + [move_unit_fake] + # Show a skeleton moving from where the skeleton appeared to wherever + # the bird is: + type=Skeleton + side=1 + x=$rider.x, $bird.x + y=$rider.y, $bird.y + [/move_unit_fake] + [kill] + id=bird + animate=no + [/kill] + [unit] + # Now we show a joined skeleton and bird: + x,y=$bird.x, $bird.y + type=Chocobone + side=1 + animate=no + facing=se + [/unit] + [clear_variable] + name=bird, rider + [/clear_variable] + + [message] + speaker=Ardonna + message= _ "That’s fantastic! These birds could be quite useful." + [/message] + [allow_recruit] + side=1 + type=Chocobone + [/allow_recruit] + [message] + speaker=narrator + image=units/undead-skeletal/chocobone.png~SCALE(93,93) + message= _ "You can now recruit chocobones!" + [/message] + [/event] + + # *************************** ENDING / OPENING *************************** + + [event] + name=start + [message] + speaker=Ardonna + message= _ "What dangers may lurk in this fog?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Gryphons...live at this height. We should be cautious." + [/message] + [/event] + + [event] + name=moveto + first_time_only=no + + [filter] + id=Ardonna + [or] + id=Ras-Tabahn + [/or] + [/filter] + + [store_unit] + # Stores whichever leaders are the grassland in the NE corner. + [filter] + x=21-29 + y=1-3 + [filter_location] + terrain=G*^* + [/filter_location] + [and] + id=Ardonna + [or] + id=Ras-Tabahn + [/or] + [/and] + [/filter] + variable=leaders_at_end + [/store_unit] + + # If both leaders got stored, the player wins. + [if] + [variable] + name=leaders_at_end.length + equals=2 + [/variable] + [then] + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/then] + [else] + [allow_undo] + [/allow_undo] + [/else] + [/if] + [clear_variable] + name=leaders_at_end + [/clear_variable] + [/event] + + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..bcc8cb95487d --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/16_The_Mage.cfg @@ -0,0 +1,520 @@ +#textdomain wesnoth-sota + +# Two events in the "play" section are to remove four HP from Ras-Tabahn each turn. (He +# is suffering from tuberculosis.) There are some mages who put holy water around +# 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}" + + id=16_The_Mage + next_scenario=17_Mortality + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/mountain-pass.jpg + scale=no + [/background_layer] + story= _ "3 VI, 23 YW + +We crossed the high plateaus, and forded the Arkan-thoria. Then we headed up into the mountains again before we found the mage. This was Ras-Tabahn’s plan, and with the goal in sight, he gained a little strength. However, he is quite weak and ill now, and breathing raggedly. I don’t know how much longer he can survive." + [/part] + {JOURNEY_PART 16} + [/story] + + {DEFAULT_SCHEDULE} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 22 22 22} + + [side] + {SIDE_1_BOTH} + {GOLD 150 120 100} + # There is only a little bit shrouded in this scenario (in the cave), but + # we still need this: + shroud=yes + [/side] + + [side] + side=2 + type=Elder Mage + controller=ai + user_team_name= _ "Crelanu" + id=Crelanu + profile=portraits/crelanu.png + name= _ "Crelanu" + team_name=bad + recruit=Red Mage,White Mage,Mage + {GOLD 140 200 230} + {INCOME 15 22 30} + color=green # To match his color in LoW + {FLAG_VARIANT loyalist} + [/side] + + {STARTING_VILLAGES 1 6} + {STARTING_VILLAGES 2 6} + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat Crelanu" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_BOTH} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + [remove_shroud] + side=1 + [/remove_shroud] + # For the cave: + [place_shroud] + side=1 + x=0-3 + y=24 + [/place_shroud] + + {RECALL_LOYAL_UNITS} + + [store_unit] + [filter] + id=Ras-Tabahn + [/filter] + variable=rastabahn_stored + [/store_unit] + [set_variables] + name=rastabahn_stored.status + mode=merge + [value] + slowed=yes + [/value] + [/set_variables] + [unstore_unit] + variable=rastabahn_stored + [/unstore_unit] + [/event] + # *************************** PLAY *************************** + # This gives side 2 level-3 units, but gives us control over when they appear. + # Their appearance doesn't depend on side 2 saving gold for them either. + [event] + name=side 2 turn 1, side 2 turn 5 + first_time_only=no + # He's not paying for these, but hopefully no one will notice! + [unit] + type=Arch Mage + side=2 + x,y=20,6 # Otherwise, the first one goes for a village. + moves=0 # Pretending it was just recruited. + [/unit] + [/event] + + # The next two events take four HP from Ras-Tabahn. If his HP is very low, he needs + # to receive any healing (from villages or resting) *first*, or he will die. On the + # other hand, if he has a lot of HP, and he is healed first, he will not receive + # the full benefit. That is why we need two events. We will also be slowing him at + # this time. + [event] + name=side 1 turn + first_time_only=no + [store_unit] + [filter] + id=Ras-Tabahn + [/filter] + variable=rastabahn_stored + [/store_unit] + [set_variable] + name=rastabahn_harmed + value=no + [/set_variable] + [if] + [variable] + name=rastabahn_stored.hitpoints + greater_than=4 + [/variable] + [then] + [harm_unit] + [filter] + id=Ras-Tabahn + [/filter] + amount=4 + fire_event=yes + [/harm_unit] + [set_variable] + name=rastabahn_harmed + value=yes + [/set_variable] + [/then] + # [else] This will happen in the next event, *after* the refresh. + [/if] + [/event] + + [event] + name=side 1 turn refresh + first_time_only=no + + [store_unit] + [filter] + id=Ras-Tabahn + [/filter] + variable=rastabahn_stored + [/store_unit] + [set_variables] + name=rastabahn_stored.status + mode=merge + [value] + slowed=yes + [/value] + [/set_variables] + [unstore_unit] + variable=rastabahn_stored + [/unstore_unit] + + [if] + [variable] + name=rastabahn_harmed + boolean_not_equals=yes + [/variable] + [then] + [harm_unit] + [filter] + id=Ras-Tabahn + [/filter] + amount=4 + fire_event=yes + [/harm_unit] + [/then] + [/if] + [/event] + + # The next two events control the holy water. + [event] + name=recruit, recall + [filter] + race=undead + [/filter] + + [unit] + x,y=21,7 + type=White Mage + name= _ "Ginmera" + id=Ginmera + side=2 + [modifications] + {TRAIT_RESILIENT} + {TRAIT_INTELLIGENT} + [/modifications] + [/unit] + +#define PLACE_HOLY_WATER X Y + [item] + x={X} + y={Y} + image=items/holy-water.png + [/item] +#enddef + + {PLACE_HOLY_WATER 20 6} + {PLACE_HOLY_WATER 20 5} + {PLACE_HOLY_WATER 21 5} + {PLACE_HOLY_WATER 22 5} + {PLACE_HOLY_WATER 22 6} + +#undef PLACE_HOLY_WATER + + [store_items] + variable=holy_waters + [/store_items] + + [message] + speaker=Ginmera + message= _ "It seems that the invaders can raise undead soldiers, so I placed some holy water around the castle for protection." + [/message] + [unit] + x,y=21,5 + type=White Mage + name= _ "Rinconan" + id=Rinconan + side=2 + [modifications] + {TRAIT_RESILIENT} + {TRAIT_STRONG} + [/modifications] + [/unit] + {FREEZE_UNIT Rinconan} + {FREEZE_UNIT Ginmera} + [message] + speaker=Ginmera + message= _ "Rinconan and I will stay here to guard you." + [/message] + [message] + speaker=Crelanu + message= _ "Yes. Thank you Ginmera." + [/message] + + [message] + speaker=narrator + image=logo.png + message= _ "Moving a unit onto a bottle of holy water will remove the bottle. A living unit can do this safely, but any undead unit will be destroyed." + [/message] + [/event] + + [event] + name=moveto + first_time_only=no + [filter] + side=1 + [filter_location] + find_in=holy_waters + [/filter_location] + [/filter] + [if] + [have_unit] + x,y=$x1,$y1 + [and] + race=undead + [/and] + [/have_unit] + [then] + [kill] + x,y=$x1,$y1 + animate=yes + fire_event=yes + [/kill] + [/then] + [/if] + [remove_item] + x,y=$x1,$y1 + [/remove_item] + [store_items] + variable=holy_waters + [/store_items] + [/event] + + [event] + name=moveto + [filter] + id=Crelanu + [/filter] + {THAW_UNIT Ginmera} + {THAW_UNIT Rinconan} + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=start + [message] + speaker=Ras-Tabahn + message= _ "Crelanu! (Cough, cough) We have come...for your book." + [/message] + [message] + speaker=Ardonna + message= _ "We need to borrow it." + [/message] + [message] + speaker=Crelanu + message= _ "Yes, I knew people like you would be coming, but the book is out of reach now — for all of us. I have given it to the elves. Only they know where it is." + [/message] + [message] + speaker=Ardonna + message= _ "Why would you do such a thing?" + [/message] + [message] + speaker=Crelanu + message= _ "So that one like you would not be tempted to do what you intend. Oh, yes. I know well what you seek." + [/message] + [message] + speaker=Ardonna + message= _ "Then you can tell us what we want to know." + [/message] + [message] + speaker=Crelanu + message= _ "I shall not." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "We shall see." + [/message] + [message] + speaker=narrator + image=logo.png + message= _ "Ras-Tabahn is sick. He is slowed, and will lose four hitpoints every turn. He will die if he reaches zero. Villages will heal him four points, and he will lose only two if he is resting." + [/message] + [/event] + + [event] + name=last breath + [filter] + id=Crelanu + [/filter] + + # Bring Crelanu back to life, barely: + [store_unit] + [filter] + id=Crelanu + [/filter] + variable=crelanu_stored + kill=yes + [/store_unit] + [set_variable] + name=crelanu_stored.hitpoints + value=1 + [/set_variable] + [unstore_unit] + variable=crelanu_stored + [/unstore_unit] + + [message] + speaker=Ardonna + message= _ "Now, you will tell us the secret of immortality or die!" + [/message] + [message] + speaker=Crelanu + message= _ "There is no secret, you fools! Magic cannot stop aging. You cannot live forever. It is the way of nature, and the greatest thing we have in common with all of creation. You must die, and your soul depart. I would not try this thing for any reason." + [/message] + [message] + speaker=Ardonna + message= _ "You are the fool, for you have, indeed, told us all we required. For that, I will spare you to live a few more lonely years with your cowardice." + [/message] + + [teleport] + [filter] + side=1 + canrecruit=yes + [/filter] + x,y=6,21 + animate=no + [/teleport] + [message] + speaker=Ras-Tabahn + message= _ "I don’t understand. What did Crelanu tell us?" + [/message] + [message] + speaker=Ardonna + message= _ "I will explain. Let us get you somewhere safe first. We’ll go into the cave. Come with me." + [/message] + [move_unit] + id=Ardonna + to_x=1 + to_y=24 + [/move_unit] + [hide_unit] + id=Ardonna + [/hide_unit] + # Move Ardonna out of the way so that Ras-Tabahn can reach this hex too. + [teleport] + [filter] + id=Ardonna + [/filter] + x,y=1,22 + animate=no + [/teleport] + + [move_unit] + id=Ras-Tabahn + to_x=1 + to_y=24 + [/move_unit] + # Since no side-1 units should be around to see what Crelanu does next, + # we'll hide everyone. + [hide_unit] + side=1 + [/hide_unit] + + # Crelanu moves to his keep to recruit a gryphon. + [move_unit] + id=Crelanu + to_x=21 + to_y=6 + [/move_unit] + [store_unit] + [filter] + id=Crelanu + [/filter] + variable=crelanu_stored + [/store_unit] + + # We'd prefer the gryphon to be recruited in a castle hex, so we'll try to + # find an empty one. + {NEAREST_HEX 21 6 3 (terrain=C* + [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] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/17_Mortality.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/17_Mortality.cfg new file mode 100644 index 000000000000..04c0a89524a5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/17_Mortality.cfg @@ -0,0 +1,337 @@ +#textdomain wesnoth-sota + +# There is lots of animation here, but nothing complicated. + +[scenario] + name= _ "Mortality" + map_data="{campaigns/Secrets_of_the_Ancients/maps/17_Mortality.map}" + + id=17_Mortality + next_scenario=18_Abandoned_Outpost + victory_when_enemies_defeated=no + + [story] + [part] + story= _ "6 VI, 23 YW + +Not far inside the cave was a ruined castle built in a style I did not recognize. Ras-Tabahn said, “Dwarves.” It is infested with rats, and clearly, no dwarves have lived here for a long time." + [/part] + {JOURNEY_PART 17} + [/story] + + {UNDERGROUND} + turns=-1 + + [side] + {SIDE_1_BOTH} + shroud=yes + gold=0 + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Rats" + team_name=bad + no_leader=yes + gold=0 + hidden=yes + [/side] + +#define PLACE_RAT X Y + [unit] + type=Giant Rat + x={X} + y={Y} + side=2 + [/unit] +#enddef + # *************************** PRESTART *************************** + [event] + name=prestart + + {PLACE_RAT 4 4} + {PLACE_RAT 5 4} + {PLACE_RAT 14 6} + {PLACE_RAT 2 7} + {PLACE_RAT 11 3} + [/event] + + # This inserts the event that allows units to turn into a lich. (See: sota-utils.cfg) + {TURN_INTO_A_LICH} + + # *************************** ENDING / OPENING *************************** +#define DELAY + [delay] + time=400 + [/delay] + [redraw][/redraw] +#enddef + + [event] + name=start + + [move_unit] + id=Ardonna + to_x=12 + to_y=4 + [/move_unit] + [remove_shroud] + x,y=12,4 + radius=4 + [/remove_shroud] + [move_unit] + id=Ardonna + to_x=9 + to_y=6 + [/move_unit] + # The shroud won't normally be cleared until all the animation is finished, + # even with [redraw]. We have to do it manually: + [remove_shroud] + x,y=9,6 + radius=5 + [/remove_shroud] + [remove_shroud] + x,y=5,6 + radius=3 + [/remove_shroud] + [remove_shroud] + x,y=8,2 + radius=2 + [/remove_shroud] + + [recall] + id=Ras-Tabahn + x,y=16,1 + [/recall] + [modify_unit] + [filter] + id=Ras-Tabahn + [/filter] + hitpoints=6 + [/modify_unit] + [move_unit] + id=Ras-Tabahn + to_x=14 + to_y=3 + [/move_unit] + [message] + speaker=Ardonna + message= _ "Just a little farther." + [/message] + [move_unit] + id=Ras-Tabahn + to_x=11 + to_y=5 + [/move_unit] + [message] + speaker=Ras-Tabahn + message= _ "Ardryn-Na, I’m dying. (Cough, cough) I don’t think...I can stop it." + [/message] + [message] + speaker=Ardonna + message= _ "Nor should you! You must embrace it. Crelanu said as much. He also said your life force must depart, but he didn’t say it could not come back to you!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "What are you...proposing?" + [/message] + [message] + speaker=Ardonna + message= _ "That you project your will into another object so that it is part of you — your staff for example. If you do this just as your body dies, your whole consciousness should follow the flow of your will, as it will have no other place to go." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Well, it could go to the...lands of the dead. But...if I had an altar...the stone would serve to anchor me (cough, cough, cough) to this plane...and stop the downward flow of my soul...for just a moment." + [/message] + [message] + speaker=Ardonna + message= _ "And a moment is all you need! You only need project your will back into your body, animating it as you would anything else!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "You seem...more sure than I, but (cough, cough) I have no choice." + [/message] + [message] + speaker=Ardonna + message= _ "Crelanu said he wouldn’t do it. That implies that he could, so he also believed that it would work. And like you said, he should know. For now, you can rest. We’ll have an altar built soon." + [/message] + + # Skeletons are created, and some rock disappears. ("Collected" by the + # skeletons.) + [unit] + type=Skeleton + x,y=8,4 + side=1 + animate=yes + facing=ne + [/unit] + [unit] + type=Skeleton + x,y=10,5 + side=1 + animate=yes + facing=nw + [/unit] + [terrain] + x,y=10,4 + terrain='' + layer=overlay + [/terrain] + [terrain] + x,y=9,4 + terrain='' + layer=overlay + [/terrain] + {DELAY} + + # Skeletons face the eventual location of the altar, and rock appears there. + [modify_unit] + [filter] + x,y=8,4 + [/filter] + facing=se + [/modify_unit] + [modify_unit] + [filter] + x,y=10,5 + [/filter] + facing=nw + [/modify_unit] + [terrain] + x,y=9,5 + terrain=^Dr + layer=overlay + [/terrain] + {DELAY} + + # One skeleton turns around and more rock disappears. + [modify_unit] + [filter] + x,y=10,5 + [/filter] + facing=se + [/modify_unit] + [terrain] + x,y=11,6 + terrain='' + layer=overlay + [/terrain] + {DELAY} + + # Skeletons face the new pile of rock, and the altar appears. + [modify_unit] + [filter] + x,y=10,5 + [/filter] + facing=nw + [/modify_unit] + [terrain] + x,y=9,5 + terrain='' + layer=overlay + [/terrain] + [item] + halo=items/altar-sacrifice-halo.png + x,y=9,5 + [/item] + {DELAY} + + # Ras-Tabahn appears to move to the altar and lie on it. + [store_unit] + [filter] + id=Ras-Tabahn + [/filter] + variable=rastabahn_stored + [/store_unit] + [hide_unit] + id=Ras-Tabahn + [/hide_unit] + [move_unit_fake] + type=Necromancer + side=1 + x=11,10,9 + y=5, 4, 5 + [/move_unit_fake] + [remove_item] + x,y=9,5 + [/remove_item] + # Ras-Tabahn-on-the-altar is a unit so that he can retain his property bars + # and orb, and be drawn in the correct z-position. + [unit] + type=Sacrifice + x,y=9,5 + side=1 + facing=se + experience=$rastabahn_stored.experience + hitpoints=$rastabahn_stored.hitpoints + max_hitpoints=$rastabahn_stored.max_hitpoints + ellipse=misc/ellipse-hero + id=necromancer_on_altar + name= _ "Ras-Tabahn" + [/unit] + + {DELAY} + + [message] + speaker=Ardonna + message= _ "No need for you to wait to die. We can have done with it immediately. And although neither of us needs speak the incantations aloud anymore, you should this time, as any mistake would be disastrous." + [/message] + [message] + speaker=necromancer_on_altar + message= _ "Yes. I’m ready. Do it." + [/message] + + [unit] + type=Skeleton SotA + side=1 + placement=map_overwrite + x,y=8,4 + id=skeleton + facing=se + [/unit] + [animate_unit] + [filter] + id=skeleton + [/filter] + flag=sacrifice + [/animate_unit] + + [hide_unit] + # All units. + [/hide_unit] + + {FADE_TO_BLACK_HOLD 1000} + + [fire_event] + name=lichify # See: sota-utils.cfg + [primary_unit] + id=Ardonna + [/primary_unit] + [/fire_event] + + [fire_event] + name=lichify + [primary_unit] + id=Ras-Tabahn + [/primary_unit] + [/fire_event] + + # New, lich versions of the two leaders are now on the recall list, so we + # need to remove the necromancer versions from the game: + [kill] + side=1 + # Since we don't want to include units on the recall list: + x=1-16 + y=1-7 + [/kill] + + [endlevel] + result=victory + linger_mode=no + carryover_report=no + bonus=no + {NEW_GOLD_CARRYOVER 100} + [/endlevel] + [/event] +[/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 new file mode 100644 index 000000000000..72d1e424edc3 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/18_Abandoned_Outpost.cfg @@ -0,0 +1,648 @@ +#textdomain wesnoth-sota + +# Liches are now available to the player. All the stored units from the DA line need to +# have that option added to their unit trees. Since all dark sorcerers have been leveling +# into necromancers until this point, a menu option is included to turn them into liches +# too. + +# The spiders nearest to the player start with no movement points, and get one added +# each turn for the first few turns. That keeps the spiders from swarming the player +# immediately, and lets the battle happen in the middle of the map. For difficulty +# levels other than hard, a few changes are made to the map that make the scenario +# a bit easier. + +# The spiderweb terrain can be applied anywhere, but will be invisible if it is not used +# with specific shapes of corners or chasms. This limited the amount of artwork needed. + +[scenario] + name= _ "Abandoned Outpost" + map_data="{campaigns/Secrets_of_the_Ancients/maps/18_Abandoned_Outpost.map}" + + id=18_Abandoned_Outpost + next_scenario=19_Lava_and_Stone + victory_when_enemies_defeated=no + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "9 VI, 23 YW + +To become a lich, one must first die. The spells of necromancy bind the spirit, but only once it has been unbound from the body. To become a lich, the mage must make the necessary incantations with his dying breaths. He thus binds his own spirit in much the same way he binds the spirits of others....An altar serves to hold his soul in the physical plane long enough to make the transition, and a suitable object must be found to hold the consciousness for one crucial moment when the body expires." + [/part] + [part] + [background_layer] + image=portraits/undead/lich.png + scale=no + [/background_layer] + story= _ "13 VI, 23 YW + +So, Ras-Tabahn is now undead. In the beginning, his health was not much improved, and he complained of being cold. His life force was weak, but he was able to absorb life from the rats infesting the ancient castle. Now he is more strong and vigorous than I have ever seen him. This is despite the fact that his flesh is starting to rot away, a process that causes him no discomfort. Nor can he smell it any more than I can. If all continues to go well, I will make the transition soon myself." + [/part] + [part] + [background_layer] + image=portraits/ardonna-lich.png + scale=no + [/background_layer] + story= _ "17 VI, 23 YW + +Now the process is complete for both of us. I posted a guard so nothing could happen to me in my weakened state, and nothing did. I am restored. I don’t feel much different, but I suppose I look a fright. Ah well, it can’t be helped. But my primary goal is achieved! I cannot die! I suppose I could be broken apart like a skeleton or maybe burned, but I do not have to fear these unlikely events: I have the awesome powers of the spirit realm flowing through me, and can protect myself quite adequately! My next goal is to share my knowledge with the world so that no one need die." + [/part] + [/story] + + {UNDERGROUND} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 32 29 25} + + [side] + {SIDE_1_BOTH} + {GOLD 230 190 110} + shroud=yes + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Spiders" + team_name=bad + no_leader=yes + gold=0 + hidden=yes + [/side] + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + 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} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + # There is now a menu option to turn necromancers into liches. + [set_menu_item] + id=lichify + description= _ "Make into a lich." + image=units/icons/icon-lich.png + [show_if] + [have_unit] + x=$x1 + y=$y1 + side=1 + type=Necromancer, Necromancer SotA + [/have_unit] + [/show_if] + [command] + [if] + [have_location] + x=$x1 + y=$y1 + terrain=C*^*,K*^*,*^K*,*^C* # castles and keeps + [/have_location] + [then] + [fire_event] + name=lichify # See: sota-utils.cfg + [primary_unit] + x=$x1 + y=$y1 + [/primary_unit] + [/fire_event] + [/then] + [else] + [message] + speaker=narrator + image=logo.png + message= _ "You can only do this in a castle." + [/message] + [/else] + [/if] + [/command] + [/set_menu_item] + + # From now on, newly recruited DAs need to be able to eventually advance to + # liches like normal. We will stop using the custom units in the recruit list. + [disallow_recruit] + side=1 + type=Dark Adept SotA + [/disallow_recruit] + [allow_recruit] + side=1 + type=Dark Adept + [/allow_recruit] + + # This section changes all *existing* units so that they have liches in their + # advancement trees. As of 1.12 at least, [modify_unit] doesn't apply to + # the recall list, so we have to do it the long way. + [store_unit] + [filter] + type=Dark Adept SotA, Dark Sorcerer SotA + [/filter] + variable=DA # Even though it might actually be a DS. + [/store_unit] + + [for] + array=DA + variable=i + [do] + [if] + [variable] + name=DA[$i].type + equals=Dark Adept SotA + [/variable] + [then] + [set_variable] + # Custom DA's will advance to normal dark sorcerers + # which will fix them. + name=DA[$i].advances_to + value=Dark Sorcerer + [/set_variable] + [/then] + [else] + [set_variable] + # Custom DS's just get the other advancement added. + name=DA[$i].advances_to + value=Necromancer,Lich + [/set_variable] + [/else] + [/if] + [unstore_unit] + variable=DA[$i] + [/unstore_unit] + [/do] + [/for] + + [clear_variable] + name=DA + [/clear_variable] + + # We need to change all existing bats to normal types instead of SotA types + # so they are drawn above terrains. SotA bats were necessary for the ship + # where they were drawn behind the rigging, but for the spiderwebs in this + # scenario, normal bats look a lot better. First, we'll make sure newly + # recruited ones will be correct: + [disallow_recruit] + side=1 + type=Vampire Bat SotA + [/disallow_recruit] + [allow_recruit] + side=1 + type=Vampire Bat + [/allow_recruit] + + # Now, all the bats on the recall list get copied, except for the type. + [store_unit] + [filter] + type=Vampire Bat SotA, Blood Bat SotA, Dread Bat SotA + [/filter] + variable=bats + kill=yes + [/store_unit] + + [for] + array=bats + variable=i + [do] + # Get the new type: + [switch] + variable=bats[$i].type + [case] + value=Vampire Bat SotA + [set_variable] + name=new_type + value=Vampire Bat + [/set_variable] + [/case] + [case] + value=Blood Bat SotA + [set_variable] + name=new_type + value=Blood Bat + [/set_variable] + [/case] + [case] + value=Dread Bat SotA + [set_variable] + name=new_type + value=Dread Bat + [/set_variable] + [/case] + [/switch] + + # Create a new bat with the same attributes as the old one: + [unit] + type=$new_type + max_experience=$bats[$i].max_experience + max_hitpoints=$bats[$i].max_hitpoints + experience=$bats[$i].experience + name=$bats[$i].name + id=$bats[$i].id + side=1 + placement=recall # The only place they can be at the moment. + [modifications] + [insert_tag] + name=trait + variable=bats[$i].modifications.trait[0] + [/insert_tag] + [insert_tag] + name=trait + variable=bats[$i].modifications.trait[1] + [/insert_tag] + [/modifications] + [/unit] + [/do] + [/for] + + [clear_variable] + name=bats, new_type + [/clear_variable] + +#ifndef HARD + [terrain] + x,y=28,7 + terrain=Xu + [/terrain] + [terrain] + x=25 + y=10-11 + terrain=Rb + [/terrain] + [terrain] + x,y=32,7 + terrain=Qxu + [/terrain] +#endif + + # The value of spider_number is *not* the number of spiders, but this variable does + # help determine how many spiders get placed. See the repeats below. +#ifdef EASY + [set_variable] + name=spider_number + value=4 + [/set_variable] +#endif +#ifdef NORMAL + [set_variable] + name=spider_number + value=5 + [/set_variable] +#endif +#ifdef HARD + [set_variable] + name=spider_number + value=6 + [/set_variable] +#endif + + [repeat] + times="$($spider_number+5)" + [do] + [unit] + x,y=23,7 + type=Giant Spider + side=2 + placement=map_passable + [/unit] + [/do] + [/repeat] + + [repeat] + times=5 + [do] + [unit] + x,y=9,8 + type=Giant Spider + side=2 + placement=map_passable + ai_special=guardian + [/unit] + [/do] + [/repeat] + [repeat] + times=$spider_number + [do] + [unit] + x,y=9,10 + type=Giant Spider + side=2 + placement=map_passable + ai_special=guardian + [/unit] + [/do] + [/repeat] + + [clear_variable] + name=spider_number + [/clear_variable] + + # We aren't using the normal macro for the following recalls because it + # doesn't specify locations, and that's important this time. + [recall] + id=Ras-Tabahn + x,y=44,11 + [/recall] + [recall] + id=Carcyn + x,y=44,11 + [/recall] + [recall] + id=Shynal + x,y=44,11 + [/recall] + [recall] + id=Bone Captain + x,y=39,9 + [/recall] + [recall] + id=Vendraxis + x,y=39,10 + [/recall] + + # This map is just a larger version of the previous one, and that one had + # a lot of its shroud removed. These tags cause the same hexes to be revealed + # on this map as well. + [remove_shroud] + x,y=51,4 + radius=3 + [/remove_shroud] + [remove_shroud] + x,y=48,6 + radius=4 + [/remove_shroud] + [remove_shroud] + x,y=45,8 + radius=5 + [/remove_shroud] + [remove_shroud] + x,y=44,4 + radius=2 + [/remove_shroud] + + # The experience of either leader could be enough to level it into an ancient + # lich, but that won't happen automatically. Unstoring a unit *does* cause it + # to advance though, so we will store and unstore them both just in case. + [store_unit] + [filter] + canrecruit=yes + [/filter] + variable=leaders + [/store_unit] + [unstore_unit] + variable=leaders[0] + [/unstore_unit] + [unstore_unit] + variable=leaders[1] + [/unstore_unit] + [fire_event] + name=ardonna_profile + [/fire_event] + [clear_variable] + name=leaders + [/clear_variable] + + # This image is colored so that it looks the same as the one in the previous + # scenario *after* the adjustment for underground light levels. The previous + # one was a unit so it wasn't adjusted. + [item] + image=items/altar-sacrifice.png + x,y=45,7 + [/item] + [item] + image=items/altar-sacrifice-shadow.png + x,y=44,7 + [/item] + [/event] + + # *************************** PLAY *************************** + + # The closest group of spiders can't be allowed to move the full amount during the first + # turns, or they would immediately block the tunnel and make the scenario boring. We + # need to increase their movement gradually, so we will make their movement points be + # one less than the turn number. We change their movement points with an object instead + # of [modify_unit] so the correct distance they can move will be visible to the player. +#define CHANGE_SPIDER_MOVES MOVES + [store_unit] + [filter] + # The far group of spiders won't move because they are guardians. + # So, store only the closest group: + x=20-40 + side=2 + [/filter] + variable=spiders + [/store_unit] + + [for] + array=spiders + variable=i + [do] + [object] + [filter] + id=$spiders[$i].id + [/filter] + [effect] + apply_to=movement + set={MOVES} + [/effect] + silent=yes + duration=turn + [/object] + [/do] + [/for] + + [clear_variable] + name=spiders + [/clear_variable] +#enddef + + # This event needs to happen on the refresh for *both* sides so the player can see + # the results during their turn. This event will be removed at a later turn. + [event] + name=side 1 turn refresh,side 2 turn refresh + first_time_only=no + id=spider_move_restrictions + {CHANGE_SPIDER_MOVES ("$($turn_number - 1)")} + [/event] + + [event] + name=side 1 turn 5 + [event] + id=spider_move_restrictions + remove=yes + [/event] + {CHANGE_SPIDER_MOVES 6} + [/event] + + # This moves one leader out of the cave. If it's the first one, they get + # refreshed and stored. If it's the second one, the scenario ends. + [event] + name=moveto + first_time_only=no + [filter] + id=Ardonna + x,y=1,10 + [or] + id=Ras-Tabahn + x,y=1,10 + [/or] + [/filter] + [if] + [variable] + name=leader_gone.length + equals=1 + [/variable] + [then] + [hide_unit] + canrecruit=yes + [/hide_unit] + [fire_event] + name=end_scenario + [/fire_event] + [/then] + [else] + [heal_unit] + [filter] + side=1 + [/filter] + amount=full + restore_statuses=yes + [/heal_unit] + [store_unit] + [filter] + x,y=1,10 + [/filter] + variable=leader_gone + kill=yes + [/store_unit] + # The [set_variables] are to refresh this leader since they won't + # be on the map at the end to be refreshed automatically. + [set_variables] + name=leader_gone + mode=merge + [value] + x=recall + y=recall + [/value] + [/set_variables] + # The leader can't be unstored to the recall list yet, or the + # other leader would be able to recall them. We'll do it just + # before [endlevel]. + [/else] + [/if] + [/event] + + # *************************** ENDING / OPENING *************************** + [event] + name=start + [message] + speaker=narrator + image=portraits/undead/lich.png~SCALE(93, 93) + message= _ "You can now advance dark sorcerers to liches! You can also right-click on an existing necromancer to turn it into a lich as long as it is in a castle." + [/message] + + [message] + speaker=Ardonna + message= _ "We have conquered death! Let us bring the news back to Wesnoth. We should to let them know that nobody ever need die again." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I was planning to go that direction myself, so I have no objection. But, let us not go over those wretched mountain passes again. These tunnels should connect to the realm of Knalga and take us there directly." + [/message] + [message] + speaker=Ardonna + message= _ "Why would the Dwarvish empire abandon an outpost like this?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "We may find out. We should proceed cautiously." + [/message] + [/event] + + [event] + name=sighted + [filter] + side=2 + [/filter] + [if] + [have_unit] + id=Vendraxis + [/have_unit] + [then] + [message] + speaker=Vendraxis + message= _ "Giant spidersss! That explainsss the cobwebsss everywhere." #no spellcheck + [/message] + [/then] + [else] + [message] + speaker=Ardonna + message= _ "Giant spiders! That explains the cobwebs everywhere." + [/message] + [/else] + [/if] + [message] + speaker=Ardonna + message= _ "They are not moving much. Hopefully they continue to stay sleepy." + [/message] + [event] + name=side 2 turn 3 + [message] + speaker=Shynal + message= _ "They’re waking up now. Watch out." + [/message] + [/event] + [/event] + + [event] + name=die + first_time_only=no + [if] + [not] + [have_unit] + side=2 + [/have_unit] + [/not] + [then] + [fire_event] + name=end_scenario + [/fire_event] + [/then] + [/if] + [/event] + + [event] + name=end_scenario + + # If one of the leaders left the map and is stored, bring it back now: + [unstore_unit] + variable=leader_gone + [/unstore_unit] + [clear_variable] + name=leader_gone + [/clear_variable] + + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {TURN_INTO_A_LICH} + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} + +#undef CHANGE_SPIDER_MOVES +[/scenario] 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 new file mode 100644 index 000000000000..62124b8c2672 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/19_Lava_and_Stone.cfg @@ -0,0 +1,162 @@ +#textdomain wesnoth-sota + +[scenario] + name= _ "Lava and Stone" + map_data="{campaigns/Secrets_of_the_Ancients/maps/19_Lava_and_Stone.map}" + + id=19_Lava_and_Stone + next_scenario=20_North_Knalga + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "21 VI, 23 YW + +We continued down the tunnel in utter darkness for a time. The darkness presented no great difficulty: The bats could navigate perfectly well, and all the magi could sense exactly where they were. Ras-Tabahn and I talked. His plan is to go to Elensefar. He believes he can overthrow the city and install himself as the ruler of an undead empire. Citizens will join him in undeath willingly or not, but join they will. If they do not join willingly, or lack the mental fortitude to transition to lich form, they will of course be mindless slaves." + [/part] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "Ras-Tabahn has tried to persuade me to join him in his endeavor, but I have serious misgivings about his plan. I am not positive he can defeat the city guard, and enslaving the population is the one of the ways the old Wesfolk leaders earned their poor reputations. I think a more benevolent approach has a better chance of ensuring our legacy. We should spread the news of our success and invite the citizenry to join us voluntarily. I will journey south into Wesnoth proper, and visit Dan’Tonk and Weldyn. At some point in the distant future, my new friends and Ras-Tabahn’s population will probably clash, but that will be a worry for another time, and for now, we each continue to regard the other as an ally." + [/part] + [part] + [background_layer] + image=story/cave-glow.jpg + scale=no + [/background_layer] + story= _ "Our journey continued, and eventually, an orange glow appeared before us." + [/part] + {JOURNEY_PART 19} + [/story] + + {UNDERGROUND} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 50 50 50} + + [side] + {SIDE_1_BOTH} + {GOLD 220 180 120} + shroud=yes + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Trolls" + team_name=bad + {GOLD 100 150 200} + type=Troll Shaman + recruit=Troll Whelp, Troll Shaman + name= _ "Shurd" + id=Shurd + hidden=yes + {FLAG_VARIANT6 ragged} + [/side] + + [side] + side=3 + controller=ai + user_team_name= _ "Trolls" + team_name=bad + {GOLD 200 300 400} + {INCOME 10 20 30} + type=Great Troll + recruit=Troll Whelp, Troll, Troll Rocklobber + name= _ "Brek" + id=Brek + hidden=yes + {FLAG_VARIANT6 ragged} + [/side] + + [side] + side=4 + controller=ai + user_team_name= _ "Trolls" + team_name=bad + {GOLD 20 60 100} + {INCOME 10 20 30} + type=Troll Shaman + recruit=Troll Whelp, Troll Shaman + name= _ "Üurgh" + id=Uurgh + hidden=yes + {FLAG_VARIANT6 ragged} + [/side] + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat all enemy leaders" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_BOTH} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + [/objectives] + + {RECALL_LOYAL_UNITS} + [/event] + + # *************************** PLAY *************************** + # Nothing needed here + + # *************************** ENDING / OPENING *************************** + [event] + name=start + [message] + speaker=Ardonna + message= _ "I had heard that mountains sometimes breathed fire like dragons, but that seemed a fanciful tale. From the look of this, that may actually be true." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Yes, it’s quite true. This mountain fire has some uses too. For example, trolls use it for welding together crude armor." + [/message] + [message] + speaker=Ardonna + message= _ "Trolls! Do you think we shall encounter any?" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "I see no reason to expect..." + [/message] + [message] + speaker=Shurd + message= _ "Invaders!" + [/message] + [message] + speaker=Brek + message= _ "Crush them!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "...Yes. Yes, I do." + [/message] + [/event] + + [event] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {TURN_INTO_A_LICH} + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..24cd805e2691 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/20_North_Knalga.cfg @@ -0,0 +1,807 @@ +#textdomain wesnoth-sota + +# There is a lot of terrain dedicated to this map. There is a twinkling overlay, two +# versions of a stone gate, and a passable hex that looks very small to represent a +# narrow passage. The twinkling overlay is pretty generic, but for the others, no attempt +# has been made to make them work anywhere other than where they are drawn. + +[scenario] + name= _ "North Knalga" + map_data="{campaigns/Secrets_of_the_Ancients/maps/20_North_Knalga.map}" + + id=20_North_Knalga + next_scenario=21_Against_the_World + + [story] + [part] + story= _ "27 VI, 23 YW + +We left the fires of the mountain behind and plunged once more into darkness. After a long trek, we were brought up short by a dead end in the tunnel...but the wall was not solid." + [/part] + {JOURNEY_PART 20} + [/story] + + {UNDERGROUND} + {DEFAULT_MUSIC_PLAYLIST} + {TURNS 32 31 30} + + [side] + {SIDE_1_BOTH} + # The player should have a lot of gold after the last scenario, so: + {GOLD 100 40 20} + shroud=yes + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Dwarves" + team_name=bad + type=Dwarvish Lord + name= _ "Golbanduth" + id=Golbanduth + {GOLD 600 800 1000} + recruit=Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Lord, Dwarvish Thunderguard, Dwarvish Pathfinder, Dwarvish Runesmith + # The castle tiles are connected through two posts (stone walls), but that + # means the AI could recruit on the posts. These two units sit on those + # locations in order to prevent that. In prestart, they will be hidden and + # petrified so they don't affect the gameplay. + [unit] + x,y=18, 26 + type=Dummy + [/unit] + [unit] + x,y=22, 26 + type=Dummy + [/unit] + {FLAG_VARIANT knalgan} + shroud=yes # This is necessary for some sighted events. + [/side] + {STARTING_VILLAGES 2 10} + + {ANIMATED_MAUSOLEUM 33 4} + {ANIMATED_MAUSOLEUM 33 6} + {ANIMATED_MAUSOLEUM 33 8} + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat the enemy leader" + condition=win + [/objective] + + {HOW_TO_LOSE_WITH_BOTH} + + [gold_carryover] + bonus=yes + carryover_percentage=40 + [/gold_carryover] + + [note] + description= _ "You can recruit from anywhere in the Hall of Heroes." + [/note] + [/objectives] + + [hide_unit] + id=Ardonna + [/hide_unit] + + [petrify] + type=Dummy + [/petrify] + [hide_unit] + type=Dummy + [/hide_unit] + + # Add a few miners to the Crystal Caves for flavor. They will run away as the + # player approaches, but could be used to level up a unit. + [store_locations] + x=3-25 + y=1-11 + terrain=!,X* + variable=possible_dwarf_locations + [/store_locations] + + [repeat] + times=4 + [do] + # Choose a location by selecting an array index: + [set_variable] + name=location_index + rand="0..$($possible_dwarf_locations.length-1)" + [/set_variable] + + [unit] + type=Dwarvish Miner + x=$possible_dwarf_locations[$location_index].x + y=$possible_dwarf_locations[$location_index].y + side=2 + [/unit] + [/do] + [/repeat] + + [clear_variable] + name=possible_dwarf_locations, location_index, dwarf_index + [/clear_variable] + + # Add one more miner who will have some dialog: + [unit] + type=Dwarvish Miner + placement=map_passable + x,y=25,12 + side=2 + id=spotter + max_moves=4 + [/unit] + + # All miners run away from side 1 because they are not soldiers. + [micro_ai] + side=2 + action=add + ai_type=coward + distance=4 + attack_if_trapped=yes # In case running away doesn't work. + [filter] + type=Dwarvish Miner + [/filter] + [/micro_ai] + + # Unit that will go get more gold for the leader. + [unit] + type=Dwarvish Berserker + x,y=19,27 + 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 + # initial castle-full of recruits. In effect, side 2 goes first. The player + # doesn't see that because of the shroud, so it doesn't need to be explained. + [repeat] + times=11 + [do] + {FIND_CASTLE_HEX 2 location} + [set_variable] + name=dwarf_type + rand=Dwarvish Steelclad, Dwarvish Lord, Dwarvish Thunderguard, Dwarvish Pathfinder, Dwarvish Runesmith + [/set_variable] + [unit] + type=$dwarf_type + side=2 + x=$location.x + y=$location.y + [/unit] + [/do] + [/repeat] + [clear_variable] + name=dwarf_type + [/clear_variable] + + [item] + image=scenery/rune4.png + x,y=32,15 + [/item] + + # ----- Hall of Heroes ----- + [item] + image=items/coffin-dwarf.png~FL() + x,y=36,2 + [/item] + [item] + image=items/coffin-dwarf.png + x,y=30,2 + [/item] + [item] + image=items/coffin-dwarf.png~FL() + x,y=36,4 + [/item] + [item] + image=items/coffin-dwarf.png + x,y=30,4 + [/item] + [item] + image=items/coffin-dwarf.png~FL() + x,y=36,6 + [/item] + [item] + image=items/coffin-dwarf.png + x,y=30,6 + [/item] + [item] + image=items/coffin-dwarf.png~FL() + x,y=36,8 + [/item] + [item] + image=items/coffin-dwarf.png + x,y=30,8 + [/item] + # These images are statues. They are scaled so they are larger than life. + [item] + image=units/dwarves/dragonguard/dragonguard-se-blade-defend1.png~GS()~SCALE(90,90)~CROP(0,20,60,60) + x,y=31,3 + [/item] + [item] + image=units/dwarves/explorer-ranged-1.png~FL()~GS()~SCALE(90,90)~CROP(0,15,70,70) + x,y=35,3 + [/item] + [item] + image=units/dwarves/lord.png~GS()~SCALE(90,90)~CROP(0,20,70,60) + x,y=31,5 + [/item] + [item] + image=units/dwarves/dragonguard/dragonguard-s-ranged6.png~FL()~GS()~SCALE(90,90)~CROP(0,30,65,60) + x,y=35,5 + [/item] + [item] + image=units/dwarves/arcanister.png~GS()~SCALE(90,90)~CROP(0,20,70,60) + x,y=31,7 + [/item] + [item] + image=units/dwarves/sentinel.png~FL()~GS()~SCALE(90,90)~CROP(0,20,66,60) + x,y=35,7 + [/item] + [item] + image=units/dwarves/explorer-melee-3.png~FL()~GS()~SCALE(90,90)~CROP(0,20,85,60) + x,y=35,9 + [/item] + [item] + image=units/dwarves/lord-se-axe2.png~GS()~SCALE(90,90)~CROP(0,10,60,60) + x,y=31,9 + [/item] + + # 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] + + # ----- Water Barrels ----- + [item] + image=items/barrel.png + x,y=39,23 + [/item] + [item] + image=items/barrel.png + x,y=39,24 + [/item] + [item] + image=items/barrel.png + x,y=38,23 + [/item] + [item] + image=items/barrel.png + x,y=36,23 + [/item] + + # ----- Workshop ----- + [item] + image=items/anvil.png + x,y=4,33 + [/item] + [item] + image=items/anvil.png + x,y=7,35 + [/item] + + [item] + image=items/axe.png + x,y=6,34 + [/item] + [item] + image=items/axe.png + x,y=7,34 + [/item] + [item] + image=items/gold.png + x,y=8,32 + [/item] + [item] + image=items/gold.png + x,y=9,33 + [/item] + [item] + image=items/coal.png + x,y=7,32 + [/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] + # 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] + side=1 + [/filter] + [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] + 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." + [/message] + + [message] + speaker=porter + message= _ "Yes, sire." + [/message] + + {THAW_UNIT porter} + {THAW_UNIT Golbanduth} + + [move_unit] + id=porter + 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=300 +#endif +#ifdef NORMAL + amount=450 +#endif +#ifdef HARD + amount=600 +#endif + [/gold] + [/event] + # *************************** ENDING / OPENING *************************** + +#define SHAKE X Y + [scroll] + x,y={X},{Y} + [/scroll] + [delay] + time=150 + [/delay] +#enddef + +#define BREAK_STATUE + [animate_unit] + [filter] + id=Ras-Tabahn + [/filter] + flag=attack + [primary_attack] + range=ranged + [/primary_attack] + hits=yes + [facing] + x,y=31,9 + [/facing] + [/animate_unit] + [remove_item] + x,y=31,9 + [/remove_item] +#enddef + + [event] + name=start + + [teleport] + [filter] + id=Ardonna + [/filter] + x,y=33,1 + animate=no + clear_shroud=yes + check_passability=no + [/teleport] + [message] + speaker=Ardonna + message= _ "Actually, I don’t think this is the end. There is air coming through here. Help me shift these stones." + [/message] + [sound] + name=cave-in.ogg + [/sound] + [delay] + time=1000 + [/delay] + [terrain] + x,y=33,1 + terrain=Uu + [/terrain] + [unhide_unit] + id=Ardonna + [/unhide_unit] + [delay] + time=1000 + [/delay] + [move_unit] + id=Ardonna + to_x=33 + to_y=9 + [/move_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 + layer=overlay + [/terrain] + [message] + speaker=Ardonna + message= _ "Now, where are we?" + [/message] + [message] + speaker=Ras-Tabahn + 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 + side=2 + x=31, 33 + y=17, 12 + [/move_unit_fake] + [unit] + x,y=33,12 + type=Dwarvish Sentinel + side=2 + name= _ "Aigondur" + id=Aigondur + [/unit] + [message] + speaker=Aigondur + message= _ "Human invaders be comin’ through the Hall o’ Heroes! I’m closin’ th’ Troll Gate!" + [/message] + [move_unit] + id=Aigondur + to_x=32 + to_y=15 + [/move_unit] + + [remove_item] + image=scenery/rune4.png + x,y=32,15 + [/remove_item] + [item] + image=scenery/rune4-glow.png + x,y=32,15 + [/item] + [redraw][/redraw] + [delay] + time=100 + [/delay] + [terrain] + x,y=33,15 + terrain=^Gytc + layer=overlay + [/terrain] + [redraw][/redraw] + [sound] + name=explosion.ogg + [/sound] + {SHAKE 2 1} + {SHAKE -1 -3} + {SHAKE -3 1} + {SHAKE 1 3} + {SHAKE 1 -2} + [delay] + time=500 + [/delay] + + [message] + speaker=Ardonna + message= _ "Well, we are not going that way." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "But look. There is a large crack in the wall to our left! I’m certain we could squeeze through." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "We’ll just remove the statue..." + [/message] + + {BREAK_STATUE} + [item] + image=items/debris1.png + x,y=31,9 + [/item] + [item] + image=misc/blank-hex.png~BLIT(units/dwarves/lord-se-axe2.png~GS()~SCALE(90,90)~CROP(0,30,60,40),0,20) + x,y=31,9 + [/item] + + {BREAK_STATUE} + [item] + image=items/debris2.png + x,y=31,9 + [/item] + [item] + image=misc/blank-hex.png~BLIT(units/dwarves/lord-se-axe2.png~GS()~SCALE(90,90)~CROP(0,45,60,25),0,35) + x,y=31,9 + [/item] + + {BREAK_STATUE} + [item] + image=items/debris3.png + x,y=31,9 + [/item] + [move_unit] + id=Ras-Tabahn + to_x=30 + to_y=8 + [/move_unit] + [message] + speaker=Ras-Tabahn + message= _ "...and push the coffin out of the way." + [/message] + + [remove_item] + x,y=30,8 + [/remove_item] + [item] + image=items/coffin-dwarf-back.png + x,y=30,8 + [/item] + [terrain] + x,y=29,9 + terrain='' + layer=overlay + [/terrain] + + # 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] + name=enemies defeated + [endlevel] + result=victory + bonus=yes + {NEW_GOLD_CARRYOVER 40} + [/endlevel] + [/event] + + {TURN_INTO_A_LICH} + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} +[/scenario] 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 new file mode 100644 index 000000000000..c2a3f1bd83d8 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/21_Against_the_World.cfg @@ -0,0 +1,866 @@ +#textdomain wesnoth-sota + +# Several enemies are placed on the map at the start. Three others are placed later on +# specific turns. It is possible for the player to occupy their castles before they +# appear, or wait nearby to assissinate them before they can recruit. This strategy will +# backfire as the leader will get at least a castle's worth of units a turn earlier in +# this case. Several events and macros control this. (About half of this file actually.) + +# This is slightly hackish since the closer contains VAR_NAME... +# wmlindent: opener "{NEAREST_HEX " +# wmlindent: closer "location}" + +[scenario] + name= _ "Against the World" + map_data="{campaigns/Secrets_of_the_Ancients/maps/21_Against_the_World.map}" + + id=21_Against_the_World + next_scenario=22_Epilogue + victory_when_enemies_defeated=no + + [story] + [part] + story= _ "30 VI, 23 YW + +From the northern part of the kingdom of Knalga, the tunnel split into many passageways. Being able to feel the life force of the dwarves allowed us to take mostly unoccupied tunnels, which we did." + [/part] + [part] + [background_layer] + image=story/ford-of-abez-2.jpg + scale=no + [/background_layer] + story= _ "3 VII, 23 YW + +We finally made it out of the mountains. We crossed the Ford of Abez late this morning, and hiked the rest of the day south-east, making for the town of Tath. We planned to split up there. I was going to go south to Dan’Tonk and Weldyn to spread our news, and Ras-Tabahn was to head toward Elensefar to carry out his plan of carving out a special place for us in the world. (And becoming some sort of king as well I suppose.)" + [/part] + [part] + [background_layer] + image=story/ford-of-abez-2.jpg + scale=no + [/background_layer] + story= _ "It was not to be. We were about to start on our separate journeys when the plains suddenly became more crowded." + [/part] + [/story] + + {MORNING} + {AFTERNOON} + {DUSK} + {FIRST_WATCH} + {SECOND_WATCH} + {DAWN} + {DEFAULT_MUSIC_PLAYLIST} + turns=-1 + + [side] + {SIDE_1_BOTH} + {GOLD 500 450 400} + [/side] + + [side] + side=2 + controller=ai + user_team_name= _ "Cavalry" + team_name=bad + {GOLD 200 300 400} + recruit=Knight, Dragoon + no_leader=yes + {INCOME 10 12 15} + {FLAG_VARIANT loyalist} + [/side] + + [side] + side=3 + controller=ai + user_team_name= _ "Saurians" + team_name=bad + {GOLD 350 450 550} + recruit=Saurian Ambusher, Saurian Oracle, Saurian Soothsayer + no_leader=yes + hidden=yes + income=-2 # Until they arrive. + [/side] + + [side] + side=4 + controller=ai + user_team_name= _ "Dwarves" + team_name=bad + {GOLD 350 450 550} + recruit=Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Lord, Dwarvish Thunderguard, Dwarvish Pathfinder, Dwarvish Runesmith + no_leader=yes + hidden=yes + income=-2 # Until they arrive. + [/side] + + [side] + side=5 + controller=ai + user_team_name= _ "Magi" + team_name=bad + {GOLD 300 400 500} + recruit=Mage, Red Mage, White Mage + no_leader=yes + hidden=yes + income=-2 # Until they arrive. + {FLAG_VARIANT loyalist} + [/side] + + [side] + side=6 + controller=ai + user_team_name= _ "Elves" + team_name=bad + {GOLD 250 320 400} + recruit=Elvish Hero, Elvish Sharpshooter, Elvish Sorceress, Elvish Druid + no_leader=yes + hidden=yes + income=-2 # Until they arrive. + {FLAG_VARIANT wood-elvish} + [/side] + + [side] + side=7 + controller=ai + user_team_name= _ "Merfolk" + team_name=bad + {GOLD 150 250 300} + recruit=Mermaid Priestess, Mermaid Enchantress, Mermaid Initiate, Merman Warrior, Merman Netcaster, Merman Spearman + no_leader=yes + {INCOME 4 6 8} + [ai] + # We want the merfolk to pick up villages, but not to start slithering + # over land towards the player's keep, which they would normally do. + # To prevent it, we make them avoid everything except water and + # villages (and their own castle). This is only active through turn 3 + # because a micro-ai is going to take over on turn 4 and send them + # down the river. + turns=1-3 + [avoid] + terrain=!,Chw,Khw,W*,*^V* + [/avoid] + [/ai] + {FLAG_VARIANT long} + [/side] + + [side] + side=8 + controller=ai + user_team_name= _ "Nagas" + team_name=bad + no_leader=yes + gold=0 + [ai] + leader_ignores_keep=yes + [/ai] + [/side] + + # This grabs an extra unit from a list for this side. (See the next macro for more + # info.) +#define EXTRA_STARTING_UNIT SIDE INDEX + # This variable name is used a lot, and it would be a problem if it were set: + [clear_variable] + name=location + [/clear_variable] + # We need a variable for the next if statement: + [set_variable] + name=side + value={SIDE} + [/set_variable] + #The dwarf leader arrives early enough that he is guaranteed to be able to reach + # his keep, so we will put *his* units on castle hexes. + [if] + [variable] + name=side + equals=4 + [/variable] + [then] + {FIND_CASTLE_HEX 4 location} + [/then] + [/if] + # The other leaders need more flexible placement. + [if] + [variable] + name=location.length + less_than=1 + [/variable] + [then] + [set_variables] + name=location + to_variable=leader_location + [/set_variables] + [/then] + [/if] + [unit] + x=$location.x + y=$location.y + side={SIDE} + type=$starting_units_list[{INDEX}].type + [/unit] + [gold] + # It costs about as much as a level-2 unit whether it is or not. This way it + # has little impact on the total number of units that will be fielded: + side={SIDE} + amount=-35 + [/gold] +#enddef + + # When an enemy leader of a new side arrives on the map, it could find the player's + # units sitting on its castle tiles so it can't recruit, or waiting to assassinate it. + # This would make it too easy for the player. In this case, the AI will get a castle-full + # of units without having to recruit them. Many of them will be more powerful than what + # it would have been able to recruit in the first place, making this strategy backfire + # on the player. +#define ADD_EXTRA_STARTING_UNITS SIDE + # close_units will be units from side 1 that can reach the castle this turn (before + # the leader can recruit), prevent the leader from getting to its keep, or attack + # the leader. + [clear_variable] + name=close_units + [/clear_variable] + + [store_locations] + [filter] + side={SIDE} + canrecruit=yes + [/filter] + variable=leader_location + [/store_locations] + [store_locations] + # If the leader managed to make it to its keep, these will be castle tiles: + x=$leader_location.x + y=$leader_location.y + radius=1 + variable=adjacent_to_leader + [/store_locations] + + [store_unit] + [filter] + side=1 + [/filter] + variable=side1_units + [/store_unit] + + # For each unit on side-1, store its reachable locations. Then, check each hex + # adjacent to the enemy leader to see if one matches one of those locations. + [for] + array=side1_units + variable=unit + [do] + [store_reachable_locations] + [filter] + id=$side1_units[$unit].id + [/filter] + moves=max + variable=reachable_locations + [/store_reachable_locations] + [for] + array=adjacent_to_leader + variable=adjacent + [do] + [if] + [have_location] + # If an enemy unit can reach this hex... + x=$adjacent_to_leader[$adjacent].x + y=$adjacent_to_leader[$adjacent].y + find_in=reachable_locations + [/have_location] + [and] + # ...and we haven't already stored this unit... + [have_unit] + id=$side1_units[$unit].id + [not] + find_in=close_units + [/not] + [/have_unit] + [/and] + [then] + # ...then add it to the close_units list: + [set_variables] + name=close_units + mode=append + to_variable=side1_units[$unit] + [/set_variables] + [/then] + [/if] + [/do] + [/for] + [/do] + [/for] + + # We need a variable to use in the switch statement: + [set_variable] + name=side + value={SIDE} + [/set_variable] + # This statement creates an array of types for the units that will be added to the + # incoming leader's side. The first five are added in order. The sixth is an extra + # high-level unit used in special circumstances, and the last is a generic kind of + # unit that will be used to finish filling up the keep. (Or the hexes around the + # leader if it couldn't reach its keep.) We also have a different message from + # each of the leaders depending on whether there are side-1 units nearby. + [switch] + variable=side + [case] + value=4 + [if] + [variable] + name=close_units.length + greater_than=0 + [/variable] + [then] + [set_variables] + name=starting_units_list + [split] + list="Dwarvish Explorer,Dwarvish Thunderguard,Dwarvish Explorer,Dwarvish Runemaster,Dwarvish Runesmith,Dwarvish Arcanister,Dwarvish Thunderguard" + key=type + separator="," + [/split] + [/set_variables] + [message] + speaker=Thrigalurd + message= _ "The enemy already attempts to breach our castle walls! Up arms lads, look lively!" + [/message] + [/then] + [else] + [message] + speaker=Thrigalurd + message= _ "Now we avenge the fallen of Knalga!" + [/message] + [/else] + [/if] + [/case] + [case] + value=5 + [if] + [variable] + name=close_units.length + greater_than=0 + [/variable] + [then] + [set_variables] + name=starting_units_list + [split] + list="White Mage,Silver Mage,Mage of Light,Red Mage,Mage of Light,Great Mage,Red Mage" + key=type + separator="," + [/split] + [/set_variables] + [message] + speaker=Carmyna + message= _ "The enemy is already poised to attack! They must have anticipated our arrival. No rest my friends; we go to work immediately." + [/message] + [/then] + [else] + [message] + speaker=Carmyna + message= _ "The battle is already underway. So many of our comrades have fallen! We must incinerate these undead and rid the world of this evil." + [/message] + [/else] + [/if] + [/case] + [case] + value=6 + [if] + [variable] + name=close_units.length + greater_than=0 + [/variable] + [then] + [set_variables] + name=starting_units_list + [split] + list="Elvish Sorceress,Elvish Sharpshooter,Elvish Enchantress,Elvish Druid,Elvish Enchantress,Elvish Sylph,Elvish Sorceress" + key=type + separator="," + [/split] + [/set_variables] + [message] + speaker=Galoïndrath + message= _ "What is this? The enemy lurking in wait in our forests? To arms! Let us immediately rid our land of this foulness!" + [/message] + [/then] + [else] + [message] + speaker=Galoïndrath + message= _ "Never again will these monsters use the spirits of our ancestors against us. We will burn them down!" + [/message] + [/else] + [/if] + [/case] + [/switch] + + [for] + array=close_units + variable=i + [do] + # For each side 1 unit in range, add a unit from the list: + [if] + [variable] + name=i + less_than=7 + [/variable] + [then] + {EXTRA_STARTING_UNIT {SIDE} $i} + [/then] + [/if] + + # If the close unit is an ancient lich waiting to assassinate the leader, it + # is going to find it protected by an equally-powerful unit. This doesn't + # completely prevent an assassination, but it makes the loss of the lich + # almost certain if the attempt fails (which is the most likely outcome). + [if] + [have_unit] + id=$close_units[$i].id + type=Ancient Lich, Ancient Lich SotA + [/have_unit] + [then] + # Using "5" as the index chooses a level-4 unit: + {EXTRA_STARTING_UNIT {SIDE} 5} + [/then] + [/if] + [/do] + [/for] + + # If the AI got just a couple units, they would go off to die one at a time. We + # finish filling up the keep so that doesn't happen. Also, this will make leader + # assassination by backstabbing shadows or nightguants very difficult. We will + # do nothing if side 1 wasn't nearby, and no extra units were added. In that case, + # the leader will just recruit as normal. + [store_unit] + [filter] + side={SIDE} + [/filter] + variable=extra_starting_units + [/store_unit] + [if] + [variable] + name=extra_starting_units.length + greater_than=1 # *One* unit is the leader. + [/variable] + [then] + [repeat] + times="$(7 - $extra_starting_units.length)" + [do] + {EXTRA_STARTING_UNIT {SIDE} 6} + [/do] + [/repeat] + [/then] + [else] + [set_variable] + name=extra_units_message + value="empty" + [/set_variable] + [/else] + [/if] + + # Having a unit sitting directly on the keep is rude of the player, so the AI gets + # an extra, powerful unit to kick it off. + [store_starting_location] + side={SIDE} + variable=keep_location + [/store_starting_location] + [if] + [have_unit] + side=1 + x=$keep_location.x + y=$keep_location.y + [/have_unit] + [then] + # Using "5" chooses a level-4 unit: + {EXTRA_STARTING_UNIT {SIDE} 5} + [/then] + [/if] + + [clear_variable] + name=adjacent_to_leader, side1_units, side, reachable_locations, starting_units_list, keep_location, leader_location, location, close_units, extra_starting_units + [/clear_variable] +#enddef + + # *************************** PRESTART *************************** + [event] + name=prestart + + [objectives] + side=1 + [objective] + description= _ "Defeat all enemy leaders" + condition=win + [/objective] + [objective] + description= _ "Death of Ardryn-Na" + condition=lose + [/objective] + [objective] + description= _ "Death of Ras-Tabahn" + condition=lose + [/objective] + + {HAS_NO_TURN_LIMIT} + {IS_LAST_SCENARIO} + [/objectives] + + {RECALL_LOYAL_UNITS} + + [item] + x,y=33,42 + image=scenery/tent-fancy-red.png + [/item] + [item] + x,y=7,39 + image=scenery/mine-abandoned.png + [/item] + [/event] + + # *************************** PLAY *************************** + [event] + name=turn 2 + + [move_unit_fake] + type=Saurian Flanker + side=3 + x=58, 47 + y=16, 19 + [/move_unit_fake] + [unit] + side=3 + x,y=47,19 + type=Saurian Flanker + name= _ "Fizztsars" + id=Fizztsars + canrecruit=yes + [/unit] + [message] + speaker=Fizztsars + message= _ "We have arrived, Taxsstrimon. We will fight bessside you." # no spellcheck + [/message] + [message] + speaker=Taxtrimon + message= _ "Well met Fizztsars. Now these creatures will certainly fall." + [/message] + [modify_side] + side=3 + hidden=no + {INCOME 10 15 20} + [/modify_side] + [/event] + + [event] +#ifdef EASY + name=turn 3 +#else + name=turn 4 +#endif + [move_unit_fake] + type=Dwarvish Dragonguard + side=4 + x=7, 8, 8 + y=39, 39, 37 + [/move_unit_fake] + [unit] + side=4 + x,y=8,37 + type=Dwarvish Dragonguard + name= _ "Thrigalurd" + id=Thrigalurd + canrecruit=yes + [/unit] + [modify_side] + side=4 + {INCOME 5 7 10} + hidden=no + [/modify_side] + + {ADD_EXTRA_STARTING_UNITS 4} + + [message] + speaker=Ras-Tabahn + message= _ "Look! The dwarves circled around in front of us." + [/message] + [message] + speaker=Ardonna + message= _ "That’s why getting through Knalga was so easy." + [/message] + + # The Merfolk leader will have recruited all he can for now. We turn him + # into a "messenger" and send him down the river in the east towards the + # player's keep. He will be escorted by all of his soldiers. + [micro_ai] + side=7 + ai_type=messenger_escort + action=add + id=Mauapan + waypoint_x=56, 45 + waypoint_y=9, 24 + [/micro_ai] + [/event] + + # When the Merfolk leader arrives near the player's keep, his "escorts" (all his + # soldiers) will be turned loose. + [event] + name=moveto + [filter] + id=Mauapan + x,y=45,24 + [/filter] + [micro_ai] + side=7 + ai_type=messenger_escort + action=delete + [/micro_ai] + [/event] + + [event] + name=turn 12, enemies defeated + + # Find the nearest hext to (4,13) that doesn't have unit on it: + {NEAREST_HEX 4 13 30 ( + [not] + [filter] + [/filter] + [/not]) + location} + + [move_unit_fake] + type=Great Mage + gender=female + side=5 + x=1, $location.x + y=14, $location.y + [/move_unit_fake] + + [unit] + side=5 + x=$location.x + y=$location.y + type=Great Mage + gender=female + name= _ "Carmyna" + id=Carmyna + # This is so she can't be assassinated by a single, lucky Ancient Lich: + [modifications] + {TRAIT_RESILIENT} + [/modifications] + canrecruit=yes + [/unit] + [modify_side] + side=5 + income=0 + hidden=no + [/modify_side] + + {ADD_EXTRA_STARTING_UNITS 5} + + [message] + speaker=Ardonna + message= _ "They just keep coming! Has nobody even considered what we offer?" + [/message] + + # Now that almost everybody is here, killing the leaders will end it. The + # player could *theoretically* avoid meeting the elves, but this is awfully + # unlikely. + [event] + name=enemies defeated + [message] + speaker=Ras-Tabahn + message= _ "Well. That was intense." + [/message] + [message] + speaker=Ardonna + message= _ "At last we are victorious!" + [/message] + [endlevel] + result=victory + bonus=no + carryover_report=no + [/endlevel] + [/event] + [/event] + + [event] + name=turn 13 + + {NEAREST_HEX 53 34 30 ( + [not] + [filter] + [/filter] + [/not]) + location} + + [move_unit_fake] + type=Elvish High Lord + side=6 + x=58, $location.x + y=36, $location.y + [/move_unit_fake] + + [unit] + side=6 + x=$location.x + y=$location.y + type=Elvish High Lord + name= _ "Galoïndrath" + id=Galoïndrath + # This is so he can't be assassinated by a single, lucky Ancient Lich: + [modifications] + {TRAIT_RESILIENT} + [/modifications] + canrecruit=yes + [/unit] + [modify_side] + side=6 + {INCOME 5 7 10} + hidden=no + [/modify_side] + + {ADD_EXTRA_STARTING_UNITS 6} + + [message] + speaker=Ardonna + message= _ "The whole world is against us." + [/message] + [/event] + + # *************************** ENDING / OPENING *************************** +#define PLACE_NAGA + [unit] + side=8 + x,y=51,20 + type=Naga Warrior + [/unit] +#enddef + +#define PLACE_RIDER TYPE + {FIND_CASTLE_HEX 2 location} + [unit] + x=$location.x + y=$location.y + type={TYPE} + side=2 + [/unit] +#enddef + + [event] + name=start + + [move_unit_fake] + type=Paladin + side=3 + x=40, 33 + y=43, 42 + [/move_unit_fake] + [unit] + side=2 + x,y=33,42 + type=Paladin + name= _ "Gwendir" + id=Gwendir + canrecruit=yes + [/unit] + [unit] + side=2 + x,y=33,42 + type=Knight + id=adviser + [/unit] +#ifdef EASY + {PLACE_RIDER Paladin} + {REPEAT 4 {PLACE_RIDER Knight}} +#endif +#ifdef NORMAL + {REPEAT 2 {PLACE_RIDER Paladin}} + {REPEAT 3 {PLACE_RIDER Knight}} +#endif +#ifdef HARD + {REPEAT 3 {PLACE_RIDER Paladin}} + {REPEAT 2 {PLACE_RIDER Knight}} +#endif + [message] + speaker=adviser + message= _ "This is the place Crelanu’s gryphon told us to come, and yon party has an ill-favored look." + [/message] + [message] + speaker=Gwendir + message= _ "Yes, I believe that is our quarry." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Crelanu! Still he haunts us. Remind me again why we didn’t kill him." + [/message] + [message] + speaker=Gwendir + message= _ "Ardonna of Tarrynth and Rassin Tabin, you stand convicted of necromancy, and sentenced to death!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "Is that all? Death holds no terror for us as we have died already. You will follow shortly." + [/message] + [message] + speaker=Gwendir + message= _ "The blessed swords of our order will soon give you cause to fear again." + [/message] + [message] + speaker=adviser + message= _ "Sir, the magi have not yet arrived." + [/message] + [message] + speaker=Gwendir + message= _ "No matter. We need not fear this darkness, and we need not wait on the schoolteachers." + [/message] + + [move_unit_fake] + type=Naga Myrmidon + side=8 + x=58, 51 + y=15, 20 + [/move_unit_fake] + [unit] + side=8 + x,y=51,20 + type=Naga Myrmidon + name= _ "Taxtrimon" + id=Taxtrimon + canrecruit=yes + [/unit] +#ifdef EASY + {REPEAT 10 {PLACE_NAGA}} +#endif +#ifdef NORMAL + {REPEAT 13 {PLACE_NAGA}} +#endif +#ifdef HARD + {REPEAT 16 {PLACE_NAGA}} +#endif + [message] + speaker=Taxtrimon + message= _ "We have found them! These magi destroyed a profitable business venture, and killed our males. We will take vengeance. You horse humans can assist us." + [/message] + + [move_unit_fake] + type=Merman Hoplite + side=7 + x=31, 36 + y=1, 5 + [/move_unit_fake] + [unit] + side=7 + x,y=36,5 + type=Merman Hoplite + name= _ "Mauapan" + id=Mauapan + canrecruit=yes + [/unit] + [message] + speaker=Mauapan + message= _ "I will also assist. Too many innocents have died. This ends today." + [/message] + [message] + speaker=Ardonna + message= _ "We are surrounded. We must defeat this horde." + [/message] + [/event] + + {TURN_INTO_A_LICH} + {HERO_DEATHS} + {MANAGE_PROFILE} + {KIDS_ADVANCE} +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/scenarios/22_Epilogue.cfg b/data/campaigns/Secrets_of_the_Ancients/scenarios/22_Epilogue.cfg new file mode 100644 index 000000000000..e601c0092c23 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/scenarios/22_Epilogue.cfg @@ -0,0 +1,64 @@ +#textdomain wesnoth-sota + +[scenario] + id=22_Epilogue + name= _ "Epilogue" + {NO_MAP_DATA} + turns=-1 + next_scenario=null + + [story] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + story= _ "10 VII, 23 YW — Final Entry + +We prevailed today on the field, but our victory was somewhat bitter. Everyone was afraid or angry and immediately attacked us instead of listening to our news. I realize now...the world is not ready for our knowledge. I give up on all of them. I am going to live in the old troll city and learn the applications of mountain fire. In some future time, less conservative attitudes will dominate, and I can certainly afford to wait. In the meantime, we are doing what we can to hasten that day." + [/part] + [part] + [background_layer] + image=story/book.png + scale=no + [/background_layer] + [if] + [have_unit] + id=Vendraxis + search_recall_list=yes + [/have_unit] + [then] + story= _ "Ras-Tabahn is going to rebuild his strength and continue to Elensefar. Most of the others are going with him. I wish them success. Vendraxis now knows what he must learn to replicate our metamorphosis. He will use the years left to him in study and practice while he attempts to change the attitudes of his people. As for me, I have placed some spells on my journal to help keep it from harm, and I will make it conspicuous on this battlefield. I hope that it will eventually make its way into the hands of someone in Tath who is willing to learn the secrets of the ancients." + [/then] + [else] + story= _ "Ras-Tabahn is going to rebuild his strength and continue to Elensefar. Most of the others are going with him. I wish them success. As for me, I have placed some spells on my journal to help keep it from harm, and I will make it conspicuous on this battlefield. I hope that it will eventually make its way into the hands of someone in Tath who is willing to learn the secrets of the ancients." + [/else] + [/if] + [/part] + [/story] + + [event] + name=prestart + [endlevel] + carryover_report=no + replay_save=no + linger_mode=no + end_text_duration=2500 # The default seems a bit too long. + + # This is necessary if the player is continuing from a previous + # save of an unfinished version of this campaign (it can be + # removed eventually): + end_text= _ "The End" + [/endlevel] + [/event] + + # This is never used, but it seems to be necessary to have sides defined. + [side] + {SIDE_1_BOTH} + [/side] + [side] + type="Orcish Warlord" + side=2 + canrecruit=yes + [/side] +[/scenario] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Bat_Blood.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Blood.cfg new file mode 100644 index 000000000000..9c89010c5e8a --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Blood.cfg @@ -0,0 +1,16 @@ +#textdomain wesnoth-units +[unit_type] + id=Blood Bat SotA + [base_unit] + id=Blood Bat + [/base_unit] + advances_to=Dread Bat SotA + hide_help=yes + do_not_list=yes + [standing_anim] + layer=0 + [/standing_anim] + [standing_anim] + layer=0 + [/standing_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Bat_Dread.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Dread.cfg new file mode 100644 index 000000000000..d84482e036d7 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Dread.cfg @@ -0,0 +1,15 @@ +#textdomain wesnoth-units +[unit_type] + id=Dread Bat SotA + [base_unit] + id=Dread Bat + [/base_unit] + hide_help=yes + do_not_list=yes + [standing_anim] + layer=0 + [/standing_anim] + [standing_anim] + layer=0 + [/standing_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Bat_Vampire.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Vampire.cfg new file mode 100644 index 000000000000..aba80664b8f7 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Bat_Vampire.cfg @@ -0,0 +1,16 @@ +#textdomain wesnoth-units +[unit_type] + id=Vampire Bat SotA + [base_unit] + id=Vampire Bat + [/base_unit] + advances_to=Blood Bat SotA + hide_help=yes + do_not_list=yes + [standing_anim] + layer=0 + [/standing_anim] + [standing_anim] + layer=0 + [/standing_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Bone_Bird.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Bone_Bird.cfg new file mode 100644 index 000000000000..84b6f79204f1 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Bone_Bird.cfg @@ -0,0 +1,34 @@ +#textdomain wesnoth-sota +[unit_type] + id=Bone Bird + name= _ "Bone Bird" + race=undead + image="units/bone-bird.png" + hitpoints=33 + movement_type=undeadfoot + [defense] + hills=60 + mountains=50 + fungus=60 + # wmllint: match forest=-70 with {SPECIAL_NOTES_DEFENSE_CAP} + forest=-70 + village=60 + [/defense] + [resistance] + blade=80 + [/resistance] + movement=9 + experience=32 + level=1 + alignment=chaotic + advances_to=null + {AMLA_DEFAULT} + cost=16 + usage=scout + description=""+{SPECIAL_NOTES}+{SPECIAL_NOTES_SUBMERGE}+{SPECIAL_NOTES_DEFENSE_CAP} + [abilities] + {ABILITY_SUBMERGE} + [/abilities] + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Bone_Captain.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Bone_Captain.cfg new file mode 100644 index 000000000000..4cbc393d8507 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Bone_Captain.cfg @@ -0,0 +1,41 @@ +#textdomain wesnoth-sota +[unit_type] + id=Bone Captain + name= _ "Bone Captain" + race=undead + image="units/bone-captain.png" + profile=portraits/bone-captain2.png + small_profile=portraits/bone-captain2.png~CROP(10, 31, 344, 344) + hitpoints=46 + movement_type=undeadfoot + movement=6 + experience=100 + level=2 + alignment=chaotic + advances_to=null + {AMLA_DEFAULT} + cost=28 + usage=fighter + description= _ "Captains are masters in life, but in death they may be slaves to a necromancer. Through sheer force of habit, an undead captain continues to exude authority even if all his other memories have been lost."+{SPECIAL_NOTES}+{SPECIAL_NOTES_LEADERSHIP}+{SPECIAL_NOTES_SUBMERGE} + die_sound=skeleton-big-die.ogg + {DEFENSE_ANIM "units/bone-captain.png" "units/bone-captain.png" {SOUND_LIST:SKELETON_BIG_HIT} } + [abilities] + {ABILITY_SUBMERGE} + {ABILITY_LEADERSHIP} + [/abilities] + [resistance] + blade=60 + pierce=40 + impact=120 + [/resistance] + [attack] + name=saber + #textdomain wesnoth-units + description=_"saber" + type=blade + range=melee + damage=7 + number=4 + icon=attacks/sword-human-short.png + [/attack] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Corpse_Shynal.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Corpse_Shynal.cfg new file mode 100644 index 000000000000..39afe5a24750 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Corpse_Shynal.cfg @@ -0,0 +1,89 @@ +#textdomain wesnoth-units +[unit_type] + id=Walking Corpse Shynal + name= _ "Walking Corpse" + race=undead + {TRAIT_FEARLESS_MUSTHAVE} + image="units/delinquent/zombie-shynal.png" + hitpoints=18 + movement_type=smallfoot + movement=4 + experience=24 + level=0 + alignment=chaotic + advances_to=Soulless + cost=8 + usage=fighter + description= _ "Walking Corpses are the bodies of the dead, re-animated by dark magic. Though not especially dangerous to a trained soldier, the sight of one’s former comrades amongst their number is frightening to say the least."+{SPECIAL_NOTES}+{SPECIAL_NOTES_PLAGUE} + die_sound={SOUND_LIST:ZOMBIE_WEAK_HIT} + {DEFENSE_ANIM "units/delinquent/zombie-shynal-defend.png" "units/delinquent/zombie-shynal.png" {SOUND_LIST:ZOMBIE_WEAK_HIT} } + hide_help=yes + do_not_list=yes + + [resistance] + arcane=140 + [/resistance] + [movement_costs] + deep_water=4 + [/movement_costs] + [defense] + deep_water=90 + [/defense] + + [attack] + name=touch + description=_"touch" + icon=attacks/touch-zombie.png + type=impact + range=melee + damage=6 + number=2 + [specials] + {WEAPON_SPECIAL_PLAGUE} + [/specials] + [/attack] + + [death] + start_time=0 + [frame] + image="units/delinquent/zombie-shynal-die-[1~4].png:150" + [/frame] + [frame] + image="units/undead/soulless-die-[5~10].png:150" + [/frame] + [/death] + + [attack_anim] + [filter_attack] + name=touch + [/filter_attack] + direction=s + start_time=-200 + [frame] + image="units/delinquent/zombie-shynal-attack-s.png:400" + sound=zombie-attack.wav + [/frame] + [/attack_anim] + [attack_anim] + [filter_attack] + name=touch + [/filter_attack] + direction=n + start_time=-200 + [frame] + image="units/delinquent/zombie-shynal-attack-n.png:400" + sound=zombie-attack.wav + [/frame] + [/attack_anim] + [attack_anim] + [filter_attack] + name=touch + [/filter_attack] + direction=se,sw,ne,nw + start_time=-200 + [frame] + image="units/delinquent/zombie-shynal-attack.png:400" + sound=zombie-attack.wav + [/frame] + [/attack_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Delinquent.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Delinquent.cfg new file mode 100644 index 000000000000..92e43bebb8a5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Delinquent.cfg @@ -0,0 +1,78 @@ +#textdomain wesnoth-sota +[unit_type] + id=Delinquent + name= _ "Delinquent" + gender=female + race=human + image="units/delinquent/delinquent.png" + profile="portraits/humans/footpad+female.png" + hitpoints=16 + movement_type=elusivefoot + movement=5 + experience=18 + level=0 + alignment=chaotic + advances_to=Footpad,Dark Adept SotA + cost=8 + usage=fighter + description= _ "Some girls shun the typical life planned for them by society, and fall in with the criminal element. Though they may end up in jail, that seems preferable to them than tying themselves to a husband." + die_sound={SOUND_LIST:HUMAN_DIE} + {DEFENSE_ANIM "units/delinquent/delinquent-defend-2.png" "units/delinquent/delinquent-defend-1.png" {SOUND_LIST:HUMAN_HIT} } + hide_help=yes + do_not_list=yes + + [attack] + name=club + #textdomain wesnoth-units + description= _ "club" + icon=attacks/club-small.png + type=impact + range=melee + damage=4 + number=2 + [/attack] + [attack] + name=sling + description=_"sling" + type=impact + range=ranged + damage=2 + number=2 + [/attack] + [attack_anim] + [filter_attack] + name=club + [/filter_attack] + start_time=-600 + [frame] + image="units/delinquent/delinquent-attack-[1~9].png:100" + [/frame] + {SOUND:HIT_AND_MISS staff.ogg staff-miss.ogg -125} + [/attack_anim] + [attack_anim] + [filter_attack] + name=sling + [/filter_attack] + offset=0.0 + start_time=-400 + [if] + hits=yes + {MISSILE_FRAME_STONE_HIT 5 -6} + [frame] + image="units/delinquent/delinquent-ranged-1.png:250" + sound=sling.ogg + [/frame] + [/if] + [else] + hits=no + {MISSILE_FRAME_STONE_MISS 5 -6} + [frame] + image="units/delinquent/delinquent-ranged-1.png:250" + sound=sling-miss.ogg + [/frame] + [/else] + [frame] + image="units/delinquent/delinquent-ranged-2.png:200" + [/frame] + [/attack_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Dummy.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Dummy.cfg new file mode 100644 index 000000000000..54f29ae27218 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Dummy.cfg @@ -0,0 +1,18 @@ +#textdomain wesnoth-sota +[unit_type] + id=Dummy + name="" + race=undead + image="misc/blank-hex.png" + hitpoints=1 + movement_type=smallfoot + movement=0 + experience=1 + level=0 + alignment=neutral + advances_to=null + usage=null + cost=1 + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Dwarvish_Miner.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Dwarvish_Miner.cfg new file mode 100644 index 000000000000..9ac50d861086 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Dwarvish_Miner.cfg @@ -0,0 +1,40 @@ +#textdomain wesnoth-sota +[unit_type] + id=Dwarvish Miner + name= _ "Dwarvish Miner" + race=dwarf + image=units/dwarves/miner.png + hitpoints=25 + movement_type=dwarvishfoot + movement=4 + level=1 + alignment=neutral + advances_to=null + {AMLA_DEFAULT} + experience=50 + cost=19 + usage=fighter + description= _ "Dwarvish miners are the grunt workers of Dwarvish society. They take the precious ores out of the ground, but do not ever take part in the crafting of weapons or artifacts. They have no military training, but they can still do some damage with their picks." + {DEFENSE_ANIM "units/dwarves/miner-defend-2.png" "units/dwarves/miner-defend-1.png" {SOUND_LIST:DWARF_HIT} } + die_sound={SOUND_LIST:DWARF_DIE} + [attack] + name=pick + description= _"pick" + type=pierce + range=melee + damage=4 + number=2 + icon=attacks/pick-axe.png + [/attack] + [attack_anim] + [filter_attack] + name=pick + [/filter_attack] + start_time=-350 + offset=0.0~0.3,0.3~0.5,0.5~0.6,0.6~0.5,0.5~0.3,0.3~0.0 + [frame] + image=units/dwarves/miner-attack-[1~6].png:100 + [/frame] + {SOUND:HIT_AND_MISS axe.ogg {SOUND_LIST:MISS} -50} + [/attack_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Khalif.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Khalif.cfg new file mode 100644 index 000000000000..9a73056c5880 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Khalif.cfg @@ -0,0 +1,18 @@ +#textdomain wesnoth-sota +# used as passenger +[unit_type] + id=Khalif + name= _ "Khalif" + race=khalifate + image="units/khalif.png" + hitpoints=30 + movement_type=smallfoot + movement=5 + experience=30 + level=1 + advances_to=null + alignment=lawful + cost=12 + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necro_Ancient_Lich.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Ancient_Lich.cfg new file mode 100644 index 000000000000..6e751d82845a --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Ancient_Lich.cfg @@ -0,0 +1,152 @@ +#textdomain wesnoth-sota +[unit_type] + id=Ancient Lich SotA + name= _ "Ancient Lich" + race=undead + image="units/ancient-lich/ancient-lich.png" + profile="portraits/undead/ancient-lich.png" + hitpoints=80 + movement_type=undeadfoot + movement=6 + experience=200 + level=4 + alignment=chaotic + advances_to=null + {AMLA_DEFAULT} + cost=100 + usage=mixed fighter + description= _ "An experienced lich can easily tap into the power of the spirit world and throw freezing lightning to devastating effect, or drain the very life force from a body. The power available to a lich like this is awesome to behold. Anyone who encounters an Ancient Lich likely has far worse things to worry about than death!"+{SPECIAL_NOTES}+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_DRAIN}+{SPECIAL_NOTES_ARCANE}+{SPECIAL_NOTES_SUBMERGE} + die_sound=lich-die.ogg + {DEFENSE_ANIM "units/ancient-lich/ancient-lich-defend.png" "units/ancient-lich/ancient-lich.png" {SOUND_LIST:LICH_HIT} } + [movement_costs] + shallow_water=3 + [/movement_costs] + [abilities] + {ABILITY_SUBMERGE} + [/abilities] + [attack] + name=touch + #textdomain wesnoth-units + description=_"touch" + icon=attacks/touch-undead.png + type=arcane + range=melee + damage=8 + number=4 + [specials] + {WEAPON_SPECIAL_DRAIN} + [/specials] + [/attack] + [attack] + name=chill tempest + description=_"chill tempest" + type=cold + [specials] + {WEAPON_SPECIAL_MAGICAL} + [/specials] + range=ranged + damage=13 + number=5 + icon=attacks/iceball.png + [/attack] + [attack] + name=shadow wave + description=_"shadow wave" + type=arcane + [specials] + {WEAPON_SPECIAL_MAGICAL} + [/specials] + range=ranged + damage=9 + number=5 + icon=attacks/dark-missile.png + [/attack] + + [recruiting_anim] + [filter_second] + race=undead + [/filter_second] + start_time=-300 + [frame] + image="units/ancient-lich/ancient-lich-magic.png:150" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich-magic.png" + halo=halo/undead/black-magic-[1~5].png:[75*4,50] + [/frame] + sound_start_time=-75 + [sound_frame] + sound=magic-dark-big.ogg + [/sound_frame] + [frame] + image="units/ancient-lich/ancient-lich-magic.png:100" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich.png:1" + [/frame] + [/recruiting_anim] + [attack_anim] + [filter_attack] + name=chill tempest + [/filter_attack] + + offset=0 + + {MISSILE_FRAME_CHILL_TEMPEST 0 -15} + + start_time=-355 + [frame] + image="units/ancient-lich/ancient-lich-magic.png:150" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich-magic.png" + halo=halo/undead/black-magic-[1~5].png:[75*4,50] + [/frame] + {SOUND:HIT_AND_MISS magic-dark-big.ogg magic-dark-big-miss.ogg -150} + [frame] + image="units/ancient-lich/ancient-lich-magic.png:100" + [/frame] + [/attack_anim] + [attack_anim] + [filter_attack] + name=shadow wave + [/filter_attack] + + {MISSILE_FRAME_SHADOW_WAVE} + + start_time=-675 + [frame] + image="units/ancient-lich/ancient-lich-magic.png:150" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich-magic.png" + halo=halo/undead/black-magic-[1~5].png:[75*4,50] + [/frame] + [frame] + image="units/ancient-lich/ancient-lich-magic.png:200" + [/frame] + {SOUND:HIT_AND_MISS magic-dark-big.ogg magic-dark-big-miss.ogg -50} + [frame] + image="units/ancient-lich/ancient-lich-magic.png:100" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich.png:50" + [/frame] + [/attack_anim] + [attack_anim] + [filter_attack] + name=touch + [/filter_attack] + start_time=-250 + [frame] + image="units/ancient-lich/ancient-lich.png:50" + [/frame] + [frame] + image="units/ancient-lich/ancient-lich-melee.png:300" + [/frame] + {SOUND:HIT_AND_MISS wail-sml.wav {SOUND_LIST:MISS} -100} + [frame] + image="units/ancient-lich/ancient-lich.png:75" + [/frame] + [/attack_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Adept.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Adept.cfg new file mode 100644 index 000000000000..63884c089456 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Adept.cfg @@ -0,0 +1,11 @@ +#textdomain wesnoth-units +# Same as normal, except advances to Dark Sorcerer SotA +[unit_type] + id=Dark Adept SotA + [base_unit] + id=Dark Adept + [/base_unit] + advances_to=Dark Sorcerer SotA + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Sorcerer.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Sorcerer.cfg new file mode 100644 index 000000000000..bb4efd17d9a5 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Dark_Sorcerer.cfg @@ -0,0 +1,35 @@ +#textdomain wesnoth-units +[unit_type] + id=Dark Sorcerer SotA + [base_unit] + id=Dark Sorcerer + [/base_unit] + # The unit cannot advance to a lich until the main character learns how. + advances_to=Necromancer SotA + hide_help=yes + do_not_list=yes + [extra_anim] + # This is used to animate the chocobone sequence wherever the player first + # sees it. It's the same as the recruitment animation, but that one can't be + # called with WML. + flag=recruit2 + start_time=-300 + [frame] + image="units/undead-necromancers/necromancer+female-magic-[1,2].png:75" + [/frame] + [frame] + image="units/undead-necromancers/necromancer+female-magic-3.png" + halo=halo/undead/black-magic-[1~5].png:[75*4,50] + [/frame] + sound_start_time=-75 + [sound_frame] + sound=magic-dark.ogg + [/sound_frame] + [frame] + image="units/undead-necromancers/necromancer+female-magic-[2,1].png:50" + [/frame] + [frame] + image="units/undead-necromancers/necromancer.png:1" + [/frame] + [/extra_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necro_Lich.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Lich.cfg new file mode 100644 index 000000000000..55cf85f6556b --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Lich.cfg @@ -0,0 +1,11 @@ +#textdomain wesnoth-units +[unit_type] + id=Lich SotA + [base_unit] + id=Lich + [/base_unit] + advances_to=Ancient Lich SotA + experience=250 + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necro_Sacrifice.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Sacrifice.cfg new file mode 100644 index 000000000000..49f57d155d63 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necro_Sacrifice.cfg @@ -0,0 +1,22 @@ +#textdomain wesnoth-units +# This is only used to show Ras-Tabahn on the altar. It has to be a unit though, and not +# an item, or it would be color-shifted for the underground. Although a halo also +# wouldn't be color-shifted, that won't work because a special skeleton must be drawn on +# top of it. +[unit_type] + id=Sacrifice + name= _ "Necromancer" + race=human + image="units/rastabahn-on-altar.png" + hitpoints=70 + movement_type=smallfoot + movement=0 + experience=150 + level=3 + alignment=chaotic + advances_to=null + usage=null + cost=50 + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Necromancer.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Necromancer.cfg new file mode 100644 index 000000000000..9c21b6e5b026 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Necromancer.cfg @@ -0,0 +1,33 @@ +#textdomain wesnoth-units +[unit_type] + id=Necromancer SotA + [base_unit] + id=Necromancer + [/base_unit] + hide_help=yes + do_not_list=yes + [extra_anim] + # This is used to animate the chocobone sequence wherever the player first + # sees it. It's the same as the recruitment animation, but that one can't be + # called with WML. + flag=recruit2 + start_time=-300 + [frame] + image="units/undead-necromancers/necromancer+female-magic-[1,2].png:75" + [/frame] + [frame] + image="units/undead-necromancers/necromancer+female-magic-3.png" + halo=halo/undead/black-magic-[1~5].png:[75*4,50] + [/frame] + sound_start_time=-75 + [sound_frame] + sound=magic-dark.ogg + [/sound_frame] + [frame] + image="units/undead-necromancers/necromancer+female-magic-[2,1].png:50" + [/frame] + [frame] + image="units/undead-necromancers/necromancer.png:1" + [/frame] + [/extra_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Noble.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Noble.cfg new file mode 100644 index 000000000000..7bdc6e1b2a09 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Noble.cfg @@ -0,0 +1,19 @@ +#textdomain wesnoth-sota +# used as passenger +[unit_type] + id=Noble + name= _ "Noble" + race=human + image="units/noble.png" + hitpoints=30 + movement_type=smallfoot + movement=5 + experience=30 + level=1 + alignment=lawful + advances_to=null + usage=null + cost=12 + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Orcish_Shaman.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Orcish_Shaman.cfg new file mode 100644 index 000000000000..2b02682e5357 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Orcish_Shaman.cfg @@ -0,0 +1,100 @@ +#textdomain wesnoth-sota +[unit_type] + id=Orcish Shaman + name= _ "Orcish Shaman" + race=orc + image="units/orcish-shaman.png" + hitpoints=23 + movement_type=orcishfoot + profile="portraits/orcish-shaman.png" + [defense] + village=30 + [/defense] + movement=5 + experience=50 + level=1 + alignment=chaotic + advances_to=null + {AMLA_DEFAULT} + cost=21 + usage=mixed fighter + description= _ "Orcish Shamans are the guardians of orcish magic. Respected among orcish tribes, they form the Orcish Council, which makes important decisions for the whole Orcish community and arbitrates the many conflicts that arise between tribes of this argumentative race. Although physically weak (for Orcs), Orcish Shamans are good spell casters and can curse their enemies, draining their life."+{SPECIAL_NOTES}+{SPECIAL_NOTES_DRAIN} + die_sound={SOUND_LIST:ORC_DIE} + {DEFENSE_ANIM "units/orcish-shaman-defend-2.png" "units/orcish-shaman-defend-1.png" {SOUND_LIST:ORC_HIT} } + [attack] + name=staff + #textdomain wesnoth-units + description= _"staff" + type=impact + range=melee + damage=5 + number=1 + icon=attacks/druidstaff.png + [/attack] + [attack] + name=curse + description= _"curse" + type=pierce + range=ranged + damage=8 + number=2 + [specials] + {WEAPON_SPECIAL_DRAIN} + [/specials] + icon=attacks/curse.png + [/attack] + [attack_anim] + [filter_attack] + name=curse + [/filter_attack] + + missile_start_time=-200 + start_time=-350 + halo1_start_time=-350 + halo2_start_time=-200 + sound_start_time=0 + + [missile_frame] + halo="halo/elven/druid-healing[8~1].png~CS(50,-30,-50):50" + offset=1.0~0.0 + [/missile_frame] + + [frame] + image="units/orcish-shaman.png:200" + [/frame] + [frame] + image="units/orcish-shaman-magic.png:300" + [/frame] + + [halo1_frame] + halo="halo/elven/nature-halo[8~1].png~CS(50,-30,-50)~O([80%*2,60%,40%,30%,20%*3]):75" + offset=1.0 + auto_vflip=no + auto_hflip=no + [/halo1_frame] + + [halo2_frame] + halo="halo/elven/nature-halo[1~8].png~CS(50,-30,-50)~O([20%*3,30%,40%,60%,80%*2]):75" + offset=0.0 + auto_vflip=no + auto_hflip=no + [/halo2_frame] + + [sound_frame] + sound=magicmissile.wav + [/sound_frame] + [/attack_anim] + [attack_anim] + [filter_attack] + name=staff + [/filter_attack] + + start_time=-200 + + [frame] + image="units/orcish-shaman.png:350" + [/frame] + + {SOUND:HIT_AND_MISS staff.ogg staff-miss.ogg -125} + [/attack_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Ruffian.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Ruffian.cfg new file mode 100644 index 000000000000..d932b294b176 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Ruffian.cfg @@ -0,0 +1,11 @@ +#textdomain wesnoth-units +# Same as normal, except it can advance to Dark Adept SotA, too +[unit_type] + id=Ruffian SotA + [base_unit] + id=Ruffian + [/base_unit] + advances_to=Footpad,Thug,Dark Adept SotA + hide_help=yes + do_not_list=yes +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Sailor.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Sailor.cfg new file mode 100644 index 000000000000..3506cd13f7e1 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Sailor.cfg @@ -0,0 +1,30 @@ +#textdomain wesnoth-sota +[unit_type] + id=Sailor + name= _ "Sailor" + race=human + image="units/sailor.png" + hitpoints=30 + movement_type=smallfoot + movement=5 + experience=50 + level=1 + alignment=neutral + advances_to=null + {AMLA_DEFAULT} + cost=12 + usage=fighter + description= _ "Sailors are hired for their strength, and their work builds up even more muscle. Consequently, the cheap blades they are provided with still do considerable damage." + die_sound={SOUND_LIST:HUMAN_DIE} + {DEFENSE_ANIM "units/sailor.png" "units/sailor.png" {SOUND_LIST:HUMAN_HIT} } + [attack] + name=saber + #textdomain wesnoth-units + description=_"saber" + type=blade + range=melee + damage=7 + number=3 + icon=attacks/saber-human.png + [/attack] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Sea_Captain.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Sea_Captain.cfg new file mode 100644 index 000000000000..e98c5cc5d002 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Sea_Captain.cfg @@ -0,0 +1,33 @@ +#textdomain wesnoth-sota +[unit_type] + id=Sea Captain + name= _ "Sea Captain" + race=human + image="units/sea-captain.png" + hitpoints=43 + movement_type=smallfoot + movement=6 + experience=100 + level=2 + alignment=neutral + advances_to=null + {AMLA_DEFAULT} + cost=26 + usage=fighter + description= _ "Aboard his vessel, the captain is the ultimate authority, and all his orders must be instantly obeyed. A passenger or crew member crosses the captain at their peril, for he is within his rights to summarily execute criminals or mutineers."+{SPECIAL_NOTES}+{SPECIAL_NOTES_LEADERSHIP} + die_sound={SOUND_LIST:HUMAN_DIE} + {DEFENSE_ANIM "units/sea-captain.png" "units/sea-captain.png" {SOUND_LIST:HUMAN_HIT} } + [abilities] + {ABILITY_LEADERSHIP} + [/abilities] + [attack] + name=saber + #textdomain wesnoth-units + description=_"saber" + type=blade + range=melee + damage=7 + number=4 + icon=attacks/sword-human-short.png + [/attack] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/units/Skele_Sacrifice.cfg b/data/campaigns/Secrets_of_the_Ancients/units/Skele_Sacrifice.cfg new file mode 100644 index 000000000000..ec207abca038 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/units/Skele_Sacrifice.cfg @@ -0,0 +1,31 @@ +#textdomain wesnoth-units +# This unit is only used to animate the "sacrificing" of Ras-Tabahn on the altar. +[unit_type] + id=Skeleton SotA + [base_unit] + id=Skeleton + [/base_unit] + hide_help=yes + do_not_list=yes + [extra_anim] + flag=sacrifice + [frame] + image="units/undead-skeletal/skeleton/skeleton-se-melee[1~4].png:120" + x=0~33 + y=0~0 + layer=100 + [/frame] + [frame] + image="units/skeleton-se-sacrifice[5~6].png:120" + x=33 + y=0 + layer=100 + [/frame] + [frame] + image="units/skeleton-se-sacrifice7.png:1000" + x=33 + y=0 + layer=100 + [/frame] + [/extra_anim] +[/unit_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter1.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter1.cfg new file mode 100644 index 000000000000..085da9edeabd --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter1.cfg @@ -0,0 +1,70 @@ +# wmllint: no translatables + +# trackplacer: map=data/core/images/maps/titlescreen.png + +#define JOURNEY_STAGE1 + {NEW_BATTLE 172 653} +#enddef + +#define JOURNEY_STAGE2 + {OLD_BATTLE 172 653} + {NEW_BATTLE 180 635} +#enddef + +#define JOURNEY_STAGE3 + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {NEW_BATTLE 197 638} +#enddef + +#define JOURNEY_STAGE4 + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {OLD_BATTLE 197 638} + {NEW_JOURNEY 209 620} + {NEW_BATTLE 227 638} +#enddef + +#define JOURNEY_STAGE5 + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {OLD_BATTLE 197 638} + {OLD_JOURNEY 209 620} + {OLD_BATTLE 227 638} + {NEW_BATTLE 217 668} +#enddef + +#define JOURNEY_STAGE6 + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {OLD_BATTLE 197 638} + {OLD_JOURNEY 209 620} + {OLD_BATTLE 227 638} + {OLD_BATTLE 217 668} + {NEW_JOURNEY 243 673} + {NEW_JOURNEY 272 665} + {NEW_JOURNEY 299 654} + {NEW_JOURNEY 326 641} + {NEW_JOURNEY 353 626} + {NEW_JOURNEY 377 608} + {NEW_JOURNEY 396 586} + {NEW_BATTLE 409 560} +#enddef + +#define JOURNEY_STAGE7 + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {OLD_BATTLE 197 638} + {OLD_JOURNEY 209 620} + {OLD_BATTLE 227 638} + {OLD_BATTLE 217 668} + {OLD_JOURNEY 243 673} + {OLD_JOURNEY 272 665} + {OLD_JOURNEY 299 654} + {OLD_JOURNEY 326 641} + {OLD_JOURNEY 353 626} + {OLD_JOURNEY 377 608} + {OLD_JOURNEY 396 586} + {OLD_BATTLE 409 560} + {NEW_REST 441 544} +#enddef diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter2.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter2.cfg new file mode 100644 index 000000000000..510d4859f004 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter2.cfg @@ -0,0 +1,100 @@ +# wmllint: no translatables + +# trackplacer: map=data/core/images/maps/titlescreen.png + +#define CHAPTER_1_JOURNEY + {OLD_BATTLE 172 653} + {OLD_BATTLE 180 635} + {OLD_BATTLE 197 638} + {OLD_JOURNEY 209 620} + {OLD_BATTLE 227 638} + {OLD_BATTLE 217 668} + {OLD_JOURNEY 243 673} + {OLD_JOURNEY 272 665} + {OLD_JOURNEY 299 654} + {OLD_JOURNEY 326 641} + {OLD_JOURNEY 353 626} + {OLD_JOURNEY 377 608} + {OLD_JOURNEY 396 586} + {OLD_BATTLE 409 560} + {OLD_REST 441 544} +#enddef + +#define JOURNEY_STAGE8 + {CHAPTER_1_JOURNEY} + {NEW_JOURNEY 461 529} + {NEW_JOURNEY 476 503} + {NEW_JOURNEY 475 472} + {NEW_JOURNEY 450 457} + {NEW_JOURNEY 425 445} + {NEW_BATTLE 400 436} +#enddef + +#define JOURNEY_STAGE9 + {CHAPTER_1_JOURNEY} + {OLD_REST 441 544} + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {NEW_BATTLE 438 434} +#enddef + +#define JOURNEY_STAGE10 + {CHAPTER_1_JOURNEY} + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {OLD_BATTLE 438 434} + {NEW_BATTLE 473 438} +#enddef + +#define JOURNEY_STAGE11 + {CHAPTER_1_JOURNEY} + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {OLD_BATTLE 438 434} + {OLD_BATTLE 473 438} + {NEW_BATTLE 424 523} +#enddef + +#define JOURNEY_STAGE12 + {CHAPTER_1_JOURNEY} + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {OLD_BATTLE 438 434} + {OLD_BATTLE 473 438} + {OLD_BATTLE 424 523} + {NEW_BATTLE 427 489} +#enddef + +#define JOURNEY_STAGE13 + {CHAPTER_1_JOURNEY} + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {OLD_BATTLE 438 434} + {OLD_BATTLE 473 438} + {OLD_BATTLE 424 523} + {OLD_BATTLE 427 489} + {OLD_BATTLE 424 523} + {OLD_BATTLE 427 489} + {NEW_JOURNEY 443 454} + {NEW_REST 472 436} +#enddef diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter3.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter3.cfg new file mode 100644 index 000000000000..065270e1e3d9 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/journey_chapter3.cfg @@ -0,0 +1,253 @@ +# wmllint: no translatables + +# trackplacer: map=data/core/images/maps/titlescreen.png + +#define CHAPTER_2_JOURNEY + {OLD_JOURNEY 461 529} + {OLD_JOURNEY 476 503} + {OLD_JOURNEY 475 472} + {OLD_JOURNEY 450 457} + {OLD_JOURNEY 425 445} + {OLD_BATTLE 400 436} + {OLD_BATTLE 438 434} + {OLD_BATTLE 473 438} + {OLD_BATTLE 424 523} + {OLD_BATTLE 427 489} + {OLD_BATTLE 424 523} + {OLD_BATTLE 427 489} + {OLD_JOURNEY 443 454} + {OLD_REST 472 436} +#enddef + +#define JOURNEY_STAGE14 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {NEW_JOURNEY 496 454} + {NEW_JOURNEY 516 431} + {NEW_JOURNEY 535 408} + {NEW_JOURNEY 562 393} + {NEW_JOURNEY 592 394} + {NEW_JOURNEY 609 419} + {NEW_BATTLE 628 400} +#enddef + +#define JOURNEY_STAGE15 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {NEW_JOURNEY 648 377} + {NEW_JOURNEY 671 357} + {NEW_JOURNEY 694 336} + {NEW_JOURNEY 711 309} + {NEW_JOURNEY 728 283} + {NEW_BATTLE 740 257} +#enddef + +#define JOURNEY_STAGE16 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {NEW_JOURNEY 741 227} + {NEW_JOURNEY 740 197} + {NEW_JOURNEY 741 167} + {NEW_BATTLE 746 139} +#enddef + +#define JOURNEY_STAGE17 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {NEW_JOURNEY 730 156} + {NEW_REST 706 153} +#enddef + +#define JOURNEY_STAGE18 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {NEW_JOURNEY 730 156} + {NEW_BATTLE 706 153} +#enddef + +#define JOURNEY_STAGE19 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {OLD_JOURNEY 730 156} + {OLD_BATTLE 706 153} + {NEW_JOURNEY 676 162} + {NEW_JOURNEY 651 175} + {NEW_BATTLE 629 194} +#enddef + +#define JOURNEY_STAGE20 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {OLD_JOURNEY 730 156} + {OLD_BATTLE 706 153} + {OLD_JOURNEY 676 162} + {OLD_JOURNEY 651 175} + {OLD_BATTLE 629 194} + {NEW_JOURNEY 642 217} + {NEW_JOURNEY 669 232} + {NEW_BATTLE 679 261} +#enddef + +#define JOURNEY_STAGE21 + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {OLD_JOURNEY 730 156} + {OLD_BATTLE 706 153} + {OLD_JOURNEY 676 162} + {OLD_JOURNEY 651 175} + {OLD_BATTLE 629 194} + {OLD_JOURNEY 642 217} + {OLD_JOURNEY 669 232} + {OLD_BATTLE 679 261} + {NEW_JOURNEY 658 276} + {NEW_JOURNEY 656 308} + {NEW_JOURNEY 644 340} + {NEW_JOURNEY 632 368} + {NEW_JOURNEY 628 399} + {NEW_JOURNEY 631 434} + {NEW_JOURNEY 648 460} + {NEW_BATTLE 642 490} +#enddef + +#define JOURNEY_COMPLETE + {CHAPTER_1_JOURNEY} + {CHAPTER_2_JOURNEY} + {OLD_JOURNEY 496 454} + {OLD_JOURNEY 516 431} + {OLD_JOURNEY 535 408} + {OLD_JOURNEY 562 393} + {OLD_JOURNEY 592 394} + {OLD_JOURNEY 609 419} + {OLD_BATTLE 628 400} + {OLD_JOURNEY 648 377} + {OLD_JOURNEY 671 357} + {OLD_JOURNEY 694 336} + {OLD_JOURNEY 711 309} + {OLD_JOURNEY 728 283} + {OLD_BATTLE 740 257} + {OLD_JOURNEY 741 227} + {OLD_JOURNEY 740 197} + {OLD_JOURNEY 741 167} + {OLD_BATTLE 746 139} + {OLD_JOURNEY 730 156} + {OLD_BATTLE 706 153} + {OLD_JOURNEY 676 162} + {OLD_JOURNEY 651 175} + {OLD_BATTLE 629 194} + {OLD_JOURNEY 642 217} + {OLD_JOURNEY 669 232} + {OLD_BATTLE 679 261} + {OLD_JOURNEY 658 276} + {OLD_JOURNEY 656 308} + {OLD_JOURNEY 644 340} + {OLD_JOURNEY 632 368} + {OLD_JOURNEY 628 399} + {OLD_JOURNEY 631 434} + {OLD_JOURNEY 648 460} + {OLD_BATTLE 642 490} +#enddef diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg new file mode 100644 index 000000000000..fa8bc3bcd9c7 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/sota-utils.cfg @@ -0,0 +1,1039 @@ +#textdomain wesnoth-sota + +#define SIDE_1_ARDONNA + side=1 + controller=human + team_name=good + user_team_name= _ "Ardonna" + # This type of Dark Adept cannot eventually advance to a lich. + type=Dark Adept SotA + id=Ardonna + profile=portraits/ardonna.png + gender=female + name= _ "Ardonna" + canrecruit=yes + [modifications] + {TRAIT_QUICK} + {TRAIT_RESILIENT} + [/modifications] + recruit=Vampire Bat SotA + {FLAG_VARIANT undead} +#enddef + +#define SIDE_1_RAS-TABAHN + side=1 + controller=human + team_name=good + user_team_name= _ "Ras-Tabahn" + # This type of Dark Sorcerer cannot advance to a lich. + type=Dark Sorcerer SotA + id=Ras-Tabahn + name= _ "Ras-Tabahn" + canrecruit=yes + [modifications] + {TRAIT_STRONG} + {TRAIT_LOYAL} + [/modifications] + recruit=Walking Corpse,Ghost,Skeleton,Skeleton Archer + {FLAG_VARIANT undead} +#enddef + +#define SIDE_1_BOTH + side=1 + controller=human + team_name=good + user_team_name= _ "Ardryn-Na" + # This type of Dark Adept cannot eventually advance to a lich. + type=Dark Adept SotA + id=Ardonna + profile=portraits/ardonna.png + gender=female + name= _ "Ardryn-Na" + canrecruit=yes + [modifications] + {TRAIT_QUICK} + {TRAIT_RESILIENT} + [/modifications] + {FLAG_VARIANT undead} + recruit=Walking Corpse,Ghost,Skeleton,Skeleton Archer +#enddef + +#define RECALL_LOYAL_UNITS + [recall] + id=Bone Captain + show=no + [/recall] + [recall] + id=Carcyn + show=no + [/recall] + [recall] + id=Shynal + show=no + [/recall] + [recall] + id=Vendraxis + show=no + [/recall] + [recall] + id=Ras-Tabahn + show=no + [/recall] +#enddef + +#define HOW_TO_LOSE_WITH_ARDONNA + [objective] + description= _ "Death of Ardonna" + condition=lose + [/objective] + {TURNS_RUN_OUT} +#enddef + +#define HOW_TO_LOSE_WITH_RAS-TABAHN + [objective] + description= _ "Death of Ras-Tabahn" + condition=lose + [/objective] + {TURNS_RUN_OUT} +#enddef + +#define HOW_TO_LOSE_WITH_BOTH + [objective] + description= _ "Death of Ardryn-Na" + condition=lose + [/objective] + [objective] + description= _ "Death of Ras-Tabahn" + condition=lose + [/objective] + {TURNS_RUN_OUT} +#enddef + +#define HERO_DEATHS + [event] + name=last_breath + [filter] + id=Ardonna + [/filter] + [message] + speaker=Ardonna + message= _ "No, no, NO, NO!" + [/message] + [/event] + + [event] + name=die + [filter] + id=Ardonna + [/filter] + [endlevel] + result=defeat + [/endlevel] + [/event] + + [event] + name=last_breath + [filter] + id=Ras-Tabahn + [/filter] + [message] + speaker=Ras-Tabahn + message= _ "Urgh." + [/message] + [/event] + + [event] + name=die + [filter] + id=Ras-Tabahn + race=human + [/filter] + [message] + speaker=Ardonna + message= _ "But I don't know how to bring you back yet!" + [/message] + [endlevel] + result=defeat + [/endlevel] + [/event] + + [event] + name=die + [filter] + id=Ras-Tabahn + race=undead + [/filter] + [endlevel] + result=defeat + [/endlevel] + [/event] + + [event] + name=die + [filter] + id=Shynal + race=human + [/filter] + [if] + [have_unit] + id=Carcyn + [/have_unit] + [then] + [message] + speaker=Carcyn + message= _ "Shynal!" + [/message] + [message] + speaker=Carcyn + message= _ "Bring her back. Please!" + [/message] + [message] + speaker=Ardonna + message= _ "I'm not sure that's such a good..." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "If you insist." + [/message] + {ADVANCE_UNIT (id=Shynal) (Walking Corpse Shynal)} + [modify_unit] + [filter] + type=Walking Corpse Shynal + [/filter] + id=Corpse Shynal + [/modify_unit] + [message] + speaker=Corpse Shynal + message= _ "Car. Cyn." + [/message] + [message] + speaker=Ras-Tabahn + message= _ "She will not know you for long, so make the most of it." + [/message] + + [event] + name=die + [filter] + id=Corpse Shynal + [/filter] + [message] + speaker=Carcyn + message= _ "Perhaps that was for the best." + [/message] + [/event] + [/then] + [/if] + [/event] + + [event] + name=die + [filter] + id=Shynal + type=Lich SotA, Ancient Lich SotA, Lich, Ancient Lich + [/filter] + [if] + [have_unit] + id=Carcyn + [/have_unit] + [then] + [message] + speaker=Carcyn + message= _ "Shynal!" + [/message] + [message] + speaker=Carcyn + message= _ "Bring her back. Please!" + [/message] + [message] + speaker=Ras-Tabahn + message= _ "It's not possible. She was already back from the dead. She has been utterly destroyed this time." + [/message] + [/then] + [/if] + [/event] + + [event] + name=last_breath + [filter] + id=Carcyn + [/filter] + [message] + speaker=Shynal + message= _ "Oh, my sweet Carcyn!" + [/message] + [/event] + [event] + name=die + [filter] + id=Carcyn + [/filter] + [if] + [variable] + name=side_number + equals=1 + [/variable] + [then] + [message] + speaker=Shynal + message= _ "You were always so reckless." + [/message] + [/then] + [else] + [message] + speaker=Shynal + message= _ "I will miss you." + [/message] + [/else] + [/if] + [/event] +#enddef + +# Ardonna is a normal unit, but uses mostly custom portraits. These events cause the +# portrait to change as necessary. The profile event is called automatically by the +# post_advance event or can be called manually. This macro is included in every scenario. +#define MANAGE_PROFILE + [event] + name=post_advance + first_time_only=no + [filter] + id=Ardonna + [/filter] + + [fire_event] + name=ardonna_profile + [/fire_event] + [/event] + + [event] + name=ardonna_profile + first_time_only=no + + [store_unit] + [filter] + id=Ardonna + [/filter] + variable=Ardonna_stored + [/store_unit] + [switch] + variable=Ardonna_stored.type + [case] + value=Necromancer SotA + [set_variable] + name=Ardonna_stored.profile + value="portraits/humans/necromancer+female.png" + [/set_variable] + [/case] + [case] + value=Lich SotA, Ancient Lich SotA + [set_variable] + name=Ardonna_stored.profile + value="portraits/ardonna-lich.png" + [/set_variable] + [/case] + # Other values should not change it from "profile=portraits/ardonna.png" + [/switch] + [unstore_unit] + variable=Ardonna_stored + [/unstore_unit] + [clear_variable] + name=Ardonna_stored + [/clear_variable] + [/event] +#enddef + +# If one of the two kids is advanced to something other than a Dark Adept, they complain. +# The player is given the choice to reconsider. They say something about being very +# powerful which may clue the player in to the fact that they can become Ancient Liches, +# and that it would be a good idea to go that way. Maybe. +#define KIDS_ADVANCE + [event] + name=post_advance + first_time_only=no + [filter] + id=Carcyn, Shynal + [/filter] + [if] + [have_unit] + id=$unit.id + type=Footpad, Thug + [/have_unit] + [then] + [fire_event] + name=argue_about_advancement + [primary_unit] + id=$unit.id + [/primary_unit] + [/fire_event] + [/then] + [/if] + + [if] + # Shynal uses a couple custom portraits. We manage them here. + [variable] + name=unit.id + equals=Shynal + [/variable] + [then] + [store_unit] + # Her type may have just changed, so we will store a fresh + # copy of the unit. + [filter] + id=$unit.id + [/filter] + variable=Shynal_stored + [/store_unit] + [switch] + variable=Shynal_stored.type + [case] + value=Dark Adept SotA, Dark Adept, Dark Sorcerer SotA, Dark Sorcerer + [set_variable] + name=Shynal_stored.profile + value="portraits/shynal-adept.png" + [/set_variable] + [/case] + [case] + value=Necromancer SotA, Necromancer + [set_variable] + name=Shynal_stored.profile + value="portraits/humans/necromancer+female.png" + [/set_variable] + [/case] + [case] + value=Lich + [set_variable] + name=Shynal_stored.profile + value="portraits/lich.png" + [/set_variable] + [/case] + [case] + value=Ancient Lich + [set_variable] + name=Shynal_stored.profile + value="portraits/brown-lich.png" + [/set_variable] + [/case] + # Other values should not change it from its original + # outlaw-themed value. + [/switch] + [unstore_unit] + variable=Shynal_stored + [/unstore_unit] + [clear_variable] + name=Shynal_stored + [/clear_variable] + [/then] + [/if] + [/event] + + # This event is split from above for readability. + [event] + name=argue_about_advancement + first_time_only=no + [if] + # The dialog is different if one of the kids is already a Dark something. + [have_unit] + type=Dark Adept SotA, Dark Sorcerer SotA, Necromancer SotA, Dark Adept, Dark Sorcerer, Necromancer + [and] + id=Shynal + [or] + id=Carcyn + [/or] + [/and] + [/have_unit] + [then] + [if] + [variable] + name=unit.id + equals=Carcyn + [/variable] + [then] + [message] + speaker=$unit.id + message= _ "Aww. I wanted to be a mage like Shynal." + [/message] + [/then] + [else] + [message] + speaker=$unit.id + message= _ "Aww. I wanted to be a mage like Carcyn." + [/message] + [/else] + [/if] + [message] + speaker=Ras-Tabahn + [option] + message= _ "Do not make me regret liberating you from jail. My decision is final." + [/option] + [option] + message= _ "I have reconsidered. Perhaps you will be very powerful one day." + [command] + {ADVANCE_UNIT (id=$unit.id) (Dark Adept SotA)} + [modify_unit] + [filter] + id=$unit.id + [/filter] + experience=$unit.experience + [/modify_unit] + [message] + speaker=$unit.id + message= _ "Thanks!" + [/message] + [/command] + [/option] + [/message] + [/then] + [else] + [if] + [variable] + name=refused_to_make_DA + not_equals=yes + [/variable] + [then] + [message] + speaker=$unit.id + message= _ "Hey, I wanted to be a wizard like you and live forever when you figure it out! I know I could be super-powerful in the end." + [/message] + + [message] + speaker=Ras-Tabahn + [option] + message= _ "Hold your tongue. You will do as I command." + [command] + [set_variable] + name=refused_to_make_DA + value=yes + [/set_variable] + [/command] + [/option] + [option] + message= _ "Very well. Having more adepts might be a good idea after all." + [command] + {ADVANCE_UNIT (id=$unit.id) (Dark Adept SotA)} + [modify_unit] + [filter] + id=$unit.id + [/filter] + experience=$unit.experience + [/modify_unit] + [/command] + [/option] + [/message] + [/then] + [/if] + [/else] + [/if] + [/event] +#enddef + +#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 + {JOURNEY_STAGE{STAGE}} + [/part] +#enddef + +#define FREEZE_UNIT ID + [object] + silent=yes + duration=scenario # So this object will not be in the save files forever. + [filter] + id={ID} + [/filter] + [effect] + apply_to=movement_costs + replace=no # So this amount is added to the current number. + [movement_costs] + shallow_water=100 + reef=100 + swamp_water=100 + flat=100 + sand=100 + forest=100 + hills=100 + mountains=100 + village=100 + castle=100 + cave=100 + frozen=100 + unwalkable=100 + fungus=100 + [/movement_costs] + [/effect] + [/object] +#enddef + +#define THAW_UNIT ID + [store_unit] + [filter] + id={ID} + # This prevents a unit from being thawed that was not frozen first: + movement_cost=100-120 + [/filter] + variable=stored_unit + [/store_unit] + [object] + silent=yes + duration=scenario + [filter] + id={ID} + [/filter] + [effect] + apply_to=movement_costs + replace=no # This amount is added to the current number. + [movement_costs] + shallow_water=-100 + reef=-100 + swamp_water=-100 + flat=-100 + sand=-100 + forest=-100 + hills=-100 + mountains=-100 + village=-100 + castle=-100 + cave=-100 + frozen=-100 + unwalkable=-100 + fungus=-100 + [/movement_costs] + [/effect] + [/object] + [clear_variable] + name=stored_unit + [/clear_variable] +#enddef + +# Finds the nearest hex to (X,Y) within MAX_DISTANCE that matches the FILTER, and stores +# the location in VARIABLE with x, y, and terrain. If there is more than one location +# found, VARIABLE will be an array. +#define NEAREST_HEX X Y MAX_DISTANCE FILTER VAR_NAME + [set_variable] + name=distance + value=0 + [/set_variable] + [set_variable] + name=location_found + value=no + [/set_variable] + [clear_variable] + name={VAR_NAME} + [/clear_variable] + + # Store any matching locations within a radius of "distance". If nothing got stored, + # add one to "distance" and try again. Do this until a location is found, or + # "distance" goes over the MAX_DISTANCE: + [while] + [variable] + name={VAR_NAME}.length + less_than=1 + [/variable] + [and] + [variable] + name=distance + less_than_equal_to={MAX_DISTANCE} + [/variable] + [/and] + + [do] + [store_locations] + {FILTER} + [and] + x={X} + y={Y} + radius=$distance + [/and] + variable={VAR_NAME} + [/store_locations] + + [if] + [variable] + name={VAR_NAME}.length + greater_than=0 + [/variable] + [then] + [set_variable] + name=location_found + value=yes + [/set_variable] + [/then] + [/if] + + [set_variable] + name=distance + add=1 + [/set_variable] + [/do] + [/while] + + [clear_variable] + name=location_found, distance + [/clear_variable] +#enddef + +# Conditional clause that means both Carcyn and Shynal are still alive. +#define BOTH_KIDS_LIVE + [and] + [have_unit] + id=Shynal + [/have_unit] + [have_unit] + id=Carcyn + [/have_unit] + [/and] +#enddef + +# Conditional clause that means both Carcyn and Shynal are dead. +#define NO_KIDS_LIVE + [and] + [not] + [have_unit] + id=Shynal + [/have_unit] + [/not] + [not] + [have_unit] + id=Carcyn + [/have_unit] + [/not] + [/and] +#enddef + +# Conditional clause that means only Carcyn *or* Shynal is still alive. +#define ONE_KID_LIVES + [and] + [have_unit] + id=Shynal + [/have_unit] + [not] + [have_unit] + id=Carcyn + [/have_unit] + [/not] + [/and] + [or] + [and] + [have_unit] + id=Carcyn + [/have_unit] + [not] + [have_unit] + id=Shynal + [/have_unit] + [/not] + [/and] + [/or] +#enddef + +# Returns the nearest unoccupied castle hex to the side's starting location. If there +# isn't one, the starting location is returned. +#define FIND_CASTLE_HEX SIDE VARIABLE + [store_starting_location] + side={SIDE} + variable=side{SIDE}_keep_location + [/store_starting_location] + {NEAREST_HEX ($side{SIDE}_keep_location.x) ($side{SIDE}_keep_location.y) 6 ( + terrain=C* + [not] + [filter] + [/filter] + [/not] + ) {VARIABLE}} + [if] + [variable] + name={VARIABLE}.length + less_than=1 + [/variable] + [then] + [set_variables] + name={VARIABLE} + to_variable=side{SIDE}_keep_location + [/set_variables] + [/then] + [/if] + [clear_variable] + name=side{SIDE}_keep_location + [/clear_variable] +#enddef + +# This event turns a necromancer into a lich. It can be activated by an event or from +# a right-click menu option. It needs $unit to be set or it won't do anything. +#define TURN_INTO_A_LICH + [event] + name=lichify + first_time_only=no + + # This is just to get a more descriptive name for the "unit" variable. + [set_variables] + name=stored_necromancer + mode=replace + to_variable=unit + [/set_variables] + + # The necromancer may have AMLAd and had its experience reset to 0. Now, as a + # lich, there is a fourth level available for the unit, and all that experience + # should be applied towards the level-up instead of simply being lost. We will + # "unwind" each AMLA and calculate how much it cost, so we can give back those + # experience points. + [set_variable] + name=num_amlas + # This gives us the number of AMLAs that the unit has had: + value=$stored_necromancer.modifications.advancement.length + [/set_variable] + [set_variable] + # The experience that will be used for the new lich will be at least + # the necromancer's current actual experience. + name=experience_gained_after_max_level + value=$stored_necromancer.experience + [/set_variable] + [set_variable] + # Each AMLA took 20% more experience, so we will need to reduce this + # value as we unwind them. The variable starts out storing the amount + # needed for the *next* AMLA, so we will need to reduce it one step as + # the first operation. + name=experience_for_one_amla + value=$stored_necromancer.max_experience + [/set_variable] + + [while] + [variable] + name=num_amlas + greater_than=0 + [/variable] + [do] + [set_variable] + # Each AMLA increased the experience needed by 20%, which + # is the same as multiplying by 1.2. We reverse that here. + name=experience_for_one_amla + divide=1.2 + [/set_variable] + [set_variable] + # Round it off in case it's a float: + name=experience_for_one_amla + round=0 + [/set_variable] + [set_variable] + # Add the experience that was needed for the previous AMLA + # to the amount that will be given to the lich: + name=experience_gained_after_max_level + add=$experience_for_one_amla + [/set_variable] + [set_variable] + name=num_amlas + sub=1 + [/set_variable] + [/do] + [/while] + + # It's nice if Ardonna looks different as an ancient lich, and since there is + # another sprite available, we will use it. She needs a different type though: + [if] + [variable] + name=stored_necromancer.id + equals=Ardonna + [/variable] + [then] + [set_variable] + name=lich_type + value=Lich SotA + [/set_variable] + [/then] + [else] + [set_variable] + name=lich_type + value=Lich + [/set_variable] + [/else] + [/if] + + # We are going to create a new unit instead of transforming the old one. + # Using the old unit would leave its AMLAs in effect, changing the hitpoints + # and experience needed to level up. + [unit] + side=1 + type=$lich_type + x=$stored_necromancer.x + y=$stored_necromancer.y + id=$stored_necromancer.id + name=$stored_necromancer.name + facing=$stored_necromancer.facing + moves=$stored_necromancer.moves + overlays=$stored_necromancer.overlays + hitpoints=$stored_necromancer.hitpoints + canrecruit=$stored_necromancer.canrecruit + attacks_left=$stored_necromancer.attacks_left + experience=$experience_gained_after_max_level + + # Copy the original traits into the new unit: + [modifications] + [insert_tag] + name=trait + variable=stored_necromancer.modifications.trait[0] + [/insert_tag] + [insert_tag] + name=trait + variable=stored_necromancer.modifications.trait[1] + [/insert_tag] + [/modifications] + + to_variable=new_lich # Don't create the unit yet. Just store it. + [/unit] + + # Hitpoints are transferred to the new unit so that turning into a lich doesn't + # heal it. However, this could result in the lich having more HP than its + # maximum. If that is the case, we will reset it to the maximum. + [if] + [variable] + name=new_lich.hitpoints + greater_than=$new_lich.max_hitpoints + [/variable] + [then] + [set_variable] + name=new_lich.hitpoints + value=$new_lich.max_hitpoints + [/set_variable] + [/then] + [/if] + + # The leaders are changed in a scripted event at the end of a scenario, so + # they need to be handled differently than normal units: + [if] + [variable] + name=stored_necromancer.canrecruit + boolean_equals=no + [/variable] + [then] + [unstore_unit] + # The unit will be automatically advanced to Ancient Lich at + # this point if its experience is sufficient. Theoretically, + # it could even AMLA. + variable=new_lich + text= _ "Lich" # This text goes by quickly, so it must be short. + red,green,blue=220,0,220 # dark-magic purple + animate=yes + [/unstore_unit] + [/then] + [else] + # It's unlikely, but one of the leaders could be at a lower + # level, and therefore have fewer hitpoints than the same unit + # as a lich. We will set the hitpoints to the maximum in case + # that has happened. + [set_variable] + name=new_lich.hitpoints + value=$new_lich.max_hitpoints + [/set_variable] + + # The leaders are changed to liches in between scenarios, so if + # we are working with one of them, the new unit needs to get + # sent to the recall list. + [set_variable] + name=new_lich.x + value=recall + [/set_variable] + [set_variable] + name=new_lich.y + value=recall + [/set_variable] + [unstore_unit] + variable=new_lich + [/unstore_unit] + [/else] + [/if] + + [clear_variable] + name=stored_necromancer, new_lich, lich_type, num_amlas, experience_for_one_amla, experience_gained_after_max_level + [/clear_variable] + [/event] +#enddef + +# OFFSET changes depending on which map the ship is on. It only affects 'y' because the +# x-position of the ship is the same on both maps. +#define HIDE_SAILS_MENU_ITEM OFFSET + [set_menu_item] + id=hide-sails + description= _ "Hide Sails and Rigging" + + [show_if] + [variable] + name=sails_hidden + boolean_equals=no + [/variable] + [/show_if] + + [command] + [terrain] + x=5 + y="$(11+{OFFSET})" + terrain='' + layer=overlay + [/terrain] + [terrain] + x=14 + y="$(9+{OFFSET})" + terrain='' + layer=overlay + [/terrain] + [terrain] + x=7 + y="$(9+{OFFSET})" + terrain=^Zrlp + layer=overlay + [/terrain] + [set_variable] + name=sails_hidden + value=yes + [/set_variable] + [/command] + [/set_menu_item] +#enddef + +#define SHOW_SAILS_MENU_ITEM OFFSET + [set_menu_item] + id=show-sails + description= _ "Show Sails and Rigging" + + [show_if] + [variable] + name=sails_hidden + boolean_equals=yes + [/variable] + [/show_if] + + [command] + [terrain] + x=5 + y="$(11+{OFFSET})" + terrain=^Zrig + layer=overlay + [/terrain] + [terrain] + x=14 + y="$(9+{OFFSET})" + terrain=^Zpie + layer=overlay + [/terrain] + [terrain] + x=7 + y="$(9+{OFFSET})" + terrain='' + layer=overlay + [/terrain] + [set_variable] + name=sails_hidden + value=no + [/set_variable] + [/command] + [/set_menu_item] +#enddef diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/terrain.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/terrain.cfg new file mode 100644 index 000000000000..8590502c1845 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/terrain.cfg @@ -0,0 +1,348 @@ +#textdomain wesnoth-lib +# All these terrains use either a 'y' or a 'z' somewhere +# in the terrain string to mark them as UMC terrains. +[terrain_type] + id=farmer-fence # AI-animal-proof fences from first scenario + editor_name= _ "Fence" + symbol_image=embellishments/fence-se-nw-01 + string=^Fync + aliasof=^Qov + editor_group=sota +[/terrain_type] + +#textdomain wesnoth-sota +[terrain_type] + id=grave + name= _ "Grave" + editor_name= _ "Grave Overlay" + symbol_image=grave-tile + string=^Gryv + aliasof=_bas + editor_group=sota +[/terrain_type] + +#ifdef EDITOR +[terrain_type] + id=not_here + # Marks an area outside the graveyard fence where a unit should not be spawed. + editor_name= _ "Not Here Overlay" + symbol_image=not-here-tile-editor + string=^Nhyr + aliasof=_bas + editor_group=sota +[/terrain_type] +#else +[terrain_type] + id=not_here + name="" + symbol_image=not-here-tile + string=^Nhyr + aliasof=_bas + editor_group=sota +[/terrain_type] +#endif + +[terrain_type] + id=crystal + name= _ "Crystal Caves" + symbol_image=crystal-caves/glint-tile + string=^Crys + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=passageway + name="" + editor_name= _ "Passageway" + symbol_image=cave/wall-rough-tile + string=^Pysg + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=gate_open + name= _ "Gate" + symbol_image=gate-tile + string=^Gyto + aliasof=_bas + editor_group=sota +[/terrain_type] + +#ifndef EDITOR +[terrain_type] + id=gate_closed + name= _ "Gate" + symbol_image=gate-tile + string=^Gytc + aliasof=^Xos + editor_group=sota +[/terrain_type] +#endif + +[terrain_type] + id=web + name= _ "Spiderweb" + symbol_image=spiderweb/web-tile + string=^Wyb + aliasof=^Qov + editor_group=sota +[/terrain_type] + +[terrain_type] + id=graveyard-fence-top + editor_name= _ "Fence-Top" + symbol_image=fence-tile + string=^Fnzt + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=graveyard-fence-bottom + name= _ "Fence" + editor_name= _ "Fence-Bottom" + symbol_image=fence-tile + string=^Fnzb + aliasof=^Qov + editor_group=sota +[/terrain_type] + +# The rest are for the ship in 04_Becalmed and 05_Blackwater. All ship terrains start +# with Z. They need to be overlayed on water so water will show around them. The +# various deck tiles need to be on shallow water, or "submerge" will be active for +# skeletal units, and they will become invisible. There is more information in the +# readme file in the terrain images folder. The tiles used in the editor are different +# than the ones used in the game. Most of the game tiles are transparent so they don't +# appear on the minimap. But, transparent tiles in the editor are very inconvenient. + +#ifdef EDITOR + +[terrain_type] + id=ship--forecastle + name= _ "Ship Forecastle" + symbol_image=ship/editor_tiles/forecastle-deck + string=^Zfoc + recruit_from=yes + recruit_onto=yes + aliasof=Iwr + unit_height_adjust=14 + submerge=0 + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--main-deck + name= _ "Ship Main Deck" + symbol_image=ship/editor_tiles/main-deck + string=^Zdek + aliasof=Iwr + submerge=0 + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--poop-deck + name= _ "Ship Poop Deck" + symbol_image=ship/editor_tiles/poop-deck + string=^Zpoo + recruit_from=yes + recruit_onto=yes + aliasof=Iwr + unit_height_adjust=14 + submerge=0 + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--hull + name= _ "Ship Hull" + symbol_image=ship/editor_tiles/hull + string=^Zhul + aliasof=^Qov + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--rigging-and-sails + name= _ "Ship Rigging and Sails" + symbol_image=ship/editor_tiles/rigging-and-sails + string=^Zrig + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--railing + name= _ "Ship Railing" + symbol_image=ship/editor_tiles/railing + string=^Zral + aliasof=^Qov + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--bits-and-pieces + name= _ "Ship Pieces" + symbol_image=ship/editor_tiles/pieces + string=^Zpie + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--lower-deck + name= _ "Ship Lower Deck" + symbol_image=ship/editor_tiles/lower-deck + string=Zld + aliasof=Iwr + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--lower-deck-edge + name= _ "Ship Lower Deck Edge" + symbol_image=ship/editor_tiles/lower-deck-edge + string=Zlde + aliasof=Xv + editor_group=sota +[/terrain_type] + +#else + +[terrain_type] + id=ship--forecastle + name= _ "Ship" + symbol_image=ship/tile--deck + string=^Zfoc + recruit_from=yes + recruit_onto=yes + aliasof=Iwr + unit_height_adjust=14 + submerge=0 # Necessary because the tiles will be overlays on water. + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--main-deck + name= _ "Ship" + symbol_image=ship/tile--deck + string=^Zdek + aliasof=Iwr + submerge=0 # Necessary because the tiles will be overlays on water. + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--poop-deck + name= _ "Ship" + symbol_image=ship/tile--deck + string=^Zpoo + recruit_from=yes + recruit_onto=yes + aliasof=Iwr + unit_height_adjust=14 + submerge=0 # Necessary because the tiles will be overlays on water. + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--hull + name= _ "Ship Hull" + symbol_image=ship/tile--transparent + string=^Zhul + aliasof=^Qov + editor_group=sota +[/terrain_type] + +[terrain_type] + # This is the big one that includes all the masts and yards. + id=ship--rigging-and-sails + symbol_image=ship/tile--transparent + string=^Zrig + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--railing + name= _ "Ship Hull" + symbol_image=ship/tile--transparent + string=^Zral + aliasof=^Qov + editor_group=sota +[/terrain_type] + +[terrain_type] + # Replaces two tiles that are part of the rigging image. Only used when the rigging + # image is turned off with the right-click menu. + id=ship--railing-piece + symbol_image=ship/tile--transparent + string=^Zrlp + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + # Used to set some pieces of the ship (like the bottom tiles of the masts) under + # units rather than over. If they were merged into the deck images, they would be in + # the right layer, but couldn't be removed, which the right-click menu is supposed to + # allow. + id=ship--bits-and-pieces + symbol_image=ship/tile--transparent + string=^Zpie + aliasof=_bas + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--lower-deck + name= _ "Ship" + symbol_image=ship/tile--deck + string=Zld + aliasof=Iwr + editor_group=sota +[/terrain_type] + +[terrain_type] + id=ship--lower-deck-edge + name="" + symbol_image=ship/tile--transparent + string=Zlde + aliasof=Xv + editor_group=sota +[/terrain_type] + +#endif + +# These are used around the lower deck of the ship. +[terrain_type] + # Void tile with no added transitions. (But a small automatic transition with water.) + id=full-void + editor_name= _ "Full Void" + symbol_image=void-full + string=Vyd + aliasof=Xv + editor_group=sota +[/terrain_type] + +[terrain_type] + # Void tile with no transitions at all. + id=full-void-overlay + editor_name= _ "Void Overlay" + symbol_image=void-full + string=^Vydo + aliasof=Xv + editor_group=sota +[/terrain_type] + +[terrain_type] + # Lower half of the tile is void, and top is transparent. + id=half-void-overlay + editor_name= _ "Half Void" + symbol_image=void-half + string=^Vydh + aliasof=Xv + editor_group=sota +[/terrain_type] diff --git a/data/campaigns/Secrets_of_the_Ancients/utils/terrain_graphics.cfg b/data/campaigns/Secrets_of_the_Ancients/utils/terrain_graphics.cfg new file mode 100644 index 000000000000..438e0c1b2c97 --- /dev/null +++ b/data/campaigns/Secrets_of_the_Ancients/utils/terrain_graphics.cfg @@ -0,0 +1,730 @@ +#ifdef EDITOR +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Gryv + [image] + name=grave-overlay-editor.png~O(0.5) + layer=1000 + [/image] + [/tile] +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Nhyr + [image] + name=not-here-tile-editor.png~O(0.5) + layer=1000 + [/image] + [/tile] +[/terrain_graphics] +#endif +#---------------------------------------------------------------- + +# Farmers' Fences from first scenario. This is copied directly from the BfW core +# terrain_graphics file. If the macro name ever changes, this will have to as well. +# (The custom terrain has different behavior from the normal one though it looks +# the same.) + +{NEW:FENCE *^Fync embellishments/fence} +#---------------------------------------------------------------- + +# The sparkle for the Crystal Caves in 20_North_Knalga. Any number of these are picked +# at random where a glint overlay is used. +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Crys + [image] + layer=0 + name="crystal-caves/glint-a[1~4].png:200,crystal-caves/glint-a[3~1].png:200,crystal-caves/glint-blank.png:1000,crystal-caves/glint-b[1~4].png:200,crystal-caves/glint-b[3~1].png:200,crystal-caves/glint-blank.png:3000" + [/image] + [/tile] + probability=20 +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Crys + [image] + layer=0 + name="crystal-caves/glint-c[1~4].png:200,crystal-caves/glint-c[3~1].png:200,crystal-caves/glint-blank.png:2000,crystal-caves/glint-d[1~4].png:200,crystal-caves/glint-d[3~1].png:200,crystal-caves/glint-blank.png:2500" + [/image] + [/tile] + probability=25 +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Crys + [image] + layer=0 + name="crystal-caves/glint-f[1~4].png:200,crystal-caves/glint-f[3~1].png:200,crystal-caves/glint-blank.png:4000" + [/image] + [/tile] + probability=33 +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Crys + [image] + layer=0 + name="crystal-caves/glint-g[1~4].png:200,crystal-caves/glint-g[3~1].png:200,crystal-caves/glint-blank.png:3500" + [/image] + [/tile] + probability=50 +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Crys + [image] + layer=0 + name="crystal-caves/glint-e[1~4].png:200,crystal-caves/glint-e[3~1].png:200,crystal-caves/glint-blank.png:1500,crystal-caves/glint-b[1~4].png:200,crystal-caves/glint-b[3~1].png:200,crystal-caves/glint-blank.png:4500" + [/image] + [/tile] + probability=100 +[/terrain_graphics] +#---------------------------------------------------------------- + +# The spiderwebs for 18_Abandoned_Outpost. The rules are fairly specific. Webs will not +# be drawn in quite a few locations because none of the rules will match. If you want to +# use them, be careful. Or, add more artwork and rules. +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web1.png + layer=10 + [/image] + [image] + name=spiderweb/web1-bottom.png + layer=-10 + [/image] + map=" +., . +, 2 +2, 2 +, 1 +2, 3 +, 3" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web2.png + layer=10 + [/image] + [image] + name=spiderweb/web2-bottom.png + layer=-10 + [/image] + map=" +., . +, 2 +2, 2 +, 1 +3, 2 +, 3" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web3.png + layer=-10 + [/image] + map=" +3, 3 +, 1 +2, 2 +, 2" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web4.png + layer=10 + [/image] + map=" +., . +, * +2, 3 +, 1 +2, 3 +, 2" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web5.png + layer=10 + [/image] + map=" +., . +, * +3, 2 +, 1 +3, 2 +, 2" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web6.png + layer=10 + [/image] + [image] + name=spiderweb/web6-bottom.png + layer=-10 + [/image] + map=" +., 2, . +, 2, 2 +2, 1, 3 +, 3, 3 +., 3, ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Wyb + [/tile] + [tile] + pos=2 + type=X* + [/tile] + [tile] + pos=3 + type=!,X* + [/tile] + [image] + name=spiderweb/web7.png + layer=10 + [/image] + [image] + name=spiderweb/web7-bottom.png + layer=-10 + [/image] + map=" +., . +, 2, . +2, 2 +, 1, 2 +*, 3 +, 3, ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=Q*^Wyb + [/tile] + [tile] + pos=2 + type=!,Q*^* + [/tile] + [image] + name=spiderweb/web8.png + position=vertical + [/image] + map=" +2, 2 +, 1 +2, 1 +, 2" +[/terrain_graphics] +#---------------------------------------------------------------- + +# The next three tiles are for 20_North Knalga. There is gate which can be open or +# closed, and a narrow passageway that fits between cave walls. +[terrain_graphics] + [tile] + pos=1 + type=*^Gytc + [/tile] + [image] + name=gate-closed.png + layer=100 + [/image] + map=" +., * +, *, * +*, * +, 1, * +*, * +, *, ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Gyto + [/tile] + [image] + name=gate-open.png + layer=100 + [/image] + map=" +., * +, *, * +., * +, 1, * +., * +, *, ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Pysg + [/tile] + [image] + name=passageway-north.png + position=vertical + base=36,90 + [/image] + [image] + name=passageway-south.png + position=vertical + base=90,180 + [/image] + map=" +1 +, * +* +, 1" +[/terrain_graphics] +#---------------------------------------------------------------- + +# These three void tiles are used to create voids with no transitions. They are used on +# 04_Becalmed in the bottom half of the map / lower deck of the ship. +[terrain_graphics] + [tile] + x,y=0,0 + type=Vyd + [image] + name=void-full.png + layer=-110 + [/image] + [/tile] +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Vydo + [image] + name=void-full.png + layer=-110 + [/image] + [/tile] +[/terrain_graphics] + +[terrain_graphics] + [tile] + x,y=0,0 + type=*^Vydh + [image] + name=void-half.png + [/image] + [/tile] +[/terrain_graphics] +#---------------------------------------------------------------- + +# These two rules draw the fence in 02_Dark_Business. The fence sits logically in just +# two tiles. It can't be drawn at other sizes without a lot of work, but this was easier +# code, and made the gate trivial to add. +[terrain_graphics] + [tile] + pos=1 + type=*^Fnzt + [/tile] + [image] + # The fence tops project into the hexes above them on + # the map, and should sit in front of any units there. + name=fence-top.png + layer=100 + [/image] + map=" +., ., ., ., ., ., *, ., ., ., ., ., . +, ., ., ., ., ., *, *, ., ., ., ., ., . +., ., ., ., ., *, ., *, ., ., ., ., . +, ., ., ., ., *, ., ., *, ., ., ., ., . +., ., ., ., *, ., ., ., *, ., ., ., . +, ., ., ., *, ., ., ., ., *, ., ., ., . +., ., ., *, ., ., ., ., ., *, ., ., . +, ., ., *, ., ., ., ., ., ., *, ., ., . +., ., *, ., ., ., ., ., ., ., *, ., . +, ., *, ., ., ., ., ., ., ., ., *, ., . +., *, ., ., ., ., ., ., ., ., ., *, . +, *, ., ., ., ., ., ., ., ., ., ., *, . +*, ., ., ., ., ., ., ., ., ., ., ., * +, *, ., ., ., ., ., ., ., ., ., ., ., * +., *, ., ., ., ., ., ., ., ., ., ., * +, ., *, ., ., ., ., ., ., ., ., ., *, . +., ., *, ., ., ., ., ., ., ., ., *, . +, ., ., *, ., ., ., ., ., ., ., *, ., . +., ., ., *, ., ., ., ., ., ., *, ., . +, ., ., ., *, ., ., ., ., ., *, ., ., . +., ., ., ., *, ., ., ., ., *, ., ., . +, ., ., ., ., *, ., ., ., *, ., ., ., . +., ., ., ., ., *, ., ., *, ., ., ., . +, ., ., ., ., ., *, ., *, ., ., ., ., . +., ., ., ., ., ., *, *, ., ., ., ., . +, ., ., ., ., ., ., 1, ., ., ., ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Fnzb + [/tile] + [image] + # The fence is unwalkable and mostly under units (bats). + # This needs to be defined separately from the top because + # the SotA bats don't automatically sit in front of any terrain. + name=fence-bottom.png + position=vertical + [/image] + map=" +., ., ., ., ., ., ., ., ., ., ., ., . +, ., ., ., ., ., ., ., ., ., ., ., ., . +., ., ., ., ., ., *, ., ., ., ., ., . +, ., ., ., ., ., *, *, ., ., ., ., ., . +., ., ., ., ., *, ., *, ., ., ., ., . +, ., ., ., ., *, ., ., *, ., ., ., ., . +., ., ., ., *, ., ., ., *, ., ., ., . +, ., ., ., *, ., ., ., ., *, ., ., ., . +., ., ., *, ., ., ., ., ., *, ., ., . +, ., ., *, ., ., ., ., ., ., *, ., ., . +., ., *, ., ., ., ., ., ., ., *, ., . +, ., *, ., ., ., ., ., ., ., ., *, ., . +., *, ., ., ., ., ., ., ., ., ., *, . +, *, ., ., ., ., ., ., ., ., ., ., *, . +*, ., ., ., ., ., ., ., ., ., ., ., * +, *, ., ., ., ., ., ., ., ., ., ., ., * +., *, ., ., ., ., ., ., ., ., ., ., * +, ., *, ., ., ., ., ., ., ., ., ., *, . +., ., *, ., ., ., ., ., ., ., ., *, . +, ., ., *, ., ., ., ., ., ., ., *, ., . +., ., ., *, ., ., ., ., ., ., *, ., . +, ., ., ., *, ., ., ., ., ., *, ., ., . +., ., ., ., *, ., ., ., ., *, ., ., . +, ., ., ., ., *, ., ., ., *, ., ., ., . +., ., ., ., ., *, ., ., *, ., ., ., . +, ., ., ., ., ., *, ., *, ., ., ., ., . +., ., ., ., ., ., *, *, ., ., ., ., . +, ., ., ., ., ., ., 1, ., ., ., ., ., ." +[/terrain_graphics] +#---------------------------------------------------------------- + +# The rest are for the ship. All ship terrains start with "Z". There is more information +# in terrain.cfg. + +[terrain_graphics] + [tile] + pos=1 + type=*^Zfoc + [/tile] + [image] + name=ship/forecastle.png + layer=-90 + [/image] + map=" +., *, . +, *, *, . +., 1, * +, 1, 1, * +*, 1, 1 +, 1, 1, * +*, *, * +, *, ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zdek + [/tile] + [image] + name=ship/main-deck.png + layer=-100 + [/image] + map=" +., ., ., *, . +, ., ., 1, * +., *, 1, 1, * +, *, 1, 1, 1 +*, 1, 1, 1, * +, 1, 1, 1, * +*, 1, 1, *, . +, *, 1, *, . +., *, *, ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zpoo + [/tile] + [image] + name=ship/poop-deck.png + layer=-90 + [/image] + map=" +., *, . +, *, *, . +*, 1, * +, 1, 1, * +*, 1, 1 +, *, 1, * +., *, * +, ., *, ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zral + [/tile] + [image] + name=ship/railing.png + layer=100 + [/image] + map=" +., ., ., ., ., ., . +, ., ., ., ., *, . +., ., ., ., *, *, . +, ., ., ., *, *, * +., ., ., *, *, *, * +, ., ., *, ., ., * +., ., *, ., ., *, . +, ., *, ., ., ., . +., *, ., ., ., ., . +, *, ., ., ., ., . +*, ., ., ., ., ., . +, ., ., *, ., ., . +*, ., *, ., ., ., . +, *, *, ., ., ., . +1, ., ., ., ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zrlp + [/tile] + [image] + name=ship/railing-piece.png + layer=100 + [/image] + map=" +. +, * +1" +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zhul + [/tile] + [image] + name=ship/hull.png + layer=-80 + [/image] + map=" +., ., ., ., ., ., * +, ., ., ., ., ., * +., ., ., ., ., *, * +, ., ., ., ., *, * +., ., ., ., *, *, . +, ., ., ., *, *, . +., ., ., *, *, ., . +, ., ., *, *, ., . +., ., *, *, ., ., . +, *, *, *, ., ., . +*, 1, *, ., ., ., . +, *, *, ., ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zrig + [/tile] + [image] + name=ship/rigging-and-sails.png + layer=110 + [/image] + map=" +., ., ., ., ., ., ., . +, ., ., ., ., *, ., ., . +., ., ., ., *, *, *, . +, ., ., ., ., *, *, *, . +., ., ., ., *, *, *, . +, ., ., ., *, *, *, *, . +., ., ., ., *, *, *, . +, ., ., ., *, *, *, *, . +., ., ., *, *, *, *, . +, ., ., *, ., *, *, *, * +., ., *, *, *, *, *, * +, ., ., *, *, *, *, *, . +., ., *, *, *, *, ., * +, ., *, *, *, *, *, ., . +., *, *, *, *, *, ., . +, ., *, ., *, *, ., ., . +., *, ., ., *, ., ., . +, *, ., ., *, ., ., ., . +*, 1, ., ., *, ., ., . +, *, ., ., ., ., ., ., . +., *, ., ., *, ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=*^Zpie + [/tile] + [image] + name=ship/bits-and-pieces.png + layer=-70 + [/image] + map=" +., ., ., ., ., . +, ., ., ., ., * +., ., ., ., *, * +, ., ., ., ., *, . +., ., ., *, ., . +, ., ., *, ., ., . +., ., *, *, ., . +, ., ., ., ., *, . +., *, ., ., 1, . +, ., *, ., *, ., . +., ., ., ., ., . +, ., ., ., ., ., . +*, ., ., ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=Zld + [/tile] + [image] + name=ship/lower-deck.png + layer=-100 + [/image] + map=" +., ., ., ., *, . +, ., ., ., *, *, . +., ., ., *, 1, * +, ., ., *, 1, 1, * +., ., *, 1, 1, 1 +, ., *, 1, 1, 1, . +., *, 1, 1, 1, . +, *, 1, 1, 1, ., . +., 1, 1, 1, ., . +, *, 1, 1, ., ., . +., 1, 1, ., ., . +, *, *, ., ., ., ." +[/terrain_graphics] + +[terrain_graphics] + [tile] + pos=1 + type=Zlde + [/tile] + [image] + name=ship/lower-deck-edge.png + layer=100 + [/image] + map=" +., ., ., *, . +, ., ., ., * +., ., ., ., * +, ., ., ., * +., *, ., *, . +, ., ., *, . +., ., *, ., . +, *, *, ., . +*, *, 1, ., ." +[/terrain_graphics]