Eric Gallager 2021-01-24 23:16:29 -05:00 committed by GitHub
parent 2a8baa9590
commit 3118f7cecf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 375 additions and 59 deletions

View file

@ -4,7 +4,7 @@
name=_ "This Valley Belongs to Me"
{MEMOIRS_MAP 02_This_Valley_Belongs_to_Me.map}
next_scenario=03_The_Road_to_Weldyn
turns=24
{TURNS 26 25 24}
{DEFAULT_SCHEDULE}
{INTRO_AND_SCENARIO_MUSIC traveling_minstrels.ogg knolls.ogg}
@ -31,12 +31,14 @@
{METHOR}
x,y=21,16
[/unit]
# 100 is the default when left unspecified:
{GOLD 120 110 100}
[/side]
[event]
name=prestart
{MODIFY_UNIT (side=1) facing nw}
[/event]
{STARTING_VILLAGES 1 12}
{STARTING_VILLAGES 1 {ON_DIFFICULTY 16 14 12}}
[side]
side=2

View file

@ -4,7 +4,7 @@
name=_ "The Road to Weldyn"
{MEMOIRS_MAP 03_The_Road_to_Weldyn.map}
next_scenario=04_Leollyn
turns=24
{TURNS 26 25 24}
{DEFAULT_SCHEDULE}
{SCENARIO_MUSIC wanderer.ogg} # No story text, so no intro music
@ -27,8 +27,10 @@
[leader]
{YOUNG_DELFADOR}
[/leader]
# 100 is the default when left unspecified:
{GOLD 120 110 100}
[/side]
{STARTING_VILLAGES 1 10}
{STARTING_VILLAGES 1 {ON_DIFFICULTY 12 11 10}}
[side]
side=2
@ -39,7 +41,7 @@
recruit=Orcish Grunt,Troll Whelp,Wolf Rider
#endif
{GOLD 150 200 250}
{INCOME 0 2 2}
{INCOME 0 1 2}
team_name=enemies
user_team_name= _ "Pillagers"
{FLAG_VARIANT6 ragged}
@ -52,13 +54,13 @@
# make them more aggressive at night
[ai]
time_of_day=dusk,first_watch,second_watch
aggression=0.7
caution=0.25
aggression={ON_DIFFICULTY 0.5 0.6 0.7}
caution={ON_DIFFICULTY 0.27 0.26 0.25}
[/ai]
[ai]
time_of_day=morning,afternoon
aggression=0.0
caution=0.50
aggression={ON_DIFFICULTY 0.2 0.1 0.0}
caution={ON_DIFFICULTY 0.51 0.52 0.53}
[/ai]
[/side]
# wmllint: validate-on

View file

@ -4,7 +4,7 @@
name=_ "Leollyn"
{MEMOIRS_MAP 04_Leollyn.map}
next_scenario=05_Council_in_Weldyn
turns=24
{TURNS 26 25 24}
{DEFAULT_SCHEDULE}
{SCENARIO_MUSIC loyalists.ogg} # No story text, so no intro music
@ -27,6 +27,8 @@
[leader]
{YOUNG_DELFADOR}
[/leader]
# 100 is the default when left unspecified:
{GOLD 120 110 100}
[/side]
[event]
name=prestart
@ -56,7 +58,7 @@
side=2
controller=ai
recruit=Wolf Rider, Orcish Assassin, Orcish Archer
{GOLD 200 200 300}
{GOLD 150 225 300}
team_name=enemies
user_team_name= _ "Pillagers"
{FLAG_VARIANT6 ragged}
@ -71,13 +73,13 @@
# there are a lot of close villages
villages_per_scout=6
# attack Delfador more heavily than Leollyn
leader_value=2.0
leader_value={ON_DIFFICULTY 1.8 1.9 2.0}
[goal]
name=target
[criteria]
id=Delfador
[/criteria]
value=3.0
value={ON_DIFFICULTY 2.2 2.6 3.0}
[/goal]
[/ai]
[/side]
@ -86,8 +88,8 @@
side=3
controller=ai
recruit=Red Mage,White Mage
gold=0
income=8
{GOLD 20 10 0}
{INCOME 10 9 8}
team_name=allies
user_team_name= _ "Loyalists"
{FLAG_VARIANT loyalist}
@ -100,7 +102,10 @@
{UNIT 3 Spearman 4 18 (ai_special=guardian)} {FACING se}
[ai]
recruitment_pattern=mixed fighter,mixed fighter,healer
aggression=0.0
aggression={ON_DIFFICULTY 0.2 0.1 0.0}
caution={ON_DIFFICULTY 0.9 0.8 0.7}
grouping=defensive
support_villages=yes
[/ai]
[/side]
# wmllint: validate-on

View file

@ -4,7 +4,7 @@
name=_ "The Swamps of Illuven"
{MEMOIRS_MAP 06_The_Swamps_of_Illuven.map}
next_scenario=07_Night_in_the_Swamp
turns=28
{TURNS 32 30 28}
victory_when_enemies_defeated=no
{DEFAULT_SCHEDULE}
@ -32,18 +32,20 @@
{LIONEL}
placement=leader
[/unit]
# 100 is the default when left unspecified:
{GOLD 120 110 100}
[/side]
[event]
name=prestart
{MODIFY_UNIT (side=1) facing ne}
[/event]
{STARTING_VILLAGES 1 4}
{STARTING_VILLAGES 1 {ON_DIFFICULTY 6 5 4}}
[side]
side=2
controller=ai
recruit=Thief,Poacher,Thug
{GOLD 80 100 150}
{GOLD 50 100 150}
team_name=enemies
user_team_name= _ "Bandits"
{FLAG_VARIANT6 ragged}
@ -57,13 +59,13 @@
villages_per_scout=15
[/ai]
[/side]
{STARTING_VILLAGES 2 4}
{STARTING_VILLAGES 2 {ON_DIFFICULTY 2 3 4}}
[side]
side=3
controller=ai
recruit=Footpad,Poacher,Thug
{GOLD 80 100 150}
{GOLD 50 100 150}
team_name=enemies
user_team_name= _ "Bandits"
{FLAG_VARIANT6 ragged}
@ -77,7 +79,7 @@
villages_per_scout=10
[/ai]
[/side]
{STARTING_VILLAGES 3 4}
{STARTING_VILLAGES 3 {ON_DIFFICULTY 2 3 4}}
# wmllint: validate-on
# reward for the player who defeats Garrath without paying him
@ -131,20 +133,62 @@
side=1
variable=fee
[/store_gold]
{VARIABLE_OP fee multiply 8}
{VARIABLE_OP fee multiply {ON_DIFFICULTY 6 7 8}}
{VARIABLE_OP fee divide 10}
{VARIABLE_OP fee round 0}
{VARIABLE garrath_hostile yes}
{VARIABLE times_garrath_paid 0}
[message]
speaker=Garrath
message=_"Greetings, strangers! This swamp is dangerous... You wanna cross it, youll need protection — cost you only $fee gold!"
[option]
label=_"Thanks very much. Heres the gold..."
[command]
{VARIABLE_OP fee multiply -1}
[gold]
side=1
amount=-$fee
[/gold]
# take his gold:
[remove_item]
x=4
y=3
[/remove_item]
#ifdef EASY
[message]
speaker=Garrath
message=_"You know, you really ought to be more careful before handing over money to suspicious strangers like me. But, since I'm feeling nice at the moment, I think I will actually keep my word and offer you some protection."
[/message]
[message]
speaker=Harold
message=_"Hey, what's your problem, Garrath? I thought we had a deal!"
[/message]
[message]
speaker=Garrath
message=_"Yeah, well, I changed my mind."
[/message]
[modify_side]
side=2
team_name=allies
[/modify_side]
{VARIABLE garrath_hostile no}
{VARIABLE times_garrath_paid 1}
[gold]
side=2
amount=$fee
[/gold]
# we are already inside an "ifdef EASY" block, so no need to vary this on difficulty:
{CAPTURE_VILLAGES 2 4 3 4}
[redraw]
[/redraw]
[message]
speaker=Delfador
message=_"...I'm not entirely sure what just happened here, but I guess I should be grateful?"
[/message]
[message]
speaker=Lionel
message=_"While it appears we lucked out this time, I fear for the travelers for whom this man does NOT keep his word..."
[/message]
#else
[message]
speaker=Garrath
message=_"Its been a pleasure doing business with you... Bye!"
@ -152,8 +196,7 @@
[kill]
side=2
[/kill]
# take his gold too
{REMOVE_IMAGE 4 3}
# (the gold-taking that was previously done here is now done above)
[delay]
time=500
[/delay]
@ -169,11 +212,258 @@
speaker=Lionel
message=_"Well, at least we only have to deal with one of them now..."
[/message]
#endif
# give the remaining enemy a boost, for balance
[gold]
side=3
amount=40
amount={ON_DIFFICULTY 32 36 40}
[/gold]
# (maybe also give them an income, but I can't decide on a good amount)
#ifdef EASY
[event]
name=capture
first_time_only=no
[filter]
side=1
[/filter]
[if]
[have_location]
x,y=$x1,$y1
owner_side=2
[/have_location]
[or]
[variable]
name=owner_side
equals=2
[/variable]
[/or]
[then]
[if]
[variable]
name=garrath_hostile
boolean_equals=no
[/variable]
[then]
[if]
[variable]
name=times_garrath_paid
less_than_equal_to=1
[/variable]
[then]
[message]
speaker=Garrath
message=_"Hey, that was one of OUR villages! Deal's off; we're no longer protecting you!"
[/message]
# Need to conditionalize here to ensure Garrath's reply makes sense:
[if]
[have_unit]
id=Harold
[/have_unit]
[then]
[message]
speaker=Harold
message=_"So... does that mean that OUR deal is back on now, Garrath?"
[/message]
[message]
speaker=Garrath
message=_"Fine, I guess..."
[/message]
[/then]
[/if]
[message]
speaker=Delfador
message=_"Wait, I'm sorry! I didn't realize you were so attached to that village! Please give me a chance to make it up to you!"
[/message]
[message]
speaker=Garrath
message=_"Well, I guess a little extra payment could persuade me to forgive you..."
[/message]
[store_gold]
variable=gold
side=1
[/store_gold]
[if]
[variable]
name=gold
less_than=20
[/variable]
[then]
[message]
speaker=Delfador
# If debugging, feel free to edit the variable $gold into this message to see how much you have left:
message=_"I'm afraid I don't have much gold left..."
[/message]
[message]
speaker=Garrath
message=_"Oh well, too bad for you!"
[/message]
[modify_side]
side=2
team_name=enemies
[/modify_side]
{VARIABLE garrath_hostile yes}
[/then]
[else]
[message]
speaker=Delfador
message=_"Well..."
[option]
label=_"Here's 20 more gold."
[command]
[gold]
side=1
amount=-20
[/gold]
[gold]
side=2
amount=20
[/gold]
{VARIABLE_OP times_garrath_paid add 1}
[message]
speaker=Garrath
message=_"Pleasure doing business with you! Just don't let it happen again!"
[/message]
# If Harold is dead, dialogue will still make sense with this omitted:
[message]
speaker=Harold
message=_"Sheesh, Garrath, won't you make up your mind already?!"
[/message]
# (nothing else to do; Garrath stays an ally)
[/command]
[/option]
[option]
label=_"Nope, I'm not giving you any more gold."
[command]
[message]
speaker=Garrath
message=_"Suit yourself. Men, attack!"
[/message]
[modify_side]
side=2
team_name=enemies
[/modify_side]
{VARIABLE garrath_hostile yes}
[/command]
[/option]
[/message]
[/else]
[/if] # gold
{CLEAR_VARIABLE gold}
[/then]
[elseif]
[variable]
name=times_garrath_paid
# This should be redundant with the previous condition, but I'm writing it like this
# to be more explicit about what exactly I'm doing, and to leave room for future
# editors to potentially add more cases in the future:
greater_than_equal_to=2
[/variable]
[then]
[message]
speaker=Garrath
message=_"Hey! You captured one of my villages again! I thought I told you to stop doing that!"
[/message]
[message]
speaker=Delfador
message=_"Sorry! It's a hard habit to break! Perhaps I can pay you again to make up for it?"
# (possible future direction: actually let him do so, but at a higher price than before. For now, though, we won't.)
[/message]
[message]
speaker=Garrath
message=_"Nope, I'm through with your games! Men, attack!"
[/message]
[modify_side]
side=2
team_name=enemies
[/modify_side]
{VARIABLE garrath_hostile yes}
[message]
speaker=Delfador
message=_"Oh well, I guess I should have listened when he said not to let it happen again..."
[/message]
[/then]
[/elseif]
[/if] # times_garrath_paid
[/then]
[else]
# case where he is already hostile:
[message]
speaker=Garrath
message=_"Stop stealing my villages!"
[/message]
[/else]
[/if] # garrath_hostile
[/then]
[/if]
[/event]
[event]
name=side 1 turn refresh
first_time_only=no
[store_gold]
variable=gold
side=1
[/store_gold]
[if]
[variable]
name=gold
less_than=0
[/variable]
[then]
[message]
speaker=Garrath
message=_"Hm, it looks like you don't have any gold left. We're not interested in you anymore; bye!"
[/message]
[kill]
side=2
[/kill]
[message]
speaker=Harold
message=_"What a fickle one, that Garrath..."
[/message]
[/then]
[/if]
{CLEAR_VARIABLE gold}
[/event]
# A little bit of extra balance to make up for the fact that Harold now has an extra enemy:
[event]
name=last breath
[filter]
side=2
[/filter]
[filter_second]
side=3
[/filter_second]
[message]
speaker=Harold
message=_"I'll be taking back that money that your men “borrowed” from me now, Garrath!"
[/message]
[/event]
# Split the actual gold-giving part of this off from the previous one so that it can happen multiple times:
[event]
name=die
first_time_only=no
[filter]
side=2
[/filter]
[filter_second]
side=3
[/filter_second]
{RANDOM $unit.level..$unit.cost}
[gold]
side=3
amount=$random
[/gold]
[floating_text]
x,y=$x2,$y2
# wmllint: markcheck off
text="<span color='#BCB088'>+$random|g</span>"
# wmllint: markcheck on
[/floating_text]
[/event]
#endif
[/command]
[/option]
[option]
@ -205,7 +495,7 @@
[/sound]
[gold]
side=1
amount=100
amount={ON_DIFFICULTY 120 110 100}
[/gold]
[message]
speaker=unit
@ -218,5 +508,11 @@
{CLEAR_VARIABLE fee}
[/event]
[event]
name=victory
# need to clear these out here instead of in the previous event so that they can be used in inner events:
{CLEAR_VARIABLE garrath_hostile}
{CLEAR_VARIABLE times_garrath_paid}
[/event]
{MEMOIRS_DEATHS}
[/scenario]

View file

@ -4,7 +4,8 @@
name= _ "The Return of Trouble"
{MEMOIRS_MAP 13_The_Return_of_Trouble.map}
next_scenario=14_Shadows_in_the_Dark
{TURNS 24 27 30}
# I think this was backwards originally; this is a "defeat all enemies" map, not a defensive map:
{TURNS 30 27 24}
{DEFAULT_SCHEDULE}
disallow_recall=yes
@ -34,7 +35,8 @@
side=1
controller=human
# recruit handled in {KALENZ_TAKES_CONTROL}
{GOLD 320 310 380}
{GOLD 350 320 380}
{INCOME 5 3 1}
save_id=Player
team_name=allies
user_team_name= _ "Elves"
@ -47,6 +49,8 @@
[/leader]
[/side]
{STARTING_VILLAGES 1 {ON_DIFFICULTY 5 4 3}}
### Protagonist switching ###
[event]
name=prestart
@ -65,8 +69,8 @@
#ifdef HARD
recruit=Orcish Archer, Orcish Assassin, Orcish Grunt, Wolf Rider, Orcish Crossbowman, Orcish Warrior, Goblin Knight, Goblin Pillager, Orcish Slayer, Goblin Spearman
#endif
{GOLD 150 230 300}
{INCOME 4 8 12}
{GOLD 140 220 300}
{INCOME 2 7 12}
team_name=enemies
user_team_name= _ "Pillagers"
{FLAG_VARIANT6 ragged}
@ -82,8 +86,8 @@
[/ai]
[ai]
time_of_day=dusk,first_watch,second_watch
aggression=0.75
caution=0.0
aggression={ON_DIFFICULTY 0.71 0.73 0.75}
caution={ON_DIFFICULTY 0.2 0.1 0.0}
grouping=no
[/ai]
[/side]
@ -100,8 +104,8 @@
#ifdef HARD
recruit=Orcish Archer, Orcish Assassin, Orcish Grunt, Wolf Rider, Orcish Crossbowman, Orcish Warrior, Goblin Knight, Goblin Pillager, Orcish Slayer, Goblin Spearman
#endif
{GOLD 250 300 380}
{INCOME 4 8 12}
{GOLD 220 300 380}
{INCOME 2 7 12}
team_name=enemies
user_team_name= _ "Pillagers"
{FLAG_VARIANT6 ragged}
@ -117,8 +121,8 @@
[/ai]
[ai]
time_of_day=dusk,first_watch,second_watch
aggression=0.75
caution=0.0
aggression={ON_DIFFICULTY 0.71 0.73 0.75}
caution={ON_DIFFICULTY 0.2 0.1 0.0}
grouping=no
[/ai]
[/side]
@ -135,8 +139,8 @@
#ifdef HARD
recruit=Orcish Archer, Orcish Assassin, Orcish Grunt, Wolf Rider, Orcish Crossbowman, Orcish Warrior, Goblin Knight, Goblin Pillager, Orcish Slayer, Goblin Spearman
#endif
{GOLD 250 300 380}
{INCOME 4 8 12}
{GOLD 220 300 380}
{INCOME 2 7 12}
team_name=enemies
user_team_name= _ "Pillagers"
{FLAG_VARIANT6 ragged}
@ -152,8 +156,8 @@
[/ai]
[ai]
time_of_day=dusk,first_watch,second_watch
aggression=0.75
caution=0.0
aggression={ON_DIFFICULTY 0.71 0.73 0.75}
caution={ON_DIFFICULTY 0.2 0.1 0.0}
grouping=no
[/ai]
[/side]
@ -162,7 +166,7 @@
side=5
controller=ai
recruit={ELVES}
{GOLD 250 250 290}
{GOLD 270 250 290}
team_name=allies
user_team_name= _ "Elves"
{FLAG_VARIANT wood-elvish}
@ -175,6 +179,8 @@
[/side]
# wmllint: validate-on
{STARTING_VILLAGES 5 {ON_DIFFICULTY 8 7 6}}
[event]
name=prestart
[objectives]

View file

@ -4,7 +4,7 @@
name=_ "The Portal of Doom"
{MEMOIRS_MAP 18_The_Portal_of_Doom.map}
next_scenario=19_Showdown_in_the_Northern_Swamp
turns=40
{TURNS 44 42 40}
victory_when_enemies_defeated=no
{DEFAULT_SCHEDULE}
@ -34,7 +34,8 @@
side=1
controller=human
recruit={LOYALISTS}
{GOLD 200 180 160}
{GOLD 220 190 160}
{INCOME 3 2 1}
save_id=Player
team_name=allies
user_team_name= _ "Loyalists"
@ -66,7 +67,7 @@
#ifdef HARD
recruit=Skeleton, Skeleton Archer, Revenant, Draug, Banebow, Bone Shooter, Deathblade
#endif
{GOLD 200 200 250}
{GOLD 150 200 250}
team_name=enemies
user_team_name= _ "Undead"
{FLAG_VARIANT undead}
@ -78,18 +79,20 @@
[/leader]
[ai]
aggression=0.0
# recruitment_pattern=scout, mixed fighter, archer
#ifdef CUSTOMIZED_AI
recruitment_pattern=scout, mixed fighter, archer
# there are a lot of close villages
# villages_per_scout=6
villages_per_scout=6
#endif
# attack Delfador heavily
leader_value=2.0
leader_value={ON_DIFFICULTY 1.9 2.0 2.1}
[goal]
name=target
[criteria]
id=Delfador
[/criteria]
value=3.0
value={ON_DIFFICULTY 2.9 3.0 3.1}
[/goal]
[/ai]
[/side]
@ -106,7 +109,7 @@
#ifdef HARD
recruit=Ghost, Vampire Bat, Shadow, Nightgaunt, Spectre, Blood Bat, Vampire Bat, Wraith
#endif
{GOLD 200 200 250}
{GOLD 150 200 250}
team_name=enemies
user_team_name= _ "Undead"
{FLAG_VARIANT undead}
@ -118,18 +121,20 @@
[/leader]
[ai]
aggression=0.0
# recruitment_pattern=scout, mixed fighter, archer
#ifdef CUSTOMIZED_AI
recruitment_pattern=scout, mixed fighter, archer
# there are a lot of close villages
# villages_per_scout=6
villages_per_scout=6
#endif
# attack Delfador heavily
leader_value=2.0
# attack Delfador heavily
leader_value={ON_DIFFICULTY 1.9 2.0 2.1}
[goal]
name=target
[criteria]
id=Delfador
[/criteria]
value=3.0
value={ON_DIFFICULTY 2.9 3.0 3.1}
[/goal]
[/ai]
[/side]
@ -158,7 +163,7 @@
[criteria]
id=Delfador
[/criteria]
value=10
value={ON_DIFFICULTY 8 9 10}
[/goal]
[/ai]
{FLAG_VARIANT undead}
@ -242,7 +247,7 @@
[modify_side]
side=4
hidden=no
{INCOME 10 20 30}
{INCOME 6 18 30}
[/modify_side]
[message]
speaker=Iliah-Malal
@ -259,7 +264,7 @@
[/event]
[event]
name=turn 9
name={ON_DIFFICULTY (turn 11) (turn 10) (turn 9)}
[fire_event]
name=iliah-malal
[/fire_event]