-
-
Notifications
You must be signed in to change notification settings - Fork 988
/
7_Outriding_the_Outriders.cfg
621 lines (560 loc) · 16.1 KB
/
7_Outriding_the_Outriders.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
#textdomain wesnoth-sof
[scenario]
name= _ "Outriding the Outriders"
id=7_Outriding_the_Outriders
turns=12
map_data="{campaigns/Sceptre_of_Fire/maps/7_Outriding_the_Outriders.map}"
next_scenario=8_The_Dragon
victory_when_enemies_defeated=no
disallow_recall=yes
{SCENARIO_MUSIC "vengeful.ogg"}
{DEFAULT_SCHEDULE}
[side]
no_leader=yes
defeat_condition=no_units_left # actually: Alanin dies
save_id=Rugnur
side=1
controller=human
shroud=yes
fog=yes
gold=0
income=-2
village_gold=0
{FLAG_VARIANT loyalist}
team_name=alanin
user_team_name= _ "Alanin"
[/side]
[side]
no_leader=yes
side=2
[ai]
[goal]
name=target
[criteria]
id=Alanin
[/criteria]
value=1
[/goal]
[goal]
name=target
[criteria]
type=Bowman,Spearman
[/criteria]
value=0.1
[/goal]
[avoid]
terrain=*^V*
[/avoid]
village_value=0
aggression=1.0
caution=0
grouping=no
[/ai]
team_name=elves
user_team_name= _ "Elves"
{FLAG_VARIANT wood-elvish}
[/side]
[story]
[part]
story= _ "Rugnur had fled across the Arkan-thoria, but Alanin could not do that. He went south — back to the Wesnoth border."
[/part]
[part]
story= _ "The elves followed both of them. First I will tell of their pursuit of Alanin, before we descend into the caves to learn Rugnur’s fate."
[/part]
[/story]
{SOF_TRACK {JOURNEY_07_NEW} }
[event]
name=prestart
[unstore_unit]
variable=alanin
x,y=17,4
[/unstore_unit]
[disallow_recruit]
side=1
[/disallow_recruit]
[objectives]
side=1
[objective]
description= _ "Reach the Wesnothian outpost in the south"
condition=win
[/objective]
[objective]
description= _ "Death of Alanin"
condition=lose
[/objective]
{TURNS_RUN_OUT}
[gold_carryover]
carryover_percentage=0
[/gold_carryover]
[/objectives]
[/event]
[event]
name=start
[message]
speaker=Alanin
message= _ "Well, the elves are behind me for now, but they will send riders to catch me, and elvish riders are faster than me."
[/message]
[message]
speaker=Alanin
message= _ "My only hope is to convince the peasants to stop the elves from passing through their land, so I can get ahead of them."
[/message]
[unit]
type=Elvish Outrider
id=Asaeri
name= _ "Lord Asaeri"
x,y=18,1
side=2
[modifications]
{TRAIT_STRONG}
{TRAIT_DEXTROUS}
[/modifications]
[/unit]
[unit]
type=Elvish Outrider
id=Gaelir
name= _ "Gaelir"
x,y=18,1
side=2
[modifications]
{TRAIT_QUICK}
{TRAIT_DEXTROUS}
[/modifications]
[/unit]
[unit]
type=Elvish Outrider
id=Salira
name= _ "Salira"
x,y=18,1
side=2
facing=sw
[modifications]
{TRAIT_STRONG}
{TRAIT_QUICK}
[/modifications]
[/unit]
[unit]
type=Elvish Outrider
id=Losnin
name= _ "Losnin"
x,y=18,1
side=2
facing=sw
[modifications]
{TRAIT_STRONG}
{TRAIT_RESILIENT}
[/modifications]
[/unit]
[unit]
type=Elvish Outrider
id=Ealin
name= _ "Ealin"
x,y=18,1
side=2
facing=sw
[modifications]
{TRAIT_QUICK}
{TRAIT_RESILIENT}
[/modifications]
[/unit]
[scroll_to]
x,y=18,1
[/scroll_to]
[message]
speaker=Asaeri
# wmllint: local spelling outride
message= _ "You cannot outride us, horseman of Wesnoth! Whatever message you are carrying, it will not be delivered!"
[/message]
[message]
speaker=Alanin
message= _ "We shall see about that!"
[/message]
[/event]
[event]
name=turn 2
[unit]
type=Elvish Outrider
id=Raesil
name= _ "Raesil"
x,y=18,1
side=2
[modifications]
{TRAIT_QUICK}
{TRAIT_RESILIENT}
[/modifications]
[/unit]
[/event]
# More outriders will come if there are too few of them
[event]
name=die
first_time_only=yes
[filter]
side=2
[/filter]
[filter_condition]
[have_unit]
side=2
count=0-2
[/have_unit]
[/filter_condition]
[message]
speaker=second_unit
message= _ "Great, now there is no need to worry about those elves anymore!"
[/message]
[fire_event]
name=reinforcements
[/fire_event]
[message]
role=newcomer
message= _ "Did you really think that you could escape us? Don’t underestimate us, inferior humans!"
scroll=no
[/message]
[if]
[have_unit]
side=1
count=1
[/have_unit]
[then]
[message]
id=Alanin
message= _ "Even though my chances have grown worse, I have to fulfil my duty. I do not owe them any less!"
[/message]
[/then]
[else]
[role]
role=fighter
id=$second_unit.id
[not]
id=Alanin
[/not]
search_recall_list=no
[else]
[role]
role=fighter
side=1
[not]
id=Alanin
[/not]
search_recall_list=no
[/role]
[/else]
[/role]
[message]
id=Alanin
message= _ "Oh no, more of them? And there I thought I could catch my breath…"
[/message]
[message]
role=fighter
message= _ "Don’t worry sir, we’ll make it through this!"
[/message]
[/else]
[/if]
# Fire the event the next time with different dialoge
[event]
name=die
first_time_only=no
[filter]
side=2
[/filter]
[filter_condition]
[have_unit]
side=2
count=0-2
[/have_unit]
[/filter_condition]
[fire_event]
name=reinforcements
[/fire_event]
[message]
id=Alanin
message= _ "Is there no end to their numbers?"
[/message]
[/event]
[/event]
[event]
name=reinforcements
first_time_only=no
[store_unit]
[filter]
id=Alanin
[/filter]
variable=alanin
[/store_unit]
# In order to put pressure, the outriders will be spawned 12 hexes
# north from Alanin. 12 hexes ensure that not even a quick Elvish
# Outrider (11 MP) can reach Alanin in one turn.
# Anyway, the "y" is set between 1 and 60 by the Formula, because
# null or negative values would break the code, and because beyond
# "y=60" there is the human outpost.
[store_locations]
terrain=Rd
[or]
terrain=Wwf
[/or]
[and]
y="$(min([$(max([($alanin.y - 12), 1])), 60]))"
[/and]
variable=outriders_loc
[/store_locations]
[move_unit_fake]
type=Elvish Outrider
side=2
x=18,$outriders_loc[0].x
y= 1,$outriders_loc[0].y
[/move_unit_fake]
{GENERIC_UNIT 2 "Elvish Outrider" $outriders_loc[0].x $outriders_loc[0].y}
[+unit]
role=newcomer
[/unit]
{GENERIC_UNIT 2 "Elvish Outrider" $outriders_loc[0].x $outriders_loc[0].y}
{GENERIC_UNIT 2 "Elvish Outrider" $outriders_loc[0].x $outriders_loc[0].y}
{GENERIC_UNIT 2 "Elvish Outrider" $outriders_loc[0].x $outriders_loc[0].y}
{CLEAR_VARIABLE alanin,outriders_loc}
[lift_fog]
[filter]
role=newcomer
[/filter]
radius=1
[/lift_fog]
[/event]
[event]
name=capture
[filter]
id=Alanin
[/filter]
[message]
speaker=Alanin
message= _ "The villagers here are loyal to Wesnoth. They should be willing to help me escape these elves!"
[/message]
[unit]
type=Spearman
id=Rolin # wmllint: ignore
name= _ "Rolin"
x,y=$x1,$y1
side=1
random_traits=yes
[modifications]
{TRAIT_LOYAL}
[/modifications]
{IS_LOYAL}
[/unit]
[message]
speaker=Rolin # wmllint: ignore
message= _ "We will certainly help any warrior of Wesnoth who needs our help!"
[/message]
[/event]
[event]
name=capture
first_time_only=no
[filter]
id=Alanin
[/filter]
{RANDOM "Spearman,Bowman"}
[unit]
type=$random
generate_name=yes
x,y=$x1,$y1
side=1
random_traits=yes
[modifications]
{TRAIT_LOYAL}
[/modifications]
{IS_LOYAL}
[/unit]
{RANDOM "Spearman,Bowman"}
[unit]
type=$random
generate_name=yes
x,y=$x1,$y1
side=1
random_traits=yes
[modifications]
{TRAIT_LOYAL}
[/modifications]
{IS_LOYAL}
[/unit]
{CLEAR_VARIABLE random}
[/event]
[event]
name=die
[filter]
id=Alanin
[/filter]
[endlevel]
result=defeat
[/endlevel]
[/event]
[event]
name=time over
[message]
race=elf
message= _ "You slow humans took too long, our detachment has already caught up with you!"
scroll=no
[/message]
[delay]
time=700
[/delay]
[store_unit]
[filter]
id=Alanin
[/filter]
variable=alanin
[/store_unit]
# find a location
[if]
[variable]
name=alanin.x
greater_than=12
[/variable]
[then]
{VARIABLE spawn.x 24}
[/then]
[else]
{VARIABLE spawn.x 1}
[/else]
[/if]
{VARIABLE spawn.y "$($alanin.y+2)"}
# make sure it's not in the water
[store_locations]
variable=spawn_hexes
include_borders=no
[not]
terrain=W*^*,A*^*
[/not]
x=$spawn.x
[and]
y=$spawn.y
radius=2
# this [and] is not redundant, due to the way radius works
[/and]
[/store_locations]
[unit]
id=ambusher
side=2
type=Elvish Outrider
x=$spawn_hexes[0].x
y=$spawn_hexes[0].y
[modifications]
{TRAIT_QUICK}
[/modifications]
[/unit]
[move_unit]
id=ambusher
x=$spawn_hexes[0].x
y=$spawn_hexes[0].y
to_x=$alanin.x
to_y=$alanin.y
[/move_unit]
# to avoid scrolling between the killing animation and the [kill]
[scroll_to]
x=$alanin.x
y=$alanin.y
[/scroll_to]
[animate_unit]
[filter]
id=ambusher
[/filter]
flag=attack
hits=yes
with_bars=yes
[primary_attack]
range=ranged
[/primary_attack]
[facing]
x=$alanin.x
y=$alanin.y
[/facing]
[animate]
[filter]
id=Alanin
[/filter]
flag=defend
hits=yes
with_bars=no
[facing]
[filter]
id=ambusher
[/filter]
[/facing]
[/animate]
[/animate_unit]
[kill]
id=Alanin
animate=yes
[/kill]
{CLEAR_VARIABLE alanin,spawn,spawn_hexes}
[/event]
[event]
name=moveto
[filter]
id=Alanin
[filter_location]
terrain=Ce,Ket
[/filter_location]
[/filter]
{MODIFY_UNIT id=Alanin profile "portraits/alanin-older.png"}
[unit]
type=Lieutenant
id=Hadlin # wmllint: ignore
name= _ "Hadlin"
x,y=10,63
side=1
random_traits=no
[modifications]
{TRAIT_LOYAL}
[/modifications]
{IS_LOYAL}
[/unit]
[message]
speaker=Hadlin # wmllint: ignore
message= _ "Who goes there?"
[/message]
[message]
speaker=Alanin
message= _ "I’m a dragoon, with Haldric II’s personal bodyguard. I was sent on a mission in the northlands, and now elvish horsemen are chasing me. I barely evaded them."
[/message]
[message]
speaker=Hadlin # wmllint: ignore
message= _ "I see. Well, come on in. I doubt they would be able to capture this fort, even if they did want to start a war, which I doubt."
[/message]
[endlevel]
result=victory
bonus=no
{NEW_GOLD_CARRYOVER 100}
carryover_report=no
[/endlevel]
[/event]
[event]
name=victory
[store_unit]
[filter]
id=Alanin
[/filter]
variable=alanin
kill=yes
[/store_unit]
[kill]
[not]
x,y=recall,recall
[/not]
side=1
[/kill]
[foreach]
array=dwarves
[do]
{VARIABLE this_item.x "recall"}
{VARIABLE this_item.y "recall"}
# to heal them
{VARIABLE this_item.hitpoints ($this_item.max_hitpoints)}
{VARIABLE this_item.moves ($this_item.max_moves)}
{VARIABLE this_item.attacks_left ($this_item.max_attacks)}
{CLEAR_VARIABLE this_item.status.slowed}
# no need for poisoned and petrified, as Elves do not have units with such abilities
[unstore_unit]
variable=this_item
[/unstore_unit]
[/do]
[/foreach]
{CLEAR_VARIABLE dwarves}
{CLEAR_VARIABLE stored_Rugnur_side}
[/event]
[/scenario]