// export testing ; export Heike , Omar , Gensher , Abdul ; export apes ; starting begin ResetFog ;
   0: CALL_OW 335
// RandomizeAll ;
   4: CALL_OW 11
// testing = false ;
   8: LD_ADDR_EXP 1
  12: PUSH
  13: LD_INT 0
  15: ST_TO_ADDR
// disable ( 1 ) ;
  16: LD_INT 1
  18: DISABLE_MARKED
// PlaceUnits ;
  19: CALL 28 0 0
// Action ;
  23: CALL 745 0 0
// end ;
  27: END
// function PlaceUnits ; var val ; begin
  28: LD_INT 0
  30: PPUSH
  31: PPUSH
// InitUc ;
  32: CALL_OW 18
// InitHc ;
  36: CALL_OW 19
// uc_side = 2 ;
  40: LD_ADDR_OWVAR 20
  44: PUSH
  45: LD_INT 2
  47: ST_TO_ADDR
// uc_nation = nation_arabian ;
  48: LD_ADDR_OWVAR 21
  52: PUSH
  53: LD_INT 2
  55: ST_TO_ADDR
// for val in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) do
  56: LD_ADDR_VAR 0 2
  60: PUSH
  61: LD_INT 22
  63: PUSH
  64: LD_INT 2
  66: PUSH
  67: EMPTY
  68: LIST
  69: LIST
  70: PUSH
  71: LD_INT 21
  73: PUSH
  74: LD_INT 3
  76: PUSH
  77: EMPTY
  78: LIST
  79: LIST
  80: PUSH
  81: EMPTY
  82: LIST
  83: LIST
  84: PPUSH
  85: CALL_OW 69
  89: PUSH
  90: FOR_IN
  91: IFFALSE 360
// begin case GetBType ( val ) of b_depot , b_warehouse :
  93: LD_VAR 0 2
  97: PPUSH
  98: CALL_OW 266
 102: PUSH
 103: LD_INT 0
 105: DOUBLE
 106: EQUAL
 107: IFTRUE 117
 109: LD_INT 1
 111: DOUBLE
 112: EQUAL
 113: IFTRUE 117
 115: GO 156
 117: POP
// begin PrepareEngineer ( false , 0 ) ;
 118: LD_INT 0
 120: PPUSH
 121: LD_INT 0
 123: PPUSH
 124: CALL_OW 382
// PlaceHumanInUnit ( CreateHuman , val ) ;
 128: CALL_OW 44
 132: PPUSH
 133: LD_VAR 0 2
 137: PPUSH
 138: CALL_OW 52
// SetBName ( val , kaaba ) ;
 142: LD_VAR 0 2
 146: PPUSH
 147: LD_STRING kaaba
 149: PPUSH
 150: CALL_OW 500
// end ; b_workshop , b_factory , b_lab , b_lab_half , b_lab_full , b_armoury , b_barracks , b_breastwork , b_bunker :
 154: GO 358
 156: LD_INT 2
 158: DOUBLE
 159: EQUAL
 160: IFTRUE 212
 162: LD_INT 3
 164: DOUBLE
 165: EQUAL
 166: IFTRUE 212
 168: LD_INT 6
 170: DOUBLE
 171: EQUAL
 172: IFTRUE 212
 174: LD_INT 7
 176: DOUBLE
 177: EQUAL
 178: IFTRUE 212
 180: LD_INT 8
 182: DOUBLE
 183: EQUAL
 184: IFTRUE 212
 186: LD_INT 4
 188: DOUBLE
 189: EQUAL
 190: IFTRUE 212
 192: LD_INT 5
 194: DOUBLE
 195: EQUAL
 196: IFTRUE 212
 198: LD_INT 31
 200: DOUBLE
 201: EQUAL
 202: IFTRUE 212
 204: LD_INT 32
 206: DOUBLE
 207: EQUAL
 208: IFTRUE 212
 210: GO 357
 212: POP
// begin case GetBType ( val ) of b_workshop , b_factory :
 213: LD_VAR 0 2
 217: PPUSH
 218: CALL_OW 266
 222: PUSH
 223: LD_INT 2
 225: DOUBLE
 226: EQUAL
 227: IFTRUE 237
 229: LD_INT 3
 231: DOUBLE
 232: EQUAL
 233: IFTRUE 237
 235: GO 265
 237: POP
// begin PrepareMechanic ( false , 0 ) ;
 238: LD_INT 0
 240: PPUSH
 241: LD_INT 0
 243: PPUSH
 244: CALL_OW 383
// SetSpecResearch ( val , 100 , false ) ;
 248: LD_VAR 0 2
 252: PPUSH
 253: LD_INT 100
 255: PPUSH
 256: LD_INT 0
 258: PPUSH
 259: CALL_OW 486
// end ; b_lab , b_lab_half , b_lab_full :
 263: GO 341
 265: LD_INT 6
 267: DOUBLE
 268: EQUAL
 269: IFTRUE 285
 271: LD_INT 7
 273: DOUBLE
 274: EQUAL
 275: IFTRUE 285
 277: LD_INT 8
 279: DOUBLE
 280: EQUAL
 281: IFTRUE 285
 283: GO 313
 285: POP
// begin PrepareScientist ( false , 0 ) ;
 286: LD_INT 0
 288: PPUSH
 289: LD_INT 0
 291: PPUSH
 292: CALL_OW 384
// SetSpecResearch ( val , 100 , false ) ;
 296: LD_VAR 0 2
 300: PPUSH
 301: LD_INT 100
 303: PPUSH
 304: LD_INT 0
 306: PPUSH
 307: CALL_OW 486
// end ; b_breastwork , b_bunker :
 311: GO 341
 313: LD_INT 31
 315: DOUBLE
 316: EQUAL
 317: IFTRUE 327
 319: LD_INT 32
 321: DOUBLE
 322: EQUAL
 323: IFTRUE 327
 325: GO 340
 327: POP
// begin PrepareSoldier ( false , 0 ) ;
 328: LD_INT 0
 330: PPUSH
 331: LD_INT 0
 333: PPUSH
 334: CALL_OW 381
// end ; end ;
 338: GO 341
 340: POP
// PlaceHumanInUnit ( CreateHuman , val ) ;
 341: CALL_OW 44
 345: PPUSH
 346: LD_VAR 0 2
 350: PPUSH
 351: CALL_OW 52
// end ; end ;
 355: GO 358
 357: POP
// end ;
 358: GO 90
 360: POP
 361: POP
// if testing then
 362: LD_EXP 1
 366: IFFALSE 398
// begin preparesoldier ( sex_female , 0 ) ;
 368: LD_INT 2
 370: PPUSH
 371: LD_INT 0
 373: PPUSH
 374: CALL_OW 381
// hc_name = Heike ;
 378: LD_ADDR_OWVAR 26
 382: PUSH
 383: LD_STRING Heike
 385: ST_TO_ADDR
// Heike = CreateHuman ;
 386: LD_ADDR_EXP 2
 390: PUSH
 391: CALL_OW 44
 395: ST_TO_ADDR
// end else
 396: GO 423
// begin Heike = CreateCharacter ( Heike_11_cont ) ;
 398: LD_ADDR_EXP 2
 402: PUSH
 403: LD_STRING Heike_11_cont
 405: PPUSH
 406: CALL_OW 34
 410: ST_TO_ADDR
// SetClass ( Heike , class_soldier ) ;
 411: LD_EXP 2
 415: PPUSH
 416: LD_INT 1
 418: PPUSH
 419: CALL_OW 336
// end ; Omar = NewCharacter ( Omar ) ;
 423: LD_ADDR_EXP 3
 427: PUSH
 428: LD_STRING Omar
 430: PPUSH
 431: CALL_OW 25
 435: ST_TO_ADDR
// PlaceUnitXY ( Omar , 138 , 63 , false ) ;
 436: LD_EXP 3
 440: PPUSH
 441: LD_INT 138
 443: PPUSH
 444: LD_INT 63
 446: PPUSH
 447: LD_INT 0
 449: PPUSH
 450: CALL_OW 48
// PlaceUnitXY ( Heike , 138 , 77 , false ) ;
 454: LD_EXP 2
 458: PPUSH
 459: LD_INT 138
 461: PPUSH
 462: LD_INT 77
 464: PPUSH
 465: LD_INT 0
 467: PPUSH
 468: CALL_OW 48
// ComTurnUnit ( Omar , Heike ) ;
 472: LD_EXP 3
 476: PPUSH
 477: LD_EXP 2
 481: PPUSH
 482: CALL_OW 119
// if testing then
 486: LD_EXP 1
 490: IFFALSE 522
// begin PrepareSoldier ( sex_male , 0 ) ;
 492: LD_INT 1
 494: PPUSH
 495: LD_INT 0
 497: PPUSH
 498: CALL_OW 381
// hc_name = Dietrich ;
 502: LD_ADDR_OWVAR 26
 506: PUSH
 507: LD_STRING Dietrich
 509: ST_TO_ADDR
// Gensher = CreateHuman ;
 510: LD_ADDR_EXP 4
 514: PUSH
 515: CALL_OW 44
 519: ST_TO_ADDR
// end else
 520: GO 547
// begin Gensher = CreateCharacter ( Gensher_11_cont ) ;
 522: LD_ADDR_EXP 4
 526: PUSH
 527: LD_STRING Gensher_11_cont
 529: PPUSH
 530: CALL_OW 34
 534: ST_TO_ADDR
// SetClass ( Gensher , class_soldier ) ;
 535: LD_EXP 4
 539: PPUSH
 540: LD_INT 1
 542: PPUSH
 543: CALL_OW 336
// end ; Abdul = NewCharacter ( Abdul ) ;
 547: LD_ADDR_EXP 5
 551: PUSH
 552: LD_STRING Abdul
 554: PPUSH
 555: CALL_OW 25
 559: ST_TO_ADDR
// InitUc ;
 560: CALL_OW 18
// InitHc ;
 564: CALL_OW 19
// uc_nation = nation_nature ;
 568: LD_ADDR_OWVAR 21
 572: PUSH
 573: LD_INT 0
 575: ST_TO_ADDR
// uc_side = 2 ;
 576: LD_ADDR_OWVAR 20
 580: PUSH
 581: LD_INT 2
 583: ST_TO_ADDR
// hc_class = class_apeman_soldier ;
 584: LD_ADDR_OWVAR 28
 588: PUSH
 589: LD_INT 15
 591: ST_TO_ADDR
// apes = [ CreateHuman , CreateHuman , CreateHuman ] ;
 592: LD_ADDR_EXP 6
 596: PUSH
 597: CALL_OW 44
 601: PUSH
 602: CALL_OW 44
 606: PUSH
 607: CALL_OW 44
 611: PUSH
 612: EMPTY
 613: LIST
 614: LIST
 615: LIST
 616: ST_TO_ADDR
// PlaceUnitXY ( apes [ 1 ] , 125 , 63 , false ) ;
 617: LD_EXP 6
 621: PUSH
 622: LD_INT 1
 624: ARRAY
 625: PPUSH
 626: LD_INT 125
 628: PPUSH
 629: LD_INT 63
 631: PPUSH
 632: LD_INT 0
 634: PPUSH
 635: CALL_OW 48
// ComTurnXY ( apes [ 1 ] , 126 , 64 ) ;
 639: LD_EXP 6
 643: PUSH
 644: LD_INT 1
 646: ARRAY
 647: PPUSH
 648: LD_INT 126
 650: PPUSH
 651: LD_INT 64
 653: PPUSH
 654: CALL_OW 118
// PlaceUnitXY ( apes [ 2 ] , 127 , 64 , false ) ;
 658: LD_EXP 6
 662: PUSH
 663: LD_INT 2
 665: ARRAY
 666: PPUSH
 667: LD_INT 127
 669: PPUSH
 670: LD_INT 64
 672: PPUSH
 673: LD_INT 0
 675: PPUSH
 676: CALL_OW 48
// ComTurnXY ( apes [ 2 ] , 126 , 64 ) ;
 680: LD_EXP 6
 684: PUSH
 685: LD_INT 2
 687: ARRAY
 688: PPUSH
 689: LD_INT 126
 691: PPUSH
 692: LD_INT 64
 694: PPUSH
 695: CALL_OW 118
// PlaceUnitXY ( apes [ 3 ] , 126 , 65 , false ) ;
 699: LD_EXP 6
 703: PUSH
 704: LD_INT 3
 706: ARRAY
 707: PPUSH
 708: LD_INT 126
 710: PPUSH
 711: LD_INT 65
 713: PPUSH
 714: LD_INT 0
 716: PPUSH
 717: CALL_OW 48
// ComTurnXY ( apes [ 3 ] , 126 , 64 ) ;
 721: LD_EXP 6
 725: PUSH
 726: LD_INT 3
 728: ARRAY
 729: PPUSH
 730: LD_INT 126
 732: PPUSH
 733: LD_INT 64
 735: PPUSH
 736: CALL_OW 118
// end ;
 740: LD_VAR 0 1
 744: RET
// function Action ; var Sonya , Oswald , Ralph , Kowalski , Evelyn , Olaf , Dwayne , Aviradze , Swansson , Khattam , Makise , others_list , Gonzo ; var units_list , un , un_list , name_list , temp_list , num , i , sel_list ; begin
 745: LD_INT 0
 747: PPUSH
 748: PPUSH
 749: PPUSH
 750: PPUSH
 751: PPUSH
 752: PPUSH
 753: PPUSH
 754: PPUSH
 755: PPUSH
 756: PPUSH
 757: PPUSH
 758: PPUSH
 759: PPUSH
 760: PPUSH
 761: PPUSH
 762: PPUSH
 763: PPUSH
 764: PPUSH
 765: PPUSH
 766: PPUSH
 767: PPUSH
 768: PPUSH
// InGameOn ;
 769: CALL_OW 8
// ExclusiveOff ;
 773: CALL_OW 5
// ComMoveUnit ( Heike , Omar ) ;
 777: LD_EXP 2
 781: PPUSH
 782: LD_EXP 3
 786: PPUSH
 787: CALL_OW 112
// wait ( 2 ) ;
 791: LD_INT 2
 793: PPUSH
 794: CALL_OW 67
// CenterNowOnUnits ( Heike ) ;
 798: LD_EXP 2
 802: PPUSH
 803: CALL_OW 87
// ClearAllFogForSide ( 2 ) ;
 807: LD_INT 2
 809: PPUSH
 810: CALL_OW 520
// i = 0 ;
 814: LD_ADDR_VAR 0 21
 818: PUSH
 819: LD_INT 0
 821: ST_TO_ADDR
// repeat i = i + 1 ;
 822: LD_ADDR_VAR 0 21
 826: PUSH
 827: LD_VAR 0 21
 831: PUSH
 832: LD_INT 1
 834: PLUS
 835: ST_TO_ADDR
// ComMoveXY ( Heike , 138 , 65 ) ;
 836: LD_EXP 2
 840: PPUSH
 841: LD_INT 138
 843: PPUSH
 844: LD_INT 65
 846: PPUSH
 847: CALL_OW 111
// AddComTurnUnit ( Heike , Omar ) ;
 851: LD_EXP 2
 855: PPUSH
 856: LD_EXP 3
 860: PPUSH
 861: CALL_OW 179
// if ( i mod 3 ) = 0 then
 865: LD_VAR 0 21
 869: PUSH
 870: LD_INT 3
 872: MOD
 873: PUSH
 874: LD_INT 0
 876: EQUAL
 877: IFFALSE 888
// CenterOnUnits ( Heike ) ;
 879: LD_EXP 2
 883: PPUSH
 884: CALL_OW 85
// wait ( 0 0$1 ) ;
 888: LD_INT 35
 890: PPUSH
 891: CALL_OW 67
// until IsAt ( Heike , 138 , 65 ) or i > 10 ;
 895: LD_EXP 2
 899: PPUSH
 900: LD_INT 138
 902: PPUSH
 903: LD_INT 65
 905: PPUSH
 906: CALL_OW 307
 910: PUSH
 911: LD_VAR 0 21
 915: PUSH
 916: LD_INT 10
 918: GREATER
 919: OR
 920: IFFALSE 822
// CenterOnUnits ( [ Heike , Omar ] ) ;
 922: LD_EXP 2
 926: PUSH
 927: LD_EXP 3
 931: PUSH
 932: EMPTY
 933: LIST
 934: LIST
 935: PPUSH
 936: CALL_OW 85
// Say ( Omar , D1-Om-1 ) ;
 940: LD_EXP 3
 944: PPUSH
 945: LD_STRING D1-Om-1
 947: PPUSH
 948: CALL_OW 88
// Say ( Heike , D1-H-1 ) ;
 952: LD_EXP 2
 956: PPUSH
 957: LD_STRING D1-H-1
 959: PPUSH
 960: CALL_OW 88
// Say ( Omar , D1-Om-2 ) ;
 964: LD_EXP 3
 968: PPUSH
 969: LD_STRING D1-Om-2
 971: PPUSH
 972: CALL_OW 88
// Say ( Heike , D1-H-2 ) ;
 976: LD_EXP 2
 980: PPUSH
 981: LD_STRING D1-H-2
 983: PPUSH
 984: CALL_OW 88
// Say ( Omar , D1-Om-3 ) ;
 988: LD_EXP 3
 992: PPUSH
 993: LD_STRING D1-Om-3
 995: PPUSH
 996: CALL_OW 88
// Say ( Heike , D1-H-3 ) ;
1000: LD_EXP 2
1004: PPUSH
1005: LD_STRING D1-H-3
1007: PPUSH
1008: CALL_OW 88
// Say ( Omar , D1-Om-4 ) ;
1012: LD_EXP 3
1016: PPUSH
1017: LD_STRING D1-Om-4
1019: PPUSH
1020: CALL_OW 88
// Say ( Heike , D1-H-4 ) ;
1024: LD_EXP 2
1028: PPUSH
1029: LD_STRING D1-H-4
1031: PPUSH
1032: CALL_OW 88
// i = 0 ;
1036: LD_ADDR_VAR 0 21
1040: PUSH
1041: LD_INT 0
1043: ST_TO_ADDR
// repeat ComEnterUnit ( [ Heike , Omar ] , ar_depot ) ;
1044: LD_EXP 2
1048: PUSH
1049: LD_EXP 3
1053: PUSH
1054: EMPTY
1055: LIST
1056: LIST
1057: PPUSH
1058: LD_INT 1
1060: PPUSH
1061: CALL_OW 120
// i = i + 1 ;
1065: LD_ADDR_VAR 0 21
1069: PUSH
1070: LD_VAR 0 21
1074: PUSH
1075: LD_INT 1
1077: PLUS
1078: ST_TO_ADDR
// wait ( 0 0$0.5 ) ;
1079: LD_INT 18
1081: PPUSH
1082: CALL_OW 67
// until ( IsInUnit ( Heike ) = ar_depot and IsInUnit ( Omar ) = ar_depot ) or i > 20 ;
1086: LD_EXP 2
1090: PPUSH
1091: CALL_OW 310
1095: PUSH
1096: LD_INT 1
1098: EQUAL
1099: PUSH
1100: LD_EXP 3
1104: PPUSH
1105: CALL_OW 310
1109: PUSH
1110: LD_INT 1
1112: EQUAL
1113: AND
1114: PUSH
1115: LD_VAR 0 21
1119: PUSH
1120: LD_INT 20
1122: GREATER
1123: OR
1124: IFFALSE 1044
// enable ( 1 ) ;
1126: LD_INT 1
1128: ENABLE_MARKED
// Say ( Abdul , D1-Ab-1 ) ;
1129: LD_EXP 5
1133: PPUSH
1134: LD_STRING D1-Ab-1
1136: PPUSH
1137: CALL_OW 88
// Say ( Abdul , D1-Ab-2 ) ;
1141: LD_EXP 5
1145: PPUSH
1146: LD_STRING D1-Ab-2
1148: PPUSH
1149: CALL_OW 88
// Say ( Abdul , D1-Ab-3 ) ;
1153: LD_EXP 5
1157: PPUSH
1158: LD_STRING D1-Ab-3
1160: PPUSH
1161: CALL_OW 88
// Say ( Heike , D1-H-5 ) ;
1165: LD_EXP 2
1169: PPUSH
1170: LD_STRING D1-H-5
1172: PPUSH
1173: CALL_OW 88
// Say ( Heike , D1-H-6 ) ;
1177: LD_EXP 2
1181: PPUSH
1182: LD_STRING D1-H-6
1184: PPUSH
1185: CALL_OW 88
// Say ( Omar , D1-Om-5 ) ;
1189: LD_EXP 3
1193: PPUSH
1194: LD_STRING D1-Om-5
1196: PPUSH
1197: CALL_OW 88
// Say ( Abdul , D1-Ab-4 ) ;
1201: LD_EXP 5
1205: PPUSH
1206: LD_STRING D1-Ab-4
1208: PPUSH
1209: CALL_OW 88
// wait ( 0 0$1 ) ;
1213: LD_INT 35
1215: PPUSH
1216: CALL_OW 67
// Say ( Heike , D1-H-7 ) ;
1220: LD_EXP 2
1224: PPUSH
1225: LD_STRING D1-H-7
1227: PPUSH
1228: CALL_OW 88
// Say ( Gensher , D1-Ge-1 ) ;
1232: LD_EXP 4
1236: PPUSH
1237: LD_STRING D1-Ge-1
1239: PPUSH
1240: CALL_OW 88
// Say ( Abdul , D1-Ab-5 ) ;
1244: LD_EXP 5
1248: PPUSH
1249: LD_STRING D1-Ab-5
1251: PPUSH
1252: CALL_OW 88
// wait ( 0 0$0.2 ) ;
1256: LD_INT 7
1258: PPUSH
1259: CALL_OW 67
// uc_nation = nation_arabian ;
1263: LD_ADDR_OWVAR 21
1267: PUSH
1268: LD_INT 2
1270: ST_TO_ADDR
// uc_side = 2 ;
1271: LD_ADDR_OWVAR 20
1275: PUSH
1276: LD_INT 2
1278: ST_TO_ADDR
// Sonya = LoadPlayerChar ( Sonya ) ;
1279: LD_ADDR_VAR 0 2
1283: PUSH
1284: LD_STRING Sonya
1286: PPUSH
1287: CALL 2299 0 1
1291: ST_TO_ADDR
// Oswald = LoadPlayerChar ( Oswald ) ;
1292: LD_ADDR_VAR 0 3
1296: PUSH
1297: LD_STRING Oswald
1299: PPUSH
1300: CALL 2299 0 1
1304: ST_TO_ADDR
// Ralph = LoadPlayerChar ( Ralph ) ;
1305: LD_ADDR_VAR 0 4
1309: PUSH
1310: LD_STRING Ralph
1312: PPUSH
1313: CALL 2299 0 1
1317: ST_TO_ADDR
// Kowalski = LoadPlayerChar ( Kowalski ) ;
1318: LD_ADDR_VAR 0 5
1322: PUSH
1323: LD_STRING Kowalski
1325: PPUSH
1326: CALL 2299 0 1
1330: ST_TO_ADDR
// Evelyn = LoadPlayerChar ( Evelyn ) ;
1331: LD_ADDR_VAR 0 6
1335: PUSH
1336: LD_STRING Evelyn
1338: PPUSH
1339: CALL 2299 0 1
1343: ST_TO_ADDR
// Olaf = LoadPlayerChar ( Olaf ) ;
1344: LD_ADDR_VAR 0 7
1348: PUSH
1349: LD_STRING Olaf
1351: PPUSH
1352: CALL 2299 0 1
1356: ST_TO_ADDR
// Dwayne = LoadPlayerChar ( Dwayne ) ;
1357: LD_ADDR_VAR 0 8
1361: PUSH
1362: LD_STRING Dwayne
1364: PPUSH
1365: CALL 2299 0 1
1369: ST_TO_ADDR
// Aviradze = LoadPlayerChar ( Aviradze ) ;
1370: LD_ADDR_VAR 0 9
1374: PUSH
1375: LD_STRING Aviradze
1377: PPUSH
1378: CALL 2299 0 1
1382: ST_TO_ADDR
// Swansson = LoadPlayerChar ( Swansson ) ;
1383: LD_ADDR_VAR 0 10
1387: PUSH
1388: LD_STRING Swansson
1390: PPUSH
1391: CALL 2299 0 1
1395: ST_TO_ADDR
// Gonzo = LoadPlayerChar ( Gonzo ) ;
1396: LD_ADDR_VAR 0 14
1400: PUSH
1401: LD_STRING Gonzo
1403: PPUSH
1404: CALL 2299 0 1
1408: ST_TO_ADDR
// Khattam = LoadPlayerChar ( Khattam ) ;
1409: LD_ADDR_VAR 0 11
1413: PUSH
1414: LD_STRING Khattam
1416: PPUSH
1417: CALL 2299 0 1
1421: ST_TO_ADDR
// Makise = NewCharacter ( Makise ) ;
1422: LD_ADDR_VAR 0 12
1426: PUSH
1427: LD_STRING Makise
1429: PPUSH
1430: CALL_OW 25
1434: ST_TO_ADDR
// if LoadVariable ( Oswald_is_substitute_11_generic , false ) then
1435: LD_STRING Oswald_is_substitute_11_generic
1437: PPUSH
1438: LD_INT 0
1440: PPUSH
1441: CALL_OW 30
1445: IFFALSE 1455
// Oswald = 0 ;
1447: LD_ADDR_VAR 0 3
1451: PUSH
1452: LD_INT 0
1454: ST_TO_ADDR
// if not LoadVariable ( Khattam_accepted_11_cont , true ) then
1455: LD_STRING Khattam_accepted_11_cont
1457: PPUSH
1458: LD_INT 1
1460: PPUSH
1461: CALL_OW 30
1465: NOT
1466: IFFALSE 1476
// Khattam = 0 ;
1468: LD_ADDR_VAR 0 11
1472: PUSH
1473: LD_INT 0
1475: ST_TO_ADDR
// others_list = ( CreateCharacterSet ( Others_11_cont ) ^ CreateCharacterSet ( Others_11_not_sel ) ) diff 0 ;
1476: LD_ADDR_VAR 0 13
1480: PUSH
1481: LD_STRING Others_11_cont
1483: PPUSH
1484: CALL_OW 31
1488: PUSH
1489: LD_STRING Others_11_not_sel
1491: PPUSH
1492: CALL_OW 31
1496: ADD
1497: PUSH
1498: LD_INT 0
1500: DIFF
1501: ST_TO_ADDR
// units_list = ( [ Sonya , Oswald , Ralph , Kowalski , Evelyn , Olaf , Dwayne , Swansson , Khattam ] diff 0 ) ^ others_list ;
1502: LD_ADDR_VAR 0 15
1506: PUSH
1507: LD_VAR 0 2
1511: PUSH
1512: LD_VAR 0 3
1516: PUSH
1517: LD_VAR 0 4
1521: PUSH
1522: LD_VAR 0 5
1526: PUSH
1527: LD_VAR 0 6
1531: PUSH
1532: LD_VAR 0 7
1536: PUSH
1537: LD_VAR 0 8
1541: PUSH
1542: LD_VAR 0 10
1546: PUSH
1547: LD_VAR 0 11
1551: PUSH
1552: EMPTY
1553: LIST
1554: LIST
1555: LIST
1556: LIST
1557: LIST
1558: LIST
1559: LIST
1560: LIST
1561: LIST
1562: PUSH
1563: LD_INT 0
1565: DIFF
1566: PUSH
1567: LD_VAR 0 13
1571: ADD
1572: ST_TO_ADDR
// InitUc ;
1573: CALL_OW 18
// InitHc ;
1577: CALL_OW 19
// uc_side = 2 ;
1581: LD_ADDR_OWVAR 20
1585: PUSH
1586: LD_INT 2
1588: ST_TO_ADDR
// uc_nation = nation_arabian ;
1589: LD_ADDR_OWVAR 21
1593: PUSH
1594: LD_INT 2
1596: ST_TO_ADDR
// num = 7 + Rand ( 0 , 2 ) ;
1597: LD_ADDR_VAR 0 20
1601: PUSH
1602: LD_INT 7
1604: PUSH
1605: LD_INT 0
1607: PPUSH
1608: LD_INT 2
1610: PPUSH
1611: CALL_OW 12
1615: PLUS
1616: ST_TO_ADDR
// if 14 - units_list > 0 then
1617: LD_INT 14
1619: PUSH
1620: LD_VAR 0 15
1624: MINUS
1625: PUSH
1626: LD_INT 0
1628: GREATER
1629: IFFALSE 1651
// num = num + ( 14 - units_list ) ;
1631: LD_ADDR_VAR 0 20
1635: PUSH
1636: LD_VAR 0 20
1640: PUSH
1641: LD_INT 14
1643: PUSH
1644: LD_VAR 0 15
1648: MINUS
1649: PLUS
1650: ST_TO_ADDR
// for i = 1 to num do
1651: LD_ADDR_VAR 0 21
1655: PUSH
1656: DOUBLE
1657: LD_INT 1
1659: DEC
1660: ST_TO_ADDR
1661: LD_VAR 0 20
1665: PUSH
1666: FOR_TO
1667: IFFALSE 1761
// begin PrepareHuman ( false , [ class_soldier , class_engineer , class_mechanic , class_scientistic ] [ Rand ( 1 , 4 ) ] , Rand ( 4 , 5 ) ) ;
1669: LD_INT 0
1671: PPUSH
1672: LD_INT 1
1674: PUSH
1675: LD_INT 2
1677: PUSH
1678: LD_INT 3
1680: PUSH
1681: LD_INT 4
1683: PUSH
1684: EMPTY
1685: LIST
1686: LIST
1687: LIST
1688: LIST
1689: PUSH
1690: LD_INT 1
1692: PPUSH
1693: LD_INT 4
1695: PPUSH
1696: CALL_OW 12
1700: ARRAY
1701: PPUSH
1702: LD_INT 4
1704: PPUSH
1705: LD_INT 5
1707: PPUSH
1708: CALL_OW 12
1712: PPUSH
1713: CALL_OW 380
// un = CreateHuman ;
1717: LD_ADDR_VAR 0 16
1721: PUSH
1722: CALL_OW 44
1726: ST_TO_ADDR
// units_list = units_list ^ un ;
1727: LD_ADDR_VAR 0 15
1731: PUSH
1732: LD_VAR 0 15
1736: PUSH
1737: LD_VAR 0 16
1741: ADD
1742: ST_TO_ADDR
// others_list = others_list ^ un ;
1743: LD_ADDR_VAR 0 13
1747: PUSH
1748: LD_VAR 0 13
1752: PUSH
1753: LD_VAR 0 16
1757: ADD
1758: ST_TO_ADDR
// end ;
1759: GO 1666
1761: POP
1762: POP
// num = [ 5 , 4 , 3 ] [ difficulty ] ;
1763: LD_ADDR_VAR 0 20
1767: PUSH
1768: LD_INT 5
1770: PUSH
1771: LD_INT 4
1773: PUSH
1774: LD_INT 3
1776: PUSH
1777: EMPTY
1778: LIST
1779: LIST
1780: LIST
1781: PUSH
1782: LD_OWVAR 67
1786: ARRAY
1787: ST_TO_ADDR
// sel_list = CharacterSelection (  , num , num , [ sel_change_class , sel_hired , sel_not_changeable , Makise ] ^ ( [ Aviradze ] diff 0 ) ^ [ Heike , sel_not_hired , sel_changeable ] ^ units_list , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , class_scientistic , class_mortar ] ) ;
1788: LD_ADDR_VAR 0 22
1792: PUSH
1793: LD_STRING 
1795: PPUSH
1796: LD_VAR 0 20
1800: PPUSH
1801: LD_VAR 0 20
1805: PPUSH
1806: LD_INT -5
1808: PUSH
1809: LD_INT -1
1811: PUSH
1812: LD_INT -4
1814: PUSH
1815: LD_VAR 0 12
1819: PUSH
1820: EMPTY
1821: LIST
1822: LIST
1823: LIST
1824: LIST
1825: PUSH
1826: LD_VAR 0 9
1830: PUSH
1831: EMPTY
1832: LIST
1833: PUSH
1834: LD_INT 0
1836: DIFF
1837: ADD
1838: PUSH
1839: LD_EXP 2
1843: PUSH
1844: LD_INT -2
1846: PUSH
1847: LD_INT -3
1849: PUSH
1850: EMPTY
1851: LIST
1852: LIST
1853: LIST
1854: ADD
1855: PUSH
1856: LD_VAR 0 15
1860: ADD
1861: PPUSH
1862: LD_INT 1
1864: PUSH
1865: LD_INT 2
1867: PUSH
1868: LD_INT 1
1870: PUSH
1871: EMPTY
1872: LIST
1873: LIST
1874: PUSH
1875: LD_INT 3
1877: PUSH
1878: LD_INT 4
1880: PUSH
1881: LD_INT 8
1883: PUSH
1884: EMPTY
1885: LIST
1886: LIST
1887: LIST
1888: LIST
1889: LIST
1890: PPUSH
1891: CALL_OW 42
1895: ST_TO_ADDR
// SaveCharacters ( Heike , Heike_12_sel ) ;
1896: LD_EXP 2
1900: PPUSH
1901: LD_STRING Heike_12_sel
1903: PPUSH
1904: CALL_OW 38
// SaveCharacters ( Makise , Makise_12_sel ) ;
1908: LD_VAR 0 12
1912: PPUSH
1913: LD_STRING Makise_12_sel
1915: PPUSH
1916: CALL_OW 38
// if Aviradze > 0 then
1920: LD_VAR 0 9
1924: PUSH
1925: LD_INT 0
1927: GREATER
1928: IFFALSE 1942
// SaveCharacters ( Aviradze , Aviradze_12_sel ) ;
1930: LD_VAR 0 9
1934: PPUSH
1935: LD_STRING Aviradze_12_sel
1937: PPUSH
1938: CALL_OW 38
// un_list = [ Sonya , Oswald , Ralph , Kowalski , Evelyn , Olaf , Dwayne , Swansson , Khattam ] ;
1942: LD_ADDR_VAR 0 17
1946: PUSH
1947: LD_VAR 0 2
1951: PUSH
1952: LD_VAR 0 3
1956: PUSH
1957: LD_VAR 0 4
1961: PUSH
1962: LD_VAR 0 5
1966: PUSH
1967: LD_VAR 0 6
1971: PUSH
1972: LD_VAR 0 7
1976: PUSH
1977: LD_VAR 0 8
1981: PUSH
1982: LD_VAR 0 10
1986: PUSH
1987: LD_VAR 0 11
1991: PUSH
1992: EMPTY
1993: LIST
1994: LIST
1995: LIST
1996: LIST
1997: LIST
1998: LIST
1999: LIST
2000: LIST
2001: LIST
2002: ST_TO_ADDR
// name_list = [ Sonya , Oswald , Ralph , Kowalski , Evelyn , Olaf , Dwayne , Swansson , Khattam ] ;
2003: LD_ADDR_VAR 0 18
2007: PUSH
2008: LD_STRING Sonya
2010: PUSH
2011: LD_STRING Oswald
2013: PUSH
2014: LD_STRING Ralph
2016: PUSH
2017: LD_STRING Kowalski
2019: PUSH
2020: LD_STRING Evelyn
2022: PUSH
2023: LD_STRING Olaf
2025: PUSH
2026: LD_STRING Dwayne
2028: PUSH
2029: LD_STRING Swansson
2031: PUSH
2032: LD_STRING Khattam
2034: PUSH
2035: EMPTY
2036: LIST
2037: LIST
2038: LIST
2039: LIST
2040: LIST
2041: LIST
2042: LIST
2043: LIST
2044: LIST
2045: ST_TO_ADDR
// for un = 1 to un_list do
2046: LD_ADDR_VAR 0 16
2050: PUSH
2051: DOUBLE
2052: LD_INT 1
2054: DEC
2055: ST_TO_ADDR
2056: LD_VAR 0 17
2060: PUSH
2061: FOR_TO
2062: IFFALSE 2180
// if un_list [ un ] in sel_list then
2064: LD_VAR 0 17
2068: PUSH
2069: LD_VAR 0 16
2073: ARRAY
2074: PUSH
2075: LD_VAR 0 22
2079: IN
2080: IFFALSE 2114
// SaveCharacters ( un_list [ un ] , name_list [ un ] & _12_sel ) else
2082: LD_VAR 0 17
2086: PUSH
2087: LD_VAR 0 16
2091: ARRAY
2092: PPUSH
2093: LD_VAR 0 18
2097: PUSH
2098: LD_VAR 0 16
2102: ARRAY
2103: PUSH
2104: LD_STRING _12_sel
2106: STR
2107: PPUSH
2108: CALL_OW 38
2112: GO 2178
// if un_list [ un ] > 0 then
2114: LD_VAR 0 17
2118: PUSH
2119: LD_VAR 0 16
2123: ARRAY
2124: PUSH
2125: LD_INT 0
2127: GREATER
2128: IFFALSE 2178
// begin SetLastMission ( un_list [ un ] , 11 ) ;
2130: LD_VAR 0 17
2134: PUSH
2135: LD_VAR 0 16
2139: ARRAY
2140: PPUSH
2141: LD_INT 11
2143: PPUSH
2144: CALL_OW 245
// SaveCharacters ( un_list [ un ] , name_list [ un ] & _12_not_sel ) ;
2148: LD_VAR 0 17
2152: PUSH
2153: LD_VAR 0 16
2157: ARRAY
2158: PPUSH
2159: LD_VAR 0 18
2163: PUSH
2164: LD_VAR 0 16
2168: ARRAY
2169: PUSH
2170: LD_STRING _12_not_sel
2172: STR
2173: PPUSH
2174: CALL_OW 38
// end ;
2178: GO 2061
2180: POP
2181: POP
// if Gonzo > 0 then
2182: LD_VAR 0 14
2186: PUSH
2187: LD_INT 0
2189: GREATER
2190: IFFALSE 2204
// SaveCharacters ( Gonzo , Gonzo_12_sel ) ;
2192: LD_VAR 0 14
2196: PPUSH
2197: LD_STRING Gonzo_12_sel
2199: PPUSH
2200: CALL_OW 38
// SaveCharacters ( sel_list diff ( un_list ^ Heike ^ Aviradze ^ Makise ) , Others_12_sel ) ;
2204: LD_VAR 0 22
2208: PUSH
2209: LD_VAR 0 17
2213: PUSH
2214: LD_EXP 2
2218: ADD
2219: PUSH
2220: LD_VAR 0 9
2224: ADD
2225: PUSH
2226: LD_VAR 0 12
2230: ADD
2231: DIFF
2232: PPUSH
2233: LD_STRING Others_12_sel
2235: PPUSH
2236: CALL_OW 38
// temp_list = others_list diff sel_list ;
2240: LD_ADDR_VAR 0 19
2244: PUSH
2245: LD_VAR 0 13
2249: PUSH
2250: LD_VAR 0 22
2254: DIFF
2255: ST_TO_ADDR
// SetLastMission ( temp_list , 11 ) ;
2256: LD_VAR 0 19
2260: PPUSH
2261: LD_INT 11
2263: PPUSH
2264: CALL_OW 245
// SaveCharacters ( temp_list , Others_12_not_sel ) ;
2268: LD_VAR 0 19
2272: PPUSH
2273: LD_STRING Others_12_not_sel
2275: PPUSH
2276: CALL_OW 38
// ChangeMap ( %_cont , %_cont ) ;
2280: LD_STRING %_cont
2282: PPUSH
2283: LD_STRING %_cont
2285: PPUSH
2286: CALL_OW 340
// InGameOff ;
2290: CALL_OW 9
// end ;
2294: LD_VAR 0 1
2298: RET
// function LoadPlayerChar ( c_name ) ; begin
2299: LD_INT 0
2301: PPUSH
// if TestCharacters ( c_name & _11_cont ) then
2302: LD_VAR 0 1
2306: PUSH
2307: LD_STRING _11_cont
2309: STR
2310: PPUSH
2311: CALL_OW 28
2315: IFFALSE 2338
// result = CreateCharacter ( c_name & _11_cont ) else
2317: LD_ADDR_VAR 0 2
2321: PUSH
2322: LD_VAR 0 1
2326: PUSH
2327: LD_STRING _11_cont
2329: STR
2330: PPUSH
2331: CALL_OW 34
2335: ST_TO_ADDR
2336: GO 2382
// if TestCharacters ( c_name & _11_not_sel ) then
2338: LD_VAR 0 1
2342: PUSH
2343: LD_STRING _11_not_sel
2345: STR
2346: PPUSH
2347: CALL_OW 28
2351: IFFALSE 2374
// result = CreateCharacter ( c_name & _11_not_sel ) else
2353: LD_ADDR_VAR 0 2
2357: PUSH
2358: LD_VAR 0 1
2362: PUSH
2363: LD_STRING _11_not_sel
2365: STR
2366: PPUSH
2367: CALL_OW 34
2371: ST_TO_ADDR
2372: GO 2382
// result = 0 ;
2374: LD_ADDR_VAR 0 2
2378: PUSH
2379: LD_INT 0
2381: ST_TO_ADDR
// end ;
2382: LD_VAR 0 2
2386: RET
// every 0 0$1 marked 1 do var kami ;
2387: GO 2389
2389: DISABLE
2390: LD_INT 0
2392: PPUSH
// begin InitUc ;
2393: CALL_OW 18
// InitHc ;
2397: CALL_OW 19
// uc_nation = nation_nature ;
2401: LD_ADDR_OWVAR 21
2405: PUSH
2406: LD_INT 0
2408: ST_TO_ADDR
// uc_side = 2 ;
2409: LD_ADDR_OWVAR 20
2413: PUSH
2414: LD_INT 2
2416: ST_TO_ADDR
// hc_class = class_apeman_kamikaze ;
2417: LD_ADDR_OWVAR 28
2421: PUSH
2422: LD_INT 17
2424: ST_TO_ADDR
// kami = CreateHuman ;
2425: LD_ADDR_VAR 0 1
2429: PUSH
2430: CALL_OW 44
2434: ST_TO_ADDR
// PlaceHumanInUnit ( kami , arbarr ) ;
2435: LD_VAR 0 1
2439: PPUSH
2440: LD_INT 2
2442: PPUSH
2443: CALL_OW 52
// ComExitBuilding ( kami ) ;
2447: LD_VAR 0 1
2451: PPUSH
2452: CALL_OW 122
// wait ( 0 0$0.5 ) ;
2456: LD_INT 18
2458: PPUSH
2459: CALL_OW 67
// repeat ComMoveXY ( kami , 126 , 64 ) ;
2463: LD_VAR 0 1
2467: PPUSH
2468: LD_INT 126
2470: PPUSH
2471: LD_INT 64
2473: PPUSH
2474: CALL_OW 111
// AddComTurnXY ( kami , 119 , 55 ) ;
2478: LD_VAR 0 1
2482: PPUSH
2483: LD_INT 119
2485: PPUSH
2486: LD_INT 55
2488: PPUSH
2489: CALL_OW 178
// wait ( 0 0$0.5 ) ;
2493: LD_INT 18
2495: PPUSH
2496: CALL_OW 67
// until GetDistUnitXY ( kami , 126 , 64 ) <= 7 ;
2500: LD_VAR 0 1
2504: PPUSH
2505: LD_INT 126
2507: PPUSH
2508: LD_INT 64
2510: PPUSH
2511: CALL_OW 297
2515: PUSH
2516: LD_INT 7
2518: LESSEQUAL
2519: IFFALSE 2463
// ComTurnUnit ( apes , kami ) ;
2521: LD_EXP 6
2525: PPUSH
2526: LD_VAR 0 1
2530: PPUSH
2531: CALL_OW 119
// wait ( 0 0$1.5 ) ;
2535: LD_INT 52
2537: PPUSH
2538: CALL_OW 67
// ComMoveXY ( apes , 98 , 14 ) ;
2542: LD_EXP 6
2546: PPUSH
2547: LD_INT 98
2549: PPUSH
2550: LD_INT 14
2552: PPUSH
2553: CALL_OW 111
// wait ( 0 0$15 ) ;
2557: LD_INT 525
2559: PPUSH
2560: CALL_OW 67
// ComEnterUnit ( kami , arbarr ) ;
2564: LD_VAR 0 1
2568: PPUSH
2569: LD_INT 2
2571: PPUSH
2572: CALL_OW 120
// end ;
2576: PPOPN 1
2578: END
