// function Generate ( level ) ; var hum , lm ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
// for hum in FilterUnitsInArea ( levels , [ f_type , unit_human ] ) do
   5: LD_ADDR_VAR 0 3
   9: PUSH
  10: LD_INT 16
  12: PPUSH
  13: LD_INT 21
  15: PUSH
  16: LD_INT 1
  18: PUSH
  19: EMPTY
  20: LIST
  21: LIST
  22: PPUSH
  23: CALL_OW 69
  27: PUSH
  28: FOR_IN
  29: IFFALSE 131
// begin lm := ( GetX ( hum ) - 20 ) div 4 + 1 ;
  31: LD_ADDR_VAR 0 4
  35: PUSH
  36: LD_VAR 0 3
  40: PPUSH
  41: CALL_OW 222
  45: PUSH
  46: LD_INT 20
  48: MINUS
  49: PUSH
  50: LD_INT 4
  52: DIV
  53: PUSH
  54: LD_INT 1
  56: PLUS
  57: ST_TO_ADDR
// if lm <= level then
  58: LD_VAR 0 4
  62: PUSH
  63: LD_VAR 0 1
  67: LESSEQUAL
  68: IFFALSE 129
// begin if lm < level then
  70: LD_VAR 0 4
  74: PUSH
  75: LD_VAR 0 1
  79: LESS
  80: IFFALSE 96
// GiveMissionExperience ( hum , lm ) ;
  82: LD_VAR 0 3
  86: PPUSH
  87: LD_VAR 0 4
  91: PPUSH
  92: CALL_OW 218
// SetLastMission ( hum , lm ) ;
  96: LD_VAR 0 3
 100: PPUSH
 101: LD_VAR 0 4
 105: PPUSH
 106: CALL_OW 217
// SaveCharacters ( hum , GetIdent ( hum ) ) ;
 110: LD_VAR 0 3
 114: PPUSH
 115: LD_VAR 0 3
 119: PPUSH
 120: CALL_OW 221
 124: PPUSH
 125: CALL_OW 38
// end ; end ;
 129: GO 28
 131: POP
 132: POP
// if level < 10 then
 133: LD_VAR 0 1
 137: PUSH
 138: LD_INT 10
 140: LESS
 141: IFFALSE 158
// SaveCampaignFile ( CharsAr0 & level ) else
 143: LD_STRING CharsAr0
 145: PUSH
 146: LD_VAR 0 1
 150: STR
 151: PPUSH
 152: CALL_OW 24
 156: GO 171
// SaveCampaignFile ( CharsAr & level ) ;
 158: LD_STRING CharsAr
 160: PUSH
 161: LD_VAR 0 1
 165: STR
 166: PPUSH
 167: CALL_OW 24
// end ;
 171: LD_VAR 0 2
 175: RET
// every 0 0$0.5 trigger IsInArea ( Gen , GenBas ) do var hum , lm ;
 176: LD_INT 1
 178: PPUSH
 179: LD_INT 17
 181: PPUSH
 182: CALL_OW 277
 186: IFFALSE 296
 188: GO 190
 190: DISABLE
 191: LD_INT 0
 193: PPUSH
 194: PPUSH
// begin for hum in FilterAllUnits ( [ f_type , unit_human ] ) diff [ GenDrive ] do
 195: LD_ADDR_VAR 0 1
 199: PUSH
 200: LD_INT 21
 202: PUSH
 203: LD_INT 1
 205: PUSH
 206: EMPTY
 207: LIST
 208: LIST
 209: PPUSH
 210: CALL_OW 68
 214: PUSH
 215: LD_INT 2
 217: PUSH
 218: EMPTY
 219: LIST
 220: DIFF
 221: PUSH
 222: FOR_IN
 223: IFFALSE 287
// begin lm := ( GetX ( hum ) - 20 ) div 4 + 1 ;
 225: LD_ADDR_VAR 0 2
 229: PUSH
 230: LD_VAR 0 1
 234: PPUSH
 235: CALL_OW 222
 239: PUSH
 240: LD_INT 20
 242: MINUS
 243: PUSH
 244: LD_INT 4
 246: DIV
 247: PUSH
 248: LD_INT 1
 250: PLUS
 251: ST_TO_ADDR
// SetLastMission ( hum , lm ) ;
 252: LD_VAR 0 1
 256: PPUSH
 257: LD_VAR 0 2
 261: PPUSH
 262: CALL_OW 217
// SaveCharacters ( hum , GetIdent ( hum ) ) ;
 266: LD_VAR 0 1
 270: PPUSH
 271: LD_VAR 0 1
 275: PPUSH
 276: CALL_OW 221
 280: PPUSH
 281: CALL_OW 38
// end ;
 285: GO 222
 287: POP
 288: POP
// SaveCampaignFile ( ..\..\Campaigns\Am\Start ) ;
 289: LD_STRING ..\..\Campaigns\Am\Start
 291: PPUSH
 292: CALL_OW 24
// end ;
 296: PPOPN 2
 298: END
// every 0 0$0.5 trigger IsInArea ( Gen , l1 ) do
 299: LD_INT 1
 301: PPUSH
 302: LD_INT 1
 304: PPUSH
 305: CALL_OW 277
 309: IFFALSE 321
 311: GO 313
 313: DISABLE
// begin Generate ( 1 ) ;
 314: LD_INT 1
 316: PPUSH
 317: CALL 0 0 1
// end ;
 321: END
// every 0 0$0.5 trigger IsInArea ( Gen , l2 ) do
 322: LD_INT 1
 324: PPUSH
 325: LD_INT 2
 327: PPUSH
 328: CALL_OW 277
 332: IFFALSE 344
 334: GO 336
 336: DISABLE
// begin Generate ( 2 ) ;
 337: LD_INT 2
 339: PPUSH
 340: CALL 0 0 1
// end ;
 344: END
// every 0 0$0.5 trigger IsInArea ( Gen , l3 ) do
 345: LD_INT 1
 347: PPUSH
 348: LD_INT 3
 350: PPUSH
 351: CALL_OW 277
 355: IFFALSE 367
 357: GO 359
 359: DISABLE
// begin Generate ( 3 ) ;
 360: LD_INT 3
 362: PPUSH
 363: CALL 0 0 1
// end ;
 367: END
// every 0 0$0.5 trigger IsInArea ( Gen , l4 ) do
 368: LD_INT 1
 370: PPUSH
 371: LD_INT 4
 373: PPUSH
 374: CALL_OW 277
 378: IFFALSE 390
 380: GO 382
 382: DISABLE
// begin Generate ( 4 ) ;
 383: LD_INT 4
 385: PPUSH
 386: CALL 0 0 1
// end ;
 390: END
// every 0 0$0.5 trigger IsInArea ( Gen , l5 ) do
 391: LD_INT 1
 393: PPUSH
 394: LD_INT 5
 396: PPUSH
 397: CALL_OW 277
 401: IFFALSE 413
 403: GO 405
 405: DISABLE
// begin Generate ( 5 ) ;
 406: LD_INT 5
 408: PPUSH
 409: CALL 0 0 1
// end ;
 413: END
// every 0 0$0.5 trigger IsInArea ( Gen , l6 ) do
 414: LD_INT 1
 416: PPUSH
 417: LD_INT 6
 419: PPUSH
 420: CALL_OW 277
 424: IFFALSE 436
 426: GO 428
 428: DISABLE
// begin Generate ( 6 ) ;
 429: LD_INT 6
 431: PPUSH
 432: CALL 0 0 1
// end ;
 436: END
// every 0 0$0.5 trigger IsInArea ( Gen , l7 ) do
 437: LD_INT 1
 439: PPUSH
 440: LD_INT 7
 442: PPUSH
 443: CALL_OW 277
 447: IFFALSE 459
 449: GO 451
 451: DISABLE
// begin Generate ( 7 ) ;
 452: LD_INT 7
 454: PPUSH
 455: CALL 0 0 1
// end ;
 459: END
// every 0 0$0.5 trigger IsInArea ( Gen , l8 ) do
 460: LD_INT 1
 462: PPUSH
 463: LD_INT 8
 465: PPUSH
 466: CALL_OW 277
 470: IFFALSE 482
 472: GO 474
 474: DISABLE
// begin Generate ( 8 ) ;
 475: LD_INT 8
 477: PPUSH
 478: CALL 0 0 1
// end ;
 482: END
// every 0 0$0.5 trigger IsInArea ( Gen , l9 ) do
 483: LD_INT 1
 485: PPUSH
 486: LD_INT 9
 488: PPUSH
 489: CALL_OW 277
 493: IFFALSE 505
 495: GO 497
 497: DISABLE
// begin Generate ( 9 ) ;
 498: LD_INT 9
 500: PPUSH
 501: CALL 0 0 1
// end ;
 505: END
// every 0 0$0.5 trigger IsInArea ( Gen , l10 ) do
 506: LD_INT 1
 508: PPUSH
 509: LD_INT 10
 511: PPUSH
 512: CALL_OW 277
 516: IFFALSE 528
 518: GO 520
 520: DISABLE
// begin Generate ( 10 ) ;
 521: LD_INT 10
 523: PPUSH
 524: CALL 0 0 1
// end ;
 528: END
// every 0 0$0.5 trigger IsInArea ( Gen , l11 ) do
 529: LD_INT 1
 531: PPUSH
 532: LD_INT 11
 534: PPUSH
 535: CALL_OW 277
 539: IFFALSE 551
 541: GO 543
 543: DISABLE
// begin Generate ( 11 ) ;
 544: LD_INT 11
 546: PPUSH
 547: CALL 0 0 1
// end ;
 551: END
// every 0 0$0.5 trigger IsInArea ( Gen , l12 ) do
 552: LD_INT 1
 554: PPUSH
 555: LD_INT 12
 557: PPUSH
 558: CALL_OW 277
 562: IFFALSE 574
 564: GO 566
 566: DISABLE
// begin Generate ( 12 ) ;
 567: LD_INT 12
 569: PPUSH
 570: CALL 0 0 1
// end ;
 574: END
// every 0 0$0.5 trigger IsInArea ( Gen , l13 ) do
 575: LD_INT 1
 577: PPUSH
 578: LD_INT 13
 580: PPUSH
 581: CALL_OW 277
 585: IFFALSE 597
 587: GO 589
 589: DISABLE
// begin Generate ( 13 ) ;
 590: LD_INT 13
 592: PPUSH
 593: CALL 0 0 1
// end ;
 597: END
// every 0 0$0.5 trigger IsInArea ( Gen , l14 ) do
 598: LD_INT 1
 600: PPUSH
 601: LD_INT 14
 603: PPUSH
 604: CALL_OW 277
 608: IFFALSE 620
 610: GO 612
 612: DISABLE
// begin Generate ( 14 ) ;
 613: LD_INT 14
 615: PPUSH
 616: CALL 0 0 1
// end ;
 620: END
// every 0 0$0.5 trigger IsInArea ( Gen , l15 ) do
 621: LD_INT 1
 623: PPUSH
 624: LD_INT 15
 626: PPUSH
 627: CALL_OW 277
 631: IFFALSE 643
 633: GO 635
 635: DISABLE
// begin Generate ( 15 ) ;
 636: LD_INT 15
 638: PPUSH
 639: CALL 0 0 1
// end ; end_of_file
 643: END
// every 0 0$0.1 do
 644: GO 646
 646: DISABLE
// begin ComHold ( all_units ) ;
 647: LD_OWVAR 3
 651: PPUSH
 652: CALL_OW 131
// end ;
 656: END
