// export Antoine , Bojan , Ende , Gom , Mahmoud , Tarpan ; export TeamAntoine , QudsStay , QudsGo ; export AntoineDepot ; var tmp ; export function PrepareOurs ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// uc_side = 2 ;
   4: LD_ADDR_OWVAR 20
   8: PUSH
   9: LD_INT 2
  11: ST_TO_ADDR
// uc_nation = 2 ;
  12: LD_ADDR_OWVAR 21
  16: PUSH
  17: LD_INT 2
  19: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 1 , 0 ) ;
  20: LD_ADDR_EXP 1
  24: PUSH
  25: LD_STRING Antoine
  27: PPUSH
  28: LD_INT 1
  30: PPUSH
  31: LD_INT 0
  33: PPUSH
  34: CALL_OW 527
  38: ST_TO_ADDR
// PlaceUnitXY ( Antoine , 47 , 33 , false ) ;
  39: LD_EXP 1
  43: PPUSH
  44: LD_INT 47
  46: PPUSH
  47: LD_INT 33
  49: PPUSH
  50: LD_INT 0
  52: PPUSH
  53: CALL_OW 48
// InitHc ;
  57: CALL_OW 19
// uc_side = 5 ;
  61: LD_ADDR_OWVAR 20
  65: PUSH
  66: LD_INT 5
  68: ST_TO_ADDR
// Mahmoud = NewCharacter ( Mahmoud ) ;
  69: LD_ADDR_EXP 5
  73: PUSH
  74: LD_STRING Mahmoud
  76: PPUSH
  77: CALL_OW 25
  81: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
  82: LD_ADDR_EXP 2
  86: PUSH
  87: LD_STRING Bojan
  89: PPUSH
  90: CALL_OW 25
  94: ST_TO_ADDR
// PlaceHumanInUnit ( Bojan , qd ) ;
  95: LD_EXP 2
  99: PPUSH
 100: LD_INT 3
 102: PPUSH
 103: CALL_OW 52
// Gom = LoadCharacter ( Gom , 4 , 0 ) ;
 107: LD_ADDR_EXP 4
 111: PUSH
 112: LD_STRING Gom
 114: PPUSH
 115: LD_INT 4
 117: PPUSH
 118: LD_INT 0
 120: PPUSH
 121: CALL_OW 527
 125: ST_TO_ADDR
// PlaceHumanInUnit ( Gom , ql ) ;
 126: LD_EXP 4
 130: PPUSH
 131: LD_INT 5
 133: PPUSH
 134: CALL_OW 52
// tmp = LoadCharacter ( TeamTarpan , 0 , 0 ) ^ LoadCharacter ( ArOthers , 0 , 0 ) ;
 138: LD_ADDR_LOC 1
 142: PUSH
 143: LD_STRING TeamTarpan
 145: PPUSH
 146: LD_INT 0
 148: PPUSH
 149: LD_INT 0
 151: PPUSH
 152: CALL_OW 527
 156: PUSH
 157: LD_STRING ArOthers
 159: PPUSH
 160: LD_INT 0
 162: PPUSH
 163: LD_INT 0
 165: PPUSH
 166: CALL_OW 527
 170: ADD
 171: ST_TO_ADDR
// if tmp < 9 then
 172: LD_LOC 1
 176: PUSH
 177: LD_INT 9
 179: LESS
 180: IFFALSE 237
// repeat begin PrepareHuman ( false , Rand ( 1 , 4 ) , Rand ( 2 , 3 ) ) ;
 182: LD_INT 0
 184: PPUSH
 185: LD_INT 1
 187: PPUSH
 188: LD_INT 4
 190: PPUSH
 191: CALL_OW 12
 195: PPUSH
 196: LD_INT 2
 198: PPUSH
 199: LD_INT 3
 201: PPUSH
 202: CALL_OW 12
 206: PPUSH
 207: CALL_OW 380
// tmp = tmp ^ CreateHuman ;
 211: LD_ADDR_LOC 1
 215: PUSH
 216: LD_LOC 1
 220: PUSH
 221: CALL_OW 44
 225: ADD
 226: ST_TO_ADDR
// end until tmp = 9 ;
 227: LD_LOC 1
 231: PUSH
 232: LD_INT 9
 234: EQUAL
 235: IFFALSE 182
// if CheckCharacterSet ( Ende ) then
 237: LD_STRING Ende
 239: PPUSH
 240: CALL_OW 29
 244: IFFALSE 283
// begin Ende = LoadCharacter ( Ende , 1 , 0 ) ;
 246: LD_ADDR_EXP 3
 250: PUSH
 251: LD_STRING Ende
 253: PPUSH
 254: LD_INT 1
 256: PPUSH
 257: LD_INT 0
 259: PPUSH
 260: CALL_OW 527
 264: ST_TO_ADDR
// PlaceUnitXY ( Ende , 39 , 29 , false ) ;
 265: LD_EXP 3
 269: PPUSH
 270: LD_INT 39
 272: PPUSH
 273: LD_INT 29
 275: PPUSH
 276: LD_INT 0
 278: PPUSH
 279: CALL_OW 48
// end ; if CheckCharacterSet ( Tarpan ) then
 283: LD_STRING Tarpan
 285: PPUSH
 286: CALL_OW 29
 290: IFFALSE 327
// begin Tarpan = LoadCharacter ( Tarpan , 0 , 0 ) ;
 292: LD_ADDR_EXP 6
 296: PUSH
 297: LD_STRING Tarpan
 299: PPUSH
 300: LD_INT 0
 302: PPUSH
 303: LD_INT 0
 305: PPUSH
 306: CALL_OW 527
 310: ST_TO_ADDR
// tmp = tmp ^ Tarpan ;
 311: LD_ADDR_LOC 1
 315: PUSH
 316: LD_LOC 1
 320: PUSH
 321: LD_EXP 6
 325: ADD
 326: ST_TO_ADDR
// end ; for i in tmp do
 327: LD_ADDR_VAR 0 2
 331: PUSH
 332: LD_LOC 1
 336: PUSH
 337: FOR_IN
 338: IFFALSE 436
// if UnitsInside ( [ qa , qd , qf , ql ] [ GetClass ( i ) ] ) < 6 then
 340: LD_INT 14
 342: PUSH
 343: LD_INT 3
 345: PUSH
 346: LD_INT 6
 348: PUSH
 349: LD_INT 5
 351: PUSH
 352: EMPTY
 353: LIST
 354: LIST
 355: LIST
 356: LIST
 357: PUSH
 358: LD_VAR 0 2
 362: PPUSH
 363: CALL_OW 257
 367: ARRAY
 368: PPUSH
 369: CALL_OW 313
 373: PUSH
 374: LD_INT 6
 376: LESS
 377: IFFALSE 419
// PlaceHumanInUnit ( i , [ qa , qd , qf , ql ] [ GetClass ( i ) ] ) else
 379: LD_VAR 0 2
 383: PPUSH
 384: LD_INT 14
 386: PUSH
 387: LD_INT 3
 389: PUSH
 390: LD_INT 6
 392: PUSH
 393: LD_INT 5
 395: PUSH
 396: EMPTY
 397: LIST
 398: LIST
 399: LIST
 400: LIST
 401: PUSH
 402: LD_VAR 0 2
 406: PPUSH
 407: CALL_OW 257
 411: ARRAY
 412: PPUSH
 413: CALL_OW 52
 417: GO 434
// PlaceUnitArea ( i , AlQudsArea , false ) ;
 419: LD_VAR 0 2
 423: PPUSH
 424: LD_INT 1
 426: PPUSH
 427: LD_INT 0
 429: PPUSH
 430: CALL_OW 49
 434: GO 337
 436: POP
 437: POP
// for i = 1 to [ qb1 , qb2 , qb3 , qb4 ] do
 438: LD_ADDR_VAR 0 2
 442: PUSH
 443: DOUBLE
 444: LD_INT 1
 446: DEC
 447: ST_TO_ADDR
 448: LD_INT 21
 450: PUSH
 451: LD_INT 18
 453: PUSH
 454: LD_INT 17
 456: PUSH
 457: LD_INT 109
 459: PUSH
 460: EMPTY
 461: LIST
 462: LIST
 463: LIST
 464: LIST
 465: PUSH
 466: FOR_TO
 467: IFFALSE 530
// begin PrepareSoldier ( Rand ( 1 , 2 ) , Rand ( 2 , 3 ) ) ;
 469: LD_INT 1
 471: PPUSH
 472: LD_INT 2
 474: PPUSH
 475: CALL_OW 12
 479: PPUSH
 480: LD_INT 2
 482: PPUSH
 483: LD_INT 3
 485: PPUSH
 486: CALL_OW 12
 490: PPUSH
 491: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , [ qb1 , qb2 , qb3 , qb4 ] [ i ] ) ;
 495: CALL_OW 44
 499: PPUSH
 500: LD_INT 21
 502: PUSH
 503: LD_INT 18
 505: PUSH
 506: LD_INT 17
 508: PUSH
 509: LD_INT 109
 511: PUSH
 512: EMPTY
 513: LIST
 514: LIST
 515: LIST
 516: LIST
 517: PUSH
 518: LD_VAR 0 2
 522: ARRAY
 523: PPUSH
 524: CALL_OW 52
// end ;
 528: GO 466
 530: POP
 531: POP
// SetBName ( qd , quds ) ;
 532: LD_INT 3
 534: PPUSH
 535: LD_STRING quds
 537: PPUSH
 538: CALL_OW 500
// for i in [ tech_ApeLang , tech_Tech2 , tech_Weap1 , tech_Explos , tech_Weap2 ] do
 542: LD_ADDR_VAR 0 2
 546: PUSH
 547: LD_INT 1
 549: PUSH
 550: LD_INT 49
 552: PUSH
 553: LD_INT 51
 555: PUSH
 556: LD_INT 42
 558: PUSH
 559: LD_INT 52
 561: PUSH
 562: EMPTY
 563: LIST
 564: LIST
 565: LIST
 566: LIST
 567: LIST
 568: PUSH
 569: FOR_IN
 570: IFFALSE 586
// AddComResearch ( ql , i ) ;
 572: LD_INT 5
 574: PPUSH
 575: LD_VAR 0 2
 579: PPUSH
 580: CALL_OW 184
 584: GO 569
 586: POP
 587: POP
// end ;
 588: LD_VAR 0 1
 592: RET
// export function SortAfterIntro ; var i ; begin
 593: LD_INT 0
 595: PPUSH
 596: PPUSH
// uc_side = 2 ;
 597: LD_ADDR_OWVAR 20
 601: PUSH
 602: LD_INT 2
 604: ST_TO_ADDR
// uc_nation = nation_arabian ;
 605: LD_ADDR_OWVAR 21
 609: PUSH
 610: LD_INT 2
 612: ST_TO_ADDR
// uc_direction = 3 ;
 613: LD_ADDR_OWVAR 24
 617: PUSH
 618: LD_INT 3
 620: ST_TO_ADDR
// bc_type = b_depot ;
 621: LD_ADDR_OWVAR 42
 625: PUSH
 626: LD_INT 0
 628: ST_TO_ADDR
// AntoineDepot = CreateBuilding ;
 629: LD_ADDR_EXP 10
 633: PUSH
 634: CALL_OW 46
 638: ST_TO_ADDR
// PlaceUnitXY ( AntoineDepot , 127 , 47 , false ) ;
 639: LD_EXP 10
 643: PPUSH
 644: LD_INT 127
 646: PPUSH
 647: LD_INT 47
 649: PPUSH
 650: LD_INT 0
 652: PPUSH
 653: CALL_OW 48
// SetResourceType ( GetBase ( AntoineDepot ) , mat_cans , [ 120 , 100 , 80 ] [ difficulty ] ) ;
 657: LD_EXP 10
 661: PPUSH
 662: CALL_OW 274
 666: PPUSH
 667: LD_INT 1
 669: PPUSH
 670: LD_INT 120
 672: PUSH
 673: LD_INT 100
 675: PUSH
 676: LD_INT 80
 678: PUSH
 679: EMPTY
 680: LIST
 681: LIST
 682: LIST
 683: PUSH
 684: LD_OWVAR 67
 688: ARRAY
 689: PPUSH
 690: CALL_OW 277
// CenterNowOnXY ( 126 , 56 ) ;
 694: LD_INT 126
 696: PPUSH
 697: LD_INT 56
 699: PPUSH
 700: CALL_OW 86
// for i in TeamAntoine ^ [ Antoine , Ende ] do
 704: LD_ADDR_VAR 0 2
 708: PUSH
 709: LD_EXP 7
 713: PUSH
 714: LD_EXP 1
 718: PUSH
 719: LD_EXP 3
 723: PUSH
 724: EMPTY
 725: LIST
 726: LIST
 727: ADD
 728: PUSH
 729: FOR_IN
 730: IFFALSE 776
// begin RemoveUnit ( i ) ;
 732: LD_VAR 0 2
 736: PPUSH
 737: CALL_OW 64
// PlaceUnitXYR ( i , 126 , 56 , 5 , false ) ;
 741: LD_VAR 0 2
 745: PPUSH
 746: LD_INT 126
 748: PPUSH
 749: LD_INT 56
 751: PPUSH
 752: LD_INT 5
 754: PPUSH
 755: LD_INT 0
 757: PPUSH
 758: CALL_OW 50
// SetSide ( i , 2 ) ;
 762: LD_VAR 0 2
 766: PPUSH
 767: LD_INT 2
 769: PPUSH
 770: CALL_OW 235
// end ;
 774: GO 729
 776: POP
 777: POP
// tmp = [ Bojan , Gom ] ^ UnitFilter ( tmp , [ f_side , 5 ] ) ;
 778: LD_ADDR_LOC 1
 782: PUSH
 783: LD_EXP 2
 787: PUSH
 788: LD_EXP 4
 792: PUSH
 793: EMPTY
 794: LIST
 795: LIST
 796: PUSH
 797: LD_LOC 1
 801: PPUSH
 802: LD_INT 22
 804: PUSH
 805: LD_INT 5
 807: PUSH
 808: EMPTY
 809: LIST
 810: LIST
 811: PPUSH
 812: CALL_OW 72
 816: ADD
 817: ST_TO_ADDR
// for i in tmp do
 818: LD_ADDR_VAR 0 2
 822: PUSH
 823: LD_LOC 1
 827: PUSH
 828: FOR_IN
 829: IFFALSE 968
// begin RemoveUnit ( i ) ;
 831: LD_VAR 0 2
 835: PPUSH
 836: CALL_OW 64
// if i = Bojan then
 840: LD_VAR 0 2
 844: PUSH
 845: LD_EXP 2
 849: EQUAL
 850: IFFALSE 872
// PlaceUnitXY ( Bojan , 40 , 28 , false ) else
 852: LD_EXP 2
 856: PPUSH
 857: LD_INT 40
 859: PPUSH
 860: LD_INT 28
 862: PPUSH
 863: LD_INT 0
 865: PPUSH
 866: CALL_OW 48
 870: GO 966
// if UnitsInside ( [ qa , qd , qf , ql ] [ GetClass ( i ) ] ) < 6 then
 872: LD_INT 14
 874: PUSH
 875: LD_INT 3
 877: PUSH
 878: LD_INT 6
 880: PUSH
 881: LD_INT 5
 883: PUSH
 884: EMPTY
 885: LIST
 886: LIST
 887: LIST
 888: LIST
 889: PUSH
 890: LD_VAR 0 2
 894: PPUSH
 895: CALL_OW 257
 899: ARRAY
 900: PPUSH
 901: CALL_OW 313
 905: PUSH
 906: LD_INT 6
 908: LESS
 909: IFFALSE 951
// PlaceHumanInUnit ( i , [ qa , qd , qf , ql ] [ GetClass ( i ) ] ) else
 911: LD_VAR 0 2
 915: PPUSH
 916: LD_INT 14
 918: PUSH
 919: LD_INT 3
 921: PUSH
 922: LD_INT 6
 924: PUSH
 925: LD_INT 5
 927: PUSH
 928: EMPTY
 929: LIST
 930: LIST
 931: LIST
 932: LIST
 933: PUSH
 934: LD_VAR 0 2
 938: PPUSH
 939: CALL_OW 257
 943: ARRAY
 944: PPUSH
 945: CALL_OW 52
 949: GO 966
// PlaceUnitArea ( i , AlQudsArea , false ) ;
 951: LD_VAR 0 2
 955: PPUSH
 956: LD_INT 1
 958: PPUSH
 959: LD_INT 0
 961: PPUSH
 962: CALL_OW 49
// end ;
 966: GO 828
 968: POP
 969: POP
// if Tarpan in tmp then
 970: LD_EXP 6
 974: PUSH
 975: LD_LOC 1
 979: IN
 980: IFFALSE 998
// tmp = tmp diff Tarpan ;
 982: LD_ADDR_LOC 1
 986: PUSH
 987: LD_LOC 1
 991: PUSH
 992: LD_EXP 6
 996: DIFF
 997: ST_TO_ADDR
// tmp = tmp diff FindMaxSkill ( tmp diff [ Bojan , Gom ] , class_engineer ) ;
 998: LD_ADDR_LOC 1
1002: PUSH
1003: LD_LOC 1
1007: PUSH
1008: LD_LOC 1
1012: PUSH
1013: LD_EXP 2
1017: PUSH
1018: LD_EXP 4
1022: PUSH
1023: EMPTY
1024: LIST
1025: LIST
1026: DIFF
1027: PPUSH
1028: LD_INT 2
1030: PPUSH
1031: CALL_OW 433
1035: DIFF
1036: ST_TO_ADDR
// QudsGo = tmp ;
1037: LD_ADDR_EXP 9
1041: PUSH
1042: LD_LOC 1
1046: ST_TO_ADDR
// QudsStay = FilterAllUnits ( [ [ f_side , 5 ] , [ f_type , unit_human ] ] ) diff QudsGo ;
1047: LD_ADDR_EXP 8
1051: PUSH
1052: LD_INT 22
1054: PUSH
1055: LD_INT 5
1057: PUSH
1058: EMPTY
1059: LIST
1060: LIST
1061: PUSH
1062: LD_INT 21
1064: PUSH
1065: LD_INT 1
1067: PUSH
1068: EMPTY
1069: LIST
1070: LIST
1071: PUSH
1072: EMPTY
1073: LIST
1074: LIST
1075: PPUSH
1076: CALL_OW 69
1080: PUSH
1081: LD_EXP 9
1085: DIFF
1086: ST_TO_ADDR
// end ;
1087: LD_VAR 0 1
1091: RET
// export function PlaceFlameThrower ; begin
1092: LD_INT 0
1094: PPUSH
// if TestVariable ( Flamethrowers ) then
1095: LD_STRING Flamethrowers
1097: PPUSH
1098: CALL_OW 27
1102: IFFALSE 1170
// begin uc_side = 2 ;
1104: LD_ADDR_OWVAR 20
1108: PUSH
1109: LD_INT 2
1111: ST_TO_ADDR
// uc_nation = 2 ;
1112: LD_ADDR_OWVAR 21
1116: PUSH
1117: LD_INT 2
1119: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
1120: LD_ADDR_OWVAR 37
1124: PUSH
1125: LD_INT 14
1127: ST_TO_ADDR
// vc_engine = engine_solar ;
1128: LD_ADDR_OWVAR 39
1132: PUSH
1133: LD_INT 2
1135: ST_TO_ADDR
// vc_control = control_manual ;
1136: LD_ADDR_OWVAR 38
1140: PUSH
1141: LD_INT 1
1143: ST_TO_ADDR
// vc_weapon = ar_flame_thrower ;
1144: LD_ADDR_OWVAR 40
1148: PUSH
1149: LD_INT 26
1151: ST_TO_ADDR
// PlaceUnitXY ( CreateVehicle , 135 , 57 , false ) ;
1152: CALL_OW 45
1156: PPUSH
1157: LD_INT 135
1159: PPUSH
1160: LD_INT 57
1162: PPUSH
1163: LD_INT 0
1165: PPUSH
1166: CALL_OW 48
// end ; end ;
1170: LD_VAR 0 1
1174: RET
// starting begin PrepareOurs ;
1175: CALL 0 0 0
// RevealFogArea ( 5 , RevealArea ) ;
1179: LD_INT 5
1181: PPUSH
1182: LD_INT 12
1184: PPUSH
1185: CALL_OW 332
// PrepareAmericans ;
1189: CALL 4675 0 0
// disable ( 30 ) ;
1193: LD_INT 30
1195: DISABLE_MARKED
// IntroDialogue ;
1196: CALL 1695 0 0
// if Ende then
1200: LD_EXP 3
1204: IFFALSE 1338
// TeamAntoine = CharacterSelection ( S6 , [ 4 , 4 , 3 ] [ difficulty ] , [ 4 , 4 , 3 ] [ difficulty ] , [ sel_hired , sel_not_changeable , Antoine , Ende , sel_not_hired , Bojan , Gom , sel_changeable , sel_change_class ] ^ tmp , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , class_scientistic ] ) else
1206: LD_ADDR_EXP 7
1210: PUSH
1211: LD_STRING S6
1213: PPUSH
1214: LD_INT 4
1216: PUSH
1217: LD_INT 4
1219: PUSH
1220: LD_INT 3
1222: PUSH
1223: EMPTY
1224: LIST
1225: LIST
1226: LIST
1227: PUSH
1228: LD_OWVAR 67
1232: ARRAY
1233: PPUSH
1234: LD_INT 4
1236: PUSH
1237: LD_INT 4
1239: PUSH
1240: LD_INT 3
1242: PUSH
1243: EMPTY
1244: LIST
1245: LIST
1246: LIST
1247: PUSH
1248: LD_OWVAR 67
1252: ARRAY
1253: PPUSH
1254: LD_INT -1
1256: PUSH
1257: LD_INT -4
1259: PUSH
1260: LD_EXP 1
1264: PUSH
1265: LD_EXP 3
1269: PUSH
1270: LD_INT -2
1272: PUSH
1273: LD_EXP 2
1277: PUSH
1278: LD_EXP 4
1282: PUSH
1283: LD_INT -3
1285: PUSH
1286: LD_INT -5
1288: PUSH
1289: EMPTY
1290: LIST
1291: LIST
1292: LIST
1293: LIST
1294: LIST
1295: LIST
1296: LIST
1297: LIST
1298: LIST
1299: PUSH
1300: LD_LOC 1
1304: ADD
1305: PPUSH
1306: LD_INT 1
1308: PUSH
1309: LD_INT 2
1311: PUSH
1312: LD_INT 1
1314: PUSH
1315: EMPTY
1316: LIST
1317: LIST
1318: PUSH
1319: LD_INT 3
1321: PUSH
1322: LD_INT 4
1324: PUSH
1325: EMPTY
1326: LIST
1327: LIST
1328: LIST
1329: LIST
1330: PPUSH
1331: CALL_OW 42
1335: ST_TO_ADDR
1336: GO 1462
// TeamAntoine = CharacterSelection ( S6 , [ 5 , 5 , 4 ] [ difficulty ] , [ 5 , 5 , 4 ] [ difficulty ] , [ sel_hired , sel_not_changeable , Antoine , sel_not_hired , Bojan , Gom , sel_changeable , sel_change_class ] ^ tmp , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , class_scientistic ] ) ;
1338: LD_ADDR_EXP 7
1342: PUSH
1343: LD_STRING S6
1345: PPUSH
1346: LD_INT 5
1348: PUSH
1349: LD_INT 5
1351: PUSH
1352: LD_INT 4
1354: PUSH
1355: EMPTY
1356: LIST
1357: LIST
1358: LIST
1359: PUSH
1360: LD_OWVAR 67
1364: ARRAY
1365: PPUSH
1366: LD_INT 5
1368: PUSH
1369: LD_INT 5
1371: PUSH
1372: LD_INT 4
1374: PUSH
1375: EMPTY
1376: LIST
1377: LIST
1378: LIST
1379: PUSH
1380: LD_OWVAR 67
1384: ARRAY
1385: PPUSH
1386: LD_INT -1
1388: PUSH
1389: LD_INT -4
1391: PUSH
1392: LD_EXP 1
1396: PUSH
1397: LD_INT -2
1399: PUSH
1400: LD_EXP 2
1404: PUSH
1405: LD_EXP 4
1409: PUSH
1410: LD_INT -3
1412: PUSH
1413: LD_INT -5
1415: PUSH
1416: EMPTY
1417: LIST
1418: LIST
1419: LIST
1420: LIST
1421: LIST
1422: LIST
1423: LIST
1424: LIST
1425: PUSH
1426: LD_LOC 1
1430: ADD
1431: PPUSH
1432: LD_INT 1
1434: PUSH
1435: LD_INT 2
1437: PUSH
1438: LD_INT 1
1440: PUSH
1441: EMPTY
1442: LIST
1443: LIST
1444: PUSH
1445: LD_INT 3
1447: PUSH
1448: LD_INT 4
1450: PUSH
1451: EMPTY
1452: LIST
1453: LIST
1454: LIST
1455: LIST
1456: PPUSH
1457: CALL_OW 42
1461: ST_TO_ADDR
// SortAfterIntro ;
1462: CALL 593 0 0
// PlaceFlameThrower ;
1466: CALL 1092 0 0
// AfterIntroDialogue ;
1470: CALL 2000 0 0
// SaveForQuickRestart ;
1474: CALL_OW 22
// ChangeMissionObjectives ( ODefend ) ;
1478: LD_STRING ODefend
1480: PPUSH
1481: CALL_OW 337
// end ;
1485: END
// export Trespassing ; every 0 0$3 do var i ;
1486: GO 1488
1488: DISABLE
1489: LD_INT 0
1491: PPUSH
// begin enable ;
1492: ENABLE
// if TotalControl then
1493: LD_EXP 15
1497: IFFALSE 1501
// exit ;
1499: GO 1692
// if FilterUnitsInArea ( QudsTrespassingArea , [ f_side , 2 ] ) then
1501: LD_INT 14
1503: PPUSH
1504: LD_INT 22
1506: PUSH
1507: LD_INT 2
1509: PUSH
1510: EMPTY
1511: LIST
1512: LIST
1513: PPUSH
1514: CALL_OW 70
1518: IFFALSE 1692
// begin disable ;
1520: DISABLE
// Trespassing = Trespassing + 1 ;
1521: LD_ADDR_EXP 11
1525: PUSH
1526: LD_EXP 11
1530: PUSH
1531: LD_INT 1
1533: PLUS
1534: ST_TO_ADDR
// if Trespassing = 1 then
1535: LD_EXP 11
1539: PUSH
1540: LD_INT 1
1542: EQUAL
1543: IFFALSE 1665
// begin InGameOn ;
1545: CALL_OW 8
// CenterOnUnits ( FilterUnitsInArea ( QudsTrespassingArea , [ f_side , 2 ] ) ) ;
1549: LD_INT 14
1551: PPUSH
1552: LD_INT 22
1554: PUSH
1555: LD_INT 2
1557: PUSH
1558: EMPTY
1559: LIST
1560: LIST
1561: PPUSH
1562: CALL_OW 70
1566: PPUSH
1567: CALL_OW 85
// SayRadio ( Bojan , do-x-1 ) ;
1571: LD_EXP 2
1575: PPUSH
1576: LD_STRING do-x-1
1578: PPUSH
1579: CALL_OW 94
// for i in FilterUnitsInArea ( QudsTrespassingArea , [ f_side , 2 ] ) do
1583: LD_ADDR_VAR 0 1
1587: PUSH
1588: LD_INT 14
1590: PPUSH
1591: LD_INT 22
1593: PUSH
1594: LD_INT 2
1596: PUSH
1597: EMPTY
1598: LIST
1599: LIST
1600: PPUSH
1601: CALL_OW 70
1605: PUSH
1606: FOR_IN
1607: IFFALSE 1626
// ComMoveXY ( i , 123 , 52 ) ;
1609: LD_VAR 0 1
1613: PPUSH
1614: LD_INT 123
1616: PPUSH
1617: LD_INT 52
1619: PPUSH
1620: CALL_OW 111
1624: GO 1606
1626: POP
1627: POP
// repeat Wait ( 0 0$1 ) until FilterUnitsInArea ( QudsTrespassingArea , [ f_side , 2 ] ) = 0 ;
1628: LD_INT 35
1630: PPUSH
1631: CALL_OW 67
1635: LD_INT 14
1637: PPUSH
1638: LD_INT 22
1640: PUSH
1641: LD_INT 2
1643: PUSH
1644: EMPTY
1645: LIST
1646: LIST
1647: PPUSH
1648: CALL_OW 70
1652: PUSH
1653: LD_INT 0
1655: EQUAL
1656: IFFALSE 1628
// InGameOff ;
1658: CALL_OW 9
// enable ;
1662: ENABLE
// end else
1663: GO 1692
// begin DialogueOn ;
1665: CALL_OW 6
// SayRadio ( Bojan , do-x-2 ) ;
1669: LD_EXP 2
1673: PPUSH
1674: LD_STRING do-x-2
1676: PPUSH
1677: CALL_OW 94
// YouLost ( Dismissed ) ;
1681: LD_STRING Dismissed
1683: PPUSH
1684: CALL_OW 104
// DialogueOff ;
1688: CALL_OW 7
// end ; end ; end ; end_of_file
1692: PPOPN 1
1694: END
// export RadarTaken , RadarRecycled , RadarDone ; export function IntroDialogue ; begin
1695: LD_INT 0
1697: PPUSH
// InGameOn ;
1698: CALL_OW 8
// ChangeSideFog ( 2 , 5 ) ;
1702: LD_INT 2
1704: PPUSH
1705: LD_INT 5
1707: PPUSH
1708: CALL_OW 343
// CenterOnXY ( 47 , 33 ) ;
1712: LD_INT 47
1714: PPUSH
1715: LD_INT 33
1717: PPUSH
1718: CALL_OW 84
// ComExitBuilding ( Bojan ) ;
1722: LD_EXP 2
1726: PPUSH
1727: CALL_OW 122
// AddComMoveXY ( Bojan , 44 , 31 ) ;
1731: LD_EXP 2
1735: PPUSH
1736: LD_INT 44
1738: PPUSH
1739: LD_INT 31
1741: PPUSH
1742: CALL_OW 171
// Wait ( 0 0$2 ) ;
1746: LD_INT 70
1748: PPUSH
1749: CALL_OW 67
// ComTurnUnit ( Antoine , Bojan ) ;
1753: LD_EXP 1
1757: PPUSH
1758: LD_EXP 2
1762: PPUSH
1763: CALL_OW 119
// ComTurnUnit ( [ Bojan , Ende ] , Antoine ) ;
1767: LD_EXP 2
1771: PUSH
1772: LD_EXP 3
1776: PUSH
1777: EMPTY
1778: LIST
1779: LIST
1780: PPUSH
1781: LD_EXP 1
1785: PPUSH
1786: CALL_OW 119
// Wait ( 0 0$0.5 ) ;
1790: LD_INT 18
1792: PPUSH
1793: CALL_OW 67
// ComHold ( [ Antoine , Bojan ] ) ;
1797: LD_EXP 1
1801: PUSH
1802: LD_EXP 2
1806: PUSH
1807: EMPTY
1808: LIST
1809: LIST
1810: PPUSH
1811: CALL_OW 140
// DialogueOn ;
1815: CALL_OW 6
// Say ( Bojan , di-b-1 ) ;
1819: LD_EXP 2
1823: PPUSH
1824: LD_STRING di-b-1
1826: PPUSH
1827: CALL_OW 88
// Say ( Antoine , di-a-1 ) ;
1831: LD_EXP 1
1835: PPUSH
1836: LD_STRING di-a-1
1838: PPUSH
1839: CALL_OW 88
// Say ( Bojan , di-b-2 ) ;
1843: LD_EXP 2
1847: PPUSH
1848: LD_STRING di-b-2
1850: PPUSH
1851: CALL_OW 88
// Say ( Antoine , di-a-2 ) ;
1855: LD_EXP 1
1859: PPUSH
1860: LD_STRING di-a-2
1862: PPUSH
1863: CALL_OW 88
// Say ( Bojan , di-b-3 ) ;
1867: LD_EXP 2
1871: PPUSH
1872: LD_STRING di-b-3
1874: PPUSH
1875: CALL_OW 88
// CenterOnXY ( 126 , 50 ) ;
1879: LD_INT 126
1881: PPUSH
1882: LD_INT 50
1884: PPUSH
1885: CALL_OW 84
// if Ende then
1889: LD_EXP 3
1893: IFFALSE 1909
// Say ( Bojan , di-b-4 ) else
1895: LD_EXP 2
1899: PPUSH
1900: LD_STRING di-b-4
1902: PPUSH
1903: CALL_OW 88
1907: GO 1921
// Say ( Bojan , di-b-4a ) ;
1909: LD_EXP 2
1913: PPUSH
1914: LD_STRING di-b-4a
1916: PPUSH
1917: CALL_OW 88
// CenterOnXY ( 47 , 33 ) ;
1921: LD_INT 47
1923: PPUSH
1924: LD_INT 33
1926: PPUSH
1927: CALL_OW 84
// Say ( Antoine , di-a-3 ) ;
1931: LD_EXP 1
1935: PPUSH
1936: LD_STRING di-a-3
1938: PPUSH
1939: CALL_OW 88
// if not LoadVariable ( SolarAllowed , 0 ) then
1943: LD_STRING SolarAllowed
1945: PPUSH
1946: LD_INT 0
1948: PPUSH
1949: CALL_OW 30
1953: NOT
1954: IFFALSE 1987
// begin Wait ( 0 0$1 ) ;
1956: LD_INT 35
1958: PPUSH
1959: CALL_OW 67
// Say ( Bojan , di-b-5 ) ;
1963: LD_EXP 2
1967: PPUSH
1968: LD_STRING di-b-5
1970: PPUSH
1971: CALL_OW 88
// Say ( Antoine , di-a-4 ) ;
1975: LD_EXP 1
1979: PPUSH
1980: LD_STRING di-a-4
1982: PPUSH
1983: CALL_OW 88
// end ; DialogueOff ;
1987: CALL_OW 7
// InGameOff ;
1991: CALL_OW 9
// end ;
1995: LD_VAR 0 1
1999: RET
// export function AfterIntroDialogue ; var m , s ; begin
2000: LD_INT 0
2002: PPUSH
2003: PPUSH
2004: PPUSH
// m = FindMaxSkill ( TeamAntoine , skill_mechanical ) ;
2005: LD_ADDR_VAR 0 2
2009: PUSH
2010: LD_EXP 7
2014: PPUSH
2015: LD_INT 3
2017: PPUSH
2018: CALL_OW 433
2022: ST_TO_ADDR
// s = FindMaxSkill ( TeamAntoine , skill_combat ) ;
2023: LD_ADDR_VAR 0 3
2027: PUSH
2028: LD_EXP 7
2032: PPUSH
2033: LD_INT 1
2035: PPUSH
2036: CALL_OW 433
2040: ST_TO_ADDR
// DialogueOn ;
2041: CALL_OW 6
// if Ende then
2045: LD_EXP 3
2049: IFFALSE 2065
// Say ( Ende , dh-e-1 ) else
2051: LD_EXP 3
2055: PPUSH
2056: LD_STRING dh-e-1
2058: PPUSH
2059: CALL_OW 88
2063: GO 2077
// Say ( s , dh-s-1 ) ;
2065: LD_VAR 0 3
2069: PPUSH
2070: LD_STRING dh-s-1
2072: PPUSH
2073: CALL_OW 88
// Say ( Antoine , dh-a-1 ) ;
2077: LD_EXP 1
2081: PPUSH
2082: LD_STRING dh-a-1
2084: PPUSH
2085: CALL_OW 88
// Say ( m , dh-m-1 ) ;
2089: LD_VAR 0 2
2093: PPUSH
2094: LD_STRING dh-m-1
2096: PPUSH
2097: CALL_OW 88
// if Ende then
2101: LD_EXP 3
2105: IFFALSE 2119
// Say ( Ende , dh-e-2 ) ;
2107: LD_EXP 3
2111: PPUSH
2112: LD_STRING dh-e-2
2114: PPUSH
2115: CALL_OW 88
// Say ( Antoine , dh-a-2 ) ;
2119: LD_EXP 1
2123: PPUSH
2124: LD_STRING dh-a-2
2126: PPUSH
2127: CALL_OW 88
// DialogueOff ;
2131: CALL_OW 7
// end ;
2135: LD_VAR 0 1
2139: RET
// every 0 0$1 trigger FilterAllUnits ( [ [ f_weapon , us_radar ] , [ f_see , 5 ] ] ) do var m , s ;
2140: LD_INT 34
2142: PUSH
2143: LD_INT 11
2145: PUSH
2146: EMPTY
2147: LIST
2148: LIST
2149: PUSH
2150: LD_INT 101
2152: PUSH
2153: LD_INT 5
2155: PUSH
2156: EMPTY
2157: LIST
2158: LIST
2159: PUSH
2160: EMPTY
2161: LIST
2162: LIST
2163: PPUSH
2164: CALL_OW 69
2168: IFFALSE 2322
2170: GO 2172
2172: DISABLE
2173: LD_INT 0
2175: PPUSH
2176: PPUSH
// begin m = FindMaxSkill ( TeamAntoine , skill_mechanical ) ;
2177: LD_ADDR_VAR 0 1
2181: PUSH
2182: LD_EXP 7
2186: PPUSH
2187: LD_INT 3
2189: PPUSH
2190: CALL_OW 433
2194: ST_TO_ADDR
// s = FindMaxSkill ( TeamAntoine , skill_combat ) ;
2195: LD_ADDR_VAR 0 2
2199: PUSH
2200: LD_EXP 7
2204: PPUSH
2205: LD_INT 1
2207: PPUSH
2208: CALL_OW 433
2212: ST_TO_ADDR
// DialogueOn ;
2213: CALL_OW 6
// CenterOnUnits ( FilterAllUnits ( [ [ f_weapon , us_radar ] , [ f_see , 5 ] ] ) ) ;
2217: LD_INT 34
2219: PUSH
2220: LD_INT 11
2222: PUSH
2223: EMPTY
2224: LIST
2225: LIST
2226: PUSH
2227: LD_INT 101
2229: PUSH
2230: LD_INT 5
2232: PUSH
2233: EMPTY
2234: LIST
2235: LIST
2236: PUSH
2237: EMPTY
2238: LIST
2239: LIST
2240: PPUSH
2241: CALL_OW 69
2245: PPUSH
2246: CALL_OW 85
// Say ( Antoine , dr-a-1 ) ;
2250: LD_EXP 1
2254: PPUSH
2255: LD_STRING dr-a-1
2257: PPUSH
2258: CALL_OW 88
// if IsOK ( Ende ) then
2262: LD_EXP 3
2266: PPUSH
2267: CALL_OW 302
2271: IFFALSE 2287
// Say ( Ende , dr-e-1 ) else
2273: LD_EXP 3
2277: PPUSH
2278: LD_STRING dr-e-1
2280: PPUSH
2281: CALL_OW 88
2285: GO 2299
// Say ( s , dr-e-1 ) ;
2287: LD_VAR 0 2
2291: PPUSH
2292: LD_STRING dr-e-1
2294: PPUSH
2295: CALL_OW 88
// Say ( m , dr-m-1 ) ;
2299: LD_VAR 0 1
2303: PPUSH
2304: LD_STRING dr-m-1
2306: PPUSH
2307: CALL_OW 88
// DialogueOff ;
2311: CALL_OW 7
// ChangeMissionObjectives ( ORadar ) ;
2315: LD_STRING ORadar
2317: PPUSH
2318: CALL_OW 337
// end ;
2322: PPOPN 2
2324: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , us_radar ] ] ) do
2325: LD_INT 22
2327: PUSH
2328: LD_INT 2
2330: PUSH
2331: EMPTY
2332: LIST
2333: LIST
2334: PUSH
2335: LD_INT 34
2337: PUSH
2338: LD_INT 11
2340: PUSH
2341: EMPTY
2342: LIST
2343: LIST
2344: PUSH
2345: EMPTY
2346: LIST
2347: LIST
2348: PPUSH
2349: CALL_OW 69
2353: IFFALSE 2373
2355: GO 2357
2357: DISABLE
// begin RadarTaken = true ;
2358: LD_ADDR_EXP 12
2362: PUSH
2363: LD_INT 1
2365: ST_TO_ADDR
// ChangeMissionObjectives ( OTakeRadarOut ) ;
2366: LD_STRING OTakeRadarOut
2368: PPUSH
2369: CALL_OW 337
// end ;
2373: END
// on VehicleRecycled ( f , v , s , n , x , y , d , ch , c , e , w ) do var u ;
2374: LD_INT 0
2376: PPUSH
// begin u = UnitsInside ( f ) [ 1 ] ;
2377: LD_ADDR_VAR 0 12
2381: PUSH
2382: LD_VAR 0 1
2386: PPUSH
2387: CALL_OW 313
2391: PUSH
2392: LD_INT 1
2394: ARRAY
2395: ST_TO_ADDR
// if GetSide ( v ) = 2 and w = us_radar and RadarRecycled = false then
2396: LD_VAR 0 2
2400: PPUSH
2401: CALL_OW 255
2405: PUSH
2406: LD_INT 2
2408: EQUAL
2409: PUSH
2410: LD_VAR 0 11
2414: PUSH
2415: LD_INT 11
2417: EQUAL
2418: AND
2419: PUSH
2420: LD_EXP 13
2424: PUSH
2425: LD_INT 0
2427: EQUAL
2428: AND
2429: IFFALSE 2523
// begin DialogueOn ;
2431: CALL_OW 6
// if u = Antoine then
2435: LD_VAR 0 12
2439: PUSH
2440: LD_EXP 1
2444: EQUAL
2445: IFFALSE 2461
// Say ( Antoine , dr-a-2a ) else
2447: LD_EXP 1
2451: PPUSH
2452: LD_STRING dr-a-2a
2454: PPUSH
2455: CALL_OW 88
2459: GO 2485
// begin Say ( u , dr-m-2 ) ;
2461: LD_VAR 0 12
2465: PPUSH
2466: LD_STRING dr-m-2
2468: PPUSH
2469: CALL_OW 88
// Say ( Antoine , dr-a-2 ) ;
2473: LD_EXP 1
2477: PPUSH
2478: LD_STRING dr-a-2
2480: PPUSH
2481: CALL_OW 88
// end ; DialogueOff ;
2485: CALL_OW 7
// RadarRecycled = true ;
2489: LD_ADDR_EXP 13
2493: PUSH
2494: LD_INT 1
2496: ST_TO_ADDR
// SetTech ( Tech_Radar , 2 , state_researched ) ;
2497: LD_INT 6
2499: PPUSH
2500: LD_INT 2
2502: PPUSH
2503: LD_INT 2
2505: PPUSH
2506: CALL_OW 322
// SetRestrict ( b_ext_radar , 2 , true ) ;
2510: LD_INT 20
2512: PPUSH
2513: LD_INT 2
2515: PPUSH
2516: LD_INT 1
2518: PPUSH
2519: CALL_OW 324
// end ; end ;
2523: PPOPN 12
2525: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_radar ] ] ) do
2526: LD_INT 22
2528: PUSH
2529: LD_INT 2
2531: PUSH
2532: EMPTY
2533: LIST
2534: LIST
2535: PUSH
2536: LD_INT 34
2538: PUSH
2539: LD_INT 30
2541: PUSH
2542: EMPTY
2543: LIST
2544: LIST
2545: PUSH
2546: EMPTY
2547: LIST
2548: LIST
2549: PPUSH
2550: CALL_OW 69
2554: IFFALSE 2574
2556: GO 2558
2558: DISABLE
// begin RadarDone = true ;
2559: LD_ADDR_EXP 14
2563: PUSH
2564: LD_INT 1
2566: ST_TO_ADDR
// ChangeMissionObjectives ( ORadarOut ) ;
2567: LD_STRING ORadarOut
2569: PPUSH
2570: CALL_OW 337
// end ;
2574: END
// export function DialogueKaaba ; var qtmp ; begin
2575: LD_INT 0
2577: PPUSH
2578: PPUSH
// InGameOn ;
2579: CALL_OW 8
// DialogueOn ;
2583: CALL_OW 6
// CenterOnXY ( 128 , 50 ) ;
2587: LD_INT 128
2589: PPUSH
2590: LD_INT 50
2592: PPUSH
2593: CALL_OW 84
// SayRadio ( Bojan , dq-b-1 ) ;
2597: LD_EXP 2
2601: PPUSH
2602: LD_STRING dq-b-1
2604: PPUSH
2605: CALL_OW 94
// Say ( Antoine , dq-a-1 ) ;
2609: LD_EXP 1
2613: PPUSH
2614: LD_STRING dq-a-1
2616: PPUSH
2617: CALL_OW 88
// SayRadio ( Bojan , dq-b-2 ) ;
2621: LD_EXP 2
2625: PPUSH
2626: LD_STRING dq-b-2
2628: PPUSH
2629: CALL_OW 94
// if IsOK ( Ende ) then
2633: LD_EXP 3
2637: PPUSH
2638: CALL_OW 302
2642: IFFALSE 2656
// Say ( Ende , dq-e-1 ) ;
2644: LD_EXP 3
2648: PPUSH
2649: LD_STRING dq-e-1
2651: PPUSH
2652: CALL_OW 88
// Say ( Antoine , dq-a-2 ) ;
2656: LD_EXP 1
2660: PPUSH
2661: LD_STRING dq-a-2
2663: PPUSH
2664: CALL_OW 88
// SayRadio ( Bojan , dq-b-3 ) ;
2668: LD_EXP 2
2672: PPUSH
2673: LD_STRING dq-b-3
2675: PPUSH
2676: CALL_OW 94
// Say ( Antoine , dq-a-3 ) ;
2680: LD_EXP 1
2684: PPUSH
2685: LD_STRING dq-a-3
2687: PPUSH
2688: CALL_OW 88
// if IsOK ( Ende ) then
2692: LD_EXP 3
2696: PPUSH
2697: CALL_OW 302
2701: IFFALSE 2715
// Say ( Ende , dq-e-2 ) ;
2703: LD_EXP 3
2707: PPUSH
2708: LD_STRING dq-e-2
2710: PPUSH
2711: CALL_OW 88
// qtmp = FilterAllUnits ( [ [ f_side , 5 ] , [ f_type , unit_building ] ] ) ^ QudsStay ^ [ qv1 , qv2 ] ;
2715: LD_ADDR_VAR 0 2
2719: PUSH
2720: LD_INT 22
2722: PUSH
2723: LD_INT 5
2725: PUSH
2726: EMPTY
2727: LIST
2728: LIST
2729: PUSH
2730: LD_INT 21
2732: PUSH
2733: LD_INT 3
2735: PUSH
2736: EMPTY
2737: LIST
2738: LIST
2739: PUSH
2740: EMPTY
2741: LIST
2742: LIST
2743: PPUSH
2744: CALL_OW 69
2748: PUSH
2749: LD_EXP 8
2753: ADD
2754: PUSH
2755: LD_INT 33
2757: PUSH
2758: LD_INT 26
2760: PUSH
2761: EMPTY
2762: LIST
2763: LIST
2764: ADD
2765: ST_TO_ADDR
// SetSide ( qtmp , 2 ) ;
2766: LD_VAR 0 2
2770: PPUSH
2771: LD_INT 2
2773: PPUSH
2774: CALL_OW 235
// InGameOff ;
2778: CALL_OW 9
// DialogueOff ;
2782: CALL_OW 7
// ChangeMissionObjectives ( OPrepare ) ;
2786: LD_STRING OPrepare
2788: PPUSH
2789: CALL_OW 337
// SetAreaMapShow ( ExitArea , 1 ) ;
2793: LD_INT 4
2795: PPUSH
2796: LD_INT 1
2798: PPUSH
2799: CALL_OW 424
// Wait ( 0 0$15 ) ;
2803: LD_INT 525
2805: PPUSH
2806: CALL_OW 67
// Say ( QudsStay [ 1 ] , dc-s-1 ) ;
2810: LD_EXP 8
2814: PUSH
2815: LD_INT 1
2817: ARRAY
2818: PPUSH
2819: LD_STRING dc-s-1
2821: PPUSH
2822: CALL_OW 88
// Say ( Antoine , dc-a-1 ) ;
2826: LD_EXP 1
2830: PPUSH
2831: LD_STRING dc-a-1
2833: PPUSH
2834: CALL_OW 88
// end ;
2838: LD_VAR 0 1
2842: RET
// every 0 0$1 trigger TotalControl and FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_building ] , [ f_ok ] ] ) = 0 do
2843: LD_EXP 15
2847: PUSH
2848: LD_INT 22
2850: PUSH
2851: LD_INT 2
2853: PUSH
2854: EMPTY
2855: LIST
2856: LIST
2857: PUSH
2858: LD_INT 21
2860: PUSH
2861: LD_INT 3
2863: PUSH
2864: EMPTY
2865: LIST
2866: LIST
2867: PUSH
2868: LD_INT 50
2870: PUSH
2871: EMPTY
2872: LIST
2873: PUSH
2874: EMPTY
2875: LIST
2876: LIST
2877: LIST
2878: PPUSH
2879: CALL_OW 69
2883: PUSH
2884: LD_INT 0
2886: EQUAL
2887: AND
2888: IFFALSE 2900
2890: GO 2892
2892: DISABLE
// ChangeMissionObjectives ( ODestroyOut ) ;
2893: LD_STRING ODestroyOut
2895: PPUSH
2896: CALL_OW 337
2900: END
// export function Ending ; begin
2901: LD_INT 0
2903: PPUSH
// InGameOn ;
2904: CALL_OW 8
// DialogueOn ;
2908: CALL_OW 6
// CenterOnXY ( 119 , 9 ) ;
2912: LD_INT 119
2914: PPUSH
2915: LD_INT 9
2917: PPUSH
2918: CALL_OW 84
// Say ( Antoine , de-a-1 ) ;
2922: LD_EXP 1
2926: PPUSH
2927: LD_STRING de-a-1
2929: PPUSH
2930: CALL_OW 88
// SayRadio ( Mahmoud , de-m-1 ) ;
2934: LD_EXP 5
2938: PPUSH
2939: LD_STRING de-m-1
2941: PPUSH
2942: CALL_OW 94
// DWait ( 0 0$1 ) ;
2946: LD_INT 35
2948: PPUSH
2949: CALL_OW 68
// if Losses then
2953: LD_EXP 21
2957: IFFALSE 2973
// Say ( Antoine , de-a-2a ) else
2959: LD_EXP 1
2963: PPUSH
2964: LD_STRING de-a-2a
2966: PPUSH
2967: CALL_OW 88
2971: GO 2985
// Say ( Antoine , de-a-2 ) ;
2973: LD_EXP 1
2977: PPUSH
2978: LD_STRING de-a-2
2980: PPUSH
2981: CALL_OW 88
// InGameOff ;
2985: CALL_OW 9
// if not Losses then
2989: LD_EXP 21
2993: NOT
2994: IFFALSE 3008
// AddMedal ( MLosses , 1 ) else
2996: LD_STRING MLosses
2998: PPUSH
2999: LD_INT 1
3001: PPUSH
3002: CALL_OW 101
3006: GO 3019
// AddMedal ( MLosses , - 1 ) ;
3008: LD_STRING MLosses
3010: PPUSH
3011: LD_INT 1
3013: NEG
3014: PPUSH
3015: CALL_OW 101
// if RadarDone then
3019: LD_EXP 14
3023: IFFALSE 3037
// AddMedal ( MRadar , 1 ) else
3025: LD_STRING MRadar
3027: PPUSH
3028: LD_INT 1
3030: PPUSH
3031: CALL_OW 101
3035: GO 3067
// if RadarTaken then
3037: LD_EXP 12
3041: IFFALSE 3056
// AddMedal ( MRadar , - 1 ) else
3043: LD_STRING MRadar
3045: PPUSH
3046: LD_INT 1
3048: NEG
3049: PPUSH
3050: CALL_OW 101
3054: GO 3067
// AddMedal ( MRadar , - 2 ) ;
3056: LD_STRING MRadar
3058: PPUSH
3059: LD_INT 2
3061: NEG
3062: PPUSH
3063: CALL_OW 101
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_building ] , [ f_ok ] ] ) = 0 then
3067: LD_INT 22
3069: PUSH
3070: LD_INT 2
3072: PUSH
3073: EMPTY
3074: LIST
3075: LIST
3076: PUSH
3077: LD_INT 21
3079: PUSH
3080: LD_INT 3
3082: PUSH
3083: EMPTY
3084: LIST
3085: LIST
3086: PUSH
3087: LD_INT 50
3089: PUSH
3090: EMPTY
3091: LIST
3092: PUSH
3093: EMPTY
3094: LIST
3095: LIST
3096: LIST
3097: PPUSH
3098: CALL_OW 69
3102: PUSH
3103: LD_INT 0
3105: EQUAL
3106: IFFALSE 3120
// AddMedal ( MNothingLeft , 1 ) else
3108: LD_STRING MNothingLeft
3110: PPUSH
3111: LD_INT 1
3113: PPUSH
3114: CALL_OW 101
3118: GO 3131
// AddMedal ( MNothingLeft , - 1 ) ;
3120: LD_STRING MNothingLeft
3122: PPUSH
3123: LD_INT 1
3125: NEG
3126: PPUSH
3127: CALL_OW 101
// GiveMedals ( Main ) ;
3131: LD_STRING Main
3133: PPUSH
3134: CALL_OW 102
// RewardPeople ( Antoine ^ SpecialEvacuated ^ OtherEvacuated ) ;
3138: LD_EXP 1
3142: PUSH
3143: LD_EXP 19
3147: ADD
3148: PUSH
3149: LD_EXP 20
3153: ADD
3154: PPUSH
3155: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
3159: LD_EXP 1
3163: PPUSH
3164: LD_STRING Antoine
3166: PPUSH
3167: CALL_OW 38
// if Ende then
3171: LD_EXP 3
3175: IFFALSE 3189
// SaveCharacters ( Ende , Ende ) ;
3177: LD_EXP 3
3181: PPUSH
3182: LD_STRING Ende
3184: PPUSH
3185: CALL_OW 38
// if Tarpan then
3189: LD_EXP 6
3193: IFFALSE 3207
// SaveCharacters ( Tarpan , Tarpan ) ;
3195: LD_EXP 6
3199: PPUSH
3200: LD_STRING Tarpan
3202: PPUSH
3203: CALL_OW 38
// SaveCharacters ( OtherEvacuated , TeamAntoine ) ;
3207: LD_EXP 20
3211: PPUSH
3212: LD_STRING TeamAntoine
3214: PPUSH
3215: CALL_OW 38
// YouWin ;
3219: CALL_OW 103
// end ; end_of_file
3223: LD_VAR 0 1
3227: RET
// export TotalControl ; export EscapeVehs , Evacuated ; every 0 0$1 trigger GetListOfCratesInArea ( QudsCratesArea ) and not TotalControl do var e ;
3228: LD_INT 5
3230: PPUSH
3231: CALL_OW 435
3235: PUSH
3236: LD_EXP 15
3240: NOT
3241: AND
3242: IFFALSE 3383
3244: GO 3246
3246: DISABLE
3247: LD_INT 0
3249: PPUSH
// begin enable ;
3250: ENABLE
// e = FilterAllUnits ( [ [ f_side , 5 ] , [ f_class , class_engineer ] ] ) [ 1 ] ;
3251: LD_ADDR_VAR 0 1
3255: PUSH
3256: LD_INT 22
3258: PUSH
3259: LD_INT 5
3261: PUSH
3262: EMPTY
3263: LIST
3264: LIST
3265: PUSH
3266: LD_INT 25
3268: PUSH
3269: LD_INT 2
3271: PUSH
3272: EMPTY
3273: LIST
3274: LIST
3275: PUSH
3276: EMPTY
3277: LIST
3278: LIST
3279: PPUSH
3280: CALL_OW 69
3284: PUSH
3285: LD_INT 1
3287: ARRAY
3288: ST_TO_ADDR
// if e = 0 then
3289: LD_VAR 0 1
3293: PUSH
3294: LD_INT 0
3296: EQUAL
3297: IFFALSE 3350
// begin e = FindMaxSkill ( QudsStay , class_engineer ) ;
3299: LD_ADDR_VAR 0 1
3303: PUSH
3304: LD_EXP 8
3308: PPUSH
3309: LD_INT 2
3311: PPUSH
3312: CALL_OW 433
3316: ST_TO_ADDR
// ComExitBuilding ( e ) ;
3317: LD_VAR 0 1
3321: PPUSH
3322: CALL_OW 122
// AddComEnterUnit ( e , qd ) ;
3326: LD_VAR 0 1
3330: PPUSH
3331: LD_INT 3
3333: PPUSH
3334: CALL_OW 180
// AddComChangeProfession ( e , class_engineer ) ;
3338: LD_VAR 0 1
3342: PPUSH
3343: LD_INT 2
3345: PPUSH
3346: CALL_OW 183
// end ; AddComCollect ( e , GetListOfCratesInArea ( QudsCratesArea ) [ 1 ] , GetListOfCratesInArea ( QudsCratesArea ) [ 2 ] ) ;
3350: LD_VAR 0 1
3354: PPUSH
3355: LD_INT 5
3357: PPUSH
3358: CALL_OW 435
3362: PUSH
3363: LD_INT 1
3365: ARRAY
3366: PPUSH
3367: LD_INT 5
3369: PPUSH
3370: CALL_OW 435
3374: PUSH
3375: LD_INT 2
3377: ARRAY
3378: PPUSH
3379: CALL_OW 177
// end ;
3383: PPOPN 1
3385: END
// every 0 0$5 trigger GetSide ( qf ) = 5 do var i ;
3386: LD_INT 6
3388: PPUSH
3389: CALL_OW 255
3393: PUSH
3394: LD_INT 5
3396: EQUAL
3397: IFFALSE 3543
3399: GO 3401
3401: DISABLE
3402: LD_INT 0
3404: PPUSH
// begin enable ;
3405: ENABLE
// i = Rand ( 1 , 3 ) ;
3406: LD_ADDR_VAR 0 1
3410: PUSH
3411: LD_INT 1
3413: PPUSH
3414: LD_INT 3
3416: PPUSH
3417: CALL_OW 12
3421: ST_TO_ADDR
// if not IsBusy ( qf ) then
3422: LD_INT 6
3424: PPUSH
3425: CALL_OW 315
3429: NOT
3430: IFFALSE 3485
// ComConstruct ( qf , [ ar_hovercraft , ar_light_trike , ar_medium_trike ] [ i ] , engine_solar , control_manual , [ ar_double_machine_gun , ar_double_machine_gun , ar_multimissile_ballista ] [ i ] ) ;
3432: LD_INT 6
3434: PPUSH
3435: LD_INT 11
3437: PUSH
3438: LD_INT 12
3440: PUSH
3441: LD_INT 13
3443: PUSH
3444: EMPTY
3445: LIST
3446: LIST
3447: LIST
3448: PUSH
3449: LD_VAR 0 1
3453: ARRAY
3454: PPUSH
3455: LD_INT 2
3457: PPUSH
3458: LD_INT 1
3460: PPUSH
3461: LD_INT 24
3463: PUSH
3464: LD_INT 24
3466: PUSH
3467: LD_INT 22
3469: PUSH
3470: EMPTY
3471: LIST
3472: LIST
3473: LIST
3474: PUSH
3475: LD_VAR 0 1
3479: ARRAY
3480: PPUSH
3481: CALL_OW 125
// if UnitsInside ( qf ) = 0 then
3485: LD_INT 6
3487: PPUSH
3488: CALL_OW 313
3492: PUSH
3493: LD_INT 0
3495: EQUAL
3496: IFFALSE 3543
// begin ComExitBuilding ( QudsGo [ 1 ] ) ;
3498: LD_EXP 9
3502: PUSH
3503: LD_INT 1
3505: ARRAY
3506: PPUSH
3507: CALL_OW 122
// AddComEnterUnit ( QudsGo [ 1 ] , qf ) ;
3511: LD_EXP 9
3515: PUSH
3516: LD_INT 1
3518: ARRAY
3519: PPUSH
3520: LD_INT 6
3522: PPUSH
3523: CALL_OW 180
// AddComChangeProfession ( QudsGo [ 1 ] , class_mechanic ) ;
3527: LD_EXP 9
3531: PUSH
3532: LD_INT 1
3534: ARRAY
3535: PPUSH
3536: LD_INT 3
3538: PPUSH
3539: CALL_OW 183
// end ; end ;
3543: PPOPN 1
3545: END
// every 0 0$1 trigger EscapeVehs = 2 do var i , j , u , v ; var path ;
3546: LD_EXP 16
3550: PUSH
3551: LD_INT 2
3553: EQUAL
3554: IFFALSE 3859
3556: GO 3558
3558: DISABLE
3559: LD_INT 0
3561: PPUSH
3562: PPUSH
3563: PPUSH
3564: PPUSH
3565: PPUSH
// begin enable ;
3566: ENABLE
// v = EscapeVehs ;
3567: LD_ADDR_VAR 0 4
3571: PUSH
3572: LD_EXP 16
3576: ST_TO_ADDR
// EscapeVehs = [ ] ;
3577: LD_ADDR_EXP 16
3581: PUSH
3582: EMPTY
3583: ST_TO_ADDR
// Wait ( 0 0$15 ) ;
3584: LD_INT 525
3586: PPUSH
3587: CALL_OW 67
// u = QudsGo [ 1 ] ^ QudsGo [ 2 ] ;
3591: LD_ADDR_VAR 0 3
3595: PUSH
3596: LD_EXP 9
3600: PUSH
3601: LD_INT 1
3603: ARRAY
3604: PUSH
3605: LD_EXP 9
3609: PUSH
3610: LD_INT 2
3612: ARRAY
3613: ADD
3614: ST_TO_ADDR
// QudsGo = QudsGo diff u ;
3615: LD_ADDR_EXP 9
3619: PUSH
3620: LD_EXP 9
3624: PUSH
3625: LD_VAR 0 3
3629: DIFF
3630: ST_TO_ADDR
// path = [ [ 54 , 28 ] , [ 80 , 36 ] , [ 100 , 52 ] , [ 112 , 30 ] , [ 116 , 12 ] , [ 122 , 7 ] ] ;
3631: LD_ADDR_VAR 0 5
3635: PUSH
3636: LD_INT 54
3638: PUSH
3639: LD_INT 28
3641: PUSH
3642: EMPTY
3643: LIST
3644: LIST
3645: PUSH
3646: LD_INT 80
3648: PUSH
3649: LD_INT 36
3651: PUSH
3652: EMPTY
3653: LIST
3654: LIST
3655: PUSH
3656: LD_INT 100
3658: PUSH
3659: LD_INT 52
3661: PUSH
3662: EMPTY
3663: LIST
3664: LIST
3665: PUSH
3666: LD_INT 112
3668: PUSH
3669: LD_INT 30
3671: PUSH
3672: EMPTY
3673: LIST
3674: LIST
3675: PUSH
3676: LD_INT 116
3678: PUSH
3679: LD_INT 12
3681: PUSH
3682: EMPTY
3683: LIST
3684: LIST
3685: PUSH
3686: LD_INT 122
3688: PUSH
3689: LD_INT 7
3691: PUSH
3692: EMPTY
3693: LIST
3694: LIST
3695: PUSH
3696: EMPTY
3697: LIST
3698: LIST
3699: LIST
3700: LIST
3701: LIST
3702: LIST
3703: ST_TO_ADDR
// for i = 1 to u do
3704: LD_ADDR_VAR 0 1
3708: PUSH
3709: DOUBLE
3710: LD_INT 1
3712: DEC
3713: ST_TO_ADDR
3714: LD_VAR 0 3
3718: PUSH
3719: FOR_TO
3720: IFFALSE 3815
// begin ComExitBuilding ( u [ i ] ) ;
3722: LD_VAR 0 3
3726: PUSH
3727: LD_VAR 0 1
3731: ARRAY
3732: PPUSH
3733: CALL_OW 122
// AddComEnterUnit ( u [ i ] , v [ i ] ) ;
3737: LD_VAR 0 3
3741: PUSH
3742: LD_VAR 0 1
3746: ARRAY
3747: PPUSH
3748: LD_VAR 0 4
3752: PUSH
3753: LD_VAR 0 1
3757: ARRAY
3758: PPUSH
3759: CALL_OW 180
// for j in path do
3763: LD_ADDR_VAR 0 2
3767: PUSH
3768: LD_VAR 0 5
3772: PUSH
3773: FOR_IN
3774: IFFALSE 3811
// AddComMoveXY ( u [ i ] , j [ 1 ] , j [ 2 ] ) ;
3776: LD_VAR 0 3
3780: PUSH
3781: LD_VAR 0 1
3785: ARRAY
3786: PPUSH
3787: LD_VAR 0 2
3791: PUSH
3792: LD_INT 1
3794: ARRAY
3795: PPUSH
3796: LD_VAR 0 2
3800: PUSH
3801: LD_INT 2
3803: ARRAY
3804: PPUSH
3805: CALL_OW 171
3809: GO 3773
3811: POP
3812: POP
// end ;
3813: GO 3719
3815: POP
3816: POP
// if QudsGo = 0 then
3817: LD_EXP 9
3821: PUSH
3822: LD_INT 0
3824: EQUAL
3825: IFFALSE 3859
// begin TotalControl = true ;
3827: LD_ADDR_EXP 15
3831: PUSH
3832: LD_INT 1
3834: ST_TO_ADDR
// disable ;
3835: DISABLE
// DialogueKaaba ;
3836: CALL 2575 0 0
// ComStop ( FilterAllUnits ( [ f_side , 2 ] ) ) ;
3840: LD_INT 22
3842: PUSH
3843: LD_INT 2
3845: PUSH
3846: EMPTY
3847: LIST
3848: LIST
3849: PPUSH
3850: CALL_OW 69
3854: PPUSH
3855: CALL_OW 141
// end ; end ;
3859: PPOPN 5
3861: END
// every 0 0$1 trigger FilterUnitsInArea ( ExitArea , [ f_side , 5 ] ) do var i ;
3862: LD_INT 4
3864: PPUSH
3865: LD_INT 22
3867: PUSH
3868: LD_INT 5
3870: PUSH
3871: EMPTY
3872: LIST
3873: LIST
3874: PPUSH
3875: CALL_OW 70
3879: IFFALSE 3927
3881: GO 3883
3883: DISABLE
3884: LD_INT 0
3886: PPUSH
// begin enable ;
3887: ENABLE
// for i in FilterUnitsInArea ( ExitArea , [ f_side , 5 ] ) do
3888: LD_ADDR_VAR 0 1
3892: PUSH
3893: LD_INT 4
3895: PPUSH
3896: LD_INT 22
3898: PUSH
3899: LD_INT 5
3901: PUSH
3902: EMPTY
3903: LIST
3904: LIST
3905: PPUSH
3906: CALL_OW 70
3910: PUSH
3911: FOR_IN
3912: IFFALSE 3925
// RemoveUnit ( i ) ;
3914: LD_VAR 0 1
3918: PPUSH
3919: CALL_OW 64
3923: GO 3911
3925: POP
3926: POP
// end ;
3927: PPOPN 1
3929: END
// export SpecialCharacters , SpecialEvacuated , OtherEvacuated ; every 0 0$3 trigger TotalControl = true do var i ;
3930: LD_EXP 15
3934: PUSH
3935: LD_INT 1
3937: EQUAL
3938: IFFALSE 4149
3940: GO 3942
3942: DISABLE
3943: LD_INT 0
3945: PPUSH
// begin enable ;
3946: ENABLE
// SpecialCharacters = [ Ende , Tarpan ] ;
3947: LD_ADDR_EXP 18
3951: PUSH
3952: LD_EXP 3
3956: PUSH
3957: LD_EXP 6
3961: PUSH
3962: EMPTY
3963: LIST
3964: LIST
3965: ST_TO_ADDR
// for i in FilterUnitsInArea ( ExitArea , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
3966: LD_ADDR_VAR 0 1
3970: PUSH
3971: LD_INT 4
3973: PPUSH
3974: LD_INT 22
3976: PUSH
3977: LD_INT 2
3979: PUSH
3980: EMPTY
3981: LIST
3982: LIST
3983: PUSH
3984: LD_INT 21
3986: PUSH
3987: LD_INT 2
3989: PUSH
3990: EMPTY
3991: LIST
3992: LIST
3993: PUSH
3994: EMPTY
3995: LIST
3996: LIST
3997: PPUSH
3998: CALL_OW 70
4002: PUSH
4003: FOR_IN
4004: IFFALSE 4147
// begin if IsDrivenBy ( i ) = Antoine then
4006: LD_VAR 0 1
4010: PPUSH
4011: CALL_OW 311
4015: PUSH
4016: LD_EXP 1
4020: EQUAL
4021: IFFALSE 4075
// begin if FilterUnitsExceptArea ( ExitArea , [ [ f_nation , nation_arabian ] , [ f_type , unit_human ] ] ) then
4023: LD_INT 4
4025: PPUSH
4026: LD_INT 23
4028: PUSH
4029: LD_INT 2
4031: PUSH
4032: EMPTY
4033: LIST
4034: LIST
4035: PUSH
4036: LD_INT 21
4038: PUSH
4039: LD_INT 1
4041: PUSH
4042: EMPTY
4043: LIST
4044: LIST
4045: PUSH
4046: EMPTY
4047: LIST
4048: LIST
4049: PPUSH
4050: CALL_OW 71
4054: IFFALSE 4069
// begin Query ( QCaptain ) ;
4056: LD_STRING QCaptain
4058: PPUSH
4059: CALL_OW 97
// exit ;
4063: POP
4064: POP
4065: GO 4149
// end else
4067: GO 4073
// Ending ;
4069: CALL 2901 0 0
// end else
4073: GO 4145
// begin if IsDrivenBy ( i ) in SpecialCharacters then
4075: LD_VAR 0 1
4079: PPUSH
4080: CALL_OW 311
4084: PUSH
4085: LD_EXP 18
4089: IN
4090: IFFALSE 4115
// SpecialEvacuated = SpecialEvacuated ^ IsDrivenBy ( i ) else
4092: LD_ADDR_EXP 19
4096: PUSH
4097: LD_EXP 19
4101: PUSH
4102: LD_VAR 0 1
4106: PPUSH
4107: CALL_OW 311
4111: ADD
4112: ST_TO_ADDR
4113: GO 4136
// OtherEvacuated = OtherEvacuated ^ IsDrivenBy ( i ) ;
4115: LD_ADDR_EXP 20
4119: PUSH
4120: LD_EXP 20
4124: PUSH
4125: LD_VAR 0 1
4129: PPUSH
4130: CALL_OW 311
4134: ADD
4135: ST_TO_ADDR
// RemoveUnit ( i ) ;
4136: LD_VAR 0 1
4140: PPUSH
4141: CALL_OW 64
// end ; end ;
4145: GO 4003
4147: POP
4148: POP
// end ; end_of_file
4149: PPOPN 1
4151: END
// export Losses ; every 0 0$1 do var i ;
4152: GO 4154
4154: DISABLE
4155: LD_INT 0
4157: PPUSH
// begin case tick of 1 .. 15 15$0 :
4158: LD_OWVAR 1
4162: PUSH
4163: LD_INT 1
4165: DOUBLE
4166: GREATEREQUAL
4167: IFFALSE 4175
4169: LD_INT 31500
4171: DOUBLE
4172: LESSEQUAL
4173: IFTRUE 4177
4175: GO 4195
4177: POP
// Wait ( Rand ( 1 1$0 , 2 2$0 ) ) ; 15 15$0 + 1 .. 35 35$0 :
4178: LD_INT 2100
4180: PPUSH
4181: LD_INT 4200
4183: PPUSH
4184: CALL_OW 12
4188: PPUSH
4189: CALL_OW 67
4193: GO 4283
4195: LD_INT 31500
4197: PUSH
4198: LD_INT 1
4200: PLUS
4201: DOUBLE
4202: GREATEREQUAL
4203: IFFALSE 4211
4205: LD_INT 73500
4207: DOUBLE
4208: LESSEQUAL
4209: IFTRUE 4213
4211: GO 4231
4213: POP
// Wait ( Rand ( 1 1$30 , 2 2$30 ) ) ; 35 35$0 + 1 .. 50 50$0 :
4214: LD_INT 3150
4216: PPUSH
4217: LD_INT 5250
4219: PPUSH
4220: CALL_OW 12
4224: PPUSH
4225: CALL_OW 67
4229: GO 4283
4231: LD_INT 73500
4233: PUSH
4234: LD_INT 1
4236: PLUS
4237: DOUBLE
4238: GREATEREQUAL
4239: IFFALSE 4247
4241: LD_INT 105000
4243: DOUBLE
4244: LESSEQUAL
4245: IFTRUE 4249
4247: GO 4267
4249: POP
// Wait ( Rand ( 1 1$0 , 2 2$0 ) ) ; else
4250: LD_INT 2100
4252: PPUSH
4253: LD_INT 4200
4255: PPUSH
4256: CALL_OW 12
4260: PPUSH
4261: CALL_OW 67
4265: GO 4283
4267: POP
// Wait ( Rand ( 3 3$0 , 5 5$0 ) ) ; end ;
4268: LD_INT 6300
4270: PPUSH
4271: LD_INT 10500
4273: PPUSH
4274: CALL_OW 12
4278: PPUSH
4279: CALL_OW 67
// for i in [ QudsCratesArea , EastCrates , AmericanBase ] do
4283: LD_ADDR_VAR 0 1
4287: PUSH
4288: LD_INT 5
4290: PUSH
4291: LD_INT 6
4293: PUSH
4294: LD_INT 7
4296: PUSH
4297: EMPTY
4298: LIST
4299: LIST
4300: LIST
4301: PUSH
4302: FOR_IN
4303: IFFALSE 4345
// begin CreateCratesArea ( Rand ( 3 , 5 ) , i , true ) ;
4305: LD_INT 3
4307: PPUSH
4308: LD_INT 5
4310: PPUSH
4311: CALL_OW 12
4315: PPUSH
4316: LD_VAR 0 1
4320: PPUSH
4321: LD_INT 1
4323: PPUSH
4324: CALL_OW 55
// Wait ( Rand ( 0 0$3 , 0 0$15 ) ) ;
4328: LD_INT 105
4330: PPUSH
4331: LD_INT 525
4333: PPUSH
4334: CALL_OW 12
4338: PPUSH
4339: CALL_OW 67
// end ;
4343: GO 4302
4345: POP
4346: POP
// enable ;
4347: ENABLE
// end ;
4348: PPOPN 1
4350: END
// on UnitDestroyed ( u ) do begin if u = Antoine then
4351: LD_VAR 0 1
4355: PUSH
4356: LD_EXP 1
4360: EQUAL
4361: IFFALSE 4370
// YouLost ( AntoineDead ) ;
4363: LD_STRING AntoineDead
4365: PPUSH
4366: CALL_OW 104
// if u = AntoineDepot and not TotalControl then
4370: LD_VAR 0 1
4374: PUSH
4375: LD_EXP 10
4379: EQUAL
4380: PUSH
4381: LD_EXP 15
4385: NOT
4386: AND
4387: IFFALSE 4396
// YouLost ( HillDown ) ;
4389: LD_STRING HillDown
4391: PPUSH
4392: CALL_OW 104
// if GetSide ( u ) = 2 and GetType ( u ) = unit_human and GetNation ( u ) <> nation_nature then
4396: LD_VAR 0 1
4400: PPUSH
4401: CALL_OW 255
4405: PUSH
4406: LD_INT 2
4408: EQUAL
4409: PUSH
4410: LD_VAR 0 1
4414: PPUSH
4415: CALL_OW 247
4419: PUSH
4420: LD_INT 1
4422: EQUAL
4423: AND
4424: PUSH
4425: LD_VAR 0 1
4429: PPUSH
4430: CALL_OW 248
4434: PUSH
4435: LD_INT 0
4437: NONEQUAL
4438: AND
4439: IFFALSE 4449
// Losses = true ;
4441: LD_ADDR_EXP 21
4445: PUSH
4446: LD_INT 1
4448: ST_TO_ADDR
// end ;
4449: PPOPN 1
4451: END
// every 0 0$1 do var i ;
4452: GO 4454
4454: DISABLE
4455: LD_INT 0
4457: PPUSH
// begin enable ;
4458: ENABLE
// for i in FilterAllUnits ( [ f_side , 5 ] ) do
4459: LD_ADDR_VAR 0 1
4463: PUSH
4464: LD_INT 22
4466: PUSH
4467: LD_INT 5
4469: PUSH
4470: EMPTY
4471: LIST
4472: LIST
4473: PPUSH
4474: CALL_OW 69
4478: PUSH
4479: FOR_IN
4480: IFFALSE 4533
// if SideShoot ( i ) = 2 then
4482: LD_VAR 0 1
4486: PPUSH
4487: CALL_OW 503
4491: PUSH
4492: LD_INT 2
4494: EQUAL
4495: IFFALSE 4531
// begin Wait ( 0 0$1 ) ;
4497: LD_INT 35
4499: PPUSH
4500: CALL_OW 67
// DialogueOn ;
4504: CALL_OW 6
// Say ( i , do-x-1 ) ;
4508: LD_VAR 0 1
4512: PPUSH
4513: LD_STRING do-x-1
4515: PPUSH
4516: CALL_OW 88
// DialogueOff ;
4520: CALL_OW 7
// YouLost ( OwnAttack ) ;
4524: LD_STRING OwnAttack
4526: PPUSH
4527: CALL_OW 104
// end ;
4531: GO 4479
4533: POP
4534: POP
// end ;
4535: PPOPN 1
4537: END
// on VehicleConstructed ( v , f ) do var m ;
4538: LD_INT 0
4540: PPUSH
// begin m = IsDrivenBy ( v ) ;
4541: LD_ADDR_VAR 0 3
4545: PUSH
4546: LD_VAR 0 1
4550: PPUSH
4551: CALL_OW 311
4555: ST_TO_ADDR
// if GetSide ( v ) = 5 then
4556: LD_VAR 0 1
4560: PPUSH
4561: CALL_OW 255
4565: PUSH
4566: LD_INT 5
4568: EQUAL
4569: IFFALSE 4641
// begin EscapeVehs = EscapeVehs ^ v ;
4571: LD_ADDR_EXP 16
4575: PUSH
4576: LD_EXP 16
4580: PUSH
4581: LD_VAR 0 1
4585: ADD
4586: ST_TO_ADDR
// ComMoveToArea ( v , QudsParking ) ;
4587: LD_VAR 0 1
4591: PPUSH
4592: LD_INT 2
4594: PPUSH
4595: CALL_OW 113
// AddComExitVehicle ( v ) ;
4599: LD_VAR 0 1
4603: PPUSH
4604: CALL_OW 181
// repeat Wait ( 0 0$1 ) until not IsInUnit ( m ) ;
4608: LD_INT 35
4610: PPUSH
4611: CALL_OW 67
4615: LD_VAR 0 3
4619: PPUSH
4620: CALL_OW 310
4624: NOT
4625: IFFALSE 4608
// ComEnterUnit ( m , f ) ;
4627: LD_VAR 0 3
4631: PPUSH
4632: LD_VAR 0 2
4636: PPUSH
4637: CALL_OW 120
// end ; if GetSide ( v ) = 1 then
4641: LD_VAR 0 1
4645: PPUSH
4646: CALL_OW 255
4650: PUSH
4651: LD_INT 1
4653: EQUAL
4654: IFFALSE 4672
// Vehs = Vehs ^ v ;
4656: LD_ADDR_EXP 23
4660: PUSH
4661: LD_EXP 23
4665: PUSH
4666: LD_VAR 0 1
4670: ADD
4671: ST_TO_ADDR
// end ; end_of_file
4672: PPOPN 3
4674: END
// export function PrepareAmericans ; var i ; begin
4675: LD_INT 0
4677: PPUSH
4678: PPUSH
// uc_side = 1 ;
4679: LD_ADDR_OWVAR 20
4683: PUSH
4684: LD_INT 1
4686: ST_TO_ADDR
// uc_nation = 1 ;
4687: LD_ADDR_OWVAR 21
4691: PUSH
4692: LD_INT 1
4694: ST_TO_ADDR
// InitHc ;
4695: CALL_OW 19
// PrepareBase ( 1 , AmericanBase , Rand ( 4 , 5 ) , [ 3 , 4 , 5 ] [ difficulty ] , 0 , 4 , 2 ) ;
4699: LD_INT 1
4701: PPUSH
4702: LD_INT 7
4704: PPUSH
4705: LD_INT 4
4707: PPUSH
4708: LD_INT 5
4710: PPUSH
4711: CALL_OW 12
4715: PPUSH
4716: LD_INT 3
4718: PUSH
4719: LD_INT 4
4721: PUSH
4722: LD_INT 5
4724: PUSH
4725: EMPTY
4726: LIST
4727: LIST
4728: LIST
4729: PUSH
4730: LD_OWVAR 67
4734: ARRAY
4735: PPUSH
4736: LD_INT 0
4738: PPUSH
4739: LD_INT 4
4741: PPUSH
4742: LD_INT 2
4744: PPUSH
4745: CALL 8058 0 7
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) do
4749: LD_ADDR_VAR 0 2
4753: PUSH
4754: LD_INT 22
4756: PUSH
4757: LD_INT 1
4759: PUSH
4760: EMPTY
4761: LIST
4762: LIST
4763: PUSH
4764: LD_INT 21
4766: PUSH
4767: LD_INT 2
4769: PUSH
4770: EMPTY
4771: LIST
4772: LIST
4773: PUSH
4774: EMPTY
4775: LIST
4776: LIST
4777: PPUSH
4778: CALL_OW 69
4782: PUSH
4783: FOR_IN
4784: IFFALSE 4861
// begin PrepareMechanic ( Rand ( 1 , 2 ) , [ Rand ( 2 , 5 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ) ;
4786: LD_INT 1
4788: PPUSH
4789: LD_INT 2
4791: PPUSH
4792: CALL_OW 12
4796: PPUSH
4797: LD_INT 2
4799: PPUSH
4800: LD_INT 5
4802: PPUSH
4803: CALL_OW 12
4807: PUSH
4808: LD_INT 3
4810: PPUSH
4811: LD_INT 5
4813: PPUSH
4814: CALL_OW 12
4818: PUSH
4819: LD_INT 4
4821: PPUSH
4822: LD_INT 5
4824: PPUSH
4825: CALL_OW 12
4829: PUSH
4830: EMPTY
4831: LIST
4832: LIST
4833: LIST
4834: PUSH
4835: LD_OWVAR 67
4839: ARRAY
4840: PPUSH
4841: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
4845: CALL_OW 44
4849: PPUSH
4850: LD_VAR 0 2
4854: PPUSH
4855: CALL_OW 52
// end ;
4859: GO 4783
4861: POP
4862: POP
// end ;
4863: LD_VAR 0 1
4867: RET
// export Engineers , Vehs , Buildings , Cargo ; export Targets , Enemies ; export AttackStrategy , DefenceStrategy , RepairStrategy , BaseStrategy ; every 0 0$1 do var i ;
4868: GO 4870
4870: DISABLE
4871: LD_INT 0
4873: PPUSH
// begin enable ;
4874: ENABLE
// Engineers = FilterUnitsInArea ( AmericanBase , [ [ f_side , 1 ] , [ f_or , [ f_class , class_engineer ] , [ f_class , class_apeman_engineer ] ] ] ) ^ FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_crane ] ] ) ^ UnitFilter ( UnitsInside ( ad ) , [ f_side , 1 ] ) ;
4875: LD_ADDR_EXP 22
4879: PUSH
4880: LD_INT 7
4882: PPUSH
4883: LD_INT 22
4885: PUSH
4886: LD_INT 1
4888: PUSH
4889: EMPTY
4890: LIST
4891: LIST
4892: PUSH
4893: LD_INT 2
4895: PUSH
4896: LD_INT 25
4898: PUSH
4899: LD_INT 2
4901: PUSH
4902: EMPTY
4903: LIST
4904: LIST
4905: PUSH
4906: LD_INT 25
4908: PUSH
4909: LD_INT 16
4911: PUSH
4912: EMPTY
4913: LIST
4914: LIST
4915: PUSH
4916: EMPTY
4917: LIST
4918: LIST
4919: LIST
4920: PUSH
4921: EMPTY
4922: LIST
4923: LIST
4924: PPUSH
4925: CALL_OW 70
4929: PUSH
4930: LD_INT 22
4932: PUSH
4933: LD_INT 1
4935: PUSH
4936: EMPTY
4937: LIST
4938: LIST
4939: PUSH
4940: LD_INT 34
4942: PUSH
4943: LD_INT 13
4945: PUSH
4946: EMPTY
4947: LIST
4948: LIST
4949: PUSH
4950: EMPTY
4951: LIST
4952: LIST
4953: PPUSH
4954: CALL_OW 69
4958: ADD
4959: PUSH
4960: LD_INT 40
4962: PPUSH
4963: CALL_OW 313
4967: PPUSH
4968: LD_INT 22
4970: PUSH
4971: LD_INT 1
4973: PUSH
4974: EMPTY
4975: LIST
4976: LIST
4977: PPUSH
4978: CALL_OW 72
4982: ADD
4983: ST_TO_ADDR
// Buildings = FilterUnitsInArea ( AmericanBase , [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) ;
4984: LD_ADDR_EXP 24
4988: PUSH
4989: LD_INT 7
4991: PPUSH
4992: LD_INT 22
4994: PUSH
4995: LD_INT 1
4997: PUSH
4998: EMPTY
4999: LIST
5000: LIST
5001: PUSH
5002: LD_INT 21
5004: PUSH
5005: LD_INT 3
5007: PUSH
5008: EMPTY
5009: LIST
5010: LIST
5011: PUSH
5012: EMPTY
5013: LIST
5014: LIST
5015: PPUSH
5016: CALL_OW 70
5020: ST_TO_ADDR
// if not ExistMc ( BaseStrategy ) then
5021: LD_EXP 31
5025: PPUSH
5026: CALL_OW 386
5030: NOT
5031: IFFALSE 5074
// BaseStrategy = McBase ( 1 , Engineers , GetBuildList ( GetBase ( ad ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
5033: LD_ADDR_EXP 31
5037: PUSH
5038: LD_INT 1
5040: PPUSH
5041: LD_EXP 22
5045: PPUSH
5046: LD_INT 40
5048: PPUSH
5049: CALL_OW 274
5053: PPUSH
5054: CALL_OW 417
5058: PPUSH
5059: EMPTY
5060: PPUSH
5061: EMPTY
5062: PPUSH
5063: LD_INT 1
5065: PUSH
5066: EMPTY
5067: LIST
5068: PPUSH
5069: CALL_OW 397
5073: ST_TO_ADDR
// if not ExistMc ( RepairStrategy ) and not FilterUnitsInArea ( AmericanDefenceArea , [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
5074: LD_EXP 30
5078: PPUSH
5079: CALL_OW 386
5083: NOT
5084: PUSH
5085: LD_INT 13
5087: PPUSH
5088: LD_INT 22
5090: PUSH
5091: LD_INT 2
5093: PUSH
5094: EMPTY
5095: LIST
5096: LIST
5097: PUSH
5098: LD_INT 101
5100: PUSH
5101: LD_INT 1
5103: PUSH
5104: EMPTY
5105: LIST
5106: LIST
5107: PUSH
5108: EMPTY
5109: LIST
5110: LIST
5111: PPUSH
5112: CALL_OW 70
5116: NOT
5117: AND
5118: IFFALSE 5156
// RepairStrategy = McRepair ( 2 , Engineers , Buildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
5120: LD_ADDR_EXP 30
5124: PUSH
5125: LD_INT 2
5127: PPUSH
5128: LD_EXP 22
5132: PPUSH
5133: LD_EXP 24
5137: PPUSH
5138: LD_INT 6
5140: PUSH
5141: LD_INT 1000
5143: PUSH
5144: EMPTY
5145: LIST
5146: LIST
5147: PUSH
5148: EMPTY
5149: LIST
5150: PPUSH
5151: CALL_OW 414
5155: ST_TO_ADDR
// if FilterUnitsInArea ( AmericanDefenceArea , [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
5156: LD_INT 13
5158: PPUSH
5159: LD_INT 22
5161: PUSH
5162: LD_INT 2
5164: PUSH
5165: EMPTY
5166: LIST
5167: LIST
5168: PUSH
5169: LD_INT 101
5171: PUSH
5172: LD_INT 1
5174: PUSH
5175: EMPTY
5176: LIST
5177: LIST
5178: PUSH
5179: EMPTY
5180: LIST
5181: LIST
5182: PPUSH
5183: CALL_OW 70
5187: IFFALSE 5227
// begin KillMc ( RepairStrategy ) ;
5189: LD_EXP 30
5193: PPUSH
5194: CALL_OW 387
// for i in Engineers do
5198: LD_ADDR_VAR 0 1
5202: PUSH
5203: LD_EXP 22
5207: PUSH
5208: FOR_IN
5209: IFFALSE 5225
// ComMoveToArea ( i , AmericanRepairs ) ;
5211: LD_VAR 0 1
5215: PPUSH
5216: LD_INT 8
5218: PPUSH
5219: CALL_OW 113
5223: GO 5208
5225: POP
5226: POP
// end ; Cargo = FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_cargo_bay ] ] ) ;
5227: LD_ADDR_EXP 25
5231: PUSH
5232: LD_INT 22
5234: PUSH
5235: LD_INT 1
5237: PUSH
5238: EMPTY
5239: LIST
5240: LIST
5241: PUSH
5242: LD_INT 34
5244: PUSH
5245: LD_INT 12
5247: PUSH
5248: EMPTY
5249: LIST
5250: LIST
5251: PUSH
5252: EMPTY
5253: LIST
5254: LIST
5255: PPUSH
5256: CALL_OW 69
5260: ST_TO_ADDR
// if GetListOfCratesInArea ( AmericanDefenceArea ) then
5261: LD_INT 13
5263: PPUSH
5264: CALL_OW 435
5268: IFFALSE 5303
// AddComCollect ( Cargo , GetListOfCratesInArea ( AmericanDefenceArea ) [ 1 ] , GetListOfCratesInArea ( AmericanDefenceArea ) [ 2 ] ) ;
5270: LD_EXP 25
5274: PPUSH
5275: LD_INT 13
5277: PPUSH
5278: CALL_OW 435
5282: PUSH
5283: LD_INT 1
5285: ARRAY
5286: PPUSH
5287: LD_INT 13
5289: PPUSH
5290: CALL_OW 435
5294: PUSH
5295: LD_INT 2
5297: ARRAY
5298: PPUSH
5299: CALL_OW 177
// end ;
5303: PPOPN 1
5305: END
// every 0 0$1 trigger tick > 3 3$30 do
5306: LD_OWVAR 1
5310: PUSH
5311: LD_INT 7350
5313: GREATER
5314: IFFALSE 5427
5316: GO 5318
5318: DISABLE
// begin enable ;
5319: ENABLE
// if not IsBusy ( af ) and Vehs < [ 2 , 3 , 3 ] [ difficulty ] and GetSide ( af ) = 1 then
5320: LD_INT 41
5322: PPUSH
5323: CALL_OW 315
5327: NOT
5328: PUSH
5329: LD_EXP 23
5333: PUSH
5334: LD_INT 2
5336: PUSH
5337: LD_INT 3
5339: PUSH
5340: LD_INT 3
5342: PUSH
5343: EMPTY
5344: LIST
5345: LIST
5346: LIST
5347: PUSH
5348: LD_OWVAR 67
5352: ARRAY
5353: LESS
5354: AND
5355: PUSH
5356: LD_INT 41
5358: PPUSH
5359: CALL_OW 255
5363: PUSH
5364: LD_INT 1
5366: EQUAL
5367: AND
5368: IFFALSE 5427
// AddComConstruct ( af , [ us_medium_tracked , us_heavy_tracked ] [ Rand ( 1 , 2 ) ] , engine_combustion , control_manual , [ us_gatling_gun , us_double_gun ] [ Rand ( 1 , 2 ) ] ) ;
5370: LD_INT 41
5372: PPUSH
5373: LD_INT 3
5375: PUSH
5376: LD_INT 4
5378: PUSH
5379: EMPTY
5380: LIST
5381: LIST
5382: PUSH
5383: LD_INT 1
5385: PPUSH
5386: LD_INT 2
5388: PPUSH
5389: CALL_OW 12
5393: ARRAY
5394: PPUSH
5395: LD_INT 1
5397: PPUSH
5398: LD_INT 1
5400: PPUSH
5401: LD_INT 4
5403: PUSH
5404: LD_INT 5
5406: PUSH
5407: EMPTY
5408: LIST
5409: LIST
5410: PUSH
5411: LD_INT 1
5413: PPUSH
5414: LD_INT 2
5416: PPUSH
5417: CALL_OW 12
5421: ARRAY
5422: PPUSH
5423: CALL_OW 185
// end ;
5427: END
// every 0 0$1 do
5428: GO 5430
5430: DISABLE
// Enemies = McRegistry ( 1 , [ [ mc_reg_area_to_protect , AmericanBase ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
5431: LD_ADDR_EXP 27
5435: PUSH
5436: LD_INT 1
5438: PPUSH
5439: LD_INT 3
5441: PUSH
5442: LD_INT 7
5444: PUSH
5445: EMPTY
5446: LIST
5447: LIST
5448: PUSH
5449: LD_INT 1
5451: PUSH
5452: LD_INT 35
5454: PUSH
5455: EMPTY
5456: LIST
5457: LIST
5458: PUSH
5459: EMPTY
5460: LIST
5461: LIST
5462: PPUSH
5463: CALL_OW 399
5467: ST_TO_ADDR
5468: END
// every 0 0$1 do
5469: GO 5471
5471: DISABLE
// Targets = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , AntoinePosition ] , mc_reg_ignore_fog ] ) ;
5472: LD_ADDR_EXP 26
5476: PUSH
5477: LD_INT 1
5479: PPUSH
5480: LD_INT 1
5482: PUSH
5483: LD_INT 105
5485: PUSH
5486: EMPTY
5487: LIST
5488: LIST
5489: PUSH
5490: LD_INT 2
5492: PUSH
5493: LD_INT 3
5495: PUSH
5496: EMPTY
5497: LIST
5498: LIST
5499: PUSH
5500: LD_INT 7
5502: PUSH
5503: EMPTY
5504: LIST
5505: LIST
5506: LIST
5507: PPUSH
5508: CALL_OW 399
5512: ST_TO_ADDR
5513: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) do var i , j , u , waiting_list ;
5514: LD_INT 22
5516: PUSH
5517: LD_INT 1
5519: PUSH
5520: EMPTY
5521: LIST
5522: LIST
5523: PUSH
5524: LD_INT 21
5526: PUSH
5527: LD_INT 2
5529: PUSH
5530: EMPTY
5531: LIST
5532: LIST
5533: PUSH
5534: EMPTY
5535: LIST
5536: LIST
5537: PPUSH
5538: CALL_OW 69
5542: IFFALSE 6213
5544: GO 5546
5546: DISABLE
5547: LD_INT 0
5549: PPUSH
5550: PPUSH
5551: PPUSH
5552: PPUSH
// begin enable ;
5553: ENABLE
// if not ExistMc ( DefenceStrategy ) and FilterUnitsInArea ( AmericanDefenceArea , [ [ f_side , 2 ] , [ f_ok ] ] ) then
5554: LD_EXP 29
5558: PPUSH
5559: CALL_OW 386
5563: NOT
5564: PUSH
5565: LD_INT 13
5567: PPUSH
5568: LD_INT 22
5570: PUSH
5571: LD_INT 2
5573: PUSH
5574: EMPTY
5575: LIST
5576: LIST
5577: PUSH
5578: LD_INT 50
5580: PUSH
5581: EMPTY
5582: LIST
5583: PUSH
5584: EMPTY
5585: LIST
5586: LIST
5587: PPUSH
5588: CALL_OW 70
5592: AND
5593: IFFALSE 5631
// DefenceStrategy = McDefend ( 2 , Enemies , Vehs , [ [ mc_def_advantage , 200 ] ] ) ;
5595: LD_ADDR_EXP 29
5599: PUSH
5600: LD_INT 2
5602: PPUSH
5603: LD_EXP 27
5607: PPUSH
5608: LD_EXP 23
5612: PPUSH
5613: LD_INT 1
5615: PUSH
5616: LD_INT 200
5618: PUSH
5619: EMPTY
5620: LIST
5621: LIST
5622: PUSH
5623: EMPTY
5624: LIST
5625: PPUSH
5626: CALL_OW 401
5630: ST_TO_ADDR
// if ExistMc ( DefenceStrategy ) and not FilterUnitsInArea ( AmericanDefenceArea , [ [ f_side , 2 ] , [ f_ok ] ] ) then
5631: LD_EXP 29
5635: PPUSH
5636: CALL_OW 386
5640: PUSH
5641: LD_INT 13
5643: PPUSH
5644: LD_INT 22
5646: PUSH
5647: LD_INT 2
5649: PUSH
5650: EMPTY
5651: LIST
5652: LIST
5653: PUSH
5654: LD_INT 50
5656: PUSH
5657: EMPTY
5658: LIST
5659: PUSH
5660: EMPTY
5661: LIST
5662: LIST
5663: PPUSH
5664: CALL_OW 70
5668: NOT
5669: AND
5670: IFFALSE 5681
// KillMc ( DefenceStrategy ) ;
5672: LD_EXP 29
5676: PPUSH
5677: CALL_OW 387
// for i in Vehs do
5681: LD_ADDR_VAR 0 1
5685: PUSH
5686: LD_EXP 23
5690: PUSH
5691: FOR_IN
5692: IFFALSE 5926
// begin if GetLives ( i ) = 1000 then
5694: LD_VAR 0 1
5698: PPUSH
5699: CALL_OW 256
5703: PUSH
5704: LD_INT 1000
5706: EQUAL
5707: IFFALSE 5725
// waiting_list = waiting_list ^ i ;
5709: LD_ADDR_VAR 0 4
5713: PUSH
5714: LD_VAR 0 4
5718: PUSH
5719: LD_VAR 0 1
5723: ADD
5724: ST_TO_ADDR
// if waiting_list >= 2 then
5725: LD_VAR 0 4
5729: PUSH
5730: LD_INT 2
5732: GREATEREQUAL
5733: IFFALSE 5815
// begin if ExistMc ( AttackStrategy ) then
5735: LD_EXP 28
5739: PPUSH
5740: CALL_OW 386
5744: IFFALSE 5779
// for j in waiting_list do
5746: LD_ADDR_VAR 0 2
5750: PUSH
5751: LD_VAR 0 4
5755: PUSH
5756: FOR_IN
5757: IFFALSE 5775
// AddMcUnits ( AttackStrategy , j ) else
5759: LD_EXP 28
5763: PPUSH
5764: LD_VAR 0 2
5768: PPUSH
5769: CALL_OW 390
5773: GO 5756
5775: POP
5776: POP
5777: GO 5808
// AttackStrategy = McAttack ( 1 , Targets , waiting_list , [ mc_murder ] ) ;
5779: LD_ADDR_EXP 28
5783: PUSH
5784: LD_INT 1
5786: PPUSH
5787: LD_EXP 26
5791: PPUSH
5792: LD_VAR 0 4
5796: PPUSH
5797: LD_INT 12
5799: PUSH
5800: EMPTY
5801: LIST
5802: PPUSH
5803: CALL_OW 402
5807: ST_TO_ADDR
// waiting_list = [ ] ;
5808: LD_ADDR_VAR 0 4
5812: PUSH
5813: EMPTY
5814: ST_TO_ADDR
// end ; if GetLives ( i ) < 600 then
5815: LD_VAR 0 1
5819: PPUSH
5820: CALL_OW 256
5824: PUSH
5825: LD_INT 600
5827: LESS
5828: IFFALSE 5856
// begin RemoveMcUnits ( AttackStrategy , i ) ;
5830: LD_EXP 28
5834: PPUSH
5835: LD_VAR 0 1
5839: PPUSH
5840: CALL_OW 391
// ComMoveToArea ( i , AmericanRepairs ) ;
5844: LD_VAR 0 1
5848: PPUSH
5849: LD_INT 8
5851: PPUSH
5852: CALL_OW 113
// end ; if IsInArea ( i , AmericanRepairs ) and GetFuel ( i ) < 40 then
5856: LD_VAR 0 1
5860: PPUSH
5861: LD_INT 8
5863: PPUSH
5864: CALL_OW 308
5868: PUSH
5869: LD_VAR 0 1
5873: PPUSH
5874: CALL_OW 261
5878: PUSH
5879: LD_INT 40
5881: LESS
5882: AND
5883: IFFALSE 5897
// SetFuel ( i , 100 ) ;
5885: LD_VAR 0 1
5889: PPUSH
5890: LD_INT 100
5892: PPUSH
5893: CALL_OW 240
// if IsDying ( i ) then
5897: LD_VAR 0 1
5901: PPUSH
5902: CALL_OW 303
5906: IFFALSE 5924
// Vehs = Vehs diff i ;
5908: LD_ADDR_EXP 23
5912: PUSH
5913: LD_EXP 23
5917: PUSH
5918: LD_VAR 0 1
5922: DIFF
5923: ST_TO_ADDR
// end ;
5924: GO 5691
5926: POP
5927: POP
// for i in FilterUnitsInArea ( AmericanRepairs , [ [ f_side , 1 ] , [ f_not , [ f_lives , 1000 ] ] , [ f_type , unit_vehicle ] ] ) do
5928: LD_ADDR_VAR 0 1
5932: PUSH
5933: LD_INT 8
5935: PPUSH
5936: LD_INT 22
5938: PUSH
5939: LD_INT 1
5941: PUSH
5942: EMPTY
5943: LIST
5944: LIST
5945: PUSH
5946: LD_INT 3
5948: PUSH
5949: LD_INT 24
5951: PUSH
5952: LD_INT 1000
5954: PUSH
5955: EMPTY
5956: LIST
5957: LIST
5958: PUSH
5959: EMPTY
5960: LIST
5961: LIST
5962: PUSH
5963: LD_INT 21
5965: PUSH
5966: LD_INT 2
5968: PUSH
5969: EMPTY
5970: LIST
5971: LIST
5972: PUSH
5973: EMPTY
5974: LIST
5975: LIST
5976: LIST
5977: PPUSH
5978: CALL_OW 70
5982: PUSH
5983: FOR_IN
5984: IFFALSE 6045
// if GetType ( i ) = unit_vehicle then
5986: LD_VAR 0 1
5990: PPUSH
5991: CALL_OW 247
5995: PUSH
5996: LD_INT 2
5998: EQUAL
5999: IFFALSE 6043
// begin u = IsDrivenBy ( i ) [ 1 ] ;
6001: LD_ADDR_VAR 0 3
6005: PUSH
6006: LD_VAR 0 1
6010: PPUSH
6011: CALL_OW 311
6015: PUSH
6016: LD_INT 1
6018: ARRAY
6019: ST_TO_ADDR
// ComExitVehicle ( u ) ;
6020: LD_VAR 0 3
6024: PPUSH
6025: CALL_OW 121
// AddComRepairVehicle ( u , i ) ;
6029: LD_VAR 0 3
6033: PPUSH
6034: LD_VAR 0 1
6038: PPUSH
6039: CALL_OW 189
// end ;
6043: GO 5983
6045: POP
6046: POP
// if not FilterUnitsInArea ( AmericanRepairs , [ [ f_side , 1 ] , [ f_not , [ f_lives , 1000 ] ] , [ f_type , unit_vehicle ] ] ) then
6047: LD_INT 8
6049: PPUSH
6050: LD_INT 22
6052: PUSH
6053: LD_INT 1
6055: PUSH
6056: EMPTY
6057: LIST
6058: LIST
6059: PUSH
6060: LD_INT 3
6062: PUSH
6063: LD_INT 24
6065: PUSH
6066: LD_INT 1000
6068: PUSH
6069: EMPTY
6070: LIST
6071: LIST
6072: PUSH
6073: EMPTY
6074: LIST
6075: LIST
6076: PUSH
6077: LD_INT 21
6079: PUSH
6080: LD_INT 2
6082: PUSH
6083: EMPTY
6084: LIST
6085: LIST
6086: PUSH
6087: EMPTY
6088: LIST
6089: LIST
6090: LIST
6091: PPUSH
6092: CALL_OW 70
6096: NOT
6097: IFFALSE 6213
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_mechanic ] , [ f_outside ] ] ) do
6099: LD_ADDR_VAR 0 1
6103: PUSH
6104: LD_INT 22
6106: PUSH
6107: LD_INT 1
6109: PUSH
6110: EMPTY
6111: LIST
6112: LIST
6113: PUSH
6114: LD_INT 25
6116: PUSH
6117: LD_INT 3
6119: PUSH
6120: EMPTY
6121: LIST
6122: LIST
6123: PUSH
6124: LD_INT 56
6126: PUSH
6127: EMPTY
6128: LIST
6129: PUSH
6130: EMPTY
6131: LIST
6132: LIST
6133: LIST
6134: PPUSH
6135: CALL_OW 69
6139: PUSH
6140: FOR_IN
6141: IFFALSE 6211
// if UnitFilter ( Vehs , [ f_empty ] ) then
6143: LD_EXP 23
6147: PPUSH
6148: LD_INT 58
6150: PUSH
6151: EMPTY
6152: LIST
6153: PPUSH
6154: CALL_OW 72
6158: IFFALSE 6197
// ComEnterUnit ( i , NearestUnitToUnit ( UnitFilter ( Vehs , [ f_empty ] ) , i ) ) else
6160: LD_VAR 0 1
6164: PPUSH
6165: LD_EXP 23
6169: PPUSH
6170: LD_INT 58
6172: PUSH
6173: EMPTY
6174: LIST
6175: PPUSH
6176: CALL_OW 72
6180: PPUSH
6181: LD_VAR 0 1
6185: PPUSH
6186: CALL_OW 74
6190: PPUSH
6191: CALL_OW 120
6195: GO 6209
// ComEnterUnit ( i , af ) ;
6197: LD_VAR 0 1
6201: PPUSH
6202: LD_INT 41
6204: PPUSH
6205: CALL_OW 120
6209: GO 6140
6211: POP
6212: POP
// end ; end_of_file
6213: PPOPN 4
6215: END
// export function PrepareAttack ( h , v , area , path ) ; var a , i , tmp ; begin
6216: LD_INT 0
6218: PPUSH
6219: PPUSH
6220: PPUSH
6221: PPUSH
// uc_side = 1 ;
6222: LD_ADDR_OWVAR 20
6226: PUSH
6227: LD_INT 1
6229: ST_TO_ADDR
// uc_nation = 1 ;
6230: LD_ADDR_OWVAR 21
6234: PUSH
6235: LD_INT 1
6237: ST_TO_ADDR
// InitHc ;
6238: CALL_OW 19
// for i = 1 to h do
6242: LD_ADDR_VAR 0 7
6246: PUSH
6247: DOUBLE
6248: LD_INT 1
6250: DEC
6251: ST_TO_ADDR
6252: LD_VAR 0 1
6256: PUSH
6257: FOR_TO
6258: IFFALSE 6332
// begin PrepareHuman ( false , class_soldier , [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ) ;
6260: LD_INT 0
6262: PPUSH
6263: LD_INT 1
6265: PPUSH
6266: LD_INT 3
6268: PPUSH
6269: LD_INT 4
6271: PPUSH
6272: CALL_OW 12
6276: PUSH
6277: LD_INT 3
6279: PPUSH
6280: LD_INT 5
6282: PPUSH
6283: CALL_OW 12
6287: PUSH
6288: LD_INT 4
6290: PPUSH
6291: LD_INT 5
6293: PPUSH
6294: CALL_OW 12
6298: PUSH
6299: EMPTY
6300: LIST
6301: LIST
6302: LIST
6303: PUSH
6304: LD_OWVAR 67
6308: ARRAY
6309: PPUSH
6310: CALL_OW 380
// tmp = tmp ^ CreateHuman ;
6314: LD_ADDR_VAR 0 8
6318: PUSH
6319: LD_VAR 0 8
6323: PUSH
6324: CALL_OW 44
6328: ADD
6329: ST_TO_ADDR
// end ;
6330: GO 6257
6332: POP
6333: POP
// for i = 1 to v do
6334: LD_ADDR_VAR 0 7
6338: PUSH
6339: DOUBLE
6340: LD_INT 1
6342: DEC
6343: ST_TO_ADDR
6344: LD_VAR 0 2
6348: PUSH
6349: FOR_TO
6350: IFFALSE 6444
// begin vc_chassis = [ us_medium_tracked , us_heavy_tracked ] [ Rand ( 1 , 2 ) ] ;
6352: LD_ADDR_OWVAR 37
6356: PUSH
6357: LD_INT 3
6359: PUSH
6360: LD_INT 4
6362: PUSH
6363: EMPTY
6364: LIST
6365: LIST
6366: PUSH
6367: LD_INT 1
6369: PPUSH
6370: LD_INT 2
6372: PPUSH
6373: CALL_OW 12
6377: ARRAY
6378: ST_TO_ADDR
// vc_engine = engine_combustion ;
6379: LD_ADDR_OWVAR 39
6383: PUSH
6384: LD_INT 1
6386: ST_TO_ADDR
// vc_control = control_manual ;
6387: LD_ADDR_OWVAR 38
6391: PUSH
6392: LD_INT 1
6394: ST_TO_ADDR
// vc_weapon = [ us_gatling_gun , us_light_gun , us_double_gun ] [ Rand ( 1 , 3 ) ] ;
6395: LD_ADDR_OWVAR 40
6399: PUSH
6400: LD_INT 4
6402: PUSH
6403: LD_INT 3
6405: PUSH
6406: LD_INT 5
6408: PUSH
6409: EMPTY
6410: LIST
6411: LIST
6412: LIST
6413: PUSH
6414: LD_INT 1
6416: PPUSH
6417: LD_INT 3
6419: PPUSH
6420: CALL_OW 12
6424: ARRAY
6425: ST_TO_ADDR
// tmp = tmp ^ CreateVehicle ;
6426: LD_ADDR_VAR 0 8
6430: PUSH
6431: LD_VAR 0 8
6435: PUSH
6436: CALL_OW 45
6440: ADD
6441: ST_TO_ADDR
// end ;
6442: GO 6349
6444: POP
6445: POP
// for i in tmp do
6446: LD_ADDR_VAR 0 7
6450: PUSH
6451: LD_VAR 0 8
6455: PUSH
6456: FOR_IN
6457: IFFALSE 6558
// begin PlaceUnitArea ( i , area , false ) ;
6459: LD_VAR 0 7
6463: PPUSH
6464: LD_VAR 0 3
6468: PPUSH
6469: LD_INT 0
6471: PPUSH
6472: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
6476: LD_VAR 0 7
6480: PPUSH
6481: CALL_OW 247
6485: PUSH
6486: LD_INT 2
6488: EQUAL
6489: IFFALSE 6556
// begin PrepareMechanic ( false , [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 3 , 5 ) ] [ difficulty ] ) ;
6491: LD_INT 0
6493: PPUSH
6494: LD_INT 3
6496: PPUSH
6497: LD_INT 4
6499: PPUSH
6500: CALL_OW 12
6504: PUSH
6505: LD_INT 3
6507: PPUSH
6508: LD_INT 5
6510: PPUSH
6511: CALL_OW 12
6515: PUSH
6516: LD_INT 3
6518: PPUSH
6519: LD_INT 5
6521: PPUSH
6522: CALL_OW 12
6526: PUSH
6527: EMPTY
6528: LIST
6529: LIST
6530: LIST
6531: PUSH
6532: LD_OWVAR 67
6536: ARRAY
6537: PPUSH
6538: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
6542: CALL_OW 44
6546: PPUSH
6547: LD_VAR 0 7
6551: PPUSH
6552: CALL_OW 52
// end ; end ;
6556: GO 6456
6558: POP
6559: POP
// a = McMove ( 1 , tmp , path , [ mc_move_agressive ] ) ;
6560: LD_ADDR_VAR 0 6
6564: PUSH
6565: LD_INT 1
6567: PPUSH
6568: LD_VAR 0 8
6572: PPUSH
6573: LD_VAR 0 4
6577: PPUSH
6578: LD_INT 6
6580: PUSH
6581: EMPTY
6582: LIST
6583: PPUSH
6584: CALL_OW 398
6588: ST_TO_ADDR
// end ;
6589: LD_VAR 0 5
6593: RET
// every 0 0$1 do
6594: GO 6596
6596: DISABLE
// begin enable ;
6597: ENABLE
// case tick of 12 12$0 :
6598: LD_OWVAR 1
6602: PUSH
6603: LD_INT 25200
6605: DOUBLE
6606: EQUAL
6607: IFTRUE 6611
6609: GO 6673
6611: POP
// PrepareAttack ( 2 , 1 , EastEnter , [ [ 143 , 97 ] , [ 124 , 48 ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ; 16 16$30 :
6612: LD_INT 2
6614: PPUSH
6615: LD_INT 1
6617: PPUSH
6618: LD_INT 11
6620: PPUSH
6621: LD_INT 143
6623: PUSH
6624: LD_INT 97
6626: PUSH
6627: EMPTY
6628: LIST
6629: LIST
6630: PUSH
6631: LD_INT 124
6633: PUSH
6634: LD_INT 48
6636: PUSH
6637: EMPTY
6638: LIST
6639: LIST
6640: PUSH
6641: LD_INT 73
6643: PUSH
6644: LD_INT 33
6646: PUSH
6647: EMPTY
6648: LIST
6649: LIST
6650: PUSH
6651: LD_INT 39
6653: PUSH
6654: LD_INT 28
6656: PUSH
6657: EMPTY
6658: LIST
6659: LIST
6660: PUSH
6661: EMPTY
6662: LIST
6663: LIST
6664: LIST
6665: LIST
6666: PPUSH
6667: CALL 6216 0 4
6671: GO 7732
6673: LD_INT 34650
6675: DOUBLE
6676: EQUAL
6677: IFTRUE 6681
6679: GO 6760
6681: POP
// PrepareAttack ( 3 , [ 1 , 2 , 2 ] [ difficulty ] , EastEnter , [ [ 143 , 97 ] , [ 124 , 48 ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ; 18 18$30 :
6682: LD_INT 3
6684: PPUSH
6685: LD_INT 1
6687: PUSH
6688: LD_INT 2
6690: PUSH
6691: LD_INT 2
6693: PUSH
6694: EMPTY
6695: LIST
6696: LIST
6697: LIST
6698: PUSH
6699: LD_OWVAR 67
6703: ARRAY
6704: PPUSH
6705: LD_INT 11
6707: PPUSH
6708: LD_INT 143
6710: PUSH
6711: LD_INT 97
6713: PUSH
6714: EMPTY
6715: LIST
6716: LIST
6717: PUSH
6718: LD_INT 124
6720: PUSH
6721: LD_INT 48
6723: PUSH
6724: EMPTY
6725: LIST
6726: LIST
6727: PUSH
6728: LD_INT 73
6730: PUSH
6731: LD_INT 33
6733: PUSH
6734: EMPTY
6735: LIST
6736: LIST
6737: PUSH
6738: LD_INT 39
6740: PUSH
6741: LD_INT 28
6743: PUSH
6744: EMPTY
6745: LIST
6746: LIST
6747: PUSH
6748: EMPTY
6749: LIST
6750: LIST
6751: LIST
6752: LIST
6753: PPUSH
6754: CALL 6216 0 4
6758: GO 7732
6760: LD_INT 38850
6762: DOUBLE
6763: EQUAL
6764: IFTRUE 6768
6766: GO 6819
6768: POP
// PrepareAttack ( 3 , 0 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ; 22 22$30 :
6769: LD_INT 3
6771: PPUSH
6772: LD_INT 0
6774: PPUSH
6775: LD_INT 10
6777: PPUSH
6778: LD_INT 72
6780: PUSH
6781: LD_INT 103
6783: PUSH
6784: EMPTY
6785: LIST
6786: LIST
6787: PUSH
6788: LD_INT 54
6790: PUSH
6791: LD_INT 70
6793: PUSH
6794: EMPTY
6795: LIST
6796: LIST
6797: PUSH
6798: LD_INT 35
6800: PUSH
6801: LD_INT 28
6803: PUSH
6804: EMPTY
6805: LIST
6806: LIST
6807: PUSH
6808: EMPTY
6809: LIST
6810: LIST
6811: LIST
6812: PPUSH
6813: CALL 6216 0 4
6817: GO 7732
6819: LD_INT 47250
6821: DOUBLE
6822: EQUAL
6823: IFTRUE 6827
6825: GO 7000
6827: POP
// if not TotalControl then
6828: LD_EXP 15
6832: NOT
6833: IFFALSE 6896
// PrepareAttack ( 0 , 1 , EastEnter , [ [ 143 , 97 ] , [ 124 , 48 ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) else
6835: LD_INT 0
6837: PPUSH
6838: LD_INT 1
6840: PPUSH
6841: LD_INT 11
6843: PPUSH
6844: LD_INT 143
6846: PUSH
6847: LD_INT 97
6849: PUSH
6850: EMPTY
6851: LIST
6852: LIST
6853: PUSH
6854: LD_INT 124
6856: PUSH
6857: LD_INT 48
6859: PUSH
6860: EMPTY
6861: LIST
6862: LIST
6863: PUSH
6864: LD_INT 73
6866: PUSH
6867: LD_INT 33
6869: PUSH
6870: EMPTY
6871: LIST
6872: LIST
6873: PUSH
6874: LD_INT 39
6876: PUSH
6877: LD_INT 28
6879: PUSH
6880: EMPTY
6881: LIST
6882: LIST
6883: PUSH
6884: EMPTY
6885: LIST
6886: LIST
6887: LIST
6888: LIST
6889: PPUSH
6890: CALL 6216 0 4
6894: GO 6998
// PrepareAttack ( 2 , [ 2 , 3 , 3 ] [ difficulty ] , EastEnter , [ [ 143 , 97 ] , [ [ 124 , 48 ] , [ 104 , 58 ] ] [ Rand ( 1 , 2 ) ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ; 24 24$0 :
6896: LD_INT 2
6898: PPUSH
6899: LD_INT 2
6901: PUSH
6902: LD_INT 3
6904: PUSH
6905: LD_INT 3
6907: PUSH
6908: EMPTY
6909: LIST
6910: LIST
6911: LIST
6912: PUSH
6913: LD_OWVAR 67
6917: ARRAY
6918: PPUSH
6919: LD_INT 11
6921: PPUSH
6922: LD_INT 143
6924: PUSH
6925: LD_INT 97
6927: PUSH
6928: EMPTY
6929: LIST
6930: LIST
6931: PUSH
6932: LD_INT 124
6934: PUSH
6935: LD_INT 48
6937: PUSH
6938: EMPTY
6939: LIST
6940: LIST
6941: PUSH
6942: LD_INT 104
6944: PUSH
6945: LD_INT 58
6947: PUSH
6948: EMPTY
6949: LIST
6950: LIST
6951: PUSH
6952: EMPTY
6953: LIST
6954: LIST
6955: PUSH
6956: LD_INT 1
6958: PPUSH
6959: LD_INT 2
6961: PPUSH
6962: CALL_OW 12
6966: ARRAY
6967: PUSH
6968: LD_INT 73
6970: PUSH
6971: LD_INT 33
6973: PUSH
6974: EMPTY
6975: LIST
6976: LIST
6977: PUSH
6978: LD_INT 39
6980: PUSH
6981: LD_INT 28
6983: PUSH
6984: EMPTY
6985: LIST
6986: LIST
6987: PUSH
6988: EMPTY
6989: LIST
6990: LIST
6991: LIST
6992: LIST
6993: PPUSH
6994: CALL 6216 0 4
6998: GO 7732
7000: LD_INT 50400
7002: DOUBLE
7003: EQUAL
7004: IFTRUE 7008
7006: GO 7082
7008: POP
// if TotalControl then
7009: LD_EXP 15
7013: IFFALSE 7080
// PrepareAttack ( [ 2 , 3 , 3 ] [ difficulty ] , 0 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ; 32 32$0 :
7015: LD_INT 2
7017: PUSH
7018: LD_INT 3
7020: PUSH
7021: LD_INT 3
7023: PUSH
7024: EMPTY
7025: LIST
7026: LIST
7027: LIST
7028: PUSH
7029: LD_OWVAR 67
7033: ARRAY
7034: PPUSH
7035: LD_INT 0
7037: PPUSH
7038: LD_INT 10
7040: PPUSH
7041: LD_INT 72
7043: PUSH
7044: LD_INT 103
7046: PUSH
7047: EMPTY
7048: LIST
7049: LIST
7050: PUSH
7051: LD_INT 54
7053: PUSH
7054: LD_INT 70
7056: PUSH
7057: EMPTY
7058: LIST
7059: LIST
7060: PUSH
7061: LD_INT 35
7063: PUSH
7064: LD_INT 28
7066: PUSH
7067: EMPTY
7068: LIST
7069: LIST
7070: PUSH
7071: EMPTY
7072: LIST
7073: LIST
7074: LIST
7075: PPUSH
7076: CALL 6216 0 4
7080: GO 7732
7082: LD_INT 67200
7084: DOUBLE
7085: EQUAL
7086: IFTRUE 7090
7088: GO 7243
7090: POP
// begin PrepareAttack ( 3 , 2 , EastEnter , [ [ 143 , 97 ] , [ [ 124 , 48 ] , [ 104 , 58 ] ] [ Rand ( 1 , 2 ) ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ;
7091: LD_INT 3
7093: PPUSH
7094: LD_INT 2
7096: PPUSH
7097: LD_INT 11
7099: PPUSH
7100: LD_INT 143
7102: PUSH
7103: LD_INT 97
7105: PUSH
7106: EMPTY
7107: LIST
7108: LIST
7109: PUSH
7110: LD_INT 124
7112: PUSH
7113: LD_INT 48
7115: PUSH
7116: EMPTY
7117: LIST
7118: LIST
7119: PUSH
7120: LD_INT 104
7122: PUSH
7123: LD_INT 58
7125: PUSH
7126: EMPTY
7127: LIST
7128: LIST
7129: PUSH
7130: EMPTY
7131: LIST
7132: LIST
7133: PUSH
7134: LD_INT 1
7136: PPUSH
7137: LD_INT 2
7139: PPUSH
7140: CALL_OW 12
7144: ARRAY
7145: PUSH
7146: LD_INT 73
7148: PUSH
7149: LD_INT 33
7151: PUSH
7152: EMPTY
7153: LIST
7154: LIST
7155: PUSH
7156: LD_INT 39
7158: PUSH
7159: LD_INT 28
7161: PUSH
7162: EMPTY
7163: LIST
7164: LIST
7165: PUSH
7166: EMPTY
7167: LIST
7168: LIST
7169: LIST
7170: LIST
7171: PPUSH
7172: CALL 6216 0 4
// PrepareAttack ( [ 2 , 3 , 3 ] [ difficulty ] , 0 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ;
7176: LD_INT 2
7178: PUSH
7179: LD_INT 3
7181: PUSH
7182: LD_INT 3
7184: PUSH
7185: EMPTY
7186: LIST
7187: LIST
7188: LIST
7189: PUSH
7190: LD_OWVAR 67
7194: ARRAY
7195: PPUSH
7196: LD_INT 0
7198: PPUSH
7199: LD_INT 10
7201: PPUSH
7202: LD_INT 72
7204: PUSH
7205: LD_INT 103
7207: PUSH
7208: EMPTY
7209: LIST
7210: LIST
7211: PUSH
7212: LD_INT 54
7214: PUSH
7215: LD_INT 70
7217: PUSH
7218: EMPTY
7219: LIST
7220: LIST
7221: PUSH
7222: LD_INT 35
7224: PUSH
7225: LD_INT 28
7227: PUSH
7228: EMPTY
7229: LIST
7230: LIST
7231: PUSH
7232: EMPTY
7233: LIST
7234: LIST
7235: LIST
7236: PPUSH
7237: CALL 6216 0 4
// end ; 35 35$30 :
7241: GO 7732
7243: LD_INT 74550
7245: DOUBLE
7246: EQUAL
7247: IFTRUE 7251
7249: GO 7302
7251: POP
// PrepareAttack ( 2 , 0 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ; 37 37$0 :
7252: LD_INT 2
7254: PPUSH
7255: LD_INT 0
7257: PPUSH
7258: LD_INT 10
7260: PPUSH
7261: LD_INT 72
7263: PUSH
7264: LD_INT 103
7266: PUSH
7267: EMPTY
7268: LIST
7269: LIST
7270: PUSH
7271: LD_INT 54
7273: PUSH
7274: LD_INT 70
7276: PUSH
7277: EMPTY
7278: LIST
7279: LIST
7280: PUSH
7281: LD_INT 35
7283: PUSH
7284: LD_INT 28
7286: PUSH
7287: EMPTY
7288: LIST
7289: LIST
7290: PUSH
7291: EMPTY
7292: LIST
7293: LIST
7294: LIST
7295: PPUSH
7296: CALL 6216 0 4
7300: GO 7732
7302: LD_INT 77700
7304: DOUBLE
7305: EQUAL
7306: IFTRUE 7310
7308: GO 7398
7310: POP
// PrepareAttack ( 1 , 3 , EastEnter , [ [ 143 , 97 ] , [ [ 124 , 48 ] , [ 104 , 58 ] ] [ Rand ( 1 , 2 ) ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ; 45 45$0 :
7311: LD_INT 1
7313: PPUSH
7314: LD_INT 3
7316: PPUSH
7317: LD_INT 11
7319: PPUSH
7320: LD_INT 143
7322: PUSH
7323: LD_INT 97
7325: PUSH
7326: EMPTY
7327: LIST
7328: LIST
7329: PUSH
7330: LD_INT 124
7332: PUSH
7333: LD_INT 48
7335: PUSH
7336: EMPTY
7337: LIST
7338: LIST
7339: PUSH
7340: LD_INT 104
7342: PUSH
7343: LD_INT 58
7345: PUSH
7346: EMPTY
7347: LIST
7348: LIST
7349: PUSH
7350: EMPTY
7351: LIST
7352: LIST
7353: PUSH
7354: LD_INT 1
7356: PPUSH
7357: LD_INT 2
7359: PPUSH
7360: CALL_OW 12
7364: ARRAY
7365: PUSH
7366: LD_INT 73
7368: PUSH
7369: LD_INT 33
7371: PUSH
7372: EMPTY
7373: LIST
7374: LIST
7375: PUSH
7376: LD_INT 39
7378: PUSH
7379: LD_INT 28
7381: PUSH
7382: EMPTY
7383: LIST
7384: LIST
7385: PUSH
7386: EMPTY
7387: LIST
7388: LIST
7389: LIST
7390: LIST
7391: PPUSH
7392: CALL 6216 0 4
7396: GO 7732
7398: LD_INT 94500
7400: DOUBLE
7401: EQUAL
7402: IFTRUE 7406
7404: GO 7559
7406: POP
// begin PrepareAttack ( 2 , [ 2 , 3 , 3 ] [ difficulty ] , EastEnter , [ [ 143 , 97 ] , [ [ 124 , 48 ] , [ 104 , 58 ] ] [ Rand ( 1 , 2 ) ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ;
7407: LD_INT 2
7409: PPUSH
7410: LD_INT 2
7412: PUSH
7413: LD_INT 3
7415: PUSH
7416: LD_INT 3
7418: PUSH
7419: EMPTY
7420: LIST
7421: LIST
7422: LIST
7423: PUSH
7424: LD_OWVAR 67
7428: ARRAY
7429: PPUSH
7430: LD_INT 11
7432: PPUSH
7433: LD_INT 143
7435: PUSH
7436: LD_INT 97
7438: PUSH
7439: EMPTY
7440: LIST
7441: LIST
7442: PUSH
7443: LD_INT 124
7445: PUSH
7446: LD_INT 48
7448: PUSH
7449: EMPTY
7450: LIST
7451: LIST
7452: PUSH
7453: LD_INT 104
7455: PUSH
7456: LD_INT 58
7458: PUSH
7459: EMPTY
7460: LIST
7461: LIST
7462: PUSH
7463: EMPTY
7464: LIST
7465: LIST
7466: PUSH
7467: LD_INT 1
7469: PPUSH
7470: LD_INT 2
7472: PPUSH
7473: CALL_OW 12
7477: ARRAY
7478: PUSH
7479: LD_INT 73
7481: PUSH
7482: LD_INT 33
7484: PUSH
7485: EMPTY
7486: LIST
7487: LIST
7488: PUSH
7489: LD_INT 39
7491: PUSH
7492: LD_INT 28
7494: PUSH
7495: EMPTY
7496: LIST
7497: LIST
7498: PUSH
7499: EMPTY
7500: LIST
7501: LIST
7502: LIST
7503: LIST
7504: PPUSH
7505: CALL 6216 0 4
// PrepareAttack ( 3 , 0 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ;
7509: LD_INT 3
7511: PPUSH
7512: LD_INT 0
7514: PPUSH
7515: LD_INT 10
7517: PPUSH
7518: LD_INT 72
7520: PUSH
7521: LD_INT 103
7523: PUSH
7524: EMPTY
7525: LIST
7526: LIST
7527: PUSH
7528: LD_INT 54
7530: PUSH
7531: LD_INT 70
7533: PUSH
7534: EMPTY
7535: LIST
7536: LIST
7537: PUSH
7538: LD_INT 35
7540: PUSH
7541: LD_INT 28
7543: PUSH
7544: EMPTY
7545: LIST
7546: LIST
7547: PUSH
7548: EMPTY
7549: LIST
7550: LIST
7551: LIST
7552: PPUSH
7553: CALL 6216 0 4
// end ; 47 47$30 :
7557: GO 7732
7559: LD_INT 99750
7561: DOUBLE
7562: EQUAL
7563: IFTRUE 7567
7565: GO 7672
7567: POP
// PrepareAttack ( 3 , [ 2 , 3 , 3 ] [ difficulty ] , EastEnter , [ [ 143 , 97 ] , [ [ 124 , 48 ] , [ 104 , 58 ] ] [ Rand ( 1 , 2 ) ] , [ 73 , 33 ] , [ 39 , 28 ] ] ) ; 48 48$0 :
7568: LD_INT 3
7570: PPUSH
7571: LD_INT 2
7573: PUSH
7574: LD_INT 3
7576: PUSH
7577: LD_INT 3
7579: PUSH
7580: EMPTY
7581: LIST
7582: LIST
7583: LIST
7584: PUSH
7585: LD_OWVAR 67
7589: ARRAY
7590: PPUSH
7591: LD_INT 11
7593: PPUSH
7594: LD_INT 143
7596: PUSH
7597: LD_INT 97
7599: PUSH
7600: EMPTY
7601: LIST
7602: LIST
7603: PUSH
7604: LD_INT 124
7606: PUSH
7607: LD_INT 48
7609: PUSH
7610: EMPTY
7611: LIST
7612: LIST
7613: PUSH
7614: LD_INT 104
7616: PUSH
7617: LD_INT 58
7619: PUSH
7620: EMPTY
7621: LIST
7622: LIST
7623: PUSH
7624: EMPTY
7625: LIST
7626: LIST
7627: PUSH
7628: LD_INT 1
7630: PPUSH
7631: LD_INT 2
7633: PPUSH
7634: CALL_OW 12
7638: ARRAY
7639: PUSH
7640: LD_INT 73
7642: PUSH
7643: LD_INT 33
7645: PUSH
7646: EMPTY
7647: LIST
7648: LIST
7649: PUSH
7650: LD_INT 39
7652: PUSH
7653: LD_INT 28
7655: PUSH
7656: EMPTY
7657: LIST
7658: LIST
7659: PUSH
7660: EMPTY
7661: LIST
7662: LIST
7663: LIST
7664: LIST
7665: PPUSH
7666: CALL 6216 0 4
7670: GO 7732
7672: LD_INT 100800
7674: DOUBLE
7675: EQUAL
7676: IFTRUE 7680
7678: GO 7731
7680: POP
// PrepareAttack ( 0 , 3 , WestEnter , [ [ 72 , 103 ] , [ 54 , 70 ] , [ 35 , 28 ] ] ) ; end ;
7681: LD_INT 0
7683: PPUSH
7684: LD_INT 3
7686: PPUSH
7687: LD_INT 10
7689: PPUSH
7690: LD_INT 72
7692: PUSH
7693: LD_INT 103
7695: PUSH
7696: EMPTY
7697: LIST
7698: LIST
7699: PUSH
7700: LD_INT 54
7702: PUSH
7703: LD_INT 70
7705: PUSH
7706: EMPTY
7707: LIST
7708: LIST
7709: PUSH
7710: LD_INT 35
7712: PUSH
7713: LD_INT 28
7715: PUSH
7716: EMPTY
7717: LIST
7718: LIST
7719: PUSH
7720: EMPTY
7721: LIST
7722: LIST
7723: LIST
7724: PPUSH
7725: CALL 6216 0 4
7729: GO 7732
7731: POP
// end ;
7732: END
// every 4 4$0 trigger IsOK ( aradar ) do var i , path ;
7733: LD_INT 96
7735: PPUSH
7736: CALL_OW 302
7740: IFFALSE 7853
7742: GO 7744
7744: DISABLE
7745: LD_INT 0
7747: PPUSH
7748: PPUSH
// begin enable ;
7749: ENABLE
// path = [ [ 122 , 76 ] , [ 90 , 50 ] , [ 73 , 76 ] , [ 94 , 119 ] ] ;
7750: LD_ADDR_VAR 0 2
7754: PUSH
7755: LD_INT 122
7757: PUSH
7758: LD_INT 76
7760: PUSH
7761: EMPTY
7762: LIST
7763: LIST
7764: PUSH
7765: LD_INT 90
7767: PUSH
7768: LD_INT 50
7770: PUSH
7771: EMPTY
7772: LIST
7773: LIST
7774: PUSH
7775: LD_INT 73
7777: PUSH
7778: LD_INT 76
7780: PUSH
7781: EMPTY
7782: LIST
7783: LIST
7784: PUSH
7785: LD_INT 94
7787: PUSH
7788: LD_INT 119
7790: PUSH
7791: EMPTY
7792: LIST
7793: LIST
7794: PUSH
7795: EMPTY
7796: LIST
7797: LIST
7798: LIST
7799: LIST
7800: ST_TO_ADDR
// SetFuel ( aradar , 100 ) ;
7801: LD_INT 96
7803: PPUSH
7804: LD_INT 100
7806: PPUSH
7807: CALL_OW 240
// for i in path do
7811: LD_ADDR_VAR 0 1
7815: PUSH
7816: LD_VAR 0 2
7820: PUSH
7821: FOR_IN
7822: IFFALSE 7851
// AddComMoveXY ( aradar , i [ 1 ] , i [ 2 ] ) ;
7824: LD_INT 96
7826: PPUSH
7827: LD_VAR 0 1
7831: PUSH
7832: LD_INT 1
7834: ARRAY
7835: PPUSH
7836: LD_VAR 0 1
7840: PUSH
7841: LD_INT 2
7843: ARRAY
7844: PPUSH
7845: CALL_OW 171
7849: GO 7821
7851: POP
7852: POP
// end ;
7853: PPOPN 2
7855: END
// every 0 0$5 trigger FilterUnitsInArea ( AntoinePosition , [ f_side , 1 ] ) do var i ;
7856: LD_INT 3
7858: PPUSH
7859: LD_INT 22
7861: PUSH
7862: LD_INT 1
7864: PUSH
7865: EMPTY
7866: LIST
7867: LIST
7868: PPUSH
7869: CALL_OW 70
7873: IFFALSE 7958
7875: GO 7877
7877: DISABLE
7878: LD_INT 0
7880: PPUSH
// begin enable ;
7881: ENABLE
// for i in FilterUnitsInArea ( AntoinePosition , [ f_side , 1 ] ) do
7882: LD_ADDR_VAR 0 1
7886: PUSH
7887: LD_INT 3
7889: PPUSH
7890: LD_INT 22
7892: PUSH
7893: LD_INT 1
7895: PUSH
7896: EMPTY
7897: LIST
7898: LIST
7899: PPUSH
7900: CALL_OW 70
7904: PUSH
7905: FOR_IN
7906: IFFALSE 7956
// if not HasTask ( i ) then
7908: LD_VAR 0 1
7912: PPUSH
7913: CALL_OW 314
7917: NOT
7918: IFFALSE 7954
// ComAttackUnit ( i , NearestUnitToUnit ( FilterAllUnits ( [ f_side , 2 ] ) , i ) ) ;
7920: LD_VAR 0 1
7924: PPUSH
7925: LD_INT 22
7927: PUSH
7928: LD_INT 2
7930: PUSH
7931: EMPTY
7932: LIST
7933: LIST
7934: PPUSH
7935: CALL_OW 69
7939: PPUSH
7940: LD_VAR 0 1
7944: PPUSH
7945: CALL_OW 74
7949: PPUSH
7950: CALL_OW 115
7954: GO 7905
7956: POP
7957: POP
// end ;
7958: PPOPN 1
7960: END
// on DestinationUnreachable ( u ) do begin if GetSide ( u ) = 1 then
7961: LD_VAR 0 1
7965: PPUSH
7966: CALL_OW 255
7970: PUSH
7971: LD_INT 1
7973: EQUAL
7974: IFFALSE 8055
// if GetWeapon ( u ) <> us_radar and GetWeapon ( u ) <> us_cargo_bay and GetWeapon ( u ) <> us_crane then
7976: LD_VAR 0 1
7980: PPUSH
7981: CALL_OW 264
7985: PUSH
7986: LD_INT 11
7988: NONEQUAL
7989: PUSH
7990: LD_VAR 0 1
7994: PPUSH
7995: CALL_OW 264
7999: PUSH
8000: LD_INT 12
8002: NONEQUAL
8003: AND
8004: PUSH
8005: LD_VAR 0 1
8009: PPUSH
8010: CALL_OW 264
8014: PUSH
8015: LD_INT 13
8017: NONEQUAL
8018: AND
8019: IFFALSE 8055
// ComAttackUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ f_side , 2 ] ) , u ) ) ;
8021: LD_VAR 0 1
8025: PPUSH
8026: LD_INT 22
8028: PUSH
8029: LD_INT 2
8031: PUSH
8032: EMPTY
8033: LIST
8034: LIST
8035: PPUSH
8036: CALL_OW 69
8040: PPUSH
8041: LD_VAR 0 1
8045: PPUSH
8046: CALL_OW 74
8050: PPUSH
8051: CALL_OW 115
// end ; end_of_file
8055: PPOPN 1
8057: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
8058: LD_INT 0
8060: PPUSH
8061: PPUSH
8062: PPUSH
8063: PPUSH
// InitHc ;
8064: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
8068: LD_ADDR_VAR 0 9
8072: PUSH
8073: LD_VAR 0 2
8077: PPUSH
8078: LD_INT 22
8080: PUSH
8081: LD_VAR 0 1
8085: PUSH
8086: EMPTY
8087: LIST
8088: LIST
8089: PUSH
8090: LD_INT 21
8092: PUSH
8093: LD_INT 3
8095: PUSH
8096: EMPTY
8097: LIST
8098: LIST
8099: PUSH
8100: EMPTY
8101: LIST
8102: LIST
8103: PPUSH
8104: CALL_OW 70
8108: PUSH
8109: FOR_IN
8110: IFFALSE 8597
// case GetBType ( i ) of b_depot , b_warehouse :
8112: LD_VAR 0 9
8116: PPUSH
8117: CALL_OW 266
8121: PUSH
8122: LD_INT 0
8124: DOUBLE
8125: EQUAL
8126: IFTRUE 8136
8128: LD_INT 1
8130: DOUBLE
8131: EQUAL
8132: IFTRUE 8136
8134: GO 8278
8136: POP
// for j = 1 to engineers do
8137: LD_ADDR_VAR 0 10
8141: PUSH
8142: DOUBLE
8143: LD_INT 1
8145: DEC
8146: ST_TO_ADDR
8147: LD_VAR 0 7
8151: PUSH
8152: FOR_TO
8153: IFFALSE 8274
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
8155: LD_INT 1
8157: PPUSH
8158: LD_INT 2
8160: PPUSH
8161: CALL_OW 12
8165: PPUSH
8166: LD_VAR 0 3
8170: PPUSH
8171: CALL_OW 382
// h = CreateHuman ;
8175: LD_ADDR_VAR 0 11
8179: PUSH
8180: CALL_OW 44
8184: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
8185: LD_VAR 0 11
8189: PPUSH
8190: LD_VAR 0 9
8194: PPUSH
8195: CALL_OW 250
8199: PPUSH
8200: LD_VAR 0 9
8204: PPUSH
8205: CALL_OW 254
8209: PPUSH
8210: LD_INT 4
8212: PPUSH
8213: LD_INT 10
8215: PPUSH
8216: CALL_OW 12
8220: PPUSH
8221: CALL_OW 272
8225: PPUSH
8226: LD_VAR 0 9
8230: PPUSH
8231: CALL_OW 251
8235: PPUSH
8236: LD_VAR 0 9
8240: PPUSH
8241: CALL_OW 254
8245: PPUSH
8246: LD_INT 4
8248: PPUSH
8249: LD_INT 10
8251: PPUSH
8252: CALL_OW 12
8256: PPUSH
8257: CALL_OW 273
8261: PPUSH
8262: LD_INT 8
8264: PPUSH
8265: LD_INT 0
8267: PPUSH
8268: CALL_OW 50
// end ; b_armoury , b_barracks :
8272: GO 8152
8274: POP
8275: POP
8276: GO 8595
8278: LD_INT 4
8280: DOUBLE
8281: EQUAL
8282: IFTRUE 8292
8284: LD_INT 5
8286: DOUBLE
8287: EQUAL
8288: IFTRUE 8292
8290: GO 8361
8292: POP
// for j = 1 to armoury do
8293: LD_ADDR_VAR 0 10
8297: PUSH
8298: DOUBLE
8299: LD_INT 1
8301: DEC
8302: ST_TO_ADDR
8303: LD_VAR 0 6
8307: PUSH
8308: FOR_TO
8309: IFFALSE 8357
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
8311: LD_INT 1
8313: PPUSH
8314: LD_INT 2
8316: PPUSH
8317: CALL_OW 12
8321: PPUSH
8322: LD_VAR 0 3
8326: PPUSH
8327: CALL_OW 381
// h = CreateHuman ;
8331: LD_ADDR_VAR 0 11
8335: PUSH
8336: CALL_OW 44
8340: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8341: LD_VAR 0 11
8345: PPUSH
8346: LD_VAR 0 9
8350: PPUSH
8351: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
8355: GO 8308
8357: POP
8358: POP
8359: GO 8595
8361: LD_INT 9
8363: DOUBLE
8364: EQUAL
8365: IFTRUE 8381
8367: LD_INT 7
8369: DOUBLE
8370: EQUAL
8371: IFTRUE 8381
8373: LD_INT 8
8375: DOUBLE
8376: EQUAL
8377: IFTRUE 8381
8379: GO 8450
8381: POP
// for j = 1 to lab do
8382: LD_ADDR_VAR 0 10
8386: PUSH
8387: DOUBLE
8388: LD_INT 1
8390: DEC
8391: ST_TO_ADDR
8392: LD_VAR 0 5
8396: PUSH
8397: FOR_TO
8398: IFFALSE 8446
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
8400: LD_INT 1
8402: PPUSH
8403: LD_INT 2
8405: PPUSH
8406: CALL_OW 12
8410: PPUSH
8411: LD_VAR 0 3
8415: PPUSH
8416: CALL_OW 384
// h = CreateHuman ;
8420: LD_ADDR_VAR 0 11
8424: PUSH
8425: CALL_OW 44
8429: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8430: LD_VAR 0 11
8434: PPUSH
8435: LD_VAR 0 9
8439: PPUSH
8440: CALL_OW 52
// end ; b_workshop , b_factory :
8444: GO 8397
8446: POP
8447: POP
8448: GO 8595
8450: LD_INT 2
8452: DOUBLE
8453: EQUAL
8454: IFTRUE 8464
8456: LD_INT 3
8458: DOUBLE
8459: EQUAL
8460: IFTRUE 8464
8462: GO 8533
8464: POP
// for j = 1 to workshop do
8465: LD_ADDR_VAR 0 10
8469: PUSH
8470: DOUBLE
8471: LD_INT 1
8473: DEC
8474: ST_TO_ADDR
8475: LD_VAR 0 4
8479: PUSH
8480: FOR_TO
8481: IFFALSE 8529
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
8483: LD_INT 1
8485: PPUSH
8486: LD_INT 2
8488: PPUSH
8489: CALL_OW 12
8493: PPUSH
8494: LD_VAR 0 3
8498: PPUSH
8499: CALL_OW 383
// h = CreateHuman ;
8503: LD_ADDR_VAR 0 11
8507: PUSH
8508: CALL_OW 44
8512: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8513: LD_VAR 0 11
8517: PPUSH
8518: LD_VAR 0 9
8522: PPUSH
8523: CALL_OW 52
// end ; b_breastwork , b_bunker :
8527: GO 8480
8529: POP
8530: POP
8531: GO 8595
8533: LD_INT 31
8535: DOUBLE
8536: EQUAL
8537: IFTRUE 8547
8539: LD_INT 32
8541: DOUBLE
8542: EQUAL
8543: IFTRUE 8547
8545: GO 8594
8547: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
8548: LD_INT 1
8550: PPUSH
8551: LD_INT 2
8553: PPUSH
8554: CALL_OW 12
8558: PPUSH
8559: LD_VAR 0 3
8563: PPUSH
8564: CALL_OW 381
// h = CreateHuman ;
8568: LD_ADDR_VAR 0 11
8572: PUSH
8573: CALL_OW 44
8577: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8578: LD_VAR 0 11
8582: PPUSH
8583: LD_VAR 0 9
8587: PPUSH
8588: CALL_OW 52
// end ; end ;
8592: GO 8595
8594: POP
8595: GO 8109
8597: POP
8598: POP
// end ;
8599: LD_VAR 0 8
8603: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
8604: LD_INT 0
8606: PPUSH
8607: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
8608: LD_ADDR_VAR 0 4
8612: PUSH
8613: LD_INT 22
8615: PUSH
8616: LD_VAR 0 1
8620: PUSH
8621: EMPTY
8622: LIST
8623: LIST
8624: PUSH
8625: LD_INT 3
8627: PUSH
8628: LD_INT 23
8630: PUSH
8631: LD_INT 0
8633: PUSH
8634: EMPTY
8635: LIST
8636: LIST
8637: PUSH
8638: EMPTY
8639: LIST
8640: LIST
8641: PUSH
8642: EMPTY
8643: LIST
8644: LIST
8645: PPUSH
8646: CALL_OW 69
8650: PPUSH
8651: LD_VAR 0 2
8655: PUSH
8656: LD_INT 1
8658: ARRAY
8659: PPUSH
8660: CALL_OW 74
8664: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
8665: LD_VAR 0 4
8669: PPUSH
8670: CALL_OW 247
8674: PUSH
8675: LD_INT 2
8677: EQUAL
8678: IFFALSE 8742
// if GetControl ( i ) = control_manual then
8680: LD_VAR 0 4
8684: PPUSH
8685: CALL_OW 263
8689: PUSH
8690: LD_INT 1
8692: EQUAL
8693: IFFALSE 8712
// i = IsDrivenBy ( i ) else
8695: LD_ADDR_VAR 0 4
8699: PUSH
8700: LD_VAR 0 4
8704: PPUSH
8705: CALL_OW 311
8709: ST_TO_ADDR
8710: GO 8742
// if GetControl ( i ) = control_remote then
8712: LD_VAR 0 4
8716: PPUSH
8717: CALL_OW 263
8721: PUSH
8722: LD_INT 2
8724: EQUAL
8725: IFFALSE 8742
// i = IsControledBy ( i ) ;
8727: LD_ADDR_VAR 0 4
8731: PUSH
8732: LD_VAR 0 4
8736: PPUSH
8737: CALL_OW 312
8741: ST_TO_ADDR
// if GetType ( i ) = unit_building then
8742: LD_VAR 0 4
8746: PPUSH
8747: CALL_OW 247
8751: PUSH
8752: LD_INT 3
8754: EQUAL
8755: IFFALSE 8798
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
8757: LD_ADDR_VAR 0 4
8761: PUSH
8762: LD_VAR 0 4
8766: PPUSH
8767: CALL_OW 313
8771: PPUSH
8772: LD_INT 3
8774: PUSH
8775: LD_INT 23
8777: PUSH
8778: LD_INT 0
8780: PUSH
8781: EMPTY
8782: LIST
8783: LIST
8784: PUSH
8785: EMPTY
8786: LIST
8787: LIST
8788: PPUSH
8789: CALL_OW 72
8793: PUSH
8794: LD_INT 1
8796: ARRAY
8797: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
8798: LD_VAR 0 4
8802: PPUSH
8803: CALL_OW 247
8807: PUSH
8808: LD_INT 1
8810: EQUAL
8811: NOT
8812: IFFALSE 8872
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
8814: LD_ADDR_VAR 0 4
8818: PUSH
8819: LD_INT 22
8821: PUSH
8822: LD_VAR 0 1
8826: PUSH
8827: EMPTY
8828: LIST
8829: LIST
8830: PUSH
8831: LD_INT 21
8833: PUSH
8834: LD_INT 1
8836: PUSH
8837: EMPTY
8838: LIST
8839: LIST
8840: PUSH
8841: LD_INT 3
8843: PUSH
8844: LD_INT 23
8846: PUSH
8847: LD_INT 0
8849: PUSH
8850: EMPTY
8851: LIST
8852: LIST
8853: PUSH
8854: EMPTY
8855: LIST
8856: LIST
8857: PUSH
8858: EMPTY
8859: LIST
8860: LIST
8861: LIST
8862: PPUSH
8863: CALL_OW 69
8867: PUSH
8868: LD_INT 1
8870: ARRAY
8871: ST_TO_ADDR
// result = i ;
8872: LD_ADDR_VAR 0 3
8876: PUSH
8877: LD_VAR 0 4
8881: ST_TO_ADDR
// end ;
8882: LD_VAR 0 3
8886: RET
