// every 0 0$1.5 do var i , base , val , oil_val , sib_val ;
   0: GO 2
   2: DISABLE
   3: LD_INT 0
   5: PPUSH
   6: PPUSH
   7: PPUSH
   8: PPUSH
   9: PPUSH
// begin if GetTech ( Tech_Tech2 , 3 ) = state_researched then
  10: LD_INT 49
  12: PPUSH
  13: LD_INT 3
  15: PPUSH
  16: CALL_OW 321
  20: PUSH
  21: LD_INT 2
  23: EQUAL
  24: IFFALSE 37
// oil_val = 0.012190476 else
  26: LD_ADDR_VAR 0 4
  30: PUSH
  31: LD_REAL  1.21904760000000E-0002
  34: ST_TO_ADDR
  35: GO 46
// oil_val = 0.009047619 ;
  37: LD_ADDR_VAR 0 4
  41: PUSH
  42: LD_REAL  9.04761900000000E-0003
  45: ST_TO_ADDR
// if GetTech ( Tech_Sib1 , 3 ) = state_researched then
  46: LD_INT 54
  48: PPUSH
  49: LD_INT 3
  51: PPUSH
  52: CALL_OW 321
  56: PUSH
  57: LD_INT 2
  59: EQUAL
  60: IFFALSE 73
// sib_val = 0.00347619 else
  62: LD_ADDR_VAR 0 5
  66: PUSH
  67: LD_REAL  3.47619000000000E-0003
  70: ST_TO_ADDR
  71: GO 82
// sib_val = 0.00247619 ;
  73: LD_ADDR_VAR 0 5
  77: PUSH
  78: LD_REAL  2.47619000000000E-0003
  81: ST_TO_ADDR
// for i = 1 to ai_depot do
  82: LD_ADDR_VAR 0 1
  86: PUSH
  87: DOUBLE
  88: LD_INT 1
  90: DEC
  91: ST_TO_ADDR
  92: LD_EXP 39
  96: PUSH
  97: FOR_TO
  98: IFFALSE 988
// if IsOk ( ai_depot [ i ] ) and GetSide ( ai_depot [ i ] ) <> you then
 100: LD_EXP 39
 104: PUSH
 105: LD_VAR 0 1
 109: ARRAY
 110: PPUSH
 111: CALL_OW 302
 115: PUSH
 116: LD_EXP 39
 120: PUSH
 121: LD_VAR 0 1
 125: ARRAY
 126: PPUSH
 127: CALL_OW 255
 131: PUSH
 132: LD_EXP 4
 136: NONEQUAL
 137: AND
 138: IFFALSE 986
// begin case i of 1 :
 140: LD_VAR 0 1
 144: PUSH
 145: LD_INT 1
 147: DOUBLE
 148: EQUAL
 149: IFTRUE 153
 151: GO 294
 153: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 600 ) ;
 154: LD_EXP 39
 158: PUSH
 159: LD_VAR 0 1
 163: ARRAY
 164: PPUSH
 165: CALL_OW 274
 169: PPUSH
 170: LD_INT 1
 172: PPUSH
 173: LD_INT 600
 175: PPUSH
 176: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , tick * oil_val * 0.2 ) ;
 180: LD_EXP 39
 184: PUSH
 185: LD_VAR 0 1
 189: ARRAY
 190: PPUSH
 191: CALL_OW 274
 195: PPUSH
 196: LD_INT 2
 198: PPUSH
 199: LD_OWVAR 1
 203: PUSH
 204: LD_VAR 0 4
 208: MUL
 209: PUSH
 210: LD_REAL  2.00000000000000E-0001
 213: MUL
 214: PPUSH
 215: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 25 ) ;
 219: LD_EXP 39
 223: PUSH
 224: LD_VAR 0 1
 228: ARRAY
 229: PPUSH
 230: CALL_OW 274
 234: PPUSH
 235: LD_INT 3
 237: PPUSH
 238: LD_INT 25
 240: PPUSH
 241: CALL_OW 277
// if ( tick * oil_val * 0.2 ) < 50 then
 245: LD_OWVAR 1
 249: PUSH
 250: LD_VAR 0 4
 254: MUL
 255: PUSH
 256: LD_REAL  2.00000000000000E-0001
 259: MUL
 260: PUSH
 261: LD_INT 50
 263: LESS
 264: IFFALSE 292
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 50 ) ;
 266: LD_EXP 39
 270: PUSH
 271: LD_VAR 0 1
 275: ARRAY
 276: PPUSH
 277: CALL_OW 274
 281: PPUSH
 282: LD_INT 2
 284: PPUSH
 285: LD_INT 50
 287: PPUSH
 288: CALL_OW 277
// end ; 2 :
 292: GO 986
 294: LD_INT 2
 296: DOUBLE
 297: EQUAL
 298: IFTRUE 302
 300: GO 438
 302: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 800 ) ;
 303: LD_EXP 39
 307: PUSH
 308: LD_VAR 0 1
 312: ARRAY
 313: PPUSH
 314: CALL_OW 274
 318: PPUSH
 319: LD_INT 1
 321: PPUSH
 322: LD_INT 800
 324: PPUSH
 325: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , tick * oil_val ) ;
 329: LD_EXP 39
 333: PUSH
 334: LD_VAR 0 1
 338: ARRAY
 339: PPUSH
 340: CALL_OW 274
 344: PPUSH
 345: LD_INT 2
 347: PPUSH
 348: LD_OWVAR 1
 352: PUSH
 353: LD_VAR 0 4
 357: MUL
 358: PPUSH
 359: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 25 ) ;
 363: LD_EXP 39
 367: PUSH
 368: LD_VAR 0 1
 372: ARRAY
 373: PPUSH
 374: CALL_OW 274
 378: PPUSH
 379: LD_INT 3
 381: PPUSH
 382: LD_INT 25
 384: PPUSH
 385: CALL_OW 277
// if ( tick * oil_val * 0.2 ) < 50 then
 389: LD_OWVAR 1
 393: PUSH
 394: LD_VAR 0 4
 398: MUL
 399: PUSH
 400: LD_REAL  2.00000000000000E-0001
 403: MUL
 404: PUSH
 405: LD_INT 50
 407: LESS
 408: IFFALSE 436
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 50 ) ;
 410: LD_EXP 39
 414: PUSH
 415: LD_VAR 0 1
 419: ARRAY
 420: PPUSH
 421: CALL_OW 274
 425: PPUSH
 426: LD_INT 2
 428: PPUSH
 429: LD_INT 50
 431: PPUSH
 432: CALL_OW 277
// end ; 3 :
 436: GO 986
 438: LD_INT 3
 440: DOUBLE
 441: EQUAL
 442: IFTRUE 446
 444: GO 527
 446: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 250 ) ;
 447: LD_EXP 39
 451: PUSH
 452: LD_VAR 0 1
 456: ARRAY
 457: PPUSH
 458: CALL_OW 274
 462: PPUSH
 463: LD_INT 1
 465: PPUSH
 466: LD_INT 250
 468: PPUSH
 469: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 0 ) ;
 473: LD_EXP 39
 477: PUSH
 478: LD_VAR 0 1
 482: ARRAY
 483: PPUSH
 484: CALL_OW 274
 488: PPUSH
 489: LD_INT 2
 491: PPUSH
 492: LD_INT 0
 494: PPUSH
 495: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 80 ) ;
 499: LD_EXP 39
 503: PUSH
 504: LD_VAR 0 1
 508: ARRAY
 509: PPUSH
 510: CALL_OW 274
 514: PPUSH
 515: LD_INT 3
 517: PPUSH
 518: LD_INT 80
 520: PPUSH
 521: CALL_OW 277
// end ; 4 :
 525: GO 986
 527: LD_INT 4
 529: DOUBLE
 530: EQUAL
 531: IFTRUE 535
 533: GO 616
 535: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 250 ) ;
 536: LD_EXP 39
 540: PUSH
 541: LD_VAR 0 1
 545: ARRAY
 546: PPUSH
 547: CALL_OW 274
 551: PPUSH
 552: LD_INT 1
 554: PPUSH
 555: LD_INT 250
 557: PPUSH
 558: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 0 ) ;
 562: LD_EXP 39
 566: PUSH
 567: LD_VAR 0 1
 571: ARRAY
 572: PPUSH
 573: CALL_OW 274
 577: PPUSH
 578: LD_INT 2
 580: PPUSH
 581: LD_INT 0
 583: PPUSH
 584: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 80 ) ;
 588: LD_EXP 39
 592: PUSH
 593: LD_VAR 0 1
 597: ARRAY
 598: PPUSH
 599: CALL_OW 274
 603: PPUSH
 604: LD_INT 3
 606: PPUSH
 607: LD_INT 80
 609: PPUSH
 610: CALL_OW 277
// end ; 5 :
 614: GO 986
 616: LD_INT 5
 618: DOUBLE
 619: EQUAL
 620: IFTRUE 624
 622: GO 705
 624: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 250 ) ;
 625: LD_EXP 39
 629: PUSH
 630: LD_VAR 0 1
 634: ARRAY
 635: PPUSH
 636: CALL_OW 274
 640: PPUSH
 641: LD_INT 1
 643: PPUSH
 644: LD_INT 250
 646: PPUSH
 647: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 0 ) ;
 651: LD_EXP 39
 655: PUSH
 656: LD_VAR 0 1
 660: ARRAY
 661: PPUSH
 662: CALL_OW 274
 666: PPUSH
 667: LD_INT 2
 669: PPUSH
 670: LD_INT 0
 672: PPUSH
 673: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 0 ) ;
 677: LD_EXP 39
 681: PUSH
 682: LD_VAR 0 1
 686: ARRAY
 687: PPUSH
 688: CALL_OW 274
 692: PPUSH
 693: LD_INT 3
 695: PPUSH
 696: LD_INT 0
 698: PPUSH
 699: CALL_OW 277
// end ; 6 :
 703: GO 986
 705: LD_INT 6
 707: DOUBLE
 708: EQUAL
 709: IFTRUE 713
 711: GO 794
 713: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 300 ) ;
 714: LD_EXP 39
 718: PUSH
 719: LD_VAR 0 1
 723: ARRAY
 724: PPUSH
 725: CALL_OW 274
 729: PPUSH
 730: LD_INT 1
 732: PPUSH
 733: LD_INT 300
 735: PPUSH
 736: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 50 ) ;
 740: LD_EXP 39
 744: PUSH
 745: LD_VAR 0 1
 749: ARRAY
 750: PPUSH
 751: CALL_OW 274
 755: PPUSH
 756: LD_INT 2
 758: PPUSH
 759: LD_INT 50
 761: PPUSH
 762: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 0 ) ;
 766: LD_EXP 39
 770: PUSH
 771: LD_VAR 0 1
 775: ARRAY
 776: PPUSH
 777: CALL_OW 274
 781: PPUSH
 782: LD_INT 3
 784: PPUSH
 785: LD_INT 0
 787: PPUSH
 788: CALL_OW 277
// end ; 7 :
 792: GO 986
 794: LD_INT 7
 796: DOUBLE
 797: EQUAL
 798: IFTRUE 802
 800: GO 883
 802: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 300 ) ;
 803: LD_EXP 39
 807: PUSH
 808: LD_VAR 0 1
 812: ARRAY
 813: PPUSH
 814: CALL_OW 274
 818: PPUSH
 819: LD_INT 1
 821: PPUSH
 822: LD_INT 300
 824: PPUSH
 825: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 50 ) ;
 829: LD_EXP 39
 833: PUSH
 834: LD_VAR 0 1
 838: ARRAY
 839: PPUSH
 840: CALL_OW 274
 844: PPUSH
 845: LD_INT 2
 847: PPUSH
 848: LD_INT 50
 850: PPUSH
 851: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , 0 ) ;
 855: LD_EXP 39
 859: PUSH
 860: LD_VAR 0 1
 864: ARRAY
 865: PPUSH
 866: CALL_OW 274
 870: PPUSH
 871: LD_INT 3
 873: PPUSH
 874: LD_INT 0
 876: PPUSH
 877: CALL_OW 277
// end ; 8 :
 881: GO 986
 883: LD_INT 8
 885: DOUBLE
 886: EQUAL
 887: IFTRUE 891
 889: GO 985
 891: POP
// begin SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_cans , 50 ) ;
 892: LD_EXP 39
 896: PUSH
 897: LD_VAR 0 1
 901: ARRAY
 902: PPUSH
 903: CALL_OW 274
 907: PPUSH
 908: LD_INT 1
 910: PPUSH
 911: LD_INT 50
 913: PPUSH
 914: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_oil , 0 ) ;
 918: LD_EXP 39
 922: PUSH
 923: LD_VAR 0 1
 927: ARRAY
 928: PPUSH
 929: CALL_OW 274
 933: PPUSH
 934: LD_INT 2
 936: PPUSH
 937: LD_INT 0
 939: PPUSH
 940: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ i ] ) , mat_siberit , tick * sib_val * 0.3 ) ;
 944: LD_EXP 39
 948: PUSH
 949: LD_VAR 0 1
 953: ARRAY
 954: PPUSH
 955: CALL_OW 274
 959: PPUSH
 960: LD_INT 3
 962: PPUSH
 963: LD_OWVAR 1
 967: PUSH
 968: LD_VAR 0 5
 972: MUL
 973: PUSH
 974: LD_REAL  3.00000000000000E-0001
 977: MUL
 978: PPUSH
 979: CALL_OW 277
// end ; end ;
 983: GO 986
 985: POP
// end ;
 986: GO 97
 988: POP
 989: POP
// enable ;
 990: ENABLE
// end ;
 991: PPOPN 5
 993: END
// on UnitGoesToRed ( un ) do var base , oil_val , sib_val ;
 994: LD_INT 0
 996: PPUSH
 997: PPUSH
 998: PPUSH
// begin base = FindBase ( un ) ;
 999: LD_ADDR_VAR 0 2
1003: PUSH
1004: LD_VAR 0 1
1008: PPUSH
1009: CALL 4246 0 1
1013: ST_TO_ADDR
// if base = 0 then
1014: LD_VAR 0 2
1018: PUSH
1019: LD_INT 0
1021: EQUAL
1022: IFFALSE 1026
// exit ;
1024: GO 1817
// if un = ai_teleporter [ base ] then
1026: LD_VAR 0 1
1030: PUSH
1031: LD_EXP 50
1035: PUSH
1036: LD_VAR 0 2
1040: ARRAY
1041: EQUAL
1042: IFFALSE 1067
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , base , false ) ;
1044: LD_ADDR_EXP 86
1048: PUSH
1049: LD_EXP 86
1053: PPUSH
1054: LD_VAR 0 2
1058: PPUSH
1059: LD_INT 0
1061: PPUSH
1062: CALL_OW 1
1066: ST_TO_ADDR
// if GetBType ( un ) in [ b_depot , b_warehouse ] then
1067: LD_VAR 0 1
1071: PPUSH
1072: CALL_OW 266
1076: PUSH
1077: LD_INT 0
1079: PUSH
1080: LD_INT 1
1082: PUSH
1083: EMPTY
1084: LIST
1085: LIST
1086: IN
1087: IFFALSE 1817
// begin if GetTech ( Tech_Tech2 , 3 ) = state_researched then
1089: LD_INT 49
1091: PPUSH
1092: LD_INT 3
1094: PPUSH
1095: CALL_OW 321
1099: PUSH
1100: LD_INT 2
1102: EQUAL
1103: IFFALSE 1116
// oil_val = 0.012190476 else
1105: LD_ADDR_VAR 0 3
1109: PUSH
1110: LD_REAL  1.21904760000000E-0002
1113: ST_TO_ADDR
1114: GO 1125
// oil_val = 0.009047619 ;
1116: LD_ADDR_VAR 0 3
1120: PUSH
1121: LD_REAL  9.04761900000000E-0003
1124: ST_TO_ADDR
// if GetTech ( Tech_Sib1 , 3 ) = state_researched then
1125: LD_INT 54
1127: PPUSH
1128: LD_INT 3
1130: PPUSH
1131: CALL_OW 321
1135: PUSH
1136: LD_INT 2
1138: EQUAL
1139: IFFALSE 1152
// sib_val = 0.00347619 else
1141: LD_ADDR_VAR 0 4
1145: PUSH
1146: LD_REAL  3.47619000000000E-0003
1149: ST_TO_ADDR
1150: GO 1161
// sib_val = 0.00247619 ;
1152: LD_ADDR_VAR 0 4
1156: PUSH
1157: LD_REAL  2.47619000000000E-0003
1160: ST_TO_ADDR
// case un of ai_depot [ 1 ] :
1161: LD_VAR 0 1
1165: PUSH
1166: LD_EXP 39
1170: PUSH
1171: LD_INT 1
1173: ARRAY
1174: DOUBLE
1175: EQUAL
1176: IFTRUE 1180
1178: GO 1256
1180: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 450 ) ;
1181: LD_VAR 0 1
1185: PPUSH
1186: CALL_OW 274
1190: PPUSH
1191: LD_INT 1
1193: PPUSH
1194: LD_INT 450
1196: PPUSH
1197: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , tick * oil_val * 0.2 ) ;
1201: LD_VAR 0 1
1205: PPUSH
1206: CALL_OW 274
1210: PPUSH
1211: LD_INT 2
1213: PPUSH
1214: LD_OWVAR 1
1218: PUSH
1219: LD_VAR 0 3
1223: MUL
1224: PUSH
1225: LD_REAL  2.00000000000000E-0001
1228: MUL
1229: PPUSH
1230: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 25 ) ;
1234: LD_VAR 0 1
1238: PPUSH
1239: CALL_OW 274
1243: PPUSH
1244: LD_INT 3
1246: PPUSH
1247: LD_INT 25
1249: PPUSH
1250: CALL_OW 277
// end ; ai_depot [ 2 ] :
1254: GO 1817
1256: LD_EXP 39
1260: PUSH
1261: LD_INT 2
1263: ARRAY
1264: DOUBLE
1265: EQUAL
1266: IFTRUE 1270
1268: GO 1341
1270: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 550 ) ;
1271: LD_VAR 0 1
1275: PPUSH
1276: CALL_OW 274
1280: PPUSH
1281: LD_INT 1
1283: PPUSH
1284: LD_INT 550
1286: PPUSH
1287: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , tick * oil_val ) ;
1291: LD_VAR 0 1
1295: PPUSH
1296: CALL_OW 274
1300: PPUSH
1301: LD_INT 2
1303: PPUSH
1304: LD_OWVAR 1
1308: PUSH
1309: LD_VAR 0 3
1313: MUL
1314: PPUSH
1315: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 25 ) ;
1319: LD_VAR 0 1
1323: PPUSH
1324: CALL_OW 274
1328: PPUSH
1329: LD_INT 3
1331: PPUSH
1332: LD_INT 25
1334: PPUSH
1335: CALL_OW 277
// end ; ai_depot [ 3 ] :
1339: GO 1817
1341: LD_EXP 39
1345: PUSH
1346: LD_INT 3
1348: ARRAY
1349: DOUBLE
1350: EQUAL
1351: IFTRUE 1355
1353: GO 1418
1355: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 150 ) ;
1356: LD_VAR 0 1
1360: PPUSH
1361: CALL_OW 274
1365: PPUSH
1366: LD_INT 1
1368: PPUSH
1369: LD_INT 150
1371: PPUSH
1372: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1376: LD_VAR 0 1
1380: PPUSH
1381: CALL_OW 274
1385: PPUSH
1386: LD_INT 2
1388: PPUSH
1389: LD_INT 0
1391: PPUSH
1392: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 50 ) ;
1396: LD_VAR 0 1
1400: PPUSH
1401: CALL_OW 274
1405: PPUSH
1406: LD_INT 3
1408: PPUSH
1409: LD_INT 50
1411: PPUSH
1412: CALL_OW 277
// end ; ai_depot [ 4 ] :
1416: GO 1817
1418: LD_EXP 39
1422: PUSH
1423: LD_INT 4
1425: ARRAY
1426: DOUBLE
1427: EQUAL
1428: IFTRUE 1432
1430: GO 1495
1432: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 150 ) ;
1433: LD_VAR 0 1
1437: PPUSH
1438: CALL_OW 274
1442: PPUSH
1443: LD_INT 1
1445: PPUSH
1446: LD_INT 150
1448: PPUSH
1449: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1453: LD_VAR 0 1
1457: PPUSH
1458: CALL_OW 274
1462: PPUSH
1463: LD_INT 2
1465: PPUSH
1466: LD_INT 0
1468: PPUSH
1469: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 50 ) ;
1473: LD_VAR 0 1
1477: PPUSH
1478: CALL_OW 274
1482: PPUSH
1483: LD_INT 3
1485: PPUSH
1486: LD_INT 50
1488: PPUSH
1489: CALL_OW 277
// end ; ai_depot [ 5 ] :
1493: GO 1817
1495: LD_EXP 39
1499: PUSH
1500: LD_INT 5
1502: ARRAY
1503: DOUBLE
1504: EQUAL
1505: IFTRUE 1509
1507: GO 1572
1509: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 150 ) ;
1510: LD_VAR 0 1
1514: PPUSH
1515: CALL_OW 274
1519: PPUSH
1520: LD_INT 1
1522: PPUSH
1523: LD_INT 150
1525: PPUSH
1526: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1530: LD_VAR 0 1
1534: PPUSH
1535: CALL_OW 274
1539: PPUSH
1540: LD_INT 2
1542: PPUSH
1543: LD_INT 0
1545: PPUSH
1546: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 0 ) ;
1550: LD_VAR 0 1
1554: PPUSH
1555: CALL_OW 274
1559: PPUSH
1560: LD_INT 3
1562: PPUSH
1563: LD_INT 0
1565: PPUSH
1566: CALL_OW 277
// end ; ai_depot [ 6 ] :
1570: GO 1817
1572: LD_EXP 39
1576: PUSH
1577: LD_INT 6
1579: ARRAY
1580: DOUBLE
1581: EQUAL
1582: IFTRUE 1586
1584: GO 1649
1586: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 200 ) ;
1587: LD_VAR 0 1
1591: PPUSH
1592: CALL_OW 274
1596: PPUSH
1597: LD_INT 1
1599: PPUSH
1600: LD_INT 200
1602: PPUSH
1603: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1607: LD_VAR 0 1
1611: PPUSH
1612: CALL_OW 274
1616: PPUSH
1617: LD_INT 2
1619: PPUSH
1620: LD_INT 0
1622: PPUSH
1623: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 0 ) ;
1627: LD_VAR 0 1
1631: PPUSH
1632: CALL_OW 274
1636: PPUSH
1637: LD_INT 3
1639: PPUSH
1640: LD_INT 0
1642: PPUSH
1643: CALL_OW 277
// end ; ai_depot [ 7 ] :
1647: GO 1817
1649: LD_EXP 39
1653: PUSH
1654: LD_INT 7
1656: ARRAY
1657: DOUBLE
1658: EQUAL
1659: IFTRUE 1663
1661: GO 1726
1663: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 200 ) ;
1664: LD_VAR 0 1
1668: PPUSH
1669: CALL_OW 274
1673: PPUSH
1674: LD_INT 1
1676: PPUSH
1677: LD_INT 200
1679: PPUSH
1680: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1684: LD_VAR 0 1
1688: PPUSH
1689: CALL_OW 274
1693: PPUSH
1694: LD_INT 2
1696: PPUSH
1697: LD_INT 0
1699: PPUSH
1700: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 0 ) ;
1704: LD_VAR 0 1
1708: PPUSH
1709: CALL_OW 274
1713: PPUSH
1714: LD_INT 3
1716: PPUSH
1717: LD_INT 0
1719: PPUSH
1720: CALL_OW 277
// end ; ai_depot [ 8 ] :
1724: GO 1817
1726: LD_EXP 39
1730: PUSH
1731: LD_INT 8
1733: ARRAY
1734: DOUBLE
1735: EQUAL
1736: IFTRUE 1740
1738: GO 1816
1740: POP
// begin SetResourceType ( GetBase ( un ) , mat_cans , 50 ) ;
1741: LD_VAR 0 1
1745: PPUSH
1746: CALL_OW 274
1750: PPUSH
1751: LD_INT 1
1753: PPUSH
1754: LD_INT 50
1756: PPUSH
1757: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
1761: LD_VAR 0 1
1765: PPUSH
1766: CALL_OW 274
1770: PPUSH
1771: LD_INT 2
1773: PPUSH
1774: LD_INT 0
1776: PPUSH
1777: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , tick * sib_val * 0.3 ) ;
1781: LD_VAR 0 1
1785: PPUSH
1786: CALL_OW 274
1790: PPUSH
1791: LD_INT 3
1793: PPUSH
1794: LD_OWVAR 1
1798: PUSH
1799: LD_VAR 0 4
1803: MUL
1804: PUSH
1805: LD_REAL  3.00000000000000E-0001
1808: MUL
1809: PPUSH
1810: CALL_OW 277
// end ; end ;
1814: GO 1817
1816: POP
// end ; end ;
1817: PPOPN 4
1819: END
// on UnitDestroyed ( un ) do var side , temp_list , base , temp_value , i ;
1820: LD_INT 0
1822: PPUSH
1823: PPUSH
1824: PPUSH
1825: PPUSH
1826: PPUSH
// begin if un = Heike then
1827: LD_VAR 0 1
1831: PUSH
1832: LD_EXP 12
1836: EQUAL
1837: IFFALSE 1861
// begin ExclusiveOn ;
1839: CALL_OW 4
// Wait ( 0 0$1 ) ;
1843: LD_INT 35
1845: PPUSH
1846: CALL_OW 67
// YouLost ( HeikeDead ) ;
1850: LD_STRING HeikeDead
1852: PPUSH
1853: CALL_OW 104
// ExclusiveOff ;
1857: CALL_OW 5
// end ; if un = ruteleprt then
1861: LD_VAR 0 1
1865: PUSH
1866: LD_INT 10
1868: EQUAL
1869: IFFALSE 1879
// teleport_status = 0 ;
1871: LD_ADDR_EXP 112
1875: PUSH
1876: LD_INT 0
1878: ST_TO_ADDR
// for base in ai_bases do
1879: LD_ADDR_VAR 0 4
1883: PUSH
1884: LD_EXP 29
1888: PUSH
1889: FOR_IN
1890: IFFALSE 1941
// begin temp_list = ai_captured_buildings [ base ] diff un ;
1892: LD_ADDR_VAR 0 3
1896: PUSH
1897: LD_EXP 52
1901: PUSH
1902: LD_VAR 0 4
1906: ARRAY
1907: PUSH
1908: LD_VAR 0 1
1912: DIFF
1913: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
1914: LD_ADDR_EXP 52
1918: PUSH
1919: LD_EXP 52
1923: PPUSH
1924: LD_VAR 0 4
1928: PPUSH
1929: LD_VAR 0 3
1933: PPUSH
1934: CALL_OW 1
1938: ST_TO_ADDR
// end ;
1939: GO 1889
1941: POP
1942: POP
// side = GetSide ( un ) ;
1943: LD_ADDR_VAR 0 2
1947: PUSH
1948: LD_VAR 0 1
1952: PPUSH
1953: CALL_OW 255
1957: ST_TO_ADDR
// if side = you then
1958: LD_VAR 0 2
1962: PUSH
1963: LD_EXP 4
1967: EQUAL
1968: IFFALSE 1972
// exit ;
1970: GO 2112
// case GetType ( un ) of unit_human :
1972: LD_VAR 0 1
1976: PPUSH
1977: CALL_OW 247
1981: PUSH
1982: LD_INT 1
1984: DOUBLE
1985: EQUAL
1986: IFTRUE 1990
1988: GO 2027
1990: POP
// for base in ai_bases do
1991: LD_ADDR_VAR 0 4
1995: PUSH
1996: LD_EXP 29
2000: PUSH
2001: FOR_IN
2002: IFFALSE 2023
// RemoveHumanFromVariables ( base , un , false ) ; unit_vehicle :
2004: LD_VAR 0 4
2008: PPUSH
2009: LD_VAR 0 1
2013: PPUSH
2014: LD_INT 0
2016: PPUSH
2017: CALL 2982 0 3
2021: GO 2001
2023: POP
2024: POP
2025: GO 2112
2027: LD_INT 2
2029: DOUBLE
2030: EQUAL
2031: IFTRUE 2035
2033: GO 2069
2035: POP
// for base in ai_bases do
2036: LD_ADDR_VAR 0 4
2040: PUSH
2041: LD_EXP 29
2045: PUSH
2046: FOR_IN
2047: IFFALSE 2065
// RemoveVehicleFromVariables ( base , un ) ; unit_building :
2049: LD_VAR 0 4
2053: PPUSH
2054: LD_VAR 0 1
2058: PPUSH
2059: CALL 2323 0 2
2063: GO 2046
2065: POP
2066: POP
2067: GO 2112
2069: LD_INT 3
2071: DOUBLE
2072: EQUAL
2073: IFTRUE 2077
2075: GO 2111
2077: POP
// for base in ai_bases do
2078: LD_ADDR_VAR 0 4
2082: PUSH
2083: LD_EXP 29
2087: PUSH
2088: FOR_IN
2089: IFFALSE 2107
// RemoveBuildingFromVariables ( base , un ) ; end ;
2091: LD_VAR 0 4
2095: PPUSH
2096: LD_VAR 0 1
2100: PPUSH
2101: CALL 2115 0 2
2105: GO 2088
2107: POP
2108: POP
2109: GO 2112
2111: POP
// end ;
2112: PPOPN 6
2114: END
// export function RemoveBuildingFromVariables ( base , building ) ; var temp_list ; begin
2115: LD_INT 0
2117: PPUSH
2118: PPUSH
// temp_list = ai_all_buildings [ base ] diff building ;
2119: LD_ADDR_VAR 0 4
2123: PUSH
2124: LD_EXP 66
2128: PUSH
2129: LD_VAR 0 1
2133: ARRAY
2134: PUSH
2135: LD_VAR 0 2
2139: DIFF
2140: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
2141: LD_ADDR_EXP 66
2145: PUSH
2146: LD_EXP 66
2150: PPUSH
2151: LD_VAR 0 1
2155: PPUSH
2156: LD_VAR 0 4
2160: PPUSH
2161: CALL_OW 1
2165: ST_TO_ADDR
// temp_list = ai_excepted_buildings [ base ] diff building ;
2166: LD_ADDR_VAR 0 4
2170: PUSH
2171: LD_EXP 87
2175: PUSH
2176: LD_VAR 0 1
2180: ARRAY
2181: PUSH
2182: LD_VAR 0 2
2186: DIFF
2187: ST_TO_ADDR
// ai_excepted_buildings = Replace ( ai_excepted_buildings , base , temp_list ) ;
2188: LD_ADDR_EXP 87
2192: PUSH
2193: LD_EXP 87
2197: PPUSH
2198: LD_VAR 0 1
2202: PPUSH
2203: LD_VAR 0 4
2207: PPUSH
2208: CALL_OW 1
2212: ST_TO_ADDR
// temp_list = ai_dismantle_these_buildings [ base ] diff building ;
2213: LD_ADDR_VAR 0 4
2217: PUSH
2218: LD_EXP 89
2222: PUSH
2223: LD_VAR 0 1
2227: ARRAY
2228: PUSH
2229: LD_VAR 0 2
2233: DIFF
2234: ST_TO_ADDR
// ai_dismantle_these_buildings = Replace ( ai_dismantle_these_buildings , base , temp_list ) ;
2235: LD_ADDR_EXP 89
2239: PUSH
2240: LD_EXP 89
2244: PPUSH
2245: LD_VAR 0 1
2249: PPUSH
2250: LD_VAR 0 4
2254: PPUSH
2255: CALL_OW 1
2259: ST_TO_ADDR
// if building = ai_building_under_construction [ base ] then
2260: LD_VAR 0 2
2264: PUSH
2265: LD_EXP 64
2269: PUSH
2270: LD_VAR 0 1
2274: ARRAY
2275: EQUAL
2276: IFFALSE 2301
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
2278: LD_ADDR_EXP 64
2282: PUSH
2283: LD_EXP 64
2287: PPUSH
2288: LD_VAR 0 1
2292: PPUSH
2293: LD_INT 0
2295: PPUSH
2296: CALL_OW 1
2300: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , building , false ) ;
2301: LD_VAR 0 1
2305: PPUSH
2306: LD_VAR 0 2
2310: PPUSH
2311: LD_INT 0
2313: PPUSH
2314: CALL 49912 0 3
// end ;
2318: LD_VAR 0 3
2322: RET
// function RemoveVehicleFromVariables ( base , vehicle ) ; var temp_list ; begin
2323: LD_INT 0
2325: PPUSH
2326: PPUSH
// if vehicle in ai_vehicles_defend [ base ] then
2327: LD_VAR 0 2
2331: PUSH
2332: LD_EXP 57
2336: PUSH
2337: LD_VAR 0 1
2341: ARRAY
2342: IN
2343: IFFALSE 2392
// begin temp_list = ai_vehicles_defend [ base ] diff vehicle ;
2345: LD_ADDR_VAR 0 4
2349: PUSH
2350: LD_EXP 57
2354: PUSH
2355: LD_VAR 0 1
2359: ARRAY
2360: PUSH
2361: LD_VAR 0 2
2365: DIFF
2366: ST_TO_ADDR
// ai_vehicles_defend = Replace ( ai_vehicles_defend , base , temp_list ) ;
2367: LD_ADDR_EXP 57
2371: PUSH
2372: LD_EXP 57
2376: PPUSH
2377: LD_VAR 0 1
2381: PPUSH
2382: LD_VAR 0 4
2386: PPUSH
2387: CALL_OW 1
2391: ST_TO_ADDR
// end ; if vehicle in ai_taufield_vehicles [ base ] then
2392: LD_VAR 0 2
2396: PUSH
2397: LD_EXP 90
2401: PUSH
2402: LD_VAR 0 1
2406: ARRAY
2407: IN
2408: IFFALSE 2457
// begin temp_list = ai_taufield_vehicles [ base ] diff vehicle ;
2410: LD_ADDR_VAR 0 4
2414: PUSH
2415: LD_EXP 90
2419: PUSH
2420: LD_VAR 0 1
2424: ARRAY
2425: PUSH
2426: LD_VAR 0 2
2430: DIFF
2431: ST_TO_ADDR
// ai_taufield_vehicles = Replace ( ai_taufield_vehicles , base , temp_list ) ;
2432: LD_ADDR_EXP 90
2436: PUSH
2437: LD_EXP 90
2441: PPUSH
2442: LD_VAR 0 1
2446: PPUSH
2447: LD_VAR 0 4
2451: PPUSH
2452: CALL_OW 1
2456: ST_TO_ADDR
// end ; if vehicle = ai_cargo_bay [ base ] then
2457: LD_VAR 0 2
2461: PUSH
2462: LD_EXP 75
2466: PUSH
2467: LD_VAR 0 1
2471: ARRAY
2472: EQUAL
2473: IFFALSE 2523
// begin ai_cargo_bay = Replace ( ai_cargo_bay , base , 0 ) ;
2475: LD_ADDR_EXP 75
2479: PUSH
2480: LD_EXP 75
2484: PPUSH
2485: LD_VAR 0 1
2489: PPUSH
2490: LD_INT 0
2492: PPUSH
2493: CALL_OW 1
2497: ST_TO_ADDR
// ai_cargo_bay_destroy_tick = Replace ( ai_cargo_bay_destroy_tick , base , tick ) ;
2498: LD_ADDR_EXP 77
2502: PUSH
2503: LD_EXP 77
2507: PPUSH
2508: LD_VAR 0 1
2512: PPUSH
2513: LD_OWVAR 1
2517: PPUSH
2518: CALL_OW 1
2522: ST_TO_ADDR
// end ; if vehicle = ai_crane [ base ] then
2523: LD_VAR 0 2
2527: PUSH
2528: LD_EXP 78
2532: PUSH
2533: LD_VAR 0 1
2537: ARRAY
2538: EQUAL
2539: IFFALSE 2676
// begin ai_crane = Replace ( ai_crane , base , 0 ) ;
2541: LD_ADDR_EXP 78
2545: PUSH
2546: LD_EXP 78
2550: PPUSH
2551: LD_VAR 0 1
2555: PPUSH
2556: LD_INT 0
2558: PPUSH
2559: CALL_OW 1
2563: ST_TO_ADDR
// ai_crane_destroy_tick = Replace ( ai_crane_destroy_tick , base , tick ) ;
2564: LD_ADDR_EXP 80
2568: PUSH
2569: LD_EXP 80
2573: PPUSH
2574: LD_VAR 0 1
2578: PPUSH
2579: LD_OWVAR 1
2583: PPUSH
2584: CALL_OW 1
2588: ST_TO_ADDR
// ai_crane_driver = Replace ( ai_crane_driver , base , 0 ) ;
2589: LD_ADDR_EXP 82
2593: PUSH
2594: LD_EXP 82
2598: PPUSH
2599: LD_VAR 0 1
2603: PPUSH
2604: LD_INT 0
2606: PPUSH
2607: CALL_OW 1
2611: ST_TO_ADDR
// ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , false ) ;
2612: LD_ADDR_EXP 81
2616: PUSH
2617: LD_EXP 81
2621: PPUSH
2622: LD_VAR 0 1
2626: PPUSH
2627: LD_INT 0
2629: PPUSH
2630: CALL_OW 1
2634: ST_TO_ADDR
// if vehicle = ai_building_constructor [ base ] then
2635: LD_VAR 0 2
2639: PUSH
2640: LD_EXP 67
2644: PUSH
2645: LD_VAR 0 1
2649: ARRAY
2650: EQUAL
2651: IFFALSE 2676
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
2653: LD_ADDR_EXP 67
2657: PUSH
2658: LD_EXP 67
2662: PPUSH
2663: LD_VAR 0 1
2667: PPUSH
2668: LD_INT 0
2670: PPUSH
2671: CALL_OW 1
2675: ST_TO_ADDR
// end ; if vehicle in ai_retreating_vehicles_defend [ base ] then
2676: LD_VAR 0 2
2680: PUSH
2681: LD_EXP 59
2685: PUSH
2686: LD_VAR 0 1
2690: ARRAY
2691: IN
2692: IFFALSE 2741
// begin temp_list = ai_retreating_vehicles_defend [ base ] diff vehicle ;
2694: LD_ADDR_VAR 0 4
2698: PUSH
2699: LD_EXP 59
2703: PUSH
2704: LD_VAR 0 1
2708: ARRAY
2709: PUSH
2710: LD_VAR 0 2
2714: DIFF
2715: ST_TO_ADDR
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
2716: LD_ADDR_EXP 59
2720: PUSH
2721: LD_EXP 59
2725: PPUSH
2726: LD_VAR 0 1
2730: PPUSH
2731: LD_VAR 0 4
2735: PPUSH
2736: CALL_OW 1
2740: ST_TO_ADDR
// end ; if vehicle in ai_vehicles_being_repaired [ base ] then
2741: LD_VAR 0 2
2745: PUSH
2746: LD_EXP 60
2750: PUSH
2751: LD_VAR 0 1
2755: ARRAY
2756: IN
2757: IFFALSE 2806
// begin temp_list = ai_vehicles_being_repaired [ base ] diff vehicle ;
2759: LD_ADDR_VAR 0 4
2763: PUSH
2764: LD_EXP 60
2768: PUSH
2769: LD_VAR 0 1
2773: ARRAY
2774: PUSH
2775: LD_VAR 0 2
2779: DIFF
2780: ST_TO_ADDR
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
2781: LD_ADDR_EXP 60
2785: PUSH
2786: LD_EXP 60
2790: PPUSH
2791: LD_VAR 0 1
2795: PPUSH
2796: LD_VAR 0 4
2800: PPUSH
2801: CALL_OW 1
2805: ST_TO_ADDR
// end ; if vehicle in ai_refuel_vehicles_list [ base ] then
2806: LD_VAR 0 2
2810: PUSH
2811: LD_EXP 61
2815: PUSH
2816: LD_VAR 0 1
2820: ARRAY
2821: IN
2822: IFFALSE 2871
// begin temp_list = ai_refuel_vehicles_list [ base ] diff vehicle ;
2824: LD_ADDR_VAR 0 4
2828: PUSH
2829: LD_EXP 61
2833: PUSH
2834: LD_VAR 0 1
2838: ARRAY
2839: PUSH
2840: LD_VAR 0 2
2844: DIFF
2845: ST_TO_ADDR
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
2846: LD_ADDR_EXP 61
2850: PUSH
2851: LD_EXP 61
2855: PPUSH
2856: LD_VAR 0 1
2860: PPUSH
2861: LD_VAR 0 4
2865: PPUSH
2866: CALL_OW 1
2870: ST_TO_ADDR
// end ; if vehicle = ai_vehicle_being_moved [ base ] then
2871: LD_VAR 0 2
2875: PUSH
2876: LD_EXP 68
2880: PUSH
2881: LD_VAR 0 1
2885: ARRAY
2886: EQUAL
2887: IFFALSE 2912
// ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
2889: LD_ADDR_EXP 68
2893: PUSH
2894: LD_EXP 68
2898: PPUSH
2899: LD_VAR 0 1
2903: PPUSH
2904: LD_INT 0
2906: PPUSH
2907: CALL_OW 1
2911: ST_TO_ADDR
// if vehicle in ai_vehicles_having_been_moved [ base ] then
2912: LD_VAR 0 2
2916: PUSH
2917: LD_EXP 69
2921: PUSH
2922: LD_VAR 0 1
2926: ARRAY
2927: IN
2928: IFFALSE 2977
// begin temp_list = ai_vehicles_having_been_moved [ base ] diff vehicle ;
2930: LD_ADDR_VAR 0 4
2934: PUSH
2935: LD_EXP 69
2939: PUSH
2940: LD_VAR 0 1
2944: ARRAY
2945: PUSH
2946: LD_VAR 0 2
2950: DIFF
2951: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , temp_list ) ;
2952: LD_ADDR_EXP 69
2956: PUSH
2957: LD_EXP 69
2961: PPUSH
2962: LD_VAR 0 1
2966: PPUSH
2967: LD_VAR 0 4
2971: PPUSH
2972: CALL_OW 1
2976: ST_TO_ADDR
// end ; end ;
2977: LD_VAR 0 3
2981: RET
// export function RemoveHumanFromVariables ( base , human , check_if_base_is_dead ) ; var temp_list , i ; begin
2982: LD_INT 0
2984: PPUSH
2985: PPUSH
2986: PPUSH
// result = false ;
2987: LD_ADDR_VAR 0 4
2991: PUSH
2992: LD_INT 0
2994: ST_TO_ADDR
// if human in ai_soldiers [ base ] then
2995: LD_VAR 0 2
2999: PUSH
3000: LD_EXP 30
3004: PUSH
3005: LD_VAR 0 1
3009: ARRAY
3010: IN
3011: IFFALSE 3068
// begin temp_list = ai_soldiers [ base ] diff human ;
3013: LD_ADDR_VAR 0 5
3017: PUSH
3018: LD_EXP 30
3022: PUSH
3023: LD_VAR 0 1
3027: ARRAY
3028: PUSH
3029: LD_VAR 0 2
3033: DIFF
3034: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , base , temp_list ) ;
3035: LD_ADDR_EXP 30
3039: PUSH
3040: LD_EXP 30
3044: PPUSH
3045: LD_VAR 0 1
3049: PPUSH
3050: LD_VAR 0 5
3054: PPUSH
3055: CALL_OW 1
3059: ST_TO_ADDR
// result = true ;
3060: LD_ADDR_VAR 0 4
3064: PUSH
3065: LD_INT 1
3067: ST_TO_ADDR
// end ; if human in ai_engineers [ base ] then
3068: LD_VAR 0 2
3072: PUSH
3073: LD_EXP 32
3077: PUSH
3078: LD_VAR 0 1
3082: ARRAY
3083: IN
3084: IFFALSE 3141
// begin temp_list = ai_engineers [ base ] diff human ;
3086: LD_ADDR_VAR 0 5
3090: PUSH
3091: LD_EXP 32
3095: PUSH
3096: LD_VAR 0 1
3100: ARRAY
3101: PUSH
3102: LD_VAR 0 2
3106: DIFF
3107: ST_TO_ADDR
// ai_engineers = Replace ( ai_engineers , base , temp_list ) ;
3108: LD_ADDR_EXP 32
3112: PUSH
3113: LD_EXP 32
3117: PPUSH
3118: LD_VAR 0 1
3122: PPUSH
3123: LD_VAR 0 5
3127: PPUSH
3128: CALL_OW 1
3132: ST_TO_ADDR
// result = true ;
3133: LD_ADDR_VAR 0 4
3137: PUSH
3138: LD_INT 1
3140: ST_TO_ADDR
// end ; if human in ai_apemen_engineers [ base ] then
3141: LD_VAR 0 2
3145: PUSH
3146: LD_EXP 37
3150: PUSH
3151: LD_VAR 0 1
3155: ARRAY
3156: IN
3157: IFFALSE 3214
// begin temp_list = ai_apemen_engineers [ base ] diff human ;
3159: LD_ADDR_VAR 0 5
3163: PUSH
3164: LD_EXP 37
3168: PUSH
3169: LD_VAR 0 1
3173: ARRAY
3174: PUSH
3175: LD_VAR 0 2
3179: DIFF
3180: ST_TO_ADDR
// ai_apemen_engineers = Replace ( ai_apemen_engineers , base , temp_list ) ;
3181: LD_ADDR_EXP 37
3185: PUSH
3186: LD_EXP 37
3190: PPUSH
3191: LD_VAR 0 1
3195: PPUSH
3196: LD_VAR 0 5
3200: PPUSH
3201: CALL_OW 1
3205: ST_TO_ADDR
// result = true ;
3206: LD_ADDR_VAR 0 4
3210: PUSH
3211: LD_INT 1
3213: ST_TO_ADDR
// end ; if human in ai_mechanics_defend [ base ] then
3214: LD_VAR 0 2
3218: PUSH
3219: LD_EXP 33
3223: PUSH
3224: LD_VAR 0 1
3228: ARRAY
3229: IN
3230: IFFALSE 3287
// begin temp_list = ai_mechanics_defend [ base ] diff human ;
3232: LD_ADDR_VAR 0 5
3236: PUSH
3237: LD_EXP 33
3241: PUSH
3242: LD_VAR 0 1
3246: ARRAY
3247: PUSH
3248: LD_VAR 0 2
3252: DIFF
3253: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , base , temp_list ) ;
3254: LD_ADDR_EXP 33
3258: PUSH
3259: LD_EXP 33
3263: PPUSH
3264: LD_VAR 0 1
3268: PPUSH
3269: LD_VAR 0 5
3273: PPUSH
3274: CALL_OW 1
3278: ST_TO_ADDR
// result = true ;
3279: LD_ADDR_VAR 0 4
3283: PUSH
3284: LD_INT 1
3286: ST_TO_ADDR
// end ; if human in ai_scientists [ base ] then
3287: LD_VAR 0 2
3291: PUSH
3292: LD_EXP 35
3296: PUSH
3297: LD_VAR 0 1
3301: ARRAY
3302: IN
3303: IFFALSE 3360
// begin temp_list = ai_scientists [ base ] diff human ;
3305: LD_ADDR_VAR 0 5
3309: PUSH
3310: LD_EXP 35
3314: PUSH
3315: LD_VAR 0 1
3319: ARRAY
3320: PUSH
3321: LD_VAR 0 2
3325: DIFF
3326: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , base , temp_list ) ;
3327: LD_ADDR_EXP 35
3331: PUSH
3332: LD_EXP 35
3336: PPUSH
3337: LD_VAR 0 1
3341: PPUSH
3342: LD_VAR 0 5
3346: PPUSH
3347: CALL_OW 1
3351: ST_TO_ADDR
// result = true ;
3352: LD_ADDR_VAR 0 4
3356: PUSH
3357: LD_INT 1
3359: ST_TO_ADDR
// end ; if human in ai_heal_these_humans [ base ] then
3360: LD_VAR 0 2
3364: PUSH
3365: LD_EXP 65
3369: PUSH
3370: LD_VAR 0 1
3374: ARRAY
3375: IN
3376: IFFALSE 3425
// begin temp_list = ai_heal_these_humans [ base ] diff human ;
3378: LD_ADDR_VAR 0 5
3382: PUSH
3383: LD_EXP 65
3387: PUSH
3388: LD_VAR 0 1
3392: ARRAY
3393: PUSH
3394: LD_VAR 0 2
3398: DIFF
3399: ST_TO_ADDR
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
3400: LD_ADDR_EXP 65
3404: PUSH
3405: LD_EXP 65
3409: PPUSH
3410: LD_VAR 0 1
3414: PPUSH
3415: LD_VAR 0 5
3419: PPUSH
3420: CALL_OW 1
3424: ST_TO_ADDR
// end ; if human = ai_building_constructor [ base ] then
3425: LD_VAR 0 2
3429: PUSH
3430: LD_EXP 67
3434: PUSH
3435: LD_VAR 0 1
3439: ARRAY
3440: EQUAL
3441: IFFALSE 3466
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
3443: LD_ADDR_EXP 67
3447: PUSH
3448: LD_EXP 67
3452: PPUSH
3453: LD_VAR 0 1
3457: PPUSH
3458: LD_INT 0
3460: PPUSH
3461: CALL_OW 1
3465: ST_TO_ADDR
// if human = ai_crane_driver [ base ] then
3466: LD_VAR 0 2
3470: PUSH
3471: LD_EXP 82
3475: PUSH
3476: LD_VAR 0 1
3480: ARRAY
3481: EQUAL
3482: IFFALSE 3507
// ai_crane_driver = Replace ( ai_crane_driver , base , 0 ) ;
3484: LD_ADDR_EXP 82
3488: PUSH
3489: LD_EXP 82
3493: PPUSH
3494: LD_VAR 0 1
3498: PPUSH
3499: LD_INT 0
3501: PPUSH
3502: CALL_OW 1
3506: ST_TO_ADDR
// if check_if_base_is_dead then
3507: LD_VAR 0 3
3511: IFFALSE 3609
// if ( ( ai_soldiers [ base ] ^ ai_engineers [ base ] ^ ai_apemen_engineers [ base ] ^ ai_mechanics_defend [ base ] ^ ai_scientists [ base ] ^ ai_attacking_scientists [ base ] ) diff 0 ) = 0 then
3513: LD_EXP 30
3517: PUSH
3518: LD_VAR 0 1
3522: ARRAY
3523: PUSH
3524: LD_EXP 32
3528: PUSH
3529: LD_VAR 0 1
3533: ARRAY
3534: ADD
3535: PUSH
3536: LD_EXP 37
3540: PUSH
3541: LD_VAR 0 1
3545: ARRAY
3546: ADD
3547: PUSH
3548: LD_EXP 33
3552: PUSH
3553: LD_VAR 0 1
3557: ARRAY
3558: ADD
3559: PUSH
3560: LD_EXP 35
3564: PUSH
3565: LD_VAR 0 1
3569: ARRAY
3570: ADD
3571: PUSH
3572: LD_EXP 36
3576: PUSH
3577: LD_VAR 0 1
3581: ARRAY
3582: ADD
3583: PUSH
3584: LD_INT 0
3586: DIFF
3587: PUSH
3588: LD_INT 0
3590: EQUAL
3591: IFFALSE 3609
// begin ai_bases = ai_bases diff base ;
3593: LD_ADDR_EXP 29
3597: PUSH
3598: LD_EXP 29
3602: PUSH
3603: LD_VAR 0 1
3607: DIFF
3608: ST_TO_ADDR
// end ; end ;
3609: LD_VAR 0 4
3613: RET
// export function GetBaseArea ( base ) ; begin
3614: LD_INT 0
3616: PPUSH
// case base of 1 :
3617: LD_VAR 0 1
3621: PUSH
3622: LD_INT 1
3624: DOUBLE
3625: EQUAL
3626: IFTRUE 3630
3628: GO 3641
3630: POP
// result = area_base1 ; 2 :
3631: LD_ADDR_VAR 0 2
3635: PUSH
3636: LD_INT 1
3638: ST_TO_ADDR
3639: GO 3813
3641: LD_INT 2
3643: DOUBLE
3644: EQUAL
3645: IFTRUE 3649
3647: GO 3660
3649: POP
// result = area_base2 ; 3 :
3650: LD_ADDR_VAR 0 2
3654: PUSH
3655: LD_INT 2
3657: ST_TO_ADDR
3658: GO 3813
3660: LD_INT 3
3662: DOUBLE
3663: EQUAL
3664: IFTRUE 3668
3666: GO 3679
3668: POP
// result = area_base3 ; 4 :
3669: LD_ADDR_VAR 0 2
3673: PUSH
3674: LD_INT 3
3676: ST_TO_ADDR
3677: GO 3813
3679: LD_INT 4
3681: DOUBLE
3682: EQUAL
3683: IFTRUE 3687
3685: GO 3698
3687: POP
// result = area_base4 ; 5 :
3688: LD_ADDR_VAR 0 2
3692: PUSH
3693: LD_INT 7
3695: ST_TO_ADDR
3696: GO 3813
3698: LD_INT 5
3700: DOUBLE
3701: EQUAL
3702: IFTRUE 3706
3704: GO 3717
3706: POP
// result = area_base5 ; 6 :
3707: LD_ADDR_VAR 0 2
3711: PUSH
3712: LD_INT 8
3714: ST_TO_ADDR
3715: GO 3813
3717: LD_INT 6
3719: DOUBLE
3720: EQUAL
3721: IFTRUE 3725
3723: GO 3736
3725: POP
// result = area_base6 ; 7 :
3726: LD_ADDR_VAR 0 2
3730: PUSH
3731: LD_INT 9
3733: ST_TO_ADDR
3734: GO 3813
3736: LD_INT 7
3738: DOUBLE
3739: EQUAL
3740: IFTRUE 3744
3742: GO 3755
3744: POP
// result = area_base7 ; 8 :
3745: LD_ADDR_VAR 0 2
3749: PUSH
3750: LD_INT 10
3752: ST_TO_ADDR
3753: GO 3813
3755: LD_INT 8
3757: DOUBLE
3758: EQUAL
3759: IFTRUE 3763
3761: GO 3774
3763: POP
// result = area_base8 ; 9 :
3764: LD_ADDR_VAR 0 2
3768: PUSH
3769: LD_INT 11
3771: ST_TO_ADDR
3772: GO 3813
3774: LD_INT 9
3776: DOUBLE
3777: EQUAL
3778: IFTRUE 3782
3780: GO 3793
3782: POP
// result = area_base9 ; 10 :
3783: LD_ADDR_VAR 0 2
3787: PUSH
3788: LD_INT 17
3790: ST_TO_ADDR
3791: GO 3813
3793: LD_INT 10
3795: DOUBLE
3796: EQUAL
3797: IFTRUE 3801
3799: GO 3812
3801: POP
// result = area_base10 ; end ;
3802: LD_ADDR_VAR 0 2
3806: PUSH
3807: LD_INT 18
3809: ST_TO_ADDR
3810: GO 3813
3812: POP
// end ;
3813: LD_VAR 0 2
3817: RET
// export function GetBaseSide ( base ) ; begin
3818: LD_INT 0
3820: PPUSH
// case base of 1 :
3821: LD_VAR 0 1
3825: PUSH
3826: LD_INT 1
3828: DOUBLE
3829: EQUAL
3830: IFTRUE 3834
3832: GO 3847
3834: POP
// result = russians ; 2 :
3835: LD_ADDR_VAR 0 2
3839: PUSH
3840: LD_EXP 5
3844: ST_TO_ADDR
3845: GO 4037
3847: LD_INT 2
3849: DOUBLE
3850: EQUAL
3851: IFTRUE 3855
3853: GO 3868
3855: POP
// result = russians ; 3 :
3856: LD_ADDR_VAR 0 2
3860: PUSH
3861: LD_EXP 5
3865: ST_TO_ADDR
3866: GO 4037
3868: LD_INT 3
3870: DOUBLE
3871: EQUAL
3872: IFTRUE 3876
3874: GO 3889
3876: POP
// result = russians ; 4 :
3877: LD_ADDR_VAR 0 2
3881: PUSH
3882: LD_EXP 5
3886: ST_TO_ADDR
3887: GO 4037
3889: LD_INT 4
3891: DOUBLE
3892: EQUAL
3893: IFTRUE 3897
3895: GO 3910
3897: POP
// result = russians ; 5 :
3898: LD_ADDR_VAR 0 2
3902: PUSH
3903: LD_EXP 5
3907: ST_TO_ADDR
3908: GO 4037
3910: LD_INT 5
3912: DOUBLE
3913: EQUAL
3914: IFTRUE 3918
3916: GO 3931
3918: POP
// result = russians ; 6 :
3919: LD_ADDR_VAR 0 2
3923: PUSH
3924: LD_EXP 5
3928: ST_TO_ADDR
3929: GO 4037
3931: LD_INT 6
3933: DOUBLE
3934: EQUAL
3935: IFTRUE 3939
3937: GO 3952
3939: POP
// result = russians ; 7 :
3940: LD_ADDR_VAR 0 2
3944: PUSH
3945: LD_EXP 5
3949: ST_TO_ADDR
3950: GO 4037
3952: LD_INT 7
3954: DOUBLE
3955: EQUAL
3956: IFTRUE 3960
3958: GO 3973
3960: POP
// result = russians ; 8 :
3961: LD_ADDR_VAR 0 2
3965: PUSH
3966: LD_EXP 5
3970: ST_TO_ADDR
3971: GO 4037
3973: LD_INT 8
3975: DOUBLE
3976: EQUAL
3977: IFTRUE 3981
3979: GO 3994
3981: POP
// result = russians ; 9 :
3982: LD_ADDR_VAR 0 2
3986: PUSH
3987: LD_EXP 5
3991: ST_TO_ADDR
3992: GO 4037
3994: LD_INT 9
3996: DOUBLE
3997: EQUAL
3998: IFTRUE 4002
4000: GO 4015
4002: POP
// result = russians ; 10 :
4003: LD_ADDR_VAR 0 2
4007: PUSH
4008: LD_EXP 5
4012: ST_TO_ADDR
4013: GO 4037
4015: LD_INT 10
4017: DOUBLE
4018: EQUAL
4019: IFTRUE 4023
4021: GO 4036
4023: POP
// result = russians ; end ;
4024: LD_ADDR_VAR 0 2
4028: PUSH
4029: LD_EXP 5
4033: ST_TO_ADDR
4034: GO 4037
4036: POP
// end ;
4037: LD_VAR 0 2
4041: RET
// export function GetBaseNation ( base ) ; begin
4042: LD_INT 0
4044: PPUSH
// case base of 1 :
4045: LD_VAR 0 1
4049: PUSH
4050: LD_INT 1
4052: DOUBLE
4053: EQUAL
4054: IFTRUE 4058
4056: GO 4069
4058: POP
// result = nation_russian ; 2 :
4059: LD_ADDR_VAR 0 2
4063: PUSH
4064: LD_INT 3
4066: ST_TO_ADDR
4067: GO 4241
4069: LD_INT 2
4071: DOUBLE
4072: EQUAL
4073: IFTRUE 4077
4075: GO 4088
4077: POP
// result = nation_russian ; 3 :
4078: LD_ADDR_VAR 0 2
4082: PUSH
4083: LD_INT 3
4085: ST_TO_ADDR
4086: GO 4241
4088: LD_INT 3
4090: DOUBLE
4091: EQUAL
4092: IFTRUE 4096
4094: GO 4107
4096: POP
// result = nation_russian ; 4 :
4097: LD_ADDR_VAR 0 2
4101: PUSH
4102: LD_INT 3
4104: ST_TO_ADDR
4105: GO 4241
4107: LD_INT 4
4109: DOUBLE
4110: EQUAL
4111: IFTRUE 4115
4113: GO 4126
4115: POP
// result = nation_russian ; 5 :
4116: LD_ADDR_VAR 0 2
4120: PUSH
4121: LD_INT 3
4123: ST_TO_ADDR
4124: GO 4241
4126: LD_INT 5
4128: DOUBLE
4129: EQUAL
4130: IFTRUE 4134
4132: GO 4145
4134: POP
// result = nation_russian ; 6 :
4135: LD_ADDR_VAR 0 2
4139: PUSH
4140: LD_INT 3
4142: ST_TO_ADDR
4143: GO 4241
4145: LD_INT 6
4147: DOUBLE
4148: EQUAL
4149: IFTRUE 4153
4151: GO 4164
4153: POP
// result = nation_russian ; 7 :
4154: LD_ADDR_VAR 0 2
4158: PUSH
4159: LD_INT 3
4161: ST_TO_ADDR
4162: GO 4241
4164: LD_INT 7
4166: DOUBLE
4167: EQUAL
4168: IFTRUE 4172
4170: GO 4183
4172: POP
// result = nation_russian ; 8 :
4173: LD_ADDR_VAR 0 2
4177: PUSH
4178: LD_INT 3
4180: ST_TO_ADDR
4181: GO 4241
4183: LD_INT 8
4185: DOUBLE
4186: EQUAL
4187: IFTRUE 4191
4189: GO 4202
4191: POP
// result = nation_russian ; 9 :
4192: LD_ADDR_VAR 0 2
4196: PUSH
4197: LD_INT 3
4199: ST_TO_ADDR
4200: GO 4241
4202: LD_INT 9
4204: DOUBLE
4205: EQUAL
4206: IFTRUE 4210
4208: GO 4221
4210: POP
// result = nation_russian ; 10 :
4211: LD_ADDR_VAR 0 2
4215: PUSH
4216: LD_INT 3
4218: ST_TO_ADDR
4219: GO 4241
4221: LD_INT 10
4223: DOUBLE
4224: EQUAL
4225: IFTRUE 4229
4227: GO 4240
4229: POP
// result = nation_russian ; end ;
4230: LD_ADDR_VAR 0 2
4234: PUSH
4235: LD_INT 3
4237: ST_TO_ADDR
4238: GO 4241
4240: POP
// end ;
4241: LD_VAR 0 2
4245: RET
// export function FindBase ( un ) ; var base ; begin
4246: LD_INT 0
4248: PPUSH
4249: PPUSH
// result = 0 ;
4250: LD_ADDR_VAR 0 2
4254: PUSH
4255: LD_INT 0
4257: ST_TO_ADDR
// for base in ai_bases do
4258: LD_ADDR_VAR 0 3
4262: PUSH
4263: LD_EXP 29
4267: PUSH
4268: FOR_IN
4269: IFFALSE 4308
// if IsInArea ( un , GetBaseArea ( base ) ) then
4271: LD_VAR 0 1
4275: PPUSH
4276: LD_VAR 0 3
4280: PPUSH
4281: CALL 3614 0 1
4285: PPUSH
4286: CALL_OW 308
4290: IFFALSE 4306
// begin result = base ;
4292: LD_ADDR_VAR 0 2
4296: PUSH
4297: LD_VAR 0 3
4301: ST_TO_ADDR
// exit ;
4302: POP
4303: POP
4304: GO 4310
// end ;
4306: GO 4268
4308: POP
4309: POP
// end ;
4310: LD_VAR 0 2
4314: RET
// every 0 0$1 + 0 0$0.1 do var side , i , temp_list , buildings_list , soldiers_list , temp_unit , base , val , special_units , bunkers , under_attack , j ; var temp_list_2 , special_defenders ;
4315: GO 4317
4317: DISABLE
4318: LD_INT 0
4320: PPUSH
4321: PPUSH
4322: PPUSH
4323: PPUSH
4324: PPUSH
4325: PPUSH
4326: PPUSH
4327: PPUSH
4328: PPUSH
4329: PPUSH
4330: PPUSH
4331: PPUSH
4332: PPUSH
4333: PPUSH
// begin repeat if ai_bases = 0 then
4334: LD_EXP 29
4338: PUSH
4339: LD_INT 0
4341: EQUAL
4342: IFFALSE 4346
// exit ;
4344: GO 5628
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
4346: LD_INT 35
4348: PUSH
4349: LD_EXP 29
4353: PUSH
4354: LD_INT 0
4356: PLUS
4357: MOD
4358: PPUSH
4359: CALL_OW 67
// for base in ai_bases do
4363: LD_ADDR_VAR 0 7
4367: PUSH
4368: LD_EXP 29
4372: PUSH
4373: FOR_IN
4374: IFFALSE 5622
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
4376: LD_INT 35
4378: PUSH
4379: LD_EXP 29
4383: PUSH
4384: LD_INT 0
4386: PLUS
4387: DIV
4388: PPUSH
4389: CALL_OW 67
// side = GetBaseSide ( base ) ;
4393: LD_ADDR_VAR 0 1
4397: PUSH
4398: LD_VAR 0 7
4402: PPUSH
4403: CALL 3818 0 1
4407: ST_TO_ADDR
// soldiers_list = ai_soldiers [ base ] diff ai_excepted_soldiers [ base ] ;
4408: LD_ADDR_VAR 0 5
4412: PUSH
4413: LD_EXP 30
4417: PUSH
4418: LD_VAR 0 7
4422: ARRAY
4423: PUSH
4424: LD_EXP 38
4428: PUSH
4429: LD_VAR 0 7
4433: ARRAY
4434: DIFF
4435: ST_TO_ADDR
// under_attack := BaseUnderAttack ( base , - 1 ) ;
4436: LD_ADDR_VAR 0 11
4440: PUSH
4441: LD_VAR 0 7
4445: PPUSH
4446: LD_INT 1
4448: NEG
4449: PPUSH
4450: CALL 18712 0 2
4454: ST_TO_ADDR
// special_defenders = [ ] ;
4455: LD_ADDR_VAR 0 14
4459: PUSH
4460: EMPTY
4461: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
4462: LD_ADDR_VAR 0 3
4466: PUSH
4467: LD_EXP 65
4471: PUSH
4472: LD_VAR 0 7
4476: ARRAY
4477: ST_TO_ADDR
// for i in soldiers_list diff ai_heal_these_humans [ base ] do
4478: LD_ADDR_VAR 0 2
4482: PUSH
4483: LD_VAR 0 5
4487: PUSH
4488: LD_EXP 65
4492: PUSH
4493: LD_VAR 0 7
4497: ARRAY
4498: DIFF
4499: PUSH
4500: FOR_IN
4501: IFFALSE 4564
// if GetLives ( i ) <= 500 or ( GetLives ( i ) < 800 and not i in special_defenders ) then
4503: LD_VAR 0 2
4507: PPUSH
4508: CALL_OW 256
4512: PUSH
4513: LD_INT 500
4515: LESSEQUAL
4516: PUSH
4517: LD_VAR 0 2
4521: PPUSH
4522: CALL_OW 256
4526: PUSH
4527: LD_INT 800
4529: LESS
4530: PUSH
4531: LD_VAR 0 2
4535: PUSH
4536: LD_VAR 0 14
4540: IN
4541: NOT
4542: AND
4543: OR
4544: IFFALSE 4562
// temp_list = temp_list ^ i ;
4546: LD_ADDR_VAR 0 3
4550: PUSH
4551: LD_VAR 0 3
4555: PUSH
4556: LD_VAR 0 2
4560: ADD
4561: ST_TO_ADDR
4562: GO 4500
4564: POP
4565: POP
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
4566: LD_ADDR_EXP 65
4570: PUSH
4571: LD_EXP 65
4575: PPUSH
4576: LD_VAR 0 7
4580: PPUSH
4581: LD_VAR 0 3
4585: PPUSH
4586: CALL_OW 1
4590: ST_TO_ADDR
// if not under_attack then
4591: LD_VAR 0 11
4595: NOT
4596: IFFALSE 4733
// begin for i in ai_heal_these_humans [ base ] do
4598: LD_ADDR_VAR 0 2
4602: PUSH
4603: LD_EXP 65
4607: PUSH
4608: LD_VAR 0 7
4612: ARRAY
4613: PUSH
4614: FOR_IN
4615: IFFALSE 4687
// if i in soldiers_list then
4617: LD_VAR 0 2
4621: PUSH
4622: LD_VAR 0 5
4626: IN
4627: IFFALSE 4685
// case GetType ( IsInUnit ( i ) ) of unit_vehicle :
4629: LD_VAR 0 2
4633: PPUSH
4634: CALL_OW 310
4638: PPUSH
4639: CALL_OW 247
4643: PUSH
4644: LD_INT 2
4646: DOUBLE
4647: EQUAL
4648: IFTRUE 4652
4650: GO 4664
4652: POP
// ComExitVehicle ( i ) ; unit_building :
4653: LD_VAR 0 2
4657: PPUSH
4658: CALL_OW 121
4662: GO 4685
4664: LD_INT 3
4666: DOUBLE
4667: EQUAL
4668: IFTRUE 4672
4670: GO 4684
4672: POP
// ComExitBuilding ( i ) ; end ;
4673: LD_VAR 0 2
4677: PPUSH
4678: CALL_OW 122
4682: GO 4685
4684: POP
4685: GO 4614
4687: POP
4688: POP
// soldiers_list = soldiers_list diff ai_heal_these_humans [ base ] ;
4689: LD_ADDR_VAR 0 5
4693: PUSH
4694: LD_VAR 0 5
4698: PUSH
4699: LD_EXP 65
4703: PUSH
4704: LD_VAR 0 7
4708: ARRAY
4709: DIFF
4710: ST_TO_ADDR
// special_defenders = special_defenders diff ai_heal_these_humans [ base ] ;
4711: LD_ADDR_VAR 0 14
4715: PUSH
4716: LD_VAR 0 14
4720: PUSH
4721: LD_EXP 65
4725: PUSH
4726: LD_VAR 0 7
4730: ARRAY
4731: DIFF
4732: ST_TO_ADDR
// end ; if soldiers_list = 0 then
4733: LD_VAR 0 5
4737: PUSH
4738: LD_INT 0
4740: EQUAL
4741: IFFALSE 4745
// continue ;
4743: GO 4373
// i = false ;
4745: LD_ADDR_VAR 0 2
4749: PUSH
4750: LD_INT 0
4752: ST_TO_ADDR
// if IsOk ( ai_depot [ base ] ) then
4753: LD_EXP 39
4757: PUSH
4758: LD_VAR 0 7
4762: ARRAY
4763: PPUSH
4764: CALL_OW 302
4768: IFFALSE 4808
// if GetEnergy ( GetBase ( ai_depot [ base ] ) ) [ 4 ] > 0 then
4770: LD_EXP 39
4774: PUSH
4775: LD_VAR 0 7
4779: ARRAY
4780: PPUSH
4781: CALL_OW 274
4785: PPUSH
4786: CALL_OW 278
4790: PUSH
4791: LD_INT 4
4793: ARRAY
4794: PUSH
4795: LD_INT 0
4797: GREATER
4798: IFFALSE 4808
// i = true ;
4800: LD_ADDR_VAR 0 2
4804: PUSH
4805: LD_INT 1
4807: ST_TO_ADDR
// if i then
4808: LD_VAR 0 2
4812: IFFALSE 4832
// bunkers = ai_bunkers [ base ] else
4814: LD_ADDR_VAR 0 10
4818: PUSH
4819: LD_EXP 43
4823: PUSH
4824: LD_VAR 0 7
4828: ARRAY
4829: ST_TO_ADDR
4830: GO 4893
// begin bunkers = [ ] ;
4832: LD_ADDR_VAR 0 10
4836: PUSH
4837: EMPTY
4838: ST_TO_ADDR
// for i in ai_bunkers [ base ] do
4839: LD_ADDR_VAR 0 2
4843: PUSH
4844: LD_EXP 43
4848: PUSH
4849: LD_VAR 0 7
4853: ARRAY
4854: PUSH
4855: FOR_IN
4856: IFFALSE 4891
// if GetBType ( i ) = b_breastwork then
4858: LD_VAR 0 2
4862: PPUSH
4863: CALL_OW 266
4867: PUSH
4868: LD_INT 31
4870: EQUAL
4871: IFFALSE 4889
// bunkers = bunkers ^ i ;
4873: LD_ADDR_VAR 0 10
4877: PUSH
4878: LD_VAR 0 10
4882: PUSH
4883: LD_VAR 0 2
4887: ADD
4888: ST_TO_ADDR
4889: GO 4855
4891: POP
4892: POP
// end ; buildings_list = [ ] ;
4893: LD_ADDR_VAR 0 4
4897: PUSH
4898: EMPTY
4899: ST_TO_ADDR
// for i in UnitFilter ( bunkers , [ f_ok ] ) do
4900: LD_ADDR_VAR 0 2
4904: PUSH
4905: LD_VAR 0 10
4909: PPUSH
4910: LD_INT 50
4912: PUSH
4913: EMPTY
4914: LIST
4915: PPUSH
4916: CALL_OW 72
4920: PUSH
4921: FOR_IN
4922: IFFALSE 4985
// begin temp_unit = UnitsInside ( i ) ;
4924: LD_ADDR_VAR 0 6
4928: PUSH
4929: LD_VAR 0 2
4933: PPUSH
4934: CALL_OW 313
4938: ST_TO_ADDR
// if temp_unit = 0 then
4939: LD_VAR 0 6
4943: PUSH
4944: LD_INT 0
4946: EQUAL
4947: IFFALSE 4967
// buildings_list = buildings_list ^ i else
4949: LD_ADDR_VAR 0 4
4953: PUSH
4954: LD_VAR 0 4
4958: PUSH
4959: LD_VAR 0 2
4963: ADD
4964: ST_TO_ADDR
4965: GO 4983
// soldiers_list = soldiers_list diff temp_unit ;
4967: LD_ADDR_VAR 0 5
4971: PUSH
4972: LD_VAR 0 5
4976: PUSH
4977: LD_VAR 0 6
4981: DIFF
4982: ST_TO_ADDR
// end ;
4983: GO 4921
4985: POP
4986: POP
// if buildings_list > 0 then
4987: LD_VAR 0 4
4991: PUSH
4992: LD_INT 0
4994: GREATER
4995: IFFALSE 5542
// begin if not under_attack then
4997: LD_VAR 0 11
5001: NOT
5002: IFFALSE 5072
// begin temp_list = [ ] ;
5004: LD_ADDR_VAR 0 3
5008: PUSH
5009: EMPTY
5010: ST_TO_ADDR
// for i in soldiers_list do
5011: LD_ADDR_VAR 0 2
5015: PUSH
5016: LD_VAR 0 5
5020: PUSH
5021: FOR_IN
5022: IFFALSE 5050
// temp_list = temp_list ^ GetSkill ( i , skill_combat ) ;
5024: LD_ADDR_VAR 0 3
5028: PUSH
5029: LD_VAR 0 3
5033: PUSH
5034: LD_VAR 0 2
5038: PPUSH
5039: LD_INT 1
5041: PPUSH
5042: CALL_OW 259
5046: ADD
5047: ST_TO_ADDR
5048: GO 5021
5050: POP
5051: POP
// soldiers_list = SortListByListDesc ( soldiers_list , temp_list ) ;
5052: LD_ADDR_VAR 0 5
5056: PUSH
5057: LD_VAR 0 5
5061: PPUSH
5062: LD_VAR 0 3
5066: PPUSH
5067: CALL_OW 77
5071: ST_TO_ADDR
// end ; special_units = UnitFilter ( soldiers_list , [ f_or , [ f_class , class_bazooker ] , [ f_class , class_sniper ] , [ f_class , class_mortar ] ] ) ;
5072: LD_ADDR_VAR 0 9
5076: PUSH
5077: LD_VAR 0 5
5081: PPUSH
5082: LD_INT 2
5084: PUSH
5085: LD_INT 25
5087: PUSH
5088: LD_INT 9
5090: PUSH
5091: EMPTY
5092: LIST
5093: LIST
5094: PUSH
5095: LD_INT 25
5097: PUSH
5098: LD_INT 5
5100: PUSH
5101: EMPTY
5102: LIST
5103: LIST
5104: PUSH
5105: LD_INT 25
5107: PUSH
5108: LD_INT 8
5110: PUSH
5111: EMPTY
5112: LIST
5113: LIST
5114: PUSH
5115: EMPTY
5116: LIST
5117: LIST
5118: LIST
5119: LIST
5120: PPUSH
5121: CALL_OW 72
5125: ST_TO_ADDR
// soldiers_list = soldiers_list diff special_units ;
5126: LD_ADDR_VAR 0 5
5130: PUSH
5131: LD_VAR 0 5
5135: PUSH
5136: LD_VAR 0 9
5140: DIFF
5141: ST_TO_ADDR
// for i = 1 to buildings_list do
5142: LD_ADDR_VAR 0 2
5146: PUSH
5147: DOUBLE
5148: LD_INT 1
5150: DEC
5151: ST_TO_ADDR
5152: LD_VAR 0 4
5156: PUSH
5157: FOR_TO
5158: IFFALSE 5538
// begin if soldiers_list = 0 then
5160: LD_VAR 0 5
5164: PUSH
5165: LD_INT 0
5167: EQUAL
5168: IFFALSE 5199
// begin if special_units = 0 then
5170: LD_VAR 0 9
5174: PUSH
5175: LD_INT 0
5177: EQUAL
5178: IFFALSE 5182
// break ;
5180: GO 5538
// soldiers_list = special_units ;
5182: LD_ADDR_VAR 0 5
5186: PUSH
5187: LD_VAR 0 9
5191: ST_TO_ADDR
// special_units = [ ] ;
5192: LD_ADDR_VAR 0 9
5196: PUSH
5197: EMPTY
5198: ST_TO_ADDR
// end ; if not under_attack then
5199: LD_VAR 0 11
5203: NOT
5204: IFFALSE 5269
// begin if GetBType ( buildings_list [ i ] ) = b_breastwork and special_units > 0 then
5206: LD_VAR 0 4
5210: PUSH
5211: LD_VAR 0 2
5215: ARRAY
5216: PPUSH
5217: CALL_OW 266
5221: PUSH
5222: LD_INT 31
5224: EQUAL
5225: PUSH
5226: LD_VAR 0 9
5230: PUSH
5231: LD_INT 0
5233: GREATER
5234: AND
5235: IFFALSE 5253
// temp_unit = special_units [ 1 ] else
5237: LD_ADDR_VAR 0 6
5241: PUSH
5242: LD_VAR 0 9
5246: PUSH
5247: LD_INT 1
5249: ARRAY
5250: ST_TO_ADDR
5251: GO 5267
// temp_unit = soldiers_list [ 1 ] ;
5253: LD_ADDR_VAR 0 6
5257: PUSH
5258: LD_VAR 0 5
5262: PUSH
5263: LD_INT 1
5265: ARRAY
5266: ST_TO_ADDR
// end else
5267: GO 5398
// begin if GetBType ( buildings_list [ i ] ) = b_breastwork and special_units > 0 then
5269: LD_VAR 0 4
5273: PUSH
5274: LD_VAR 0 2
5278: ARRAY
5279: PPUSH
5280: CALL_OW 266
5284: PUSH
5285: LD_INT 31
5287: EQUAL
5288: PUSH
5289: LD_VAR 0 9
5293: PUSH
5294: LD_INT 0
5296: GREATER
5297: AND
5298: IFFALSE 5312
// temp_list_2 = special_units else
5300: LD_ADDR_VAR 0 13
5304: PUSH
5305: LD_VAR 0 9
5309: ST_TO_ADDR
5310: GO 5322
// temp_list_2 = soldiers_list ;
5312: LD_ADDR_VAR 0 13
5316: PUSH
5317: LD_VAR 0 5
5321: ST_TO_ADDR
// temp_list = [ ] ;
5322: LD_ADDR_VAR 0 3
5326: PUSH
5327: EMPTY
5328: ST_TO_ADDR
// for j in temp_list_2 do
5329: LD_ADDR_VAR 0 12
5333: PUSH
5334: LD_VAR 0 13
5338: PUSH
5339: FOR_IN
5340: IFFALSE 5376
// temp_list = temp_list ^ GetDistUnits ( j , buildings_list [ i ] ) ;
5342: LD_ADDR_VAR 0 3
5346: PUSH
5347: LD_VAR 0 3
5351: PUSH
5352: LD_VAR 0 12
5356: PPUSH
5357: LD_VAR 0 4
5361: PUSH
5362: LD_VAR 0 2
5366: ARRAY
5367: PPUSH
5368: CALL_OW 296
5372: ADD
5373: ST_TO_ADDR
5374: GO 5339
5376: POP
5377: POP
// temp_unit = WorstFromListByList ( temp_list_2 , temp_list ) ;
5378: LD_ADDR_VAR 0 6
5382: PUSH
5383: LD_VAR 0 13
5387: PPUSH
5388: LD_VAR 0 3
5392: PPUSH
5393: CALL_OW 78
5397: ST_TO_ADDR
// end ; if IsOk ( buildings_list [ i ] ) then
5398: LD_VAR 0 4
5402: PUSH
5403: LD_VAR 0 2
5407: ARRAY
5408: PPUSH
5409: CALL_OW 302
5413: IFFALSE 5437
// ComEnterUnit ( temp_unit , buildings_list [ i ] ) else
5415: LD_VAR 0 6
5419: PPUSH
5420: LD_VAR 0 4
5424: PUSH
5425: LD_VAR 0 2
5429: ARRAY
5430: PPUSH
5431: CALL_OW 120
5435: GO 5504
// if GetDistUnits ( temp_unit , buildings_list [ i ] ) > 4 then
5437: LD_VAR 0 6
5441: PPUSH
5442: LD_VAR 0 4
5446: PUSH
5447: LD_VAR 0 2
5451: ARRAY
5452: PPUSH
5453: CALL_OW 296
5457: PUSH
5458: LD_INT 4
5460: GREATER
5461: IFFALSE 5504
// ComAgressiveMove ( temp_unit , GetX ( buildings_list [ i ] ) , GetY ( buildings_list [ i ] ) ) ;
5463: LD_VAR 0 6
5467: PPUSH
5468: LD_VAR 0 4
5472: PUSH
5473: LD_VAR 0 2
5477: ARRAY
5478: PPUSH
5479: CALL_OW 250
5483: PPUSH
5484: LD_VAR 0 4
5488: PUSH
5489: LD_VAR 0 2
5493: ARRAY
5494: PPUSH
5495: CALL_OW 251
5499: PPUSH
5500: CALL_OW 114
// soldiers_list = soldiers_list diff temp_unit ;
5504: LD_ADDR_VAR 0 5
5508: PUSH
5509: LD_VAR 0 5
5513: PUSH
5514: LD_VAR 0 6
5518: DIFF
5519: ST_TO_ADDR
// special_units = special_units diff temp_unit ;
5520: LD_ADDR_VAR 0 9
5524: PUSH
5525: LD_VAR 0 9
5529: PUSH
5530: LD_VAR 0 6
5534: DIFF
5535: ST_TO_ADDR
// end ;
5536: GO 5157
5538: POP
5539: POP
// end else
5540: GO 5549
// special_units = [ ] ;
5542: LD_ADDR_VAR 0 9
5546: PUSH
5547: EMPTY
5548: ST_TO_ADDR
// DistributeHumansToBuildings ( base , soldiers_list ^ special_units , UnitFilter ( ai_armouries [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , false , 6 , true , true ) ;
5549: LD_VAR 0 7
5553: PPUSH
5554: LD_VAR 0 5
5558: PUSH
5559: LD_VAR 0 9
5563: ADD
5564: PPUSH
5565: LD_EXP 42
5569: PUSH
5570: LD_VAR 0 7
5574: ARRAY
5575: PPUSH
5576: LD_INT 50
5578: PUSH
5579: EMPTY
5580: LIST
5581: PUSH
5582: LD_INT 3
5584: PUSH
5585: LD_INT 57
5587: PUSH
5588: EMPTY
5589: LIST
5590: PUSH
5591: EMPTY
5592: LIST
5593: LIST
5594: PUSH
5595: EMPTY
5596: LIST
5597: LIST
5598: PPUSH
5599: CALL_OW 72
5603: PPUSH
5604: LD_INT 0
5606: PPUSH
5607: LD_INT 6
5609: PPUSH
5610: LD_INT 1
5612: PPUSH
5613: LD_INT 1
5615: PPUSH
5616: CALL 7668 0 7
// end ;
5620: GO 4373
5622: POP
5623: POP
// until false ;
5624: LD_INT 0
5626: IFFALSE 4334
// end ;
5628: PPOPN 14
5630: END
// every 0 0$1 + 0 0$0.1 do var side , base , i , temp_list , un1 , temp_list_2 , temp_value , val , lapsers ;
5631: GO 5633
5633: DISABLE
5634: LD_INT 0
5636: PPUSH
5637: PPUSH
5638: PPUSH
5639: PPUSH
5640: PPUSH
5641: PPUSH
5642: PPUSH
5643: PPUSH
5644: PPUSH
// begin repeat wait ( 0 0$1 ) ;
5645: LD_INT 35
5647: PPUSH
5648: CALL_OW 67
// for base in ai_bases do
5652: LD_ADDR_VAR 0 2
5656: PUSH
5657: LD_EXP 29
5661: PUSH
5662: FOR_IN
5663: IFFALSE 6360
// begin side = GetBaseSide ( base ) ;
5665: LD_ADDR_VAR 0 1
5669: PUSH
5670: LD_VAR 0 2
5674: PPUSH
5675: CALL 3818 0 1
5679: ST_TO_ADDR
// lapsers = [ ] ;
5680: LD_ADDR_VAR 0 9
5684: PUSH
5685: EMPTY
5686: ST_TO_ADDR
// val = false ;
5687: LD_ADDR_VAR 0 8
5691: PUSH
5692: LD_INT 0
5694: ST_TO_ADDR
// if IsOk ( ai_depot [ base ] ) then
5695: LD_EXP 39
5699: PUSH
5700: LD_VAR 0 2
5704: ARRAY
5705: PPUSH
5706: CALL_OW 302
5710: IFFALSE 5750
// if GetEnergy ( GetBase ( ai_depot [ base ] ) ) [ 4 ] > 0 then
5712: LD_EXP 39
5716: PUSH
5717: LD_VAR 0 2
5721: ARRAY
5722: PPUSH
5723: CALL_OW 274
5727: PPUSH
5728: CALL_OW 278
5732: PUSH
5733: LD_INT 4
5735: ARRAY
5736: PUSH
5737: LD_INT 0
5739: GREATER
5740: IFFALSE 5750
// val = true ;
5742: LD_ADDR_VAR 0 8
5746: PUSH
5747: LD_INT 1
5749: ST_TO_ADDR
// if val then
5750: LD_VAR 0 8
5754: IFFALSE 5863
// for i in ai_bunkers [ base ] ^ ai_turrets [ base ] do
5756: LD_ADDR_VAR 0 3
5760: PUSH
5761: LD_EXP 43
5765: PUSH
5766: LD_VAR 0 2
5770: ARRAY
5771: PUSH
5772: LD_EXP 44
5776: PUSH
5777: LD_VAR 0 2
5781: ARRAY
5782: ADD
5783: PUSH
5784: FOR_IN
5785: IFFALSE 5861
// if GetBWeapon ( i ) = ru_time_lapser and IsOk ( i ) and ( UnitsInside ( i ) > 0 or GetBType ( i ) = b_turret ) then
5787: LD_VAR 0 3
5791: PPUSH
5792: CALL_OW 269
5796: PUSH
5797: LD_INT 49
5799: EQUAL
5800: PUSH
5801: LD_VAR 0 3
5805: PPUSH
5806: CALL_OW 302
5810: AND
5811: PUSH
5812: LD_VAR 0 3
5816: PPUSH
5817: CALL_OW 313
5821: PUSH
5822: LD_INT 0
5824: GREATER
5825: PUSH
5826: LD_VAR 0 3
5830: PPUSH
5831: CALL_OW 266
5835: PUSH
5836: LD_INT 33
5838: EQUAL
5839: OR
5840: AND
5841: IFFALSE 5859
// lapsers = lapsers ^ i ;
5843: LD_ADDR_VAR 0 9
5847: PUSH
5848: LD_VAR 0 9
5852: PUSH
5853: LD_VAR 0 3
5857: ADD
5858: ST_TO_ADDR
5859: GO 5784
5861: POP
5862: POP
// for i in ai_soldiers [ base ] diff ai_heal_these_humans [ base ] do
5863: LD_ADDR_VAR 0 3
5867: PUSH
5868: LD_EXP 30
5872: PUSH
5873: LD_VAR 0 2
5877: ARRAY
5878: PUSH
5879: LD_EXP 65
5883: PUSH
5884: LD_VAR 0 2
5888: ARRAY
5889: DIFF
5890: PUSH
5891: FOR_IN
5892: IFFALSE 6356
// if GetClass ( i ) = class_bazooker then
5894: LD_VAR 0 3
5898: PPUSH
5899: CALL_OW 257
5903: PUSH
5904: LD_INT 9
5906: EQUAL
5907: IFFALSE 6354
// begin temp_list = GetTaskList ( i ) ;
5909: LD_ADDR_VAR 0 4
5913: PUSH
5914: LD_VAR 0 3
5918: PPUSH
5919: CALL_OW 437
5923: ST_TO_ADDR
// if temp_list > 0 then
5924: LD_VAR 0 4
5928: PUSH
5929: LD_INT 0
5931: GREATER
5932: IFFALSE 5972
// if temp_list [ 1 ] [ 1 ] = & or temp_list [ 1 ] [ 1 ] = % then
5934: LD_VAR 0 4
5938: PUSH
5939: LD_INT 1
5941: ARRAY
5942: PUSH
5943: LD_INT 1
5945: ARRAY
5946: PUSH
5947: LD_STRING &
5949: EQUAL
5950: PUSH
5951: LD_VAR 0 4
5955: PUSH
5956: LD_INT 1
5958: ARRAY
5959: PUSH
5960: LD_INT 1
5962: ARRAY
5963: PUSH
5964: LD_STRING %
5966: EQUAL
5967: OR
5968: IFFALSE 5972
// continue ;
5970: GO 5891
// un1 = Attacks ( i ) ;
5972: LD_ADDR_VAR 0 5
5976: PUSH
5977: LD_VAR 0 3
5981: PPUSH
5982: CALL_OW 320
5986: ST_TO_ADDR
// if un1 > 0 and DangerousUnits ( [ un1 ] ) > 0 then
5987: LD_VAR 0 5
5991: PUSH
5992: LD_INT 0
5994: GREATER
5995: PUSH
5996: LD_VAR 0 5
6000: PUSH
6001: EMPTY
6002: LIST
6003: PPUSH
6004: CALL 31188 0 1
6008: PUSH
6009: LD_INT 0
6011: GREATER
6012: AND
6013: IFFALSE 6354
// begin temp_list_2 = [ GetX ( un1 ) , GetY ( un1 ) ] ;
6015: LD_ADDR_VAR 0 6
6019: PUSH
6020: LD_VAR 0 5
6024: PPUSH
6025: CALL_OW 250
6029: PUSH
6030: LD_VAR 0 5
6034: PPUSH
6035: CALL_OW 251
6039: PUSH
6040: EMPTY
6041: LIST
6042: LIST
6043: ST_TO_ADDR
// temp_value = false ;
6044: LD_ADDR_VAR 0 7
6048: PUSH
6049: LD_INT 0
6051: ST_TO_ADDR
// for val in ai_time_shift_hexes [ base ] ^ ai_time_shift_hexes_underway [ base ] do
6052: LD_ADDR_VAR 0 8
6056: PUSH
6057: LD_EXP 100
6061: PUSH
6062: LD_VAR 0 2
6066: ARRAY
6067: PUSH
6068: LD_EXP 101
6072: PUSH
6073: LD_VAR 0 2
6077: ARRAY
6078: ADD
6079: PUSH
6080: FOR_IN
6081: IFFALSE 6153
// if GetDistXY ( temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , val [ 1 ] , val [ 2 ] ) <= ai_time_shift_data [ side ] [ 2 ] then
6083: LD_VAR 0 6
6087: PUSH
6088: LD_INT 1
6090: ARRAY
6091: PPUSH
6092: LD_VAR 0 6
6096: PUSH
6097: LD_INT 2
6099: ARRAY
6100: PPUSH
6101: LD_VAR 0 8
6105: PUSH
6106: LD_INT 1
6108: ARRAY
6109: PPUSH
6110: LD_VAR 0 8
6114: PUSH
6115: LD_INT 2
6117: ARRAY
6118: PPUSH
6119: CALL_OW 298
6123: PUSH
6124: LD_EXP 99
6128: PUSH
6129: LD_VAR 0 1
6133: ARRAY
6134: PUSH
6135: LD_INT 2
6137: ARRAY
6138: LESSEQUAL
6139: IFFALSE 6151
// begin temp_value = true ;
6141: LD_ADDR_VAR 0 7
6145: PUSH
6146: LD_INT 1
6148: ST_TO_ADDR
// break ;
6149: GO 6153
// end ;
6151: GO 6080
6153: POP
6154: POP
// if not temp_value then
6155: LD_VAR 0 7
6159: NOT
6160: IFFALSE 6237
// for val in lapsers do
6162: LD_ADDR_VAR 0 8
6166: PUSH
6167: LD_VAR 0 9
6171: PUSH
6172: FOR_IN
6173: IFFALSE 6235
// if GetDistXY ( temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , GetX ( val ) , GetY ( val ) ) <= 11 then
6175: LD_VAR 0 6
6179: PUSH
6180: LD_INT 1
6182: ARRAY
6183: PPUSH
6184: LD_VAR 0 6
6188: PUSH
6189: LD_INT 2
6191: ARRAY
6192: PPUSH
6193: LD_VAR 0 8
6197: PPUSH
6198: CALL_OW 250
6202: PPUSH
6203: LD_VAR 0 8
6207: PPUSH
6208: CALL_OW 251
6212: PPUSH
6213: CALL_OW 298
6217: PUSH
6218: LD_INT 11
6220: LESSEQUAL
6221: IFFALSE 6233
// begin temp_value = true ;
6223: LD_ADDR_VAR 0 7
6227: PUSH
6228: LD_INT 1
6230: ST_TO_ADDR
// break ;
6231: GO 6235
// end ;
6233: GO 6172
6235: POP
6236: POP
// if not temp_value then
6237: LD_VAR 0 7
6241: NOT
6242: IFFALSE 6354
// begin ComTimeShift ( i , temp_list_2 [ 1 ] , temp_list_2 [ 2 ] ) ;
6244: LD_VAR 0 3
6248: PPUSH
6249: LD_VAR 0 6
6253: PUSH
6254: LD_INT 1
6256: ARRAY
6257: PPUSH
6258: LD_VAR 0 6
6262: PUSH
6263: LD_INT 2
6265: ARRAY
6266: PPUSH
6267: CALL_OW 154
// temp_list = Insert ( ai_time_shift_hexes_underway [ base ] , 1 , [ temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , i , tick ] ) ;
6271: LD_ADDR_VAR 0 4
6275: PUSH
6276: LD_EXP 101
6280: PUSH
6281: LD_VAR 0 2
6285: ARRAY
6286: PPUSH
6287: LD_INT 1
6289: PPUSH
6290: LD_VAR 0 6
6294: PUSH
6295: LD_INT 1
6297: ARRAY
6298: PUSH
6299: LD_VAR 0 6
6303: PUSH
6304: LD_INT 2
6306: ARRAY
6307: PUSH
6308: LD_VAR 0 3
6312: PUSH
6313: LD_OWVAR 1
6317: PUSH
6318: EMPTY
6319: LIST
6320: LIST
6321: LIST
6322: LIST
6323: PPUSH
6324: CALL_OW 2
6328: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
6329: LD_ADDR_EXP 101
6333: PUSH
6334: LD_EXP 101
6338: PPUSH
6339: LD_VAR 0 2
6343: PPUSH
6344: LD_VAR 0 4
6348: PPUSH
6349: CALL_OW 1
6353: ST_TO_ADDR
// end ; end ; end ;
6354: GO 5891
6356: POP
6357: POP
// end ;
6358: GO 5662
6360: POP
6361: POP
// until false ;
6362: LD_INT 0
6364: IFFALSE 5645
// end ;
6366: PPOPN 9
6368: END
// every 0 0$1 + 0 0$0.2 do var base , i , temp_list , un1 , temp_list_2 , temp_value ; var shooting_delay ;
6369: GO 6371
6371: DISABLE
6372: LD_INT 0
6374: PPUSH
6375: PPUSH
6376: PPUSH
6377: PPUSH
6378: PPUSH
6379: PPUSH
6380: PPUSH
// begin shooting_delay = [ 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 ] ;
6381: LD_ADDR_VAR 0 7
6385: PUSH
6386: LD_INT 0
6388: PUSH
6389: LD_INT 0
6391: PUSH
6392: LD_INT 0
6394: PUSH
6395: LD_INT 0
6397: PUSH
6398: LD_INT 0
6400: PUSH
6401: LD_INT 0
6403: PUSH
6404: LD_INT 0
6406: PUSH
6407: LD_INT 0
6409: PUSH
6410: LD_INT 0
6412: PUSH
6413: LD_INT 0
6415: PUSH
6416: EMPTY
6417: LIST
6418: LIST
6419: LIST
6420: LIST
6421: LIST
6422: LIST
6423: LIST
6424: LIST
6425: LIST
6426: LIST
6427: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
6428: LD_INT 35
6430: PPUSH
6431: CALL_OW 67
// if difficulty = 1 then
6435: LD_OWVAR 67
6439: PUSH
6440: LD_INT 1
6442: EQUAL
6443: IFFALSE 6447
// exit ;
6445: GO 6917
// for base in ai_bases do
6447: LD_ADDR_VAR 0 1
6451: PUSH
6452: LD_EXP 29
6456: PUSH
6457: FOR_IN
6458: IFFALSE 6911
// begin if shooting_delay [ base ] > 0 0$0 then
6460: LD_VAR 0 7
6464: PUSH
6465: LD_VAR 0 1
6469: ARRAY
6470: PUSH
6471: LD_INT 0
6473: GREATER
6474: IFFALSE 6513
// begin shooting_delay = Replace ( shooting_delay , base , shooting_delay [ base ] - 0 0$1 ) ;
6476: LD_ADDR_VAR 0 7
6480: PUSH
6481: LD_VAR 0 7
6485: PPUSH
6486: LD_VAR 0 1
6490: PPUSH
6491: LD_VAR 0 7
6495: PUSH
6496: LD_VAR 0 1
6500: ARRAY
6501: PUSH
6502: LD_INT 35
6504: MINUS
6505: PPUSH
6506: CALL_OW 1
6510: ST_TO_ADDR
// continue ;
6511: GO 6457
// end ; if Rand ( 1 , 10 ) > 1 then
6513: LD_INT 1
6515: PPUSH
6516: LD_INT 10
6518: PPUSH
6519: CALL_OW 12
6523: PUSH
6524: LD_INT 1
6526: GREATER
6527: IFFALSE 6531
// continue ;
6529: GO 6457
// temp_list = [ ] ;
6531: LD_ADDR_VAR 0 3
6535: PUSH
6536: EMPTY
6537: ST_TO_ADDR
// for i in ai_soldiers [ base ] diff ai_heal_these_humans [ base ] do
6538: LD_ADDR_VAR 0 2
6542: PUSH
6543: LD_EXP 30
6547: PUSH
6548: LD_VAR 0 1
6552: ARRAY
6553: PUSH
6554: LD_EXP 65
6558: PUSH
6559: LD_VAR 0 1
6563: ARRAY
6564: DIFF
6565: PUSH
6566: FOR_IN
6567: IFFALSE 6610
// if IsInUnit ( i ) in ai_armouries [ base ] then
6569: LD_VAR 0 2
6573: PPUSH
6574: CALL_OW 310
6578: PUSH
6579: LD_EXP 42
6583: PUSH
6584: LD_VAR 0 1
6588: ARRAY
6589: IN
6590: IFFALSE 6608
// temp_list = temp_list ^ i ;
6592: LD_ADDR_VAR 0 3
6596: PUSH
6597: LD_VAR 0 3
6601: PUSH
6602: LD_VAR 0 2
6606: ADD
6607: ST_TO_ADDR
6608: GO 6566
6610: POP
6611: POP
// for i in temp_list do
6612: LD_ADDR_VAR 0 2
6616: PUSH
6617: LD_VAR 0 3
6621: PUSH
6622: FOR_IN
6623: IFFALSE 6907
// if GetClass ( i ) = class_bazooker then
6625: LD_VAR 0 2
6629: PPUSH
6630: CALL_OW 257
6634: PUSH
6635: LD_INT 9
6637: EQUAL
6638: IFFALSE 6905
// begin temp_list = GetTaskList ( i ) ;
6640: LD_ADDR_VAR 0 3
6644: PUSH
6645: LD_VAR 0 2
6649: PPUSH
6650: CALL_OW 437
6654: ST_TO_ADDR
// if temp_list > 0 then
6655: LD_VAR 0 3
6659: PUSH
6660: LD_INT 0
6662: GREATER
6663: IFFALSE 6703
// if temp_list [ 1 ] [ 1 ] = & or temp_list [ 1 ] [ 1 ] = % then
6665: LD_VAR 0 3
6669: PUSH
6670: LD_INT 1
6672: ARRAY
6673: PUSH
6674: LD_INT 1
6676: ARRAY
6677: PUSH
6678: LD_STRING &
6680: EQUAL
6681: PUSH
6682: LD_VAR 0 3
6686: PUSH
6687: LD_INT 1
6689: ARRAY
6690: PUSH
6691: LD_INT 1
6693: ARRAY
6694: PUSH
6695: LD_STRING %
6697: EQUAL
6698: OR
6699: IFFALSE 6703
// continue ;
6701: GO 6622
// un1 = Attacks ( i ) ;
6703: LD_ADDR_VAR 0 4
6707: PUSH
6708: LD_VAR 0 2
6712: PPUSH
6713: CALL_OW 320
6717: ST_TO_ADDR
// if un1 > 0 and not IsInArea ( un1 , GetBaseArea ( base ) ) then
6718: LD_VAR 0 4
6722: PUSH
6723: LD_INT 0
6725: GREATER
6726: PUSH
6727: LD_VAR 0 4
6731: PPUSH
6732: LD_VAR 0 1
6736: PPUSH
6737: CALL 3614 0 1
6741: PPUSH
6742: CALL_OW 308
6746: NOT
6747: AND
6748: IFFALSE 6905
// begin temp_list_2 = [ GetX ( un1 ) , GetY ( un1 ) ] ;
6750: LD_ADDR_VAR 0 5
6754: PUSH
6755: LD_VAR 0 4
6759: PPUSH
6760: CALL_OW 250
6764: PUSH
6765: LD_VAR 0 4
6769: PPUSH
6770: CALL_OW 251
6774: PUSH
6775: EMPTY
6776: LIST
6777: LIST
6778: ST_TO_ADDR
// temp_value = AI_GetTurnDirection ( GetX ( i ) , GetY ( i ) , temp_list_2 [ 1 ] , temp_list_2 [ 2 ] ) ;
6779: LD_ADDR_VAR 0 6
6783: PUSH
6784: LD_VAR 0 2
6788: PPUSH
6789: CALL_OW 250
6793: PPUSH
6794: LD_VAR 0 2
6798: PPUSH
6799: CALL_OW 251
6803: PPUSH
6804: LD_VAR 0 5
6808: PUSH
6809: LD_INT 1
6811: ARRAY
6812: PPUSH
6813: LD_VAR 0 5
6817: PUSH
6818: LD_INT 2
6820: ARRAY
6821: PPUSH
6822: CALL 62096 0 4
6826: ST_TO_ADDR
// ComSpaceShift ( i , ShiftX ( temp_list_2 [ 1 ] , temp_value , 1 ) , ShiftY ( temp_list_2 [ 2 ] , temp_value , 1 ) ) ;
6827: LD_VAR 0 2
6831: PPUSH
6832: LD_VAR 0 5
6836: PUSH
6837: LD_INT 1
6839: ARRAY
6840: PPUSH
6841: LD_VAR 0 6
6845: PPUSH
6846: LD_INT 1
6848: PPUSH
6849: CALL_OW 272
6853: PPUSH
6854: LD_VAR 0 5
6858: PUSH
6859: LD_INT 2
6861: ARRAY
6862: PPUSH
6863: LD_VAR 0 6
6867: PPUSH
6868: LD_INT 1
6870: PPUSH
6871: CALL_OW 273
6875: PPUSH
6876: CALL_OW 153
// shooting_delay = Replace ( shooting_delay , base , 0 0$10 ) ;
6880: LD_ADDR_VAR 0 7
6884: PUSH
6885: LD_VAR 0 7
6889: PPUSH
6890: LD_VAR 0 1
6894: PPUSH
6895: LD_INT 350
6897: PPUSH
6898: CALL_OW 1
6902: ST_TO_ADDR
// break ;
6903: GO 6907
// end ; end ;
6905: GO 6622
6907: POP
6908: POP
// end ;
6909: GO 6457
6911: POP
6912: POP
// until false ;
6913: LD_INT 0
6915: IFFALSE 6428
// end ;
6917: PPOPN 7
6919: END
// every 0 0$1 do var base , side , val , temp_value , temp_list ;
6920: GO 6922
6922: DISABLE
6923: LD_INT 0
6925: PPUSH
6926: PPUSH
6927: PPUSH
6928: PPUSH
6929: PPUSH
// begin repeat wait ( 1 ) ;
6930: LD_INT 1
6932: PPUSH
6933: CALL_OW 67
// for base in ai_bases do
6937: LD_ADDR_VAR 0 1
6941: PUSH
6942: LD_EXP 29
6946: PUSH
6947: FOR_IN
6948: IFFALSE 7391
// begin side = GetBaseSide ( base ) ;
6950: LD_ADDR_VAR 0 2
6954: PUSH
6955: LD_VAR 0 1
6959: PPUSH
6960: CALL 3818 0 1
6964: ST_TO_ADDR
// val = 1 ;
6965: LD_ADDR_VAR 0 3
6969: PUSH
6970: LD_INT 1
6972: ST_TO_ADDR
// while val <= ai_time_shift_hexes_underway [ base ] do
6973: LD_VAR 0 3
6977: PUSH
6978: LD_EXP 101
6982: PUSH
6983: LD_VAR 0 1
6987: ARRAY
6988: LESSEQUAL
6989: IFFALSE 7389
// begin if tick = ai_time_shift_hexes_underway [ base ] [ val ] [ 4 ] then
6991: LD_OWVAR 1
6995: PUSH
6996: LD_EXP 101
7000: PUSH
7001: LD_VAR 0 1
7005: ARRAY
7006: PUSH
7007: LD_VAR 0 3
7011: ARRAY
7012: PUSH
7013: LD_INT 4
7015: ARRAY
7016: EQUAL
7017: IFFALSE 7035
// begin val = val + 1 ;
7019: LD_ADDR_VAR 0 3
7023: PUSH
7024: LD_VAR 0 3
7028: PUSH
7029: LD_INT 1
7031: PLUS
7032: ST_TO_ADDR
// continue ;
7033: GO 6973
// end ; temp_value = false ;
7035: LD_ADDR_VAR 0 4
7039: PUSH
7040: LD_INT 0
7042: ST_TO_ADDR
// temp_list = GetTaskList ( ai_time_shift_hexes_underway [ base ] [ val ] [ 3 ] ) ;
7043: LD_ADDR_VAR 0 5
7047: PUSH
7048: LD_EXP 101
7052: PUSH
7053: LD_VAR 0 1
7057: ARRAY
7058: PUSH
7059: LD_VAR 0 3
7063: ARRAY
7064: PUSH
7065: LD_INT 3
7067: ARRAY
7068: PPUSH
7069: CALL_OW 437
7073: ST_TO_ADDR
// if IsOk ( ai_time_shift_hexes_underway [ base ] [ val ] [ 3 ] ) then
7074: LD_EXP 101
7078: PUSH
7079: LD_VAR 0 1
7083: ARRAY
7084: PUSH
7085: LD_VAR 0 3
7089: ARRAY
7090: PUSH
7091: LD_INT 3
7093: ARRAY
7094: PPUSH
7095: CALL_OW 302
7099: IFFALSE 7150
// begin if temp_list = 0 then
7101: LD_VAR 0 5
7105: PUSH
7106: LD_INT 0
7108: EQUAL
7109: IFFALSE 7121
// temp_value = true else
7111: LD_ADDR_VAR 0 4
7115: PUSH
7116: LD_INT 1
7118: ST_TO_ADDR
7119: GO 7148
// if not temp_list [ 1 ] [ 1 ] = & then
7121: LD_VAR 0 5
7125: PUSH
7126: LD_INT 1
7128: ARRAY
7129: PUSH
7130: LD_INT 1
7132: ARRAY
7133: PUSH
7134: LD_STRING &
7136: EQUAL
7137: NOT
7138: IFFALSE 7148
// temp_value = true ;
7140: LD_ADDR_VAR 0 4
7144: PUSH
7145: LD_INT 1
7147: ST_TO_ADDR
// end else
7148: GO 7203
// begin temp_list = Delete ( ai_time_shift_hexes_underway [ base ] , val ) ;
7150: LD_ADDR_VAR 0 5
7154: PUSH
7155: LD_EXP 101
7159: PUSH
7160: LD_VAR 0 1
7164: ARRAY
7165: PPUSH
7166: LD_VAR 0 3
7170: PPUSH
7171: CALL_OW 3
7175: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
7176: LD_ADDR_EXP 101
7180: PUSH
7181: LD_EXP 101
7185: PPUSH
7186: LD_VAR 0 1
7190: PPUSH
7191: LD_VAR 0 5
7195: PPUSH
7196: CALL_OW 1
7200: ST_TO_ADDR
// continue ;
7201: GO 6973
// end ; if temp_value then
7203: LD_VAR 0 4
7207: IFFALSE 7373
// begin temp_list = Insert ( ai_time_shift_hexes [ base ] , 1 , [ ai_time_shift_hexes_underway [ base ] [ val ] [ 1 ] , ai_time_shift_hexes_underway [ base ] [ val ] [ 2 ] , ai_time_shift_data [ side ] [ 1 ] ] ) ;
7209: LD_ADDR_VAR 0 5
7213: PUSH
7214: LD_EXP 100
7218: PUSH
7219: LD_VAR 0 1
7223: ARRAY
7224: PPUSH
7225: LD_INT 1
7227: PPUSH
7228: LD_EXP 101
7232: PUSH
7233: LD_VAR 0 1
7237: ARRAY
7238: PUSH
7239: LD_VAR 0 3
7243: ARRAY
7244: PUSH
7245: LD_INT 1
7247: ARRAY
7248: PUSH
7249: LD_EXP 101
7253: PUSH
7254: LD_VAR 0 1
7258: ARRAY
7259: PUSH
7260: LD_VAR 0 3
7264: ARRAY
7265: PUSH
7266: LD_INT 2
7268: ARRAY
7269: PUSH
7270: LD_EXP 99
7274: PUSH
7275: LD_VAR 0 2
7279: ARRAY
7280: PUSH
7281: LD_INT 1
7283: ARRAY
7284: PUSH
7285: EMPTY
7286: LIST
7287: LIST
7288: LIST
7289: PPUSH
7290: CALL_OW 2
7294: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
7295: LD_ADDR_EXP 100
7299: PUSH
7300: LD_EXP 100
7304: PPUSH
7305: LD_VAR 0 1
7309: PPUSH
7310: LD_VAR 0 5
7314: PPUSH
7315: CALL_OW 1
7319: ST_TO_ADDR
// temp_list = Delete ( ai_time_shift_hexes_underway [ base ] , val ) ;
7320: LD_ADDR_VAR 0 5
7324: PUSH
7325: LD_EXP 101
7329: PUSH
7330: LD_VAR 0 1
7334: ARRAY
7335: PPUSH
7336: LD_VAR 0 3
7340: PPUSH
7341: CALL_OW 3
7345: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
7346: LD_ADDR_EXP 101
7350: PUSH
7351: LD_EXP 101
7355: PPUSH
7356: LD_VAR 0 1
7360: PPUSH
7361: LD_VAR 0 5
7365: PPUSH
7366: CALL_OW 1
7370: ST_TO_ADDR
// continue ;
7371: GO 6973
// end ; val = val + 1 ;
7373: LD_ADDR_VAR 0 3
7377: PUSH
7378: LD_VAR 0 3
7382: PUSH
7383: LD_INT 1
7385: PLUS
7386: ST_TO_ADDR
// end ;
7387: GO 6973
// end ;
7389: GO 6947
7391: POP
7392: POP
// until false ;
7393: LD_INT 0
7395: IFFALSE 6930
// end ;
7397: PPOPN 5
7399: END
// every 0 0$1 + 0 0$0.3 do var base , val , temp_list , time ;
7400: GO 7402
7402: DISABLE
7403: LD_INT 0
7405: PPUSH
7406: PPUSH
7407: PPUSH
7408: PPUSH
// begin repeat wait ( 0 0$1 ) ;
7409: LD_INT 35
7411: PPUSH
7412: CALL_OW 67
// for base in ai_bases do
7416: LD_ADDR_VAR 0 1
7420: PUSH
7421: LD_EXP 29
7425: PUSH
7426: FOR_IN
7427: IFFALSE 7659
// begin val = 1 ;
7429: LD_ADDR_VAR 0 2
7433: PUSH
7434: LD_INT 1
7436: ST_TO_ADDR
// while val <= ai_time_shift_hexes [ base ] do
7437: LD_VAR 0 2
7441: PUSH
7442: LD_EXP 100
7446: PUSH
7447: LD_VAR 0 1
7451: ARRAY
7452: LESSEQUAL
7453: IFFALSE 7657
// begin time = ai_time_shift_hexes [ base ] [ val ] [ 3 ] - 0 0$1 ;
7455: LD_ADDR_VAR 0 4
7459: PUSH
7460: LD_EXP 100
7464: PUSH
7465: LD_VAR 0 1
7469: ARRAY
7470: PUSH
7471: LD_VAR 0 2
7475: ARRAY
7476: PUSH
7477: LD_INT 3
7479: ARRAY
7480: PUSH
7481: LD_INT 35
7483: MINUS
7484: ST_TO_ADDR
// if time <= 0 0$0 then
7485: LD_VAR 0 4
7489: PUSH
7490: LD_INT 0
7492: LESSEQUAL
7493: IFFALSE 7550
// begin temp_list = Delete ( ai_time_shift_hexes [ base ] , val ) ;
7495: LD_ADDR_VAR 0 3
7499: PUSH
7500: LD_EXP 100
7504: PUSH
7505: LD_VAR 0 1
7509: ARRAY
7510: PPUSH
7511: LD_VAR 0 2
7515: PPUSH
7516: CALL_OW 3
7520: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
7521: LD_ADDR_EXP 100
7525: PUSH
7526: LD_EXP 100
7530: PPUSH
7531: LD_VAR 0 1
7535: PPUSH
7536: LD_VAR 0 3
7540: PPUSH
7541: CALL_OW 1
7545: ST_TO_ADDR
// continue ;
7546: GO 7437
// end else
7548: GO 7641
// begin temp_list = Replace ( ai_time_shift_hexes [ base ] [ val ] , 3 , time ) ;
7550: LD_ADDR_VAR 0 3
7554: PUSH
7555: LD_EXP 100
7559: PUSH
7560: LD_VAR 0 1
7564: ARRAY
7565: PUSH
7566: LD_VAR 0 2
7570: ARRAY
7571: PPUSH
7572: LD_INT 3
7574: PPUSH
7575: LD_VAR 0 4
7579: PPUSH
7580: CALL_OW 1
7584: ST_TO_ADDR
// temp_list = Replace ( ai_time_shift_hexes [ base ] , val , temp_list ) ;
7585: LD_ADDR_VAR 0 3
7589: PUSH
7590: LD_EXP 100
7594: PUSH
7595: LD_VAR 0 1
7599: ARRAY
7600: PPUSH
7601: LD_VAR 0 2
7605: PPUSH
7606: LD_VAR 0 3
7610: PPUSH
7611: CALL_OW 1
7615: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
7616: LD_ADDR_EXP 100
7620: PUSH
7621: LD_EXP 100
7625: PPUSH
7626: LD_VAR 0 1
7630: PPUSH
7631: LD_VAR 0 3
7635: PPUSH
7636: CALL_OW 1
7640: ST_TO_ADDR
// end ; val = val + 1 ;
7641: LD_ADDR_VAR 0 2
7645: PUSH
7646: LD_VAR 0 2
7650: PUSH
7651: LD_INT 1
7653: PLUS
7654: ST_TO_ADDR
// end ;
7655: GO 7437
// end ;
7657: GO 7426
7659: POP
7660: POP
// until false ;
7661: LD_INT 0
7663: IFFALSE 7409
// end ;
7665: PPOPN 4
7667: END
// function DistributeHumansToBuildings ( base , human_list , building_list , change_to_this_class , building_capacity , help_building , aggressive_pullback ) ; var i , j , temp_list , val , temp_unit , area , special_un_count , counter , k , under_attack ; begin
7668: LD_INT 0
7670: PPUSH
7671: PPUSH
7672: PPUSH
7673: PPUSH
7674: PPUSH
7675: PPUSH
7676: PPUSH
7677: PPUSH
7678: PPUSH
7679: PPUSH
7680: PPUSH
// if human_list = 0 then
7681: LD_VAR 0 2
7685: PUSH
7686: LD_INT 0
7688: EQUAL
7689: IFFALSE 7693
// exit ;
7691: GO 9131
// area = GetBaseArea ( base ) ;
7693: LD_ADDR_VAR 0 14
7697: PUSH
7698: LD_VAR 0 1
7702: PPUSH
7703: CALL 3614 0 1
7707: ST_TO_ADDR
// under_attack = BaseUnderAttack ( base , - 1 ) ;
7708: LD_ADDR_VAR 0 18
7712: PUSH
7713: LD_VAR 0 1
7717: PPUSH
7718: LD_INT 1
7720: NEG
7721: PPUSH
7722: CALL 18712 0 2
7726: ST_TO_ADDR
// if not GetClass ( human_list [ 1 ] ) in [ class_engineer , class_apeman_engineer , class_mechanic , class_scientistic ] and building_list > 0 then
7727: LD_VAR 0 2
7731: PUSH
7732: LD_INT 1
7734: ARRAY
7735: PPUSH
7736: CALL_OW 257
7740: PUSH
7741: LD_INT 2
7743: PUSH
7744: LD_INT 16
7746: PUSH
7747: LD_INT 3
7749: PUSH
7750: LD_INT 4
7752: PUSH
7753: EMPTY
7754: LIST
7755: LIST
7756: LIST
7757: LIST
7758: IN
7759: NOT
7760: PUSH
7761: LD_VAR 0 3
7765: PUSH
7766: LD_INT 0
7768: GREATER
7769: AND
7770: IFFALSE 7859
// begin val = 0 ;
7772: LD_ADDR_VAR 0 12
7776: PUSH
7777: LD_INT 0
7779: ST_TO_ADDR
// for i in human_list do
7780: LD_ADDR_VAR 0 9
7784: PUSH
7785: LD_VAR 0 2
7789: PUSH
7790: FOR_IN
7791: IFFALSE 7835
// if GetClass ( i ) in [ class_sniper , class_mortar , class_bazooker ] then
7793: LD_VAR 0 9
7797: PPUSH
7798: CALL_OW 257
7802: PUSH
7803: LD_INT 5
7805: PUSH
7806: LD_INT 8
7808: PUSH
7809: LD_INT 9
7811: PUSH
7812: EMPTY
7813: LIST
7814: LIST
7815: LIST
7816: IN
7817: IFFALSE 7833
// val = val + 1 ;
7819: LD_ADDR_VAR 0 12
7823: PUSH
7824: LD_VAR 0 12
7828: PUSH
7829: LD_INT 1
7831: PLUS
7832: ST_TO_ADDR
7833: GO 7790
7835: POP
7836: POP
// special_un_count = val div ( building_list + 0 ) ;
7837: LD_ADDR_VAR 0 15
7841: PUSH
7842: LD_VAR 0 12
7846: PUSH
7847: LD_VAR 0 3
7851: PUSH
7852: LD_INT 0
7854: PLUS
7855: DIV
7856: ST_TO_ADDR
// end else
7857: GO 7867
// special_un_count = 0 ;
7859: LD_ADDR_VAR 0 15
7863: PUSH
7864: LD_INT 0
7866: ST_TO_ADDR
// val = building_list + 0 ;
7867: LD_ADDR_VAR 0 12
7871: PUSH
7872: LD_VAR 0 3
7876: PUSH
7877: LD_INT 0
7879: PLUS
7880: ST_TO_ADDR
// while val > 0 and human_list > 0 do
7881: LD_VAR 0 12
7885: PUSH
7886: LD_INT 0
7888: GREATER
7889: PUSH
7890: LD_VAR 0 2
7894: PUSH
7895: LD_INT 0
7897: GREATER
7898: AND
7899: IFFALSE 8865
// begin temp_list = [ ] ;
7901: LD_ADDR_VAR 0 11
7905: PUSH
7906: EMPTY
7907: ST_TO_ADDR
// for i in human_list do
7908: LD_ADDR_VAR 0 9
7912: PUSH
7913: LD_VAR 0 2
7917: PUSH
7918: FOR_IN
7919: IFFALSE 7962
// if IsInUnit ( i ) = building_list [ val ] then
7921: LD_VAR 0 9
7925: PPUSH
7926: CALL_OW 310
7930: PUSH
7931: LD_VAR 0 3
7935: PUSH
7936: LD_VAR 0 12
7940: ARRAY
7941: EQUAL
7942: IFFALSE 7960
// temp_list = temp_list ^ i ;
7944: LD_ADDR_VAR 0 11
7948: PUSH
7949: LD_VAR 0 11
7953: PUSH
7954: LD_VAR 0 9
7958: ADD
7959: ST_TO_ADDR
7960: GO 7918
7962: POP
7963: POP
// human_list = temp_list ^ ( human_list diff temp_list ) ;
7964: LD_ADDR_VAR 0 2
7968: PUSH
7969: LD_VAR 0 11
7973: PUSH
7974: LD_VAR 0 2
7978: PUSH
7979: LD_VAR 0 11
7983: DIFF
7984: ADD
7985: ST_TO_ADDR
// counter = 0 ;
7986: LD_ADDR_VAR 0 16
7990: PUSH
7991: LD_INT 0
7993: ST_TO_ADDR
// temp_list = [ ] ;
7994: LD_ADDR_VAR 0 11
7998: PUSH
7999: EMPTY
8000: ST_TO_ADDR
// for i = 1 to human_list div val do
8001: LD_ADDR_VAR 0 9
8005: PUSH
8006: DOUBLE
8007: LD_INT 1
8009: DEC
8010: ST_TO_ADDR
8011: LD_VAR 0 2
8015: PUSH
8016: LD_VAR 0 12
8020: DIV
8021: PUSH
8022: FOR_TO
8023: IFFALSE 8436
// begin if i > building_capacity then
8025: LD_VAR 0 9
8029: PUSH
8030: LD_VAR 0 5
8034: GREATER
8035: IFFALSE 8039
// break ;
8037: GO 8436
// if special_un_count = 0 then
8039: LD_VAR 0 15
8043: PUSH
8044: LD_INT 0
8046: EQUAL
8047: IFFALSE 8089
// begin temp_list = temp_list ^ human_list [ 1 ] ;
8049: LD_ADDR_VAR 0 11
8053: PUSH
8054: LD_VAR 0 11
8058: PUSH
8059: LD_VAR 0 2
8063: PUSH
8064: LD_INT 1
8066: ARRAY
8067: ADD
8068: ST_TO_ADDR
// human_list = Delete ( human_list , 1 ) ;
8069: LD_ADDR_VAR 0 2
8073: PUSH
8074: LD_VAR 0 2
8078: PPUSH
8079: LD_INT 1
8081: PPUSH
8082: CALL_OW 3
8086: ST_TO_ADDR
// end else
8087: GO 8434
// if counter = special_un_count or ( counter = [ 1 , 2 , 3 ] [ difficulty ] and GetBtype ( building_list [ val ] ) = b_armoury ) then
8089: LD_VAR 0 16
8093: PUSH
8094: LD_VAR 0 15
8098: EQUAL
8099: PUSH
8100: LD_VAR 0 16
8104: PUSH
8105: LD_INT 1
8107: PUSH
8108: LD_INT 2
8110: PUSH
8111: LD_INT 3
8113: PUSH
8114: EMPTY
8115: LIST
8116: LIST
8117: LIST
8118: PUSH
8119: LD_OWVAR 67
8123: ARRAY
8124: EQUAL
8125: PUSH
8126: LD_VAR 0 3
8130: PUSH
8131: LD_VAR 0 12
8135: ARRAY
8136: PPUSH
8137: CALL_OW 266
8141: PUSH
8142: LD_INT 4
8144: EQUAL
8145: AND
8146: OR
8147: IFFALSE 8286
// begin temp_unit = 0 ;
8149: LD_ADDR_VAR 0 13
8153: PUSH
8154: LD_INT 0
8156: ST_TO_ADDR
// for k = 1 to human_list do
8157: LD_ADDR_VAR 0 17
8161: PUSH
8162: DOUBLE
8163: LD_INT 1
8165: DEC
8166: ST_TO_ADDR
8167: LD_VAR 0 2
8171: PUSH
8172: FOR_TO
8173: IFFALSE 8222
// if not GetClass ( human_list [ k ] ) in [ class_sniper , class_mortar , class_bazooker ] then
8175: LD_VAR 0 2
8179: PUSH
8180: LD_VAR 0 17
8184: ARRAY
8185: PPUSH
8186: CALL_OW 257
8190: PUSH
8191: LD_INT 5
8193: PUSH
8194: LD_INT 8
8196: PUSH
8197: LD_INT 9
8199: PUSH
8200: EMPTY
8201: LIST
8202: LIST
8203: LIST
8204: IN
8205: NOT
8206: IFFALSE 8220
// begin temp_unit = k ;
8208: LD_ADDR_VAR 0 13
8212: PUSH
8213: LD_VAR 0 17
8217: ST_TO_ADDR
// break ;
8218: GO 8222
// end ;
8220: GO 8172
8222: POP
8223: POP
// if temp_unit = 0 then
8224: LD_VAR 0 13
8228: PUSH
8229: LD_INT 0
8231: EQUAL
8232: IFFALSE 8242
// temp_unit = 1 ;
8234: LD_ADDR_VAR 0 13
8238: PUSH
8239: LD_INT 1
8241: ST_TO_ADDR
// temp_list = temp_list ^ human_list [ temp_unit ] ;
8242: LD_ADDR_VAR 0 11
8246: PUSH
8247: LD_VAR 0 11
8251: PUSH
8252: LD_VAR 0 2
8256: PUSH
8257: LD_VAR 0 13
8261: ARRAY
8262: ADD
8263: ST_TO_ADDR
// human_list = Delete ( human_list , temp_unit ) ;
8264: LD_ADDR_VAR 0 2
8268: PUSH
8269: LD_VAR 0 2
8273: PPUSH
8274: LD_VAR 0 13
8278: PPUSH
8279: CALL_OW 3
8283: ST_TO_ADDR
// end else
8284: GO 8434
// begin counter = counter + 1 ;
8286: LD_ADDR_VAR 0 16
8290: PUSH
8291: LD_VAR 0 16
8295: PUSH
8296: LD_INT 1
8298: PLUS
8299: ST_TO_ADDR
// temp_unit = 0 ;
8300: LD_ADDR_VAR 0 13
8304: PUSH
8305: LD_INT 0
8307: ST_TO_ADDR
// for k = 1 to human_list do
8308: LD_ADDR_VAR 0 17
8312: PUSH
8313: DOUBLE
8314: LD_INT 1
8316: DEC
8317: ST_TO_ADDR
8318: LD_VAR 0 2
8322: PUSH
8323: FOR_TO
8324: IFFALSE 8372
// if GetClass ( human_list [ k ] ) in [ class_sniper , class_mortar , class_bazooker ] then
8326: LD_VAR 0 2
8330: PUSH
8331: LD_VAR 0 17
8335: ARRAY
8336: PPUSH
8337: CALL_OW 257
8341: PUSH
8342: LD_INT 5
8344: PUSH
8345: LD_INT 8
8347: PUSH
8348: LD_INT 9
8350: PUSH
8351: EMPTY
8352: LIST
8353: LIST
8354: LIST
8355: IN
8356: IFFALSE 8370
// begin temp_unit = k ;
8358: LD_ADDR_VAR 0 13
8362: PUSH
8363: LD_VAR 0 17
8367: ST_TO_ADDR
// break ;
8368: GO 8372
// end ;
8370: GO 8323
8372: POP
8373: POP
// if temp_unit = 0 then
8374: LD_VAR 0 13
8378: PUSH
8379: LD_INT 0
8381: EQUAL
8382: IFFALSE 8392
// temp_unit = 1 ;
8384: LD_ADDR_VAR 0 13
8388: PUSH
8389: LD_INT 1
8391: ST_TO_ADDR
// temp_list = temp_list ^ human_list [ temp_unit ] ;
8392: LD_ADDR_VAR 0 11
8396: PUSH
8397: LD_VAR 0 11
8401: PUSH
8402: LD_VAR 0 2
8406: PUSH
8407: LD_VAR 0 13
8411: ARRAY
8412: ADD
8413: ST_TO_ADDR
// human_list = Delete ( human_list , temp_unit ) ;
8414: LD_ADDR_VAR 0 2
8418: PUSH
8419: LD_VAR 0 2
8423: PPUSH
8424: LD_VAR 0 13
8428: PPUSH
8429: CALL_OW 3
8433: ST_TO_ADDR
// end ; end ;
8434: GO 8022
8436: POP
8437: POP
// for i in temp_list do
8438: LD_ADDR_VAR 0 9
8442: PUSH
8443: LD_VAR 0 11
8447: PUSH
8448: FOR_IN
8449: IFFALSE 8847
// begin temp_unit = IsInUnit ( i ) ;
8451: LD_ADDR_VAR 0 13
8455: PUSH
8456: LD_VAR 0 9
8460: PPUSH
8461: CALL_OW 310
8465: ST_TO_ADDR
// if temp_unit <> building_list [ val ] then
8466: LD_VAR 0 13
8470: PUSH
8471: LD_VAR 0 3
8475: PUSH
8476: LD_VAR 0 12
8480: ARRAY
8481: NONEQUAL
8482: IFFALSE 8845
// case GetType ( IsInUnit ( i ) ) of unit_vehicle :
8484: LD_VAR 0 9
8488: PPUSH
8489: CALL_OW 310
8493: PPUSH
8494: CALL_OW 247
8498: PUSH
8499: LD_INT 2
8501: DOUBLE
8502: EQUAL
8503: IFTRUE 8507
8505: GO 8519
8507: POP
// ComExitVehicle ( i ) ; unit_building :
8508: LD_VAR 0 9
8512: PPUSH
8513: CALL_OW 121
8517: GO 8845
8519: LD_INT 3
8521: DOUBLE
8522: EQUAL
8523: IFTRUE 8527
8525: GO 8539
8527: POP
// ComExitBuilding ( i ) ; else
8528: LD_VAR 0 9
8532: PPUSH
8533: CALL_OW 122
8537: GO 8845
8539: POP
// begin if IsInArea ( i , area ) or not aggressive_pullback then
8540: LD_VAR 0 9
8544: PPUSH
8545: LD_VAR 0 14
8549: PPUSH
8550: CALL_OW 308
8554: PUSH
8555: LD_VAR 0 7
8559: NOT
8560: OR
8561: IFFALSE 8585
// ComEnterUnit ( i , building_list [ val ] ) else
8563: LD_VAR 0 9
8567: PPUSH
8568: LD_VAR 0 3
8572: PUSH
8573: LD_VAR 0 12
8577: ARRAY
8578: PPUSH
8579: CALL_OW 120
8583: GO 8626
// ComAgressiveMove ( i , GetX ( building_list [ val ] ) , GetY ( building_list [ val ] ) ) ;
8585: LD_VAR 0 9
8589: PPUSH
8590: LD_VAR 0 3
8594: PUSH
8595: LD_VAR 0 12
8599: ARRAY
8600: PPUSH
8601: CALL_OW 250
8605: PPUSH
8606: LD_VAR 0 3
8610: PUSH
8611: LD_VAR 0 12
8615: ARRAY
8616: PPUSH
8617: CALL_OW 251
8621: PPUSH
8622: CALL_OW 114
// if change_to_this_class > 0 then
8626: LD_VAR 0 4
8630: PUSH
8631: LD_INT 0
8633: GREATER
8634: IFFALSE 8735
// begin if GetClass ( i ) <> change_to_this_class and GetNation ( i ) <> nation_nature then
8636: LD_VAR 0 9
8640: PPUSH
8641: CALL_OW 257
8645: PUSH
8646: LD_VAR 0 4
8650: NONEQUAL
8651: PUSH
8652: LD_VAR 0 9
8656: PPUSH
8657: CALL_OW 248
8661: PUSH
8662: LD_INT 0
8664: NONEQUAL
8665: AND
8666: IFFALSE 8733
// if not ( change_to_this_class in [ class_sniper , class_mortar , class_bazooker ] and not GetBType ( building_list [ val ] ) in [ b_barracks , b_fort ] ) then
8668: LD_VAR 0 4
8672: PUSH
8673: LD_INT 5
8675: PUSH
8676: LD_INT 8
8678: PUSH
8679: LD_INT 9
8681: PUSH
8682: EMPTY
8683: LIST
8684: LIST
8685: LIST
8686: IN
8687: PUSH
8688: LD_VAR 0 3
8692: PUSH
8693: LD_VAR 0 12
8697: ARRAY
8698: PPUSH
8699: CALL_OW 266
8703: PUSH
8704: LD_INT 5
8706: PUSH
8707: LD_INT 35
8709: PUSH
8710: EMPTY
8711: LIST
8712: LIST
8713: IN
8714: NOT
8715: AND
8716: NOT
8717: IFFALSE 8733
// AddComChangeProfession ( i , change_to_this_class ) ;
8719: LD_VAR 0 9
8723: PPUSH
8724: LD_VAR 0 4
8728: PPUSH
8729: CALL_OW 183
// end else
8733: GO 8845
// begin if GetBType ( building_list [ val ] ) in [ b_barracks ] then
8735: LD_VAR 0 3
8739: PUSH
8740: LD_VAR 0 12
8744: ARRAY
8745: PPUSH
8746: CALL_OW 266
8750: PUSH
8751: LD_INT 5
8753: PUSH
8754: EMPTY
8755: LIST
8756: IN
8757: IFFALSE 8845
// case GetNation ( building_list [ val ] ) of nation_american :
8759: LD_VAR 0 3
8763: PUSH
8764: LD_VAR 0 12
8768: ARRAY
8769: PPUSH
8770: CALL_OW 248
8774: PUSH
8775: LD_INT 1
8777: DOUBLE
8778: EQUAL
8779: IFTRUE 8783
8781: GO 8798
8783: POP
// AddComChangeProfession ( i , class_sniper ) ; nation_arabian :
8784: LD_VAR 0 9
8788: PPUSH
8789: LD_INT 5
8791: PPUSH
8792: CALL_OW 183
8796: GO 8845
8798: LD_INT 2
8800: DOUBLE
8801: EQUAL
8802: IFTRUE 8806
8804: GO 8821
8806: POP
// AddComChangeProfession ( i , class_mortar ) ; nation_russian :
8807: LD_VAR 0 9
8811: PPUSH
8812: LD_INT 8
8814: PPUSH
8815: CALL_OW 183
8819: GO 8845
8821: LD_INT 3
8823: DOUBLE
8824: EQUAL
8825: IFTRUE 8829
8827: GO 8844
8829: POP
// AddComChangeProfession ( i , class_bazooker ) ; end ;
8830: LD_VAR 0 9
8834: PPUSH
8835: LD_INT 9
8837: PPUSH
8838: CALL_OW 183
8842: GO 8845
8844: POP
// end ; end ; end ; end ;
8845: GO 8448
8847: POP
8848: POP
// val = val - 1 ;
8849: LD_ADDR_VAR 0 12
8853: PUSH
8854: LD_VAR 0 12
8858: PUSH
8859: LD_INT 1
8861: MINUS
8862: ST_TO_ADDR
// end ;
8863: GO 7881
// if human_list > 0 then
8865: LD_VAR 0 2
8869: PUSH
8870: LD_INT 0
8872: GREATER
8873: IFFALSE 9131
// if ai_building_under_construction [ base ] > 0 and help_building and not under_attack then
8875: LD_EXP 64
8879: PUSH
8880: LD_VAR 0 1
8884: ARRAY
8885: PUSH
8886: LD_INT 0
8888: GREATER
8889: PUSH
8890: LD_VAR 0 6
8894: AND
8895: PUSH
8896: LD_VAR 0 18
8900: NOT
8901: AND
8902: IFFALSE 8978
// begin for i in GetHumansOutOfUnits ( human_list ) do
8904: LD_ADDR_VAR 0 9
8908: PUSH
8909: LD_VAR 0 2
8913: PPUSH
8914: CALL 18607 0 1
8918: PUSH
8919: FOR_IN
8920: IFFALSE 8974
// SetTaskList ( i , [ [ h , 0 , 0 , ai_building_under_construction [ base ] , 0 , 0 , 0 ] ] ) ;
8922: LD_VAR 0 9
8926: PPUSH
8927: LD_STRING h
8929: PUSH
8930: LD_INT 0
8932: PUSH
8933: LD_INT 0
8935: PUSH
8936: LD_EXP 64
8940: PUSH
8941: LD_VAR 0 1
8945: ARRAY
8946: PUSH
8947: LD_INT 0
8949: PUSH
8950: LD_INT 0
8952: PUSH
8953: LD_INT 0
8955: PUSH
8956: EMPTY
8957: LIST
8958: LIST
8959: LIST
8960: LIST
8961: LIST
8962: LIST
8963: LIST
8964: PUSH
8965: EMPTY
8966: LIST
8967: PPUSH
8968: CALL_OW 446
8972: GO 8919
8974: POP
8975: POP
// end else
8976: GO 9131
// for i in GetHumansOutOfUnits ( human_list ) do
8978: LD_ADDR_VAR 0 9
8982: PUSH
8983: LD_VAR 0 2
8987: PPUSH
8988: CALL 18607 0 1
8992: PUSH
8993: FOR_IN
8994: IFFALSE 9129
// if GetDistUnitXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 4 then
8996: LD_VAR 0 9
9000: PPUSH
9001: LD_EXP 63
9005: PUSH
9006: LD_VAR 0 1
9010: ARRAY
9011: PUSH
9012: LD_INT 1
9014: ARRAY
9015: PPUSH
9016: LD_EXP 63
9020: PUSH
9021: LD_VAR 0 1
9025: ARRAY
9026: PUSH
9027: LD_INT 2
9029: ARRAY
9030: PPUSH
9031: CALL_OW 297
9035: PUSH
9036: LD_INT 4
9038: GREATER
9039: IFFALSE 9127
// if aggressive_pullback then
9041: LD_VAR 0 7
9045: IFFALSE 9088
// ComAgressiveMove ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) else
9047: LD_VAR 0 9
9051: PPUSH
9052: LD_EXP 63
9056: PUSH
9057: LD_VAR 0 1
9061: ARRAY
9062: PUSH
9063: LD_INT 1
9065: ARRAY
9066: PPUSH
9067: LD_EXP 63
9071: PUSH
9072: LD_VAR 0 1
9076: ARRAY
9077: PUSH
9078: LD_INT 2
9080: ARRAY
9081: PPUSH
9082: CALL_OW 114
9086: GO 9127
// ComMoveXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
9088: LD_VAR 0 9
9092: PPUSH
9093: LD_EXP 63
9097: PUSH
9098: LD_VAR 0 1
9102: ARRAY
9103: PUSH
9104: LD_INT 1
9106: ARRAY
9107: PPUSH
9108: LD_EXP 63
9112: PUSH
9113: LD_VAR 0 1
9117: ARRAY
9118: PUSH
9119: LD_INT 2
9121: ARRAY
9122: PPUSH
9123: CALL_OW 111
9127: GO 8993
9129: POP
9130: POP
// end ;
9131: LD_VAR 0 8
9135: RET
// every 0 0$1 + 0 0$0.3 do var side , i , engineers_list , temp_list , buildings_list , temp_unit , away_dist , temp_list_2 , base , apemen_engineers_list ; var humans_list , crane_usable , b_value , engineers_not_allowed_to_repair_area , crane_not_allowed_to_repair_area , workers_list ; var k , repairing_buildings , under_attack , is_dismantling ; var crane_is_refueling , try_rebuild_again_time ;
9136: GO 9138
9138: DISABLE
9139: LD_INT 0
9141: PPUSH
9142: PPUSH
9143: PPUSH
9144: PPUSH
9145: PPUSH
9146: PPUSH
9147: PPUSH
9148: PPUSH
9149: PPUSH
9150: PPUSH
9151: PPUSH
9152: PPUSH
9153: PPUSH
9154: PPUSH
9155: PPUSH
9156: PPUSH
9157: PPUSH
9158: PPUSH
9159: PPUSH
9160: PPUSH
9161: PPUSH
9162: PPUSH
// begin crane_is_refueling = [ false , false , false , false ] ;
9163: LD_ADDR_VAR 0 21
9167: PUSH
9168: LD_INT 0
9170: PUSH
9171: LD_INT 0
9173: PUSH
9174: LD_INT 0
9176: PUSH
9177: LD_INT 0
9179: PUSH
9180: EMPTY
9181: LIST
9182: LIST
9183: LIST
9184: LIST
9185: ST_TO_ADDR
// try_rebuild_again_time = [ ] ;
9186: LD_ADDR_VAR 0 22
9190: PUSH
9191: EMPTY
9192: ST_TO_ADDR
// for base in ai_bases do
9193: LD_ADDR_VAR 0 9
9197: PUSH
9198: LD_EXP 29
9202: PUSH
9203: FOR_IN
9204: IFFALSE 9231
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , 0 0$0 ) ;
9206: LD_ADDR_VAR 0 22
9210: PUSH
9211: LD_VAR 0 22
9215: PPUSH
9216: LD_VAR 0 9
9220: PPUSH
9221: LD_INT 0
9223: PPUSH
9224: CALL_OW 1
9228: ST_TO_ADDR
9229: GO 9203
9231: POP
9232: POP
// repeat if ai_bases = 0 then
9233: LD_EXP 29
9237: PUSH
9238: LD_INT 0
9240: EQUAL
9241: IFFALSE 9245
// exit ;
9243: GO 17005
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
9245: LD_INT 35
9247: PUSH
9248: LD_EXP 29
9252: PUSH
9253: LD_INT 0
9255: PLUS
9256: MOD
9257: PPUSH
9258: CALL_OW 67
// for base in ai_bases do
9262: LD_ADDR_VAR 0 9
9266: PUSH
9267: LD_EXP 29
9271: PUSH
9272: FOR_IN
9273: IFFALSE 16999
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
9275: LD_INT 35
9277: PUSH
9278: LD_EXP 29
9282: PUSH
9283: LD_INT 0
9285: PLUS
9286: DIV
9287: PPUSH
9288: CALL_OW 67
// side = GetBaseSide ( base ) ;
9292: LD_ADDR_VAR 0 1
9296: PUSH
9297: LD_VAR 0 9
9301: PPUSH
9302: CALL 3818 0 1
9306: ST_TO_ADDR
// under_attack := BaseUnderAttack ( base , - 1 ) ;
9307: LD_ADDR_VAR 0 19
9311: PUSH
9312: LD_VAR 0 9
9316: PPUSH
9317: LD_INT 1
9319: NEG
9320: PPUSH
9321: CALL 18712 0 2
9325: ST_TO_ADDR
// if under_attack then
9326: LD_VAR 0 19
9330: IFFALSE 9377
// begin ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
9332: LD_ADDR_EXP 68
9336: PUSH
9337: LD_EXP 68
9341: PPUSH
9342: LD_VAR 0 9
9346: PPUSH
9347: LD_INT 0
9349: PPUSH
9350: CALL_OW 1
9354: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , [ ] ) ;
9355: LD_ADDR_EXP 69
9359: PUSH
9360: LD_EXP 69
9364: PPUSH
9365: LD_VAR 0 9
9369: PPUSH
9370: EMPTY
9371: PPUSH
9372: CALL_OW 1
9376: ST_TO_ADDR
// end ; if ai_cannot_rebuild_these_buildings [ base ] > 0 and ( ai_engineers [ base ] > 0 or try_rebuild_again_time [ base ] >= 0 0$20 ) then
9377: LD_EXP 71
9381: PUSH
9382: LD_VAR 0 9
9386: ARRAY
9387: PUSH
9388: LD_INT 0
9390: GREATER
9391: PUSH
9392: LD_EXP 32
9396: PUSH
9397: LD_VAR 0 9
9401: ARRAY
9402: PUSH
9403: LD_INT 0
9405: GREATER
9406: PUSH
9407: LD_VAR 0 22
9411: PUSH
9412: LD_VAR 0 9
9416: ARRAY
9417: PUSH
9418: LD_INT 700
9420: GREATEREQUAL
9421: OR
9422: AND
9423: IFFALSE 9472
// begin ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , [ ] ) ;
9425: LD_ADDR_EXP 71
9429: PUSH
9430: LD_EXP 71
9434: PPUSH
9435: LD_VAR 0 9
9439: PPUSH
9440: EMPTY
9441: PPUSH
9442: CALL_OW 1
9446: ST_TO_ADDR
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , 0 0$0 ) ;
9447: LD_ADDR_VAR 0 22
9451: PUSH
9452: LD_VAR 0 22
9456: PPUSH
9457: LD_VAR 0 9
9461: PPUSH
9462: LD_INT 0
9464: PPUSH
9465: CALL_OW 1
9469: ST_TO_ADDR
// end else
9470: GO 9507
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , try_rebuild_again_time [ base ] + 0 0$1 ) ;
9472: LD_ADDR_VAR 0 22
9476: PUSH
9477: LD_VAR 0 22
9481: PPUSH
9482: LD_VAR 0 9
9486: PPUSH
9487: LD_VAR 0 22
9491: PUSH
9492: LD_VAR 0 9
9496: ARRAY
9497: PUSH
9498: LD_INT 35
9500: PLUS
9501: PPUSH
9502: CALL_OW 1
9506: ST_TO_ADDR
// engineers_list = ai_engineers [ base ] diff ai_heal_these_humans [ base ] ;
9507: LD_ADDR_VAR 0 3
9511: PUSH
9512: LD_EXP 32
9516: PUSH
9517: LD_VAR 0 9
9521: ARRAY
9522: PUSH
9523: LD_EXP 65
9527: PUSH
9528: LD_VAR 0 9
9532: ARRAY
9533: DIFF
9534: ST_TO_ADDR
// apemen_engineers_list = ai_apemen_engineers [ base ] diff ai_heal_these_humans [ base ] ;
9535: LD_ADDR_VAR 0 10
9539: PUSH
9540: LD_EXP 37
9544: PUSH
9545: LD_VAR 0 9
9549: ARRAY
9550: PUSH
9551: LD_EXP 65
9555: PUSH
9556: LD_VAR 0 9
9560: ARRAY
9561: DIFF
9562: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
9563: LD_ADDR_VAR 0 4
9567: PUSH
9568: LD_EXP 65
9572: PUSH
9573: LD_VAR 0 9
9577: ARRAY
9578: ST_TO_ADDR
// humans_list = engineers_list ^ apemen_engineers_list ;
9579: LD_ADDR_VAR 0 11
9583: PUSH
9584: LD_VAR 0 3
9588: PUSH
9589: LD_VAR 0 10
9593: ADD
9594: ST_TO_ADDR
// i = 1 ;
9595: LD_ADDR_VAR 0 2
9599: PUSH
9600: LD_INT 1
9602: ST_TO_ADDR
// while i <= humans_list do
9603: LD_VAR 0 2
9607: PUSH
9608: LD_VAR 0 11
9612: LESSEQUAL
9613: IFFALSE 9740
// begin if GetLives ( humans_list [ i ] ) <= 700 then
9615: LD_VAR 0 11
9619: PUSH
9620: LD_VAR 0 2
9624: ARRAY
9625: PPUSH
9626: CALL_OW 256
9630: PUSH
9631: LD_INT 700
9633: LESSEQUAL
9634: IFFALSE 9724
// begin temp_list = temp_list ^ humans_list [ i ] ;
9636: LD_ADDR_VAR 0 4
9640: PUSH
9641: LD_VAR 0 4
9645: PUSH
9646: LD_VAR 0 11
9650: PUSH
9651: LD_VAR 0 2
9655: ARRAY
9656: ADD
9657: ST_TO_ADDR
// engineers_list = engineers_list diff humans_list [ i ] ;
9658: LD_ADDR_VAR 0 3
9662: PUSH
9663: LD_VAR 0 3
9667: PUSH
9668: LD_VAR 0 11
9672: PUSH
9673: LD_VAR 0 2
9677: ARRAY
9678: DIFF
9679: ST_TO_ADDR
// apemen_engineers_list = apemen_engineers_list diff humans_list [ i ] ;
9680: LD_ADDR_VAR 0 10
9684: PUSH
9685: LD_VAR 0 10
9689: PUSH
9690: LD_VAR 0 11
9694: PUSH
9695: LD_VAR 0 2
9699: ARRAY
9700: DIFF
9701: ST_TO_ADDR
// humans_list = Delete ( humans_list , i ) ;
9702: LD_ADDR_VAR 0 11
9706: PUSH
9707: LD_VAR 0 11
9711: PPUSH
9712: LD_VAR 0 2
9716: PPUSH
9717: CALL_OW 3
9721: ST_TO_ADDR
// continue ;
9722: GO 9603
// end ; i = i + 1 ;
9724: LD_ADDR_VAR 0 2
9728: PUSH
9729: LD_VAR 0 2
9733: PUSH
9734: LD_INT 1
9736: PLUS
9737: ST_TO_ADDR
// end ;
9738: GO 9603
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
9740: LD_ADDR_EXP 65
9744: PUSH
9745: LD_EXP 65
9749: PPUSH
9750: LD_VAR 0 9
9754: PPUSH
9755: LD_VAR 0 4
9759: PPUSH
9760: CALL_OW 1
9764: ST_TO_ADDR
// crane_usable = false ;
9765: LD_ADDR_VAR 0 12
9769: PUSH
9770: LD_INT 0
9772: ST_TO_ADDR
// if ai_crane [ base ] > 0 then
9773: LD_EXP 78
9777: PUSH
9778: LD_VAR 0 9
9782: ARRAY
9783: PUSH
9784: LD_INT 0
9786: GREATER
9787: IFFALSE 10386
// begin if GetControl ( ai_crane [ base ] ) = control_manual and not ai_crane [ base ] = ai_vehicle_being_moved [ base ] then
9789: LD_EXP 78
9793: PUSH
9794: LD_VAR 0 9
9798: ARRAY
9799: PPUSH
9800: CALL_OW 263
9804: PUSH
9805: LD_INT 1
9807: EQUAL
9808: PUSH
9809: LD_EXP 78
9813: PUSH
9814: LD_VAR 0 9
9818: ARRAY
9819: PUSH
9820: LD_EXP 68
9824: PUSH
9825: LD_VAR 0 9
9829: ARRAY
9830: EQUAL
9831: NOT
9832: AND
9833: IFFALSE 9901
// begin temp_list = UnitsInside ( ai_crane [ base ] ) ;
9835: LD_ADDR_VAR 0 4
9839: PUSH
9840: LD_EXP 78
9844: PUSH
9845: LD_VAR 0 9
9849: ARRAY
9850: PPUSH
9851: CALL_OW 313
9855: ST_TO_ADDR
// if temp_list > 0 then
9856: LD_VAR 0 4
9860: PUSH
9861: LD_INT 0
9863: GREATER
9864: IFFALSE 9901
// if temp_list [ 1 ] <> ai_crane_driver [ base ] then
9866: LD_VAR 0 4
9870: PUSH
9871: LD_INT 1
9873: ARRAY
9874: PUSH
9875: LD_EXP 82
9879: PUSH
9880: LD_VAR 0 9
9884: ARRAY
9885: NONEQUAL
9886: IFFALSE 9901
// ComExitVehicle ( temp_list [ 1 ] ) ;
9888: LD_VAR 0 4
9892: PUSH
9893: LD_INT 1
9895: ARRAY
9896: PPUSH
9897: CALL_OW 121
// end ; if GetLives ( ai_crane [ base ] ) <= 500 or ( ai_crane_driver [ base ] > 0 and GetLives ( ai_crane_driver [ base ] ) <= 500 ) or ( ai_crane_is_being_repaired [ base ] and ( GetLives ( ai_crane [ base ] ) < 1000 or ( ai_crane_driver [ base ] > 0 and GetLives ( ai_crane_driver [ base ] ) < 1000 ) ) ) then
9901: LD_EXP 78
9905: PUSH
9906: LD_VAR 0 9
9910: ARRAY
9911: PPUSH
9912: CALL_OW 256
9916: PUSH
9917: LD_INT 500
9919: LESSEQUAL
9920: PUSH
9921: LD_EXP 82
9925: PUSH
9926: LD_VAR 0 9
9930: ARRAY
9931: PUSH
9932: LD_INT 0
9934: GREATER
9935: PUSH
9936: LD_EXP 82
9940: PUSH
9941: LD_VAR 0 9
9945: ARRAY
9946: PPUSH
9947: CALL_OW 256
9951: PUSH
9952: LD_INT 500
9954: LESSEQUAL
9955: AND
9956: OR
9957: PUSH
9958: LD_EXP 81
9962: PUSH
9963: LD_VAR 0 9
9967: ARRAY
9968: PUSH
9969: LD_EXP 78
9973: PUSH
9974: LD_VAR 0 9
9978: ARRAY
9979: PPUSH
9980: CALL_OW 256
9984: PUSH
9985: LD_INT 1000
9987: LESS
9988: PUSH
9989: LD_EXP 82
9993: PUSH
9994: LD_VAR 0 9
9998: ARRAY
9999: PUSH
10000: LD_INT 0
10002: GREATER
10003: PUSH
10004: LD_EXP 82
10008: PUSH
10009: LD_VAR 0 9
10013: ARRAY
10014: PPUSH
10015: CALL_OW 256
10019: PUSH
10020: LD_INT 1000
10022: LESS
10023: AND
10024: OR
10025: AND
10026: OR
10027: IFFALSE 10150
// begin ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , true ) ;
10029: LD_ADDR_EXP 81
10033: PUSH
10034: LD_EXP 81
10038: PPUSH
10039: LD_VAR 0 9
10043: PPUSH
10044: LD_INT 1
10046: PPUSH
10047: CALL_OW 1
10051: ST_TO_ADDR
// if GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 6 then
10052: LD_EXP 78
10056: PUSH
10057: LD_VAR 0 9
10061: ARRAY
10062: PPUSH
10063: LD_EXP 63
10067: PUSH
10068: LD_VAR 0 9
10072: ARRAY
10073: PUSH
10074: LD_INT 1
10076: ARRAY
10077: PPUSH
10078: LD_EXP 63
10082: PUSH
10083: LD_VAR 0 9
10087: ARRAY
10088: PUSH
10089: LD_INT 2
10091: ARRAY
10092: PPUSH
10093: CALL_OW 297
10097: PUSH
10098: LD_INT 6
10100: GREATER
10101: IFFALSE 10148
// ComMoveXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
10103: LD_EXP 78
10107: PUSH
10108: LD_VAR 0 9
10112: ARRAY
10113: PPUSH
10114: LD_EXP 63
10118: PUSH
10119: LD_VAR 0 9
10123: ARRAY
10124: PUSH
10125: LD_INT 1
10127: ARRAY
10128: PPUSH
10129: LD_EXP 63
10133: PUSH
10134: LD_VAR 0 9
10138: ARRAY
10139: PUSH
10140: LD_INT 2
10142: ARRAY
10143: PPUSH
10144: CALL_OW 111
// end else
10148: GO 10386
// begin ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , false ) ;
10150: LD_ADDR_EXP 81
10154: PUSH
10155: LD_EXP 81
10159: PPUSH
10160: LD_VAR 0 9
10164: PPUSH
10165: LD_INT 0
10167: PPUSH
10168: CALL_OW 1
10172: ST_TO_ADDR
// if GetEngine ( ai_crane [ base ] ) = engine_combustion then
10173: LD_EXP 78
10177: PUSH
10178: LD_VAR 0 9
10182: ARRAY
10183: PPUSH
10184: CALL_OW 262
10188: PUSH
10189: LD_INT 1
10191: EQUAL
10192: IFFALSE 10365
// begin i = GetFuel ( ai_crane [ base ] ) ;
10194: LD_ADDR_VAR 0 2
10198: PUSH
10199: LD_EXP 78
10203: PUSH
10204: LD_VAR 0 9
10208: ARRAY
10209: PPUSH
10210: CALL_OW 261
10214: ST_TO_ADDR
// if i > 90 or not IsOk ( ai_depot [ base ] ) then
10215: LD_VAR 0 2
10219: PUSH
10220: LD_INT 90
10222: GREATER
10223: PUSH
10224: LD_EXP 39
10228: PUSH
10229: LD_VAR 0 9
10233: ARRAY
10234: PPUSH
10235: CALL_OW 302
10239: NOT
10240: OR
10241: IFFALSE 10268
// crane_is_refueling = Replace ( crane_is_refueling , base , false ) else
10243: LD_ADDR_VAR 0 21
10247: PUSH
10248: LD_VAR 0 21
10252: PPUSH
10253: LD_VAR 0 9
10257: PPUSH
10258: LD_INT 0
10260: PPUSH
10261: CALL_OW 1
10265: ST_TO_ADDR
10266: GO 10365
// if i < 25 or crane_is_refueling [ base ] then
10268: LD_VAR 0 2
10272: PUSH
10273: LD_INT 25
10275: LESS
10276: PUSH
10277: LD_VAR 0 21
10281: PUSH
10282: LD_VAR 0 9
10286: ARRAY
10287: OR
10288: IFFALSE 10365
// begin ComMoveUnit ( ai_crane [ base ] , ai_depot [ base ] ) ;
10290: LD_EXP 78
10294: PUSH
10295: LD_VAR 0 9
10299: ARRAY
10300: PPUSH
10301: LD_EXP 39
10305: PUSH
10306: LD_VAR 0 9
10310: ARRAY
10311: PPUSH
10312: CALL_OW 112
// AddComRefuel ( ai_crane [ base ] , ai_depot [ base ] ) ;
10316: LD_EXP 78
10320: PUSH
10321: LD_VAR 0 9
10325: ARRAY
10326: PPUSH
10327: LD_EXP 39
10331: PUSH
10332: LD_VAR 0 9
10336: ARRAY
10337: PPUSH
10338: CALL_OW 210
// crane_is_refueling = Replace ( crane_is_refueling , base , true ) ;
10342: LD_ADDR_VAR 0 21
10346: PUSH
10347: LD_VAR 0 21
10351: PPUSH
10352: LD_VAR 0 9
10356: PPUSH
10357: LD_INT 1
10359: PPUSH
10360: CALL_OW 1
10364: ST_TO_ADDR
// end ; end ; if not crane_is_refueling [ base ] then
10365: LD_VAR 0 21
10369: PUSH
10370: LD_VAR 0 9
10374: ARRAY
10375: NOT
10376: IFFALSE 10386
// crane_usable = true ;
10378: LD_ADDR_VAR 0 12
10382: PUSH
10383: LD_INT 1
10385: ST_TO_ADDR
// end ; end ; if engineers_list = 0 and apemen_engineers_list = 0 and not crane_usable then
10386: LD_VAR 0 3
10390: PUSH
10391: LD_INT 0
10393: EQUAL
10394: PUSH
10395: LD_VAR 0 10
10399: PUSH
10400: LD_INT 0
10402: EQUAL
10403: AND
10404: PUSH
10405: LD_VAR 0 12
10409: NOT
10410: AND
10411: IFFALSE 10415
// continue ;
10413: GO 9272
// temp_list_2 = UnitFilter ( engineers_list , [ f_class , class_engineer ] ) ;
10415: LD_ADDR_VAR 0 8
10419: PUSH
10420: LD_VAR 0 3
10424: PPUSH
10425: LD_INT 25
10427: PUSH
10428: LD_INT 2
10430: PUSH
10431: EMPTY
10432: LIST
10433: LIST
10434: PPUSH
10435: CALL_OW 72
10439: ST_TO_ADDR
// if ai_captured_buildings [ base ] > 0 and temp_list_2 > 0 then
10440: LD_EXP 52
10444: PUSH
10445: LD_VAR 0 9
10449: ARRAY
10450: PUSH
10451: LD_INT 0
10453: GREATER
10454: PUSH
10455: LD_VAR 0 8
10459: PUSH
10460: LD_INT 0
10462: GREATER
10463: AND
10464: IFFALSE 10742
// begin temp_list = [ ] ;
10466: LD_ADDR_VAR 0 4
10470: PUSH
10471: EMPTY
10472: ST_TO_ADDR
// for i in ai_captured_buildings [ base ] do
10473: LD_ADDR_VAR 0 2
10477: PUSH
10478: LD_EXP 52
10482: PUSH
10483: LD_VAR 0 9
10487: ARRAY
10488: PUSH
10489: FOR_IN
10490: IFFALSE 10546
// if GetBType ( i ) in [ b_depot , b_warehouse ] then
10492: LD_VAR 0 2
10496: PPUSH
10497: CALL_OW 266
10501: PUSH
10502: LD_INT 0
10504: PUSH
10505: LD_INT 1
10507: PUSH
10508: EMPTY
10509: LIST
10510: LIST
10511: IN
10512: IFFALSE 10530
// temp_list = temp_list ^ 1 else
10514: LD_ADDR_VAR 0 4
10518: PUSH
10519: LD_VAR 0 4
10523: PUSH
10524: LD_INT 1
10526: ADD
10527: ST_TO_ADDR
10528: GO 10544
// temp_list = temp_list ^ 0 ;
10530: LD_ADDR_VAR 0 4
10534: PUSH
10535: LD_VAR 0 4
10539: PUSH
10540: LD_INT 0
10542: ADD
10543: ST_TO_ADDR
10544: GO 10489
10546: POP
10547: POP
// temp_list = SortListByListDesc ( ai_captured_buildings [ base ] , temp_list ) ;
10548: LD_ADDR_VAR 0 4
10552: PUSH
10553: LD_EXP 52
10557: PUSH
10558: LD_VAR 0 9
10562: ARRAY
10563: PPUSH
10564: LD_VAR 0 4
10568: PPUSH
10569: CALL_OW 77
10573: ST_TO_ADDR
// temp_list_2 = GetHumansOutOfUnits ( temp_list_2 ) ;
10574: LD_ADDR_VAR 0 8
10578: PUSH
10579: LD_VAR 0 8
10583: PPUSH
10584: CALL 18607 0 1
10588: ST_TO_ADDR
// if temp_list_2 > 0 then
10589: LD_VAR 0 8
10593: PUSH
10594: LD_INT 0
10596: GREATER
10597: IFFALSE 10713
// begin temp_list_2 = SortListByListDesc ( temp_list_2 , temp_list_2 ) ;
10599: LD_ADDR_VAR 0 8
10603: PUSH
10604: LD_VAR 0 8
10608: PPUSH
10609: LD_VAR 0 8
10613: PPUSH
10614: CALL_OW 77
10618: ST_TO_ADDR
// SetTaskList ( temp_list_2 [ 1 ] , [ [ e , GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) , temp_list [ 1 ] , 0 , 0 , 0 ] ] ) ;
10619: LD_VAR 0 8
10623: PUSH
10624: LD_INT 1
10626: ARRAY
10627: PPUSH
10628: LD_STRING e
10630: PUSH
10631: LD_VAR 0 4
10635: PUSH
10636: LD_INT 1
10638: ARRAY
10639: PPUSH
10640: CALL_OW 250
10644: PUSH
10645: LD_VAR 0 4
10649: PUSH
10650: LD_INT 1
10652: ARRAY
10653: PPUSH
10654: CALL_OW 251
10658: PUSH
10659: LD_VAR 0 4
10663: PUSH
10664: LD_INT 1
10666: ARRAY
10667: PUSH
10668: LD_INT 0
10670: PUSH
10671: LD_INT 0
10673: PUSH
10674: LD_INT 0
10676: PUSH
10677: EMPTY
10678: LIST
10679: LIST
10680: LIST
10681: LIST
10682: LIST
10683: LIST
10684: LIST
10685: PUSH
10686: EMPTY
10687: LIST
10688: PPUSH
10689: CALL_OW 446
// engineers_list = engineers_list diff temp_list_2 [ 1 ] ;
10693: LD_ADDR_VAR 0 3
10697: PUSH
10698: LD_VAR 0 3
10702: PUSH
10703: LD_VAR 0 8
10707: PUSH
10708: LD_INT 1
10710: ARRAY
10711: DIFF
10712: ST_TO_ADDR
// end ; if engineers_list = 0 and apemen_engineers_list = 0 and not crane_usable then
10713: LD_VAR 0 3
10717: PUSH
10718: LD_INT 0
10720: EQUAL
10721: PUSH
10722: LD_VAR 0 10
10726: PUSH
10727: LD_INT 0
10729: EQUAL
10730: AND
10731: PUSH
10732: LD_VAR 0 12
10736: NOT
10737: AND
10738: IFFALSE 10742
// continue ;
10740: GO 9272
// end ; case base of 1 :
10742: LD_VAR 0 9
10746: PUSH
10747: LD_INT 1
10749: DOUBLE
10750: EQUAL
10751: IFTRUE 10755
10753: GO 10774
10755: POP
// begin engineers_not_allowed_to_repair_area = no_engineer_repair_area ;
10756: LD_ADDR_VAR 0 14
10760: PUSH
10761: LD_INT 4
10763: ST_TO_ADDR
// crane_not_allowed_to_repair_area = no_crane_repair_area ;
10764: LD_ADDR_VAR 0 15
10768: PUSH
10769: LD_INT 5
10771: ST_TO_ADDR
// end ; 2 :
10772: GO 10829
10774: LD_INT 2
10776: DOUBLE
10777: EQUAL
10778: IFTRUE 10782
10780: GO 10801
10782: POP
// begin engineers_not_allowed_to_repair_area = no_engineer_repair_area ;
10783: LD_ADDR_VAR 0 14
10787: PUSH
10788: LD_INT 4
10790: ST_TO_ADDR
// crane_not_allowed_to_repair_area = no_crane_repair_area ;
10791: LD_ADDR_VAR 0 15
10795: PUSH
10796: LD_INT 5
10798: ST_TO_ADDR
// end ; 3 :
10799: GO 10829
10801: LD_INT 3
10803: DOUBLE
10804: EQUAL
10805: IFTRUE 10809
10807: GO 10828
10809: POP
// begin engineers_not_allowed_to_repair_area = no_engineer_repair_area ;
10810: LD_ADDR_VAR 0 14
10814: PUSH
10815: LD_INT 4
10817: ST_TO_ADDR
// crane_not_allowed_to_repair_area = no_crane_repair_area ;
10818: LD_ADDR_VAR 0 15
10822: PUSH
10823: LD_INT 5
10825: ST_TO_ADDR
// end ; end ;
10826: GO 10829
10828: POP
// repairing_buildings = [ false , false , false ] ;
10829: LD_ADDR_VAR 0 18
10833: PUSH
10834: LD_INT 0
10836: PUSH
10837: LD_INT 0
10839: PUSH
10840: LD_INT 0
10842: PUSH
10843: EMPTY
10844: LIST
10845: LIST
10846: LIST
10847: ST_TO_ADDR
// for k = 1 to 3 do
10848: LD_ADDR_VAR 0 17
10852: PUSH
10853: DOUBLE
10854: LD_INT 1
10856: DEC
10857: ST_TO_ADDR
10858: LD_INT 3
10860: PUSH
10861: FOR_TO
10862: IFFALSE 11555
// begin i = 1 ;
10864: LD_ADDR_VAR 0 2
10868: PUSH
10869: LD_INT 1
10871: ST_TO_ADDR
// buildings_list = [ ] ;
10872: LD_ADDR_VAR 0 5
10876: PUSH
10877: EMPTY
10878: ST_TO_ADDR
// repeat case i of 1 :
10879: LD_VAR 0 2
10883: PUSH
10884: LD_INT 1
10886: DOUBLE
10887: EQUAL
10888: IFTRUE 10892
10890: GO 10941
10892: POP
// buildings_list = UnitFilter ( ai_all_buildings [ base ] diff ai_dismantle_these_buildings [ base ] , [ f_not , [ f_ok ] ] ) ; 2 :
10893: LD_ADDR_VAR 0 5
10897: PUSH
10898: LD_EXP 66
10902: PUSH
10903: LD_VAR 0 9
10907: ARRAY
10908: PUSH
10909: LD_EXP 89
10913: PUSH
10914: LD_VAR 0 9
10918: ARRAY
10919: DIFF
10920: PPUSH
10921: LD_INT 3
10923: PUSH
10924: LD_INT 50
10926: PUSH
10927: EMPTY
10928: LIST
10929: PUSH
10930: EMPTY
10931: LIST
10932: LIST
10933: PPUSH
10934: CALL_OW 72
10938: ST_TO_ADDR
10939: GO 11003
10941: LD_INT 2
10943: DOUBLE
10944: EQUAL
10945: IFTRUE 10949
10947: GO 11002
10949: POP
// buildings_list = UnitFilter ( ai_all_buildings [ base ] diff ai_dismantle_these_buildings [ base ] , [ f_not , [ f_lives , 1000 ] ] ) ; end ;
10950: LD_ADDR_VAR 0 5
10954: PUSH
10955: LD_EXP 66
10959: PUSH
10960: LD_VAR 0 9
10964: ARRAY
10965: PUSH
10966: LD_EXP 89
10970: PUSH
10971: LD_VAR 0 9
10975: ARRAY
10976: DIFF
10977: PPUSH
10978: LD_INT 3
10980: PUSH
10981: LD_INT 24
10983: PUSH
10984: LD_INT 1000
10986: PUSH
10987: EMPTY
10988: LIST
10989: LIST
10990: PUSH
10991: EMPTY
10992: LIST
10993: LIST
10994: PPUSH
10995: CALL_OW 72
10999: ST_TO_ADDR
11000: GO 11003
11002: POP
// case k of 2 :
11003: LD_VAR 0 17
11007: PUSH
11008: LD_INT 2
11010: DOUBLE
11011: EQUAL
11012: IFTRUE 11016
11014: GO 11069
11016: POP
// begin if under_attack and engineers_not_allowed_to_repair_area > 0 then
11017: LD_VAR 0 19
11021: PUSH
11022: LD_VAR 0 14
11026: PUSH
11027: LD_INT 0
11029: GREATER
11030: AND
11031: IFFALSE 11067
// buildings_list = UnitFilter ( buildings_list , [ f_not , [ f_inarea , engineers_not_allowed_to_repair_area ] ] ) ;
11033: LD_ADDR_VAR 0 5
11037: PUSH
11038: LD_VAR 0 5
11042: PPUSH
11043: LD_INT 3
11045: PUSH
11046: LD_INT 95
11048: PUSH
11049: LD_VAR 0 14
11053: PUSH
11054: EMPTY
11055: LIST
11056: LIST
11057: PUSH
11058: EMPTY
11059: LIST
11060: LIST
11061: PPUSH
11062: CALL_OW 72
11066: ST_TO_ADDR
// end ; 3 :
11067: GO 11125
11069: LD_INT 3
11071: DOUBLE
11072: EQUAL
11073: IFTRUE 11077
11075: GO 11124
11077: POP
// begin if crane_not_allowed_to_repair_area > 0 then
11078: LD_VAR 0 15
11082: PUSH
11083: LD_INT 0
11085: GREATER
11086: IFFALSE 11122
// buildings_list = UnitFilter ( buildings_list , [ f_not , [ f_inarea , crane_not_allowed_to_repair_area ] ] ) ;
11088: LD_ADDR_VAR 0 5
11092: PUSH
11093: LD_VAR 0 5
11097: PPUSH
11098: LD_INT 3
11100: PUSH
11101: LD_INT 95
11103: PUSH
11104: LD_VAR 0 15
11108: PUSH
11109: EMPTY
11110: LIST
11111: LIST
11112: PUSH
11113: EMPTY
11114: LIST
11115: LIST
11116: PPUSH
11117: CALL_OW 72
11121: ST_TO_ADDR
// end ; end ;
11122: GO 11125
11124: POP
// i = i + 1 ;
11125: LD_ADDR_VAR 0 2
11129: PUSH
11130: LD_VAR 0 2
11134: PUSH
11135: LD_INT 1
11137: PLUS
11138: ST_TO_ADDR
// until buildings_list > 0 or i > 2 ;
11139: LD_VAR 0 5
11143: PUSH
11144: LD_INT 0
11146: GREATER
11147: PUSH
11148: LD_VAR 0 2
11152: PUSH
11153: LD_INT 2
11155: GREATER
11156: OR
11157: IFFALSE 10879
// if buildings_list > 0 then
11159: LD_VAR 0 5
11163: PUSH
11164: LD_INT 0
11166: GREATER
11167: IFFALSE 11553
// begin case k of 1 :
11169: LD_VAR 0 17
11173: PUSH
11174: LD_INT 1
11176: DOUBLE
11177: EQUAL
11178: IFTRUE 11182
11180: GO 11233
11182: POP
// begin if apemen_engineers_list > 0 then
11183: LD_VAR 0 10
11187: PUSH
11188: LD_INT 0
11190: GREATER
11191: IFFALSE 11216
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
11193: LD_ADDR_VAR 0 18
11197: PUSH
11198: LD_VAR 0 18
11202: PPUSH
11203: LD_VAR 0 17
11207: PPUSH
11208: LD_INT 1
11210: PPUSH
11211: CALL_OW 1
11215: ST_TO_ADDR
// workers_list = GetHumansOutOfUnits ( apemen_engineers_list ) ;
11216: LD_ADDR_VAR 0 16
11220: PUSH
11221: LD_VAR 0 10
11225: PPUSH
11226: CALL 18607 0 1
11230: ST_TO_ADDR
// end ; 2 :
11231: GO 11401
11233: LD_INT 2
11235: DOUBLE
11236: EQUAL
11237: IFTRUE 11241
11239: GO 11292
11241: POP
// begin if engineers_list > 0 then
11242: LD_VAR 0 3
11246: PUSH
11247: LD_INT 0
11249: GREATER
11250: IFFALSE 11275
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
11252: LD_ADDR_VAR 0 18
11256: PUSH
11257: LD_VAR 0 18
11261: PPUSH
11262: LD_VAR 0 17
11266: PPUSH
11267: LD_INT 1
11269: PPUSH
11270: CALL_OW 1
11274: ST_TO_ADDR
// workers_list = GetHumansOutOfUnits ( engineers_list ) ;
11275: LD_ADDR_VAR 0 16
11279: PUSH
11280: LD_VAR 0 3
11284: PPUSH
11285: CALL 18607 0 1
11289: ST_TO_ADDR
// end ; 3 :
11290: GO 11401
11292: LD_INT 3
11294: DOUBLE
11295: EQUAL
11296: IFTRUE 11300
11298: GO 11400
11300: POP
// begin if ai_crane [ base ] > 0 then
11301: LD_EXP 78
11305: PUSH
11306: LD_VAR 0 9
11310: ARRAY
11311: PUSH
11312: LD_INT 0
11314: GREATER
11315: IFFALSE 11340
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
11317: LD_ADDR_VAR 0 18
11321: PUSH
11322: LD_VAR 0 18
11326: PPUSH
11327: LD_VAR 0 17
11331: PPUSH
11332: LD_INT 1
11334: PPUSH
11335: CALL_OW 1
11339: ST_TO_ADDR
// if ai_crane [ base ] > 0 and crane_usable then
11340: LD_EXP 78
11344: PUSH
11345: LD_VAR 0 9
11349: ARRAY
11350: PUSH
11351: LD_INT 0
11353: GREATER
11354: PUSH
11355: LD_VAR 0 12
11359: AND
11360: IFFALSE 11391
// begin workers_list = [ ai_crane [ base ] ] ;
11362: LD_ADDR_VAR 0 16
11366: PUSH
11367: LD_EXP 78
11371: PUSH
11372: LD_VAR 0 9
11376: ARRAY
11377: PUSH
11378: EMPTY
11379: LIST
11380: ST_TO_ADDR
// crane_usable = false ;
11381: LD_ADDR_VAR 0 12
11385: PUSH
11386: LD_INT 0
11388: ST_TO_ADDR
// end else
11389: GO 11398
// workers_list = [ ] ;
11391: LD_ADDR_VAR 0 16
11395: PUSH
11396: EMPTY
11397: ST_TO_ADDR
// end ; end ;
11398: GO 11401
11400: POP
// repeat i = 1 ;
11401: LD_ADDR_VAR 0 2
11405: PUSH
11406: LD_INT 1
11408: ST_TO_ADDR
// while i <= buildings_list do
11409: LD_VAR 0 2
11413: PUSH
11414: LD_VAR 0 5
11418: LESSEQUAL
11419: IFFALSE 11543
// begin if workers_list = 0 then
11421: LD_VAR 0 16
11425: PUSH
11426: LD_INT 0
11428: EQUAL
11429: IFFALSE 11433
// break ;
11431: GO 11543
// temp_unit = NearestUnitToUnit ( workers_list , buildings_list [ i ] ) ;
11433: LD_ADDR_VAR 0 6
11437: PUSH
11438: LD_VAR 0 16
11442: PPUSH
11443: LD_VAR 0 5
11447: PUSH
11448: LD_VAR 0 2
11452: ARRAY
11453: PPUSH
11454: CALL_OW 74
11458: ST_TO_ADDR
// ComRepairBuilding ( temp_unit , buildings_list [ i ] ) ;
11459: LD_VAR 0 6
11463: PPUSH
11464: LD_VAR 0 5
11468: PUSH
11469: LD_VAR 0 2
11473: ARRAY
11474: PPUSH
11475: CALL_OW 130
// workers_list = workers_list diff temp_unit ;
11479: LD_ADDR_VAR 0 16
11483: PUSH
11484: LD_VAR 0 16
11488: PUSH
11489: LD_VAR 0 6
11493: DIFF
11494: ST_TO_ADDR
// engineers_list = engineers_list diff temp_unit ;
11495: LD_ADDR_VAR 0 3
11499: PUSH
11500: LD_VAR 0 3
11504: PUSH
11505: LD_VAR 0 6
11509: DIFF
11510: ST_TO_ADDR
// apemen_engineers_list = apemen_engineers_list diff temp_unit ;
11511: LD_ADDR_VAR 0 10
11515: PUSH
11516: LD_VAR 0 10
11520: PUSH
11521: LD_VAR 0 6
11525: DIFF
11526: ST_TO_ADDR
// i = i + 1 ;
11527: LD_ADDR_VAR 0 2
11531: PUSH
11532: LD_VAR 0 2
11536: PUSH
11537: LD_INT 1
11539: PLUS
11540: ST_TO_ADDR
// end ;
11541: GO 11409
// until workers_list = 0 ;
11543: LD_VAR 0 16
11547: PUSH
11548: LD_INT 0
11550: EQUAL
11551: IFFALSE 11401
// end ; end ;
11553: GO 10861
11555: POP
11556: POP
// if true in repairing_buildings then
11557: LD_INT 1
11559: PUSH
11560: LD_VAR 0 18
11564: IN
11565: IFFALSE 11740
// begin temp_list = [ ] ;
11567: LD_ADDR_VAR 0 4
11571: PUSH
11572: EMPTY
11573: ST_TO_ADDR
// if not repairing_buildings [ 1 ] then
11574: LD_VAR 0 18
11578: PUSH
11579: LD_INT 1
11581: ARRAY
11582: NOT
11583: IFFALSE 11601
// temp_list = temp_list ^ apemen_engineers_list ;
11585: LD_ADDR_VAR 0 4
11589: PUSH
11590: LD_VAR 0 4
11594: PUSH
11595: LD_VAR 0 10
11599: ADD
11600: ST_TO_ADDR
// if not repairing_buildings [ 2 ] then
11601: LD_VAR 0 18
11605: PUSH
11606: LD_INT 2
11608: ARRAY
11609: NOT
11610: IFFALSE 11628
// temp_list = temp_list ^ engineers_list ;
11612: LD_ADDR_VAR 0 4
11616: PUSH
11617: LD_VAR 0 4
11621: PUSH
11622: LD_VAR 0 3
11626: ADD
11627: ST_TO_ADDR
// DistributeHumansToBuildings ( base , temp_list , UnitFilter ( ai_depot [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_engineer , [ 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ] [ base ] , false , false ) ;
11628: LD_VAR 0 9
11632: PPUSH
11633: LD_VAR 0 4
11637: PPUSH
11638: LD_EXP 39
11642: PUSH
11643: LD_VAR 0 9
11647: ARRAY
11648: PPUSH
11649: LD_INT 50
11651: PUSH
11652: EMPTY
11653: LIST
11654: PUSH
11655: LD_INT 3
11657: PUSH
11658: LD_INT 57
11660: PUSH
11661: EMPTY
11662: LIST
11663: PUSH
11664: EMPTY
11665: LIST
11666: LIST
11667: PUSH
11668: EMPTY
11669: LIST
11670: LIST
11671: PPUSH
11672: CALL_OW 72
11676: PPUSH
11677: LD_INT 2
11679: PPUSH
11680: LD_INT 6
11682: PUSH
11683: LD_INT 6
11685: PUSH
11686: LD_INT 6
11688: PUSH
11689: LD_INT 6
11691: PUSH
11692: LD_INT 6
11694: PUSH
11695: LD_INT 6
11697: PUSH
11698: LD_INT 6
11700: PUSH
11701: LD_INT 6
11703: PUSH
11704: LD_INT 6
11706: PUSH
11707: LD_INT 6
11709: PUSH
11710: EMPTY
11711: LIST
11712: LIST
11713: LIST
11714: LIST
11715: LIST
11716: LIST
11717: LIST
11718: LIST
11719: LIST
11720: LIST
11721: PUSH
11722: LD_VAR 0 9
11726: ARRAY
11727: PPUSH
11728: LD_INT 0
11730: PPUSH
11731: LD_INT 0
11733: PPUSH
11734: CALL 7668 0 7
// continue ;
11738: GO 9272
// end ; if not under_attack then
11740: LD_VAR 0 19
11744: NOT
11745: IFFALSE 16749
// begin if ai_building_under_construction [ base ] > 0 then
11747: LD_EXP 64
11751: PUSH
11752: LD_VAR 0 9
11756: ARRAY
11757: PUSH
11758: LD_INT 0
11760: GREATER
11761: IFFALSE 11935
// if BuildingStatus ( ai_building_under_construction [ base ] ) = bs_build then
11763: LD_EXP 64
11767: PUSH
11768: LD_VAR 0 9
11772: ARRAY
11773: PPUSH
11774: CALL_OW 461
11778: PUSH
11779: LD_INT 1
11781: EQUAL
11782: IFFALSE 11897
// begin temp_list_2 = GetHumansOutOfUnits ( engineers_list ^ apemen_engineers_list ) ;
11784: LD_ADDR_VAR 0 8
11788: PUSH
11789: LD_VAR 0 3
11793: PUSH
11794: LD_VAR 0 10
11798: ADD
11799: PPUSH
11800: CALL 18607 0 1
11804: ST_TO_ADDR
// if crane_usable and not IsInArea ( ai_building_under_construction [ base ] , crane_not_allowed_to_repair_area ) then
11805: LD_VAR 0 12
11809: PUSH
11810: LD_EXP 64
11814: PUSH
11815: LD_VAR 0 9
11819: ARRAY
11820: PPUSH
11821: LD_VAR 0 15
11825: PPUSH
11826: CALL_OW 308
11830: NOT
11831: AND
11832: IFFALSE 11856
// temp_list_2 = temp_list_2 ^ ai_crane [ base ] ;
11834: LD_ADDR_VAR 0 8
11838: PUSH
11839: LD_VAR 0 8
11843: PUSH
11844: LD_EXP 78
11848: PUSH
11849: LD_VAR 0 9
11853: ARRAY
11854: ADD
11855: ST_TO_ADDR
// for i in temp_list_2 do
11856: LD_ADDR_VAR 0 2
11860: PUSH
11861: LD_VAR 0 8
11865: PUSH
11866: FOR_IN
11867: IFFALSE 11891
// ComRepairBuilding ( i , ai_building_under_construction [ base ] ) ;
11869: LD_VAR 0 2
11873: PPUSH
11874: LD_EXP 64
11878: PUSH
11879: LD_VAR 0 9
11883: ARRAY
11884: PPUSH
11885: CALL_OW 130
11889: GO 11866
11891: POP
11892: POP
// continue ;
11893: GO 9272
// end else
11895: GO 11935
// begin ComCancel ( ai_building_under_construction [ base ] ) ;
11897: LD_EXP 64
11901: PUSH
11902: LD_VAR 0 9
11906: ARRAY
11907: PPUSH
11908: CALL_OW 127
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
11912: LD_ADDR_EXP 64
11916: PUSH
11917: LD_EXP 64
11921: PPUSH
11922: LD_VAR 0 9
11926: PPUSH
11927: LD_INT 0
11929: PPUSH
11930: CALL_OW 1
11934: ST_TO_ADDR
// end ; if ai_dismantle_these_buildings [ base ] > 0 and engineers_list > 0 then
11935: LD_EXP 89
11939: PUSH
11940: LD_VAR 0 9
11944: ARRAY
11945: PUSH
11946: LD_INT 0
11948: GREATER
11949: PUSH
11950: LD_VAR 0 3
11954: PUSH
11955: LD_INT 0
11957: GREATER
11958: AND
11959: IFFALSE 12123
// begin is_dismantling = true ;
11961: LD_ADDR_VAR 0 20
11965: PUSH
11966: LD_INT 1
11968: ST_TO_ADDR
// if ai_building_constructor [ base ] in engineers_list then
11969: LD_EXP 67
11973: PUSH
11974: LD_VAR 0 9
11978: ARRAY
11979: PUSH
11980: LD_VAR 0 3
11984: IN
11985: IFFALSE 12005
// k = ai_building_constructor [ base ] else
11987: LD_ADDR_VAR 0 17
11991: PUSH
11992: LD_EXP 67
11996: PUSH
11997: LD_VAR 0 9
12001: ARRAY
12002: ST_TO_ADDR
12003: GO 12025
// k = BestFromListByList ( engineers_list , engineers_list ) ;
12005: LD_ADDR_VAR 0 17
12009: PUSH
12010: LD_VAR 0 3
12014: PPUSH
12015: LD_VAR 0 3
12019: PPUSH
12020: CALL_OW 79
12024: ST_TO_ADDR
// engineers_list = engineers_list diff k ;
12025: LD_ADDR_VAR 0 3
12029: PUSH
12030: LD_VAR 0 3
12034: PUSH
12035: LD_VAR 0 17
12039: DIFF
12040: ST_TO_ADDR
// case GetType ( IsInUnit ( k ) ) of unit_vehicle :
12041: LD_VAR 0 17
12045: PPUSH
12046: CALL_OW 310
12050: PPUSH
12051: CALL_OW 247
12055: PUSH
12056: LD_INT 2
12058: DOUBLE
12059: EQUAL
12060: IFTRUE 12064
12062: GO 12076
12064: POP
// ComExitVehicle ( k ) ; unit_building :
12065: LD_VAR 0 17
12069: PPUSH
12070: CALL_OW 121
12074: GO 12121
12076: LD_INT 3
12078: DOUBLE
12079: EQUAL
12080: IFTRUE 12084
12082: GO 12096
12084: POP
// ComExitBuilding ( k ) ; else
12085: LD_VAR 0 17
12089: PPUSH
12090: CALL_OW 122
12094: GO 12121
12096: POP
// ComDismantle ( k , ai_dismantle_these_buildings [ base ] [ 1 ] ) ; end ;
12097: LD_VAR 0 17
12101: PPUSH
12102: LD_EXP 89
12106: PUSH
12107: LD_VAR 0 9
12111: ARRAY
12112: PUSH
12113: LD_INT 1
12115: ARRAY
12116: PPUSH
12117: CALL_OW 167
// end else
12121: GO 12131
// is_dismantling = false ;
12123: LD_ADDR_VAR 0 20
12127: PUSH
12128: LD_INT 0
12130: ST_TO_ADDR
// if ( ai_all_buildings [ base ] - ai_excepted_buildings [ base ] < ai_buildings_locations [ base ] or ai_upcoming_building_data [ base ] > 0 ) and not is_dismantling and not ai_buildingsleft [ base ] < 1 then
12131: LD_EXP 66
12135: PUSH
12136: LD_VAR 0 9
12140: ARRAY
12141: PUSH
12142: LD_EXP 87
12146: PUSH
12147: LD_VAR 0 9
12151: ARRAY
12152: MINUS
12153: PUSH
12154: LD_EXP 51
12158: PUSH
12159: LD_VAR 0 9
12163: ARRAY
12164: LESS
12165: PUSH
12166: LD_EXP 70
12170: PUSH
12171: LD_VAR 0 9
12175: ARRAY
12176: PUSH
12177: LD_INT 0
12179: GREATER
12180: OR
12181: PUSH
12182: LD_VAR 0 20
12186: NOT
12187: AND
12188: PUSH
12189: LD_EXP 163
12193: PUSH
12194: LD_VAR 0 9
12198: ARRAY
12199: PUSH
12200: LD_INT 1
12202: LESS
12203: NOT
12204: AND
12205: IFFALSE 16565
// begin if ai_upcoming_building_data [ base ] = 0 then
12207: LD_EXP 70
12211: PUSH
12212: LD_VAR 0 9
12216: ARRAY
12217: PUSH
12218: LD_INT 0
12220: EQUAL
12221: IFFALSE 12642
// begin for i in ai_buildings_locations [ base ] do
12223: LD_ADDR_VAR 0 2
12227: PUSH
12228: LD_EXP 51
12232: PUSH
12233: LD_VAR 0 9
12237: ARRAY
12238: PUSH
12239: FOR_IN
12240: IFFALSE 12309
// if GetBType ( HexInfo ( i [ 1 ] , i [ 2 ] ) ) = - 1 and not i in ai_cannot_rebuild_these_buildings [ base ] then
12242: LD_VAR 0 2
12246: PUSH
12247: LD_INT 1
12249: ARRAY
12250: PPUSH
12251: LD_VAR 0 2
12255: PUSH
12256: LD_INT 2
12258: ARRAY
12259: PPUSH
12260: CALL_OW 428
12264: PPUSH
12265: CALL_OW 266
12269: PUSH
12270: LD_INT 1
12272: NEG
12273: EQUAL
12274: PUSH
12275: LD_VAR 0 2
12279: PUSH
12280: LD_EXP 71
12284: PUSH
12285: LD_VAR 0 9
12289: ARRAY
12290: IN
12291: NOT
12292: AND
12293: IFFALSE 12307
// begin temp_list = i ;
12295: LD_ADDR_VAR 0 4
12299: PUSH
12300: LD_VAR 0 2
12304: ST_TO_ADDR
// break ;
12305: GO 12309
// end ;
12307: GO 12239
12309: POP
12310: POP
// if temp_list > 0 then
12311: LD_VAR 0 4
12315: PUSH
12316: LD_INT 0
12318: GREATER
12319: IFFALSE 12642
// begin if temp_list [ 4 ] = b_bunker and GetBaseNation ( base ) in [ nation_american , nation_russian ] then
12321: LD_VAR 0 4
12325: PUSH
12326: LD_INT 4
12328: ARRAY
12329: PUSH
12330: LD_INT 32
12332: EQUAL
12333: PUSH
12334: LD_VAR 0 9
12338: PPUSH
12339: CALL 4042 0 1
12343: PUSH
12344: LD_INT 1
12346: PUSH
12347: LD_INT 3
12349: PUSH
12350: EMPTY
12351: LIST
12352: LIST
12353: IN
12354: AND
12355: IFFALSE 12617
// begin k = 0 ;
12357: LD_ADDR_VAR 0 17
12361: PUSH
12362: LD_INT 0
12364: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
12365: LD_ADDR_VAR 0 2
12369: PUSH
12370: LD_EXP 51
12374: PUSH
12375: LD_VAR 0 9
12379: ARRAY
12380: PUSH
12381: FOR_IN
12382: IFFALSE 12433
// if i [ 4 ] in [ b_breastwork , b_bunker , b_armoury , b_barracks , b_fort ] then
12384: LD_VAR 0 2
12388: PUSH
12389: LD_INT 4
12391: ARRAY
12392: PUSH
12393: LD_INT 31
12395: PUSH
12396: LD_INT 32
12398: PUSH
12399: LD_INT 4
12401: PUSH
12402: LD_INT 5
12404: PUSH
12405: LD_INT 35
12407: PUSH
12408: EMPTY
12409: LIST
12410: LIST
12411: LIST
12412: LIST
12413: LIST
12414: IN
12415: IFFALSE 12431
// k = k + 1 ;
12417: LD_ADDR_VAR 0 17
12421: PUSH
12422: LD_VAR 0 17
12426: PUSH
12427: LD_INT 1
12429: PLUS
12430: ST_TO_ADDR
12431: GO 12381
12433: POP
12434: POP
// if k > ai_soldiers [ base ] then
12435: LD_VAR 0 17
12439: PUSH
12440: LD_EXP 30
12444: PUSH
12445: LD_VAR 0 9
12449: ARRAY
12450: GREATER
12451: IFFALSE 12617
// begin for i = 1 to ai_buildings_locations [ base ] do
12453: LD_ADDR_VAR 0 2
12457: PUSH
12458: DOUBLE
12459: LD_INT 1
12461: DEC
12462: ST_TO_ADDR
12463: LD_EXP 51
12467: PUSH
12468: LD_VAR 0 9
12472: ARRAY
12473: PUSH
12474: FOR_TO
12475: IFFALSE 12594
// if ai_buildings_locations [ base ] [ i ] = temp_list then
12477: LD_EXP 51
12481: PUSH
12482: LD_VAR 0 9
12486: ARRAY
12487: PUSH
12488: LD_VAR 0 2
12492: ARRAY
12493: PUSH
12494: LD_VAR 0 4
12498: EQUAL
12499: IFFALSE 12592
// begin temp_list_2 = Replace ( ai_buildings_locations [ base ] [ i ] , 4 , b_turret ) ;
12501: LD_ADDR_VAR 0 8
12505: PUSH
12506: LD_EXP 51
12510: PUSH
12511: LD_VAR 0 9
12515: ARRAY
12516: PUSH
12517: LD_VAR 0 2
12521: ARRAY
12522: PPUSH
12523: LD_INT 4
12525: PPUSH
12526: LD_INT 33
12528: PPUSH
12529: CALL_OW 1
12533: ST_TO_ADDR
// temp_list_2 = Replace ( ai_buildings_locations [ base ] , i , temp_list_2 ) ;
12534: LD_ADDR_VAR 0 8
12538: PUSH
12539: LD_EXP 51
12543: PUSH
12544: LD_VAR 0 9
12548: ARRAY
12549: PPUSH
12550: LD_VAR 0 2
12554: PPUSH
12555: LD_VAR 0 8
12559: PPUSH
12560: CALL_OW 1
12564: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list_2 ) ;
12565: LD_ADDR_EXP 51
12569: PUSH
12570: LD_EXP 51
12574: PPUSH
12575: LD_VAR 0 9
12579: PPUSH
12580: LD_VAR 0 8
12584: PPUSH
12585: CALL_OW 1
12589: ST_TO_ADDR
// break ;
12590: GO 12594
// end ;
12592: GO 12474
12594: POP
12595: POP
// temp_list = Replace ( temp_list , 4 , b_turret ) ;
12596: LD_ADDR_VAR 0 4
12600: PUSH
12601: LD_VAR 0 4
12605: PPUSH
12606: LD_INT 4
12608: PPUSH
12609: LD_INT 33
12611: PPUSH
12612: CALL_OW 1
12616: ST_TO_ADDR
// end ; end ; ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , temp_list ) ;
12617: LD_ADDR_EXP 70
12621: PUSH
12622: LD_EXP 70
12626: PPUSH
12627: LD_VAR 0 9
12631: PPUSH
12632: LD_VAR 0 4
12636: PPUSH
12637: CALL_OW 1
12641: ST_TO_ADDR
// end ; end ; if ai_upcoming_building_data [ base ] > 0 then
12642: LD_EXP 70
12646: PUSH
12647: LD_VAR 0 9
12651: ARRAY
12652: PUSH
12653: LD_INT 0
12655: GREATER
12656: IFFALSE 16565
// begin if ai_building_constructor [ base ] = 0 then
12658: LD_EXP 67
12662: PUSH
12663: LD_VAR 0 9
12667: ARRAY
12668: PUSH
12669: LD_INT 0
12671: EQUAL
12672: IFFALSE 12990
// begin temp_list_2 = UnitFilter ( ai_engineers [ base ] , [ f_class , class_engineer ] ) ;
12674: LD_ADDR_VAR 0 8
12678: PUSH
12679: LD_EXP 32
12683: PUSH
12684: LD_VAR 0 9
12688: ARRAY
12689: PPUSH
12690: LD_INT 25
12692: PUSH
12693: LD_INT 2
12695: PUSH
12696: EMPTY
12697: LIST
12698: LIST
12699: PPUSH
12700: CALL_OW 72
12704: ST_TO_ADDR
// if temp_list_2 > 0 then
12705: LD_VAR 0 8
12709: PUSH
12710: LD_INT 0
12712: GREATER
12713: IFFALSE 12800
// begin temp_list = [ ] ;
12715: LD_ADDR_VAR 0 4
12719: PUSH
12720: EMPTY
12721: ST_TO_ADDR
// for i in temp_list_2 do
12722: LD_ADDR_VAR 0 2
12726: PUSH
12727: LD_VAR 0 8
12731: PUSH
12732: FOR_IN
12733: IFFALSE 12761
// temp_list = temp_list ^ GetSkill ( i , skill_engineering ) ;
12735: LD_ADDR_VAR 0 4
12739: PUSH
12740: LD_VAR 0 4
12744: PUSH
12745: LD_VAR 0 2
12749: PPUSH
12750: LD_INT 2
12752: PPUSH
12753: CALL_OW 259
12757: ADD
12758: ST_TO_ADDR
12759: GO 12732
12761: POP
12762: POP
// ai_building_constructor = Replace ( ai_building_constructor , base , BestFromListByList ( temp_list_2 , temp_list ) ) ;
12763: LD_ADDR_EXP 67
12767: PUSH
12768: LD_EXP 67
12772: PPUSH
12773: LD_VAR 0 9
12777: PPUSH
12778: LD_VAR 0 8
12782: PPUSH
12783: LD_VAR 0 4
12787: PPUSH
12788: CALL_OW 79
12792: PPUSH
12793: CALL_OW 1
12797: ST_TO_ADDR
// end else
12798: GO 12990
// if ai_engineers [ base ] = 0 and ai_crane [ base ] > 0 and crane_usable then
12800: LD_EXP 32
12804: PUSH
12805: LD_VAR 0 9
12809: ARRAY
12810: PUSH
12811: LD_INT 0
12813: EQUAL
12814: PUSH
12815: LD_EXP 78
12819: PUSH
12820: LD_VAR 0 9
12824: ARRAY
12825: PUSH
12826: LD_INT 0
12828: GREATER
12829: AND
12830: PUSH
12831: LD_VAR 0 12
12835: AND
12836: IFFALSE 12990
// begin if InArea ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , crane_not_allowed_to_repair_area ) then
12838: LD_EXP 70
12842: PUSH
12843: LD_VAR 0 9
12847: ARRAY
12848: PUSH
12849: LD_INT 1
12851: ARRAY
12852: PPUSH
12853: LD_EXP 70
12857: PUSH
12858: LD_VAR 0 9
12862: ARRAY
12863: PUSH
12864: LD_INT 2
12866: ARRAY
12867: PPUSH
12868: LD_VAR 0 15
12872: PPUSH
12873: CALL_OW 309
12877: IFFALSE 12959
// begin temp_list = ai_cannot_rebuild_these_buildings [ base ] ^ [ ai_upcoming_building_data [ base ] ] ;
12879: LD_ADDR_VAR 0 4
12883: PUSH
12884: LD_EXP 71
12888: PUSH
12889: LD_VAR 0 9
12893: ARRAY
12894: PUSH
12895: LD_EXP 70
12899: PUSH
12900: LD_VAR 0 9
12904: ARRAY
12905: PUSH
12906: EMPTY
12907: LIST
12908: ADD
12909: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , temp_list ) ;
12910: LD_ADDR_EXP 71
12914: PUSH
12915: LD_EXP 71
12919: PPUSH
12920: LD_VAR 0 9
12924: PPUSH
12925: LD_VAR 0 4
12929: PPUSH
12930: CALL_OW 1
12934: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
12935: LD_ADDR_EXP 70
12939: PUSH
12940: LD_EXP 70
12944: PPUSH
12945: LD_VAR 0 9
12949: PPUSH
12950: EMPTY
12951: PPUSH
12952: CALL_OW 1
12956: ST_TO_ADDR
// end else
12957: GO 12990
// ai_building_constructor = Replace ( ai_building_constructor , base , ai_crane [ base ] ) ;
12959: LD_ADDR_EXP 67
12963: PUSH
12964: LD_EXP 67
12968: PPUSH
12969: LD_VAR 0 9
12973: PPUSH
12974: LD_EXP 78
12978: PUSH
12979: LD_VAR 0 9
12983: ARRAY
12984: PPUSH
12985: CALL_OW 1
12989: ST_TO_ADDR
// end ; end ; if ai_building_constructor [ base ] > 0 and ( ai_building_constructor [ base ] in engineers_list or ( ai_building_constructor [ base ] = ai_crane [ base ] and crane_usable ) ) then
12990: LD_EXP 67
12994: PUSH
12995: LD_VAR 0 9
12999: ARRAY
13000: PUSH
13001: LD_INT 0
13003: GREATER
13004: PUSH
13005: LD_EXP 67
13009: PUSH
13010: LD_VAR 0 9
13014: ARRAY
13015: PUSH
13016: LD_VAR 0 3
13020: IN
13021: PUSH
13022: LD_EXP 67
13026: PUSH
13027: LD_VAR 0 9
13031: ARRAY
13032: PUSH
13033: LD_EXP 78
13037: PUSH
13038: LD_VAR 0 9
13042: ARRAY
13043: EQUAL
13044: PUSH
13045: LD_VAR 0 12
13049: AND
13050: OR
13051: AND
13052: IFFALSE 16565
// begin engineers_list = engineers_list diff ai_building_constructor [ base ] ;
13054: LD_ADDR_VAR 0 3
13058: PUSH
13059: LD_VAR 0 3
13063: PUSH
13064: LD_EXP 67
13068: PUSH
13069: LD_VAR 0 9
13073: ARRAY
13074: DIFF
13075: ST_TO_ADDR
// if ai_building_constructor [ base ] = ai_crane [ base ] then
13076: LD_EXP 67
13080: PUSH
13081: LD_VAR 0 9
13085: ARRAY
13086: PUSH
13087: LD_EXP 78
13091: PUSH
13092: LD_VAR 0 9
13096: ARRAY
13097: EQUAL
13098: IFFALSE 13108
// crane_usable = false ;
13100: LD_ADDR_VAR 0 12
13104: PUSH
13105: LD_INT 0
13107: ST_TO_ADDR
// away_dist = 7 ;
13108: LD_ADDR_VAR 0 7
13112: PUSH
13113: LD_INT 7
13115: ST_TO_ADDR
// if ai_vehicle_being_moved [ base ] = 0 then
13116: LD_EXP 68
13120: PUSH
13121: LD_VAR 0 9
13125: ARRAY
13126: PUSH
13127: LD_INT 0
13129: EQUAL
13130: IFFALSE 16307
// begin temp_list = UnitFilter ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ ai_control_tower_vehicles [ base ] ^ ai_crane [ base ] ^ ai_cargo_bay [ base ] , [ [ f_control , control_manual ] , [ f_empty ] , [ f_distxy , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , away_dist ] ] ) ;
13132: LD_ADDR_VAR 0 4
13136: PUSH
13137: LD_EXP 57
13141: PUSH
13142: LD_VAR 0 9
13146: ARRAY
13147: PUSH
13148: LD_EXP 90
13152: PUSH
13153: LD_VAR 0 9
13157: ARRAY
13158: ADD
13159: PUSH
13160: LD_EXP 91
13164: PUSH
13165: LD_VAR 0 9
13169: ARRAY
13170: ADD
13171: PUSH
13172: LD_EXP 85
13176: PUSH
13177: LD_VAR 0 9
13181: ARRAY
13182: ADD
13183: PUSH
13184: LD_EXP 78
13188: PUSH
13189: LD_VAR 0 9
13193: ARRAY
13194: ADD
13195: PUSH
13196: LD_EXP 75
13200: PUSH
13201: LD_VAR 0 9
13205: ARRAY
13206: ADD
13207: PPUSH
13208: LD_INT 33
13210: PUSH
13211: LD_INT 1
13213: PUSH
13214: EMPTY
13215: LIST
13216: LIST
13217: PUSH
13218: LD_INT 58
13220: PUSH
13221: EMPTY
13222: LIST
13223: PUSH
13224: LD_INT 92
13226: PUSH
13227: LD_EXP 70
13231: PUSH
13232: LD_VAR 0 9
13236: ARRAY
13237: PUSH
13238: LD_INT 1
13240: ARRAY
13241: PUSH
13242: LD_EXP 70
13246: PUSH
13247: LD_VAR 0 9
13251: ARRAY
13252: PUSH
13253: LD_INT 2
13255: ARRAY
13256: PUSH
13257: LD_VAR 0 7
13261: PUSH
13262: EMPTY
13263: LIST
13264: LIST
13265: LIST
13266: LIST
13267: PUSH
13268: EMPTY
13269: LIST
13270: LIST
13271: LIST
13272: PPUSH
13273: CALL_OW 72
13277: ST_TO_ADDR
// if temp_list > 0 then
13278: LD_VAR 0 4
13282: PUSH
13283: LD_INT 0
13285: GREATER
13286: IFFALSE 13497
// begin if ai_building_constructor [ base ] = ai_crane [ base ] then
13288: LD_EXP 67
13292: PUSH
13293: LD_VAR 0 9
13297: ARRAY
13298: PUSH
13299: LD_EXP 78
13303: PUSH
13304: LD_VAR 0 9
13308: ARRAY
13309: EQUAL
13310: IFFALSE 13415
// begin temp_list = ai_cannot_rebuild_these_buildings [ base ] ^ [ ai_upcoming_building_data [ base ] ] ;
13312: LD_ADDR_VAR 0 4
13316: PUSH
13317: LD_EXP 71
13321: PUSH
13322: LD_VAR 0 9
13326: ARRAY
13327: PUSH
13328: LD_EXP 70
13332: PUSH
13333: LD_VAR 0 9
13337: ARRAY
13338: PUSH
13339: EMPTY
13340: LIST
13341: ADD
13342: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , temp_list ) ;
13343: LD_ADDR_EXP 71
13347: PUSH
13348: LD_EXP 71
13352: PPUSH
13353: LD_VAR 0 9
13357: PPUSH
13358: LD_VAR 0 4
13362: PPUSH
13363: CALL_OW 1
13367: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
13368: LD_ADDR_EXP 70
13372: PUSH
13373: LD_EXP 70
13377: PPUSH
13378: LD_VAR 0 9
13382: PPUSH
13383: EMPTY
13384: PPUSH
13385: CALL_OW 1
13389: ST_TO_ADDR
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
13390: LD_ADDR_EXP 67
13394: PUSH
13395: LD_EXP 67
13399: PPUSH
13400: LD_VAR 0 9
13404: PPUSH
13405: LD_INT 0
13407: PPUSH
13408: CALL_OW 1
13412: ST_TO_ADDR
// end else
13413: GO 13495
// begin ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , temp_list [ 1 ] ) ;
13415: LD_ADDR_EXP 68
13419: PUSH
13420: LD_EXP 68
13424: PPUSH
13425: LD_VAR 0 9
13429: PPUSH
13430: LD_VAR 0 4
13434: PUSH
13435: LD_INT 1
13437: ARRAY
13438: PPUSH
13439: CALL_OW 1
13443: ST_TO_ADDR
// temp_list_2 = ai_vehicles_having_been_moved [ base ] ^ temp_list [ 1 ] ;
13444: LD_ADDR_VAR 0 8
13448: PUSH
13449: LD_EXP 69
13453: PUSH
13454: LD_VAR 0 9
13458: ARRAY
13459: PUSH
13460: LD_VAR 0 4
13464: PUSH
13465: LD_INT 1
13467: ARRAY
13468: ADD
13469: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , temp_list_2 ) ;
13470: LD_ADDR_EXP 69
13474: PUSH
13475: LD_EXP 69
13479: PPUSH
13480: LD_VAR 0 9
13484: PPUSH
13485: LD_VAR 0 8
13489: PPUSH
13490: CALL_OW 1
13494: ST_TO_ADDR
// end ; end else
13495: GO 16305
// case GetType ( IsInUnit ( ai_building_constructor [ base ] ) ) of unit_building :
13497: LD_EXP 67
13501: PUSH
13502: LD_VAR 0 9
13506: ARRAY
13507: PPUSH
13508: CALL_OW 310
13512: PPUSH
13513: CALL_OW 247
13517: PUSH
13518: LD_INT 3
13520: DOUBLE
13521: EQUAL
13522: IFTRUE 13526
13524: GO 13544
13526: POP
// ComExitBuilding ( ai_building_constructor [ base ] ) ; unit_vehicle :
13527: LD_EXP 67
13531: PUSH
13532: LD_VAR 0 9
13536: ARRAY
13537: PPUSH
13538: CALL_OW 122
13542: GO 16305
13544: LD_INT 2
13546: DOUBLE
13547: EQUAL
13548: IFTRUE 13552
13550: GO 13570
13552: POP
// ComExitVehicle ( ai_building_constructor [ base ] ) ; else
13553: LD_EXP 67
13557: PUSH
13558: LD_VAR 0 9
13562: ARRAY
13563: PPUSH
13564: CALL_OW 121
13568: GO 16305
13570: POP
// case GetBType ( HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ) of - 1 :
13571: LD_EXP 70
13575: PUSH
13576: LD_VAR 0 9
13580: ARRAY
13581: PUSH
13582: LD_INT 1
13584: ARRAY
13585: PPUSH
13586: LD_EXP 70
13590: PUSH
13591: LD_VAR 0 9
13595: ARRAY
13596: PUSH
13597: LD_INT 2
13599: ARRAY
13600: PPUSH
13601: CALL_OW 428
13605: PPUSH
13606: CALL_OW 266
13610: PUSH
13611: LD_INT 1
13613: NEG
13614: DOUBLE
13615: EQUAL
13616: IFTRUE 13620
13618: GO 15810
13620: POP
// begin case ai_upcoming_building_data [ base ] [ 4 ] of b_warehouse :
13621: LD_EXP 70
13625: PUSH
13626: LD_VAR 0 9
13630: ARRAY
13631: PUSH
13632: LD_INT 4
13634: ARRAY
13635: PUSH
13636: LD_INT 1
13638: DOUBLE
13639: EQUAL
13640: IFTRUE 13644
13642: GO 13655
13644: POP
// i = b_depot ; b_factory :
13645: LD_ADDR_VAR 0 2
13649: PUSH
13650: LD_INT 0
13652: ST_TO_ADDR
13653: GO 13739
13655: LD_INT 3
13657: DOUBLE
13658: EQUAL
13659: IFTRUE 13663
13661: GO 13674
13663: POP
// i = b_workshop ; b_lab_half , b_lab_full :
13664: LD_ADDR_VAR 0 2
13668: PUSH
13669: LD_INT 2
13671: ST_TO_ADDR
13672: GO 13739
13674: LD_INT 7
13676: DOUBLE
13677: EQUAL
13678: IFTRUE 13688
13680: LD_INT 8
13682: DOUBLE
13683: EQUAL
13684: IFTRUE 13688
13686: GO 13699
13688: POP
// i = b_lab ; b_barracks :
13689: LD_ADDR_VAR 0 2
13693: PUSH
13694: LD_INT 6
13696: ST_TO_ADDR
13697: GO 13739
13699: LD_INT 5
13701: DOUBLE
13702: EQUAL
13703: IFTRUE 13707
13705: GO 13718
13707: POP
// i = b_armoury ; else
13708: LD_ADDR_VAR 0 2
13712: PUSH
13713: LD_INT 4
13715: ST_TO_ADDR
13716: GO 13739
13718: POP
// i = ai_upcoming_building_data [ base ] [ 4 ] ; end ;
13719: LD_ADDR_VAR 0 2
13723: PUSH
13724: LD_EXP 70
13728: PUSH
13729: LD_VAR 0 9
13733: ARRAY
13734: PUSH
13735: LD_INT 4
13737: ARRAY
13738: ST_TO_ADDR
// case i of b_depot :
13739: LD_VAR 0 2
13743: PUSH
13744: LD_INT 0
13746: DOUBLE
13747: EQUAL
13748: IFTRUE 13752
13750: GO 13829
13752: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
13753: LD_EXP 67
13757: PUSH
13758: LD_VAR 0 9
13762: ARRAY
13763: PPUSH
13764: CALL_OW 248
13768: PUSH
13769: LD_INT 3
13771: DOUBLE
13772: EQUAL
13773: IFTRUE 13777
13775: GO 13788
13777: POP
// b_value = 64 ; nation_american :
13778: LD_ADDR_VAR 0 13
13782: PUSH
13783: LD_INT 64
13785: ST_TO_ADDR
13786: GO 13827
13788: LD_INT 1
13790: DOUBLE
13791: EQUAL
13792: IFTRUE 13796
13794: GO 13807
13796: POP
// b_value = 1 ; nation_arabian :
13797: LD_ADDR_VAR 0 13
13801: PUSH
13802: LD_INT 1
13804: ST_TO_ADDR
13805: GO 13827
13807: LD_INT 2
13809: DOUBLE
13810: EQUAL
13811: IFTRUE 13815
13813: GO 13826
13815: POP
// b_value = 34 ; end ;
13816: LD_ADDR_VAR 0 13
13820: PUSH
13821: LD_INT 34
13823: ST_TO_ADDR
13824: GO 13827
13826: POP
// end ; b_workshop :
13827: GO 15722
13829: LD_INT 2
13831: DOUBLE
13832: EQUAL
13833: IFTRUE 13837
13835: GO 13914
13837: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
13838: LD_EXP 67
13842: PUSH
13843: LD_VAR 0 9
13847: ARRAY
13848: PPUSH
13849: CALL_OW 248
13853: PUSH
13854: LD_INT 3
13856: DOUBLE
13857: EQUAL
13858: IFTRUE 13862
13860: GO 13873
13862: POP
// b_value = 68 ; nation_american :
13863: LD_ADDR_VAR 0 13
13867: PUSH
13868: LD_INT 68
13870: ST_TO_ADDR
13871: GO 13912
13873: LD_INT 1
13875: DOUBLE
13876: EQUAL
13877: IFTRUE 13881
13879: GO 13892
13881: POP
// b_value = 5 ; nation_arabian :
13882: LD_ADDR_VAR 0 13
13886: PUSH
13887: LD_INT 5
13889: ST_TO_ADDR
13890: GO 13912
13892: LD_INT 2
13894: DOUBLE
13895: EQUAL
13896: IFTRUE 13900
13898: GO 13911
13900: POP
// b_value = 38 ; end ;
13901: LD_ADDR_VAR 0 13
13905: PUSH
13906: LD_INT 38
13908: ST_TO_ADDR
13909: GO 13912
13911: POP
// end ; b_armoury :
13912: GO 15722
13914: LD_INT 4
13916: DOUBLE
13917: EQUAL
13918: IFTRUE 13922
13920: GO 13999
13922: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
13923: LD_EXP 67
13927: PUSH
13928: LD_VAR 0 9
13932: ARRAY
13933: PPUSH
13934: CALL_OW 248
13938: PUSH
13939: LD_INT 3
13941: DOUBLE
13942: EQUAL
13943: IFTRUE 13947
13945: GO 13958
13947: POP
// b_value = 66 ; nation_american :
13948: LD_ADDR_VAR 0 13
13952: PUSH
13953: LD_INT 66
13955: ST_TO_ADDR
13956: GO 13997
13958: LD_INT 1
13960: DOUBLE
13961: EQUAL
13962: IFTRUE 13966
13964: GO 13977
13966: POP
// b_value = 3 ; nation_arabian :
13967: LD_ADDR_VAR 0 13
13971: PUSH
13972: LD_INT 3
13974: ST_TO_ADDR
13975: GO 13997
13977: LD_INT 2
13979: DOUBLE
13980: EQUAL
13981: IFTRUE 13985
13983: GO 13996
13985: POP
// b_value = 36 ; end ;
13986: LD_ADDR_VAR 0 13
13990: PUSH
13991: LD_INT 36
13993: ST_TO_ADDR
13994: GO 13997
13996: POP
// end ; b_lab :
13997: GO 15722
13999: LD_INT 6
14001: DOUBLE
14002: EQUAL
14003: IFTRUE 14007
14005: GO 14084
14007: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14008: LD_EXP 67
14012: PUSH
14013: LD_VAR 0 9
14017: ARRAY
14018: PPUSH
14019: CALL_OW 248
14023: PUSH
14024: LD_INT 3
14026: DOUBLE
14027: EQUAL
14028: IFTRUE 14032
14030: GO 14043
14032: POP
// b_value = 77 ; nation_american :
14033: LD_ADDR_VAR 0 13
14037: PUSH
14038: LD_INT 77
14040: ST_TO_ADDR
14041: GO 14082
14043: LD_INT 1
14045: DOUBLE
14046: EQUAL
14047: IFTRUE 14051
14049: GO 14062
14051: POP
// b_value = 17 ; nation_arabian :
14052: LD_ADDR_VAR 0 13
14056: PUSH
14057: LD_INT 17
14059: ST_TO_ADDR
14060: GO 14082
14062: LD_INT 2
14064: DOUBLE
14065: EQUAL
14066: IFTRUE 14070
14068: GO 14081
14070: POP
// b_value = 48 ; end ;
14071: LD_ADDR_VAR 0 13
14075: PUSH
14076: LD_INT 48
14078: ST_TO_ADDR
14079: GO 14082
14081: POP
// end ; b_oil_power :
14082: GO 15722
14084: LD_INT 26
14086: DOUBLE
14087: EQUAL
14088: IFTRUE 14092
14090: GO 14169
14092: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14093: LD_EXP 67
14097: PUSH
14098: LD_VAR 0 9
14102: ARRAY
14103: PPUSH
14104: CALL_OW 248
14108: PUSH
14109: LD_INT 3
14111: DOUBLE
14112: EQUAL
14113: IFTRUE 14117
14115: GO 14128
14117: POP
// b_value = 85 ; nation_american :
14118: LD_ADDR_VAR 0 13
14122: PUSH
14123: LD_INT 85
14125: ST_TO_ADDR
14126: GO 14167
14128: LD_INT 1
14130: DOUBLE
14131: EQUAL
14132: IFTRUE 14136
14134: GO 14147
14136: POP
// b_value = 25 ; nation_arabian :
14137: LD_ADDR_VAR 0 13
14141: PUSH
14142: LD_INT 25
14144: ST_TO_ADDR
14145: GO 14167
14147: LD_INT 2
14149: DOUBLE
14150: EQUAL
14151: IFTRUE 14155
14153: GO 14166
14155: POP
// b_value = 56 ; end ;
14156: LD_ADDR_VAR 0 13
14160: PUSH
14161: LD_INT 56
14163: ST_TO_ADDR
14164: GO 14167
14166: POP
// end ; b_solar_power :
14167: GO 15722
14169: LD_INT 27
14171: DOUBLE
14172: EQUAL
14173: IFTRUE 14177
14175: GO 14255
14177: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14178: LD_EXP 67
14182: PUSH
14183: LD_VAR 0 9
14187: ARRAY
14188: PPUSH
14189: CALL_OW 248
14193: PUSH
14194: LD_INT 3
14196: DOUBLE
14197: EQUAL
14198: IFTRUE 14202
14200: GO 14214
14202: POP
// b_value = - 7 ; nation_american :
14203: LD_ADDR_VAR 0 13
14207: PUSH
14208: LD_INT 7
14210: NEG
14211: ST_TO_ADDR
14212: GO 14253
14214: LD_INT 1
14216: DOUBLE
14217: EQUAL
14218: IFTRUE 14222
14220: GO 14233
14222: POP
// b_value = 26 ; nation_arabian :
14223: LD_ADDR_VAR 0 13
14227: PUSH
14228: LD_INT 26
14230: ST_TO_ADDR
14231: GO 14253
14233: LD_INT 2
14235: DOUBLE
14236: EQUAL
14237: IFTRUE 14241
14239: GO 14252
14241: POP
// b_value = 57 ; end ;
14242: LD_ADDR_VAR 0 13
14246: PUSH
14247: LD_INT 57
14249: ST_TO_ADDR
14250: GO 14253
14252: POP
// end ; b_siberite_power :
14253: GO 15722
14255: LD_INT 28
14257: DOUBLE
14258: EQUAL
14259: IFTRUE 14263
14261: GO 14340
14263: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14264: LD_EXP 67
14268: PUSH
14269: LD_VAR 0 9
14273: ARRAY
14274: PPUSH
14275: CALL_OW 248
14279: PUSH
14280: LD_INT 3
14282: DOUBLE
14283: EQUAL
14284: IFTRUE 14288
14286: GO 14299
14288: POP
// b_value = 86 ; nation_american :
14289: LD_ADDR_VAR 0 13
14293: PUSH
14294: LD_INT 86
14296: ST_TO_ADDR
14297: GO 14338
14299: LD_INT 1
14301: DOUBLE
14302: EQUAL
14303: IFTRUE 14307
14305: GO 14318
14307: POP
// b_value = 27 ; nation_arabian :
14308: LD_ADDR_VAR 0 13
14312: PUSH
14313: LD_INT 27
14315: ST_TO_ADDR
14316: GO 14338
14318: LD_INT 2
14320: DOUBLE
14321: EQUAL
14322: IFTRUE 14326
14324: GO 14337
14326: POP
// b_value = 58 ; end ;
14327: LD_ADDR_VAR 0 13
14331: PUSH
14332: LD_INT 58
14334: ST_TO_ADDR
14335: GO 14338
14337: POP
// end ; b_oil_mine :
14338: GO 15722
14340: LD_INT 29
14342: DOUBLE
14343: EQUAL
14344: IFTRUE 14348
14346: GO 14425
14348: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14349: LD_EXP 67
14353: PUSH
14354: LD_VAR 0 9
14358: ARRAY
14359: PPUSH
14360: CALL_OW 248
14364: PUSH
14365: LD_INT 3
14367: DOUBLE
14368: EQUAL
14369: IFTRUE 14373
14371: GO 14384
14373: POP
// b_value = 87 ; nation_american :
14374: LD_ADDR_VAR 0 13
14378: PUSH
14379: LD_INT 87
14381: ST_TO_ADDR
14382: GO 14423
14384: LD_INT 1
14386: DOUBLE
14387: EQUAL
14388: IFTRUE 14392
14390: GO 14403
14392: POP
// b_value = 28 ; nation_arabian :
14393: LD_ADDR_VAR 0 13
14397: PUSH
14398: LD_INT 28
14400: ST_TO_ADDR
14401: GO 14423
14403: LD_INT 2
14405: DOUBLE
14406: EQUAL
14407: IFTRUE 14411
14409: GO 14422
14411: POP
// b_value = 59 ; end ;
14412: LD_ADDR_VAR 0 13
14416: PUSH
14417: LD_INT 59
14419: ST_TO_ADDR
14420: GO 14423
14422: POP
// end ; b_siberite_mine :
14423: GO 15722
14425: LD_INT 30
14427: DOUBLE
14428: EQUAL
14429: IFTRUE 14433
14431: GO 14510
14433: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14434: LD_EXP 67
14438: PUSH
14439: LD_VAR 0 9
14443: ARRAY
14444: PPUSH
14445: CALL_OW 248
14449: PUSH
14450: LD_INT 3
14452: DOUBLE
14453: EQUAL
14454: IFTRUE 14458
14456: GO 14469
14458: POP
// b_value = 88 ; nation_american :
14459: LD_ADDR_VAR 0 13
14463: PUSH
14464: LD_INT 88
14466: ST_TO_ADDR
14467: GO 14508
14469: LD_INT 1
14471: DOUBLE
14472: EQUAL
14473: IFTRUE 14477
14475: GO 14488
14477: POP
// b_value = 29 ; nation_arabian :
14478: LD_ADDR_VAR 0 13
14482: PUSH
14483: LD_INT 29
14485: ST_TO_ADDR
14486: GO 14508
14488: LD_INT 2
14490: DOUBLE
14491: EQUAL
14492: IFTRUE 14496
14494: GO 14507
14496: POP
// b_value = 60 ; end ;
14497: LD_ADDR_VAR 0 13
14501: PUSH
14502: LD_INT 60
14504: ST_TO_ADDR
14505: GO 14508
14507: POP
// end ; b_breastwork :
14508: GO 15722
14510: LD_INT 31
14512: DOUBLE
14513: EQUAL
14514: IFTRUE 14518
14516: GO 14595
14518: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14519: LD_EXP 67
14523: PUSH
14524: LD_VAR 0 9
14528: ARRAY
14529: PPUSH
14530: CALL_OW 248
14534: PUSH
14535: LD_INT 3
14537: DOUBLE
14538: EQUAL
14539: IFTRUE 14543
14541: GO 14554
14543: POP
// b_value = 89 ; nation_american :
14544: LD_ADDR_VAR 0 13
14548: PUSH
14549: LD_INT 89
14551: ST_TO_ADDR
14552: GO 14593
14554: LD_INT 1
14556: DOUBLE
14557: EQUAL
14558: IFTRUE 14562
14560: GO 14573
14562: POP
// b_value = 30 ; nation_arabian :
14563: LD_ADDR_VAR 0 13
14567: PUSH
14568: LD_INT 30
14570: ST_TO_ADDR
14571: GO 14593
14573: LD_INT 2
14575: DOUBLE
14576: EQUAL
14577: IFTRUE 14581
14579: GO 14592
14581: POP
// b_value = 61 ; end ;
14582: LD_ADDR_VAR 0 13
14586: PUSH
14587: LD_INT 61
14589: ST_TO_ADDR
14590: GO 14593
14592: POP
// end ; b_bunker :
14593: GO 15722
14595: LD_INT 32
14597: DOUBLE
14598: EQUAL
14599: IFTRUE 14603
14601: GO 14680
14603: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14604: LD_EXP 67
14608: PUSH
14609: LD_VAR 0 9
14613: ARRAY
14614: PPUSH
14615: CALL_OW 248
14619: PUSH
14620: LD_INT 3
14622: DOUBLE
14623: EQUAL
14624: IFTRUE 14628
14626: GO 14639
14628: POP
// b_value = 90 ; nation_american :
14629: LD_ADDR_VAR 0 13
14633: PUSH
14634: LD_INT 90
14636: ST_TO_ADDR
14637: GO 14678
14639: LD_INT 1
14641: DOUBLE
14642: EQUAL
14643: IFTRUE 14647
14645: GO 14658
14647: POP
// b_value = 31 ; nation_arabian :
14648: LD_ADDR_VAR 0 13
14652: PUSH
14653: LD_INT 31
14655: ST_TO_ADDR
14656: GO 14678
14658: LD_INT 2
14660: DOUBLE
14661: EQUAL
14662: IFTRUE 14666
14664: GO 14677
14666: POP
// b_value = 62 ; end ;
14667: LD_ADDR_VAR 0 13
14671: PUSH
14672: LD_INT 62
14674: ST_TO_ADDR
14675: GO 14678
14677: POP
// end ; b_turret :
14678: GO 15722
14680: LD_INT 33
14682: DOUBLE
14683: EQUAL
14684: IFTRUE 14688
14686: GO 14766
14688: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14689: LD_EXP 67
14693: PUSH
14694: LD_VAR 0 9
14698: ARRAY
14699: PPUSH
14700: CALL_OW 248
14704: PUSH
14705: LD_INT 3
14707: DOUBLE
14708: EQUAL
14709: IFTRUE 14713
14711: GO 14724
14713: POP
// b_value = 91 ; nation_american :
14714: LD_ADDR_VAR 0 13
14718: PUSH
14719: LD_INT 91
14721: ST_TO_ADDR
14722: GO 14764
14724: LD_INT 1
14726: DOUBLE
14727: EQUAL
14728: IFTRUE 14732
14730: GO 14743
14732: POP
// b_value = 32 ; nation_arabian :
14733: LD_ADDR_VAR 0 13
14737: PUSH
14738: LD_INT 32
14740: ST_TO_ADDR
14741: GO 14764
14743: LD_INT 2
14745: DOUBLE
14746: EQUAL
14747: IFTRUE 14751
14749: GO 14763
14751: POP
// b_value = - 7 ; end ;
14752: LD_ADDR_VAR 0 13
14756: PUSH
14757: LD_INT 7
14759: NEG
14760: ST_TO_ADDR
14761: GO 14764
14763: POP
// end ; b_teleport :
14764: GO 15722
14766: LD_INT 34
14768: DOUBLE
14769: EQUAL
14770: IFTRUE 14774
14772: GO 14853
14774: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14775: LD_EXP 67
14779: PUSH
14780: LD_VAR 0 9
14784: ARRAY
14785: PPUSH
14786: CALL_OW 248
14790: PUSH
14791: LD_INT 3
14793: DOUBLE
14794: EQUAL
14795: IFTRUE 14799
14797: GO 14810
14799: POP
// b_value = 92 ; nation_american :
14800: LD_ADDR_VAR 0 13
14804: PUSH
14805: LD_INT 92
14807: ST_TO_ADDR
14808: GO 14851
14810: LD_INT 1
14812: DOUBLE
14813: EQUAL
14814: IFTRUE 14818
14816: GO 14830
14818: POP
// b_value = - 7 ; nation_arabian :
14819: LD_ADDR_VAR 0 13
14823: PUSH
14824: LD_INT 7
14826: NEG
14827: ST_TO_ADDR
14828: GO 14851
14830: LD_INT 2
14832: DOUBLE
14833: EQUAL
14834: IFTRUE 14838
14836: GO 14850
14838: POP
// b_value = - 7 ; end ;
14839: LD_ADDR_VAR 0 13
14843: PUSH
14844: LD_INT 7
14846: NEG
14847: ST_TO_ADDR
14848: GO 14851
14850: POP
// end ; b_control_tower :
14851: GO 15722
14853: LD_INT 36
14855: DOUBLE
14856: EQUAL
14857: IFTRUE 14861
14859: GO 14940
14861: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14862: LD_EXP 67
14866: PUSH
14867: LD_VAR 0 9
14871: ARRAY
14872: PPUSH
14873: CALL_OW 248
14877: PUSH
14878: LD_INT 3
14880: DOUBLE
14881: EQUAL
14882: IFTRUE 14886
14884: GO 14898
14886: POP
// b_value = - 7 ; nation_american :
14887: LD_ADDR_VAR 0 13
14891: PUSH
14892: LD_INT 7
14894: NEG
14895: ST_TO_ADDR
14896: GO 14938
14898: LD_INT 1
14900: DOUBLE
14901: EQUAL
14902: IFTRUE 14906
14904: GO 14917
14906: POP
// b_value = 94 ; nation_arabian :
14907: LD_ADDR_VAR 0 13
14911: PUSH
14912: LD_INT 94
14914: ST_TO_ADDR
14915: GO 14938
14917: LD_INT 2
14919: DOUBLE
14920: EQUAL
14921: IFTRUE 14925
14923: GO 14937
14925: POP
// b_value = - 7 ; end ;
14926: LD_ADDR_VAR 0 13
14930: PUSH
14931: LD_INT 7
14933: NEG
14934: ST_TO_ADDR
14935: GO 14938
14937: POP
// end ; b_ext_track :
14938: GO 15722
14940: LD_INT 16
14942: DOUBLE
14943: EQUAL
14944: IFTRUE 14948
14946: GO 15025
14948: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
14949: LD_EXP 67
14953: PUSH
14954: LD_VAR 0 9
14958: ARRAY
14959: PPUSH
14960: CALL_OW 248
14964: PUSH
14965: LD_INT 3
14967: DOUBLE
14968: EQUAL
14969: IFTRUE 14973
14971: GO 14984
14973: POP
// b_value = 70 ; nation_american :
14974: LD_ADDR_VAR 0 13
14978: PUSH
14979: LD_INT 70
14981: ST_TO_ADDR
14982: GO 15023
14984: LD_INT 1
14986: DOUBLE
14987: EQUAL
14988: IFTRUE 14992
14990: GO 15003
14992: POP
// b_value = 7 ; nation_arabian :
14993: LD_ADDR_VAR 0 13
14997: PUSH
14998: LD_INT 7
15000: ST_TO_ADDR
15001: GO 15023
15003: LD_INT 2
15005: DOUBLE
15006: EQUAL
15007: IFTRUE 15011
15009: GO 15022
15011: POP
// b_value = 40 ; end ;
15012: LD_ADDR_VAR 0 13
15016: PUSH
15017: LD_INT 40
15019: ST_TO_ADDR
15020: GO 15023
15022: POP
// end ; b_ext_gun :
15023: GO 15722
15025: LD_INT 17
15027: DOUBLE
15028: EQUAL
15029: IFTRUE 15033
15031: GO 15110
15033: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15034: LD_EXP 67
15038: PUSH
15039: LD_VAR 0 9
15043: ARRAY
15044: PPUSH
15045: CALL_OW 248
15049: PUSH
15050: LD_INT 3
15052: DOUBLE
15053: EQUAL
15054: IFTRUE 15058
15056: GO 15069
15058: POP
// b_value = 71 ; nation_american :
15059: LD_ADDR_VAR 0 13
15063: PUSH
15064: LD_INT 71
15066: ST_TO_ADDR
15067: GO 15108
15069: LD_INT 1
15071: DOUBLE
15072: EQUAL
15073: IFTRUE 15077
15075: GO 15088
15077: POP
// b_value = 8 ; nation_arabian :
15078: LD_ADDR_VAR 0 13
15082: PUSH
15083: LD_INT 8
15085: ST_TO_ADDR
15086: GO 15108
15088: LD_INT 2
15090: DOUBLE
15091: EQUAL
15092: IFTRUE 15096
15094: GO 15107
15096: POP
// b_value = 41 ; end ;
15097: LD_ADDR_VAR 0 13
15101: PUSH
15102: LD_INT 41
15104: ST_TO_ADDR
15105: GO 15108
15107: POP
// end ; b_ext_rocket :
15108: GO 15722
15110: LD_INT 18
15112: DOUBLE
15113: EQUAL
15114: IFTRUE 15118
15116: GO 15195
15118: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15119: LD_EXP 67
15123: PUSH
15124: LD_VAR 0 9
15128: ARRAY
15129: PPUSH
15130: CALL_OW 248
15134: PUSH
15135: LD_INT 3
15137: DOUBLE
15138: EQUAL
15139: IFTRUE 15143
15141: GO 15154
15143: POP
// b_value = 72 ; nation_american :
15144: LD_ADDR_VAR 0 13
15148: PUSH
15149: LD_INT 72
15151: ST_TO_ADDR
15152: GO 15193
15154: LD_INT 1
15156: DOUBLE
15157: EQUAL
15158: IFTRUE 15162
15160: GO 15173
15162: POP
// b_value = 9 ; nation_arabian :
15163: LD_ADDR_VAR 0 13
15167: PUSH
15168: LD_INT 9
15170: ST_TO_ADDR
15171: GO 15193
15173: LD_INT 2
15175: DOUBLE
15176: EQUAL
15177: IFTRUE 15181
15179: GO 15192
15181: POP
// b_value = 42 ; end ;
15182: LD_ADDR_VAR 0 13
15186: PUSH
15187: LD_INT 42
15189: ST_TO_ADDR
15190: GO 15193
15192: POP
// end ; b_ext_noncombat :
15193: GO 15722
15195: LD_INT 19
15197: DOUBLE
15198: EQUAL
15199: IFTRUE 15203
15201: GO 15281
15203: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15204: LD_EXP 67
15208: PUSH
15209: LD_VAR 0 9
15213: ARRAY
15214: PPUSH
15215: CALL_OW 248
15219: PUSH
15220: LD_INT 3
15222: DOUBLE
15223: EQUAL
15224: IFTRUE 15228
15226: GO 15239
15228: POP
// b_value = 73 ; nation_american :
15229: LD_ADDR_VAR 0 13
15233: PUSH
15234: LD_INT 73
15236: ST_TO_ADDR
15237: GO 15279
15239: LD_INT 1
15241: DOUBLE
15242: EQUAL
15243: IFTRUE 15247
15245: GO 15258
15247: POP
// b_value = 10 ; nation_arabian :
15248: LD_ADDR_VAR 0 13
15252: PUSH
15253: LD_INT 10
15255: ST_TO_ADDR
15256: GO 15279
15258: LD_INT 2
15260: DOUBLE
15261: EQUAL
15262: IFTRUE 15266
15264: GO 15278
15266: POP
// b_value = - 7 ; end ;
15267: LD_ADDR_VAR 0 13
15271: PUSH
15272: LD_INT 7
15274: NEG
15275: ST_TO_ADDR
15276: GO 15279
15278: POP
// end ; b_ext_radar :
15279: GO 15722
15281: LD_INT 20
15283: DOUBLE
15284: EQUAL
15285: IFTRUE 15289
15287: GO 15367
15289: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15290: LD_EXP 67
15294: PUSH
15295: LD_VAR 0 9
15299: ARRAY
15300: PPUSH
15301: CALL_OW 248
15305: PUSH
15306: LD_INT 3
15308: DOUBLE
15309: EQUAL
15310: IFTRUE 15314
15312: GO 15326
15314: POP
// b_value = - 7 ; nation_american :
15315: LD_ADDR_VAR 0 13
15319: PUSH
15320: LD_INT 7
15322: NEG
15323: ST_TO_ADDR
15324: GO 15365
15326: LD_INT 1
15328: DOUBLE
15329: EQUAL
15330: IFTRUE 15334
15332: GO 15345
15334: POP
// b_value = 11 ; nation_arabian :
15335: LD_ADDR_VAR 0 13
15339: PUSH
15340: LD_INT 11
15342: ST_TO_ADDR
15343: GO 15365
15345: LD_INT 2
15347: DOUBLE
15348: EQUAL
15349: IFTRUE 15353
15351: GO 15364
15353: POP
// b_value = 44 ; end ;
15354: LD_ADDR_VAR 0 13
15358: PUSH
15359: LD_INT 44
15361: ST_TO_ADDR
15362: GO 15365
15364: POP
// end ; b_ext_siberium :
15365: GO 15722
15367: LD_INT 21
15369: DOUBLE
15370: EQUAL
15371: IFTRUE 15375
15373: GO 15452
15375: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15376: LD_EXP 67
15380: PUSH
15381: LD_VAR 0 9
15385: ARRAY
15386: PPUSH
15387: CALL_OW 248
15391: PUSH
15392: LD_INT 3
15394: DOUBLE
15395: EQUAL
15396: IFTRUE 15400
15398: GO 15411
15400: POP
// b_value = 75 ; nation_american :
15401: LD_ADDR_VAR 0 13
15405: PUSH
15406: LD_INT 75
15408: ST_TO_ADDR
15409: GO 15450
15411: LD_INT 1
15413: DOUBLE
15414: EQUAL
15415: IFTRUE 15419
15417: GO 15430
15419: POP
// b_value = 12 ; nation_arabian :
15420: LD_ADDR_VAR 0 13
15424: PUSH
15425: LD_INT 12
15427: ST_TO_ADDR
15428: GO 15450
15430: LD_INT 2
15432: DOUBLE
15433: EQUAL
15434: IFTRUE 15438
15436: GO 15449
15438: POP
// b_value = 45 ; end ;
15439: LD_ADDR_VAR 0 13
15443: PUSH
15444: LD_INT 45
15446: ST_TO_ADDR
15447: GO 15450
15449: POP
// end ; b_ext_stitch :
15450: GO 15722
15452: LD_INT 23
15454: DOUBLE
15455: EQUAL
15456: IFTRUE 15460
15458: GO 15539
15460: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15461: LD_EXP 67
15465: PUSH
15466: LD_VAR 0 9
15470: ARRAY
15471: PPUSH
15472: CALL_OW 248
15476: PUSH
15477: LD_INT 3
15479: DOUBLE
15480: EQUAL
15481: IFTRUE 15485
15483: GO 15497
15485: POP
// b_value = - 7 ; nation_american :
15486: LD_ADDR_VAR 0 13
15490: PUSH
15491: LD_INT 7
15493: NEG
15494: ST_TO_ADDR
15495: GO 15537
15497: LD_INT 1
15499: DOUBLE
15500: EQUAL
15501: IFTRUE 15505
15503: GO 15517
15505: POP
// b_value = - 7 ; nation_arabian :
15506: LD_ADDR_VAR 0 13
15510: PUSH
15511: LD_INT 7
15513: NEG
15514: ST_TO_ADDR
15515: GO 15537
15517: LD_INT 2
15519: DOUBLE
15520: EQUAL
15521: IFTRUE 15525
15523: GO 15536
15525: POP
// b_value = 43 ; end ;
15526: LD_ADDR_VAR 0 13
15530: PUSH
15531: LD_INT 43
15533: ST_TO_ADDR
15534: GO 15537
15536: POP
// end ; b_ext_computer :
15537: GO 15722
15539: LD_INT 24
15541: DOUBLE
15542: EQUAL
15543: IFTRUE 15547
15545: GO 15625
15547: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15548: LD_EXP 67
15552: PUSH
15553: LD_VAR 0 9
15557: ARRAY
15558: PPUSH
15559: CALL_OW 248
15563: PUSH
15564: LD_INT 3
15566: DOUBLE
15567: EQUAL
15568: IFTRUE 15572
15570: GO 15583
15572: POP
// b_value = 76 ; nation_american :
15573: LD_ADDR_VAR 0 13
15577: PUSH
15578: LD_INT 76
15580: ST_TO_ADDR
15581: GO 15623
15583: LD_INT 1
15585: DOUBLE
15586: EQUAL
15587: IFTRUE 15591
15589: GO 15602
15591: POP
// b_value = 15 ; nation_arabian :
15592: LD_ADDR_VAR 0 13
15596: PUSH
15597: LD_INT 15
15599: ST_TO_ADDR
15600: GO 15623
15602: LD_INT 2
15604: DOUBLE
15605: EQUAL
15606: IFTRUE 15610
15608: GO 15622
15610: POP
// b_value = - 7 ; end ;
15611: LD_ADDR_VAR 0 13
15615: PUSH
15616: LD_INT 7
15618: NEG
15619: ST_TO_ADDR
15620: GO 15623
15622: POP
// end ; b_ext_laser :
15623: GO 15722
15625: LD_INT 25
15627: DOUBLE
15628: EQUAL
15629: IFTRUE 15633
15631: GO 15712
15633: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
15634: LD_EXP 67
15638: PUSH
15639: LD_VAR 0 9
15643: ARRAY
15644: PPUSH
15645: CALL_OW 248
15649: PUSH
15650: LD_INT 3
15652: DOUBLE
15653: EQUAL
15654: IFTRUE 15658
15656: GO 15670
15658: POP
// b_value = - 7 ; nation_american :
15659: LD_ADDR_VAR 0 13
15663: PUSH
15664: LD_INT 7
15666: NEG
15667: ST_TO_ADDR
15668: GO 15710
15670: LD_INT 1
15672: DOUBLE
15673: EQUAL
15674: IFTRUE 15678
15676: GO 15689
15678: POP
// b_value = 16 ; nation_arabian :
15679: LD_ADDR_VAR 0 13
15683: PUSH
15684: LD_INT 16
15686: ST_TO_ADDR
15687: GO 15710
15689: LD_INT 2
15691: DOUBLE
15692: EQUAL
15693: IFTRUE 15697
15695: GO 15709
15697: POP
// b_value = - 7 ; end ;
15698: LD_ADDR_VAR 0 13
15702: PUSH
15703: LD_INT 7
15705: NEG
15706: ST_TO_ADDR
15707: GO 15710
15709: POP
// end ; else
15710: GO 15722
15712: POP
// b_value = - 42 ; end ;
15713: LD_ADDR_VAR 0 13
15717: PUSH
15718: LD_INT 42
15720: NEG
15721: ST_TO_ADDR
// SetTaskList ( ai_building_constructor [ base ] , [ [ B , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , 0 , b_value , ai_upcoming_building_data [ base ] [ 3 ] , 0 ] ] ) ;
15722: LD_EXP 67
15726: PUSH
15727: LD_VAR 0 9
15731: ARRAY
15732: PPUSH
15733: LD_STRING B
15735: PUSH
15736: LD_EXP 70
15740: PUSH
15741: LD_VAR 0 9
15745: ARRAY
15746: PUSH
15747: LD_INT 1
15749: ARRAY
15750: PUSH
15751: LD_EXP 70
15755: PUSH
15756: LD_VAR 0 9
15760: ARRAY
15761: PUSH
15762: LD_INT 2
15764: ARRAY
15765: PUSH
15766: LD_INT 0
15768: PUSH
15769: LD_VAR 0 13
15773: PUSH
15774: LD_EXP 70
15778: PUSH
15779: LD_VAR 0 9
15783: ARRAY
15784: PUSH
15785: LD_INT 3
15787: ARRAY
15788: PUSH
15789: LD_INT 0
15791: PUSH
15792: EMPTY
15793: LIST
15794: LIST
15795: LIST
15796: LIST
15797: LIST
15798: LIST
15799: LIST
15800: PUSH
15801: EMPTY
15802: LIST
15803: PPUSH
15804: CALL_OW 446
// end ; b_depot :
15808: GO 16305
15810: LD_INT 0
15812: DOUBLE
15813: EQUAL
15814: IFTRUE 15818
15816: GO 15867
15818: POP
// begin ComUpgrade ( ai_depot [ base ] ) ;
15819: LD_EXP 39
15823: PUSH
15824: LD_VAR 0 9
15828: ARRAY
15829: PPUSH
15830: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , ai_depot [ base ] ) ;
15834: LD_ADDR_EXP 64
15838: PUSH
15839: LD_EXP 64
15843: PPUSH
15844: LD_VAR 0 9
15848: PPUSH
15849: LD_EXP 39
15853: PUSH
15854: LD_VAR 0 9
15858: ARRAY
15859: PPUSH
15860: CALL_OW 1
15864: ST_TO_ADDR
// end ; b_workshop :
15865: GO 16305
15867: LD_INT 2
15869: DOUBLE
15870: EQUAL
15871: IFTRUE 15875
15873: GO 15952
15875: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
15876: LD_ADDR_VAR 0 6
15880: PUSH
15881: LD_EXP 70
15885: PUSH
15886: LD_VAR 0 9
15890: ARRAY
15891: PUSH
15892: LD_INT 1
15894: ARRAY
15895: PPUSH
15896: LD_EXP 70
15900: PUSH
15901: LD_VAR 0 9
15905: ARRAY
15906: PUSH
15907: LD_INT 2
15909: ARRAY
15910: PPUSH
15911: CALL_OW 428
15915: ST_TO_ADDR
// ComUpgrade ( temp_unit ) ;
15916: LD_VAR 0 6
15920: PPUSH
15921: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
15925: LD_ADDR_EXP 64
15929: PUSH
15930: LD_EXP 64
15934: PPUSH
15935: LD_VAR 0 9
15939: PPUSH
15940: LD_VAR 0 6
15944: PPUSH
15945: CALL_OW 1
15949: ST_TO_ADDR
// end ; b_lab , b_lab_half :
15950: GO 16305
15952: LD_INT 6
15954: DOUBLE
15955: EQUAL
15956: IFTRUE 15966
15958: LD_INT 7
15960: DOUBLE
15961: EQUAL
15962: IFTRUE 15966
15964: GO 16219
15966: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
15967: LD_ADDR_VAR 0 6
15971: PUSH
15972: LD_EXP 70
15976: PUSH
15977: LD_VAR 0 9
15981: ARRAY
15982: PUSH
15983: LD_INT 1
15985: ARRAY
15986: PPUSH
15987: LD_EXP 70
15991: PUSH
15992: LD_VAR 0 9
15996: ARRAY
15997: PUSH
15998: LD_INT 2
16000: ARRAY
16001: PPUSH
16002: CALL_OW 428
16006: ST_TO_ADDR
// if ai_upcoming_building_data [ base ] [ 5 ] <> b_lab_basic and not ai_upcoming_building_data [ base ] [ 5 ] in [ GetLabKind ( temp_unit , 1 ) , GetLabKind ( temp_unit , 2 ) ] then
16007: LD_EXP 70
16011: PUSH
16012: LD_VAR 0 9
16016: ARRAY
16017: PUSH
16018: LD_INT 5
16020: ARRAY
16021: PUSH
16022: LD_INT 9
16024: NONEQUAL
16025: PUSH
16026: LD_EXP 70
16030: PUSH
16031: LD_VAR 0 9
16035: ARRAY
16036: PUSH
16037: LD_INT 5
16039: ARRAY
16040: PUSH
16041: LD_VAR 0 6
16045: PPUSH
16046: LD_INT 1
16048: PPUSH
16049: CALL_OW 268
16053: PUSH
16054: LD_VAR 0 6
16058: PPUSH
16059: LD_INT 2
16061: PPUSH
16062: CALL_OW 268
16066: PUSH
16067: EMPTY
16068: LIST
16069: LIST
16070: IN
16071: NOT
16072: AND
16073: IFFALSE 16101
// begin ComUpgradeLab ( temp_unit , ai_upcoming_building_data [ base ] [ 5 ] ) ;
16075: LD_VAR 0 6
16079: PPUSH
16080: LD_EXP 70
16084: PUSH
16085: LD_VAR 0 9
16089: ARRAY
16090: PUSH
16091: LD_INT 5
16093: ARRAY
16094: PPUSH
16095: CALL_OW 147
// end else
16099: GO 16192
// if ai_upcoming_building_data [ base ] [ 6 ] <> b_lab_basic then
16101: LD_EXP 70
16105: PUSH
16106: LD_VAR 0 9
16110: ARRAY
16111: PUSH
16112: LD_INT 6
16114: ARRAY
16115: PUSH
16116: LD_INT 9
16118: NONEQUAL
16119: IFFALSE 16147
// begin ComUpgradeLab ( temp_unit , ai_upcoming_building_data [ base ] [ 6 ] ) ;
16121: LD_VAR 0 6
16125: PPUSH
16126: LD_EXP 70
16130: PUSH
16131: LD_VAR 0 9
16135: ARRAY
16136: PUSH
16137: LD_INT 6
16139: ARRAY
16140: PPUSH
16141: CALL_OW 147
// end else
16145: GO 16192
// begin ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
16147: LD_ADDR_EXP 67
16151: PUSH
16152: LD_EXP 67
16156: PPUSH
16157: LD_VAR 0 9
16161: PPUSH
16162: LD_INT 0
16164: PPUSH
16165: CALL_OW 1
16169: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
16170: LD_ADDR_EXP 70
16174: PUSH
16175: LD_EXP 70
16179: PPUSH
16180: LD_VAR 0 9
16184: PPUSH
16185: EMPTY
16186: PPUSH
16187: CALL_OW 1
16191: ST_TO_ADDR
// end ; ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
16192: LD_ADDR_EXP 64
16196: PUSH
16197: LD_EXP 64
16201: PPUSH
16202: LD_VAR 0 9
16206: PPUSH
16207: LD_VAR 0 6
16211: PPUSH
16212: CALL_OW 1
16216: ST_TO_ADDR
// end ; b_armoury :
16217: GO 16305
16219: LD_INT 4
16221: DOUBLE
16222: EQUAL
16223: IFTRUE 16227
16225: GO 16304
16227: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
16228: LD_ADDR_VAR 0 6
16232: PUSH
16233: LD_EXP 70
16237: PUSH
16238: LD_VAR 0 9
16242: ARRAY
16243: PUSH
16244: LD_INT 1
16246: ARRAY
16247: PPUSH
16248: LD_EXP 70
16252: PUSH
16253: LD_VAR 0 9
16257: ARRAY
16258: PUSH
16259: LD_INT 2
16261: ARRAY
16262: PPUSH
16263: CALL_OW 428
16267: ST_TO_ADDR
// ComUpgrade ( temp_unit ) ;
16268: LD_VAR 0 6
16272: PPUSH
16273: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
16277: LD_ADDR_EXP 64
16281: PUSH
16282: LD_EXP 64
16286: PPUSH
16287: LD_VAR 0 9
16291: PPUSH
16292: LD_VAR 0 6
16296: PPUSH
16297: CALL_OW 1
16301: ST_TO_ADDR
// end ; end ; end ;
16302: GO 16305
16304: POP
// end else
16305: GO 16565
// if UnitsInside ( ai_vehicle_being_moved [ base ] ) > 0 then
16307: LD_EXP 68
16311: PUSH
16312: LD_VAR 0 9
16316: ARRAY
16317: PPUSH
16318: CALL_OW 313
16322: PUSH
16323: LD_INT 0
16325: GREATER
16326: IFFALSE 16465
// begin if GetDistUnitXY ( ai_vehicle_being_moved [ base ] , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) <= away_dist then
16328: LD_EXP 68
16332: PUSH
16333: LD_VAR 0 9
16337: ARRAY
16338: PPUSH
16339: LD_EXP 70
16343: PUSH
16344: LD_VAR 0 9
16348: ARRAY
16349: PUSH
16350: LD_INT 1
16352: ARRAY
16353: PPUSH
16354: LD_EXP 70
16358: PUSH
16359: LD_VAR 0 9
16363: ARRAY
16364: PUSH
16365: LD_INT 2
16367: ARRAY
16368: PPUSH
16369: CALL_OW 297
16373: PUSH
16374: LD_VAR 0 7
16378: LESSEQUAL
16379: IFFALSE 16440
// AI_GetAwayFromXY ( ai_vehicle_being_moved [ base ] , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , away_dist + 2 , false ) else
16381: LD_EXP 68
16385: PUSH
16386: LD_VAR 0 9
16390: ARRAY
16391: PPUSH
16392: LD_EXP 70
16396: PUSH
16397: LD_VAR 0 9
16401: ARRAY
16402: PUSH
16403: LD_INT 1
16405: ARRAY
16406: PPUSH
16407: LD_EXP 70
16411: PUSH
16412: LD_VAR 0 9
16416: ARRAY
16417: PUSH
16418: LD_INT 2
16420: ARRAY
16421: PPUSH
16422: LD_VAR 0 7
16426: PUSH
16427: LD_INT 2
16429: PLUS
16430: PPUSH
16431: LD_INT 0
16433: PPUSH
16434: CALL 60434 0 5
16438: GO 16463
// ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
16440: LD_ADDR_EXP 68
16444: PUSH
16445: LD_EXP 68
16449: PPUSH
16450: LD_VAR 0 9
16454: PPUSH
16455: LD_INT 0
16457: PPUSH
16458: CALL_OW 1
16462: ST_TO_ADDR
// end else
16463: GO 16565
// case GetType ( IsInUnit ( ai_building_constructor [ base ] ) ) of unit_building :
16465: LD_EXP 67
16469: PUSH
16470: LD_VAR 0 9
16474: ARRAY
16475: PPUSH
16476: CALL_OW 310
16480: PPUSH
16481: CALL_OW 247
16485: PUSH
16486: LD_INT 3
16488: DOUBLE
16489: EQUAL
16490: IFTRUE 16494
16492: GO 16512
16494: POP
// ComExitBuilding ( ai_building_constructor [ base ] ) ; unit_vehicle :
16495: LD_EXP 67
16499: PUSH
16500: LD_VAR 0 9
16504: ARRAY
16505: PPUSH
16506: CALL_OW 122
16510: GO 16565
16512: LD_INT 2
16514: DOUBLE
16515: EQUAL
16516: IFTRUE 16520
16518: GO 16538
16520: POP
// ComExitVehicle ( ai_building_constructor [ base ] ) ; else
16521: LD_EXP 67
16525: PUSH
16526: LD_VAR 0 9
16530: ARRAY
16531: PPUSH
16532: CALL_OW 121
16536: GO 16565
16538: POP
// ComEnterUnit ( ai_building_constructor [ base ] , ai_vehicle_being_moved [ base ] ) ; end ;
16539: LD_EXP 67
16543: PUSH
16544: LD_VAR 0 9
16548: ARRAY
16549: PPUSH
16550: LD_EXP 68
16554: PUSH
16555: LD_VAR 0 9
16559: ARRAY
16560: PPUSH
16561: CALL_OW 120
// end ; end ; end ; if ( engineers_list ^ apemen_engineers_list ) > 0 and ai_depot [ base ] > 0 then
16565: LD_VAR 0 3
16569: PUSH
16570: LD_VAR 0 10
16574: ADD
16575: PUSH
16576: LD_INT 0
16578: GREATER
16579: PUSH
16580: LD_EXP 39
16584: PUSH
16585: LD_VAR 0 9
16589: ARRAY
16590: PUSH
16591: LD_INT 0
16593: GREATER
16594: AND
16595: IFFALSE 16749
// begin temp_list = GetListOfCratesInArea ( GetBaseArea ( base ) ) ;
16597: LD_ADDR_VAR 0 4
16601: PUSH
16602: LD_VAR 0 9
16606: PPUSH
16607: CALL 3614 0 1
16611: PPUSH
16612: CALL_OW 435
16616: ST_TO_ADDR
// while temp_list > 0 do
16617: LD_VAR 0 4
16621: PUSH
16622: LD_INT 0
16624: GREATER
16625: IFFALSE 16749
// begin if GetResourceTypeXY ( temp_list [ 1 ] , temp_list [ 2 ] ) = mat_artifact then
16627: LD_VAR 0 4
16631: PUSH
16632: LD_INT 1
16634: ARRAY
16635: PPUSH
16636: LD_VAR 0 4
16640: PUSH
16641: LD_INT 2
16643: ARRAY
16644: PPUSH
16645: CALL_OW 283
16649: PUSH
16650: LD_INT 4
16652: EQUAL
16653: IFFALSE 16693
// begin temp_list = Delete ( temp_list , 1 ) ;
16655: LD_ADDR_VAR 0 4
16659: PUSH
16660: LD_VAR 0 4
16664: PPUSH
16665: LD_INT 1
16667: PPUSH
16668: CALL_OW 3
16672: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
16673: LD_ADDR_VAR 0 4
16677: PUSH
16678: LD_VAR 0 4
16682: PPUSH
16683: LD_INT 1
16685: PPUSH
16686: CALL_OW 3
16690: ST_TO_ADDR
// continue ;
16691: GO 16617
// end ; ComCollect ( GetHumansOutOfUnits ( engineers_list ^ apemen_engineers_list ) , temp_list [ 1 ] , temp_list [ 2 ] ) ;
16693: LD_VAR 0 3
16697: PUSH
16698: LD_VAR 0 10
16702: ADD
16703: PPUSH
16704: CALL 18607 0 1
16708: PPUSH
16709: LD_VAR 0 4
16713: PUSH
16714: LD_INT 1
16716: ARRAY
16717: PPUSH
16718: LD_VAR 0 4
16722: PUSH
16723: LD_INT 2
16725: ARRAY
16726: PPUSH
16727: CALL_OW 117
// engineers_list = [ ] ;
16731: LD_ADDR_VAR 0 3
16735: PUSH
16736: EMPTY
16737: ST_TO_ADDR
// apemen_engineers_list = [ ] ;
16738: LD_ADDR_VAR 0 10
16742: PUSH
16743: EMPTY
16744: ST_TO_ADDR
// break ;
16745: GO 16749
// end ;
16747: GO 16617
// end ; end ; DistributeHumansToBuildings ( base , engineers_list ^ apemen_engineers_list , UnitFilter ( ai_depot [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_engineer , [ 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ] [ base ] , false , false ) ;
16749: LD_VAR 0 9
16753: PPUSH
16754: LD_VAR 0 3
16758: PUSH
16759: LD_VAR 0 10
16763: ADD
16764: PPUSH
16765: LD_EXP 39
16769: PUSH
16770: LD_VAR 0 9
16774: ARRAY
16775: PPUSH
16776: LD_INT 50
16778: PUSH
16779: EMPTY
16780: LIST
16781: PUSH
16782: LD_INT 3
16784: PUSH
16785: LD_INT 57
16787: PUSH
16788: EMPTY
16789: LIST
16790: PUSH
16791: EMPTY
16792: LIST
16793: LIST
16794: PUSH
16795: EMPTY
16796: LIST
16797: LIST
16798: PPUSH
16799: CALL_OW 72
16803: PPUSH
16804: LD_INT 2
16806: PPUSH
16807: LD_INT 6
16809: PUSH
16810: LD_INT 6
16812: PUSH
16813: LD_INT 6
16815: PUSH
16816: LD_INT 6
16818: PUSH
16819: LD_INT 6
16821: PUSH
16822: LD_INT 6
16824: PUSH
16825: LD_INT 6
16827: PUSH
16828: LD_INT 6
16830: PUSH
16831: LD_INT 6
16833: PUSH
16834: LD_INT 6
16836: PUSH
16837: EMPTY
16838: LIST
16839: LIST
16840: LIST
16841: LIST
16842: LIST
16843: LIST
16844: LIST
16845: LIST
16846: LIST
16847: LIST
16848: PUSH
16849: LD_VAR 0 9
16853: ARRAY
16854: PPUSH
16855: LD_INT 0
16857: PPUSH
16858: LD_INT 0
16860: PPUSH
16861: CALL 7668 0 7
// if crane_usable then
16865: LD_VAR 0 12
16869: IFFALSE 16997
// if not IsInArea ( ai_crane [ base ] , GetBaseArea ( base ) ) then
16871: LD_EXP 78
16875: PUSH
16876: LD_VAR 0 9
16880: ARRAY
16881: PPUSH
16882: LD_VAR 0 9
16886: PPUSH
16887: CALL 3614 0 1
16891: PPUSH
16892: CALL_OW 308
16896: NOT
16897: IFFALSE 16946
// ComMoveXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) else
16899: LD_EXP 78
16903: PUSH
16904: LD_VAR 0 9
16908: ARRAY
16909: PPUSH
16910: LD_EXP 63
16914: PUSH
16915: LD_VAR 0 9
16919: ARRAY
16920: PUSH
16921: LD_INT 1
16923: ARRAY
16924: PPUSH
16925: LD_EXP 63
16929: PUSH
16930: LD_VAR 0 9
16934: ARRAY
16935: PUSH
16936: LD_INT 2
16938: ARRAY
16939: PPUSH
16940: CALL_OW 111
16944: GO 16997
// if GetLives ( ai_crane [ base ] ) < 1000 and not under_attack then
16946: LD_EXP 78
16950: PUSH
16951: LD_VAR 0 9
16955: ARRAY
16956: PPUSH
16957: CALL_OW 256
16961: PUSH
16962: LD_INT 1000
16964: LESS
16965: PUSH
16966: LD_VAR 0 19
16970: NOT
16971: AND
16972: IFFALSE 16997
// ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , true ) ;
16974: LD_ADDR_EXP 81
16978: PUSH
16979: LD_EXP 81
16983: PPUSH
16984: LD_VAR 0 9
16988: PPUSH
16989: LD_INT 1
16991: PPUSH
16992: CALL_OW 1
16996: ST_TO_ADDR
// end ;
16997: GO 9272
16999: POP
17000: POP
// until false ;
17001: LD_INT 0
17003: IFFALSE 9233
// end ;
17005: PPOPN 22
17007: END
// on BuildingStarted ( building , builder ) do var side , temp_list , base , i ;
17008: LD_INT 0
17010: PPUSH
17011: PPUSH
17012: PPUSH
17013: PPUSH
// begin side = GetSide ( building ) ;
17014: LD_ADDR_VAR 0 3
17018: PUSH
17019: LD_VAR 0 1
17023: PPUSH
17024: CALL_OW 255
17028: ST_TO_ADDR
// if side = you then
17029: LD_VAR 0 3
17033: PUSH
17034: LD_EXP 4
17038: EQUAL
17039: IFFALSE 17043
// exit ;
17041: GO 17175
// base = FindBase ( building ) ;
17043: LD_ADDR_VAR 0 5
17047: PUSH
17048: LD_VAR 0 1
17052: PPUSH
17053: CALL 4246 0 1
17057: ST_TO_ADDR
// if base = 0 then
17058: LD_VAR 0 5
17062: PUSH
17063: LD_INT 0
17065: EQUAL
17066: IFFALSE 17070
// exit ;
17068: GO 17175
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
17070: LD_ADDR_EXP 67
17074: PUSH
17075: LD_EXP 67
17079: PPUSH
17080: LD_VAR 0 5
17084: PPUSH
17085: LD_INT 0
17087: PPUSH
17088: CALL_OW 1
17092: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , [ ] ) ;
17093: LD_ADDR_EXP 69
17097: PUSH
17098: LD_EXP 69
17102: PPUSH
17103: LD_VAR 0 5
17107: PPUSH
17108: EMPTY
17109: PPUSH
17110: CALL_OW 1
17114: ST_TO_ADDR
// ai_building_under_construction = Replace ( ai_building_under_construction , base , building ) ;
17115: LD_ADDR_EXP 64
17119: PUSH
17120: LD_EXP 64
17124: PPUSH
17125: LD_VAR 0 5
17129: PPUSH
17130: LD_VAR 0 1
17134: PPUSH
17135: CALL_OW 1
17139: ST_TO_ADDR
// ai_buildingsleft = replace ( ai_buildingsleft , base , ai_buildingsleft [ base ] - 1 ) ;
17140: LD_ADDR_EXP 163
17144: PUSH
17145: LD_EXP 163
17149: PPUSH
17150: LD_VAR 0 5
17154: PPUSH
17155: LD_EXP 163
17159: PUSH
17160: LD_VAR 0 5
17164: ARRAY
17165: PUSH
17166: LD_INT 1
17168: MINUS
17169: PPUSH
17170: CALL_OW 1
17174: ST_TO_ADDR
// end ;
17175: PPOPN 6
17177: END
// on BuildingComplete ( building ) do var side , temp_list , temp_unit , base , i , hex ;
17178: LD_INT 0
17180: PPUSH
17181: PPUSH
17182: PPUSH
17183: PPUSH
17184: PPUSH
17185: PPUSH
// begin side = GetSide ( building ) ;
17186: LD_ADDR_VAR 0 2
17190: PUSH
17191: LD_VAR 0 1
17195: PPUSH
17196: CALL_OW 255
17200: ST_TO_ADDR
// base = FindBase ( building ) ;
17201: LD_ADDR_VAR 0 5
17205: PUSH
17206: LD_VAR 0 1
17210: PPUSH
17211: CALL 4246 0 1
17215: ST_TO_ADDR
// if base = 0 then
17216: LD_VAR 0 5
17220: PUSH
17221: LD_INT 0
17223: EQUAL
17224: IFFALSE 17228
// exit ;
17226: GO 17438
// hex = [ GetX ( building ) , GetY ( building ) ] ;
17228: LD_ADDR_VAR 0 7
17232: PUSH
17233: LD_VAR 0 1
17237: PPUSH
17238: CALL_OW 250
17242: PUSH
17243: LD_VAR 0 1
17247: PPUSH
17248: CALL_OW 251
17252: PUSH
17253: EMPTY
17254: LIST
17255: LIST
17256: ST_TO_ADDR
// if hex in ai_fact_extension_replace_locations [ base ] then
17257: LD_VAR 0 7
17261: PUSH
17262: LD_EXP 88
17266: PUSH
17267: LD_VAR 0 5
17271: ARRAY
17272: IN
17273: IFFALSE 17360
// begin for i in ai_facts [ base ] do
17275: LD_ADDR_VAR 0 6
17279: PUSH
17280: LD_EXP 41
17284: PUSH
17285: LD_VAR 0 5
17289: ARRAY
17290: PUSH
17291: FOR_IN
17292: IFFALSE 17358
// if ai_facts_with_ext_rebuild_map >= i then
17294: LD_EXP 98
17298: PUSH
17299: LD_VAR 0 6
17303: GREATEREQUAL
17304: IFFALSE 17356
// begin temp_list = ai_facts_with_ext_rebuild_map [ i ] diff [ hex ] ;
17306: LD_ADDR_VAR 0 3
17310: PUSH
17311: LD_EXP 98
17315: PUSH
17316: LD_VAR 0 6
17320: ARRAY
17321: PUSH
17322: LD_VAR 0 7
17326: PUSH
17327: EMPTY
17328: LIST
17329: DIFF
17330: ST_TO_ADDR
// ai_facts_with_ext_rebuild_map = Replace ( ai_facts_with_ext_rebuild_map , i , temp_list ) ;
17331: LD_ADDR_EXP 98
17335: PUSH
17336: LD_EXP 98
17340: PPUSH
17341: LD_VAR 0 6
17345: PPUSH
17346: LD_VAR 0 3
17350: PPUSH
17351: CALL_OW 1
17355: ST_TO_ADDR
// end ;
17356: GO 17291
17358: POP
17359: POP
// end ; BuildUpgradeCommon ( base , building ) ;
17360: LD_VAR 0 5
17364: PPUSH
17365: LD_VAR 0 1
17369: PPUSH
17370: CALL 17519 0 2
// temp_list = ai_all_buildings [ base ] ^ building ;
17374: LD_ADDR_VAR 0 3
17378: PUSH
17379: LD_EXP 66
17383: PUSH
17384: LD_VAR 0 5
17388: ARRAY
17389: PUSH
17390: LD_VAR 0 1
17394: ADD
17395: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
17396: LD_ADDR_EXP 66
17400: PUSH
17401: LD_EXP 66
17405: PPUSH
17406: LD_VAR 0 5
17410: PPUSH
17411: LD_VAR 0 3
17415: PPUSH
17416: CALL_OW 1
17420: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , building , true ) ;
17421: LD_VAR 0 5
17425: PPUSH
17426: LD_VAR 0 1
17430: PPUSH
17431: LD_INT 1
17433: PPUSH
17434: CALL 49912 0 3
// end ;
17438: PPOPN 7
17440: END
// on UpgradeComplete ( building ) do var side , temp_list , base ;
17441: LD_INT 0
17443: PPUSH
17444: PPUSH
17445: PPUSH
// begin side = GetSide ( building ) ;
17446: LD_ADDR_VAR 0 2
17450: PUSH
17451: LD_VAR 0 1
17455: PPUSH
17456: CALL_OW 255
17460: ST_TO_ADDR
// if side = you then
17461: LD_VAR 0 2
17465: PUSH
17466: LD_EXP 4
17470: EQUAL
17471: IFFALSE 17475
// exit ;
17473: GO 17516
// base = FindBase ( building ) ;
17475: LD_ADDR_VAR 0 4
17479: PUSH
17480: LD_VAR 0 1
17484: PPUSH
17485: CALL 4246 0 1
17489: ST_TO_ADDR
// if base = 0 then
17490: LD_VAR 0 4
17494: PUSH
17495: LD_INT 0
17497: EQUAL
17498: IFFALSE 17502
// exit ;
17500: GO 17516
// BuildUpgradeCommon ( base , building ) ;
17502: LD_VAR 0 4
17506: PPUSH
17507: LD_VAR 0 1
17511: PPUSH
17512: CALL 17519 0 2
// end ;
17516: PPOPN 4
17518: END
// function BuildUpgradeCommon ( base , building ) ; begin
17519: LD_INT 0
17521: PPUSH
// if GetBType ( building ) = ai_upcoming_building_data [ base ] [ 4 ] then
17522: LD_VAR 0 2
17526: PPUSH
17527: CALL_OW 266
17531: PUSH
17532: LD_EXP 70
17536: PUSH
17537: LD_VAR 0 1
17541: ARRAY
17542: PUSH
17543: LD_INT 4
17545: ARRAY
17546: EQUAL
17547: IFFALSE 17571
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
17549: LD_ADDR_EXP 70
17553: PUSH
17554: LD_EXP 70
17558: PPUSH
17559: LD_VAR 0 1
17563: PPUSH
17564: EMPTY
17565: PPUSH
17566: CALL_OW 1
17570: ST_TO_ADDR
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
17571: LD_ADDR_EXP 64
17575: PUSH
17576: LD_EXP 64
17580: PPUSH
17581: LD_VAR 0 1
17585: PPUSH
17586: LD_INT 0
17588: PPUSH
17589: CALL_OW 1
17593: ST_TO_ADDR
// end ;
17594: LD_VAR 0 3
17598: RET
// on BuildingCaptured ( captured_building , building_former_side , capturing_unit ) do var temp_list , base , i , oil_val , sib_val ;
17599: LD_INT 0
17601: PPUSH
17602: PPUSH
17603: PPUSH
17604: PPUSH
17605: PPUSH
// begin if captured_building in ai_depot then
17606: LD_VAR 0 1
17610: PUSH
17611: LD_EXP 39
17615: IN
17616: IFFALSE 18346
// begin if GetTech ( Tech_Tech2 , 3 ) = state_researched then
17618: LD_INT 49
17620: PPUSH
17621: LD_INT 3
17623: PPUSH
17624: CALL_OW 321
17628: PUSH
17629: LD_INT 2
17631: EQUAL
17632: IFFALSE 17645
// oil_val = 0.012190476 else
17634: LD_ADDR_VAR 0 7
17638: PUSH
17639: LD_REAL  1.21904760000000E-0002
17642: ST_TO_ADDR
17643: GO 17654
// oil_val = 0.009047619 ;
17645: LD_ADDR_VAR 0 7
17649: PUSH
17650: LD_REAL  9.04761900000000E-0003
17653: ST_TO_ADDR
// if GetTech ( Tech_Sib1 , 3 ) = state_researched then
17654: LD_INT 54
17656: PPUSH
17657: LD_INT 3
17659: PPUSH
17660: CALL_OW 321
17664: PUSH
17665: LD_INT 2
17667: EQUAL
17668: IFFALSE 17681
// sib_val = 0.00347619 else
17670: LD_ADDR_VAR 0 8
17674: PUSH
17675: LD_REAL  3.47619000000000E-0003
17678: ST_TO_ADDR
17679: GO 17690
// sib_val = 0.00247619 ;
17681: LD_ADDR_VAR 0 8
17685: PUSH
17686: LD_REAL  2.47619000000000E-0003
17689: ST_TO_ADDR
// case captured_building of ai_depot [ 1 ] :
17690: LD_VAR 0 1
17694: PUSH
17695: LD_EXP 39
17699: PUSH
17700: LD_INT 1
17702: ARRAY
17703: DOUBLE
17704: EQUAL
17705: IFTRUE 17709
17707: GO 17785
17709: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 450 ) ;
17710: LD_VAR 0 1
17714: PPUSH
17715: CALL_OW 274
17719: PPUSH
17720: LD_INT 1
17722: PPUSH
17723: LD_INT 450
17725: PPUSH
17726: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , tick * oil_val * 0.2 ) ;
17730: LD_VAR 0 1
17734: PPUSH
17735: CALL_OW 274
17739: PPUSH
17740: LD_INT 2
17742: PPUSH
17743: LD_OWVAR 1
17747: PUSH
17748: LD_VAR 0 7
17752: MUL
17753: PUSH
17754: LD_REAL  2.00000000000000E-0001
17757: MUL
17758: PPUSH
17759: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 25 ) ;
17763: LD_VAR 0 1
17767: PPUSH
17768: CALL_OW 274
17772: PPUSH
17773: LD_INT 3
17775: PPUSH
17776: LD_INT 25
17778: PPUSH
17779: CALL_OW 277
// end ; ai_depot [ 2 ] :
17783: GO 18346
17785: LD_EXP 39
17789: PUSH
17790: LD_INT 2
17792: ARRAY
17793: DOUBLE
17794: EQUAL
17795: IFTRUE 17799
17797: GO 17870
17799: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 550 ) ;
17800: LD_VAR 0 1
17804: PPUSH
17805: CALL_OW 274
17809: PPUSH
17810: LD_INT 1
17812: PPUSH
17813: LD_INT 550
17815: PPUSH
17816: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , tick * oil_val ) ;
17820: LD_VAR 0 1
17824: PPUSH
17825: CALL_OW 274
17829: PPUSH
17830: LD_INT 2
17832: PPUSH
17833: LD_OWVAR 1
17837: PUSH
17838: LD_VAR 0 7
17842: MUL
17843: PPUSH
17844: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 25 ) ;
17848: LD_VAR 0 1
17852: PPUSH
17853: CALL_OW 274
17857: PPUSH
17858: LD_INT 3
17860: PPUSH
17861: LD_INT 25
17863: PPUSH
17864: CALL_OW 277
// end ; ai_depot [ 3 ] :
17868: GO 18346
17870: LD_EXP 39
17874: PUSH
17875: LD_INT 3
17877: ARRAY
17878: DOUBLE
17879: EQUAL
17880: IFTRUE 17884
17882: GO 17947
17884: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 150 ) ;
17885: LD_VAR 0 1
17889: PPUSH
17890: CALL_OW 274
17894: PPUSH
17895: LD_INT 1
17897: PPUSH
17898: LD_INT 150
17900: PPUSH
17901: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
17905: LD_VAR 0 1
17909: PPUSH
17910: CALL_OW 274
17914: PPUSH
17915: LD_INT 2
17917: PPUSH
17918: LD_INT 0
17920: PPUSH
17921: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 50 ) ;
17925: LD_VAR 0 1
17929: PPUSH
17930: CALL_OW 274
17934: PPUSH
17935: LD_INT 3
17937: PPUSH
17938: LD_INT 50
17940: PPUSH
17941: CALL_OW 277
// end ; ai_depot [ 4 ] :
17945: GO 18346
17947: LD_EXP 39
17951: PUSH
17952: LD_INT 4
17954: ARRAY
17955: DOUBLE
17956: EQUAL
17957: IFTRUE 17961
17959: GO 18024
17961: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 150 ) ;
17962: LD_VAR 0 1
17966: PPUSH
17967: CALL_OW 274
17971: PPUSH
17972: LD_INT 1
17974: PPUSH
17975: LD_INT 150
17977: PPUSH
17978: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
17982: LD_VAR 0 1
17986: PPUSH
17987: CALL_OW 274
17991: PPUSH
17992: LD_INT 2
17994: PPUSH
17995: LD_INT 0
17997: PPUSH
17998: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 50 ) ;
18002: LD_VAR 0 1
18006: PPUSH
18007: CALL_OW 274
18011: PPUSH
18012: LD_INT 3
18014: PPUSH
18015: LD_INT 50
18017: PPUSH
18018: CALL_OW 277
// end ; ai_depot [ 5 ] :
18022: GO 18346
18024: LD_EXP 39
18028: PUSH
18029: LD_INT 5
18031: ARRAY
18032: DOUBLE
18033: EQUAL
18034: IFTRUE 18038
18036: GO 18101
18038: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 150 ) ;
18039: LD_VAR 0 1
18043: PPUSH
18044: CALL_OW 274
18048: PPUSH
18049: LD_INT 1
18051: PPUSH
18052: LD_INT 150
18054: PPUSH
18055: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
18059: LD_VAR 0 1
18063: PPUSH
18064: CALL_OW 274
18068: PPUSH
18069: LD_INT 2
18071: PPUSH
18072: LD_INT 0
18074: PPUSH
18075: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 0 ) ;
18079: LD_VAR 0 1
18083: PPUSH
18084: CALL_OW 274
18088: PPUSH
18089: LD_INT 3
18091: PPUSH
18092: LD_INT 0
18094: PPUSH
18095: CALL_OW 277
// end ; ai_depot [ 6 ] :
18099: GO 18346
18101: LD_EXP 39
18105: PUSH
18106: LD_INT 6
18108: ARRAY
18109: DOUBLE
18110: EQUAL
18111: IFTRUE 18115
18113: GO 18178
18115: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 200 ) ;
18116: LD_VAR 0 1
18120: PPUSH
18121: CALL_OW 274
18125: PPUSH
18126: LD_INT 1
18128: PPUSH
18129: LD_INT 200
18131: PPUSH
18132: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
18136: LD_VAR 0 1
18140: PPUSH
18141: CALL_OW 274
18145: PPUSH
18146: LD_INT 2
18148: PPUSH
18149: LD_INT 0
18151: PPUSH
18152: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 0 ) ;
18156: LD_VAR 0 1
18160: PPUSH
18161: CALL_OW 274
18165: PPUSH
18166: LD_INT 3
18168: PPUSH
18169: LD_INT 0
18171: PPUSH
18172: CALL_OW 277
// end ; ai_depot [ 7 ] :
18176: GO 18346
18178: LD_EXP 39
18182: PUSH
18183: LD_INT 7
18185: ARRAY
18186: DOUBLE
18187: EQUAL
18188: IFTRUE 18192
18190: GO 18255
18192: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 200 ) ;
18193: LD_VAR 0 1
18197: PPUSH
18198: CALL_OW 274
18202: PPUSH
18203: LD_INT 1
18205: PPUSH
18206: LD_INT 200
18208: PPUSH
18209: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
18213: LD_VAR 0 1
18217: PPUSH
18218: CALL_OW 274
18222: PPUSH
18223: LD_INT 2
18225: PPUSH
18226: LD_INT 0
18228: PPUSH
18229: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , 0 ) ;
18233: LD_VAR 0 1
18237: PPUSH
18238: CALL_OW 274
18242: PPUSH
18243: LD_INT 3
18245: PPUSH
18246: LD_INT 0
18248: PPUSH
18249: CALL_OW 277
// end ; ai_depot [ 8 ] :
18253: GO 18346
18255: LD_EXP 39
18259: PUSH
18260: LD_INT 8
18262: ARRAY
18263: DOUBLE
18264: EQUAL
18265: IFTRUE 18269
18267: GO 18345
18269: POP
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , 50 ) ;
18270: LD_VAR 0 1
18274: PPUSH
18275: CALL_OW 274
18279: PPUSH
18280: LD_INT 1
18282: PPUSH
18283: LD_INT 50
18285: PPUSH
18286: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , 0 ) ;
18290: LD_VAR 0 1
18294: PPUSH
18295: CALL_OW 274
18299: PPUSH
18300: LD_INT 2
18302: PPUSH
18303: LD_INT 0
18305: PPUSH
18306: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , tick * sib_val * 0.3 ) ;
18310: LD_VAR 0 1
18314: PPUSH
18315: CALL_OW 274
18319: PPUSH
18320: LD_INT 3
18322: PPUSH
18323: LD_OWVAR 1
18327: PUSH
18328: LD_VAR 0 8
18332: MUL
18333: PUSH
18334: LD_REAL  3.00000000000000E-0001
18337: MUL
18338: PPUSH
18339: CALL_OW 277
// end ; end ;
18343: GO 18346
18345: POP
// end ; base = FindBase ( captured_building ) ;
18346: LD_ADDR_VAR 0 5
18350: PUSH
18351: LD_VAR 0 1
18355: PPUSH
18356: CALL 4246 0 1
18360: ST_TO_ADDR
// if base = 0 then
18361: LD_VAR 0 5
18365: PUSH
18366: LD_INT 0
18368: EQUAL
18369: IFFALSE 18373
// exit ;
18371: GO 18604
// if building_former_side = GetBaseSide ( base ) then
18373: LD_VAR 0 2
18377: PUSH
18378: LD_VAR 0 5
18382: PPUSH
18383: CALL 3818 0 1
18387: EQUAL
18388: IFFALSE 18471
// begin if captured_building in ai_all_buildings [ base ] then
18390: LD_VAR 0 1
18394: PUSH
18395: LD_EXP 66
18399: PUSH
18400: LD_VAR 0 5
18404: ARRAY
18405: IN
18406: IFFALSE 18469
// begin RemoveBuildingFromVariables ( base , captured_building ) ;
18408: LD_VAR 0 5
18412: PPUSH
18413: LD_VAR 0 1
18417: PPUSH
18418: CALL 2115 0 2
// temp_list = ai_captured_buildings [ base ] ^ captured_building ;
18422: LD_ADDR_VAR 0 4
18426: PUSH
18427: LD_EXP 52
18431: PUSH
18432: LD_VAR 0 5
18436: ARRAY
18437: PUSH
18438: LD_VAR 0 1
18442: ADD
18443: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
18444: LD_ADDR_EXP 52
18448: PUSH
18449: LD_EXP 52
18453: PPUSH
18454: LD_VAR 0 5
18458: PPUSH
18459: LD_VAR 0 4
18463: PPUSH
18464: CALL_OW 1
18468: ST_TO_ADDR
// end ; end else
18469: GO 18604
// begin if GetSide ( captured_building ) = GetBaseSide ( base ) then
18471: LD_VAR 0 1
18475: PPUSH
18476: CALL_OW 255
18480: PUSH
18481: LD_VAR 0 5
18485: PPUSH
18486: CALL 3818 0 1
18490: EQUAL
18491: IFFALSE 18604
// begin temp_list = ai_all_buildings [ base ] ^ captured_building ;
18493: LD_ADDR_VAR 0 4
18497: PUSH
18498: LD_EXP 66
18502: PUSH
18503: LD_VAR 0 5
18507: ARRAY
18508: PUSH
18509: LD_VAR 0 1
18513: ADD
18514: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
18515: LD_ADDR_EXP 66
18519: PUSH
18520: LD_EXP 66
18524: PPUSH
18525: LD_VAR 0 5
18529: PPUSH
18530: LD_VAR 0 4
18534: PPUSH
18535: CALL_OW 1
18539: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , captured_building , true ) ;
18540: LD_VAR 0 5
18544: PPUSH
18545: LD_VAR 0 1
18549: PPUSH
18550: LD_INT 1
18552: PPUSH
18553: CALL 49912 0 3
// temp_list = ai_captured_buildings [ base ] diff captured_building ;
18557: LD_ADDR_VAR 0 4
18561: PUSH
18562: LD_EXP 52
18566: PUSH
18567: LD_VAR 0 5
18571: ARRAY
18572: PUSH
18573: LD_VAR 0 1
18577: DIFF
18578: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
18579: LD_ADDR_EXP 52
18583: PUSH
18584: LD_EXP 52
18588: PPUSH
18589: LD_VAR 0 5
18593: PPUSH
18594: LD_VAR 0 4
18598: PPUSH
18599: CALL_OW 1
18603: ST_TO_ADDR
// end ; end ; end ;
18604: PPOPN 8
18606: END
// export function GetHumansOutOfUnits ( un_list ) ; var i ; begin
18607: LD_INT 0
18609: PPUSH
18610: PPUSH
// result = [ ] ;
18611: LD_ADDR_VAR 0 2
18615: PUSH
18616: EMPTY
18617: ST_TO_ADDR
// for i in un_list do
18618: LD_ADDR_VAR 0 3
18622: PUSH
18623: LD_VAR 0 1
18627: PUSH
18628: FOR_IN
18629: IFFALSE 18705
// case GetType ( IsInUnit ( i ) ) of unit_building :
18631: LD_VAR 0 3
18635: PPUSH
18636: CALL_OW 310
18640: PPUSH
18641: CALL_OW 247
18645: PUSH
18646: LD_INT 3
18648: DOUBLE
18649: EQUAL
18650: IFTRUE 18654
18652: GO 18666
18654: POP
// ComExitBuilding ( i ) ; unit_vehicle :
18655: LD_VAR 0 3
18659: PPUSH
18660: CALL_OW 122
18664: GO 18703
18666: LD_INT 2
18668: DOUBLE
18669: EQUAL
18670: IFTRUE 18674
18672: GO 18686
18674: POP
// ComExitVehicle ( i ) ; else
18675: LD_VAR 0 3
18679: PPUSH
18680: CALL_OW 121
18684: GO 18703
18686: POP
// result = result ^ i ; end ;
18687: LD_ADDR_VAR 0 2
18691: PUSH
18692: LD_VAR 0 2
18696: PUSH
18697: LD_VAR 0 3
18701: ADD
18702: ST_TO_ADDR
18703: GO 18628
18705: POP
18706: POP
// end ;
18707: LD_VAR 0 2
18711: RET
// export function BaseUnderAttack ( base , attack_side ) ; var area , i , val , def_side , temp_list ; begin
18712: LD_INT 0
18714: PPUSH
18715: PPUSH
18716: PPUSH
18717: PPUSH
18718: PPUSH
18719: PPUSH
// result = false ;
18720: LD_ADDR_VAR 0 3
18724: PUSH
18725: LD_INT 0
18727: ST_TO_ADDR
// def_side = GetBaseSide ( base ) ;
18728: LD_ADDR_VAR 0 7
18732: PUSH
18733: LD_VAR 0 1
18737: PPUSH
18738: CALL 3818 0 1
18742: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
18743: LD_ADDR_VAR 0 4
18747: PUSH
18748: LD_VAR 0 1
18752: PPUSH
18753: CALL 3614 0 1
18757: ST_TO_ADDR
// if attack_side = def_side then
18758: LD_VAR 0 2
18762: PUSH
18763: LD_VAR 0 7
18767: EQUAL
18768: IFFALSE 18772
// exit ;
18770: GO 19291
// if attack_side = - 1 then
18772: LD_VAR 0 2
18776: PUSH
18777: LD_INT 1
18779: NEG
18780: EQUAL
18781: IFFALSE 19047
// begin if FilterAllUnits ( [ [ f_enemy , def_side ] , [ f_inarea , area ] ] ) > 0 then
18783: LD_INT 81
18785: PUSH
18786: LD_VAR 0 7
18790: PUSH
18791: EMPTY
18792: LIST
18793: LIST
18794: PUSH
18795: LD_INT 95
18797: PUSH
18798: LD_VAR 0 4
18802: PUSH
18803: EMPTY
18804: LIST
18805: LIST
18806: PUSH
18807: EMPTY
18808: LIST
18809: LIST
18810: PPUSH
18811: CALL_OW 69
18815: PUSH
18816: LD_INT 0
18818: GREATER
18819: IFFALSE 18831
// begin result = true ;
18821: LD_ADDR_VAR 0 3
18825: PUSH
18826: LD_INT 1
18828: ST_TO_ADDR
// exit ;
18829: GO 19291
// end ; val = true ;
18831: LD_ADDR_VAR 0 6
18835: PUSH
18836: LD_INT 1
18838: ST_TO_ADDR
// for i in ai_contact_time [ def_side ] do
18839: LD_ADDR_VAR 0 5
18843: PUSH
18844: LD_EXP 102
18848: PUSH
18849: LD_VAR 0 7
18853: ARRAY
18854: PUSH
18855: FOR_IN
18856: IFFALSE 18880
// if i < 0 0$10 then
18858: LD_VAR 0 5
18862: PUSH
18863: LD_INT 350
18865: LESS
18866: IFFALSE 18878
// begin val = false ;
18868: LD_ADDR_VAR 0 6
18872: PUSH
18873: LD_INT 0
18875: ST_TO_ADDR
// break ;
18876: GO 18880
// end ;
18878: GO 18855
18880: POP
18881: POP
// if ContactTime ( def_side ) >= 0 0$10 and val then
18882: LD_VAR 0 7
18886: PPUSH
18887: CALL_OW 462
18891: PUSH
18892: LD_INT 350
18894: GREATEREQUAL
18895: PUSH
18896: LD_VAR 0 6
18900: AND
18901: IFFALSE 18905
// exit ;
18903: GO 19291
// temp_list = [ ] ;
18905: LD_ADDR_VAR 0 8
18909: PUSH
18910: EMPTY
18911: ST_TO_ADDR
// for i in ( ai_bases diff base ) do
18912: LD_ADDR_VAR 0 5
18916: PUSH
18917: LD_EXP 29
18921: PUSH
18922: LD_VAR 0 1
18926: DIFF
18927: PUSH
18928: FOR_IN
18929: IFFALSE 18975
// temp_list = Insert ( temp_list , 1 , [ f_not , [ f_inarea , GetBaseArea ( i ) ] ] ) ;
18931: LD_ADDR_VAR 0 8
18935: PUSH
18936: LD_VAR 0 8
18940: PPUSH
18941: LD_INT 1
18943: PPUSH
18944: LD_INT 3
18946: PUSH
18947: LD_INT 95
18949: PUSH
18950: LD_VAR 0 5
18954: PPUSH
18955: CALL 3614 0 1
18959: PUSH
18960: EMPTY
18961: LIST
18962: LIST
18963: PUSH
18964: EMPTY
18965: LIST
18966: LIST
18967: PPUSH
18968: CALL_OW 2
18972: ST_TO_ADDR
18973: GO 18928
18975: POP
18976: POP
// temp_list = FilterAllUnits ( [ [ f_enemy , def_side ] , [ f_not , [ f_type , unit_building ] ] ] ^ temp_list ) ;
18977: LD_ADDR_VAR 0 8
18981: PUSH
18982: LD_INT 81
18984: PUSH
18985: LD_VAR 0 7
18989: PUSH
18990: EMPTY
18991: LIST
18992: LIST
18993: PUSH
18994: LD_INT 3
18996: PUSH
18997: LD_INT 21
18999: PUSH
19000: LD_INT 3
19002: PUSH
19003: EMPTY
19004: LIST
19005: LIST
19006: PUSH
19007: EMPTY
19008: LIST
19009: LIST
19010: PUSH
19011: EMPTY
19012: LIST
19013: LIST
19014: PUSH
19015: LD_VAR 0 8
19019: ADD
19020: PPUSH
19021: CALL_OW 69
19025: ST_TO_ADDR
// if not AnyNearBaseArea ( temp_list , base ) then
19026: LD_VAR 0 8
19030: PPUSH
19031: LD_VAR 0 1
19035: PPUSH
19036: CALL 19367 0 2
19040: NOT
19041: IFFALSE 19045
// exit ;
19043: GO 19291
// end else
19045: GO 19283
// begin if FilterAllUnits ( [ [ f_side , attack_side ] , [ f_inarea , area ] ] ) > 0 then
19047: LD_INT 22
19049: PUSH
19050: LD_VAR 0 2
19054: PUSH
19055: EMPTY
19056: LIST
19057: LIST
19058: PUSH
19059: LD_INT 95
19061: PUSH
19062: LD_VAR 0 4
19066: PUSH
19067: EMPTY
19068: LIST
19069: LIST
19070: PUSH
19071: EMPTY
19072: LIST
19073: LIST
19074: PPUSH
19075: CALL_OW 69
19079: PUSH
19080: LD_INT 0
19082: GREATER
19083: IFFALSE 19095
// begin result = true ;
19085: LD_ADDR_VAR 0 3
19089: PUSH
19090: LD_INT 1
19092: ST_TO_ADDR
// exit ;
19093: GO 19291
// end ; if ContactTime ( [ def_side , attack_side ] ) >= 0 0$10 and ai_contact_time [ def_side ] [ attack_side ] >= 0 0$10 then
19095: LD_VAR 0 7
19099: PUSH
19100: LD_VAR 0 2
19104: PUSH
19105: EMPTY
19106: LIST
19107: LIST
19108: PPUSH
19109: CALL_OW 462
19113: PUSH
19114: LD_INT 350
19116: GREATEREQUAL
19117: PUSH
19118: LD_EXP 102
19122: PUSH
19123: LD_VAR 0 7
19127: ARRAY
19128: PUSH
19129: LD_VAR 0 2
19133: ARRAY
19134: PUSH
19135: LD_INT 350
19137: GREATEREQUAL
19138: AND
19139: IFFALSE 19143
// exit ;
19141: GO 19291
// temp_list = [ ] ;
19143: LD_ADDR_VAR 0 8
19147: PUSH
19148: EMPTY
19149: ST_TO_ADDR
// for i in ( ai_bases diff base ) do
19150: LD_ADDR_VAR 0 5
19154: PUSH
19155: LD_EXP 29
19159: PUSH
19160: LD_VAR 0 1
19164: DIFF
19165: PUSH
19166: FOR_IN
19167: IFFALSE 19213
// temp_list = Insert ( temp_list , 1 , [ f_not , [ f_inarea , GetBaseArea ( i ) ] ] ) ;
19169: LD_ADDR_VAR 0 8
19173: PUSH
19174: LD_VAR 0 8
19178: PPUSH
19179: LD_INT 1
19181: PPUSH
19182: LD_INT 3
19184: PUSH
19185: LD_INT 95
19187: PUSH
19188: LD_VAR 0 5
19192: PPUSH
19193: CALL 3614 0 1
19197: PUSH
19198: EMPTY
19199: LIST
19200: LIST
19201: PUSH
19202: EMPTY
19203: LIST
19204: LIST
19205: PPUSH
19206: CALL_OW 2
19210: ST_TO_ADDR
19211: GO 19166
19213: POP
19214: POP
// temp_list = FilterAllUnits ( [ [ f_side , attack_side ] , [ f_not , [ f_type , unit_building ] ] ] ^ temp_list ) ;
19215: LD_ADDR_VAR 0 8
19219: PUSH
19220: LD_INT 22
19222: PUSH
19223: LD_VAR 0 2
19227: PUSH
19228: EMPTY
19229: LIST
19230: LIST
19231: PUSH
19232: LD_INT 3
19234: PUSH
19235: LD_INT 21
19237: PUSH
19238: LD_INT 3
19240: PUSH
19241: EMPTY
19242: LIST
19243: LIST
19244: PUSH
19245: EMPTY
19246: LIST
19247: LIST
19248: PUSH
19249: EMPTY
19250: LIST
19251: LIST
19252: PUSH
19253: LD_VAR 0 8
19257: ADD
19258: PPUSH
19259: CALL_OW 69
19263: ST_TO_ADDR
// if not AnyNearBaseArea ( temp_list , base ) then
19264: LD_VAR 0 8
19268: PPUSH
19269: LD_VAR 0 1
19273: PPUSH
19274: CALL 19367 0 2
19278: NOT
19279: IFFALSE 19283
// exit ;
19281: GO 19291
// end ; result = true ;
19283: LD_ADDR_VAR 0 3
19287: PUSH
19288: LD_INT 1
19290: ST_TO_ADDR
// end ;
19291: LD_VAR 0 3
19295: RET
// export function ListFilterNearArea ( list , area ) ; var i ; begin
19296: LD_INT 0
19298: PPUSH
19299: PPUSH
// result = [ ] ;
19300: LD_ADDR_VAR 0 3
19304: PUSH
19305: EMPTY
19306: ST_TO_ADDR
// for i in list do
19307: LD_ADDR_VAR 0 4
19311: PUSH
19312: LD_VAR 0 1
19316: PUSH
19317: FOR_IN
19318: IFFALSE 19360
// if GetDistUnitArea ( i , area ) <= ai_near_base_dist then
19320: LD_VAR 0 4
19324: PPUSH
19325: LD_VAR 0 2
19329: PPUSH
19330: CALL_OW 299
19334: PUSH
19335: LD_EXP 72
19339: LESSEQUAL
19340: IFFALSE 19358
// result = result ^ i ;
19342: LD_ADDR_VAR 0 3
19346: PUSH
19347: LD_VAR 0 3
19351: PUSH
19352: LD_VAR 0 4
19356: ADD
19357: ST_TO_ADDR
19358: GO 19317
19360: POP
19361: POP
// end ;
19362: LD_VAR 0 3
19366: RET
// function AnyNearBaseArea ( list , base ) ; var i , area ; begin
19367: LD_INT 0
19369: PPUSH
19370: PPUSH
19371: PPUSH
// result = false ;
19372: LD_ADDR_VAR 0 3
19376: PUSH
19377: LD_INT 0
19379: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
19380: LD_ADDR_VAR 0 5
19384: PUSH
19385: LD_VAR 0 2
19389: PPUSH
19390: CALL 3614 0 1
19394: ST_TO_ADDR
// for i in list do
19395: LD_ADDR_VAR 0 4
19399: PUSH
19400: LD_VAR 0 1
19404: PUSH
19405: FOR_IN
19406: IFFALSE 19442
// if GetDistUnitArea ( i , area ) <= ai_near_base_dist then
19408: LD_VAR 0 4
19412: PPUSH
19413: LD_VAR 0 5
19417: PPUSH
19418: CALL_OW 299
19422: PUSH
19423: LD_EXP 72
19427: LESSEQUAL
19428: IFFALSE 19440
// begin result = true ;
19430: LD_ADDR_VAR 0 3
19434: PUSH
19435: LD_INT 1
19437: ST_TO_ADDR
// break ;
19438: GO 19442
// end ;
19440: GO 19405
19442: POP
19443: POP
// end ;
19444: LD_VAR 0 3
19448: RET
// on Command ( com ) do var i , j , temp_list , temp_val , temp , hex_list , un , k , target_hex ;
19449: LD_INT 0
19451: PPUSH
19452: PPUSH
19453: PPUSH
19454: PPUSH
19455: PPUSH
19456: PPUSH
19457: PPUSH
19458: PPUSH
19459: PPUSH
// begin if com = 137 then
19460: LD_VAR 0 1
19464: PUSH
19465: LD_INT 137
19467: EQUAL
19468: IFFALSE 20098
// begin for i in filterallunits ( [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] ) do
19470: LD_ADDR_VAR 0 2
19474: PUSH
19475: LD_INT 2
19477: PUSH
19478: LD_INT 22
19480: PUSH
19481: LD_INT 2
19483: PUSH
19484: EMPTY
19485: LIST
19486: LIST
19487: PUSH
19488: LD_INT 22
19490: PUSH
19491: LD_INT 5
19493: PUSH
19494: EMPTY
19495: LIST
19496: LIST
19497: PUSH
19498: EMPTY
19499: LIST
19500: LIST
19501: LIST
19502: PPUSH
19503: CALL_OW 69
19507: PUSH
19508: FOR_IN
19509: IFFALSE 19620
// if hastask ( i ) > 0 then
19511: LD_VAR 0 2
19515: PPUSH
19516: CALL_OW 314
19520: PUSH
19521: LD_INT 0
19523: GREATER
19524: IFFALSE 19618
// begin temp_val = 0 ;
19526: LD_ADDR_VAR 0 5
19530: PUSH
19531: LD_INT 0
19533: ST_TO_ADDR
// for j in Gettasklist ( i ) do
19534: LD_ADDR_VAR 0 3
19538: PUSH
19539: LD_VAR 0 2
19543: PPUSH
19544: CALL_OW 437
19548: PUSH
19549: FOR_IN
19550: IFFALSE 19590
// if j [ 1 ] = q and j [ 4 ] = ruteleprt then
19552: LD_VAR 0 3
19556: PUSH
19557: LD_INT 1
19559: ARRAY
19560: PUSH
19561: LD_STRING q
19563: EQUAL
19564: PUSH
19565: LD_VAR 0 3
19569: PUSH
19570: LD_INT 4
19572: ARRAY
19573: PUSH
19574: LD_INT 10
19576: EQUAL
19577: AND
19578: IFFALSE 19588
// temp_val = 1 ;
19580: LD_ADDR_VAR 0 5
19584: PUSH
19585: LD_INT 1
19587: ST_TO_ADDR
19588: GO 19549
19590: POP
19591: POP
// if temp_val = 1 then
19592: LD_VAR 0 5
19596: PUSH
19597: LD_INT 1
19599: EQUAL
19600: IFFALSE 19618
// begin entering_teleport_unit = entering_teleport_unit ^ i ;
19602: LD_ADDR_EXP 167
19606: PUSH
19607: LD_EXP 167
19611: PUSH
19612: LD_VAR 0 2
19616: ADD
19617: ST_TO_ADDR
// end ; end ;
19618: GO 19508
19620: POP
19621: POP
// if entering_teleport_unit > 0 and teleport_status = 1 then
19622: LD_EXP 167
19626: PUSH
19627: LD_INT 0
19629: GREATER
19630: PUSH
19631: LD_EXP 112
19635: PUSH
19636: LD_INT 1
19638: EQUAL
19639: AND
19640: IFFALSE 19790
// if GetTech ( Tech_Opto3 , 2 ) = state_researched then
19642: LD_INT 62
19644: PPUSH
19645: LD_INT 2
19647: PPUSH
19648: CALL_OW 321
19652: PUSH
19653: LD_INT 2
19655: EQUAL
19656: IFFALSE 19760
// begin temp = 0 ;
19658: LD_ADDR_VAR 0 6
19662: PUSH
19663: LD_INT 0
19665: ST_TO_ADDR
// for i in entering_teleport_unit do
19666: LD_ADDR_VAR 0 2
19670: PUSH
19671: LD_EXP 167
19675: PUSH
19676: FOR_IN
19677: IFFALSE 19731
// if GetWeapon ( i ) = ar_radar and GetControl ( i ) = control_remote and Teleportation_test = 0 then
19679: LD_VAR 0 2
19683: PPUSH
19684: CALL_OW 264
19688: PUSH
19689: LD_INT 30
19691: EQUAL
19692: PUSH
19693: LD_VAR 0 2
19697: PPUSH
19698: CALL_OW 263
19702: PUSH
19703: LD_INT 2
19705: EQUAL
19706: AND
19707: PUSH
19708: LD_EXP 113
19712: PUSH
19713: LD_INT 0
19715: EQUAL
19716: AND
19717: IFFALSE 19729
// temp = i ;
19719: LD_ADDR_VAR 0 6
19723: PUSH
19724: LD_VAR 0 2
19728: ST_TO_ADDR
19729: GO 19676
19731: POP
19732: POP
// comstop ( entering_teleport_unit diff temp ) ;
19733: LD_EXP 167
19737: PUSH
19738: LD_VAR 0 6
19742: DIFF
19743: PPUSH
19744: CALL_OW 141
// entering_teleport_unit = temp ;
19748: LD_ADDR_EXP 167
19752: PUSH
19753: LD_VAR 0 6
19757: ST_TO_ADDR
// end else
19758: GO 19790
// begin async ;
19760: ASYNC
// Say ( Heike , Tr2_He1 ) ;
19761: LD_EXP 12
19765: PPUSH
19766: LD_STRING Tr2_He1
19768: PPUSH
19769: CALL_OW 88
// sync ;
19773: SYNC
// Comstop ( entering_teleport_unit ) ;
19774: LD_EXP 167
19778: PPUSH
19779: CALL_OW 141
// entering_teleport_unit = [ ] ;
19783: LD_ADDR_EXP 167
19787: PUSH
19788: EMPTY
19789: ST_TO_ADDR
// end ; if entering_teleport_unit > 0 and teleport_status = 2 then
19790: LD_EXP 167
19794: PUSH
19795: LD_INT 0
19797: GREATER
19798: PUSH
19799: LD_EXP 112
19803: PUSH
19804: LD_INT 2
19806: EQUAL
19807: AND
19808: IFFALSE 19840
// begin async ;
19810: ASYNC
// Say ( Heike , Tr3_He1 ) ;
19811: LD_EXP 12
19815: PPUSH
19816: LD_STRING Tr3_He1
19818: PPUSH
19819: CALL_OW 88
// sync ;
19823: SYNC
// Comstop ( entering_teleport_unit ) ;
19824: LD_EXP 167
19828: PPUSH
19829: CALL_OW 141
// entering_teleport_unit = [ ] ;
19833: LD_ADDR_EXP 167
19837: PUSH
19838: EMPTY
19839: ST_TO_ADDR
// end ; if entering_teleport_unit > 0 and teleport_status > 2 then
19840: LD_EXP 167
19844: PUSH
19845: LD_INT 0
19847: GREATER
19848: PUSH
19849: LD_EXP 112
19853: PUSH
19854: LD_INT 2
19856: GREATER
19857: AND
19858: IFFALSE 19876
// begin Comstop ( entering_teleport_unit ) ;
19860: LD_EXP 167
19864: PPUSH
19865: CALL_OW 141
// entering_teleport_unit = [ ] ;
19869: LD_ADDR_EXP 167
19873: PUSH
19874: EMPTY
19875: ST_TO_ADDR
// end ; temp_val = 0 ;
19876: LD_ADDR_VAR 0 5
19880: PUSH
19881: LD_INT 0
19883: ST_TO_ADDR
// for i in filterallunits ( [ f_side , 2 ] ) do
19884: LD_ADDR_VAR 0 2
19888: PUSH
19889: LD_INT 22
19891: PUSH
19892: LD_INT 2
19894: PUSH
19895: EMPTY
19896: LIST
19897: LIST
19898: PPUSH
19899: CALL_OW 69
19903: PUSH
19904: FOR_IN
19905: IFFALSE 20072
// if hastask ( i ) > 0 then
19907: LD_VAR 0 2
19911: PPUSH
19912: CALL_OW 314
19916: PUSH
19917: LD_INT 0
19919: GREATER
19920: IFFALSE 20070
// begin for j in Gettasklist ( i ) do
19922: LD_ADDR_VAR 0 3
19926: PUSH
19927: LD_VAR 0 2
19931: PPUSH
19932: CALL_OW 437
19936: PUSH
19937: FOR_IN
19938: IFFALSE 20049
// if j [ 1 ] = q then
19940: LD_VAR 0 3
19944: PUSH
19945: LD_INT 1
19947: ARRAY
19948: PUSH
19949: LD_STRING q
19951: EQUAL
19952: IFFALSE 20047
// begin if j [ 4 ] = Teleport_centre then
19954: LD_VAR 0 3
19958: PUSH
19959: LD_INT 4
19961: ARRAY
19962: PUSH
19963: LD_EXP 125
19967: EQUAL
19968: IFFALSE 19990
// if not IsOk ( Teleport_bottomRight ) then
19970: LD_EXP 124
19974: PPUSH
19975: CALL_OW 302
19979: NOT
19980: IFFALSE 19990
// temp_val = 1 ;
19982: LD_ADDR_VAR 0 5
19986: PUSH
19987: LD_INT 1
19989: ST_TO_ADDR
// if j [ 4 ] = Teleport_right then
19990: LD_VAR 0 3
19994: PUSH
19995: LD_INT 4
19997: ARRAY
19998: PUSH
19999: LD_EXP 126
20003: EQUAL
20004: IFFALSE 20047
// if not IsOk ( Teleport_bottomLeft ) and not GetChassis ( isinunit ( i ) ) = ar_hovercraft then
20006: LD_EXP 123
20010: PPUSH
20011: CALL_OW 302
20015: NOT
20016: PUSH
20017: LD_VAR 0 2
20021: PPUSH
20022: CALL_OW 310
20026: PPUSH
20027: CALL_OW 265
20031: PUSH
20032: LD_INT 11
20034: EQUAL
20035: NOT
20036: AND
20037: IFFALSE 20047
// temp_val = 1 ;
20039: LD_ADDR_VAR 0 5
20043: PUSH
20044: LD_INT 1
20046: ST_TO_ADDR
// end ;
20047: GO 19937
20049: POP
20050: POP
// if temp_val = 1 then
20051: LD_VAR 0 5
20055: PUSH
20056: LD_INT 1
20058: EQUAL
20059: IFFALSE 20070
// comstop ( i ) ;
20061: LD_VAR 0 2
20065: PPUSH
20066: CALL_OW 141
// end ;
20070: GO 19904
20072: POP
20073: POP
// if temp_val = 1 then
20074: LD_VAR 0 5
20078: PUSH
20079: LD_INT 1
20081: EQUAL
20082: IFFALSE 20098
// begin async ;
20084: ASYNC
// Say ( heike , tel_attack1_He ) ;
20085: LD_EXP 12
20089: PPUSH
20090: LD_STRING tel_attack1_He
20092: PPUSH
20093: CALL_OW 88
// sync ;
20097: SYNC
// end ; end ; if com = 65 then
20098: LD_VAR 0 1
20102: PUSH
20103: LD_INT 65
20105: EQUAL
20106: IFFALSE 20921
// begin for i in filterallunits ( [ f_side , 2 ] ) do
20108: LD_ADDR_VAR 0 2
20112: PUSH
20113: LD_INT 22
20115: PUSH
20116: LD_INT 2
20118: PUSH
20119: EMPTY
20120: LIST
20121: LIST
20122: PPUSH
20123: CALL_OW 69
20127: PUSH
20128: FOR_IN
20129: IFFALSE 20749
// if hastask ( i ) > 0 then
20131: LD_VAR 0 2
20135: PPUSH
20136: CALL_OW 314
20140: PUSH
20141: LD_INT 0
20143: GREATER
20144: IFFALSE 20747
// begin temp_val = 0 ;
20146: LD_ADDR_VAR 0 5
20150: PUSH
20151: LD_INT 0
20153: ST_TO_ADDR
// for j in Gettasklist ( i ) do
20154: LD_ADDR_VAR 0 3
20158: PUSH
20159: LD_VAR 0 2
20163: PPUSH
20164: CALL_OW 437
20168: PUSH
20169: FOR_IN
20170: IFFALSE 20668
// if j [ 1 ] = A then
20172: LD_VAR 0 3
20176: PUSH
20177: LD_INT 1
20179: ARRAY
20180: PUSH
20181: LD_STRING A
20183: EQUAL
20184: IFFALSE 20666
// begin if j [ 4 ] = 10 and Teleport_status > 0 then
20186: LD_VAR 0 3
20190: PUSH
20191: LD_INT 4
20193: ARRAY
20194: PUSH
20195: LD_INT 10
20197: EQUAL
20198: PUSH
20199: LD_EXP 112
20203: PUSH
20204: LD_INT 0
20206: GREATER
20207: AND
20208: IFFALSE 20218
// temp_val = 1 ;
20210: LD_ADDR_VAR 0 5
20214: PUSH
20215: LD_INT 1
20217: ST_TO_ADDR
// if j [ 4 ] in [ Hexinfo ( 81 , 54 ) , Hexinfo ( 117 , 71 ) , Hexinfo ( 120 , 75 ) , Hexinfo ( 101 , 70 ) , Hexinfo ( 101 , 67 ) , Hexinfo ( 97 , 66 ) , Hexinfo ( 78 , 67 ) , Hexinfo ( 75 , 66 ) , Hexinfo ( 77 , 70 ) , Hexinfo ( 104 , 65 ) ] and minesready then
20218: LD_VAR 0 3
20222: PUSH
20223: LD_INT 4
20225: ARRAY
20226: PUSH
20227: LD_INT 81
20229: PPUSH
20230: LD_INT 54
20232: PPUSH
20233: CALL_OW 428
20237: PUSH
20238: LD_INT 117
20240: PPUSH
20241: LD_INT 71
20243: PPUSH
20244: CALL_OW 428
20248: PUSH
20249: LD_INT 120
20251: PPUSH
20252: LD_INT 75
20254: PPUSH
20255: CALL_OW 428
20259: PUSH
20260: LD_INT 101
20262: PPUSH
20263: LD_INT 70
20265: PPUSH
20266: CALL_OW 428
20270: PUSH
20271: LD_INT 101
20273: PPUSH
20274: LD_INT 67
20276: PPUSH
20277: CALL_OW 428
20281: PUSH
20282: LD_INT 97
20284: PPUSH
20285: LD_INT 66
20287: PPUSH
20288: CALL_OW 428
20292: PUSH
20293: LD_INT 78
20295: PPUSH
20296: LD_INT 67
20298: PPUSH
20299: CALL_OW 428
20303: PUSH
20304: LD_INT 75
20306: PPUSH
20307: LD_INT 66
20309: PPUSH
20310: CALL_OW 428
20314: PUSH
20315: LD_INT 77
20317: PPUSH
20318: LD_INT 70
20320: PPUSH
20321: CALL_OW 428
20325: PUSH
20326: LD_INT 104
20328: PPUSH
20329: LD_INT 65
20331: PPUSH
20332: CALL_OW 428
20336: PUSH
20337: EMPTY
20338: LIST
20339: LIST
20340: LIST
20341: LIST
20342: LIST
20343: LIST
20344: LIST
20345: LIST
20346: LIST
20347: LIST
20348: IN
20349: PUSH
20350: LD_EXP 176
20354: AND
20355: IFFALSE 20365
// temp_val = 2 ;
20357: LD_ADDR_VAR 0 5
20361: PUSH
20362: LD_INT 2
20364: ST_TO_ADDR
// if j [ 4 ] = Snake then
20365: LD_VAR 0 3
20369: PUSH
20370: LD_INT 4
20372: ARRAY
20373: PUSH
20374: LD_EXP 26
20378: EQUAL
20379: IFFALSE 20389
// temp_val = 3 ;
20381: LD_ADDR_VAR 0 5
20385: PUSH
20386: LD_INT 3
20388: ST_TO_ADDR
// if j [ 4 ] = Teleport_BottomLeft then
20389: LD_VAR 0 3
20393: PUSH
20394: LD_INT 4
20396: ARRAY
20397: PUSH
20398: LD_EXP 123
20402: EQUAL
20403: IFFALSE 20535
// begin temp_list = [ ] ;
20405: LD_ADDR_VAR 0 4
20409: PUSH
20410: EMPTY
20411: ST_TO_ADDR
// for k in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
20412: LD_ADDR_VAR 0 9
20416: PUSH
20417: LD_INT 22
20419: PUSH
20420: LD_INT 2
20422: PUSH
20423: EMPTY
20424: LIST
20425: LIST
20426: PUSH
20427: LD_INT 21
20429: PUSH
20430: LD_INT 1
20432: PUSH
20433: EMPTY
20434: LIST
20435: LIST
20436: PUSH
20437: EMPTY
20438: LIST
20439: LIST
20440: PPUSH
20441: CALL_OW 69
20445: PUSH
20446: FOR_IN
20447: IFFALSE 20500
// if isinarea ( k , left_teleport_area ) or isinarea ( isinunit ( k ) , left_teleport_area ) then
20449: LD_VAR 0 9
20453: PPUSH
20454: LD_INT 33
20456: PPUSH
20457: CALL_OW 308
20461: PUSH
20462: LD_VAR 0 9
20466: PPUSH
20467: CALL_OW 310
20471: PPUSH
20472: LD_INT 33
20474: PPUSH
20475: CALL_OW 308
20479: OR
20480: IFFALSE 20498
// temp_list = temp_list ^ k ;
20482: LD_ADDR_VAR 0 4
20486: PUSH
20487: LD_VAR 0 4
20491: PUSH
20492: LD_VAR 0 9
20496: ADD
20497: ST_TO_ADDR
20498: GO 20446
20500: POP
20501: POP
// if filterunitsinarea ( left_teleport_area , [ f_chassis , ar_hovercraft ] ) < temp_list then
20502: LD_INT 33
20504: PPUSH
20505: LD_INT 31
20507: PUSH
20508: LD_INT 11
20510: PUSH
20511: EMPTY
20512: LIST
20513: LIST
20514: PPUSH
20515: CALL_OW 70
20519: PUSH
20520: LD_VAR 0 4
20524: LESS
20525: IFFALSE 20535
// temp_val = 4 ;
20527: LD_ADDR_VAR 0 5
20531: PUSH
20532: LD_INT 4
20534: ST_TO_ADDR
// end ; if j [ 4 ] = Teleport_BottomRight then
20535: LD_VAR 0 3
20539: PUSH
20540: LD_INT 4
20542: ARRAY
20543: PUSH
20544: LD_EXP 124
20548: EQUAL
20549: IFFALSE 20666
// begin temp_list = [ ] ;
20551: LD_ADDR_VAR 0 4
20555: PUSH
20556: EMPTY
20557: ST_TO_ADDR
// for k in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
20558: LD_ADDR_VAR 0 9
20562: PUSH
20563: LD_INT 22
20565: PUSH
20566: LD_INT 2
20568: PUSH
20569: EMPTY
20570: LIST
20571: LIST
20572: PUSH
20573: LD_INT 21
20575: PUSH
20576: LD_INT 1
20578: PUSH
20579: EMPTY
20580: LIST
20581: LIST
20582: PUSH
20583: EMPTY
20584: LIST
20585: LIST
20586: PPUSH
20587: CALL_OW 69
20591: PUSH
20592: FOR_IN
20593: IFFALSE 20646
// if isinarea ( k , area_base9 ) or isinarea ( isinunit ( k ) , area_base9 ) then
20595: LD_VAR 0 9
20599: PPUSH
20600: LD_INT 17
20602: PPUSH
20603: CALL_OW 308
20607: PUSH
20608: LD_VAR 0 9
20612: PPUSH
20613: CALL_OW 310
20617: PPUSH
20618: LD_INT 17
20620: PPUSH
20621: CALL_OW 308
20625: OR
20626: IFFALSE 20644
// temp_list = temp_list ^ k ;
20628: LD_ADDR_VAR 0 4
20632: PUSH
20633: LD_VAR 0 4
20637: PUSH
20638: LD_VAR 0 9
20642: ADD
20643: ST_TO_ADDR
20644: GO 20592
20646: POP
20647: POP
// if temp_list > 0 then
20648: LD_VAR 0 4
20652: PUSH
20653: LD_INT 0
20655: GREATER
20656: IFFALSE 20666
// temp_val = 4 ;
20658: LD_ADDR_VAR 0 5
20662: PUSH
20663: LD_INT 4
20665: ST_TO_ADDR
// end ; end ;
20666: GO 20169
20668: POP
20669: POP
// if temp_val = 1 or temp_val = 3 or temp_val = 4 then
20670: LD_VAR 0 5
20674: PUSH
20675: LD_INT 1
20677: EQUAL
20678: PUSH
20679: LD_VAR 0 5
20683: PUSH
20684: LD_INT 3
20686: EQUAL
20687: OR
20688: PUSH
20689: LD_VAR 0 5
20693: PUSH
20694: LD_INT 4
20696: EQUAL
20697: OR
20698: IFFALSE 20709
// comstop ( i ) ;
20700: LD_VAR 0 2
20704: PPUSH
20705: CALL_OW 141
// if temp_val = 2 then
20709: LD_VAR 0 5
20713: PUSH
20714: LD_INT 2
20716: EQUAL
20717: IFFALSE 20747
// begin case query ( mines_detonate ) of 1 :
20719: LD_STRING mines_detonate
20721: PPUSH
20722: CALL_OW 97
20726: PUSH
20727: LD_INT 1
20729: DOUBLE
20730: EQUAL
20731: IFTRUE 20735
20733: GO 20742
20735: POP
// detonate ; end ;
20736: CALL 74406 0 0
20740: GO 20743
20742: POP
// exit ;
20743: POP
20744: POP
20745: GO 22165
// end ; end ;
20747: GO 20128
20749: POP
20750: POP
// if temp_val = 1 then
20751: LD_VAR 0 5
20755: PUSH
20756: LD_INT 1
20758: EQUAL
20759: IFFALSE 20775
// begin async ;
20761: ASYNC
// Say ( heike , tel_attack3_He ) ;
20762: LD_EXP 12
20766: PPUSH
20767: LD_STRING tel_attack3_He
20769: PPUSH
20770: CALL_OW 88
// sync ;
20774: SYNC
// end ; if temp_val = 3 then
20775: LD_VAR 0 5
20779: PUSH
20780: LD_INT 3
20782: EQUAL
20783: IFFALSE 20897
// case rand ( 1 , 4 ) of 1 :
20785: LD_INT 1
20787: PPUSH
20788: LD_INT 4
20790: PPUSH
20791: CALL_OW 12
20795: PUSH
20796: LD_INT 1
20798: DOUBLE
20799: EQUAL
20800: IFTRUE 20804
20802: GO 20821
20804: POP
// begin async ;
20805: ASYNC
// Say ( Snake , Snake_1 ) ;
20806: LD_EXP 26
20810: PPUSH
20811: LD_STRING Snake_1
20813: PPUSH
20814: CALL_OW 88
// sync ;
20818: SYNC
// end ; 2 :
20819: GO 20897
20821: LD_INT 2
20823: DOUBLE
20824: EQUAL
20825: IFTRUE 20829
20827: GO 20846
20829: POP
// begin async ;
20830: ASYNC
// Say ( Snake , Snake_2 ) ;
20831: LD_EXP 26
20835: PPUSH
20836: LD_STRING Snake_2
20838: PPUSH
20839: CALL_OW 88
// sync ;
20843: SYNC
// end ; 3 :
20844: GO 20897
20846: LD_INT 3
20848: DOUBLE
20849: EQUAL
20850: IFTRUE 20854
20852: GO 20871
20854: POP
// begin async ;
20855: ASYNC
// Say ( Snake , Snake_3 ) ;
20856: LD_EXP 26
20860: PPUSH
20861: LD_STRING Snake_3
20863: PPUSH
20864: CALL_OW 88
// sync ;
20868: SYNC
// end ; 4 :
20869: GO 20897
20871: LD_INT 4
20873: DOUBLE
20874: EQUAL
20875: IFTRUE 20879
20877: GO 20896
20879: POP
// begin async ;
20880: ASYNC
// Say ( Snake , Snake_4 ) ;
20881: LD_EXP 26
20885: PPUSH
20886: LD_STRING Snake_4
20888: PPUSH
20889: CALL_OW 88
// sync ;
20893: SYNC
// end ; end ;
20894: GO 20897
20896: POP
// if temp_val = 4 then
20897: LD_VAR 0 5
20901: PUSH
20902: LD_INT 4
20904: EQUAL
20905: IFFALSE 20921
// begin async ;
20907: ASYNC
// Say ( heike , tel_attack1_He ) ;
20908: LD_EXP 12
20912: PPUSH
20913: LD_STRING tel_attack1_He
20915: PPUSH
20916: CALL_OW 88
// sync ;
20920: SYNC
// end ; end ; if com = 112 then
20921: LD_VAR 0 1
20925: PUSH
20926: LD_INT 112
20928: EQUAL
20929: IFFALSE 21279
// begin for i in filterallunits ( [ f_side , 2 ] ) do
20931: LD_ADDR_VAR 0 2
20935: PUSH
20936: LD_INT 22
20938: PUSH
20939: LD_INT 2
20941: PUSH
20942: EMPTY
20943: LIST
20944: LIST
20945: PPUSH
20946: CALL_OW 69
20950: PUSH
20951: FOR_IN
20952: IFFALSE 21253
// if hastask ( i ) > 0 then
20954: LD_VAR 0 2
20958: PPUSH
20959: CALL_OW 314
20963: PUSH
20964: LD_INT 0
20966: GREATER
20967: IFFALSE 21251
// begin temp_val = 0 ;
20969: LD_ADDR_VAR 0 5
20973: PUSH
20974: LD_INT 0
20976: ST_TO_ADDR
// for j in Gettasklist ( i ) do
20977: LD_ADDR_VAR 0 3
20981: PUSH
20982: LD_VAR 0 2
20986: PPUSH
20987: CALL_OW 437
20991: PUSH
20992: FOR_IN
20993: IFFALSE 21249
// if j [ 1 ] = p and j [ 5 ] = 0 then
20995: LD_VAR 0 3
20999: PUSH
21000: LD_INT 1
21002: ARRAY
21003: PUSH
21004: LD_STRING p
21006: EQUAL
21007: PUSH
21008: LD_VAR 0 3
21012: PUSH
21013: LD_INT 5
21015: ARRAY
21016: PUSH
21017: LD_INT 0
21019: EQUAL
21020: AND
21021: IFFALSE 21247
// begin if GetDistXY ( 228 , 164 , j [ 2 ] , j [ 3 ] ) < 5 then
21023: LD_INT 228
21025: PPUSH
21026: LD_INT 164
21028: PPUSH
21029: LD_VAR 0 3
21033: PUSH
21034: LD_INT 2
21036: ARRAY
21037: PPUSH
21038: LD_VAR 0 3
21042: PUSH
21043: LD_INT 3
21045: ARRAY
21046: PPUSH
21047: CALL_OW 298
21051: PUSH
21052: LD_INT 5
21054: LESS
21055: IFFALSE 21074
// begin comstop ( i ) ;
21057: LD_VAR 0 2
21061: PPUSH
21062: CALL_OW 141
// temp_val = 1 ;
21066: LD_ADDR_VAR 0 5
21070: PUSH
21071: LD_INT 1
21073: ST_TO_ADDR
// end ; if GetDistXY ( 74 , 141 , j [ 2 ] , j [ 3 ] ) < 5 then
21074: LD_INT 74
21076: PPUSH
21077: LD_INT 141
21079: PPUSH
21080: LD_VAR 0 3
21084: PUSH
21085: LD_INT 2
21087: ARRAY
21088: PPUSH
21089: LD_VAR 0 3
21093: PUSH
21094: LD_INT 3
21096: ARRAY
21097: PPUSH
21098: CALL_OW 298
21102: PUSH
21103: LD_INT 5
21105: LESS
21106: IFFALSE 21247
// begin temp_list = [ ] ;
21108: LD_ADDR_VAR 0 4
21112: PUSH
21113: EMPTY
21114: ST_TO_ADDR
// for k in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
21115: LD_ADDR_VAR 0 9
21119: PUSH
21120: LD_INT 22
21122: PUSH
21123: LD_INT 2
21125: PUSH
21126: EMPTY
21127: LIST
21128: LIST
21129: PUSH
21130: LD_INT 21
21132: PUSH
21133: LD_INT 1
21135: PUSH
21136: EMPTY
21137: LIST
21138: LIST
21139: PUSH
21140: EMPTY
21141: LIST
21142: LIST
21143: PPUSH
21144: CALL_OW 69
21148: PUSH
21149: FOR_IN
21150: IFFALSE 21203
// if isinarea ( k , left_teleport_area ) or isinarea ( isinunit ( k ) , left_teleport_area ) then
21152: LD_VAR 0 9
21156: PPUSH
21157: LD_INT 33
21159: PPUSH
21160: CALL_OW 308
21164: PUSH
21165: LD_VAR 0 9
21169: PPUSH
21170: CALL_OW 310
21174: PPUSH
21175: LD_INT 33
21177: PPUSH
21178: CALL_OW 308
21182: OR
21183: IFFALSE 21201
// temp_list = temp_list ^ k ;
21185: LD_ADDR_VAR 0 4
21189: PUSH
21190: LD_VAR 0 4
21194: PUSH
21195: LD_VAR 0 9
21199: ADD
21200: ST_TO_ADDR
21201: GO 21149
21203: POP
21204: POP
// if filterunitsinarea ( left_teleport_area , [ f_chassis , ar_hovercraft ] ) < temp_list then
21205: LD_INT 33
21207: PPUSH
21208: LD_INT 31
21210: PUSH
21211: LD_INT 11
21213: PUSH
21214: EMPTY
21215: LIST
21216: LIST
21217: PPUSH
21218: CALL_OW 70
21222: PUSH
21223: LD_VAR 0 4
21227: LESS
21228: IFFALSE 21247
// begin comstop ( i ) ;
21230: LD_VAR 0 2
21234: PPUSH
21235: CALL_OW 141
// temp_val = 1 ;
21239: LD_ADDR_VAR 0 5
21243: PUSH
21244: LD_INT 1
21246: ST_TO_ADDR
// end ; end ; end ;
21247: GO 20992
21249: POP
21250: POP
// end ;
21251: GO 20951
21253: POP
21254: POP
// if temp_val = 1 then
21255: LD_VAR 0 5
21259: PUSH
21260: LD_INT 1
21262: EQUAL
21263: IFFALSE 21279
// begin async ;
21265: ASYNC
// Say ( heike , tel_attack1_He ) ;
21266: LD_EXP 12
21270: PPUSH
21271: LD_STRING tel_attack1_He
21273: PPUSH
21274: CALL_OW 88
// sync ;
21278: SYNC
// end ; end ; if com = 42 then
21279: LD_VAR 0 1
21283: PUSH
21284: LD_INT 42
21286: EQUAL
21287: IFFALSE 21746
// begin for i in filterallunits ( [ f_side , 2 ] ) do
21289: LD_ADDR_VAR 0 2
21293: PUSH
21294: LD_INT 22
21296: PUSH
21297: LD_INT 2
21299: PUSH
21300: EMPTY
21301: LIST
21302: LIST
21303: PPUSH
21304: CALL_OW 69
21308: PUSH
21309: FOR_IN
21310: IFFALSE 21744
// if hastask ( i ) > 0 then
21312: LD_VAR 0 2
21316: PPUSH
21317: CALL_OW 314
21321: PUSH
21322: LD_INT 0
21324: GREATER
21325: IFFALSE 21742
// begin for j in Gettasklist ( i ) do
21327: LD_ADDR_VAR 0 3
21331: PUSH
21332: LD_VAR 0 2
21336: PPUSH
21337: CALL_OW 437
21341: PUSH
21342: FOR_IN
21343: IFFALSE 21740
// if j [ 1 ] = * then
21345: LD_VAR 0 3
21349: PUSH
21350: LD_INT 1
21352: ARRAY
21353: PUSH
21354: LD_STRING *
21356: EQUAL
21357: IFFALSE 21738
// begin if GetDistxy ( 74 , 141 , MineOfUnit ( i ) [ 1 ] , MineOfUnit ( i ) [ 2 ] ) < 5 then
21359: LD_INT 74
21361: PPUSH
21362: LD_INT 141
21364: PPUSH
21365: LD_VAR 0 2
21369: PPUSH
21370: CALL_OW 459
21374: PUSH
21375: LD_INT 1
21377: ARRAY
21378: PPUSH
21379: LD_VAR 0 2
21383: PPUSH
21384: CALL_OW 459
21388: PUSH
21389: LD_INT 2
21391: ARRAY
21392: PPUSH
21393: CALL_OW 298
21397: PUSH
21398: LD_INT 5
21400: LESS
21401: IFFALSE 21556
// begin temp_list = [ ] ;
21403: LD_ADDR_VAR 0 4
21407: PUSH
21408: EMPTY
21409: ST_TO_ADDR
// for k in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
21410: LD_ADDR_VAR 0 9
21414: PUSH
21415: LD_INT 22
21417: PUSH
21418: LD_INT 2
21420: PUSH
21421: EMPTY
21422: LIST
21423: LIST
21424: PUSH
21425: LD_INT 21
21427: PUSH
21428: LD_INT 1
21430: PUSH
21431: EMPTY
21432: LIST
21433: LIST
21434: PUSH
21435: EMPTY
21436: LIST
21437: LIST
21438: PPUSH
21439: CALL_OW 69
21443: PUSH
21444: FOR_IN
21445: IFFALSE 21498
// if isinarea ( k , left_teleport_area ) or isinarea ( isinunit ( k ) , left_teleport_area ) then
21447: LD_VAR 0 9
21451: PPUSH
21452: LD_INT 33
21454: PPUSH
21455: CALL_OW 308
21459: PUSH
21460: LD_VAR 0 9
21464: PPUSH
21465: CALL_OW 310
21469: PPUSH
21470: LD_INT 33
21472: PPUSH
21473: CALL_OW 308
21477: OR
21478: IFFALSE 21496
// temp_list = temp_list ^ k ;
21480: LD_ADDR_VAR 0 4
21484: PUSH
21485: LD_VAR 0 4
21489: PUSH
21490: LD_VAR 0 9
21494: ADD
21495: ST_TO_ADDR
21496: GO 21444
21498: POP
21499: POP
// if filterunitsinarea ( left_teleport_area , [ f_chassis , ar_hovercraft ] ) < temp_list then
21500: LD_INT 33
21502: PPUSH
21503: LD_INT 31
21505: PUSH
21506: LD_INT 11
21508: PUSH
21509: EMPTY
21510: LIST
21511: LIST
21512: PPUSH
21513: CALL_OW 70
21517: PUSH
21518: LD_VAR 0 4
21522: LESS
21523: IFFALSE 21556
// begin temp_val = 1 ;
21525: LD_ADDR_VAR 0 5
21529: PUSH
21530: LD_INT 1
21532: ST_TO_ADDR
// comstop ( i ) ;
21533: LD_VAR 0 2
21537: PPUSH
21538: CALL_OW 141
// async ;
21542: ASYNC
// Say ( heike , tel_attack1_He ) ;
21543: LD_EXP 12
21547: PPUSH
21548: LD_STRING tel_attack1_He
21550: PPUSH
21551: CALL_OW 88
// sync ;
21555: SYNC
// end ; end ; if GetDistxy ( 228 , 164 , MineOfUnit ( i ) [ 1 ] , MineOfUnit ( i ) [ 2 ] ) < 5 then
21556: LD_INT 228
21558: PPUSH
21559: LD_INT 164
21561: PPUSH
21562: LD_VAR 0 2
21566: PPUSH
21567: CALL_OW 459
21571: PUSH
21572: LD_INT 1
21574: ARRAY
21575: PPUSH
21576: LD_VAR 0 2
21580: PPUSH
21581: CALL_OW 459
21585: PUSH
21586: LD_INT 2
21588: ARRAY
21589: PPUSH
21590: CALL_OW 298
21594: PUSH
21595: LD_INT 5
21597: LESS
21598: IFFALSE 21738
// begin temp_list = [ ] ;
21600: LD_ADDR_VAR 0 4
21604: PUSH
21605: EMPTY
21606: ST_TO_ADDR
// for k in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
21607: LD_ADDR_VAR 0 9
21611: PUSH
21612: LD_INT 22
21614: PUSH
21615: LD_INT 2
21617: PUSH
21618: EMPTY
21619: LIST
21620: LIST
21621: PUSH
21622: LD_INT 21
21624: PUSH
21625: LD_INT 1
21627: PUSH
21628: EMPTY
21629: LIST
21630: LIST
21631: PUSH
21632: EMPTY
21633: LIST
21634: LIST
21635: PPUSH
21636: CALL_OW 69
21640: PUSH
21641: FOR_IN
21642: IFFALSE 21695
// if isinarea ( k , area_base9 ) or isinarea ( isinunit ( k ) , area_base9 ) then
21644: LD_VAR 0 9
21648: PPUSH
21649: LD_INT 17
21651: PPUSH
21652: CALL_OW 308
21656: PUSH
21657: LD_VAR 0 9
21661: PPUSH
21662: CALL_OW 310
21666: PPUSH
21667: LD_INT 17
21669: PPUSH
21670: CALL_OW 308
21674: OR
21675: IFFALSE 21693
// temp_list = temp_list ^ k ;
21677: LD_ADDR_VAR 0 4
21681: PUSH
21682: LD_VAR 0 4
21686: PUSH
21687: LD_VAR 0 9
21691: ADD
21692: ST_TO_ADDR
21693: GO 21641
21695: POP
21696: POP
// if temp_list > 0 then
21697: LD_VAR 0 4
21701: PUSH
21702: LD_INT 0
21704: GREATER
21705: IFFALSE 21738
// begin temp_val = 1 ;
21707: LD_ADDR_VAR 0 5
21711: PUSH
21712: LD_INT 1
21714: ST_TO_ADDR
// comstop ( i ) ;
21715: LD_VAR 0 2
21719: PPUSH
21720: CALL_OW 141
// async ;
21724: ASYNC
// Say ( heike , tel_attack1_He ) ;
21725: LD_EXP 12
21729: PPUSH
21730: LD_STRING tel_attack1_He
21732: PPUSH
21733: CALL_OW 88
// sync ;
21737: SYNC
// end ; end ; end ;
21738: GO 21342
21740: POP
21741: POP
// end ;
21742: GO 21309
21744: POP
21745: POP
// end ; if com = 124 then
21746: LD_VAR 0 1
21750: PUSH
21751: LD_INT 124
21753: EQUAL
21754: IFFALSE 22165
// begin for i in FilterAllUnits ( [ f_side , you ] ) do
21756: LD_ADDR_VAR 0 2
21760: PUSH
21761: LD_INT 22
21763: PUSH
21764: LD_EXP 4
21768: PUSH
21769: EMPTY
21770: LIST
21771: LIST
21772: PPUSH
21773: CALL_OW 69
21777: PUSH
21778: FOR_IN
21779: IFFALSE 22163
// if IsSelected ( i ) and HasTask ( i ) then
21781: LD_VAR 0 2
21785: PPUSH
21786: CALL_OW 306
21790: PUSH
21791: LD_VAR 0 2
21795: PPUSH
21796: CALL_OW 314
21800: AND
21801: IFFALSE 22161
// begin target_hex = [ ] ;
21803: LD_ADDR_VAR 0 10
21807: PUSH
21808: EMPTY
21809: ST_TO_ADDR
// for k in GetTaskList ( i ) do
21810: LD_ADDR_VAR 0 9
21814: PUSH
21815: LD_VAR 0 2
21819: PPUSH
21820: CALL_OW 437
21824: PUSH
21825: FOR_IN
21826: IFFALSE 21873
// if k [ 1 ] = | then
21828: LD_VAR 0 9
21832: PUSH
21833: LD_INT 1
21835: ARRAY
21836: PUSH
21837: LD_STRING |
21839: EQUAL
21840: IFFALSE 21871
// begin target_hex = [ k [ 2 ] , k [ 3 ] ] ;
21842: LD_ADDR_VAR 0 10
21846: PUSH
21847: LD_VAR 0 9
21851: PUSH
21852: LD_INT 2
21854: ARRAY
21855: PUSH
21856: LD_VAR 0 9
21860: PUSH
21861: LD_INT 3
21863: ARRAY
21864: PUSH
21865: EMPTY
21866: LIST
21867: LIST
21868: ST_TO_ADDR
// break ;
21869: GO 21873
// end ;
21871: GO 21825
21873: POP
21874: POP
// if target_hex > 0 then
21875: LD_VAR 0 10
21879: PUSH
21880: LD_INT 0
21882: GREATER
21883: IFFALSE 22161
// begin hex_list = target_hex ;
21885: LD_ADDR_VAR 0 7
21889: PUSH
21890: LD_VAR 0 10
21894: ST_TO_ADDR
// temp_list = [ ] ;
21895: LD_ADDR_VAR 0 4
21899: PUSH
21900: EMPTY
21901: ST_TO_ADDR
// for k = 0 to 5 do
21902: LD_ADDR_VAR 0 9
21906: PUSH
21907: DOUBLE
21908: LD_INT 0
21910: DEC
21911: ST_TO_ADDR
21912: LD_INT 5
21914: PUSH
21915: FOR_TO
21916: IFFALSE 21986
// temp_list = Insert ( temp_list , 1 , [ ShiftX ( hex_list [ 1 ] , k , 1 ) , ShiftY ( hex_list [ 2 ] , k , 1 ) ] ) ;
21918: LD_ADDR_VAR 0 4
21922: PUSH
21923: LD_VAR 0 4
21927: PPUSH
21928: LD_INT 1
21930: PPUSH
21931: LD_VAR 0 7
21935: PUSH
21936: LD_INT 1
21938: ARRAY
21939: PPUSH
21940: LD_VAR 0 9
21944: PPUSH
21945: LD_INT 1
21947: PPUSH
21948: CALL_OW 272
21952: PUSH
21953: LD_VAR 0 7
21957: PUSH
21958: LD_INT 2
21960: ARRAY
21961: PPUSH
21962: LD_VAR 0 9
21966: PPUSH
21967: LD_INT 1
21969: PPUSH
21970: CALL_OW 273
21974: PUSH
21975: EMPTY
21976: LIST
21977: LIST
21978: PPUSH
21979: CALL_OW 2
21983: ST_TO_ADDR
21984: GO 21915
21986: POP
21987: POP
// hex_list = [ hex_list ] ^ temp_list ;
21988: LD_ADDR_VAR 0 7
21992: PUSH
21993: LD_VAR 0 7
21997: PUSH
21998: EMPTY
21999: LIST
22000: PUSH
22001: LD_VAR 0 4
22005: ADD
22006: ST_TO_ADDR
// temp_list = [ ] ;
22007: LD_ADDR_VAR 0 4
22011: PUSH
22012: EMPTY
22013: ST_TO_ADDR
// for k in hex_list do
22014: LD_ADDR_VAR 0 9
22018: PUSH
22019: LD_VAR 0 7
22023: PUSH
22024: FOR_IN
22025: IFFALSE 22159
// begin un = HexInfo ( k [ 1 ] , k [ 2 ] ) ;
22027: LD_ADDR_VAR 0 8
22031: PUSH
22032: LD_VAR 0 9
22036: PUSH
22037: LD_INT 1
22039: ARRAY
22040: PPUSH
22041: LD_VAR 0 9
22045: PUSH
22046: LD_INT 2
22048: ARRAY
22049: PPUSH
22050: CALL_OW 428
22054: ST_TO_ADDR
// if un > 0 and not un in temp_list then
22055: LD_VAR 0 8
22059: PUSH
22060: LD_INT 0
22062: GREATER
22063: PUSH
22064: LD_VAR 0 8
22068: PUSH
22069: LD_VAR 0 4
22073: IN
22074: NOT
22075: AND
22076: IFFALSE 22157
// begin ai_attack_ground_info_initial = Insert ( ai_attack_ground_info_initial , 1 , [ i , un , GetSide ( un ) , target_hex [ 1 ] , target_hex [ 2 ] ] ) ;
22078: LD_ADDR_EXP 103
22082: PUSH
22083: LD_EXP 103
22087: PPUSH
22088: LD_INT 1
22090: PPUSH
22091: LD_VAR 0 2
22095: PUSH
22096: LD_VAR 0 8
22100: PUSH
22101: LD_VAR 0 8
22105: PPUSH
22106: CALL_OW 255
22110: PUSH
22111: LD_VAR 0 10
22115: PUSH
22116: LD_INT 1
22118: ARRAY
22119: PUSH
22120: LD_VAR 0 10
22124: PUSH
22125: LD_INT 2
22127: ARRAY
22128: PUSH
22129: EMPTY
22130: LIST
22131: LIST
22132: LIST
22133: LIST
22134: LIST
22135: PPUSH
22136: CALL_OW 2
22140: ST_TO_ADDR
// temp_list = temp_list ^ un ;
22141: LD_ADDR_VAR 0 4
22145: PUSH
22146: LD_VAR 0 4
22150: PUSH
22151: LD_VAR 0 8
22155: ADD
22156: ST_TO_ADDR
// end ; end ;
22157: GO 22024
22159: POP
22160: POP
// end ; end ;
22161: GO 21778
22163: POP
22164: POP
// end ; end ;
22165: PPOPN 10
22167: END
// every 0 0$1 + 0 0$0.1 do var a , b , temp_list , temp_list_2 , yup , i , t ;
22168: GO 22170
22170: DISABLE
22171: LD_INT 0
22173: PPUSH
22174: PPUSH
22175: PPUSH
22176: PPUSH
22177: PPUSH
22178: PPUSH
22179: PPUSH
// begin repeat wait ( 0 0$0.5 ) ;
22180: LD_INT 18
22182: PPUSH
22183: CALL_OW 67
// i = 1 ;
22187: LD_ADDR_VAR 0 6
22191: PUSH
22192: LD_INT 1
22194: ST_TO_ADDR
// while i <= ai_attack_ground_info_initial do
22195: LD_VAR 0 6
22199: PUSH
22200: LD_EXP 103
22204: LESSEQUAL
22205: IFFALSE 22368
// begin yup = false ;
22207: LD_ADDR_VAR 0 5
22211: PUSH
22212: LD_INT 0
22214: ST_TO_ADDR
// for t in GetTaskList ( ai_attack_ground_info_initial [ i ] [ 1 ] ) do
22215: LD_ADDR_VAR 0 7
22219: PUSH
22220: LD_EXP 103
22224: PUSH
22225: LD_VAR 0 6
22229: ARRAY
22230: PUSH
22231: LD_INT 1
22233: ARRAY
22234: PPUSH
22235: CALL_OW 437
22239: PUSH
22240: FOR_IN
22241: IFFALSE 22321
// if t [ 1 ] = | then
22243: LD_VAR 0 7
22247: PUSH
22248: LD_INT 1
22250: ARRAY
22251: PUSH
22252: LD_STRING |
22254: EQUAL
22255: IFFALSE 22319
// if t [ 2 ] = ai_attack_ground_info_initial [ i ] [ 4 ] and t [ 3 ] = ai_attack_ground_info_initial [ i ] [ 5 ] then
22257: LD_VAR 0 7
22261: PUSH
22262: LD_INT 2
22264: ARRAY
22265: PUSH
22266: LD_EXP 103
22270: PUSH
22271: LD_VAR 0 6
22275: ARRAY
22276: PUSH
22277: LD_INT 4
22279: ARRAY
22280: EQUAL
22281: PUSH
22282: LD_VAR 0 7
22286: PUSH
22287: LD_INT 3
22289: ARRAY
22290: PUSH
22291: LD_EXP 103
22295: PUSH
22296: LD_VAR 0 6
22300: ARRAY
22301: PUSH
22302: LD_INT 5
22304: ARRAY
22305: EQUAL
22306: AND
22307: IFFALSE 22319
// begin yup = true ;
22309: LD_ADDR_VAR 0 5
22313: PUSH
22314: LD_INT 1
22316: ST_TO_ADDR
// break ;
22317: GO 22321
// end ;
22319: GO 22240
22321: POP
22322: POP
// if not yup then
22323: LD_VAR 0 5
22327: NOT
22328: IFFALSE 22352
// begin ai_attack_ground_info_initial = Delete ( ai_attack_ground_info_initial , i ) ;
22330: LD_ADDR_EXP 103
22334: PUSH
22335: LD_EXP 103
22339: PPUSH
22340: LD_VAR 0 6
22344: PPUSH
22345: CALL_OW 3
22349: ST_TO_ADDR
// continue ;
22350: GO 22195
// end ; i = i + 1 ;
22352: LD_ADDR_VAR 0 6
22356: PUSH
22357: LD_VAR 0 6
22361: PUSH
22362: LD_INT 1
22364: PLUS
22365: ST_TO_ADDR
// end ;
22366: GO 22195
// i = 1 ;
22368: LD_ADDR_VAR 0 6
22372: PUSH
22373: LD_INT 1
22375: ST_TO_ADDR
// while i <= ai_attack_ground_info_sustain do
22376: LD_VAR 0 6
22380: PUSH
22381: LD_EXP 104
22385: LESSEQUAL
22386: IFFALSE 22549
// begin yup = false ;
22388: LD_ADDR_VAR 0 5
22392: PUSH
22393: LD_INT 0
22395: ST_TO_ADDR
// for t in GetTaskList ( ai_attack_ground_info_sustain [ i ] [ 1 ] ) do
22396: LD_ADDR_VAR 0 7
22400: PUSH
22401: LD_EXP 104
22405: PUSH
22406: LD_VAR 0 6
22410: ARRAY
22411: PUSH
22412: LD_INT 1
22414: ARRAY
22415: PPUSH
22416: CALL_OW 437
22420: PUSH
22421: FOR_IN
22422: IFFALSE 22502
// if t [ 1 ] = | then
22424: LD_VAR 0 7
22428: PUSH
22429: LD_INT 1
22431: ARRAY
22432: PUSH
22433: LD_STRING |
22435: EQUAL
22436: IFFALSE 22500
// if t [ 2 ] = ai_attack_ground_info_sustain [ i ] [ 4 ] and t [ 3 ] = ai_attack_ground_info_sustain [ i ] [ 5 ] then
22438: LD_VAR 0 7
22442: PUSH
22443: LD_INT 2
22445: ARRAY
22446: PUSH
22447: LD_EXP 104
22451: PUSH
22452: LD_VAR 0 6
22456: ARRAY
22457: PUSH
22458: LD_INT 4
22460: ARRAY
22461: EQUAL
22462: PUSH
22463: LD_VAR 0 7
22467: PUSH
22468: LD_INT 3
22470: ARRAY
22471: PUSH
22472: LD_EXP 104
22476: PUSH
22477: LD_VAR 0 6
22481: ARRAY
22482: PUSH
22483: LD_INT 5
22485: ARRAY
22486: EQUAL
22487: AND
22488: IFFALSE 22500
// begin yup = true ;
22490: LD_ADDR_VAR 0 5
22494: PUSH
22495: LD_INT 1
22497: ST_TO_ADDR
// break ;
22498: GO 22502
// end ;
22500: GO 22421
22502: POP
22503: POP
// if not yup then
22504: LD_VAR 0 5
22508: NOT
22509: IFFALSE 22533
// begin ai_attack_ground_info_sustain = Delete ( ai_attack_ground_info_sustain , i ) ;
22511: LD_ADDR_EXP 104
22515: PUSH
22516: LD_EXP 104
22520: PPUSH
22521: LD_VAR 0 6
22525: PPUSH
22526: CALL_OW 3
22530: ST_TO_ADDR
// continue ;
22531: GO 22376
// end ; i = i + 1 ;
22533: LD_ADDR_VAR 0 6
22537: PUSH
22538: LD_VAR 0 6
22542: PUSH
22543: LD_INT 1
22545: PLUS
22546: ST_TO_ADDR
// end ;
22547: GO 22376
// temp_list = ai_contact_time ;
22549: LD_ADDR_VAR 0 3
22553: PUSH
22554: LD_EXP 102
22558: ST_TO_ADDR
// for a = 1 to temp_list do
22559: LD_ADDR_VAR 0 1
22563: PUSH
22564: DOUBLE
22565: LD_INT 1
22567: DEC
22568: ST_TO_ADDR
22569: LD_VAR 0 3
22573: PUSH
22574: FOR_TO
22575: IFFALSE 22701
// for b = 1 to temp_list [ a ] do
22577: LD_ADDR_VAR 0 2
22581: PUSH
22582: DOUBLE
22583: LD_INT 1
22585: DEC
22586: ST_TO_ADDR
22587: LD_VAR 0 3
22591: PUSH
22592: LD_VAR 0 1
22596: ARRAY
22597: PUSH
22598: FOR_TO
22599: IFFALSE 22697
// if temp_list [ a ] [ b ] < 100000 then
22601: LD_VAR 0 3
22605: PUSH
22606: LD_VAR 0 1
22610: ARRAY
22611: PUSH
22612: LD_VAR 0 2
22616: ARRAY
22617: PUSH
22618: LD_INT 100000
22620: LESS
22621: IFFALSE 22695
// begin temp_list_2 = Replace ( ai_contact_time [ a ] , b , temp_list [ a ] [ b ] + 0 0$0.5 ) ;
22623: LD_ADDR_VAR 0 4
22627: PUSH
22628: LD_EXP 102
22632: PUSH
22633: LD_VAR 0 1
22637: ARRAY
22638: PPUSH
22639: LD_VAR 0 2
22643: PPUSH
22644: LD_VAR 0 3
22648: PUSH
22649: LD_VAR 0 1
22653: ARRAY
22654: PUSH
22655: LD_VAR 0 2
22659: ARRAY
22660: PUSH
22661: LD_INT 18
22663: PLUS
22664: PPUSH
22665: CALL_OW 1
22669: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a , temp_list_2 ) ;
22670: LD_ADDR_EXP 102
22674: PUSH
22675: LD_EXP 102
22679: PPUSH
22680: LD_VAR 0 1
22684: PPUSH
22685: LD_VAR 0 4
22689: PPUSH
22690: CALL_OW 1
22694: ST_TO_ADDR
// end ;
22695: GO 22598
22697: POP
22698: POP
22699: GO 22574
22701: POP
22702: POP
// for a in ai_attack_ground_info_initial do
22703: LD_ADDR_VAR 0 1
22707: PUSH
22708: LD_EXP 103
22712: PUSH
22713: FOR_IN
22714: IFFALSE 22920
// begin if IsDead ( a [ 2 ] ) or UnitShoot ( a [ 2 ] ) = a [ 1 ] then
22716: LD_VAR 0 1
22720: PUSH
22721: LD_INT 2
22723: ARRAY
22724: PPUSH
22725: CALL_OW 301
22729: PUSH
22730: LD_VAR 0 1
22734: PUSH
22735: LD_INT 2
22737: ARRAY
22738: PPUSH
22739: CALL_OW 504
22743: PUSH
22744: LD_VAR 0 1
22748: PUSH
22749: LD_INT 1
22751: ARRAY
22752: EQUAL
22753: OR
22754: IFFALSE 22918
// begin temp_list = Replace ( ai_contact_time [ you ] , a [ 3 ] , 0 ) ;
22756: LD_ADDR_VAR 0 3
22760: PUSH
22761: LD_EXP 102
22765: PUSH
22766: LD_EXP 4
22770: ARRAY
22771: PPUSH
22772: LD_VAR 0 1
22776: PUSH
22777: LD_INT 3
22779: ARRAY
22780: PPUSH
22781: LD_INT 0
22783: PPUSH
22784: CALL_OW 1
22788: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , you , temp_list ) ;
22789: LD_ADDR_EXP 102
22793: PUSH
22794: LD_EXP 102
22798: PPUSH
22799: LD_EXP 4
22803: PPUSH
22804: LD_VAR 0 3
22808: PPUSH
22809: CALL_OW 1
22813: ST_TO_ADDR
// temp_list = Replace ( ai_contact_time [ a [ 3 ] ] , you , 0 ) ;
22814: LD_ADDR_VAR 0 3
22818: PUSH
22819: LD_EXP 102
22823: PUSH
22824: LD_VAR 0 1
22828: PUSH
22829: LD_INT 3
22831: ARRAY
22832: ARRAY
22833: PPUSH
22834: LD_EXP 4
22838: PPUSH
22839: LD_INT 0
22841: PPUSH
22842: CALL_OW 1
22846: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a [ 3 ] , temp_list ) ;
22847: LD_ADDR_EXP 102
22851: PUSH
22852: LD_EXP 102
22856: PPUSH
22857: LD_VAR 0 1
22861: PUSH
22862: LD_INT 3
22864: ARRAY
22865: PPUSH
22866: LD_VAR 0 3
22870: PPUSH
22871: CALL_OW 1
22875: ST_TO_ADDR
// ai_attack_ground_info_initial = ai_attack_ground_info_initial diff [ a ] ;
22876: LD_ADDR_EXP 103
22880: PUSH
22881: LD_EXP 103
22885: PUSH
22886: LD_VAR 0 1
22890: PUSH
22891: EMPTY
22892: LIST
22893: DIFF
22894: ST_TO_ADDR
// ai_attack_ground_info_sustain = Insert ( ai_attack_ground_info_sustain , 1 , a ) ;
22895: LD_ADDR_EXP 104
22899: PUSH
22900: LD_EXP 104
22904: PPUSH
22905: LD_INT 1
22907: PPUSH
22908: LD_VAR 0 1
22912: PPUSH
22913: CALL_OW 2
22917: ST_TO_ADDR
// end ; end ;
22918: GO 22713
22920: POP
22921: POP
// for a in ai_attack_ground_info_sustain do
22922: LD_ADDR_VAR 0 1
22926: PUSH
22927: LD_EXP 104
22931: PUSH
22932: FOR_IN
22933: IFFALSE 23057
// begin temp_list = Replace ( ai_contact_time [ you ] , a [ 3 ] , 0 ) ;
22935: LD_ADDR_VAR 0 3
22939: PUSH
22940: LD_EXP 102
22944: PUSH
22945: LD_EXP 4
22949: ARRAY
22950: PPUSH
22951: LD_VAR 0 1
22955: PUSH
22956: LD_INT 3
22958: ARRAY
22959: PPUSH
22960: LD_INT 0
22962: PPUSH
22963: CALL_OW 1
22967: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , you , temp_list ) ;
22968: LD_ADDR_EXP 102
22972: PUSH
22973: LD_EXP 102
22977: PPUSH
22978: LD_EXP 4
22982: PPUSH
22983: LD_VAR 0 3
22987: PPUSH
22988: CALL_OW 1
22992: ST_TO_ADDR
// temp_list = Replace ( ai_contact_time [ a [ 3 ] ] , you , 0 ) ;
22993: LD_ADDR_VAR 0 3
22997: PUSH
22998: LD_EXP 102
23002: PUSH
23003: LD_VAR 0 1
23007: PUSH
23008: LD_INT 3
23010: ARRAY
23011: ARRAY
23012: PPUSH
23013: LD_EXP 4
23017: PPUSH
23018: LD_INT 0
23020: PPUSH
23021: CALL_OW 1
23025: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a [ 3 ] , temp_list ) ;
23026: LD_ADDR_EXP 102
23030: PUSH
23031: LD_EXP 102
23035: PPUSH
23036: LD_VAR 0 1
23040: PUSH
23041: LD_INT 3
23043: ARRAY
23044: PPUSH
23045: LD_VAR 0 3
23049: PPUSH
23050: CALL_OW 1
23054: ST_TO_ADDR
// end ;
23055: GO 22932
23057: POP
23058: POP
// until false ;
23059: LD_INT 0
23061: IFFALSE 22180
// end ;
23063: PPOPN 7
23065: END
// every 0 0$1 + 0 0$0.4 do var side , i , mechanics_list , temp_list , temp_list_3 , temp_unit , vehicles_list , allowed_to_repair_vehicles ; var under_attack , free_parking_spots , k , base , area , temp_list_2 , remote_mechanics , parked_vehicles , n , a ; var temp_list_4 , temp_list_5 , num_control_stations , free_behemoth_parking_spots , parked_behemoths , already_inside_mecs ; var vehicles_drivers , remote_driver_vehicles ;
23066: GO 23068
23068: DISABLE
23069: LD_INT 0
23071: PPUSH
23072: PPUSH
23073: PPUSH
23074: PPUSH
23075: PPUSH
23076: PPUSH
23077: PPUSH
23078: PPUSH
23079: PPUSH
23080: PPUSH
23081: PPUSH
23082: PPUSH
23083: PPUSH
23084: PPUSH
23085: PPUSH
23086: PPUSH
23087: PPUSH
23088: PPUSH
23089: PPUSH
23090: PPUSH
23091: PPUSH
23092: PPUSH
23093: PPUSH
23094: PPUSH
23095: PPUSH
23096: PPUSH
// begin vehicles_drivers = [ ] ;
23097: LD_ADDR_VAR 0 25
23101: PUSH
23102: EMPTY
23103: ST_TO_ADDR
// remote_driver_vehicles = [ [ ] , [ ] , [ ] , [ ] ] ;
23104: LD_ADDR_VAR 0 26
23108: PUSH
23109: EMPTY
23110: PUSH
23111: EMPTY
23112: PUSH
23113: EMPTY
23114: PUSH
23115: EMPTY
23116: PUSH
23117: EMPTY
23118: LIST
23119: LIST
23120: LIST
23121: LIST
23122: ST_TO_ADDR
// repeat if ai_bases = 0 then
23123: LD_EXP 29
23127: PUSH
23128: LD_INT 0
23130: EQUAL
23131: IFFALSE 23135
// exit ;
23133: GO 28527
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
23135: LD_INT 35
23137: PUSH
23138: LD_EXP 29
23142: PUSH
23143: LD_INT 0
23145: PLUS
23146: MOD
23147: PPUSH
23148: CALL_OW 67
// for base in ai_bases do
23152: LD_ADDR_VAR 0 12
23156: PUSH
23157: LD_EXP 29
23161: PUSH
23162: FOR_IN
23163: IFFALSE 28521
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
23165: LD_INT 35
23167: PUSH
23168: LD_EXP 29
23172: PUSH
23173: LD_INT 0
23175: PLUS
23176: DIV
23177: PPUSH
23178: CALL_OW 67
// side = GetBaseSide ( base ) ;
23182: LD_ADDR_VAR 0 1
23186: PUSH
23187: LD_VAR 0 12
23191: PPUSH
23192: CALL 3818 0 1
23196: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
23197: LD_ADDR_VAR 0 13
23201: PUSH
23202: LD_VAR 0 12
23206: PPUSH
23207: CALL 3614 0 1
23211: ST_TO_ADDR
// under_attack = BaseUnderAttack ( base , - 1 ) ;
23212: LD_ADDR_VAR 0 9
23216: PUSH
23217: LD_VAR 0 12
23221: PPUSH
23222: LD_INT 1
23224: NEG
23225: PPUSH
23226: CALL 18712 0 2
23230: ST_TO_ADDR
// for i in ai_vehicles_defend [ base ] do
23231: LD_ADDR_VAR 0 2
23235: PUSH
23236: LD_EXP 57
23240: PUSH
23241: LD_VAR 0 12
23245: ARRAY
23246: PUSH
23247: FOR_IN
23248: IFFALSE 23343
// if vehicles_drivers >= i then
23250: LD_VAR 0 25
23254: PUSH
23255: LD_VAR 0 2
23259: GREATEREQUAL
23260: IFFALSE 23341
// if vehicles_drivers [ i ] > 0 then
23262: LD_VAR 0 25
23266: PUSH
23267: LD_VAR 0 2
23271: ARRAY
23272: PUSH
23273: LD_INT 0
23275: GREATER
23276: IFFALSE 23341
// if IsInUnit ( vehicles_drivers [ i ] ) = i or IsDead ( vehicles_drivers [ i ] ) then
23278: LD_VAR 0 25
23282: PUSH
23283: LD_VAR 0 2
23287: ARRAY
23288: PPUSH
23289: CALL_OW 310
23293: PUSH
23294: LD_VAR 0 2
23298: EQUAL
23299: PUSH
23300: LD_VAR 0 25
23304: PUSH
23305: LD_VAR 0 2
23309: ARRAY
23310: PPUSH
23311: CALL_OW 301
23315: OR
23316: IFFALSE 23341
// vehicles_drivers = Replace ( vehicles_drivers , i , 0 ) ;
23318: LD_ADDR_VAR 0 25
23322: PUSH
23323: LD_VAR 0 25
23327: PPUSH
23328: LD_VAR 0 2
23332: PPUSH
23333: LD_INT 0
23335: PPUSH
23336: CALL_OW 1
23340: ST_TO_ADDR
23341: GO 23247
23343: POP
23344: POP
// if ai_crane [ base ] > 0 and GetControl ( ai_crane [ base ] ) = control_manual and ai_crane_driver [ base ] = 0 and ai_mechanics_defend [ base ] > 0 then
23345: LD_EXP 78
23349: PUSH
23350: LD_VAR 0 12
23354: ARRAY
23355: PUSH
23356: LD_INT 0
23358: GREATER
23359: PUSH
23360: LD_EXP 78
23364: PUSH
23365: LD_VAR 0 12
23369: ARRAY
23370: PPUSH
23371: CALL_OW 263
23375: PUSH
23376: LD_INT 1
23378: EQUAL
23379: AND
23380: PUSH
23381: LD_EXP 82
23385: PUSH
23386: LD_VAR 0 12
23390: ARRAY
23391: PUSH
23392: LD_INT 0
23394: EQUAL
23395: AND
23396: PUSH
23397: LD_EXP 33
23401: PUSH
23402: LD_VAR 0 12
23406: ARRAY
23407: PUSH
23408: LD_INT 0
23410: GREATER
23411: AND
23412: IFFALSE 23563
// begin ai_crane_driver = Replace ( ai_crane_driver , base , FindBestCraneDriver ( base ) ) ;
23414: LD_ADDR_EXP 82
23418: PUSH
23419: LD_EXP 82
23423: PPUSH
23424: LD_VAR 0 12
23428: PPUSH
23429: LD_VAR 0 12
23433: PPUSH
23434: CALL 28841 0 1
23438: PPUSH
23439: CALL_OW 1
23443: ST_TO_ADDR
// for i = 1 to remote_driver_vehicles [ base ] + 0 do
23444: LD_ADDR_VAR 0 2
23448: PUSH
23449: DOUBLE
23450: LD_INT 1
23452: DEC
23453: ST_TO_ADDR
23454: LD_VAR 0 26
23458: PUSH
23459: LD_VAR 0 12
23463: ARRAY
23464: PUSH
23465: LD_INT 0
23467: PLUS
23468: PUSH
23469: FOR_TO
23470: IFFALSE 23561
// if remote_driver_vehicles [ base ] [ i ] [ 1 ] = ai_crane_driver [ base ] then
23472: LD_VAR 0 26
23476: PUSH
23477: LD_VAR 0 12
23481: ARRAY
23482: PUSH
23483: LD_VAR 0 2
23487: ARRAY
23488: PUSH
23489: LD_INT 1
23491: ARRAY
23492: PUSH
23493: LD_EXP 82
23497: PUSH
23498: LD_VAR 0 12
23502: ARRAY
23503: EQUAL
23504: IFFALSE 23559
// begin temp_list = Delete ( remote_driver_vehicles [ base ] , i ) ;
23506: LD_ADDR_VAR 0 4
23510: PUSH
23511: LD_VAR 0 26
23515: PUSH
23516: LD_VAR 0 12
23520: ARRAY
23521: PPUSH
23522: LD_VAR 0 2
23526: PPUSH
23527: CALL_OW 3
23531: ST_TO_ADDR
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list ) ;
23532: LD_ADDR_VAR 0 26
23536: PUSH
23537: LD_VAR 0 26
23541: PPUSH
23542: LD_VAR 0 12
23546: PPUSH
23547: LD_VAR 0 4
23551: PPUSH
23552: CALL_OW 1
23556: ST_TO_ADDR
// break ;
23557: GO 23561
// end ;
23559: GO 23469
23561: POP
23562: POP
// end ; mechanics_list = UnitFilter ( ai_mechanics_defend [ base ] diff ( ai_heal_these_humans [ base ] ^ ai_crane_driver [ base ] ) , [ f_not , [ f_driving ] ] ) ;
23563: LD_ADDR_VAR 0 3
23567: PUSH
23568: LD_EXP 33
23572: PUSH
23573: LD_VAR 0 12
23577: ARRAY
23578: PUSH
23579: LD_EXP 65
23583: PUSH
23584: LD_VAR 0 12
23588: ARRAY
23589: PUSH
23590: LD_EXP 82
23594: PUSH
23595: LD_VAR 0 12
23599: ARRAY
23600: ADD
23601: DIFF
23602: PPUSH
23603: LD_INT 3
23605: PUSH
23606: LD_INT 55
23608: PUSH
23609: EMPTY
23610: LIST
23611: PUSH
23612: EMPTY
23613: LIST
23614: LIST
23615: PPUSH
23616: CALL_OW 72
23620: ST_TO_ADDR
// if ai_crane_driver [ base ] > 0 and not IsOk ( ai_crane [ base ] ) then
23621: LD_EXP 82
23625: PUSH
23626: LD_VAR 0 12
23630: ARRAY
23631: PUSH
23632: LD_INT 0
23634: GREATER
23635: PUSH
23636: LD_EXP 78
23640: PUSH
23641: LD_VAR 0 12
23645: ARRAY
23646: PPUSH
23647: CALL_OW 302
23651: NOT
23652: AND
23653: IFFALSE 23677
// mechanics_list = mechanics_list ^ ai_crane_driver [ base ] ;
23655: LD_ADDR_VAR 0 3
23659: PUSH
23660: LD_VAR 0 3
23664: PUSH
23665: LD_EXP 82
23669: PUSH
23670: LD_VAR 0 12
23674: ARRAY
23675: ADD
23676: ST_TO_ADDR
// remote_mechanics = [ ] ;
23677: LD_ADDR_VAR 0 15
23681: PUSH
23682: EMPTY
23683: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
23684: LD_ADDR_VAR 0 4
23688: PUSH
23689: LD_EXP 65
23693: PUSH
23694: LD_VAR 0 12
23698: ARRAY
23699: ST_TO_ADDR
// i = 1 ;
23700: LD_ADDR_VAR 0 2
23704: PUSH
23705: LD_INT 1
23707: ST_TO_ADDR
// while i <= mechanics_list do
23708: LD_VAR 0 2
23712: PUSH
23713: LD_VAR 0 3
23717: LESSEQUAL
23718: IFFALSE 23801
// begin if GetLives ( mechanics_list [ i ] ) <= 900 then
23720: LD_VAR 0 3
23724: PUSH
23725: LD_VAR 0 2
23729: ARRAY
23730: PPUSH
23731: CALL_OW 256
23735: PUSH
23736: LD_INT 900
23738: LESSEQUAL
23739: IFFALSE 23785
// begin temp_list = temp_list ^ mechanics_list [ i ] ;
23741: LD_ADDR_VAR 0 4
23745: PUSH
23746: LD_VAR 0 4
23750: PUSH
23751: LD_VAR 0 3
23755: PUSH
23756: LD_VAR 0 2
23760: ARRAY
23761: ADD
23762: ST_TO_ADDR
// mechanics_list = Delete ( mechanics_list , i ) ;
23763: LD_ADDR_VAR 0 3
23767: PUSH
23768: LD_VAR 0 3
23772: PPUSH
23773: LD_VAR 0 2
23777: PPUSH
23778: CALL_OW 3
23782: ST_TO_ADDR
// continue ;
23783: GO 23708
// end ; i = i + 1 ;
23785: LD_ADDR_VAR 0 2
23789: PUSH
23790: LD_VAR 0 2
23794: PUSH
23795: LD_INT 1
23797: PLUS
23798: ST_TO_ADDR
// end ;
23799: GO 23708
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
23801: LD_ADDR_EXP 65
23805: PUSH
23806: LD_EXP 65
23810: PPUSH
23811: LD_VAR 0 12
23815: PPUSH
23816: LD_VAR 0 4
23820: PPUSH
23821: CALL_OW 1
23825: ST_TO_ADDR
// temp_list = [ ] ;
23826: LD_ADDR_VAR 0 4
23830: PUSH
23831: EMPTY
23832: ST_TO_ADDR
// for i in ai_vehicles_being_repaired [ base ] do
23833: LD_ADDR_VAR 0 2
23837: PUSH
23838: LD_EXP 60
23842: PUSH
23843: LD_VAR 0 12
23847: ARRAY
23848: PUSH
23849: FOR_IN
23850: IFFALSE 23885
// if GetLives ( i ) < 1000 then
23852: LD_VAR 0 2
23856: PPUSH
23857: CALL_OW 256
23861: PUSH
23862: LD_INT 1000
23864: LESS
23865: IFFALSE 23883
// temp_list = temp_list ^ i ;
23867: LD_ADDR_VAR 0 4
23871: PUSH
23872: LD_VAR 0 4
23876: PUSH
23877: LD_VAR 0 2
23881: ADD
23882: ST_TO_ADDR
23883: GO 23849
23885: POP
23886: POP
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
23887: LD_ADDR_EXP 60
23891: PUSH
23892: LD_EXP 60
23896: PPUSH
23897: LD_VAR 0 12
23901: PPUSH
23902: LD_VAR 0 4
23906: PPUSH
23907: CALL_OW 1
23911: ST_TO_ADDR
// temp_list = [ ] ;
23912: LD_ADDR_VAR 0 4
23916: PUSH
23917: EMPTY
23918: ST_TO_ADDR
// for i in ai_retreating_vehicles_defend [ base ] diff ai_vehicles_being_repaired [ base ] do
23919: LD_ADDR_VAR 0 2
23923: PUSH
23924: LD_EXP 59
23928: PUSH
23929: LD_VAR 0 12
23933: ARRAY
23934: PUSH
23935: LD_EXP 60
23939: PUSH
23940: LD_VAR 0 12
23944: ARRAY
23945: DIFF
23946: PUSH
23947: FOR_IN
23948: IFFALSE 23983
// if GetLives ( i ) < 1000 then
23950: LD_VAR 0 2
23954: PPUSH
23955: CALL_OW 256
23959: PUSH
23960: LD_INT 1000
23962: LESS
23963: IFFALSE 23981
// temp_list = temp_list ^ i ;
23965: LD_ADDR_VAR 0 4
23969: PUSH
23970: LD_VAR 0 4
23974: PUSH
23975: LD_VAR 0 2
23979: ADD
23980: ST_TO_ADDR
23981: GO 23947
23983: POP
23984: POP
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
23985: LD_ADDR_EXP 59
23989: PUSH
23990: LD_EXP 59
23994: PPUSH
23995: LD_VAR 0 12
23999: PPUSH
24000: LD_VAR 0 4
24004: PPUSH
24005: CALL_OW 1
24009: ST_TO_ADDR
// temp_list = ai_retreating_vehicles_defend [ base ] ;
24010: LD_ADDR_VAR 0 4
24014: PUSH
24015: LD_EXP 59
24019: PUSH
24020: LD_VAR 0 12
24024: ARRAY
24025: ST_TO_ADDR
// for i in ai_vehicles_defend [ base ] diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ) do
24026: LD_ADDR_VAR 0 2
24030: PUSH
24031: LD_EXP 57
24035: PUSH
24036: LD_VAR 0 12
24040: ARRAY
24041: PUSH
24042: LD_EXP 59
24046: PUSH
24047: LD_VAR 0 12
24051: ARRAY
24052: PUSH
24053: LD_EXP 60
24057: PUSH
24058: LD_VAR 0 12
24062: ARRAY
24063: ADD
24064: DIFF
24065: PUSH
24066: FOR_IN
24067: IFFALSE 24102
// if GetLives ( i ) <= 250 then
24069: LD_VAR 0 2
24073: PPUSH
24074: CALL_OW 256
24078: PUSH
24079: LD_INT 250
24081: LESSEQUAL
24082: IFFALSE 24100
// temp_list = temp_list ^ i ;
24084: LD_ADDR_VAR 0 4
24088: PUSH
24089: LD_VAR 0 4
24093: PUSH
24094: LD_VAR 0 2
24098: ADD
24099: ST_TO_ADDR
24100: GO 24066
24102: POP
24103: POP
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
24104: LD_ADDR_EXP 59
24108: PUSH
24109: LD_EXP 59
24113: PPUSH
24114: LD_VAR 0 12
24118: PPUSH
24119: LD_VAR 0 4
24123: PPUSH
24124: CALL_OW 1
24128: ST_TO_ADDR
// temp_list = [ ] ;
24129: LD_ADDR_VAR 0 4
24133: PUSH
24134: EMPTY
24135: ST_TO_ADDR
// for i in ai_refuel_vehicles_list [ base ] diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) do
24136: LD_ADDR_VAR 0 2
24140: PUSH
24141: LD_EXP 61
24145: PUSH
24146: LD_VAR 0 12
24150: ARRAY
24151: PUSH
24152: LD_EXP 59
24156: PUSH
24157: LD_VAR 0 12
24161: ARRAY
24162: PUSH
24163: LD_EXP 60
24167: PUSH
24168: LD_VAR 0 12
24172: ARRAY
24173: ADD
24174: PUSH
24175: LD_EXP 68
24179: PUSH
24180: LD_VAR 0 12
24184: ARRAY
24185: ADD
24186: PUSH
24187: LD_EXP 69
24191: PUSH
24192: LD_VAR 0 12
24196: ARRAY
24197: ADD
24198: DIFF
24199: PUSH
24200: FOR_IN
24201: IFFALSE 24236
// if GetFuel ( i ) < 95 then
24203: LD_VAR 0 2
24207: PPUSH
24208: CALL_OW 261
24212: PUSH
24213: LD_INT 95
24215: LESS
24216: IFFALSE 24234
// temp_list = temp_list ^ i ;
24218: LD_ADDR_VAR 0 4
24222: PUSH
24223: LD_VAR 0 4
24227: PUSH
24228: LD_VAR 0 2
24232: ADD
24233: ST_TO_ADDR
24234: GO 24200
24236: POP
24237: POP
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
24238: LD_ADDR_EXP 61
24242: PUSH
24243: LD_EXP 61
24247: PPUSH
24248: LD_VAR 0 12
24252: PPUSH
24253: LD_VAR 0 4
24257: PPUSH
24258: CALL_OW 1
24262: ST_TO_ADDR
// if under_attack then
24263: LD_VAR 0 9
24267: IFFALSE 25008
// begin vehicles_list = ai_vehicles_defend [ base ] diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) ;
24269: LD_ADDR_VAR 0 7
24273: PUSH
24274: LD_EXP 57
24278: PUSH
24279: LD_VAR 0 12
24283: ARRAY
24284: PUSH
24285: LD_EXP 59
24289: PUSH
24290: LD_VAR 0 12
24294: ARRAY
24295: PUSH
24296: LD_EXP 60
24300: PUSH
24301: LD_VAR 0 12
24305: ARRAY
24306: ADD
24307: PUSH
24308: LD_EXP 68
24312: PUSH
24313: LD_VAR 0 12
24317: ARRAY
24318: ADD
24319: PUSH
24320: LD_EXP 69
24324: PUSH
24325: LD_VAR 0 12
24329: ARRAY
24330: ADD
24331: DIFF
24332: ST_TO_ADDR
// temp_list = UnitFilter ( vehicles_list , [ [ f_control , control_manual ] , [ f_ok ] , [ f_empty ] , [ f_inarea , area ] ] ) ;
24333: LD_ADDR_VAR 0 4
24337: PUSH
24338: LD_VAR 0 7
24342: PPUSH
24343: LD_INT 33
24345: PUSH
24346: LD_INT 1
24348: PUSH
24349: EMPTY
24350: LIST
24351: LIST
24352: PUSH
24353: LD_INT 50
24355: PUSH
24356: EMPTY
24357: LIST
24358: PUSH
24359: LD_INT 58
24361: PUSH
24362: EMPTY
24363: LIST
24364: PUSH
24365: LD_INT 95
24367: PUSH
24368: LD_VAR 0 13
24372: PUSH
24373: EMPTY
24374: LIST
24375: LIST
24376: PUSH
24377: EMPTY
24378: LIST
24379: LIST
24380: LIST
24381: LIST
24382: PPUSH
24383: CALL_OW 72
24387: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
24388: LD_ADDR_VAR 0 4
24392: PUSH
24393: LD_VAR 0 4
24397: PPUSH
24398: LD_VAR 0 3
24402: PPUSH
24403: LD_VAR 0 25
24407: PPUSH
24408: CALL 28530 0 3
24412: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
24413: LD_ADDR_VAR 0 3
24417: PUSH
24418: LD_VAR 0 4
24422: PUSH
24423: LD_INT 1
24425: ARRAY
24426: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
24427: LD_ADDR_VAR 0 25
24431: PUSH
24432: LD_VAR 0 4
24436: PUSH
24437: LD_INT 2
24439: ARRAY
24440: ST_TO_ADDR
// case base of 1 :
24441: LD_VAR 0 12
24445: PUSH
24446: LD_INT 1
24448: DOUBLE
24449: EQUAL
24450: IFTRUE 24454
24452: GO 24498
24454: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base1_vehicle_defend ] ] ) ) ; 2 :
24455: LD_ADDR_VAR 0 4
24459: PUSH
24460: LD_INT 81
24462: PUSH
24463: LD_VAR 0 1
24467: PUSH
24468: EMPTY
24469: LIST
24470: LIST
24471: PUSH
24472: LD_INT 95
24474: PUSH
24475: LD_INT 12
24477: PUSH
24478: EMPTY
24479: LIST
24480: LIST
24481: PUSH
24482: EMPTY
24483: LIST
24484: LIST
24485: PPUSH
24486: CALL_OW 69
24490: PPUSH
24491: CALL 31188 0 1
24495: ST_TO_ADDR
24496: GO 24759
24498: LD_INT 2
24500: DOUBLE
24501: EQUAL
24502: IFTRUE 24506
24504: GO 24550
24506: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base2_vehicle_defend ] ] ) ) ; 3 :
24507: LD_ADDR_VAR 0 4
24511: PUSH
24512: LD_INT 81
24514: PUSH
24515: LD_VAR 0 1
24519: PUSH
24520: EMPTY
24521: LIST
24522: LIST
24523: PUSH
24524: LD_INT 95
24526: PUSH
24527: LD_INT 6
24529: PUSH
24530: EMPTY
24531: LIST
24532: LIST
24533: PUSH
24534: EMPTY
24535: LIST
24536: LIST
24537: PPUSH
24538: CALL_OW 69
24542: PPUSH
24543: CALL 31188 0 1
24547: ST_TO_ADDR
24548: GO 24759
24550: LD_INT 3
24552: DOUBLE
24553: EQUAL
24554: IFTRUE 24558
24556: GO 24602
24558: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base3_vehicle_defend ] ] ) ) ; 4 :
24559: LD_ADDR_VAR 0 4
24563: PUSH
24564: LD_INT 81
24566: PUSH
24567: LD_VAR 0 1
24571: PUSH
24572: EMPTY
24573: LIST
24574: LIST
24575: PUSH
24576: LD_INT 95
24578: PUSH
24579: LD_INT 13
24581: PUSH
24582: EMPTY
24583: LIST
24584: LIST
24585: PUSH
24586: EMPTY
24587: LIST
24588: LIST
24589: PPUSH
24590: CALL_OW 69
24594: PPUSH
24595: CALL 31188 0 1
24599: ST_TO_ADDR
24600: GO 24759
24602: LD_INT 4
24604: DOUBLE
24605: EQUAL
24606: IFTRUE 24610
24608: GO 24654
24610: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base4_vehicle_defend ] ] ) ) ; 5 :
24611: LD_ADDR_VAR 0 4
24615: PUSH
24616: LD_INT 81
24618: PUSH
24619: LD_VAR 0 1
24623: PUSH
24624: EMPTY
24625: LIST
24626: LIST
24627: PUSH
24628: LD_INT 95
24630: PUSH
24631: LD_INT 14
24633: PUSH
24634: EMPTY
24635: LIST
24636: LIST
24637: PUSH
24638: EMPTY
24639: LIST
24640: LIST
24641: PPUSH
24642: CALL_OW 69
24646: PPUSH
24647: CALL 31188 0 1
24651: ST_TO_ADDR
24652: GO 24759
24654: LD_INT 5
24656: DOUBLE
24657: EQUAL
24658: IFTRUE 24662
24660: GO 24706
24662: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base5_vehicle_defend ] ] ) ) ; 6 :
24663: LD_ADDR_VAR 0 4
24667: PUSH
24668: LD_INT 81
24670: PUSH
24671: LD_VAR 0 1
24675: PUSH
24676: EMPTY
24677: LIST
24678: LIST
24679: PUSH
24680: LD_INT 95
24682: PUSH
24683: LD_INT 15
24685: PUSH
24686: EMPTY
24687: LIST
24688: LIST
24689: PUSH
24690: EMPTY
24691: LIST
24692: LIST
24693: PPUSH
24694: CALL_OW 69
24698: PPUSH
24699: CALL 31188 0 1
24703: ST_TO_ADDR
24704: GO 24759
24706: LD_INT 6
24708: DOUBLE
24709: EQUAL
24710: IFTRUE 24714
24712: GO 24758
24714: POP
// temp_list = DangerousUnits ( FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , base6_vehicle_defend ] ] ) ) ; end ;
24715: LD_ADDR_VAR 0 4
24719: PUSH
24720: LD_INT 81
24722: PUSH
24723: LD_VAR 0 1
24727: PUSH
24728: EMPTY
24729: LIST
24730: LIST
24731: PUSH
24732: LD_INT 95
24734: PUSH
24735: LD_INT 16
24737: PUSH
24738: EMPTY
24739: LIST
24740: LIST
24741: PUSH
24742: EMPTY
24743: LIST
24744: LIST
24745: PPUSH
24746: CALL_OW 69
24750: PPUSH
24751: CALL 31188 0 1
24755: ST_TO_ADDR
24756: GO 24759
24758: POP
// if temp_list > 0 then
24759: LD_VAR 0 4
24763: PUSH
24764: LD_INT 0
24766: GREATER
24767: IFFALSE 24842
// begin if validhex ( GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) ) then
24769: LD_VAR 0 4
24773: PUSH
24774: LD_INT 1
24776: ARRAY
24777: PPUSH
24778: CALL_OW 250
24782: PPUSH
24783: LD_VAR 0 4
24787: PUSH
24788: LD_INT 1
24790: ARRAY
24791: PPUSH
24792: CALL_OW 251
24796: PPUSH
24797: CALL_OW 488
24801: IFFALSE 24840
// ComAgressiveMove ( vehicles_list , GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) ) ;
24803: LD_VAR 0 7
24807: PPUSH
24808: LD_VAR 0 4
24812: PUSH
24813: LD_INT 1
24815: ARRAY
24816: PPUSH
24817: CALL_OW 250
24821: PPUSH
24822: LD_VAR 0 4
24826: PUSH
24827: LD_INT 1
24829: ARRAY
24830: PPUSH
24831: CALL_OW 251
24835: PPUSH
24836: CALL_OW 114
// end else
24840: GO 25006
// begin temp_list = FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , area ] ] ) ;
24842: LD_ADDR_VAR 0 4
24846: PUSH
24847: LD_INT 81
24849: PUSH
24850: LD_VAR 0 1
24854: PUSH
24855: EMPTY
24856: LIST
24857: LIST
24858: PUSH
24859: LD_INT 95
24861: PUSH
24862: LD_VAR 0 13
24866: PUSH
24867: EMPTY
24868: LIST
24869: LIST
24870: PUSH
24871: EMPTY
24872: LIST
24873: LIST
24874: PPUSH
24875: CALL_OW 69
24879: ST_TO_ADDR
// if temp_list > 0 then
24880: LD_VAR 0 4
24884: PUSH
24885: LD_INT 0
24887: GREATER
24888: IFFALSE 25006
// begin temp_list_2 = DangerousUnits ( temp_list ) ;
24890: LD_ADDR_VAR 0 14
24894: PUSH
24895: LD_VAR 0 4
24899: PPUSH
24900: CALL 31188 0 1
24904: ST_TO_ADDR
// if temp_list_2 = 0 then
24905: LD_VAR 0 14
24909: PUSH
24910: LD_INT 0
24912: EQUAL
24913: IFFALSE 24935
// ComAttackUnit ( vehicles_list , temp_list [ 1 ] ) else
24915: LD_VAR 0 7
24919: PPUSH
24920: LD_VAR 0 4
24924: PUSH
24925: LD_INT 1
24927: ARRAY
24928: PPUSH
24929: CALL_OW 115
24933: GO 25006
// if validhex ( GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) ) then
24935: LD_VAR 0 4
24939: PUSH
24940: LD_INT 1
24942: ARRAY
24943: PPUSH
24944: CALL_OW 250
24948: PPUSH
24949: LD_VAR 0 4
24953: PUSH
24954: LD_INT 1
24956: ARRAY
24957: PPUSH
24958: CALL_OW 251
24962: PPUSH
24963: CALL_OW 488
24967: IFFALSE 25006
// ComAgressiveMove ( vehicles_list , GetX ( temp_list_2 [ 1 ] ) , GetY ( temp_list_2 [ 1 ] ) ) ;
24969: LD_VAR 0 7
24973: PPUSH
24974: LD_VAR 0 14
24978: PUSH
24979: LD_INT 1
24981: ARRAY
24982: PPUSH
24983: CALL_OW 250
24987: PPUSH
24988: LD_VAR 0 14
24992: PUSH
24993: LD_INT 1
24995: ARRAY
24996: PPUSH
24997: CALL_OW 251
25001: PPUSH
25002: CALL_OW 114
// end ; end ; end else
25006: GO 25611
// begin if IsOk ( ai_depot [ base ] ) then
25008: LD_EXP 39
25012: PUSH
25013: LD_VAR 0 12
25017: ARRAY
25018: PPUSH
25019: CALL_OW 302
25023: IFFALSE 25438
// begin temp_list = ai_refuel_vehicles_list [ base ] ;
25025: LD_ADDR_VAR 0 4
25029: PUSH
25030: LD_EXP 61
25034: PUSH
25035: LD_VAR 0 12
25039: ARRAY
25040: ST_TO_ADDR
// for i in ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ) diff ai_refuel_vehicles_list [ base ] do
25041: LD_ADDR_VAR 0 2
25045: PUSH
25046: LD_EXP 57
25050: PUSH
25051: LD_VAR 0 12
25055: ARRAY
25056: PUSH
25057: LD_EXP 90
25061: PUSH
25062: LD_VAR 0 12
25066: ARRAY
25067: ADD
25068: PUSH
25069: LD_EXP 61
25073: PUSH
25074: LD_VAR 0 12
25078: ARRAY
25079: DIFF
25080: PUSH
25081: FOR_IN
25082: IFFALSE 25132
// if GetFuel ( i ) < 70 and GetEngine ( i ) = engine_combustion then
25084: LD_VAR 0 2
25088: PPUSH
25089: CALL_OW 261
25093: PUSH
25094: LD_INT 70
25096: LESS
25097: PUSH
25098: LD_VAR 0 2
25102: PPUSH
25103: CALL_OW 262
25107: PUSH
25108: LD_INT 1
25110: EQUAL
25111: AND
25112: IFFALSE 25130
// temp_list = temp_list ^ i ;
25114: LD_ADDR_VAR 0 4
25118: PUSH
25119: LD_VAR 0 4
25123: PUSH
25124: LD_VAR 0 2
25128: ADD
25129: ST_TO_ADDR
25130: GO 25081
25132: POP
25133: POP
// temp_list = temp_list diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) ;
25134: LD_ADDR_VAR 0 4
25138: PUSH
25139: LD_VAR 0 4
25143: PUSH
25144: LD_EXP 59
25148: PUSH
25149: LD_VAR 0 12
25153: ARRAY
25154: PUSH
25155: LD_EXP 60
25159: PUSH
25160: LD_VAR 0 12
25164: ARRAY
25165: ADD
25166: PUSH
25167: LD_EXP 68
25171: PUSH
25172: LD_VAR 0 12
25176: ARRAY
25177: ADD
25178: PUSH
25179: LD_EXP 69
25183: PUSH
25184: LD_VAR 0 12
25188: ARRAY
25189: ADD
25190: DIFF
25191: ST_TO_ADDR
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
25192: LD_ADDR_EXP 61
25196: PUSH
25197: LD_EXP 61
25201: PPUSH
25202: LD_VAR 0 12
25206: PPUSH
25207: LD_VAR 0 4
25211: PPUSH
25212: CALL_OW 1
25216: ST_TO_ADDR
// temp_list = UnitFilter ( ai_refuel_vehicles_list [ base ] , [ [ f_control , control_manual ] , [ f_empty ] , [ f_ok ] ] ) ;
25217: LD_ADDR_VAR 0 4
25221: PUSH
25222: LD_EXP 61
25226: PUSH
25227: LD_VAR 0 12
25231: ARRAY
25232: PPUSH
25233: LD_INT 33
25235: PUSH
25236: LD_INT 1
25238: PUSH
25239: EMPTY
25240: LIST
25241: LIST
25242: PUSH
25243: LD_INT 58
25245: PUSH
25246: EMPTY
25247: LIST
25248: PUSH
25249: LD_INT 50
25251: PUSH
25252: EMPTY
25253: LIST
25254: PUSH
25255: EMPTY
25256: LIST
25257: LIST
25258: LIST
25259: PPUSH
25260: CALL_OW 72
25264: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
25265: LD_ADDR_VAR 0 4
25269: PUSH
25270: LD_VAR 0 4
25274: PPUSH
25275: LD_VAR 0 3
25279: PPUSH
25280: LD_VAR 0 25
25284: PPUSH
25285: CALL 28530 0 3
25289: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
25290: LD_ADDR_VAR 0 3
25294: PUSH
25295: LD_VAR 0 4
25299: PUSH
25300: LD_INT 1
25302: ARRAY
25303: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
25304: LD_ADDR_VAR 0 25
25308: PUSH
25309: LD_VAR 0 4
25313: PUSH
25314: LD_INT 2
25316: ARRAY
25317: ST_TO_ADDR
// for i in ai_refuel_vehicles_list [ base ] do
25318: LD_ADDR_VAR 0 2
25322: PUSH
25323: LD_EXP 61
25327: PUSH
25328: LD_VAR 0 12
25332: ARRAY
25333: PUSH
25334: FOR_IN
25335: IFFALSE 25436
// begin if IsInArea ( i , area ) then
25337: LD_VAR 0 2
25341: PPUSH
25342: LD_VAR 0 13
25346: PPUSH
25347: CALL_OW 308
25351: IFFALSE 25395
// begin ComMoveUnit ( i , ai_depot [ base ] ) ;
25353: LD_VAR 0 2
25357: PPUSH
25358: LD_EXP 39
25362: PUSH
25363: LD_VAR 0 12
25367: ARRAY
25368: PPUSH
25369: CALL_OW 112
// AddComRefuel ( i , ai_depot [ base ] ) ;
25373: LD_VAR 0 2
25377: PPUSH
25378: LD_EXP 39
25382: PUSH
25383: LD_VAR 0 12
25387: ARRAY
25388: PPUSH
25389: CALL_OW 210
// end else
25393: GO 25434
// ComAgressiveMove ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
25395: LD_VAR 0 2
25399: PPUSH
25400: LD_EXP 63
25404: PUSH
25405: LD_VAR 0 12
25409: ARRAY
25410: PUSH
25411: LD_INT 1
25413: ARRAY
25414: PPUSH
25415: LD_EXP 63
25419: PUSH
25420: LD_VAR 0 12
25424: ARRAY
25425: PUSH
25426: LD_INT 2
25428: ARRAY
25429: PPUSH
25430: CALL_OW 114
// end ;
25434: GO 25334
25436: POP
25437: POP
// end ; for i in UnitFilter ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] , [ f_not , [ f_control , control_manual ] ] ) diff ( ai_refuel_vehicles_list [ base ] ^ ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) do
25438: LD_ADDR_VAR 0 2
25442: PUSH
25443: LD_EXP 57
25447: PUSH
25448: LD_VAR 0 12
25452: ARRAY
25453: PUSH
25454: LD_EXP 90
25458: PUSH
25459: LD_VAR 0 12
25463: ARRAY
25464: ADD
25465: PPUSH
25466: LD_INT 3
25468: PUSH
25469: LD_INT 33
25471: PUSH
25472: LD_INT 1
25474: PUSH
25475: EMPTY
25476: LIST
25477: LIST
25478: PUSH
25479: EMPTY
25480: LIST
25481: LIST
25482: PPUSH
25483: CALL_OW 72
25487: PUSH
25488: LD_EXP 61
25492: PUSH
25493: LD_VAR 0 12
25497: ARRAY
25498: PUSH
25499: LD_EXP 59
25503: PUSH
25504: LD_VAR 0 12
25508: ARRAY
25509: ADD
25510: PUSH
25511: LD_EXP 60
25515: PUSH
25516: LD_VAR 0 12
25520: ARRAY
25521: ADD
25522: PUSH
25523: LD_EXP 68
25527: PUSH
25528: LD_VAR 0 12
25532: ARRAY
25533: ADD
25534: PUSH
25535: LD_EXP 69
25539: PUSH
25540: LD_VAR 0 12
25544: ARRAY
25545: ADD
25546: DIFF
25547: PUSH
25548: FOR_IN
25549: IFFALSE 25609
// if not IsInArea ( i , area ) then
25551: LD_VAR 0 2
25555: PPUSH
25556: LD_VAR 0 13
25560: PPUSH
25561: CALL_OW 308
25565: NOT
25566: IFFALSE 25607
// ComAgressiveMove ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
25568: LD_VAR 0 2
25572: PPUSH
25573: LD_EXP 63
25577: PUSH
25578: LD_VAR 0 12
25582: ARRAY
25583: PUSH
25584: LD_INT 1
25586: ARRAY
25587: PPUSH
25588: LD_EXP 63
25592: PUSH
25593: LD_VAR 0 12
25597: ARRAY
25598: PUSH
25599: LD_INT 2
25601: ARRAY
25602: PPUSH
25603: CALL_OW 114
25607: GO 25548
25609: POP
25610: POP
// end ; free_parking_spots = [ ] ;
25611: LD_ADDR_VAR 0 10
25615: PUSH
25616: EMPTY
25617: ST_TO_ADDR
// parked_vehicles = [ ] ;
25618: LD_ADDR_VAR 0 16
25622: PUSH
25623: EMPTY
25624: ST_TO_ADDR
// temp_list_2 = UnitFilter ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] , [ f_control , control_manual ] ) ;
25625: LD_ADDR_VAR 0 14
25629: PUSH
25630: LD_EXP 57
25634: PUSH
25635: LD_VAR 0 12
25639: ARRAY
25640: PUSH
25641: LD_EXP 90
25645: PUSH
25646: LD_VAR 0 12
25650: ARRAY
25651: ADD
25652: PPUSH
25653: LD_INT 33
25655: PUSH
25656: LD_INT 1
25658: PUSH
25659: EMPTY
25660: LIST
25661: LIST
25662: PPUSH
25663: CALL_OW 72
25667: ST_TO_ADDR
// for i in ai_vehicle_pullback_hexes [ base ] do
25668: LD_ADDR_VAR 0 2
25672: PUSH
25673: LD_EXP 62
25677: PUSH
25678: LD_VAR 0 12
25682: ARRAY
25683: PUSH
25684: FOR_IN
25685: IFFALSE 26007
// begin temp_unit = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
25687: LD_ADDR_VAR 0 6
25691: PUSH
25692: LD_VAR 0 2
25696: PUSH
25697: LD_INT 1
25699: ARRAY
25700: PPUSH
25701: LD_VAR 0 2
25705: PUSH
25706: LD_INT 2
25708: ARRAY
25709: PPUSH
25710: CALL_OW 428
25714: ST_TO_ADDR
// if temp_unit in temp_list_2 then
25715: LD_VAR 0 6
25719: PUSH
25720: LD_VAR 0 14
25724: IN
25725: IFFALSE 25881
// begin parked_vehicles = parked_vehicles ^ temp_unit ;
25727: LD_ADDR_VAR 0 16
25731: PUSH
25732: LD_VAR 0 16
25736: PUSH
25737: LD_VAR 0 6
25741: ADD
25742: ST_TO_ADDR
// if not under_attack and not temp_unit in ( ai_refuel_vehicles_list [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_crane [ base ] ^ ai_cargo_bay [ base ] ) then
25743: LD_VAR 0 9
25747: NOT
25748: PUSH
25749: LD_VAR 0 6
25753: PUSH
25754: LD_EXP 61
25758: PUSH
25759: LD_VAR 0 12
25763: ARRAY
25764: PUSH
25765: LD_EXP 68
25769: PUSH
25770: LD_VAR 0 12
25774: ARRAY
25775: ADD
25776: PUSH
25777: LD_EXP 69
25781: PUSH
25782: LD_VAR 0 12
25786: ARRAY
25787: ADD
25788: PUSH
25789: LD_EXP 78
25793: PUSH
25794: LD_VAR 0 12
25798: ARRAY
25799: ADD
25800: PUSH
25801: LD_EXP 75
25805: PUSH
25806: LD_VAR 0 12
25810: ARRAY
25811: ADD
25812: IN
25813: NOT
25814: AND
25815: IFFALSE 25879
// begin k = IsDrivenBy ( temp_unit ) ;
25817: LD_ADDR_VAR 0 11
25821: PUSH
25822: LD_VAR 0 6
25826: PPUSH
25827: CALL_OW 311
25831: ST_TO_ADDR
// if GetControl ( temp_unit ) = control_manual and k > 0 and not k in remote_mechanics then
25832: LD_VAR 0 6
25836: PPUSH
25837: CALL_OW 263
25841: PUSH
25842: LD_INT 1
25844: EQUAL
25845: PUSH
25846: LD_VAR 0 11
25850: PUSH
25851: LD_INT 0
25853: GREATER
25854: AND
25855: PUSH
25856: LD_VAR 0 11
25860: PUSH
25861: LD_VAR 0 15
25865: IN
25866: NOT
25867: AND
25868: IFFALSE 25879
// begin ComExitVehicle ( k ) ;
25870: LD_VAR 0 11
25874: PPUSH
25875: CALL_OW 121
// end ; end ; end else
25879: GO 26005
// if temp_unit = 0 or not ( GetType ( temp_unit ) = unit_building or ( GetType ( temp_unit ) = unit_vehicle and ( ( GetControl ( temp_unit ) = control_manual and IsDrivenBy ( temp_unit ) = 0 ) or ( GetControl ( temp_unit ) = control_remote and IsControledBy ( temp_unit ) = 0 ) ) ) ) then
25881: LD_VAR 0 6
25885: PUSH
25886: LD_INT 0
25888: EQUAL
25889: PUSH
25890: LD_VAR 0 6
25894: PPUSH
25895: CALL_OW 247
25899: PUSH
25900: LD_INT 3
25902: EQUAL
25903: PUSH
25904: LD_VAR 0 6
25908: PPUSH
25909: CALL_OW 247
25913: PUSH
25914: LD_INT 2
25916: EQUAL
25917: PUSH
25918: LD_VAR 0 6
25922: PPUSH
25923: CALL_OW 263
25927: PUSH
25928: LD_INT 1
25930: EQUAL
25931: PUSH
25932: LD_VAR 0 6
25936: PPUSH
25937: CALL_OW 311
25941: PUSH
25942: LD_INT 0
25944: EQUAL
25945: AND
25946: PUSH
25947: LD_VAR 0 6
25951: PPUSH
25952: CALL_OW 263
25956: PUSH
25957: LD_INT 2
25959: EQUAL
25960: PUSH
25961: LD_VAR 0 6
25965: PPUSH
25966: CALL_OW 312
25970: PUSH
25971: LD_INT 0
25973: EQUAL
25974: AND
25975: OR
25976: AND
25977: OR
25978: NOT
25979: OR
25980: IFFALSE 26005
// free_parking_spots = Insert ( free_parking_spots , 1 , i ) ;
25982: LD_ADDR_VAR 0 10
25986: PUSH
25987: LD_VAR 0 10
25991: PPUSH
25992: LD_INT 1
25994: PPUSH
25995: LD_VAR 0 2
25999: PPUSH
26000: CALL_OW 2
26004: ST_TO_ADDR
// end ;
26005: GO 25684
26007: POP
26008: POP
// if under_attack then
26009: LD_VAR 0 9
26013: IFFALSE 26510
// begin allowed_to_repair_vehicles = parked_vehicles ;
26015: LD_ADDR_VAR 0 8
26019: PUSH
26020: LD_VAR 0 16
26024: ST_TO_ADDR
// vehicles_list = UnitFilter ( ( ai_vehicles_being_repaired [ base ] ^ ai_retreating_vehicles_defend [ base ] ) diff parked_vehicles , [ [ f_control , control_manual ] , [ f_ok ] ] ) ;
26025: LD_ADDR_VAR 0 7
26029: PUSH
26030: LD_EXP 60
26034: PUSH
26035: LD_VAR 0 12
26039: ARRAY
26040: PUSH
26041: LD_EXP 59
26045: PUSH
26046: LD_VAR 0 12
26050: ARRAY
26051: ADD
26052: PUSH
26053: LD_VAR 0 16
26057: DIFF
26058: PPUSH
26059: LD_INT 33
26061: PUSH
26062: LD_INT 1
26064: PUSH
26065: EMPTY
26066: LIST
26067: LIST
26068: PUSH
26069: LD_INT 50
26071: PUSH
26072: EMPTY
26073: LIST
26074: PUSH
26075: EMPTY
26076: LIST
26077: LIST
26078: PPUSH
26079: CALL_OW 72
26083: ST_TO_ADDR
// vehicles_list = vehicles_list union UnitFilter ( ( parked_vehicles ^ ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) , [ f_ok ] ) ;
26084: LD_ADDR_VAR 0 7
26088: PUSH
26089: LD_VAR 0 7
26093: PUSH
26094: LD_VAR 0 16
26098: PUSH
26099: LD_EXP 61
26103: PUSH
26104: LD_VAR 0 12
26108: ARRAY
26109: ADD
26110: PUSH
26111: LD_EXP 69
26115: PUSH
26116: LD_VAR 0 12
26120: ARRAY
26121: ADD
26122: PUSH
26123: LD_EXP 68
26127: PUSH
26128: LD_VAR 0 12
26132: ARRAY
26133: ADD
26134: PPUSH
26135: LD_INT 50
26137: PUSH
26138: EMPTY
26139: LIST
26140: PPUSH
26141: CALL_OW 72
26145: UNION
26146: ST_TO_ADDR
// temp_list = [ ] ;
26147: LD_ADDR_VAR 0 4
26151: PUSH
26152: EMPTY
26153: ST_TO_ADDR
// temp_list_3 = parked_vehicles isect UnitFilter ( ai_vehicles_being_repaired [ base ] ^ ai_retreating_vehicles_defend [ base ] , [ f_ok ] ) ;
26154: LD_ADDR_VAR 0 5
26158: PUSH
26159: LD_VAR 0 16
26163: PUSH
26164: LD_EXP 60
26168: PUSH
26169: LD_VAR 0 12
26173: ARRAY
26174: PUSH
26175: LD_EXP 59
26179: PUSH
26180: LD_VAR 0 12
26184: ARRAY
26185: ADD
26186: PPUSH
26187: LD_INT 50
26189: PUSH
26190: EMPTY
26191: LIST
26192: PPUSH
26193: CALL_OW 72
26197: ISECT
26198: ST_TO_ADDR
// for i in temp_list_3 do
26199: LD_ADDR_VAR 0 2
26203: PUSH
26204: LD_VAR 0 5
26208: PUSH
26209: FOR_IN
26210: IFFALSE 26267
// if UnitShoot ( i ) > 0 then
26212: LD_VAR 0 2
26216: PPUSH
26217: CALL_OW 504
26221: PUSH
26222: LD_INT 0
26224: GREATER
26225: IFFALSE 26265
// if GetSide ( UnitShoot ( i ) ) <> side then
26227: LD_VAR 0 2
26231: PPUSH
26232: CALL_OW 504
26236: PPUSH
26237: CALL_OW 255
26241: PUSH
26242: LD_VAR 0 1
26246: NONEQUAL
26247: IFFALSE 26265
// temp_list = temp_list ^ i ;
26249: LD_ADDR_VAR 0 4
26253: PUSH
26254: LD_VAR 0 4
26258: PUSH
26259: LD_VAR 0 2
26263: ADD
26264: ST_TO_ADDR
26265: GO 26209
26267: POP
26268: POP
// for i in ai_mechanics_defend [ base ] do
26269: LD_ADDR_VAR 0 2
26273: PUSH
26274: LD_EXP 33
26278: PUSH
26279: LD_VAR 0 12
26283: ARRAY
26284: PUSH
26285: FOR_IN
26286: IFFALSE 26370
// if UnitShoot ( i ) > 0 then
26288: LD_VAR 0 2
26292: PPUSH
26293: CALL_OW 504
26297: PUSH
26298: LD_INT 0
26300: GREATER
26301: IFFALSE 26368
// if GetSide ( UnitShoot ( i ) ) <> side then
26303: LD_VAR 0 2
26307: PPUSH
26308: CALL_OW 504
26312: PPUSH
26313: CALL_OW 255
26317: PUSH
26318: LD_VAR 0 1
26322: NONEQUAL
26323: IFFALSE 26368
// temp_list = temp_list ^ UnitFilter ( temp_list_3 diff temp_list , [ f_dist , i , 5 ] ) ;
26325: LD_ADDR_VAR 0 4
26329: PUSH
26330: LD_VAR 0 4
26334: PUSH
26335: LD_VAR 0 5
26339: PUSH
26340: LD_VAR 0 4
26344: DIFF
26345: PPUSH
26346: LD_INT 91
26348: PUSH
26349: LD_VAR 0 2
26353: PUSH
26354: LD_INT 5
26356: PUSH
26357: EMPTY
26358: LIST
26359: LIST
26360: LIST
26361: PPUSH
26362: CALL_OW 72
26366: ADD
26367: ST_TO_ADDR
26368: GO 26285
26370: POP
26371: POP
// for i in temp_list_3 diff temp_list do
26372: LD_ADDR_VAR 0 2
26376: PUSH
26377: LD_VAR 0 5
26381: PUSH
26382: LD_VAR 0 4
26386: DIFF
26387: PUSH
26388: FOR_IN
26389: IFFALSE 26422
// if GetControl ( i ) = control_manual then
26391: LD_VAR 0 2
26395: PPUSH
26396: CALL_OW 263
26400: PUSH
26401: LD_INT 1
26403: EQUAL
26404: IFFALSE 26420
// begin ComExitVehicle ( IsDrivenBy ( i ) ) ;
26406: LD_VAR 0 2
26410: PPUSH
26411: CALL_OW 311
26415: PPUSH
26416: CALL_OW 121
// end ;
26420: GO 26388
26422: POP
26423: POP
// temp_list = UnitFilter ( temp_list , [ [ f_empty ] , [ f_ok ] ] ) ;
26424: LD_ADDR_VAR 0 4
26428: PUSH
26429: LD_VAR 0 4
26433: PPUSH
26434: LD_INT 58
26436: PUSH
26437: EMPTY
26438: LIST
26439: PUSH
26440: LD_INT 50
26442: PUSH
26443: EMPTY
26444: LIST
26445: PUSH
26446: EMPTY
26447: LIST
26448: LIST
26449: PPUSH
26450: CALL_OW 72
26454: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
26455: LD_ADDR_VAR 0 4
26459: PUSH
26460: LD_VAR 0 4
26464: PPUSH
26465: LD_VAR 0 3
26469: PPUSH
26470: LD_VAR 0 25
26474: PPUSH
26475: CALL 28530 0 3
26479: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
26480: LD_ADDR_VAR 0 3
26484: PUSH
26485: LD_VAR 0 4
26489: PUSH
26490: LD_INT 1
26492: ARRAY
26493: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
26494: LD_ADDR_VAR 0 25
26498: PUSH
26499: LD_VAR 0 4
26503: PUSH
26504: LD_INT 2
26506: ARRAY
26507: ST_TO_ADDR
// end else
26508: GO 26812
// begin allowed_to_repair_vehicles = ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ) diff ( ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) ;
26510: LD_ADDR_VAR 0 8
26514: PUSH
26515: LD_EXP 57
26519: PUSH
26520: LD_VAR 0 12
26524: ARRAY
26525: PUSH
26526: LD_EXP 90
26530: PUSH
26531: LD_VAR 0 12
26535: ARRAY
26536: ADD
26537: PUSH
26538: LD_EXP 61
26542: PUSH
26543: LD_VAR 0 12
26547: ARRAY
26548: PUSH
26549: LD_EXP 69
26553: PUSH
26554: LD_VAR 0 12
26558: ARRAY
26559: ADD
26560: PUSH
26561: LD_EXP 68
26565: PUSH
26566: LD_VAR 0 12
26570: ARRAY
26571: ADD
26572: DIFF
26573: ST_TO_ADDR
// i = 1 ;
26574: LD_ADDR_VAR 0 2
26578: PUSH
26579: LD_INT 1
26581: ST_TO_ADDR
// while i <= allowed_to_repair_vehicles do
26582: LD_VAR 0 2
26586: PUSH
26587: LD_VAR 0 8
26591: LESSEQUAL
26592: IFFALSE 26676
// begin if not IsOk ( allowed_to_repair_vehicles [ i ] ) and GetDistUnitArea ( allowed_to_repair_vehicles [ i ] , area ) > 7 then
26594: LD_VAR 0 8
26598: PUSH
26599: LD_VAR 0 2
26603: ARRAY
26604: PPUSH
26605: CALL_OW 302
26609: NOT
26610: PUSH
26611: LD_VAR 0 8
26615: PUSH
26616: LD_VAR 0 2
26620: ARRAY
26621: PPUSH
26622: LD_VAR 0 13
26626: PPUSH
26627: CALL_OW 299
26631: PUSH
26632: LD_INT 7
26634: GREATER
26635: AND
26636: IFFALSE 26660
// begin allowed_to_repair_vehicles = Delete ( allowed_to_repair_vehicles , i ) ;
26638: LD_ADDR_VAR 0 8
26642: PUSH
26643: LD_VAR 0 8
26647: PPUSH
26648: LD_VAR 0 2
26652: PPUSH
26653: CALL_OW 3
26657: ST_TO_ADDR
// continue ;
26658: GO 26582
// end ; i = i + 1 ;
26660: LD_ADDR_VAR 0 2
26664: PUSH
26665: LD_VAR 0 2
26669: PUSH
26670: LD_INT 1
26672: PLUS
26673: ST_TO_ADDR
// end ;
26674: GO 26582
// vehicles_list = UnitFilter ( allowed_to_repair_vehicles diff parked_vehicles , [ [ f_control , control_manual ] , [ f_ok ] ] ) ;
26676: LD_ADDR_VAR 0 7
26680: PUSH
26681: LD_VAR 0 8
26685: PUSH
26686: LD_VAR 0 16
26690: DIFF
26691: PPUSH
26692: LD_INT 33
26694: PUSH
26695: LD_INT 1
26697: PUSH
26698: EMPTY
26699: LIST
26700: LIST
26701: PUSH
26702: LD_INT 50
26704: PUSH
26705: EMPTY
26706: LIST
26707: PUSH
26708: EMPTY
26709: LIST
26710: LIST
26711: PPUSH
26712: CALL_OW 72
26716: ST_TO_ADDR
// temp_list = UnitFilter ( vehicles_list , [ [ f_control , control_manual ] , [ f_empty ] , [ f_ok ] ] ) ;
26717: LD_ADDR_VAR 0 4
26721: PUSH
26722: LD_VAR 0 7
26726: PPUSH
26727: LD_INT 33
26729: PUSH
26730: LD_INT 1
26732: PUSH
26733: EMPTY
26734: LIST
26735: LIST
26736: PUSH
26737: LD_INT 58
26739: PUSH
26740: EMPTY
26741: LIST
26742: PUSH
26743: LD_INT 50
26745: PUSH
26746: EMPTY
26747: LIST
26748: PUSH
26749: EMPTY
26750: LIST
26751: LIST
26752: LIST
26753: PPUSH
26754: CALL_OW 72
26758: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
26759: LD_ADDR_VAR 0 4
26763: PUSH
26764: LD_VAR 0 4
26768: PPUSH
26769: LD_VAR 0 3
26773: PPUSH
26774: LD_VAR 0 25
26778: PPUSH
26779: CALL 28530 0 3
26783: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
26784: LD_ADDR_VAR 0 3
26788: PUSH
26789: LD_VAR 0 4
26793: PUSH
26794: LD_INT 1
26796: ARRAY
26797: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
26798: LD_ADDR_VAR 0 25
26802: PUSH
26803: LD_VAR 0 4
26807: PUSH
26808: LD_INT 2
26810: ARRAY
26811: ST_TO_ADDR
// end ; for i in vehicles_list do
26812: LD_ADDR_VAR 0 2
26816: PUSH
26817: LD_VAR 0 7
26821: PUSH
26822: FOR_IN
26823: IFFALSE 26979
// if free_parking_spots > 0 then
26825: LD_VAR 0 10
26829: PUSH
26830: LD_INT 0
26832: GREATER
26833: IFFALSE 26975
// begin temp_list = [ ] ;
26835: LD_ADDR_VAR 0 4
26839: PUSH
26840: EMPTY
26841: ST_TO_ADDR
// for k in free_parking_spots do
26842: LD_ADDR_VAR 0 11
26846: PUSH
26847: LD_VAR 0 10
26851: PUSH
26852: FOR_IN
26853: IFFALSE 26896
// temp_list = temp_list ^ GetDistUnitXY ( i , k [ 1 ] , k [ 2 ] ) ;
26855: LD_ADDR_VAR 0 4
26859: PUSH
26860: LD_VAR 0 4
26864: PUSH
26865: LD_VAR 0 2
26869: PPUSH
26870: LD_VAR 0 11
26874: PUSH
26875: LD_INT 1
26877: ARRAY
26878: PPUSH
26879: LD_VAR 0 11
26883: PUSH
26884: LD_INT 2
26886: ARRAY
26887: PPUSH
26888: CALL_OW 297
26892: ADD
26893: ST_TO_ADDR
26894: GO 26852
26896: POP
26897: POP
// temp_list = WorstFromListByList ( free_parking_spots , temp_list ) ;
26898: LD_ADDR_VAR 0 4
26902: PUSH
26903: LD_VAR 0 10
26907: PPUSH
26908: LD_VAR 0 4
26912: PPUSH
26913: CALL_OW 78
26917: ST_TO_ADDR
// ComMoveXY ( i , temp_list [ 1 ] , temp_list [ 2 ] ) ;
26918: LD_VAR 0 2
26922: PPUSH
26923: LD_VAR 0 4
26927: PUSH
26928: LD_INT 1
26930: ARRAY
26931: PPUSH
26932: LD_VAR 0 4
26936: PUSH
26937: LD_INT 2
26939: ARRAY
26940: PPUSH
26941: CALL_OW 111
// AddComHold ( i ) ;
26945: LD_VAR 0 2
26949: PPUSH
26950: CALL_OW 200
// free_parking_spots = free_parking_spots diff [ temp_list ] ;
26954: LD_ADDR_VAR 0 10
26958: PUSH
26959: LD_VAR 0 10
26963: PUSH
26964: LD_VAR 0 4
26968: PUSH
26969: EMPTY
26970: LIST
26971: DIFF
26972: ST_TO_ADDR
// end else
26973: GO 26977
// break ;
26975: GO 26979
26977: GO 26822
26979: POP
26980: POP
// if not under_attack then
26981: LD_VAR 0 9
26985: NOT
26986: IFFALSE 27031
// allowed_to_repair_vehicles = allowed_to_repair_vehicles ^ UnitFilter ( ai_cargo_bay [ base ] diff 0 , [ f_inarea , area ] ) ;
26988: LD_ADDR_VAR 0 8
26992: PUSH
26993: LD_VAR 0 8
26997: PUSH
26998: LD_EXP 75
27002: PUSH
27003: LD_VAR 0 12
27007: ARRAY
27008: PUSH
27009: LD_INT 0
27011: DIFF
27012: PPUSH
27013: LD_INT 95
27015: PUSH
27016: LD_VAR 0 13
27020: PUSH
27021: EMPTY
27022: LIST
27023: LIST
27024: PPUSH
27025: CALL_OW 72
27029: ADD
27030: ST_TO_ADDR
// allowed_to_repair_vehicles = UnitFilter ( allowed_to_repair_vehicles , [ [ f_not , [ f_lives , 1000 ] ] , [ f_or , [ f_not , [ f_ok ] ] , [ f_inarea , area ] ] ] ) ;
27031: LD_ADDR_VAR 0 8
27035: PUSH
27036: LD_VAR 0 8
27040: PPUSH
27041: LD_INT 3
27043: PUSH
27044: LD_INT 24
27046: PUSH
27047: LD_INT 1000
27049: PUSH
27050: EMPTY
27051: LIST
27052: LIST
27053: PUSH
27054: EMPTY
27055: LIST
27056: LIST
27057: PUSH
27058: LD_INT 2
27060: PUSH
27061: LD_INT 3
27063: PUSH
27064: LD_INT 50
27066: PUSH
27067: EMPTY
27068: LIST
27069: PUSH
27070: EMPTY
27071: LIST
27072: LIST
27073: PUSH
27074: LD_INT 95
27076: PUSH
27077: LD_VAR 0 13
27081: PUSH
27082: EMPTY
27083: LIST
27084: LIST
27085: PUSH
27086: EMPTY
27087: LIST
27088: LIST
27089: LIST
27090: PUSH
27091: EMPTY
27092: LIST
27093: LIST
27094: PPUSH
27095: CALL_OW 72
27099: ST_TO_ADDR
// if ai_crane [ base ] > 0 then
27100: LD_EXP 78
27104: PUSH
27105: LD_VAR 0 12
27109: ARRAY
27110: PUSH
27111: LD_INT 0
27113: GREATER
27114: IFFALSE 27705
// begin k = false ;
27116: LD_ADDR_VAR 0 11
27120: PUSH
27121: LD_INT 0
27123: ST_TO_ADDR
// if ai_crane_is_being_repaired [ base ] and ( GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) <= 6 or ( IsInArea ( ai_crane [ base ] , area ) and not under_attack ) ) then
27124: LD_EXP 81
27128: PUSH
27129: LD_VAR 0 12
27133: ARRAY
27134: PUSH
27135: LD_EXP 78
27139: PUSH
27140: LD_VAR 0 12
27144: ARRAY
27145: PPUSH
27146: LD_EXP 63
27150: PUSH
27151: LD_VAR 0 12
27155: ARRAY
27156: PUSH
27157: LD_INT 1
27159: ARRAY
27160: PPUSH
27161: LD_EXP 63
27165: PUSH
27166: LD_VAR 0 12
27170: ARRAY
27171: PUSH
27172: LD_INT 2
27174: ARRAY
27175: PPUSH
27176: CALL_OW 297
27180: PUSH
27181: LD_INT 6
27183: LESSEQUAL
27184: PUSH
27185: LD_EXP 78
27189: PUSH
27190: LD_VAR 0 12
27194: ARRAY
27195: PPUSH
27196: LD_VAR 0 13
27200: PPUSH
27201: CALL_OW 308
27205: PUSH
27206: LD_VAR 0 9
27210: NOT
27211: AND
27212: OR
27213: AND
27214: IFFALSE 27485
// begin if GetLives ( ai_crane [ base ] ) < 1000 then
27216: LD_EXP 78
27220: PUSH
27221: LD_VAR 0 12
27225: ARRAY
27226: PPUSH
27227: CALL_OW 256
27231: PUSH
27232: LD_INT 1000
27234: LESS
27235: IFFALSE 27259
// allowed_to_repair_vehicles = ai_crane [ base ] ^ allowed_to_repair_vehicles ;
27237: LD_ADDR_VAR 0 8
27241: PUSH
27242: LD_EXP 78
27246: PUSH
27247: LD_VAR 0 12
27251: ARRAY
27252: PUSH
27253: LD_VAR 0 8
27257: ADD
27258: ST_TO_ADDR
// if ai_crane_driver [ base ] > 0 then
27259: LD_EXP 82
27263: PUSH
27264: LD_VAR 0 12
27268: ARRAY
27269: PUSH
27270: LD_INT 0
27272: GREATER
27273: IFFALSE 27483
// begin if GetLives ( ai_crane_driver [ base ] ) = 1000 then
27275: LD_EXP 82
27279: PUSH
27280: LD_VAR 0 12
27284: ARRAY
27285: PPUSH
27286: CALL_OW 256
27290: PUSH
27291: LD_INT 1000
27293: EQUAL
27294: IFFALSE 27320
// begin mechanics_list = mechanics_list ^ ai_crane_driver [ base ] ;
27296: LD_ADDR_VAR 0 3
27300: PUSH
27301: LD_VAR 0 3
27305: PUSH
27306: LD_EXP 82
27310: PUSH
27311: LD_VAR 0 12
27315: ARRAY
27316: ADD
27317: ST_TO_ADDR
// end else
27318: GO 27483
// begin if GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) <= 6 then
27320: LD_EXP 78
27324: PUSH
27325: LD_VAR 0 12
27329: ARRAY
27330: PPUSH
27331: LD_EXP 63
27335: PUSH
27336: LD_VAR 0 12
27340: ARRAY
27341: PUSH
27342: LD_INT 1
27344: ARRAY
27345: PPUSH
27346: LD_EXP 63
27350: PUSH
27351: LD_VAR 0 12
27355: ARRAY
27356: PUSH
27357: LD_INT 2
27359: ARRAY
27360: PPUSH
27361: CALL_OW 297
27365: PUSH
27366: LD_INT 6
27368: LESSEQUAL
27369: IFFALSE 27475
// begin if GetHumansOutOfUnits ( [ ai_crane_driver [ base ] ] ) > 0 and not ai_crane_driver [ base ] in ai_heal_these_humans [ base ] then
27371: LD_EXP 82
27375: PUSH
27376: LD_VAR 0 12
27380: ARRAY
27381: PUSH
27382: EMPTY
27383: LIST
27384: PPUSH
27385: CALL 18607 0 1
27389: PUSH
27390: LD_INT 0
27392: GREATER
27393: PUSH
27394: LD_EXP 82
27398: PUSH
27399: LD_VAR 0 12
27403: ARRAY
27404: PUSH
27405: LD_EXP 65
27409: PUSH
27410: LD_VAR 0 12
27414: ARRAY
27415: IN
27416: NOT
27417: AND
27418: IFFALSE 27473
// begin temp_list = ai_heal_these_humans [ base ] ^ ai_crane_driver [ base ] ;
27420: LD_ADDR_VAR 0 4
27424: PUSH
27425: LD_EXP 65
27429: PUSH
27430: LD_VAR 0 12
27434: ARRAY
27435: PUSH
27436: LD_EXP 82
27440: PUSH
27441: LD_VAR 0 12
27445: ARRAY
27446: ADD
27447: ST_TO_ADDR
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
27448: LD_ADDR_EXP 65
27452: PUSH
27453: LD_EXP 65
27457: PPUSH
27458: LD_VAR 0 12
27462: PPUSH
27463: LD_VAR 0 4
27467: PPUSH
27468: CALL_OW 1
27472: ST_TO_ADDR
// end ; end else
27473: GO 27483
// k = true ;
27475: LD_ADDR_VAR 0 11
27479: PUSH
27480: LD_INT 1
27482: ST_TO_ADDR
// end ; end ; end else
27483: GO 27493
// k = true ;
27485: LD_ADDR_VAR 0 11
27489: PUSH
27490: LD_INT 1
27492: ST_TO_ADDR
// if k then
27493: LD_VAR 0 11
27497: IFFALSE 27705
// begin if IsOk ( ai_crane [ base ] ) and ai_crane_driver [ base ] > 0 and not ai_crane_driver [ base ] in mechanics_list and not ai_crane_driver [ base ] in ai_heal_these_humans [ base ] then
27499: LD_EXP 78
27503: PUSH
27504: LD_VAR 0 12
27508: ARRAY
27509: PPUSH
27510: CALL_OW 302
27514: PUSH
27515: LD_EXP 82
27519: PUSH
27520: LD_VAR 0 12
27524: ARRAY
27525: PUSH
27526: LD_INT 0
27528: GREATER
27529: AND
27530: PUSH
27531: LD_EXP 82
27535: PUSH
27536: LD_VAR 0 12
27540: ARRAY
27541: PUSH
27542: LD_VAR 0 3
27546: IN
27547: NOT
27548: AND
27549: PUSH
27550: LD_EXP 82
27554: PUSH
27555: LD_VAR 0 12
27559: ARRAY
27560: PUSH
27561: LD_EXP 65
27565: PUSH
27566: LD_VAR 0 12
27570: ARRAY
27571: IN
27572: NOT
27573: AND
27574: IFFALSE 27705
// begin if IsInUnit ( ai_crane_driver [ base ] ) <> ai_crane [ base ] then
27576: LD_EXP 82
27580: PUSH
27581: LD_VAR 0 12
27585: ARRAY
27586: PPUSH
27587: CALL_OW 310
27591: PUSH
27592: LD_EXP 78
27596: PUSH
27597: LD_VAR 0 12
27601: ARRAY
27602: NONEQUAL
27603: IFFALSE 27705
// case GetType ( IsInUnit ( ai_crane_driver [ base ] ) ) of unit_building :
27605: LD_EXP 82
27609: PUSH
27610: LD_VAR 0 12
27614: ARRAY
27615: PPUSH
27616: CALL_OW 310
27620: PPUSH
27621: CALL_OW 247
27625: PUSH
27626: LD_INT 3
27628: DOUBLE
27629: EQUAL
27630: IFTRUE 27634
27632: GO 27652
27634: POP
// ComExitBuilding ( ai_crane_driver [ base ] ) ; unit_vehicle :
27635: LD_EXP 82
27639: PUSH
27640: LD_VAR 0 12
27644: ARRAY
27645: PPUSH
27646: CALL_OW 122
27650: GO 27705
27652: LD_INT 2
27654: DOUBLE
27655: EQUAL
27656: IFTRUE 27660
27658: GO 27678
27660: POP
// ComExitVehicle ( ai_crane_driver [ base ] ) ; else
27661: LD_EXP 82
27665: PUSH
27666: LD_VAR 0 12
27670: ARRAY
27671: PPUSH
27672: CALL_OW 121
27676: GO 27705
27678: POP
// ComEnterUnit ( ai_crane_driver [ base ] , ai_crane [ base ] ) ; end ;
27679: LD_EXP 82
27683: PUSH
27684: LD_VAR 0 12
27688: ARRAY
27689: PPUSH
27690: LD_EXP 78
27694: PUSH
27695: LD_VAR 0 12
27699: ARRAY
27700: PPUSH
27701: CALL_OW 120
// end ; end ; end ; if mechanics_list = 0 and remote_mechanics = 0 then
27705: LD_VAR 0 3
27709: PUSH
27710: LD_INT 0
27712: EQUAL
27713: PUSH
27714: LD_VAR 0 15
27718: PUSH
27719: LD_INT 0
27721: EQUAL
27722: AND
27723: IFFALSE 27727
// continue ;
27725: GO 23162
// allowed_to_repair_vehicles = allowed_to_repair_vehicles diff ai_vehicles_being_repaired [ base ] ;
27727: LD_ADDR_VAR 0 8
27731: PUSH
27732: LD_VAR 0 8
27736: PUSH
27737: LD_EXP 60
27741: PUSH
27742: LD_VAR 0 12
27746: ARRAY
27747: DIFF
27748: ST_TO_ADDR
// if allowed_to_repair_vehicles > 0 or ai_vehicles_being_repaired [ base ] > 0 then
27749: LD_VAR 0 8
27753: PUSH
27754: LD_INT 0
27756: GREATER
27757: PUSH
27758: LD_EXP 60
27762: PUSH
27763: LD_VAR 0 12
27767: ARRAY
27768: PUSH
27769: LD_INT 0
27771: GREATER
27772: OR
27773: IFFALSE 28454
// begin if remote_mechanics > 0 then
27775: LD_VAR 0 15
27779: PUSH
27780: LD_INT 0
27782: GREATER
27783: IFFALSE 28151
// begin if under_attack or UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_control , control_remote ] , [ f_ok ] ] ) > 0 then
27785: LD_VAR 0 9
27789: PUSH
27790: LD_EXP 58
27794: PUSH
27795: LD_VAR 0 12
27799: ARRAY
27800: PPUSH
27801: LD_INT 33
27803: PUSH
27804: LD_INT 2
27806: PUSH
27807: EMPTY
27808: LIST
27809: LIST
27810: PUSH
27811: LD_INT 50
27813: PUSH
27814: EMPTY
27815: LIST
27816: PUSH
27817: EMPTY
27818: LIST
27819: LIST
27820: PPUSH
27821: CALL_OW 72
27825: PUSH
27826: LD_INT 0
27828: GREATER
27829: OR
27830: IFFALSE 27938
// begin for i in remote_driver_vehicles [ base ] do
27832: LD_ADDR_VAR 0 2
27836: PUSH
27837: LD_VAR 0 26
27841: PUSH
27842: LD_VAR 0 12
27846: ARRAY
27847: PUSH
27848: FOR_IN
27849: IFFALSE 27934
// if UnitFilter ( i [ 2 ] , [ f_ok ] ) = 0 and i [ 1 ] in remote_mechanics then
27851: LD_VAR 0 2
27855: PUSH
27856: LD_INT 2
27858: ARRAY
27859: PPUSH
27860: LD_INT 50
27862: PUSH
27863: EMPTY
27864: LIST
27865: PPUSH
27866: CALL_OW 72
27870: PUSH
27871: LD_INT 0
27873: EQUAL
27874: PUSH
27875: LD_VAR 0 2
27879: PUSH
27880: LD_INT 1
27882: ARRAY
27883: PUSH
27884: LD_VAR 0 15
27888: IN
27889: AND
27890: IFFALSE 27932
// begin mechanics_list = mechanics_list ^ i [ 1 ] ;
27892: LD_ADDR_VAR 0 3
27896: PUSH
27897: LD_VAR 0 3
27901: PUSH
27902: LD_VAR 0 2
27906: PUSH
27907: LD_INT 1
27909: ARRAY
27910: ADD
27911: ST_TO_ADDR
// remote_mechanics = remote_mechanics diff i [ 1 ] ;
27912: LD_ADDR_VAR 0 15
27916: PUSH
27917: LD_VAR 0 15
27921: PUSH
27922: LD_VAR 0 2
27926: PUSH
27927: LD_INT 1
27929: ARRAY
27930: DIFF
27931: ST_TO_ADDR
// end ;
27932: GO 27848
27934: POP
27935: POP
// end else
27936: GO 28151
// begin temp_unit = true ;
27938: LD_ADDR_VAR 0 6
27942: PUSH
27943: LD_INT 1
27945: ST_TO_ADDR
// temp_list = ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ;
27946: LD_ADDR_VAR 0 4
27950: PUSH
27951: LD_EXP 57
27955: PUSH
27956: LD_VAR 0 12
27960: ARRAY
27961: PUSH
27962: LD_EXP 90
27966: PUSH
27967: LD_VAR 0 12
27971: ARRAY
27972: ADD
27973: ST_TO_ADDR
// for i in remote_driver_vehicles [ base ] do
27974: LD_ADDR_VAR 0 2
27978: PUSH
27979: LD_VAR 0 26
27983: PUSH
27984: LD_VAR 0 12
27988: ARRAY
27989: PUSH
27990: FOR_IN
27991: IFFALSE 28070
// begin for k in i [ 2 ] do
27993: LD_ADDR_VAR 0 11
27997: PUSH
27998: LD_VAR 0 2
28002: PUSH
28003: LD_INT 2
28005: ARRAY
28006: PUSH
28007: FOR_IN
28008: IFFALSE 28057
// if not IsInArea ( k , area ) then
28010: LD_VAR 0 11
28014: PPUSH
28015: LD_VAR 0 13
28019: PPUSH
28020: CALL_OW 308
28024: NOT
28025: IFFALSE 28039
// begin temp_unit = false ;
28027: LD_ADDR_VAR 0 6
28031: PUSH
28032: LD_INT 0
28034: ST_TO_ADDR
// break ;
28035: GO 28057
// end else
28037: GO 28055
// temp_list = temp_list diff k ;
28039: LD_ADDR_VAR 0 4
28043: PUSH
28044: LD_VAR 0 4
28048: PUSH
28049: LD_VAR 0 11
28053: DIFF
28054: ST_TO_ADDR
28055: GO 28007
28057: POP
28058: POP
// if not temp_unit then
28059: LD_VAR 0 6
28063: NOT
28064: IFFALSE 28068
// break ;
28066: GO 28070
// end ;
28068: GO 27990
28070: POP
28071: POP
// if temp_unit then
28072: LD_VAR 0 6
28076: IFFALSE 28122
// for i in temp_list do
28078: LD_ADDR_VAR 0 2
28082: PUSH
28083: LD_VAR 0 4
28087: PUSH
28088: FOR_IN
28089: IFFALSE 28120
// if not IsInArea ( i , area ) then
28091: LD_VAR 0 2
28095: PPUSH
28096: LD_VAR 0 13
28100: PPUSH
28101: CALL_OW 308
28105: NOT
28106: IFFALSE 28118
// begin temp_unit = false ;
28108: LD_ADDR_VAR 0 6
28112: PUSH
28113: LD_INT 0
28115: ST_TO_ADDR
// break ;
28116: GO 28120
// end ;
28118: GO 28088
28120: POP
28121: POP
// if temp_unit then
28122: LD_VAR 0 6
28126: IFFALSE 28151
// begin mechanics_list = mechanics_list ^ remote_mechanics ;
28128: LD_ADDR_VAR 0 3
28132: PUSH
28133: LD_VAR 0 3
28137: PUSH
28138: LD_VAR 0 15
28142: ADD
28143: ST_TO_ADDR
// remote_mechanics = [ ] ;
28144: LD_ADDR_VAR 0 15
28148: PUSH
28149: EMPTY
28150: ST_TO_ADDR
// end ; end ; end ; if allowed_to_repair_vehicles > 0 then
28151: LD_VAR 0 8
28155: PUSH
28156: LD_INT 0
28158: GREATER
28159: IFFALSE 28423
// begin k = false ;
28161: LD_ADDR_VAR 0 11
28165: PUSH
28166: LD_INT 0
28168: ST_TO_ADDR
// if ai_vehicles_being_repaired [ base ] = 0 then
28169: LD_EXP 60
28173: PUSH
28174: LD_VAR 0 12
28178: ARRAY
28179: PUSH
28180: LD_INT 0
28182: EQUAL
28183: IFFALSE 28195
// k = true else
28185: LD_ADDR_VAR 0 11
28189: PUSH
28190: LD_INT 1
28192: ST_TO_ADDR
28193: GO 28258
// if IsOk ( ai_vehicles_being_repaired [ base ] [ 1 ] ) then
28195: LD_EXP 60
28199: PUSH
28200: LD_VAR 0 12
28204: ARRAY
28205: PUSH
28206: LD_INT 1
28208: ARRAY
28209: PPUSH
28210: CALL_OW 302
28214: IFFALSE 28258
// begin allowed_to_repair_vehicles = UnitFilter ( allowed_to_repair_vehicles , [ f_not , [ f_ok ] ] ) ;
28216: LD_ADDR_VAR 0 8
28220: PUSH
28221: LD_VAR 0 8
28225: PPUSH
28226: LD_INT 3
28228: PUSH
28229: LD_INT 50
28231: PUSH
28232: EMPTY
28233: LIST
28234: PUSH
28235: EMPTY
28236: LIST
28237: LIST
28238: PPUSH
28239: CALL_OW 72
28243: ST_TO_ADDR
// k := allowed_to_repair_vehicles > 0 ;
28244: LD_ADDR_VAR 0 11
28248: PUSH
28249: LD_VAR 0 8
28253: PUSH
28254: LD_INT 0
28256: GREATER
28257: ST_TO_ADDR
// end ; if k then
28258: LD_VAR 0 11
28262: IFFALSE 28423
// begin temp_list = [ ] ;
28264: LD_ADDR_VAR 0 4
28268: PUSH
28269: EMPTY
28270: ST_TO_ADDR
// for i in allowed_to_repair_vehicles do
28271: LD_ADDR_VAR 0 2
28275: PUSH
28276: LD_VAR 0 8
28280: PUSH
28281: FOR_IN
28282: IFFALSE 28307
// temp_list = temp_list ^ GetLives ( i ) ;
28284: LD_ADDR_VAR 0 4
28288: PUSH
28289: LD_VAR 0 4
28293: PUSH
28294: LD_VAR 0 2
28298: PPUSH
28299: CALL_OW 256
28303: ADD
28304: ST_TO_ADDR
28305: GO 28281
28307: POP
28308: POP
// temp_unit = WorstFromListByList ( allowed_to_repair_vehicles , temp_list ) ;
28309: LD_ADDR_VAR 0 6
28313: PUSH
28314: LD_VAR 0 8
28318: PPUSH
28319: LD_VAR 0 4
28323: PPUSH
28324: CALL_OW 78
28328: ST_TO_ADDR
// temp_list = temp_unit ^ ai_vehicles_being_repaired [ base ] ;
28329: LD_ADDR_VAR 0 4
28333: PUSH
28334: LD_VAR 0 6
28338: PUSH
28339: LD_EXP 60
28343: PUSH
28344: LD_VAR 0 12
28348: ARRAY
28349: ADD
28350: ST_TO_ADDR
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
28351: LD_ADDR_EXP 60
28355: PUSH
28356: LD_EXP 60
28360: PPUSH
28361: LD_VAR 0 12
28365: PPUSH
28366: LD_VAR 0 4
28370: PPUSH
28371: CALL_OW 1
28375: ST_TO_ADDR
// temp_list = ai_retreating_vehicles_defend [ base ] diff temp_unit ;
28376: LD_ADDR_VAR 0 4
28380: PUSH
28381: LD_EXP 59
28385: PUSH
28386: LD_VAR 0 12
28390: ARRAY
28391: PUSH
28392: LD_VAR 0 6
28396: DIFF
28397: ST_TO_ADDR
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
28398: LD_ADDR_EXP 59
28402: PUSH
28403: LD_EXP 59
28407: PPUSH
28408: LD_VAR 0 12
28412: PPUSH
28413: LD_VAR 0 4
28417: PPUSH
28418: CALL_OW 1
28422: ST_TO_ADDR
// end ; end ; ComRepairVehicle ( GetHumansOutOfUnits ( mechanics_list ) , ai_vehicles_being_repaired [ base ] [ 1 ] ) ;
28423: LD_VAR 0 3
28427: PPUSH
28428: CALL 18607 0 1
28432: PPUSH
28433: LD_EXP 60
28437: PUSH
28438: LD_VAR 0 12
28442: ARRAY
28443: PUSH
28444: LD_INT 1
28446: ARRAY
28447: PPUSH
28448: CALL_OW 129
// end else
28452: GO 28519
// begin DistributeHumansToBuildings ( base , mechanics_list , UnitFilter ( ai_facts [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_mechanic , 6 , true , false ) ;
28454: LD_VAR 0 12
28458: PPUSH
28459: LD_VAR 0 3
28463: PPUSH
28464: LD_EXP 41
28468: PUSH
28469: LD_VAR 0 12
28473: ARRAY
28474: PPUSH
28475: LD_INT 50
28477: PUSH
28478: EMPTY
28479: LIST
28480: PUSH
28481: LD_INT 3
28483: PUSH
28484: LD_INT 57
28486: PUSH
28487: EMPTY
28488: LIST
28489: PUSH
28490: EMPTY
28491: LIST
28492: LIST
28493: PUSH
28494: EMPTY
28495: LIST
28496: LIST
28497: PPUSH
28498: CALL_OW 72
28502: PPUSH
28503: LD_INT 3
28505: PPUSH
28506: LD_INT 6
28508: PPUSH
28509: LD_INT 1
28511: PPUSH
28512: LD_INT 0
28514: PPUSH
28515: CALL 7668 0 7
// end ; end ;
28519: GO 23162
28521: POP
28522: POP
// until false ;
28523: LD_INT 0
28525: IFFALSE 23123
// end ;
28527: PPOPN 26
28529: END
// function FindDriverHelper ( vehicles_list , mechanics_list , vehicles_drivers ) ; var i , k , temp_unit ; begin
28530: LD_INT 0
28532: PPUSH
28533: PPUSH
28534: PPUSH
28535: PPUSH
// for i in vehicles_list do
28536: LD_ADDR_VAR 0 5
28540: PUSH
28541: LD_VAR 0 1
28545: PUSH
28546: FOR_IN
28547: IFFALSE 28815
// begin if mechanics_list = 0 then
28549: LD_VAR 0 2
28553: PUSH
28554: LD_INT 0
28556: EQUAL
28557: IFFALSE 28561
// break ;
28559: GO 28815
// k = false ;
28561: LD_ADDR_VAR 0 6
28565: PUSH
28566: LD_INT 0
28568: ST_TO_ADDR
// if vehicles_drivers < i then
28569: LD_VAR 0 3
28573: PUSH
28574: LD_VAR 0 5
28578: LESS
28579: IFFALSE 28591
// k = true else
28581: LD_ADDR_VAR 0 6
28585: PUSH
28586: LD_INT 1
28588: ST_TO_ADDR
28589: GO 28618
// if not vehicles_drivers [ i ] in mechanics_list then
28591: LD_VAR 0 3
28595: PUSH
28596: LD_VAR 0 5
28600: ARRAY
28601: PUSH
28602: LD_VAR 0 2
28606: IN
28607: NOT
28608: IFFALSE 28618
// k = true ;
28610: LD_ADDR_VAR 0 6
28614: PUSH
28615: LD_INT 1
28617: ST_TO_ADDR
// if k then
28618: LD_VAR 0 6
28622: IFFALSE 28659
// vehicles_drivers = Replace ( vehicles_drivers , i , AllNearestUnitToUnit ( mechanics_list , i ) ) ;
28624: LD_ADDR_VAR 0 3
28628: PUSH
28629: LD_VAR 0 3
28633: PPUSH
28634: LD_VAR 0 5
28638: PPUSH
28639: LD_VAR 0 2
28643: PPUSH
28644: LD_VAR 0 5
28648: PPUSH
28649: CALL_OW 75
28653: PPUSH
28654: CALL_OW 1
28658: ST_TO_ADDR
// if vehicles_drivers [ i ] > 0 then
28659: LD_VAR 0 3
28663: PUSH
28664: LD_VAR 0 5
28668: ARRAY
28669: PUSH
28670: LD_INT 0
28672: GREATER
28673: IFFALSE 28813
// begin temp_unit = IsInUnit ( vehicles_drivers [ i ] ) ;
28675: LD_ADDR_VAR 0 7
28679: PUSH
28680: LD_VAR 0 3
28684: PUSH
28685: LD_VAR 0 5
28689: ARRAY
28690: PPUSH
28691: CALL_OW 310
28695: ST_TO_ADDR
// if temp_unit <> i then
28696: LD_VAR 0 7
28700: PUSH
28701: LD_VAR 0 5
28705: NONEQUAL
28706: IFFALSE 28791
// case GetType ( temp_unit ) of unit_vehicle :
28708: LD_VAR 0 7
28712: PPUSH
28713: CALL_OW 247
28717: PUSH
28718: LD_INT 2
28720: DOUBLE
28721: EQUAL
28722: IFTRUE 28726
28724: GO 28744
28726: POP
// ComExitVehicle ( vehicles_drivers [ i ] ) ; unit_building :
28727: LD_VAR 0 3
28731: PUSH
28732: LD_VAR 0 5
28736: ARRAY
28737: PPUSH
28738: CALL_OW 121
28742: GO 28791
28744: LD_INT 3
28746: DOUBLE
28747: EQUAL
28748: IFTRUE 28752
28750: GO 28770
28752: POP
// ComExitBuilding ( vehicles_drivers [ i ] ) ; else
28753: LD_VAR 0 3
28757: PUSH
28758: LD_VAR 0 5
28762: ARRAY
28763: PPUSH
28764: CALL_OW 122
28768: GO 28791
28770: POP
// ComEnterUnit ( vehicles_drivers [ i ] , i ) ; end ;
28771: LD_VAR 0 3
28775: PUSH
28776: LD_VAR 0 5
28780: ARRAY
28781: PPUSH
28782: LD_VAR 0 5
28786: PPUSH
28787: CALL_OW 120
// mechanics_list = mechanics_list diff vehicles_drivers [ i ] ;
28791: LD_ADDR_VAR 0 2
28795: PUSH
28796: LD_VAR 0 2
28800: PUSH
28801: LD_VAR 0 3
28805: PUSH
28806: LD_VAR 0 5
28810: ARRAY
28811: DIFF
28812: ST_TO_ADDR
// end ; end ;
28813: GO 28546
28815: POP
28816: POP
// result = [ mechanics_list , vehicles_drivers ] ;
28817: LD_ADDR_VAR 0 4
28821: PUSH
28822: LD_VAR 0 2
28826: PUSH
28827: LD_VAR 0 3
28831: PUSH
28832: EMPTY
28833: LIST
28834: LIST
28835: ST_TO_ADDR
// end ;
28836: LD_VAR 0 4
28840: RET
// function FindBestCraneDriver ( base ) ; var i , temp_list ; begin
28841: LD_INT 0
28843: PPUSH
28844: PPUSH
28845: PPUSH
// if ai_mechanics_defend [ base ] = 0 then
28846: LD_EXP 33
28850: PUSH
28851: LD_VAR 0 1
28855: ARRAY
28856: PUSH
28857: LD_INT 0
28859: EQUAL
28860: IFFALSE 28872
// begin result = 0 ;
28862: LD_ADDR_VAR 0 2
28866: PUSH
28867: LD_INT 0
28869: ST_TO_ADDR
// exit ;
28870: GO 28966
// end ; temp_list = [ ] ;
28872: LD_ADDR_VAR 0 4
28876: PUSH
28877: EMPTY
28878: ST_TO_ADDR
// for i in ai_mechanics_defend [ base ] do
28879: LD_ADDR_VAR 0 3
28883: PUSH
28884: LD_EXP 33
28888: PUSH
28889: LD_VAR 0 1
28893: ARRAY
28894: PUSH
28895: FOR_IN
28896: IFFALSE 28938
// temp_list = temp_list ^ ( GetSkill ( i , skill_engineering ) + GetSkill ( i , skill_mechanical ) ) ;
28898: LD_ADDR_VAR 0 4
28902: PUSH
28903: LD_VAR 0 4
28907: PUSH
28908: LD_VAR 0 3
28912: PPUSH
28913: LD_INT 2
28915: PPUSH
28916: CALL_OW 259
28920: PUSH
28921: LD_VAR 0 3
28925: PPUSH
28926: LD_INT 3
28928: PPUSH
28929: CALL_OW 259
28933: PLUS
28934: ADD
28935: ST_TO_ADDR
28936: GO 28895
28938: POP
28939: POP
// result = BestFromListByList ( ai_mechanics_defend [ base ] , temp_list ) ;
28940: LD_ADDR_VAR 0 2
28944: PUSH
28945: LD_EXP 33
28949: PUSH
28950: LD_VAR 0 1
28954: ARRAY
28955: PPUSH
28956: LD_VAR 0 4
28960: PPUSH
28961: CALL_OW 79
28965: ST_TO_ADDR
// end ;
28966: LD_VAR 0 2
28970: RET
// function MaxNumWarVehiclesDefend ( base ) ; var time ; begin
28971: LD_INT 0
28973: PPUSH
28974: PPUSH
// case base of 1 :
28975: LD_VAR 0 1
28979: PUSH
28980: LD_INT 1
28982: DOUBLE
28983: EQUAL
28984: IFTRUE 28988
28986: GO 28999
28988: POP
// result = 3 ; 2 :
28989: LD_ADDR_VAR 0 2
28993: PUSH
28994: LD_INT 3
28996: ST_TO_ADDR
28997: GO 29133
28999: LD_INT 2
29001: DOUBLE
29002: EQUAL
29003: IFTRUE 29007
29005: GO 29018
29007: POP
// result = 3 ; 3 :
29008: LD_ADDR_VAR 0 2
29012: PUSH
29013: LD_INT 3
29015: ST_TO_ADDR
29016: GO 29133
29018: LD_INT 3
29020: DOUBLE
29021: EQUAL
29022: IFTRUE 29026
29024: GO 29037
29026: POP
// result = 2 ; 4 :
29027: LD_ADDR_VAR 0 2
29031: PUSH
29032: LD_INT 2
29034: ST_TO_ADDR
29035: GO 29133
29037: LD_INT 4
29039: DOUBLE
29040: EQUAL
29041: IFTRUE 29045
29043: GO 29056
29045: POP
// result = 2 ; 5 :
29046: LD_ADDR_VAR 0 2
29050: PUSH
29051: LD_INT 2
29053: ST_TO_ADDR
29054: GO 29133
29056: LD_INT 5
29058: DOUBLE
29059: EQUAL
29060: IFTRUE 29064
29062: GO 29075
29064: POP
// result = 3 ; 6 :
29065: LD_ADDR_VAR 0 2
29069: PUSH
29070: LD_INT 3
29072: ST_TO_ADDR
29073: GO 29133
29075: LD_INT 6
29077: DOUBLE
29078: EQUAL
29079: IFTRUE 29083
29081: GO 29094
29083: POP
// result = 1 ; 7 :
29084: LD_ADDR_VAR 0 2
29088: PUSH
29089: LD_INT 1
29091: ST_TO_ADDR
29092: GO 29133
29094: LD_INT 7
29096: DOUBLE
29097: EQUAL
29098: IFTRUE 29102
29100: GO 29113
29102: POP
// result = 0 ; 8 :
29103: LD_ADDR_VAR 0 2
29107: PUSH
29108: LD_INT 0
29110: ST_TO_ADDR
29111: GO 29133
29113: LD_INT 8
29115: DOUBLE
29116: EQUAL
29117: IFTRUE 29121
29119: GO 29132
29121: POP
// result = 0 ; end ;
29122: LD_ADDR_VAR 0 2
29126: PUSH
29127: LD_INT 0
29129: ST_TO_ADDR
29130: GO 29133
29132: POP
// end ;
29133: LD_VAR 0 2
29137: RET
// every 0 0$1 + 0 0$0.6 do var i , temp , temp_value , temp_unit , temp_list , base , idle_factories , fact , b , construct_list ; var vehicle_prod_delay , saved_construct_list , under_attack ;
29138: GO 29140
29140: DISABLE
29141: LD_INT 0
29143: PPUSH
29144: PPUSH
29145: PPUSH
29146: PPUSH
29147: PPUSH
29148: PPUSH
29149: PPUSH
29150: PPUSH
29151: PPUSH
29152: PPUSH
29153: PPUSH
29154: PPUSH
29155: PPUSH
// begin vehicle_prod_delay = [ 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 ] ;
29156: LD_ADDR_VAR 0 11
29160: PUSH
29161: LD_INT 0
29163: PUSH
29164: LD_INT 0
29166: PUSH
29167: LD_INT 0
29169: PUSH
29170: LD_INT 0
29172: PUSH
29173: LD_INT 0
29175: PUSH
29176: LD_INT 0
29178: PUSH
29179: LD_INT 0
29181: PUSH
29182: LD_INT 0
29184: PUSH
29185: EMPTY
29186: LIST
29187: LIST
29188: LIST
29189: LIST
29190: LIST
29191: LIST
29192: LIST
29193: LIST
29194: ST_TO_ADDR
// saved_construct_list = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
29195: LD_ADDR_VAR 0 12
29199: PUSH
29200: EMPTY
29201: PUSH
29202: EMPTY
29203: PUSH
29204: EMPTY
29205: PUSH
29206: EMPTY
29207: PUSH
29208: EMPTY
29209: PUSH
29210: EMPTY
29211: PUSH
29212: EMPTY
29213: PUSH
29214: EMPTY
29215: PUSH
29216: EMPTY
29217: LIST
29218: LIST
29219: LIST
29220: LIST
29221: LIST
29222: LIST
29223: LIST
29224: LIST
29225: ST_TO_ADDR
// repeat if ai_bases = 0 then
29226: LD_EXP 29
29230: PUSH
29231: LD_INT 0
29233: EQUAL
29234: IFFALSE 29238
// exit ;
29236: GO 30438
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
29238: LD_INT 35
29240: PUSH
29241: LD_EXP 29
29245: PUSH
29246: LD_INT 0
29248: PLUS
29249: MOD
29250: PPUSH
29251: CALL_OW 67
// for base in ai_bases do
29255: LD_ADDR_VAR 0 6
29259: PUSH
29260: LD_EXP 29
29264: PUSH
29265: FOR_IN
29266: IFFALSE 30432
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
29268: LD_INT 35
29270: PUSH
29271: LD_EXP 29
29275: PUSH
29276: LD_INT 0
29278: PLUS
29279: DIV
29280: PPUSH
29281: CALL_OW 67
// under_attack = BaseUnderAttack ( base , - 1 ) ;
29285: LD_ADDR_VAR 0 13
29289: PUSH
29290: LD_VAR 0 6
29294: PPUSH
29295: LD_INT 1
29297: NEG
29298: PPUSH
29299: CALL 18712 0 2
29303: ST_TO_ADDR
// if under_attack and ai_vehicles_defend [ base ] >= [ 0 , 1 , 2 ] [ difficulty ] then
29304: LD_VAR 0 13
29308: PUSH
29309: LD_EXP 57
29313: PUSH
29314: LD_VAR 0 6
29318: ARRAY
29319: PUSH
29320: LD_INT 0
29322: PUSH
29323: LD_INT 1
29325: PUSH
29326: LD_INT 2
29328: PUSH
29329: EMPTY
29330: LIST
29331: LIST
29332: LIST
29333: PUSH
29334: LD_OWVAR 67
29338: ARRAY
29339: GREATEREQUAL
29340: AND
29341: IFFALSE 29383
// begin vehicle_prod_delay = Replace ( vehicle_prod_delay , base , [ 1 1$15 , 0 0$45 , 0 0$30 ] [ difficulty ] ) ;
29343: LD_ADDR_VAR 0 11
29347: PUSH
29348: LD_VAR 0 11
29352: PPUSH
29353: LD_VAR 0 6
29357: PPUSH
29358: LD_INT 2625
29360: PUSH
29361: LD_INT 1575
29363: PUSH
29364: LD_INT 1050
29366: PUSH
29367: EMPTY
29368: LIST
29369: LIST
29370: LIST
29371: PUSH
29372: LD_OWVAR 67
29376: ARRAY
29377: PPUSH
29378: CALL_OW 1
29382: ST_TO_ADDR
// end ; idle_factories = [ ] ;
29383: LD_ADDR_VAR 0 7
29387: PUSH
29388: EMPTY
29389: ST_TO_ADDR
// for i in ai_facts [ base ] do
29390: LD_ADDR_VAR 0 1
29394: PUSH
29395: LD_EXP 41
29399: PUSH
29400: LD_VAR 0 6
29404: ARRAY
29405: PUSH
29406: FOR_IN
29407: IFFALSE 29518
// if BuildingStatus ( i ) = bs_idle and IsOk ( i ) and GetBType ( i ) = b_factory then
29409: LD_VAR 0 1
29413: PPUSH
29414: CALL_OW 461
29418: PUSH
29419: LD_INT 2
29421: EQUAL
29422: PUSH
29423: LD_VAR 0 1
29427: PPUSH
29428: CALL_OW 302
29432: AND
29433: PUSH
29434: LD_VAR 0 1
29438: PPUSH
29439: CALL_OW 266
29443: PUSH
29444: LD_INT 3
29446: EQUAL
29447: AND
29448: IFFALSE 29516
// begin b = true ;
29450: LD_ADDR_VAR 0 9
29454: PUSH
29455: LD_INT 1
29457: ST_TO_ADDR
// if ai_facts_with_ext_rebuild_map >= i then
29458: LD_EXP 98
29462: PUSH
29463: LD_VAR 0 1
29467: GREATEREQUAL
29468: IFFALSE 29494
// if ai_facts_with_ext_rebuild_map [ i ] > 0 then
29470: LD_EXP 98
29474: PUSH
29475: LD_VAR 0 1
29479: ARRAY
29480: PUSH
29481: LD_INT 0
29483: GREATER
29484: IFFALSE 29494
// b = false ;
29486: LD_ADDR_VAR 0 9
29490: PUSH
29491: LD_INT 0
29493: ST_TO_ADDR
// if b then
29494: LD_VAR 0 9
29498: IFFALSE 29516
// idle_factories = idle_factories ^ i ;
29500: LD_ADDR_VAR 0 7
29504: PUSH
29505: LD_VAR 0 7
29509: PUSH
29510: LD_VAR 0 1
29514: ADD
29515: ST_TO_ADDR
// end ;
29516: GO 29406
29518: POP
29519: POP
// if producing_the_attack and base = 2 then
29520: LD_EXP 118
29524: PUSH
29525: LD_VAR 0 6
29529: PUSH
29530: LD_INT 2
29532: EQUAL
29533: AND
29534: IFFALSE 29560
// idle_factories = idle_factories diff ai_facts [ 2 ] [ 1 ] ;
29536: LD_ADDR_VAR 0 7
29540: PUSH
29541: LD_VAR 0 7
29545: PUSH
29546: LD_EXP 41
29550: PUSH
29551: LD_INT 2
29553: ARRAY
29554: PUSH
29555: LD_INT 1
29557: ARRAY
29558: DIFF
29559: ST_TO_ADDR
// if idle_factories = 0 then
29560: LD_VAR 0 7
29564: PUSH
29565: LD_INT 0
29567: EQUAL
29568: IFFALSE 29572
// continue ;
29570: GO 29265
// temp_value = false ;
29572: LD_ADDR_VAR 0 3
29576: PUSH
29577: LD_INT 0
29579: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
29580: LD_ADDR_VAR 0 1
29584: PUSH
29585: LD_EXP 51
29589: PUSH
29590: LD_VAR 0 6
29594: ARRAY
29595: PUSH
29596: FOR_IN
29597: IFFALSE 29727
// if i [ 4 ] in [ b_bunker , b_turret ] then
29599: LD_VAR 0 1
29603: PUSH
29604: LD_INT 4
29606: ARRAY
29607: PUSH
29608: LD_INT 32
29610: PUSH
29611: LD_INT 33
29613: PUSH
29614: EMPTY
29615: LIST
29616: LIST
29617: IN
29618: IFFALSE 29725
// begin temp_unit = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
29620: LD_ADDR_VAR 0 4
29624: PUSH
29625: LD_VAR 0 1
29629: PUSH
29630: LD_INT 1
29632: ARRAY
29633: PPUSH
29634: LD_VAR 0 1
29638: PUSH
29639: LD_INT 2
29641: ARRAY
29642: PPUSH
29643: CALL_OW 428
29647: ST_TO_ADDR
// if GetBType ( temp_unit ) in [ b_bunker , b_turret ] and not IsConstructed ( temp_unit ) and GetBWeapon ( temp_unit ) = 0 then
29648: LD_VAR 0 4
29652: PPUSH
29653: CALL_OW 266
29657: PUSH
29658: LD_INT 32
29660: PUSH
29661: LD_INT 33
29663: PUSH
29664: EMPTY
29665: LIST
29666: LIST
29667: IN
29668: PUSH
29669: LD_VAR 0 4
29673: PPUSH
29674: CALL_OW 304
29678: NOT
29679: AND
29680: PUSH
29681: LD_VAR 0 4
29685: PPUSH
29686: CALL_OW 269
29690: PUSH
29691: LD_INT 0
29693: EQUAL
29694: AND
29695: IFFALSE 29725
// begin ComPlaceWeapon ( temp_unit , i [ 7 ] ) ;
29697: LD_VAR 0 4
29701: PPUSH
29702: LD_VAR 0 1
29706: PUSH
29707: LD_INT 7
29709: ARRAY
29710: PPUSH
29711: CALL_OW 148
// temp_value = true ;
29715: LD_ADDR_VAR 0 3
29719: PUSH
29720: LD_INT 1
29722: ST_TO_ADDR
// break ;
29723: GO 29727
// end ; end ;
29725: GO 29596
29727: POP
29728: POP
// if temp_value then
29729: LD_VAR 0 3
29733: IFFALSE 29737
// continue ;
29735: GO 29265
// temp = 0 ;
29737: LD_ADDR_VAR 0 2
29741: PUSH
29742: LD_INT 0
29744: ST_TO_ADDR
// for i in ai_facts [ base ] do
29745: LD_ADDR_VAR 0 1
29749: PUSH
29750: LD_EXP 41
29754: PUSH
29755: LD_VAR 0 6
29759: ARRAY
29760: PUSH
29761: FOR_IN
29762: IFFALSE 29795
// if GetWorkingProgress ( i ) > 0 then
29764: LD_VAR 0 1
29768: PPUSH
29769: CALL_OW 328
29773: PUSH
29774: LD_INT 0
29776: GREATER
29777: IFFALSE 29793
// temp = temp + 1 ;
29779: LD_ADDR_VAR 0 2
29783: PUSH
29784: LD_VAR 0 2
29788: PUSH
29789: LD_INT 1
29791: PLUS
29792: ST_TO_ADDR
29793: GO 29761
29795: POP
29796: POP
// if ai_vehicles_defend [ base ] + temp < MaxNumWarVehiclesDefend ( base ) and ai_VehiclesLeft [ base ] > 0 then
29797: LD_EXP 57
29801: PUSH
29802: LD_VAR 0 6
29806: ARRAY
29807: PUSH
29808: LD_VAR 0 2
29812: PLUS
29813: PUSH
29814: LD_VAR 0 6
29818: PPUSH
29819: CALL 28971 0 1
29823: LESS
29824: PUSH
29825: LD_EXP 162
29829: PUSH
29830: LD_VAR 0 6
29834: ARRAY
29835: PUSH
29836: LD_INT 0
29838: GREATER
29839: AND
29840: IFFALSE 30430
// begin if saved_construct_list [ base ] > 0 and not under_attack then
29842: LD_VAR 0 12
29846: PUSH
29847: LD_VAR 0 6
29851: ARRAY
29852: PUSH
29853: LD_INT 0
29855: GREATER
29856: PUSH
29857: LD_VAR 0 13
29861: NOT
29862: AND
29863: IFFALSE 29883
// begin construct_list = saved_construct_list [ base ] ;
29865: LD_ADDR_VAR 0 10
29869: PUSH
29870: LD_VAR 0 12
29874: PUSH
29875: LD_VAR 0 6
29879: ARRAY
29880: ST_TO_ADDR
// end else
29881: GO 30366
// begin construct_list = [ ] ;
29883: LD_ADDR_VAR 0 10
29887: PUSH
29888: EMPTY
29889: ST_TO_ADDR
// case base of 2 :
29890: LD_VAR 0 6
29894: PUSH
29895: LD_INT 2
29897: DOUBLE
29898: EQUAL
29899: IFTRUE 29903
29901: GO 30130
29903: POP
// begin temp_list = [ ru_gun , ru_heavy_gun , ru_rocket_launcher , ru_rocket , ru_gatling_gun ] ;
29904: LD_ADDR_VAR 0 5
29908: PUSH
29909: LD_INT 44
29911: PUSH
29912: LD_INT 46
29914: PUSH
29915: LD_INT 45
29917: PUSH
29918: LD_INT 47
29920: PUSH
29921: LD_INT 43
29923: PUSH
29924: EMPTY
29925: LIST
29926: LIST
29927: LIST
29928: LIST
29929: LIST
29930: ST_TO_ADDR
// if difficulty = 2 then
29931: LD_OWVAR 67
29935: PUSH
29936: LD_INT 2
29938: EQUAL
29939: IFFALSE 29955
// temp_list = temp_list ^ ru_heavy_gun ;
29941: LD_ADDR_VAR 0 5
29945: PUSH
29946: LD_VAR 0 5
29950: PUSH
29951: LD_INT 46
29953: ADD
29954: ST_TO_ADDR
// if difficulty = 3 then
29955: LD_OWVAR 67
29959: PUSH
29960: LD_INT 3
29962: EQUAL
29963: IFFALSE 30004
// begin temp_list = Replace ( temp_list , 1 , ru_heavy_gun ) ;
29965: LD_ADDR_VAR 0 5
29969: PUSH
29970: LD_VAR 0 5
29974: PPUSH
29975: LD_INT 1
29977: PPUSH
29978: LD_INT 46
29980: PPUSH
29981: CALL_OW 1
29985: ST_TO_ADDR
// temp_list = Delete ( temp_list , 3 ) ;
29986: LD_ADDR_VAR 0 5
29990: PUSH
29991: LD_VAR 0 5
29995: PPUSH
29996: LD_INT 3
29998: PPUSH
29999: CALL_OW 3
30003: ST_TO_ADDR
// end ; temp_value = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
30004: LD_ADDR_VAR 0 3
30008: PUSH
30009: LD_VAR 0 5
30013: PUSH
30014: LD_INT 1
30016: PPUSH
30017: LD_VAR 0 5
30021: PUSH
30022: LD_INT 0
30024: PLUS
30025: PPUSH
30026: CALL_OW 12
30030: ARRAY
30031: ST_TO_ADDR
// if Rand ( 1 , [ 2 , 3 , 4 ] [ difficulty ] ) = 1 and not temp_value in [ ru_heavy_gun , ru_rocket ] then
30032: LD_INT 1
30034: PPUSH
30035: LD_INT 2
30037: PUSH
30038: LD_INT 3
30040: PUSH
30041: LD_INT 4
30043: PUSH
30044: EMPTY
30045: LIST
30046: LIST
30047: LIST
30048: PUSH
30049: LD_OWVAR 67
30053: ARRAY
30054: PPUSH
30055: CALL_OW 12
30059: PUSH
30060: LD_INT 1
30062: EQUAL
30063: PUSH
30064: LD_VAR 0 3
30068: PUSH
30069: LD_INT 46
30071: PUSH
30072: LD_INT 47
30074: PUSH
30075: EMPTY
30076: LIST
30077: LIST
30078: IN
30079: NOT
30080: AND
30081: IFFALSE 30093
// i = ru_medium_tracked else
30083: LD_ADDR_VAR 0 1
30087: PUSH
30088: LD_INT 22
30090: ST_TO_ADDR
30091: GO 30101
// i = ru_heavy_tracked ;
30093: LD_ADDR_VAR 0 1
30097: PUSH
30098: LD_INT 24
30100: ST_TO_ADDR
// construct_list = [ i , engine_siberite , control_computer , temp_value ] ;
30101: LD_ADDR_VAR 0 10
30105: PUSH
30106: LD_VAR 0 1
30110: PUSH
30111: LD_INT 3
30113: PUSH
30114: LD_INT 3
30116: PUSH
30117: LD_VAR 0 3
30121: PUSH
30122: EMPTY
30123: LIST
30124: LIST
30125: LIST
30126: LIST
30127: ST_TO_ADDR
// end ; 1 :
30128: GO 30366
30130: LD_INT 1
30132: DOUBLE
30133: EQUAL
30134: IFTRUE 30138
30136: GO 30365
30138: POP
// begin temp_list = [ ru_gun , ru_heavy_gun , ru_rocket_launcher , ru_rocket , ru_gatling_gun ] ;
30139: LD_ADDR_VAR 0 5
30143: PUSH
30144: LD_INT 44
30146: PUSH
30147: LD_INT 46
30149: PUSH
30150: LD_INT 45
30152: PUSH
30153: LD_INT 47
30155: PUSH
30156: LD_INT 43
30158: PUSH
30159: EMPTY
30160: LIST
30161: LIST
30162: LIST
30163: LIST
30164: LIST
30165: ST_TO_ADDR
// if difficulty = 2 then
30166: LD_OWVAR 67
30170: PUSH
30171: LD_INT 2
30173: EQUAL
30174: IFFALSE 30190
// temp_list = temp_list ^ ru_heavy_gun ;
30176: LD_ADDR_VAR 0 5
30180: PUSH
30181: LD_VAR 0 5
30185: PUSH
30186: LD_INT 46
30188: ADD
30189: ST_TO_ADDR
// if difficulty = 3 then
30190: LD_OWVAR 67
30194: PUSH
30195: LD_INT 3
30197: EQUAL
30198: IFFALSE 30239
// begin temp_list = Replace ( temp_list , 1 , ru_heavy_gun ) ;
30200: LD_ADDR_VAR 0 5
30204: PUSH
30205: LD_VAR 0 5
30209: PPUSH
30210: LD_INT 1
30212: PPUSH
30213: LD_INT 46
30215: PPUSH
30216: CALL_OW 1
30220: ST_TO_ADDR
// temp_list = Delete ( temp_list , 3 ) ;
30221: LD_ADDR_VAR 0 5
30225: PUSH
30226: LD_VAR 0 5
30230: PPUSH
30231: LD_INT 3
30233: PPUSH
30234: CALL_OW 3
30238: ST_TO_ADDR
// end ; temp_value = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
30239: LD_ADDR_VAR 0 3
30243: PUSH
30244: LD_VAR 0 5
30248: PUSH
30249: LD_INT 1
30251: PPUSH
30252: LD_VAR 0 5
30256: PUSH
30257: LD_INT 0
30259: PLUS
30260: PPUSH
30261: CALL_OW 12
30265: ARRAY
30266: ST_TO_ADDR
// if Rand ( 1 , [ 2 , 3 , 4 ] [ difficulty ] ) = 1 and not temp_value in [ ru_heavy_gun , ru_rocket ] then
30267: LD_INT 1
30269: PPUSH
30270: LD_INT 2
30272: PUSH
30273: LD_INT 3
30275: PUSH
30276: LD_INT 4
30278: PUSH
30279: EMPTY
30280: LIST
30281: LIST
30282: LIST
30283: PUSH
30284: LD_OWVAR 67
30288: ARRAY
30289: PPUSH
30290: CALL_OW 12
30294: PUSH
30295: LD_INT 1
30297: EQUAL
30298: PUSH
30299: LD_VAR 0 3
30303: PUSH
30304: LD_INT 46
30306: PUSH
30307: LD_INT 47
30309: PUSH
30310: EMPTY
30311: LIST
30312: LIST
30313: IN
30314: NOT
30315: AND
30316: IFFALSE 30328
// i = ru_medium_tracked else
30318: LD_ADDR_VAR 0 1
30322: PUSH
30323: LD_INT 22
30325: ST_TO_ADDR
30326: GO 30336
// i = ru_heavy_tracked ;
30328: LD_ADDR_VAR 0 1
30332: PUSH
30333: LD_INT 24
30335: ST_TO_ADDR
// construct_list = [ i , engine_siberite , control_computer , temp_value ] ;
30336: LD_ADDR_VAR 0 10
30340: PUSH
30341: LD_VAR 0 1
30345: PUSH
30346: LD_INT 3
30348: PUSH
30349: LD_INT 3
30351: PUSH
30352: LD_VAR 0 3
30356: PUSH
30357: EMPTY
30358: LIST
30359: LIST
30360: LIST
30361: LIST
30362: ST_TO_ADDR
// end ; end ;
30363: GO 30366
30365: POP
// end ; if construct_list > 0 then
30366: LD_VAR 0 10
30370: PUSH
30371: LD_INT 0
30373: GREATER
30374: IFFALSE 30428
// begin ComConstruct ( [ idle_factories [ 1 ] ] , construct_list [ 1 ] , construct_list [ 2 ] , construct_list [ 3 ] , construct_list [ 4 ] ) ;
30376: LD_VAR 0 7
30380: PUSH
30381: LD_INT 1
30383: ARRAY
30384: PUSH
30385: EMPTY
30386: LIST
30387: PPUSH
30388: LD_VAR 0 10
30392: PUSH
30393: LD_INT 1
30395: ARRAY
30396: PPUSH
30397: LD_VAR 0 10
30401: PUSH
30402: LD_INT 2
30404: ARRAY
30405: PPUSH
30406: LD_VAR 0 10
30410: PUSH
30411: LD_INT 3
30413: ARRAY
30414: PPUSH
30415: LD_VAR 0 10
30419: PUSH
30420: LD_INT 4
30422: ARRAY
30423: PPUSH
30424: CALL_OW 125
// end ; continue ;
30428: GO 29265
// end ; end ;
30430: GO 29265
30432: POP
30433: POP
// until false ;
30434: LD_INT 0
30436: IFFALSE 29226
// end ;
30438: PPOPN 13
30440: END
// on VehicleCaptured ( new_identifier , old_identifier , old_side , capturing_unit ) do var temp_list , base ;
30441: LD_INT 0
30443: PPUSH
30444: PPUSH
// begin if old_side = you then
30445: LD_VAR 0 3
30449: PUSH
30450: LD_EXP 4
30454: EQUAL
30455: IFFALSE 30459
// exit ;
30457: GO 30490
// for base in ai_bases do
30459: LD_ADDR_VAR 0 6
30463: PUSH
30464: LD_EXP 29
30468: PUSH
30469: FOR_IN
30470: IFFALSE 30488
// RemoveVehicleFromVariables ( base , old_identifier ) ;
30472: LD_VAR 0 6
30476: PPUSH
30477: LD_VAR 0 2
30481: PPUSH
30482: CALL 2323 0 2
30486: GO 30469
30488: POP
30489: POP
// end ;
30490: PPOPN 6
30492: END
// on VehicleConstructed ( vehicle , factory ) do var side , temp_list , base , un ;
30493: LD_INT 0
30495: PPUSH
30496: PPUSH
30497: PPUSH
30498: PPUSH
// begin side = GetSide ( vehicle ) ;
30499: LD_ADDR_VAR 0 3
30503: PUSH
30504: LD_VAR 0 1
30508: PPUSH
30509: CALL_OW 255
30513: ST_TO_ADDR
// base = FindBase ( vehicle ) ;
30514: LD_ADDR_VAR 0 5
30518: PUSH
30519: LD_VAR 0 1
30523: PPUSH
30524: CALL 4246 0 1
30528: ST_TO_ADDR
// if base = 0 then
30529: LD_VAR 0 5
30533: PUSH
30534: LD_INT 0
30536: EQUAL
30537: IFFALSE 30541
// exit ;
30539: GO 30858
// case GetWeapon ( vehicle ) of us_cargo_bay , ar_cargo_bay , ru_cargo_bay :
30541: LD_VAR 0 1
30545: PPUSH
30546: CALL_OW 264
30550: PUSH
30551: LD_INT 12
30553: DOUBLE
30554: EQUAL
30555: IFTRUE 30571
30557: LD_INT 32
30559: DOUBLE
30560: EQUAL
30561: IFTRUE 30571
30563: LD_INT 51
30565: DOUBLE
30566: EQUAL
30567: IFTRUE 30571
30569: GO 30622
30571: POP
// begin ai_cargo_bay = Replace ( ai_cargo_bay , base , vehicle ) ;
30572: LD_ADDR_EXP 75
30576: PUSH
30577: LD_EXP 75
30581: PPUSH
30582: LD_VAR 0 5
30586: PPUSH
30587: LD_VAR 0 1
30591: PPUSH
30592: CALL_OW 1
30596: ST_TO_ADDR
// ai_cargo_bay_under_construction = Replace ( ai_cargo_bay_under_construction , base , false ) ;
30597: LD_ADDR_EXP 76
30601: PUSH
30602: LD_EXP 76
30606: PPUSH
30607: LD_VAR 0 5
30611: PPUSH
30612: LD_INT 0
30614: PPUSH
30615: CALL_OW 1
30619: ST_TO_ADDR
// end ; us_crane , ru_crane :
30620: GO 30858
30622: LD_INT 13
30624: DOUBLE
30625: EQUAL
30626: IFTRUE 30636
30628: LD_INT 52
30630: DOUBLE
30631: EQUAL
30632: IFTRUE 30636
30634: GO 30687
30636: POP
// begin ai_crane = Replace ( ai_crane , base , vehicle ) ;
30637: LD_ADDR_EXP 78
30641: PUSH
30642: LD_EXP 78
30646: PPUSH
30647: LD_VAR 0 5
30651: PPUSH
30652: LD_VAR 0 1
30656: PPUSH
30657: CALL_OW 1
30661: ST_TO_ADDR
// ai_crane_under_construction = Replace ( ai_crane_under_construction , base , false ) ;
30662: LD_ADDR_EXP 79
30666: PUSH
30667: LD_EXP 79
30671: PPUSH
30672: LD_VAR 0 5
30676: PPUSH
30677: LD_INT 0
30679: PPUSH
30680: CALL_OW 1
30684: ST_TO_ADDR
// end ; ru_time_lapser :
30685: GO 30858
30687: LD_INT 49
30689: DOUBLE
30690: EQUAL
30691: IFTRUE 30695
30693: GO 30745
30695: POP
// begin temp_list = ai_taufield_vehicles [ base ] ^ vehicle ;
30696: LD_ADDR_VAR 0 4
30700: PUSH
30701: LD_EXP 90
30705: PUSH
30706: LD_VAR 0 5
30710: ARRAY
30711: PUSH
30712: LD_VAR 0 1
30716: ADD
30717: ST_TO_ADDR
// ai_taufield_vehicles = Replace ( ai_taufield_vehicles , base , temp_list ) ;
30718: LD_ADDR_EXP 90
30722: PUSH
30723: LD_EXP 90
30727: PPUSH
30728: LD_VAR 0 5
30732: PPUSH
30733: LD_VAR 0 4
30737: PPUSH
30738: CALL_OW 1
30742: ST_TO_ADDR
// end ; else
30743: GO 30858
30745: POP
// begin temp_list = ai_vehicles_defend [ base ] ^ vehicle ;
30746: LD_ADDR_VAR 0 4
30750: PUSH
30751: LD_EXP 57
30755: PUSH
30756: LD_VAR 0 5
30760: ARRAY
30761: PUSH
30762: LD_VAR 0 1
30766: ADD
30767: ST_TO_ADDR
// if producing_the_attack = 0 or factory = ai_facts [ 2 ] [ 2 ] then
30768: LD_EXP 118
30772: PUSH
30773: LD_INT 0
30775: EQUAL
30776: PUSH
30777: LD_VAR 0 2
30781: PUSH
30782: LD_EXP 41
30786: PUSH
30787: LD_INT 2
30789: ARRAY
30790: PUSH
30791: LD_INT 2
30793: ARRAY
30794: EQUAL
30795: OR
30796: IFFALSE 30823
// ai_vehicles_defend = Replace ( ai_vehicles_defend , base , temp_list ) ;
30798: LD_ADDR_EXP 57
30802: PUSH
30803: LD_EXP 57
30807: PPUSH
30808: LD_VAR 0 5
30812: PPUSH
30813: LD_VAR 0 4
30817: PPUSH
30818: CALL_OW 1
30822: ST_TO_ADDR
// ai_VehiclesLeft = replace ( ai_VehiclesLeft , base , ai_VehiclesLeft [ base ] - 1 ) ;
30823: LD_ADDR_EXP 162
30827: PUSH
30828: LD_EXP 162
30832: PPUSH
30833: LD_VAR 0 5
30837: PPUSH
30838: LD_EXP 162
30842: PUSH
30843: LD_VAR 0 5
30847: ARRAY
30848: PUSH
30849: LD_INT 1
30851: MINUS
30852: PPUSH
30853: CALL_OW 1
30857: ST_TO_ADDR
// end ; end ; end ;
30858: PPOPN 6
30860: END
// on BehemothConstructed ( behe ) do var side , base , temp_list , i ;
30861: LD_INT 0
30863: PPUSH
30864: PPUSH
30865: PPUSH
30866: PPUSH
// begin side = GetSide ( behe ) ;
30867: LD_ADDR_VAR 0 2
30871: PUSH
30872: LD_VAR 0 1
30876: PPUSH
30877: CALL_OW 255
30881: ST_TO_ADDR
// if side = you then
30882: LD_VAR 0 2
30886: PUSH
30887: LD_EXP 4
30891: EQUAL
30892: IFFALSE 30896
// exit ;
30894: GO 31046
// base = 0 ;
30896: LD_ADDR_VAR 0 3
30900: PUSH
30901: LD_INT 0
30903: ST_TO_ADDR
// for i in ai_bases do
30904: LD_ADDR_VAR 0 5
30908: PUSH
30909: LD_EXP 29
30913: PUSH
30914: FOR_IN
30915: IFFALSE 30985
// if GetX ( behe ) = ai_behemoth_construction_hex [ i ] [ 1 ] and GetY ( behe ) = ai_behemoth_construction_hex [ i ] [ 2 ] then
30917: LD_VAR 0 1
30921: PPUSH
30922: CALL_OW 250
30926: PUSH
30927: LD_EXP 95
30931: PUSH
30932: LD_VAR 0 5
30936: ARRAY
30937: PUSH
30938: LD_INT 1
30940: ARRAY
30941: EQUAL
30942: PUSH
30943: LD_VAR 0 1
30947: PPUSH
30948: CALL_OW 251
30952: PUSH
30953: LD_EXP 95
30957: PUSH
30958: LD_VAR 0 5
30962: ARRAY
30963: PUSH
30964: LD_INT 2
30966: ARRAY
30967: EQUAL
30968: AND
30969: IFFALSE 30983
// begin base = i ;
30971: LD_ADDR_VAR 0 3
30975: PUSH
30976: LD_VAR 0 5
30980: ST_TO_ADDR
// break ;
30981: GO 30985
// end ;
30983: GO 30914
30985: POP
30986: POP
// if base = 0 then
30987: LD_VAR 0 3
30991: PUSH
30992: LD_INT 0
30994: EQUAL
30995: IFFALSE 30999
// exit ;
30997: GO 31046
// temp_list = ai_behemoths [ base ] ^ behe ;
30999: LD_ADDR_VAR 0 4
31003: PUSH
31004: LD_EXP 93
31008: PUSH
31009: LD_VAR 0 3
31013: ARRAY
31014: PUSH
31015: LD_VAR 0 1
31019: ADD
31020: ST_TO_ADDR
// ai_behemoths = Replace ( ai_behemoths , base , temp_list ) ;
31021: LD_ADDR_EXP 93
31025: PUSH
31026: LD_EXP 93
31030: PPUSH
31031: LD_VAR 0 3
31035: PPUSH
31036: LD_VAR 0 4
31040: PPUSH
31041: CALL_OW 1
31045: ST_TO_ADDR
// end ;
31046: PPOPN 5
31048: END
// export function ResetVehicleAttackDelay ( base ) ; var time ; begin
31049: LD_INT 0
31051: PPUSH
31052: PPUSH
// end ;
31053: LD_VAR 0 2
31057: RET
// export function ResetHumanAttackDelay ( base ) ; begin
31058: LD_INT 0
31060: PPUSH
// end ;
31061: LD_VAR 0 2
31065: RET
// export function FindNonhumansNearUnit ( side , un , dist , only_dangerous ) ; var weapon_list , temp_list , i , btype , b , val ; begin
31066: LD_INT 0
31068: PPUSH
31069: PPUSH
31070: PPUSH
31071: PPUSH
31072: PPUSH
31073: PPUSH
31074: PPUSH
// temp_list = FilterAllUnits ( [ [ f_enemy , side ] , [ f_not , [ f_type , unit_human ] ] , [ f_dist , un , dist ] , [ f_see , side ] ] ) ;
31075: LD_ADDR_VAR 0 7
31079: PUSH
31080: LD_INT 81
31082: PUSH
31083: LD_VAR 0 1
31087: PUSH
31088: EMPTY
31089: LIST
31090: LIST
31091: PUSH
31092: LD_INT 3
31094: PUSH
31095: LD_INT 21
31097: PUSH
31098: LD_INT 1
31100: PUSH
31101: EMPTY
31102: LIST
31103: LIST
31104: PUSH
31105: EMPTY
31106: LIST
31107: LIST
31108: PUSH
31109: LD_INT 91
31111: PUSH
31112: LD_VAR 0 2
31116: PUSH
31117: LD_VAR 0 3
31121: PUSH
31122: EMPTY
31123: LIST
31124: LIST
31125: LIST
31126: PUSH
31127: LD_INT 101
31129: PUSH
31130: LD_VAR 0 1
31134: PUSH
31135: EMPTY
31136: LIST
31137: LIST
31138: PUSH
31139: EMPTY
31140: LIST
31141: LIST
31142: LIST
31143: LIST
31144: PPUSH
31145: CALL_OW 69
31149: ST_TO_ADDR
// if only_dangerous then
31150: LD_VAR 0 4
31154: IFFALSE 31173
// begin result = DangerousUnits ( temp_list ) ;
31156: LD_ADDR_VAR 0 5
31160: PUSH
31161: LD_VAR 0 7
31165: PPUSH
31166: CALL 31188 0 1
31170: ST_TO_ADDR
// end else
31171: GO 31183
// result = temp_list end ;
31173: LD_ADDR_VAR 0 5
31177: PUSH
31178: LD_VAR 0 7
31182: ST_TO_ADDR
31183: LD_VAR 0 5
31187: RET
// function DangerousUnits ( list ) ; var weapon_list , i , btype , b , val ; begin
31188: LD_INT 0
31190: PPUSH
31191: PPUSH
31192: PPUSH
31193: PPUSH
31194: PPUSH
31195: PPUSH
// weapon_list = [ us_machine_gun , us_light_gun , us_gatling_gun , us_double_gun , us_heavy_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , ar_multimissile_ballista , ar_light_gun , ar_double_machine_gun , ar_gatling_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb , ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_rocket_launcher , ru_heavy_gun , ru_rocket , ru_siberium_rocket , ru_time_lapser ] ;
31196: LD_ADDR_VAR 0 3
31200: PUSH
31201: LD_INT 2
31203: PUSH
31204: LD_INT 3
31206: PUSH
31207: LD_INT 4
31209: PUSH
31210: LD_INT 5
31212: PUSH
31213: LD_INT 6
31215: PUSH
31216: LD_INT 7
31218: PUSH
31219: LD_INT 8
31221: PUSH
31222: LD_INT 9
31224: PUSH
31225: LD_INT 10
31227: PUSH
31228: LD_INT 22
31230: PUSH
31231: LD_INT 23
31233: PUSH
31234: LD_INT 24
31236: PUSH
31237: LD_INT 25
31239: PUSH
31240: LD_INT 26
31242: PUSH
31243: LD_INT 27
31245: PUSH
31246: LD_INT 28
31248: PUSH
31249: LD_INT 29
31251: PUSH
31252: LD_INT 42
31254: PUSH
31255: LD_INT 43
31257: PUSH
31258: LD_INT 44
31260: PUSH
31261: LD_INT 45
31263: PUSH
31264: LD_INT 46
31266: PUSH
31267: LD_INT 47
31269: PUSH
31270: LD_INT 48
31272: PUSH
31273: LD_INT 49
31275: PUSH
31276: EMPTY
31277: LIST
31278: LIST
31279: LIST
31280: LIST
31281: LIST
31282: LIST
31283: LIST
31284: LIST
31285: LIST
31286: LIST
31287: LIST
31288: LIST
31289: LIST
31290: LIST
31291: LIST
31292: LIST
31293: LIST
31294: LIST
31295: LIST
31296: LIST
31297: LIST
31298: LIST
31299: LIST
31300: LIST
31301: LIST
31302: ST_TO_ADDR
// result = [ ] ;
31303: LD_ADDR_VAR 0 2
31307: PUSH
31308: EMPTY
31309: ST_TO_ADDR
// for i in list do
31310: LD_ADDR_VAR 0 4
31314: PUSH
31315: LD_VAR 0 1
31319: PUSH
31320: FOR_IN
31321: IFFALSE 31769
// case GetType ( i ) of unit_human :
31323: LD_VAR 0 4
31327: PPUSH
31328: CALL_OW 247
31332: PUSH
31333: LD_INT 1
31335: DOUBLE
31336: EQUAL
31337: IFTRUE 31341
31339: GO 31374
31341: POP
// begin if not IsOk ( i ) then
31342: LD_VAR 0 4
31346: PPUSH
31347: CALL_OW 302
31351: NOT
31352: IFFALSE 31356
// continue ;
31354: GO 31320
// result = result ^ i ;
31356: LD_ADDR_VAR 0 2
31360: PUSH
31361: LD_VAR 0 2
31365: PUSH
31366: LD_VAR 0 4
31370: ADD
31371: ST_TO_ADDR
// end ; unit_vehicle :
31372: GO 31767
31374: LD_INT 2
31376: DOUBLE
31377: EQUAL
31378: IFTRUE 31382
31380: GO 31522
31382: POP
// begin if not IsOk ( i ) then
31383: LD_VAR 0 4
31387: PPUSH
31388: CALL_OW 302
31392: NOT
31393: IFFALSE 31397
// continue ;
31395: GO 31320
// case GetControl ( i ) of control_manual , control_rider :
31397: LD_VAR 0 4
31401: PPUSH
31402: CALL_OW 263
31406: PUSH
31407: LD_INT 1
31409: DOUBLE
31410: EQUAL
31411: IFTRUE 31421
31413: LD_INT 4
31415: DOUBLE
31416: EQUAL
31417: IFTRUE 31421
31419: GO 31441
31421: POP
// begin if UnitsInside ( i ) = 0 then
31422: LD_VAR 0 4
31426: PPUSH
31427: CALL_OW 313
31431: PUSH
31432: LD_INT 0
31434: EQUAL
31435: IFFALSE 31439
// continue ;
31437: GO 31320
// end ; control_remote :
31439: GO 31487
31441: LD_INT 2
31443: DOUBLE
31444: EQUAL
31445: IFTRUE 31449
31447: GO 31469
31449: POP
// begin if IsControledBy ( i ) = 0 then
31450: LD_VAR 0 4
31454: PPUSH
31455: CALL_OW 312
31459: PUSH
31460: LD_INT 0
31462: EQUAL
31463: IFFALSE 31467
// continue ;
31465: GO 31320
// end ; control_computer , control_apeman :
31467: GO 31487
31469: LD_INT 3
31471: DOUBLE
31472: EQUAL
31473: IFTRUE 31483
31475: LD_INT 5
31477: DOUBLE
31478: EQUAL
31479: IFTRUE 31483
31481: GO 31486
31483: POP
// begin end ; end ;
31484: GO 31487
31486: POP
// if GetWeapon ( i ) in weapon_list then
31487: LD_VAR 0 4
31491: PPUSH
31492: CALL_OW 264
31496: PUSH
31497: LD_VAR 0 3
31501: IN
31502: IFFALSE 31520
// result = result ^ i ;
31504: LD_ADDR_VAR 0 2
31508: PUSH
31509: LD_VAR 0 2
31513: PUSH
31514: LD_VAR 0 4
31518: ADD
31519: ST_TO_ADDR
// end ; unit_building :
31520: GO 31767
31522: LD_INT 3
31524: DOUBLE
31525: EQUAL
31526: IFTRUE 31530
31528: GO 31766
31530: POP
// begin if not IsOk ( i ) then
31531: LD_VAR 0 4
31535: PPUSH
31536: CALL_OW 302
31540: NOT
31541: IFFALSE 31545
// continue ;
31543: GO 31320
// btype = GetBType ( i ) ;
31545: LD_ADDR_VAR 0 5
31549: PUSH
31550: LD_VAR 0 4
31554: PPUSH
31555: CALL_OW 266
31559: ST_TO_ADDR
// case btype of b_turret :
31560: LD_VAR 0 5
31564: PUSH
31565: LD_INT 33
31567: DOUBLE
31568: EQUAL
31569: IFTRUE 31573
31571: GO 31576
31573: POP
// begin end ; b_bunker , b_breastwork , b_armoury , b_barracks , b_fort :
31574: GO 31631
31576: LD_INT 32
31578: DOUBLE
31579: EQUAL
31580: IFTRUE 31608
31582: LD_INT 31
31584: DOUBLE
31585: EQUAL
31586: IFTRUE 31608
31588: LD_INT 4
31590: DOUBLE
31591: EQUAL
31592: IFTRUE 31608
31594: LD_INT 5
31596: DOUBLE
31597: EQUAL
31598: IFTRUE 31608
31600: LD_INT 35
31602: DOUBLE
31603: EQUAL
31604: IFTRUE 31608
31606: GO 31628
31608: POP
// begin if UnitsInside ( i ) = 0 then
31609: LD_VAR 0 4
31613: PPUSH
31614: CALL_OW 313
31618: PUSH
31619: LD_INT 0
31621: EQUAL
31622: IFFALSE 31626
// continue ;
31624: GO 31320
// end ; else
31626: GO 31631
31628: POP
// continue ; end ;
31629: GO 31320
// if btype in [ b_bunker , b_turret ] then
31631: LD_VAR 0 5
31635: PUSH
31636: LD_INT 32
31638: PUSH
31639: LD_INT 33
31641: PUSH
31642: EMPTY
31643: LIST
31644: LIST
31645: IN
31646: IFFALSE 31748
// if not GetBWeapon ( i ) in weapon_list then
31648: LD_VAR 0 4
31652: PPUSH
31653: CALL_OW 269
31657: PUSH
31658: LD_VAR 0 3
31662: IN
31663: NOT
31664: IFFALSE 31670
// continue else
31666: GO 31320
31668: GO 31748
// begin b = GetBase ( i ) ;
31670: LD_ADDR_VAR 0 6
31674: PUSH
31675: LD_VAR 0 4
31679: PPUSH
31680: CALL_OW 274
31684: ST_TO_ADDR
// val = false ;
31685: LD_ADDR_VAR 0 7
31689: PUSH
31690: LD_INT 0
31692: ST_TO_ADDR
// if b = 0 then
31693: LD_VAR 0 6
31697: PUSH
31698: LD_INT 0
31700: EQUAL
31701: IFFALSE 31713
// val = true else
31703: LD_ADDR_VAR 0 7
31707: PUSH
31708: LD_INT 1
31710: ST_TO_ADDR
31711: GO 31740
// if GetEnergy ( b ) [ 4 ] = 0 then
31713: LD_VAR 0 6
31717: PPUSH
31718: CALL_OW 278
31722: PUSH
31723: LD_INT 4
31725: ARRAY
31726: PUSH
31727: LD_INT 0
31729: EQUAL
31730: IFFALSE 31740
// val = true ;
31732: LD_ADDR_VAR 0 7
31736: PUSH
31737: LD_INT 1
31739: ST_TO_ADDR
// if val then
31740: LD_VAR 0 7
31744: IFFALSE 31748
// continue ;
31746: GO 31320
// end ; result = result ^ i ;
31748: LD_ADDR_VAR 0 2
31752: PUSH
31753: LD_VAR 0 2
31757: PUSH
31758: LD_VAR 0 4
31762: ADD
31763: ST_TO_ADDR
// end ; end ;
31764: GO 31767
31766: POP
31767: GO 31320
31769: POP
31770: POP
// end ;
31771: LD_VAR 0 2
31775: RET
// every 0 0$5 do var base , i ;
31776: GO 31778
31778: DISABLE
31779: LD_INT 0
31781: PPUSH
31782: PPUSH
// begin for base in ai_bases do
31783: LD_ADDR_VAR 0 1
31787: PUSH
31788: LD_EXP 29
31792: PUSH
31793: FOR_IN
31794: IFFALSE 31891
// for i in ( ai_vehicles_defend [ base ] ^ ai_cargo_bay [ base ] ^ ai_crane [ base ] ) diff 0 do
31796: LD_ADDR_VAR 0 2
31800: PUSH
31801: LD_EXP 57
31805: PUSH
31806: LD_VAR 0 1
31810: ARRAY
31811: PUSH
31812: LD_EXP 75
31816: PUSH
31817: LD_VAR 0 1
31821: ARRAY
31822: ADD
31823: PUSH
31824: LD_EXP 78
31828: PUSH
31829: LD_VAR 0 1
31833: ARRAY
31834: ADD
31835: PUSH
31836: LD_INT 0
31838: DIFF
31839: PUSH
31840: FOR_IN
31841: IFFALSE 31887
// if GetFuel ( i ) < 10 and GetEngine ( i ) = engine_combustion then
31843: LD_VAR 0 2
31847: PPUSH
31848: CALL_OW 261
31852: PUSH
31853: LD_INT 10
31855: LESS
31856: PUSH
31857: LD_VAR 0 2
31861: PPUSH
31862: CALL_OW 262
31866: PUSH
31867: LD_INT 1
31869: EQUAL
31870: AND
31871: IFFALSE 31885
// SetFuel ( i , 10 ) ;
31873: LD_VAR 0 2
31877: PPUSH
31878: LD_INT 10
31880: PPUSH
31881: CALL_OW 240
31885: GO 31840
31887: POP
31888: POP
31889: GO 31793
31891: POP
31892: POP
// enable ;
31893: ENABLE
// end ;
31894: PPOPN 2
31896: END
// every 0 0$1 + 0 0$0.7 do var side , i , scientists_list , temp_list , temp_unit , base , k , temp_list_3 , area ;
31897: GO 31899
31899: DISABLE
31900: LD_INT 0
31902: PPUSH
31903: PPUSH
31904: PPUSH
31905: PPUSH
31906: PPUSH
31907: PPUSH
31908: PPUSH
31909: PPUSH
31910: PPUSH
// begin repeat if ai_bases = 0 then
31911: LD_EXP 29
31915: PUSH
31916: LD_INT 0
31918: EQUAL
31919: IFFALSE 31923
// exit ;
31921: GO 32674
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
31923: LD_INT 35
31925: PUSH
31926: LD_EXP 29
31930: PUSH
31931: LD_INT 0
31933: PLUS
31934: MOD
31935: PPUSH
31936: CALL_OW 67
// for base in ai_bases do
31940: LD_ADDR_VAR 0 6
31944: PUSH
31945: LD_EXP 29
31949: PUSH
31950: FOR_IN
31951: IFFALSE 32668
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
31953: LD_INT 35
31955: PUSH
31956: LD_EXP 29
31960: PUSH
31961: LD_INT 0
31963: PLUS
31964: DIV
31965: PPUSH
31966: CALL_OW 67
// side = GetBaseSide ( base ) ;
31970: LD_ADDR_VAR 0 1
31974: PUSH
31975: LD_VAR 0 6
31979: PPUSH
31980: CALL 3818 0 1
31984: ST_TO_ADDR
// scientists_list = ai_scientists [ base ] diff ai_heal_these_humans [ base ] ;
31985: LD_ADDR_VAR 0 3
31989: PUSH
31990: LD_EXP 35
31994: PUSH
31995: LD_VAR 0 6
31999: ARRAY
32000: PUSH
32001: LD_EXP 65
32005: PUSH
32006: LD_VAR 0 6
32010: ARRAY
32011: DIFF
32012: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
32013: LD_ADDR_VAR 0 4
32017: PUSH
32018: LD_EXP 65
32022: PUSH
32023: LD_VAR 0 6
32027: ARRAY
32028: ST_TO_ADDR
// i = 1 ;
32029: LD_ADDR_VAR 0 2
32033: PUSH
32034: LD_INT 1
32036: ST_TO_ADDR
// while i <= scientists_list do
32037: LD_VAR 0 2
32041: PUSH
32042: LD_VAR 0 3
32046: LESSEQUAL
32047: IFFALSE 32130
// begin if GetLives ( scientists_list [ i ] ) <= 700 then
32049: LD_VAR 0 3
32053: PUSH
32054: LD_VAR 0 2
32058: ARRAY
32059: PPUSH
32060: CALL_OW 256
32064: PUSH
32065: LD_INT 700
32067: LESSEQUAL
32068: IFFALSE 32114
// begin temp_list = temp_list ^ scientists_list [ i ] ;
32070: LD_ADDR_VAR 0 4
32074: PUSH
32075: LD_VAR 0 4
32079: PUSH
32080: LD_VAR 0 3
32084: PUSH
32085: LD_VAR 0 2
32089: ARRAY
32090: ADD
32091: ST_TO_ADDR
// scientists_list = Delete ( scientists_list , i ) ;
32092: LD_ADDR_VAR 0 3
32096: PUSH
32097: LD_VAR 0 3
32101: PPUSH
32102: LD_VAR 0 2
32106: PPUSH
32107: CALL_OW 3
32111: ST_TO_ADDR
// continue ;
32112: GO 32037
// end ; i = i + 1 ;
32114: LD_ADDR_VAR 0 2
32118: PUSH
32119: LD_VAR 0 2
32123: PUSH
32124: LD_INT 1
32126: PLUS
32127: ST_TO_ADDR
// end ;
32128: GO 32037
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
32130: LD_ADDR_EXP 65
32134: PUSH
32135: LD_EXP 65
32139: PPUSH
32140: LD_VAR 0 6
32144: PPUSH
32145: LD_VAR 0 4
32149: PPUSH
32150: CALL_OW 1
32154: ST_TO_ADDR
// temp_list = [ ] ;
32155: LD_ADDR_VAR 0 4
32159: PUSH
32160: EMPTY
32161: ST_TO_ADDR
// for i in ai_heal_these_humans [ base ] do
32162: LD_ADDR_VAR 0 2
32166: PUSH
32167: LD_EXP 65
32171: PUSH
32172: LD_VAR 0 6
32176: ARRAY
32177: PUSH
32178: FOR_IN
32179: IFFALSE 32229
// if GetLives ( i ) < 1000 and IsInUnit ( i ) = 0 then
32181: LD_VAR 0 2
32185: PPUSH
32186: CALL_OW 256
32190: PUSH
32191: LD_INT 1000
32193: LESS
32194: PUSH
32195: LD_VAR 0 2
32199: PPUSH
32200: CALL_OW 310
32204: PUSH
32205: LD_INT 0
32207: EQUAL
32208: AND
32209: IFFALSE 32227
// temp_list = temp_list ^ i ;
32211: LD_ADDR_VAR 0 4
32215: PUSH
32216: LD_VAR 0 4
32220: PUSH
32221: LD_VAR 0 2
32225: ADD
32226: ST_TO_ADDR
32227: GO 32178
32229: POP
32230: POP
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
32231: LD_ADDR_EXP 65
32235: PUSH
32236: LD_EXP 65
32240: PPUSH
32241: LD_VAR 0 6
32245: PPUSH
32246: LD_VAR 0 4
32250: PPUSH
32251: CALL_OW 1
32255: ST_TO_ADDR
// for i in ai_heal_these_humans [ base ] do
32256: LD_ADDR_VAR 0 2
32260: PUSH
32261: LD_EXP 65
32265: PUSH
32266: LD_VAR 0 6
32270: ARRAY
32271: PUSH
32272: FOR_IN
32273: IFFALSE 32361
// begin if GetDistUnitXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 4 then
32275: LD_VAR 0 2
32279: PPUSH
32280: LD_EXP 63
32284: PUSH
32285: LD_VAR 0 6
32289: ARRAY
32290: PUSH
32291: LD_INT 1
32293: ARRAY
32294: PPUSH
32295: LD_EXP 63
32299: PUSH
32300: LD_VAR 0 6
32304: ARRAY
32305: PUSH
32306: LD_INT 2
32308: ARRAY
32309: PPUSH
32310: CALL_OW 297
32314: PUSH
32315: LD_INT 4
32317: GREATER
32318: IFFALSE 32359
// ComMoveXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
32320: LD_VAR 0 2
32324: PPUSH
32325: LD_EXP 63
32329: PUSH
32330: LD_VAR 0 6
32334: ARRAY
32335: PUSH
32336: LD_INT 1
32338: ARRAY
32339: PPUSH
32340: LD_EXP 63
32344: PUSH
32345: LD_VAR 0 6
32349: ARRAY
32350: PUSH
32351: LD_INT 2
32353: ARRAY
32354: PPUSH
32355: CALL_OW 111
// end ;
32359: GO 32272
32361: POP
32362: POP
// if scientists_list = 0 then
32363: LD_VAR 0 3
32367: PUSH
32368: LD_INT 0
32370: EQUAL
32371: IFFALSE 32375
// continue ;
32373: GO 31950
// if ai_heal_these_humans [ base ] > 0 then
32375: LD_EXP 65
32379: PUSH
32380: LD_VAR 0 6
32384: ARRAY
32385: PUSH
32386: LD_INT 0
32388: GREATER
32389: IFFALSE 32601
// begin area = GetBaseArea ( base ) ;
32391: LD_ADDR_VAR 0 9
32395: PUSH
32396: LD_VAR 0 6
32400: PPUSH
32401: CALL 3614 0 1
32405: ST_TO_ADDR
// temp_list = UnitFilter ( ai_heal_these_humans [ base ] , [ f_inarea , area ] ) ;
32406: LD_ADDR_VAR 0 4
32410: PUSH
32411: LD_EXP 65
32415: PUSH
32416: LD_VAR 0 6
32420: ARRAY
32421: PPUSH
32422: LD_INT 95
32424: PUSH
32425: LD_VAR 0 9
32429: PUSH
32430: EMPTY
32431: LIST
32432: LIST
32433: PPUSH
32434: CALL_OW 72
32438: ST_TO_ADDR
// if temp_list > 0 then
32439: LD_VAR 0 4
32443: PUSH
32444: LD_INT 0
32446: GREATER
32447: IFFALSE 32601
// begin scientists_list = GetHumansOutOfUnits ( scientists_list ) ;
32449: LD_ADDR_VAR 0 3
32453: PUSH
32454: LD_VAR 0 3
32458: PPUSH
32459: CALL 18607 0 1
32463: ST_TO_ADDR
// temp_list_3 = [ ] ;
32464: LD_ADDR_VAR 0 8
32468: PUSH
32469: EMPTY
32470: ST_TO_ADDR
// repeat i = 1 ;
32471: LD_ADDR_VAR 0 2
32475: PUSH
32476: LD_INT 1
32478: ST_TO_ADDR
// while i <= temp_list do
32479: LD_VAR 0 2
32483: PUSH
32484: LD_VAR 0 4
32488: LESSEQUAL
32489: IFFALSE 32581
// begin if scientists_list = 0 then
32491: LD_VAR 0 3
32495: PUSH
32496: LD_INT 0
32498: EQUAL
32499: IFFALSE 32503
// break ;
32501: GO 32581
// temp_unit = NearestUnitToUnit ( scientists_list , temp_list [ i ] ) ;
32503: LD_ADDR_VAR 0 5
32507: PUSH
32508: LD_VAR 0 3
32512: PPUSH
32513: LD_VAR 0 4
32517: PUSH
32518: LD_VAR 0 2
32522: ARRAY
32523: PPUSH
32524: CALL_OW 74
32528: ST_TO_ADDR
// ComHeal ( temp_unit , temp_list [ i ] ) ;
32529: LD_VAR 0 5
32533: PPUSH
32534: LD_VAR 0 4
32538: PUSH
32539: LD_VAR 0 2
32543: ARRAY
32544: PPUSH
32545: CALL_OW 128
// scientists_list = scientists_list diff temp_unit ;
32549: LD_ADDR_VAR 0 3
32553: PUSH
32554: LD_VAR 0 3
32558: PUSH
32559: LD_VAR 0 5
32563: DIFF
32564: ST_TO_ADDR
// i = i + 1 ;
32565: LD_ADDR_VAR 0 2
32569: PUSH
32570: LD_VAR 0 2
32574: PUSH
32575: LD_INT 1
32577: PLUS
32578: ST_TO_ADDR
// end ;
32579: GO 32479
// until scientists_list = 0 ;
32581: LD_VAR 0 3
32585: PUSH
32586: LD_INT 0
32588: EQUAL
32589: IFFALSE 32471
// scientists_list = temp_list_3 ;
32591: LD_ADDR_VAR 0 3
32595: PUSH
32596: LD_VAR 0 8
32600: ST_TO_ADDR
// end ; end ; DistributeHumansToBuildings ( base , scientists_list , UnitFilter ( ai_labs [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_scientistic , 6 , true , false ) ;
32601: LD_VAR 0 6
32605: PPUSH
32606: LD_VAR 0 3
32610: PPUSH
32611: LD_EXP 40
32615: PUSH
32616: LD_VAR 0 6
32620: ARRAY
32621: PPUSH
32622: LD_INT 50
32624: PUSH
32625: EMPTY
32626: LIST
32627: PUSH
32628: LD_INT 3
32630: PUSH
32631: LD_INT 57
32633: PUSH
32634: EMPTY
32635: LIST
32636: PUSH
32637: EMPTY
32638: LIST
32639: LIST
32640: PUSH
32641: EMPTY
32642: LIST
32643: LIST
32644: PPUSH
32645: CALL_OW 72
32649: PPUSH
32650: LD_INT 4
32652: PPUSH
32653: LD_INT 6
32655: PPUSH
32656: LD_INT 1
32658: PPUSH
32659: LD_INT 0
32661: PPUSH
32662: CALL 7668 0 7
// end ;
32666: GO 31950
32668: POP
32669: POP
// until false ;
32670: LD_INT 0
32672: IFFALSE 31911
// end ;
32674: PPOPN 9
32676: END
// every 0 0$1 trigger starting_people_count = 8 do var base , temp_list , i , temp , marking , basearea , buildings ;
32677: LD_EXP 172
32681: PUSH
32682: LD_INT 8
32684: EQUAL
32685: IFFALSE 35480
32687: GO 32689
32689: DISABLE
32690: LD_INT 0
32692: PPUSH
32693: PPUSH
32694: PPUSH
32695: PPUSH
32696: PPUSH
32697: PPUSH
32698: PPUSH
// begin for base in ai_bases do
32699: LD_ADDR_VAR 0 1
32703: PUSH
32704: LD_EXP 29
32708: PUSH
32709: FOR_IN
32710: IFFALSE 34772
// if base in [ 1 , 2 , 3 , 4 ] then
32712: LD_VAR 0 1
32716: PUSH
32717: LD_INT 1
32719: PUSH
32720: LD_INT 2
32722: PUSH
32723: LD_INT 3
32725: PUSH
32726: LD_INT 4
32728: PUSH
32729: EMPTY
32730: LIST
32731: LIST
32732: LIST
32733: LIST
32734: IN
32735: IFFALSE 34448
// begin if isdead ( ai_depot [ base ] ) or ( not IsOk ( ai_depot [ base ] ) and unitfilter ( ai_engineers [ base ] , [ f_lives , 701 ] ) = 0 ) or unitfilter ( ai_soldiers [ base ] , [ f_alive ] ) + unitfilter ( ai_engineers [ base ] , [ f_alive ] ) + unitfilter ( ai_mechanics_defend [ base ] , [ f_alive ] ) + unitfilter ( ai_scientists [ base ] , [ f_alive ] ) + unitfilter ( ai_apemen_engineers [ base ] , [ f_alive ] ) < starting_people_count [ base ] / 2 then
32737: LD_EXP 39
32741: PUSH
32742: LD_VAR 0 1
32746: ARRAY
32747: PPUSH
32748: CALL_OW 301
32752: PUSH
32753: LD_EXP 39
32757: PUSH
32758: LD_VAR 0 1
32762: ARRAY
32763: PPUSH
32764: CALL_OW 302
32768: NOT
32769: PUSH
32770: LD_EXP 32
32774: PUSH
32775: LD_VAR 0 1
32779: ARRAY
32780: PPUSH
32781: LD_INT 24
32783: PUSH
32784: LD_INT 701
32786: PUSH
32787: EMPTY
32788: LIST
32789: LIST
32790: PPUSH
32791: CALL_OW 72
32795: PUSH
32796: LD_INT 0
32798: EQUAL
32799: AND
32800: OR
32801: PUSH
32802: LD_EXP 30
32806: PUSH
32807: LD_VAR 0 1
32811: ARRAY
32812: PPUSH
32813: LD_INT 51
32815: PUSH
32816: EMPTY
32817: LIST
32818: PPUSH
32819: CALL_OW 72
32823: PUSH
32824: LD_EXP 32
32828: PUSH
32829: LD_VAR 0 1
32833: ARRAY
32834: PPUSH
32835: LD_INT 51
32837: PUSH
32838: EMPTY
32839: LIST
32840: PPUSH
32841: CALL_OW 72
32845: PLUS
32846: PUSH
32847: LD_EXP 33
32851: PUSH
32852: LD_VAR 0 1
32856: ARRAY
32857: PPUSH
32858: LD_INT 51
32860: PUSH
32861: EMPTY
32862: LIST
32863: PPUSH
32864: CALL_OW 72
32868: PLUS
32869: PUSH
32870: LD_EXP 35
32874: PUSH
32875: LD_VAR 0 1
32879: ARRAY
32880: PPUSH
32881: LD_INT 51
32883: PUSH
32884: EMPTY
32885: LIST
32886: PPUSH
32887: CALL_OW 72
32891: PLUS
32892: PUSH
32893: LD_EXP 37
32897: PUSH
32898: LD_VAR 0 1
32902: ARRAY
32903: PPUSH
32904: LD_INT 51
32906: PUSH
32907: EMPTY
32908: LIST
32909: PPUSH
32910: CALL_OW 72
32914: PLUS
32915: PUSH
32916: LD_EXP 172
32920: PUSH
32921: LD_VAR 0 1
32925: ARRAY
32926: PUSH
32927: LD_INT 2
32929: DIVREAL
32930: LESS
32931: OR
32932: IFFALSE 34446
// begin temp_list = ai_soldiers [ base ] ^ ai_engineers [ base ] ^ ai_mechanics_defend [ base ] ^ ai_scientists [ base ] ^ ai_apemen_engineers [ base ] ;
32934: LD_ADDR_VAR 0 2
32938: PUSH
32939: LD_EXP 30
32943: PUSH
32944: LD_VAR 0 1
32948: ARRAY
32949: PUSH
32950: LD_EXP 32
32954: PUSH
32955: LD_VAR 0 1
32959: ARRAY
32960: ADD
32961: PUSH
32962: LD_EXP 33
32966: PUSH
32967: LD_VAR 0 1
32971: ARRAY
32972: ADD
32973: PUSH
32974: LD_EXP 35
32978: PUSH
32979: LD_VAR 0 1
32983: ARRAY
32984: ADD
32985: PUSH
32986: LD_EXP 37
32990: PUSH
32991: LD_VAR 0 1
32995: ARRAY
32996: ADD
32997: ST_TO_ADDR
// comexitbuilding ( temp_list diff ai_soldiers [ base ] ) ;
32998: LD_VAR 0 2
33002: PUSH
33003: LD_EXP 30
33007: PUSH
33008: LD_VAR 0 1
33012: ARRAY
33013: DIFF
33014: PPUSH
33015: CALL_OW 122
// ai_soldiers = replace ( ai_soldiers , base , [ ] ) ;
33019: LD_ADDR_EXP 30
33023: PUSH
33024: LD_EXP 30
33028: PPUSH
33029: LD_VAR 0 1
33033: PPUSH
33034: EMPTY
33035: PPUSH
33036: CALL_OW 1
33040: ST_TO_ADDR
// ai_engineers = replace ( ai_engineers , base , [ ] ) ;
33041: LD_ADDR_EXP 32
33045: PUSH
33046: LD_EXP 32
33050: PPUSH
33051: LD_VAR 0 1
33055: PPUSH
33056: EMPTY
33057: PPUSH
33058: CALL_OW 1
33062: ST_TO_ADDR
// ai_mechanics_defend = replace ( ai_mechanics_defend , base , [ ] ) ;
33063: LD_ADDR_EXP 33
33067: PUSH
33068: LD_EXP 33
33072: PPUSH
33073: LD_VAR 0 1
33077: PPUSH
33078: EMPTY
33079: PPUSH
33080: CALL_OW 1
33084: ST_TO_ADDR
// ai_scientists = replace ( ai_scientists , base , [ ] ) ;
33085: LD_ADDR_EXP 35
33089: PUSH
33090: LD_EXP 35
33094: PPUSH
33095: LD_VAR 0 1
33099: PPUSH
33100: EMPTY
33101: PPUSH
33102: CALL_OW 1
33106: ST_TO_ADDR
// ai_apemen_engineers = replace ( ai_apemen_engineers , base , [ ] ) ;
33107: LD_ADDR_EXP 37
33111: PUSH
33112: LD_EXP 37
33116: PPUSH
33117: LD_VAR 0 1
33121: PPUSH
33122: EMPTY
33123: PPUSH
33124: CALL_OW 1
33128: ST_TO_ADDR
// ai_bases = ai_bases diff base ;
33129: LD_ADDR_EXP 29
33133: PUSH
33134: LD_EXP 29
33138: PUSH
33139: LD_VAR 0 1
33143: DIFF
33144: ST_TO_ADDR
// marking = [ base1_mark , base2_mark , base3_mark , base4_mark , base5_mark , base6_mark , base7_mark , base8_mark , base9_mark , base10_mark ] [ base ] ;
33145: LD_ADDR_VAR 0 5
33149: PUSH
33150: LD_INT 34
33152: PUSH
33153: LD_INT 35
33155: PUSH
33156: LD_INT 36
33158: PUSH
33159: LD_INT 37
33161: PUSH
33162: LD_INT 38
33164: PUSH
33165: LD_INT 39
33167: PUSH
33168: LD_INT 40
33170: PUSH
33171: LD_INT 41
33173: PUSH
33174: LD_INT 42
33176: PUSH
33177: LD_INT 43
33179: PUSH
33180: EMPTY
33181: LIST
33182: LIST
33183: LIST
33184: LIST
33185: LIST
33186: LIST
33187: LIST
33188: LIST
33189: LIST
33190: LIST
33191: PUSH
33192: LD_VAR 0 1
33196: ARRAY
33197: ST_TO_ADDR
// SetAreaMapShow ( marking , 5 ) ;
33198: LD_VAR 0 5
33202: PPUSH
33203: LD_INT 5
33205: PPUSH
33206: CALL_OW 424
// basearea = [ area_base1 , area_base2 , area_base3 , area_base4 , area_base5 , area_base6 , area_base7 , area_base8 , area_base9 , area_base10 ] [ base ] ;
33210: LD_ADDR_VAR 0 6
33214: PUSH
33215: LD_INT 1
33217: PUSH
33218: LD_INT 2
33220: PUSH
33221: LD_INT 3
33223: PUSH
33224: LD_INT 7
33226: PUSH
33227: LD_INT 8
33229: PUSH
33230: LD_INT 9
33232: PUSH
33233: LD_INT 10
33235: PUSH
33236: LD_INT 11
33238: PUSH
33239: LD_INT 17
33241: PUSH
33242: LD_INT 18
33244: PUSH
33245: EMPTY
33246: LIST
33247: LIST
33248: LIST
33249: LIST
33250: LIST
33251: LIST
33252: LIST
33253: LIST
33254: LIST
33255: LIST
33256: PUSH
33257: LD_VAR 0 1
33261: ARRAY
33262: ST_TO_ADDR
// buildings = filterunitsinarea ( basearea , [ [ f_type , unit_building ] , [ f_not , [ f_btype , b_teleport ] ] , [ f_side , 3 ] ] ) ;
33263: LD_ADDR_VAR 0 7
33267: PUSH
33268: LD_VAR 0 6
33272: PPUSH
33273: LD_INT 21
33275: PUSH
33276: LD_INT 3
33278: PUSH
33279: EMPTY
33280: LIST
33281: LIST
33282: PUSH
33283: LD_INT 3
33285: PUSH
33286: LD_INT 30
33288: PUSH
33289: LD_INT 34
33291: PUSH
33292: EMPTY
33293: LIST
33294: LIST
33295: PUSH
33296: EMPTY
33297: LIST
33298: LIST
33299: PUSH
33300: LD_INT 22
33302: PUSH
33303: LD_INT 3
33305: PUSH
33306: EMPTY
33307: LIST
33308: LIST
33309: PUSH
33310: EMPTY
33311: LIST
33312: LIST
33313: LIST
33314: PPUSH
33315: CALL_OW 70
33319: ST_TO_ADDR
// SetBLevel ( buildings , 0 ) ;
33320: LD_VAR 0 7
33324: PPUSH
33325: LD_INT 0
33327: PPUSH
33328: CALL_OW 241
// ai_people_running = ai_people_running ^ [ temp_list ] ;
33332: LD_ADDR_EXP 164
33336: PUSH
33337: LD_EXP 164
33341: PUSH
33342: LD_VAR 0 2
33346: PUSH
33347: EMPTY
33348: LIST
33349: ADD
33350: ST_TO_ADDR
// case base of 1 :
33351: LD_VAR 0 1
33355: PUSH
33356: LD_INT 1
33358: DOUBLE
33359: EQUAL
33360: IFTRUE 33364
33362: GO 33620
33364: POP
// begin if 2 in ai_bases then
33365: LD_INT 2
33367: PUSH
33368: LD_EXP 29
33372: IN
33373: IFFALSE 33514
// ai_people_running_path = ai_people_running_path ^ [ [ area_base1 , [ [ 115 , 73 ] , [ 129 , 83 ] , [ 139 , 91 ] , [ 149 , 100 ] , [ 152 , 105 ] , [ 163 , 118 ] , [ 173 , 124 ] , [ 181 , 124 ] , [ 181 , 108 ] , [ 176 , 99 ] ] , 2 ] ] else
33375: LD_ADDR_EXP 165
33379: PUSH
33380: LD_EXP 165
33384: PUSH
33385: LD_INT 1
33387: PUSH
33388: LD_INT 115
33390: PUSH
33391: LD_INT 73
33393: PUSH
33394: EMPTY
33395: LIST
33396: LIST
33397: PUSH
33398: LD_INT 129
33400: PUSH
33401: LD_INT 83
33403: PUSH
33404: EMPTY
33405: LIST
33406: LIST
33407: PUSH
33408: LD_INT 139
33410: PUSH
33411: LD_INT 91
33413: PUSH
33414: EMPTY
33415: LIST
33416: LIST
33417: PUSH
33418: LD_INT 149
33420: PUSH
33421: LD_INT 100
33423: PUSH
33424: EMPTY
33425: LIST
33426: LIST
33427: PUSH
33428: LD_INT 152
33430: PUSH
33431: LD_INT 105
33433: PUSH
33434: EMPTY
33435: LIST
33436: LIST
33437: PUSH
33438: LD_INT 163
33440: PUSH
33441: LD_INT 118
33443: PUSH
33444: EMPTY
33445: LIST
33446: LIST
33447: PUSH
33448: LD_INT 173
33450: PUSH
33451: LD_INT 124
33453: PUSH
33454: EMPTY
33455: LIST
33456: LIST
33457: PUSH
33458: LD_INT 181
33460: PUSH
33461: LD_INT 124
33463: PUSH
33464: EMPTY
33465: LIST
33466: LIST
33467: PUSH
33468: LD_INT 181
33470: PUSH
33471: LD_INT 108
33473: PUSH
33474: EMPTY
33475: LIST
33476: LIST
33477: PUSH
33478: LD_INT 176
33480: PUSH
33481: LD_INT 99
33483: PUSH
33484: EMPTY
33485: LIST
33486: LIST
33487: PUSH
33488: EMPTY
33489: LIST
33490: LIST
33491: LIST
33492: LIST
33493: LIST
33494: LIST
33495: LIST
33496: LIST
33497: LIST
33498: LIST
33499: PUSH
33500: LD_INT 2
33502: PUSH
33503: EMPTY
33504: LIST
33505: LIST
33506: LIST
33507: PUSH
33508: EMPTY
33509: LIST
33510: ADD
33511: ST_TO_ADDR
33512: GO 33618
// ai_people_running_path = ai_people_running_path ^ [ [ area_base1 , [ [ 86 , 74 ] , [ 78 , 81 ] , [ 76 , 86 ] , [ 73 , 90 ] , [ 67 , 95 ] , [ 58 , 95 ] , [ 48 , 94 ] ] , 0 ] ] ;
33514: LD_ADDR_EXP 165
33518: PUSH
33519: LD_EXP 165
33523: PUSH
33524: LD_INT 1
33526: PUSH
33527: LD_INT 86
33529: PUSH
33530: LD_INT 74
33532: PUSH
33533: EMPTY
33534: LIST
33535: LIST
33536: PUSH
33537: LD_INT 78
33539: PUSH
33540: LD_INT 81
33542: PUSH
33543: EMPTY
33544: LIST
33545: LIST
33546: PUSH
33547: LD_INT 76
33549: PUSH
33550: LD_INT 86
33552: PUSH
33553: EMPTY
33554: LIST
33555: LIST
33556: PUSH
33557: LD_INT 73
33559: PUSH
33560: LD_INT 90
33562: PUSH
33563: EMPTY
33564: LIST
33565: LIST
33566: PUSH
33567: LD_INT 67
33569: PUSH
33570: LD_INT 95
33572: PUSH
33573: EMPTY
33574: LIST
33575: LIST
33576: PUSH
33577: LD_INT 58
33579: PUSH
33580: LD_INT 95
33582: PUSH
33583: EMPTY
33584: LIST
33585: LIST
33586: PUSH
33587: LD_INT 48
33589: PUSH
33590: LD_INT 94
33592: PUSH
33593: EMPTY
33594: LIST
33595: LIST
33596: PUSH
33597: EMPTY
33598: LIST
33599: LIST
33600: LIST
33601: LIST
33602: LIST
33603: LIST
33604: LIST
33605: PUSH
33606: LD_INT 0
33608: PUSH
33609: EMPTY
33610: LIST
33611: LIST
33612: LIST
33613: PUSH
33614: EMPTY
33615: LIST
33616: ADD
33617: ST_TO_ADDR
// end ; 2 :
33618: GO 34336
33620: LD_INT 2
33622: DOUBLE
33623: EQUAL
33624: IFTRUE 33628
33626: GO 33757
33628: POP
// begin ai_people_running_path = ai_people_running_path ^ [ [ area_base2 , [ [ 181 , 108 ] , [ 181 , 122 ] , [ 171 , 122 ] , [ 159 , 114 ] , [ 147 , 104 ] , [ 130 , 89 ] , [ 118 , 83 ] , [ 102 , 75 ] , [ 94 , 69 ] ] , 1 ] ] end ; 3 :
33629: LD_ADDR_EXP 165
33633: PUSH
33634: LD_EXP 165
33638: PUSH
33639: LD_INT 2
33641: PUSH
33642: LD_INT 181
33644: PUSH
33645: LD_INT 108
33647: PUSH
33648: EMPTY
33649: LIST
33650: LIST
33651: PUSH
33652: LD_INT 181
33654: PUSH
33655: LD_INT 122
33657: PUSH
33658: EMPTY
33659: LIST
33660: LIST
33661: PUSH
33662: LD_INT 171
33664: PUSH
33665: LD_INT 122
33667: PUSH
33668: EMPTY
33669: LIST
33670: LIST
33671: PUSH
33672: LD_INT 159
33674: PUSH
33675: LD_INT 114
33677: PUSH
33678: EMPTY
33679: LIST
33680: LIST
33681: PUSH
33682: LD_INT 147
33684: PUSH
33685: LD_INT 104
33687: PUSH
33688: EMPTY
33689: LIST
33690: LIST
33691: PUSH
33692: LD_INT 130
33694: PUSH
33695: LD_INT 89
33697: PUSH
33698: EMPTY
33699: LIST
33700: LIST
33701: PUSH
33702: LD_INT 118
33704: PUSH
33705: LD_INT 83
33707: PUSH
33708: EMPTY
33709: LIST
33710: LIST
33711: PUSH
33712: LD_INT 102
33714: PUSH
33715: LD_INT 75
33717: PUSH
33718: EMPTY
33719: LIST
33720: LIST
33721: PUSH
33722: LD_INT 94
33724: PUSH
33725: LD_INT 69
33727: PUSH
33728: EMPTY
33729: LIST
33730: LIST
33731: PUSH
33732: EMPTY
33733: LIST
33734: LIST
33735: LIST
33736: LIST
33737: LIST
33738: LIST
33739: LIST
33740: LIST
33741: LIST
33742: PUSH
33743: LD_INT 1
33745: PUSH
33746: EMPTY
33747: LIST
33748: LIST
33749: LIST
33750: PUSH
33751: EMPTY
33752: LIST
33753: ADD
33754: ST_TO_ADDR
33755: GO 34336
33757: LD_INT 3
33759: DOUBLE
33760: EQUAL
33761: IFTRUE 33765
33763: GO 33955
33765: POP
// begin if 1 in ai_bases then
33766: LD_INT 1
33768: PUSH
33769: LD_EXP 29
33773: IN
33774: IFFALSE 33860
// ai_people_running_path = ai_people_running_path ^ [ [ area_base3 , [ [ 121 , 122 ] , [ 117 , 108 ] , [ 112 , 96 ] , [ 105 , 83 ] , [ 100 , 74 ] ] , 1 ] ] else
33776: LD_ADDR_EXP 165
33780: PUSH
33781: LD_EXP 165
33785: PUSH
33786: LD_INT 3
33788: PUSH
33789: LD_INT 121
33791: PUSH
33792: LD_INT 122
33794: PUSH
33795: EMPTY
33796: LIST
33797: LIST
33798: PUSH
33799: LD_INT 117
33801: PUSH
33802: LD_INT 108
33804: PUSH
33805: EMPTY
33806: LIST
33807: LIST
33808: PUSH
33809: LD_INT 112
33811: PUSH
33812: LD_INT 96
33814: PUSH
33815: EMPTY
33816: LIST
33817: LIST
33818: PUSH
33819: LD_INT 105
33821: PUSH
33822: LD_INT 83
33824: PUSH
33825: EMPTY
33826: LIST
33827: LIST
33828: PUSH
33829: LD_INT 100
33831: PUSH
33832: LD_INT 74
33834: PUSH
33835: EMPTY
33836: LIST
33837: LIST
33838: PUSH
33839: EMPTY
33840: LIST
33841: LIST
33842: LIST
33843: LIST
33844: LIST
33845: PUSH
33846: LD_INT 1
33848: PUSH
33849: EMPTY
33850: LIST
33851: LIST
33852: LIST
33853: PUSH
33854: EMPTY
33855: LIST
33856: ADD
33857: ST_TO_ADDR
33858: GO 33953
// ai_people_running_path = ai_people_running_path ^ [ [ area_base3 , [ [ 86 , 118 ] , [ 78 , 113 ] , [ 67 , 107 ] , [ 56 , 102 ] , [ 61 , 104 ] , [ 51 , 99 ] , ] , 0 ] ] ;
33860: LD_ADDR_EXP 165
33864: PUSH
33865: LD_EXP 165
33869: PUSH
33870: LD_INT 3
33872: PUSH
33873: LD_INT 86
33875: PUSH
33876: LD_INT 118
33878: PUSH
33879: EMPTY
33880: LIST
33881: LIST
33882: PUSH
33883: LD_INT 78
33885: PUSH
33886: LD_INT 113
33888: PUSH
33889: EMPTY
33890: LIST
33891: LIST
33892: PUSH
33893: LD_INT 67
33895: PUSH
33896: LD_INT 107
33898: PUSH
33899: EMPTY
33900: LIST
33901: LIST
33902: PUSH
33903: LD_INT 56
33905: PUSH
33906: LD_INT 102
33908: PUSH
33909: EMPTY
33910: LIST
33911: LIST
33912: PUSH
33913: LD_INT 61
33915: PUSH
33916: LD_INT 104
33918: PUSH
33919: EMPTY
33920: LIST
33921: LIST
33922: PUSH
33923: LD_INT 51
33925: PUSH
33926: LD_INT 99
33928: PUSH
33929: EMPTY
33930: LIST
33931: LIST
33932: PUSH
33933: EMPTY
33934: LIST
33935: LIST
33936: LIST
33937: LIST
33938: LIST
33939: LIST
33940: PUSH
33941: LD_INT 0
33943: PUSH
33944: EMPTY
33945: LIST
33946: LIST
33947: LIST
33948: PUSH
33949: EMPTY
33950: LIST
33951: ADD
33952: ST_TO_ADDR
// end ; 4 :
33953: GO 34336
33955: LD_INT 4
33957: DOUBLE
33958: EQUAL
33959: IFTRUE 33963
33961: GO 34335
33963: POP
// begin if 3 in ai_bases then
33964: LD_INT 3
33966: PUSH
33967: LD_EXP 29
33971: IN
33972: IFFALSE 34058
// ai_people_running_path = ai_people_running_path ^ [ [ area_base4 , [ [ 156 , 164 ] , [ 145 , 164 ] , [ 134 , 155 ] , [ 122 , 144 ] , [ 112 , 131 ] ] , 3 ] ] else
33974: LD_ADDR_EXP 165
33978: PUSH
33979: LD_EXP 165
33983: PUSH
33984: LD_INT 7
33986: PUSH
33987: LD_INT 156
33989: PUSH
33990: LD_INT 164
33992: PUSH
33993: EMPTY
33994: LIST
33995: LIST
33996: PUSH
33997: LD_INT 145
33999: PUSH
34000: LD_INT 164
34002: PUSH
34003: EMPTY
34004: LIST
34005: LIST
34006: PUSH
34007: LD_INT 134
34009: PUSH
34010: LD_INT 155
34012: PUSH
34013: EMPTY
34014: LIST
34015: LIST
34016: PUSH
34017: LD_INT 122
34019: PUSH
34020: LD_INT 144
34022: PUSH
34023: EMPTY
34024: LIST
34025: LIST
34026: PUSH
34027: LD_INT 112
34029: PUSH
34030: LD_INT 131
34032: PUSH
34033: EMPTY
34034: LIST
34035: LIST
34036: PUSH
34037: EMPTY
34038: LIST
34039: LIST
34040: LIST
34041: LIST
34042: LIST
34043: PUSH
34044: LD_INT 3
34046: PUSH
34047: EMPTY
34048: LIST
34049: LIST
34050: LIST
34051: PUSH
34052: EMPTY
34053: LIST
34054: ADD
34055: ST_TO_ADDR
34056: GO 34333
// if 1 in ai_bases then
34058: LD_INT 1
34060: PUSH
34061: LD_EXP 29
34065: IN
34066: IFFALSE 34196
// ai_people_running_path = ai_people_running_path ^ [ [ area_base4 , [ [ 156 , 164 ] , [ 145 , 164 ] , [ 134 , 155 ] , [ 125 , 140 ] , [ 123 , 125 ] , [ 120 , 111 ] , [ 112 , 96 ] , [ 105 , 81 ] , [ 97 , 71 ] ] , 1 ] ] else
34068: LD_ADDR_EXP 165
34072: PUSH
34073: LD_EXP 165
34077: PUSH
34078: LD_INT 7
34080: PUSH
34081: LD_INT 156
34083: PUSH
34084: LD_INT 164
34086: PUSH
34087: EMPTY
34088: LIST
34089: LIST
34090: PUSH
34091: LD_INT 145
34093: PUSH
34094: LD_INT 164
34096: PUSH
34097: EMPTY
34098: LIST
34099: LIST
34100: PUSH
34101: LD_INT 134
34103: PUSH
34104: LD_INT 155
34106: PUSH
34107: EMPTY
34108: LIST
34109: LIST
34110: PUSH
34111: LD_INT 125
34113: PUSH
34114: LD_INT 140
34116: PUSH
34117: EMPTY
34118: LIST
34119: LIST
34120: PUSH
34121: LD_INT 123
34123: PUSH
34124: LD_INT 125
34126: PUSH
34127: EMPTY
34128: LIST
34129: LIST
34130: PUSH
34131: LD_INT 120
34133: PUSH
34134: LD_INT 111
34136: PUSH
34137: EMPTY
34138: LIST
34139: LIST
34140: PUSH
34141: LD_INT 112
34143: PUSH
34144: LD_INT 96
34146: PUSH
34147: EMPTY
34148: LIST
34149: LIST
34150: PUSH
34151: LD_INT 105
34153: PUSH
34154: LD_INT 81
34156: PUSH
34157: EMPTY
34158: LIST
34159: LIST
34160: PUSH
34161: LD_INT 97
34163: PUSH
34164: LD_INT 71
34166: PUSH
34167: EMPTY
34168: LIST
34169: LIST
34170: PUSH
34171: EMPTY
34172: LIST
34173: LIST
34174: LIST
34175: LIST
34176: LIST
34177: LIST
34178: LIST
34179: LIST
34180: LIST
34181: PUSH
34182: LD_INT 1
34184: PUSH
34185: EMPTY
34186: LIST
34187: LIST
34188: LIST
34189: PUSH
34190: EMPTY
34191: LIST
34192: ADD
34193: ST_TO_ADDR
34194: GO 34333
// ai_people_running_path = ai_people_running_path ^ [ [ area_base4 , [ [ 156 , 164 ] , [ 145 , 164 ] , [ 134 , 155 ] , [ 122 , 144 ] , [ 112 , 131 ] , [ 90 , 121 ] , [ 78 , 114 ] , [ 66 , 105 ] , [ 59 , 100 ] , [ 50 , 98 ] ] , 0 ] ] ;
34196: LD_ADDR_EXP 165
34200: PUSH
34201: LD_EXP 165
34205: PUSH
34206: LD_INT 7
34208: PUSH
34209: LD_INT 156
34211: PUSH
34212: LD_INT 164
34214: PUSH
34215: EMPTY
34216: LIST
34217: LIST
34218: PUSH
34219: LD_INT 145
34221: PUSH
34222: LD_INT 164
34224: PUSH
34225: EMPTY
34226: LIST
34227: LIST
34228: PUSH
34229: LD_INT 134
34231: PUSH
34232: LD_INT 155
34234: PUSH
34235: EMPTY
34236: LIST
34237: LIST
34238: PUSH
34239: LD_INT 122
34241: PUSH
34242: LD_INT 144
34244: PUSH
34245: EMPTY
34246: LIST
34247: LIST
34248: PUSH
34249: LD_INT 112
34251: PUSH
34252: LD_INT 131
34254: PUSH
34255: EMPTY
34256: LIST
34257: LIST
34258: PUSH
34259: LD_INT 90
34261: PUSH
34262: LD_INT 121
34264: PUSH
34265: EMPTY
34266: LIST
34267: LIST
34268: PUSH
34269: LD_INT 78
34271: PUSH
34272: LD_INT 114
34274: PUSH
34275: EMPTY
34276: LIST
34277: LIST
34278: PUSH
34279: LD_INT 66
34281: PUSH
34282: LD_INT 105
34284: PUSH
34285: EMPTY
34286: LIST
34287: LIST
34288: PUSH
34289: LD_INT 59
34291: PUSH
34292: LD_INT 100
34294: PUSH
34295: EMPTY
34296: LIST
34297: LIST
34298: PUSH
34299: LD_INT 50
34301: PUSH
34302: LD_INT 98
34304: PUSH
34305: EMPTY
34306: LIST
34307: LIST
34308: PUSH
34309: EMPTY
34310: LIST
34311: LIST
34312: LIST
34313: LIST
34314: LIST
34315: LIST
34316: LIST
34317: LIST
34318: LIST
34319: LIST
34320: PUSH
34321: LD_INT 0
34323: PUSH
34324: EMPTY
34325: LIST
34326: LIST
34327: LIST
34328: PUSH
34329: EMPTY
34330: LIST
34331: ADD
34332: ST_TO_ADDR
// end ; end ;
34333: GO 34336
34335: POP
// for i in temp_list do
34336: LD_ADDR_VAR 0 3
34340: PUSH
34341: LD_VAR 0 2
34345: PUSH
34346: FOR_IN
34347: IFFALSE 34363
// settag ( i , 1 ) ;
34349: LD_VAR 0 3
34353: PPUSH
34354: LD_INT 1
34356: PPUSH
34357: CALL_OW 109
34361: GO 34346
34363: POP
34364: POP
// case rand ( 1 , 3 ) of 1 :
34365: LD_INT 1
34367: PPUSH
34368: LD_INT 3
34370: PPUSH
34371: CALL_OW 12
34375: PUSH
34376: LD_INT 1
34378: DOUBLE
34379: EQUAL
34380: IFTRUE 34384
34382: GO 34399
34384: POP
// Say ( Heike , Esc_He1 ) ; 2 :
34385: LD_EXP 12
34389: PPUSH
34390: LD_STRING Esc_He1
34392: PPUSH
34393: CALL_OW 88
34397: GO 34446
34399: LD_INT 2
34401: DOUBLE
34402: EQUAL
34403: IFTRUE 34407
34405: GO 34422
34407: POP
// Say ( Heike , Esc_He2 ) ; 3 :
34408: LD_EXP 12
34412: PPUSH
34413: LD_STRING Esc_He2
34415: PPUSH
34416: CALL_OW 88
34420: GO 34446
34422: LD_INT 3
34424: DOUBLE
34425: EQUAL
34426: IFTRUE 34430
34428: GO 34445
34430: POP
// Say ( Heike , Esc_He3 ) ; end ;
34431: LD_EXP 12
34435: PPUSH
34436: LD_STRING Esc_He3
34438: PPUSH
34439: CALL_OW 88
34443: GO 34446
34445: POP
// end ; end else
34446: GO 34770
// if unitfilter ( ai_soldiers [ base ] , [ f_ok ] ) + unitfilter ( ai_engineers [ base ] , [ f_ok ] ) + unitfilter ( ai_mechanics_defend [ base ] , [ f_ok ] ) + unitfilter ( ai_scientists [ base ] , [ f_ok ] ) + unitfilter ( ai_apemen_engineers [ base ] , [ f_ok ] ) = 0 then
34448: LD_EXP 30
34452: PUSH
34453: LD_VAR 0 1
34457: ARRAY
34458: PPUSH
34459: LD_INT 50
34461: PUSH
34462: EMPTY
34463: LIST
34464: PPUSH
34465: CALL_OW 72
34469: PUSH
34470: LD_EXP 32
34474: PUSH
34475: LD_VAR 0 1
34479: ARRAY
34480: PPUSH
34481: LD_INT 50
34483: PUSH
34484: EMPTY
34485: LIST
34486: PPUSH
34487: CALL_OW 72
34491: PLUS
34492: PUSH
34493: LD_EXP 33
34497: PUSH
34498: LD_VAR 0 1
34502: ARRAY
34503: PPUSH
34504: LD_INT 50
34506: PUSH
34507: EMPTY
34508: LIST
34509: PPUSH
34510: CALL_OW 72
34514: PLUS
34515: PUSH
34516: LD_EXP 35
34520: PUSH
34521: LD_VAR 0 1
34525: ARRAY
34526: PPUSH
34527: LD_INT 50
34529: PUSH
34530: EMPTY
34531: LIST
34532: PPUSH
34533: CALL_OW 72
34537: PLUS
34538: PUSH
34539: LD_EXP 37
34543: PUSH
34544: LD_VAR 0 1
34548: ARRAY
34549: PPUSH
34550: LD_INT 50
34552: PUSH
34553: EMPTY
34554: LIST
34555: PPUSH
34556: CALL_OW 72
34560: PLUS
34561: PUSH
34562: LD_INT 0
34564: EQUAL
34565: IFFALSE 34770
// begin ai_bases = ai_bases diff base ;
34567: LD_ADDR_EXP 29
34571: PUSH
34572: LD_EXP 29
34576: PUSH
34577: LD_VAR 0 1
34581: DIFF
34582: ST_TO_ADDR
// marking = [ base1_mark , base2_mark , base3_mark , base4_mark , base5_mark , base6_mark , base7_mark , base8_mark , base9_mark , base10_mark ] [ base ] ;
34583: LD_ADDR_VAR 0 5
34587: PUSH
34588: LD_INT 34
34590: PUSH
34591: LD_INT 35
34593: PUSH
34594: LD_INT 36
34596: PUSH
34597: LD_INT 37
34599: PUSH
34600: LD_INT 38
34602: PUSH
34603: LD_INT 39
34605: PUSH
34606: LD_INT 40
34608: PUSH
34609: LD_INT 41
34611: PUSH
34612: LD_INT 42
34614: PUSH
34615: LD_INT 43
34617: PUSH
34618: EMPTY
34619: LIST
34620: LIST
34621: LIST
34622: LIST
34623: LIST
34624: LIST
34625: LIST
34626: LIST
34627: LIST
34628: LIST
34629: PUSH
34630: LD_VAR 0 1
34634: ARRAY
34635: ST_TO_ADDR
// SetAreaMapShow ( marking , 5 ) ;
34636: LD_VAR 0 5
34640: PPUSH
34641: LD_INT 5
34643: PPUSH
34644: CALL_OW 424
// basearea = [ area_base1 , area_base2 , area_base3 , area_base4 , area_base5 , area_base6 , area_base7 , area_base8 , area_base9 , area_base10 ] [ base ] ;
34648: LD_ADDR_VAR 0 6
34652: PUSH
34653: LD_INT 1
34655: PUSH
34656: LD_INT 2
34658: PUSH
34659: LD_INT 3
34661: PUSH
34662: LD_INT 7
34664: PUSH
34665: LD_INT 8
34667: PUSH
34668: LD_INT 9
34670: PUSH
34671: LD_INT 10
34673: PUSH
34674: LD_INT 11
34676: PUSH
34677: LD_INT 17
34679: PUSH
34680: LD_INT 18
34682: PUSH
34683: EMPTY
34684: LIST
34685: LIST
34686: LIST
34687: LIST
34688: LIST
34689: LIST
34690: LIST
34691: LIST
34692: LIST
34693: LIST
34694: PUSH
34695: LD_VAR 0 1
34699: ARRAY
34700: ST_TO_ADDR
// buildings = filterunitsinarea ( basearea , [ [ f_type , unit_building ] , [ f_not , [ f_btype , b_teleport ] ] , [ f_side , 3 ] ] ) ;
34701: LD_ADDR_VAR 0 7
34705: PUSH
34706: LD_VAR 0 6
34710: PPUSH
34711: LD_INT 21
34713: PUSH
34714: LD_INT 3
34716: PUSH
34717: EMPTY
34718: LIST
34719: LIST
34720: PUSH
34721: LD_INT 3
34723: PUSH
34724: LD_INT 30
34726: PUSH
34727: LD_INT 34
34729: PUSH
34730: EMPTY
34731: LIST
34732: LIST
34733: PUSH
34734: EMPTY
34735: LIST
34736: LIST
34737: PUSH
34738: LD_INT 22
34740: PUSH
34741: LD_INT 3
34743: PUSH
34744: EMPTY
34745: LIST
34746: LIST
34747: PUSH
34748: EMPTY
34749: LIST
34750: LIST
34751: LIST
34752: PPUSH
34753: CALL_OW 70
34757: ST_TO_ADDR
// SetBLevel ( buildings , 0 ) ;
34758: LD_VAR 0 7
34762: PPUSH
34763: LD_INT 0
34765: PPUSH
34766: CALL_OW 241
// end ;
34770: GO 32709
34772: POP
34773: POP
// if temp_people_running > 0 then
34774: LD_EXP 166
34778: PUSH
34779: LD_INT 0
34781: GREATER
34782: IFFALSE 35479
// begin ai_people_running = ai_people_running ^ [ temp_people_running [ 1 ] [ 1 ] ] ;
34784: LD_ADDR_EXP 164
34788: PUSH
34789: LD_EXP 164
34793: PUSH
34794: LD_EXP 166
34798: PUSH
34799: LD_INT 1
34801: ARRAY
34802: PUSH
34803: LD_INT 1
34805: ARRAY
34806: PUSH
34807: EMPTY
34808: LIST
34809: ADD
34810: ST_TO_ADDR
// for i in temp_people_running [ 1 ] [ 1 ] do
34811: LD_ADDR_VAR 0 3
34815: PUSH
34816: LD_EXP 166
34820: PUSH
34821: LD_INT 1
34823: ARRAY
34824: PUSH
34825: LD_INT 1
34827: ARRAY
34828: PUSH
34829: FOR_IN
34830: IFFALSE 34846
// settag ( i , 1 ) ;
34832: LD_VAR 0 3
34836: PPUSH
34837: LD_INT 1
34839: PPUSH
34840: CALL_OW 109
34844: GO 34829
34846: POP
34847: POP
// case temp_people_running [ 1 ] [ 2 ] of 1 :
34848: LD_EXP 166
34852: PUSH
34853: LD_INT 1
34855: ARRAY
34856: PUSH
34857: LD_INT 2
34859: ARRAY
34860: PUSH
34861: LD_INT 1
34863: DOUBLE
34864: EQUAL
34865: IFTRUE 34869
34867: GO 35125
34869: POP
// begin if 2 in ai_bases then
34870: LD_INT 2
34872: PUSH
34873: LD_EXP 29
34877: IN
34878: IFFALSE 35019
// ai_people_running_path = ai_people_running_path ^ [ [ area_base1 , [ [ 115 , 73 ] , [ 129 , 83 ] , [ 139 , 91 ] , [ 149 , 100 ] , [ 152 , 105 ] , [ 163 , 118 ] , [ 173 , 124 ] , [ 181 , 124 ] , [ 181 , 108 ] , [ 176 , 99 ] ] , 2 ] ] else
34880: LD_ADDR_EXP 165
34884: PUSH
34885: LD_EXP 165
34889: PUSH
34890: LD_INT 1
34892: PUSH
34893: LD_INT 115
34895: PUSH
34896: LD_INT 73
34898: PUSH
34899: EMPTY
34900: LIST
34901: LIST
34902: PUSH
34903: LD_INT 129
34905: PUSH
34906: LD_INT 83
34908: PUSH
34909: EMPTY
34910: LIST
34911: LIST
34912: PUSH
34913: LD_INT 139
34915: PUSH
34916: LD_INT 91
34918: PUSH
34919: EMPTY
34920: LIST
34921: LIST
34922: PUSH
34923: LD_INT 149
34925: PUSH
34926: LD_INT 100
34928: PUSH
34929: EMPTY
34930: LIST
34931: LIST
34932: PUSH
34933: LD_INT 152
34935: PUSH
34936: LD_INT 105
34938: PUSH
34939: EMPTY
34940: LIST
34941: LIST
34942: PUSH
34943: LD_INT 163
34945: PUSH
34946: LD_INT 118
34948: PUSH
34949: EMPTY
34950: LIST
34951: LIST
34952: PUSH
34953: LD_INT 173
34955: PUSH
34956: LD_INT 124
34958: PUSH
34959: EMPTY
34960: LIST
34961: LIST
34962: PUSH
34963: LD_INT 181
34965: PUSH
34966: LD_INT 124
34968: PUSH
34969: EMPTY
34970: LIST
34971: LIST
34972: PUSH
34973: LD_INT 181
34975: PUSH
34976: LD_INT 108
34978: PUSH
34979: EMPTY
34980: LIST
34981: LIST
34982: PUSH
34983: LD_INT 176
34985: PUSH
34986: LD_INT 99
34988: PUSH
34989: EMPTY
34990: LIST
34991: LIST
34992: PUSH
34993: EMPTY
34994: LIST
34995: LIST
34996: LIST
34997: LIST
34998: LIST
34999: LIST
35000: LIST
35001: LIST
35002: LIST
35003: LIST
35004: PUSH
35005: LD_INT 2
35007: PUSH
35008: EMPTY
35009: LIST
35010: LIST
35011: LIST
35012: PUSH
35013: EMPTY
35014: LIST
35015: ADD
35016: ST_TO_ADDR
35017: GO 35123
// ai_people_running_path = ai_people_running_path ^ [ [ area_base1 , [ [ 86 , 74 ] , [ 78 , 81 ] , [ 76 , 86 ] , [ 73 , 90 ] , [ 67 , 95 ] , [ 58 , 95 ] , [ 48 , 94 ] ] , 0 ] ] ;
35019: LD_ADDR_EXP 165
35023: PUSH
35024: LD_EXP 165
35028: PUSH
35029: LD_INT 1
35031: PUSH
35032: LD_INT 86
35034: PUSH
35035: LD_INT 74
35037: PUSH
35038: EMPTY
35039: LIST
35040: LIST
35041: PUSH
35042: LD_INT 78
35044: PUSH
35045: LD_INT 81
35047: PUSH
35048: EMPTY
35049: LIST
35050: LIST
35051: PUSH
35052: LD_INT 76
35054: PUSH
35055: LD_INT 86
35057: PUSH
35058: EMPTY
35059: LIST
35060: LIST
35061: PUSH
35062: LD_INT 73
35064: PUSH
35065: LD_INT 90
35067: PUSH
35068: EMPTY
35069: LIST
35070: LIST
35071: PUSH
35072: LD_INT 67
35074: PUSH
35075: LD_INT 95
35077: PUSH
35078: EMPTY
35079: LIST
35080: LIST
35081: PUSH
35082: LD_INT 58
35084: PUSH
35085: LD_INT 95
35087: PUSH
35088: EMPTY
35089: LIST
35090: LIST
35091: PUSH
35092: LD_INT 48
35094: PUSH
35095: LD_INT 94
35097: PUSH
35098: EMPTY
35099: LIST
35100: LIST
35101: PUSH
35102: EMPTY
35103: LIST
35104: LIST
35105: LIST
35106: LIST
35107: LIST
35108: LIST
35109: LIST
35110: PUSH
35111: LD_INT 0
35113: PUSH
35114: EMPTY
35115: LIST
35116: LIST
35117: LIST
35118: PUSH
35119: EMPTY
35120: LIST
35121: ADD
35122: ST_TO_ADDR
// end ; 2 :
35123: GO 35461
35125: LD_INT 2
35127: DOUBLE
35128: EQUAL
35129: IFTRUE 35133
35131: GO 35262
35133: POP
// ai_people_running_path = ai_people_running_path ^ [ [ area_base2 , [ [ 181 , 108 ] , [ 181 , 122 ] , [ 171 , 122 ] , [ 159 , 114 ] , [ 147 , 104 ] , [ 130 , 89 ] , [ 118 , 83 ] , [ 102 , 75 ] , [ 94 , 69 ] ] , 1 ] ] ; 3 :
35134: LD_ADDR_EXP 165
35138: PUSH
35139: LD_EXP 165
35143: PUSH
35144: LD_INT 2
35146: PUSH
35147: LD_INT 181
35149: PUSH
35150: LD_INT 108
35152: PUSH
35153: EMPTY
35154: LIST
35155: LIST
35156: PUSH
35157: LD_INT 181
35159: PUSH
35160: LD_INT 122
35162: PUSH
35163: EMPTY
35164: LIST
35165: LIST
35166: PUSH
35167: LD_INT 171
35169: PUSH
35170: LD_INT 122
35172: PUSH
35173: EMPTY
35174: LIST
35175: LIST
35176: PUSH
35177: LD_INT 159
35179: PUSH
35180: LD_INT 114
35182: PUSH
35183: EMPTY
35184: LIST
35185: LIST
35186: PUSH
35187: LD_INT 147
35189: PUSH
35190: LD_INT 104
35192: PUSH
35193: EMPTY
35194: LIST
35195: LIST
35196: PUSH
35197: LD_INT 130
35199: PUSH
35200: LD_INT 89
35202: PUSH
35203: EMPTY
35204: LIST
35205: LIST
35206: PUSH
35207: LD_INT 118
35209: PUSH
35210: LD_INT 83
35212: PUSH
35213: EMPTY
35214: LIST
35215: LIST
35216: PUSH
35217: LD_INT 102
35219: PUSH
35220: LD_INT 75
35222: PUSH
35223: EMPTY
35224: LIST
35225: LIST
35226: PUSH
35227: LD_INT 94
35229: PUSH
35230: LD_INT 69
35232: PUSH
35233: EMPTY
35234: LIST
35235: LIST
35236: PUSH
35237: EMPTY
35238: LIST
35239: LIST
35240: LIST
35241: LIST
35242: LIST
35243: LIST
35244: LIST
35245: LIST
35246: LIST
35247: PUSH
35248: LD_INT 1
35250: PUSH
35251: EMPTY
35252: LIST
35253: LIST
35254: LIST
35255: PUSH
35256: EMPTY
35257: LIST
35258: ADD
35259: ST_TO_ADDR
35260: GO 35461
35262: LD_INT 3
35264: DOUBLE
35265: EQUAL
35266: IFTRUE 35270
35268: GO 35460
35270: POP
// begin if 1 in ai_bases then
35271: LD_INT 1
35273: PUSH
35274: LD_EXP 29
35278: IN
35279: IFFALSE 35365
// ai_people_running_path = ai_people_running_path ^ [ [ area_base3 , [ [ 121 , 122 ] , [ 117 , 108 ] , [ 112 , 96 ] , [ 105 , 83 ] , [ 100 , 74 ] ] , 1 ] ] else
35281: LD_ADDR_EXP 165
35285: PUSH
35286: LD_EXP 165
35290: PUSH
35291: LD_INT 3
35293: PUSH
35294: LD_INT 121
35296: PUSH
35297: LD_INT 122
35299: PUSH
35300: EMPTY
35301: LIST
35302: LIST
35303: PUSH
35304: LD_INT 117
35306: PUSH
35307: LD_INT 108
35309: PUSH
35310: EMPTY
35311: LIST
35312: LIST
35313: PUSH
35314: LD_INT 112
35316: PUSH
35317: LD_INT 96
35319: PUSH
35320: EMPTY
35321: LIST
35322: LIST
35323: PUSH
35324: LD_INT 105
35326: PUSH
35327: LD_INT 83
35329: PUSH
35330: EMPTY
35331: LIST
35332: LIST
35333: PUSH
35334: LD_INT 100
35336: PUSH
35337: LD_INT 74
35339: PUSH
35340: EMPTY
35341: LIST
35342: LIST
35343: PUSH
35344: EMPTY
35345: LIST
35346: LIST
35347: LIST
35348: LIST
35349: LIST
35350: PUSH
35351: LD_INT 1
35353: PUSH
35354: EMPTY
35355: LIST
35356: LIST
35357: LIST
35358: PUSH
35359: EMPTY
35360: LIST
35361: ADD
35362: ST_TO_ADDR
35363: GO 35458
// ai_people_running_path = ai_people_running_path ^ [ [ area_base3 , [ [ 86 , 118 ] , [ 78 , 113 ] , [ 67 , 107 ] , [ 56 , 102 ] , [ 61 , 104 ] , [ 51 , 99 ] , ] , 0 ] ] ;
35365: LD_ADDR_EXP 165
35369: PUSH
35370: LD_EXP 165
35374: PUSH
35375: LD_INT 3
35377: PUSH
35378: LD_INT 86
35380: PUSH
35381: LD_INT 118
35383: PUSH
35384: EMPTY
35385: LIST
35386: LIST
35387: PUSH
35388: LD_INT 78
35390: PUSH
35391: LD_INT 113
35393: PUSH
35394: EMPTY
35395: LIST
35396: LIST
35397: PUSH
35398: LD_INT 67
35400: PUSH
35401: LD_INT 107
35403: PUSH
35404: EMPTY
35405: LIST
35406: LIST
35407: PUSH
35408: LD_INT 56
35410: PUSH
35411: LD_INT 102
35413: PUSH
35414: EMPTY
35415: LIST
35416: LIST
35417: PUSH
35418: LD_INT 61
35420: PUSH
35421: LD_INT 104
35423: PUSH
35424: EMPTY
35425: LIST
35426: LIST
35427: PUSH
35428: LD_INT 51
35430: PUSH
35431: LD_INT 99
35433: PUSH
35434: EMPTY
35435: LIST
35436: LIST
35437: PUSH
35438: EMPTY
35439: LIST
35440: LIST
35441: LIST
35442: LIST
35443: LIST
35444: LIST
35445: PUSH
35446: LD_INT 0
35448: PUSH
35449: EMPTY
35450: LIST
35451: LIST
35452: LIST
35453: PUSH
35454: EMPTY
35455: LIST
35456: ADD
35457: ST_TO_ADDR
// end ; end ;
35458: GO 35461
35460: POP
// temp_people_running = delete ( temp_people_running , 1 ) ;
35461: LD_ADDR_EXP 166
35465: PUSH
35466: LD_EXP 166
35470: PPUSH
35471: LD_INT 1
35473: PPUSH
35474: CALL_OW 3
35478: ST_TO_ADDR
// end ; enable ;
35479: ENABLE
// end ;
35480: PPOPN 7
35482: END
// every 0 0$1 trigger ai_people_running > 0 do var i , j , group , path , area , PathEnd , temp_hex , un , temp , temp_val ;
35483: LD_EXP 164
35487: PUSH
35488: LD_INT 0
35490: GREATER
35491: IFFALSE 36492
35493: GO 35495
35495: DISABLE
35496: LD_INT 0
35498: PPUSH
35499: PPUSH
35500: PPUSH
35501: PPUSH
35502: PPUSH
35503: PPUSH
35504: PPUSH
35505: PPUSH
35506: PPUSH
35507: PPUSH
// begin for i = 1 to ai_people_running do
35508: LD_ADDR_VAR 0 1
35512: PUSH
35513: DOUBLE
35514: LD_INT 1
35516: DEC
35517: ST_TO_ADDR
35518: LD_EXP 164
35522: PUSH
35523: FOR_TO
35524: IFFALSE 36422
// begin group = unitfilter ( ai_people_running [ i ] , [ f_placed ] ) ;
35526: LD_ADDR_VAR 0 3
35530: PUSH
35531: LD_EXP 164
35535: PUSH
35536: LD_VAR 0 1
35540: ARRAY
35541: PPUSH
35542: LD_INT 52
35544: PUSH
35545: EMPTY
35546: LIST
35547: PPUSH
35548: CALL_OW 72
35552: ST_TO_ADDR
// area = ai_people_running_path [ i ] [ 1 ] ;
35553: LD_ADDR_VAR 0 5
35557: PUSH
35558: LD_EXP 165
35562: PUSH
35563: LD_VAR 0 1
35567: ARRAY
35568: PUSH
35569: LD_INT 1
35571: ARRAY
35572: ST_TO_ADDR
// path = ai_people_running_path [ i ] [ 2 ] ;
35573: LD_ADDR_VAR 0 4
35577: PUSH
35578: LD_EXP 165
35582: PUSH
35583: LD_VAR 0 1
35587: ARRAY
35588: PUSH
35589: LD_INT 2
35591: ARRAY
35592: ST_TO_ADDR
// PathEnd = ai_people_running_path [ i ] [ 3 ] ;
35593: LD_ADDR_VAR 0 6
35597: PUSH
35598: LD_EXP 165
35602: PUSH
35603: LD_VAR 0 1
35607: ARRAY
35608: PUSH
35609: LD_INT 3
35611: ARRAY
35612: ST_TO_ADDR
// for un in group do
35613: LD_ADDR_VAR 0 8
35617: PUSH
35618: LD_VAR 0 3
35622: PUSH
35623: FOR_IN
35624: IFFALSE 36366
// if islive ( un ) = 0 then
35626: LD_VAR 0 8
35630: PPUSH
35631: CALL_OW 300
35635: PUSH
35636: LD_INT 0
35638: EQUAL
35639: IFFALSE 35659
// group = group diff un else
35641: LD_ADDR_VAR 0 3
35645: PUSH
35646: LD_VAR 0 3
35650: PUSH
35651: LD_VAR 0 8
35655: DIFF
35656: ST_TO_ADDR
35657: GO 36364
// begin if GetTag ( un ) = path then
35659: LD_VAR 0 8
35663: PPUSH
35664: CALL_OW 110
35668: PUSH
35669: LD_VAR 0 4
35673: EQUAL
35674: IFFALSE 35686
// temp_val = 2 else
35676: LD_ADDR_VAR 0 10
35680: PUSH
35681: LD_INT 2
35683: ST_TO_ADDR
35684: GO 35694
// temp_val = 5 ;
35686: LD_ADDR_VAR 0 10
35690: PUSH
35691: LD_INT 5
35693: ST_TO_ADDR
// for j = 1 to path do
35694: LD_ADDR_VAR 0 2
35698: PUSH
35699: DOUBLE
35700: LD_INT 1
35702: DEC
35703: ST_TO_ADDR
35704: LD_VAR 0 4
35708: PUSH
35709: FOR_TO
35710: IFFALSE 35908
// if j = GetTag ( un ) then
35712: LD_VAR 0 2
35716: PUSH
35717: LD_VAR 0 8
35721: PPUSH
35722: CALL_OW 110
35726: EQUAL
35727: IFFALSE 35906
// if Getdistunitxy ( un , path [ j ] [ 1 ] , path [ j ] [ 2 ] ) > temp_val then
35729: LD_VAR 0 8
35733: PPUSH
35734: LD_VAR 0 4
35738: PUSH
35739: LD_VAR 0 2
35743: ARRAY
35744: PUSH
35745: LD_INT 1
35747: ARRAY
35748: PPUSH
35749: LD_VAR 0 4
35753: PUSH
35754: LD_VAR 0 2
35758: ARRAY
35759: PUSH
35760: LD_INT 2
35762: ARRAY
35763: PPUSH
35764: CALL_OW 297
35768: PUSH
35769: LD_VAR 0 10
35773: GREATER
35774: IFFALSE 35888
// begin if getclass ( un ) = class_soldier or getclass ( un ) = class_bazooker then
35776: LD_VAR 0 8
35780: PPUSH
35781: CALL_OW 257
35785: PUSH
35786: LD_INT 1
35788: EQUAL
35789: PUSH
35790: LD_VAR 0 8
35794: PPUSH
35795: CALL_OW 257
35799: PUSH
35800: LD_INT 9
35802: EQUAL
35803: OR
35804: IFFALSE 35847
// comagressivemove ( un , path [ j ] [ 1 ] , path [ j ] [ 2 ] ) else
35806: LD_VAR 0 8
35810: PPUSH
35811: LD_VAR 0 4
35815: PUSH
35816: LD_VAR 0 2
35820: ARRAY
35821: PUSH
35822: LD_INT 1
35824: ARRAY
35825: PPUSH
35826: LD_VAR 0 4
35830: PUSH
35831: LD_VAR 0 2
35835: ARRAY
35836: PUSH
35837: LD_INT 2
35839: ARRAY
35840: PPUSH
35841: CALL_OW 114
35845: GO 35886
// commovexy ( un , path [ j ] [ 1 ] , path [ j ] [ 2 ] ) ;
35847: LD_VAR 0 8
35851: PPUSH
35852: LD_VAR 0 4
35856: PUSH
35857: LD_VAR 0 2
35861: ARRAY
35862: PUSH
35863: LD_INT 1
35865: ARRAY
35866: PPUSH
35867: LD_VAR 0 4
35871: PUSH
35872: LD_VAR 0 2
35876: ARRAY
35877: PUSH
35878: LD_INT 2
35880: ARRAY
35881: PPUSH
35882: CALL_OW 111
// end else
35886: GO 35906
// SetTag ( un , j + 1 ) ;
35888: LD_VAR 0 8
35892: PPUSH
35893: LD_VAR 0 2
35897: PUSH
35898: LD_INT 1
35900: PLUS
35901: PPUSH
35902: CALL_OW 109
35906: GO 35709
35908: POP
35909: POP
// if GetTag ( un ) > path then
35910: LD_VAR 0 8
35914: PPUSH
35915: CALL_OW 110
35919: PUSH
35920: LD_VAR 0 4
35924: GREATER
35925: IFFALSE 36364
// if PathEnd = 0 then
35927: LD_VAR 0 6
35931: PUSH
35932: LD_INT 0
35934: EQUAL
35935: IFFALSE 35948
// RemoveUnit ( un ) else
35937: LD_VAR 0 8
35941: PPUSH
35942: CALL_OW 64
35946: GO 36364
// begin if not PathEnd in ai_bases then
35948: LD_VAR 0 6
35952: PUSH
35953: LD_EXP 29
35957: IN
35958: NOT
35959: IFFALSE 36028
// begin temp_people_running = temp_people_running ^ [ [ group , PathEnd ] ] ;
35961: LD_ADDR_EXP 166
35965: PUSH
35966: LD_EXP 166
35970: PUSH
35971: LD_VAR 0 3
35975: PUSH
35976: LD_VAR 0 6
35980: PUSH
35981: EMPTY
35982: LIST
35983: LIST
35984: PUSH
35985: EMPTY
35986: LIST
35987: ADD
35988: ST_TO_ADDR
// ai_people_running = replace ( ai_people_running , i , ai_people_running [ i ] diff group ) ;
35989: LD_ADDR_EXP 164
35993: PUSH
35994: LD_EXP 164
35998: PPUSH
35999: LD_VAR 0 1
36003: PPUSH
36004: LD_EXP 164
36008: PUSH
36009: LD_VAR 0 1
36013: ARRAY
36014: PUSH
36015: LD_VAR 0 3
36019: DIFF
36020: PPUSH
36021: CALL_OW 1
36025: ST_TO_ADDR
// end else
36026: GO 36364
// begin case GetClass ( un ) of class_soldier :
36028: LD_VAR 0 8
36032: PPUSH
36033: CALL_OW 257
36037: PUSH
36038: LD_INT 1
36040: DOUBLE
36041: EQUAL
36042: IFTRUE 36046
36044: GO 36086
36046: POP
// ai_soldiers = replace ( ai_soldiers , PathEnd , ai_soldiers [ PathEnd ] ^ un ) ; class_bazooker :
36047: LD_ADDR_EXP 30
36051: PUSH
36052: LD_EXP 30
36056: PPUSH
36057: LD_VAR 0 6
36061: PPUSH
36062: LD_EXP 30
36066: PUSH
36067: LD_VAR 0 6
36071: ARRAY
36072: PUSH
36073: LD_VAR 0 8
36077: ADD
36078: PPUSH
36079: CALL_OW 1
36083: ST_TO_ADDR
36084: GO 36327
36086: LD_INT 9
36088: DOUBLE
36089: EQUAL
36090: IFTRUE 36094
36092: GO 36134
36094: POP
// ai_soldiers = replace ( ai_soldiers , PathEnd , ai_soldiers [ PathEnd ] ^ un ) ; class_engineer :
36095: LD_ADDR_EXP 30
36099: PUSH
36100: LD_EXP 30
36104: PPUSH
36105: LD_VAR 0 6
36109: PPUSH
36110: LD_EXP 30
36114: PUSH
36115: LD_VAR 0 6
36119: ARRAY
36120: PUSH
36121: LD_VAR 0 8
36125: ADD
36126: PPUSH
36127: CALL_OW 1
36131: ST_TO_ADDR
36132: GO 36327
36134: LD_INT 2
36136: DOUBLE
36137: EQUAL
36138: IFTRUE 36142
36140: GO 36182
36142: POP
// ai_engineers = replace ( ai_engineers , PathEnd , ai_engineers [ PathEnd ] ^ un ) ; class_mechanic :
36143: LD_ADDR_EXP 32
36147: PUSH
36148: LD_EXP 32
36152: PPUSH
36153: LD_VAR 0 6
36157: PPUSH
36158: LD_EXP 32
36162: PUSH
36163: LD_VAR 0 6
36167: ARRAY
36168: PUSH
36169: LD_VAR 0 8
36173: ADD
36174: PPUSH
36175: CALL_OW 1
36179: ST_TO_ADDR
36180: GO 36327
36182: LD_INT 3
36184: DOUBLE
36185: EQUAL
36186: IFTRUE 36190
36188: GO 36230
36190: POP
// ai_mechanics_defend = replace ( ai_mechanics_defend , PathEnd , ai_mechanics_defend [ PathEnd ] ^ un ) ; class_scientistic :
36191: LD_ADDR_EXP 33
36195: PUSH
36196: LD_EXP 33
36200: PPUSH
36201: LD_VAR 0 6
36205: PPUSH
36206: LD_EXP 33
36210: PUSH
36211: LD_VAR 0 6
36215: ARRAY
36216: PUSH
36217: LD_VAR 0 8
36221: ADD
36222: PPUSH
36223: CALL_OW 1
36227: ST_TO_ADDR
36228: GO 36327
36230: LD_INT 4
36232: DOUBLE
36233: EQUAL
36234: IFTRUE 36238
36236: GO 36278
36238: POP
// ai_scientists = replace ( ai_scientists , PathEnd , ai_scientists [ PathEnd ] ^ un ) ; class_apeman_engineer :
36239: LD_ADDR_EXP 35
36243: PUSH
36244: LD_EXP 35
36248: PPUSH
36249: LD_VAR 0 6
36253: PPUSH
36254: LD_EXP 35
36258: PUSH
36259: LD_VAR 0 6
36263: ARRAY
36264: PUSH
36265: LD_VAR 0 8
36269: ADD
36270: PPUSH
36271: CALL_OW 1
36275: ST_TO_ADDR
36276: GO 36327
36278: LD_INT 16
36280: DOUBLE
36281: EQUAL
36282: IFTRUE 36286
36284: GO 36326
36286: POP
// ai_apemen_engineers = replace ( ai_apemen_engineers , PathEnd , ai_apemen_engineers [ PathEnd ] ^ un ) ; end ;
36287: LD_ADDR_EXP 37
36291: PUSH
36292: LD_EXP 37
36296: PPUSH
36297: LD_VAR 0 6
36301: PPUSH
36302: LD_EXP 37
36306: PUSH
36307: LD_VAR 0 6
36311: ARRAY
36312: PUSH
36313: LD_VAR 0 8
36317: ADD
36318: PPUSH
36319: CALL_OW 1
36323: ST_TO_ADDR
36324: GO 36327
36326: POP
// ai_people_running = replace ( ai_people_running , i , ai_people_running [ i ] diff un ) ;
36327: LD_ADDR_EXP 164
36331: PUSH
36332: LD_EXP 164
36336: PPUSH
36337: LD_VAR 0 1
36341: PPUSH
36342: LD_EXP 164
36346: PUSH
36347: LD_VAR 0 1
36351: ARRAY
36352: PUSH
36353: LD_VAR 0 8
36357: DIFF
36358: PPUSH
36359: CALL_OW 1
36363: ST_TO_ADDR
// end ; end ; end ;
36364: GO 35623
36366: POP
36367: POP
// if group = 0 then
36368: LD_VAR 0 3
36372: PUSH
36373: LD_INT 0
36375: EQUAL
36376: IFFALSE 36420
// begin ai_people_running = delete ( ai_people_running , i ) ;
36378: LD_ADDR_EXP 164
36382: PUSH
36383: LD_EXP 164
36387: PPUSH
36388: LD_VAR 0 1
36392: PPUSH
36393: CALL_OW 3
36397: ST_TO_ADDR
// ai_people_running_path = delete ( ai_people_running_path , i ) ;
36398: LD_ADDR_EXP 165
36402: PUSH
36403: LD_EXP 165
36407: PPUSH
36408: LD_VAR 0 1
36412: PPUSH
36413: CALL_OW 3
36417: ST_TO_ADDR
// break ;
36418: GO 36422
// end ; end ;
36420: GO 35523
36422: POP
36423: POP
// temp = 0 ;
36424: LD_ADDR_VAR 0 9
36428: PUSH
36429: LD_INT 0
36431: ST_TO_ADDR
// for i in ai_people_running do
36432: LD_ADDR_VAR 0 1
36436: PUSH
36437: LD_EXP 164
36441: PUSH
36442: FOR_IN
36443: IFFALSE 36465
// if i > 0 then
36445: LD_VAR 0 1
36449: PUSH
36450: LD_INT 0
36452: GREATER
36453: IFFALSE 36463
// temp = 1 ;
36455: LD_ADDR_VAR 0 9
36459: PUSH
36460: LD_INT 1
36462: ST_TO_ADDR
36463: GO 36442
36465: POP
36466: POP
// if temp = 0 then
36467: LD_VAR 0 9
36471: PUSH
36472: LD_INT 0
36474: EQUAL
36475: IFFALSE 36491
// begin ai_people_running = [ ] ;
36477: LD_ADDR_EXP 164
36481: PUSH
36482: EMPTY
36483: ST_TO_ADDR
// ai_people_running_path = [ ] ;
36484: LD_ADDR_EXP 165
36488: PUSH
36489: EMPTY
36490: ST_TO_ADDR
// end ; enable ;
36491: ENABLE
// end ;
36492: PPOPN 10
36494: END
// every 0 0$1 trigger base9_people > 0 or base10_people > 0 do var turrets , depot , lab , plant , i ;
36495: LD_EXP 168
36499: PUSH
36500: LD_INT 0
36502: GREATER
36503: PUSH
36504: LD_EXP 170
36508: PUSH
36509: LD_INT 0
36511: GREATER
36512: OR
36513: IFFALSE 37879
36515: GO 36517
36517: DISABLE
36518: LD_INT 0
36520: PPUSH
36521: PPUSH
36522: PPUSH
36523: PPUSH
36524: PPUSH
// begin for i in base9_people do
36525: LD_ADDR_VAR 0 5
36529: PUSH
36530: LD_EXP 168
36534: PUSH
36535: FOR_IN
36536: IFFALSE 36567
// if isdead ( i ) then
36538: LD_VAR 0 5
36542: PPUSH
36543: CALL_OW 301
36547: IFFALSE 36565
// base9_people = base9_people diff i ;
36549: LD_ADDR_EXP 168
36553: PUSH
36554: LD_EXP 168
36558: PUSH
36559: LD_VAR 0 5
36563: DIFF
36564: ST_TO_ADDR
36565: GO 36535
36567: POP
36568: POP
// for i in base10_people do
36569: LD_ADDR_VAR 0 5
36573: PUSH
36574: LD_EXP 170
36578: PUSH
36579: FOR_IN
36580: IFFALSE 36611
// if isdead ( i ) then
36582: LD_VAR 0 5
36586: PPUSH
36587: CALL_OW 301
36591: IFFALSE 36609
// base10_people = base10_people diff i ;
36593: LD_ADDR_EXP 170
36597: PUSH
36598: LD_EXP 170
36602: PUSH
36603: LD_VAR 0 5
36607: DIFF
36608: ST_TO_ADDR
36609: GO 36579
36611: POP
36612: POP
// if base9_people > 0 then
36613: LD_EXP 168
36617: PUSH
36618: LD_INT 0
36620: GREATER
36621: IFFALSE 37209
// begin turrets = base9_buildings [ 4 ] ^ base9_buildings [ 5 ] ^ base9_buildings [ 6 ] ;
36623: LD_ADDR_VAR 0 1
36627: PUSH
36628: LD_EXP 169
36632: PUSH
36633: LD_INT 4
36635: ARRAY
36636: PUSH
36637: LD_EXP 169
36641: PUSH
36642: LD_INT 5
36644: ARRAY
36645: ADD
36646: PUSH
36647: LD_EXP 169
36651: PUSH
36652: LD_INT 6
36654: ARRAY
36655: ADD
36656: ST_TO_ADDR
// depot = base9_buildings [ 2 ] ;
36657: LD_ADDR_VAR 0 2
36661: PUSH
36662: LD_EXP 169
36666: PUSH
36667: LD_INT 2
36669: ARRAY
36670: ST_TO_ADDR
// lab = base9_buildings [ 1 ] ;
36671: LD_ADDR_VAR 0 3
36675: PUSH
36676: LD_EXP 169
36680: PUSH
36681: LD_INT 1
36683: ARRAY
36684: ST_TO_ADDR
// plant = base9_buildings [ 3 ] ;
36685: LD_ADDR_VAR 0 4
36689: PUSH
36690: LD_EXP 169
36694: PUSH
36695: LD_INT 3
36697: ARRAY
36698: ST_TO_ADDR
// if unitfilter ( turrets , [ f_ok ] ) < 2 or not isok ( lab ) or not isok ( depot ) or not isok ( plant ) then
36699: LD_VAR 0 1
36703: PPUSH
36704: LD_INT 50
36706: PUSH
36707: EMPTY
36708: LIST
36709: PPUSH
36710: CALL_OW 72
36714: PUSH
36715: LD_INT 2
36717: LESS
36718: PUSH
36719: LD_VAR 0 3
36723: PPUSH
36724: CALL_OW 302
36728: NOT
36729: OR
36730: PUSH
36731: LD_VAR 0 2
36735: PPUSH
36736: CALL_OW 302
36740: NOT
36741: OR
36742: PUSH
36743: LD_VAR 0 4
36747: PPUSH
36748: CALL_OW 302
36752: NOT
36753: OR
36754: IFFALSE 36810
// begin for i in base9_people do
36756: LD_ADDR_VAR 0 5
36760: PUSH
36761: LD_EXP 168
36765: PUSH
36766: FOR_IN
36767: IFFALSE 36806
// if not isinarea ( i , area_base2 ) then
36769: LD_VAR 0 5
36773: PPUSH
36774: LD_INT 2
36776: PPUSH
36777: CALL_OW 308
36781: NOT
36782: IFFALSE 36804
// commoveunit ( i , hexinfo ( 228 , 164 ) ) ;
36784: LD_VAR 0 5
36788: PPUSH
36789: LD_INT 228
36791: PPUSH
36792: LD_INT 164
36794: PPUSH
36795: CALL_OW 428
36799: PPUSH
36800: CALL_OW 112
36804: GO 36766
36806: POP
36807: POP
// end else
36808: GO 37040
// begin if unitfilter ( base9_buildings , [ f_not , [ f_lives , 1000 ] ] ) > 0 then
36810: LD_EXP 169
36814: PPUSH
36815: LD_INT 3
36817: PUSH
36818: LD_INT 24
36820: PUSH
36821: LD_INT 1000
36823: PUSH
36824: EMPTY
36825: LIST
36826: LIST
36827: PUSH
36828: EMPTY
36829: LIST
36830: LIST
36831: PPUSH
36832: CALL_OW 72
36836: PUSH
36837: LD_INT 0
36839: GREATER
36840: IFFALSE 36982
// begin for i in turrets ^ depot ^ lab ^ plant do
36842: LD_ADDR_VAR 0 5
36846: PUSH
36847: LD_VAR 0 1
36851: PUSH
36852: LD_VAR 0 2
36856: ADD
36857: PUSH
36858: LD_VAR 0 3
36862: ADD
36863: PUSH
36864: LD_VAR 0 4
36868: ADD
36869: PUSH
36870: FOR_IN
36871: IFFALSE 36978
// if GetLives ( i ) < 1000 then
36873: LD_VAR 0 5
36877: PPUSH
36878: CALL_OW 256
36882: PUSH
36883: LD_INT 1000
36885: LESS
36886: IFFALSE 36976
// begin if unitfilter ( base9_people , [ [ f_class , class_apeman_engineer ] , [ f_inside ] ] ) then
36888: LD_EXP 168
36892: PPUSH
36893: LD_INT 25
36895: PUSH
36896: LD_INT 16
36898: PUSH
36899: EMPTY
36900: LIST
36901: LIST
36902: PUSH
36903: LD_INT 54
36905: PUSH
36906: EMPTY
36907: LIST
36908: PUSH
36909: EMPTY
36910: LIST
36911: LIST
36912: PPUSH
36913: CALL_OW 72
36917: IFFALSE 36945
// comexitbuilding ( unitfilter ( base9_people , [ f_class , class_apeman_engineer ] ) ) else
36919: LD_EXP 168
36923: PPUSH
36924: LD_INT 25
36926: PUSH
36927: LD_INT 16
36929: PUSH
36930: EMPTY
36931: LIST
36932: LIST
36933: PPUSH
36934: CALL_OW 72
36938: PPUSH
36939: CALL_OW 122
36943: GO 36974
// comrepairbuilding ( unitfilter ( base9_people , [ f_class , class_apeman_engineer ] ) , i ) ;
36945: LD_EXP 168
36949: PPUSH
36950: LD_INT 25
36952: PUSH
36953: LD_INT 16
36955: PUSH
36956: EMPTY
36957: LIST
36958: LIST
36959: PPUSH
36960: CALL_OW 72
36964: PPUSH
36965: LD_VAR 0 5
36969: PPUSH
36970: CALL_OW 130
// break ;
36974: GO 36978
// end ;
36976: GO 36870
36978: POP
36979: POP
// end else
36980: GO 37011
// comenterunit ( unitfilter ( base9_people , [ f_class , class_apeman_engineer ] ) , depot ) ;
36982: LD_EXP 168
36986: PPUSH
36987: LD_INT 25
36989: PUSH
36990: LD_INT 16
36992: PUSH
36993: EMPTY
36994: LIST
36995: LIST
36996: PPUSH
36997: CALL_OW 72
37001: PPUSH
37002: LD_VAR 0 2
37006: PPUSH
37007: CALL_OW 120
// comenterunit ( unitfilter ( base9_people , [ f_class , class_scientistic ] ) , lab ) ;
37011: LD_EXP 168
37015: PPUSH
37016: LD_INT 25
37018: PUSH
37019: LD_INT 4
37021: PUSH
37022: EMPTY
37023: LIST
37024: LIST
37025: PPUSH
37026: CALL_OW 72
37030: PPUSH
37031: LD_VAR 0 3
37035: PPUSH
37036: CALL_OW 120
// end ; if unitfilter ( base9_people , [ f_inarea , area_base2 ] ) = base9_people then
37040: LD_EXP 168
37044: PPUSH
37045: LD_INT 95
37047: PUSH
37048: LD_INT 2
37050: PUSH
37051: EMPTY
37052: LIST
37053: LIST
37054: PPUSH
37055: CALL_OW 72
37059: PUSH
37060: LD_EXP 168
37064: EQUAL
37065: IFFALSE 37209
// begin if not 2 in ai_bases then
37067: LD_INT 2
37069: PUSH
37070: LD_EXP 29
37074: IN
37075: NOT
37076: IFFALSE 37106
// temp_people_running = temp_people_running ^ [ [ base9_people , 2 ] ] else
37078: LD_ADDR_EXP 166
37082: PUSH
37083: LD_EXP 166
37087: PUSH
37088: LD_EXP 168
37092: PUSH
37093: LD_INT 2
37095: PUSH
37096: EMPTY
37097: LIST
37098: LIST
37099: PUSH
37100: EMPTY
37101: LIST
37102: ADD
37103: ST_TO_ADDR
37104: GO 37202
// begin ai_scientists = replace ( ai_scientists , 2 , ai_scientists [ 2 ] ^ unitfilter ( base9_people , [ f_class , class_scientistic ] ) ) ;
37106: LD_ADDR_EXP 35
37110: PUSH
37111: LD_EXP 35
37115: PPUSH
37116: LD_INT 2
37118: PPUSH
37119: LD_EXP 35
37123: PUSH
37124: LD_INT 2
37126: ARRAY
37127: PUSH
37128: LD_EXP 168
37132: PPUSH
37133: LD_INT 25
37135: PUSH
37136: LD_INT 4
37138: PUSH
37139: EMPTY
37140: LIST
37141: LIST
37142: PPUSH
37143: CALL_OW 72
37147: ADD
37148: PPUSH
37149: CALL_OW 1
37153: ST_TO_ADDR
// ai_apemen_engineers = replace ( ai_apemen_engineers , 2 , ai_apemen_engineers [ 2 ] ^ unitfilter ( base9_people , [ f_class , class_apeman_engineer ] ) ) ;
37154: LD_ADDR_EXP 37
37158: PUSH
37159: LD_EXP 37
37163: PPUSH
37164: LD_INT 2
37166: PPUSH
37167: LD_EXP 37
37171: PUSH
37172: LD_INT 2
37174: ARRAY
37175: PUSH
37176: LD_EXP 168
37180: PPUSH
37181: LD_INT 25
37183: PUSH
37184: LD_INT 16
37186: PUSH
37187: EMPTY
37188: LIST
37189: LIST
37190: PPUSH
37191: CALL_OW 72
37195: ADD
37196: PPUSH
37197: CALL_OW 1
37201: ST_TO_ADDR
// end ; base9_people = [ ] ;
37202: LD_ADDR_EXP 168
37206: PUSH
37207: EMPTY
37208: ST_TO_ADDR
// end ; end ; if base10_people > 0 then
37209: LD_EXP 170
37213: PUSH
37214: LD_INT 0
37216: GREATER
37217: IFFALSE 37878
// begin turrets = base10_buildings [ 4 ] ^ base10_buildings [ 5 ] ;
37219: LD_ADDR_VAR 0 1
37223: PUSH
37224: LD_EXP 171
37228: PUSH
37229: LD_INT 4
37231: ARRAY
37232: PUSH
37233: LD_EXP 171
37237: PUSH
37238: LD_INT 5
37240: ARRAY
37241: ADD
37242: ST_TO_ADDR
// depot = base10_buildings [ 2 ] ;
37243: LD_ADDR_VAR 0 2
37247: PUSH
37248: LD_EXP 171
37252: PUSH
37253: LD_INT 2
37255: ARRAY
37256: ST_TO_ADDR
// lab = base10_buildings [ 1 ] ;
37257: LD_ADDR_VAR 0 3
37261: PUSH
37262: LD_EXP 171
37266: PUSH
37267: LD_INT 1
37269: ARRAY
37270: ST_TO_ADDR
// plant = base10_buildings [ 3 ] ;
37271: LD_ADDR_VAR 0 4
37275: PUSH
37276: LD_EXP 171
37280: PUSH
37281: LD_INT 3
37283: ARRAY
37284: ST_TO_ADDR
// if unitfilter ( turrets , [ f_ok ] ) < 1 or not isok ( lab ) or not isok ( depot ) or not isok ( plant ) then
37285: LD_VAR 0 1
37289: PPUSH
37290: LD_INT 50
37292: PUSH
37293: EMPTY
37294: LIST
37295: PPUSH
37296: CALL_OW 72
37300: PUSH
37301: LD_INT 1
37303: LESS
37304: PUSH
37305: LD_VAR 0 3
37309: PPUSH
37310: CALL_OW 302
37314: NOT
37315: OR
37316: PUSH
37317: LD_VAR 0 2
37321: PPUSH
37322: CALL_OW 302
37326: NOT
37327: OR
37328: PUSH
37329: LD_VAR 0 4
37333: PPUSH
37334: CALL_OW 302
37338: NOT
37339: OR
37340: IFFALSE 37396
// begin for i in base10_people do
37342: LD_ADDR_VAR 0 5
37346: PUSH
37347: LD_EXP 170
37351: PUSH
37352: FOR_IN
37353: IFFALSE 37392
// if not isinarea ( i , area_base1 ) then
37355: LD_VAR 0 5
37359: PPUSH
37360: LD_INT 1
37362: PPUSH
37363: CALL_OW 308
37367: NOT
37368: IFFALSE 37390
// commoveunit ( i , hexinfo ( 74 , 141 ) ) ;
37370: LD_VAR 0 5
37374: PPUSH
37375: LD_INT 74
37377: PPUSH
37378: LD_INT 141
37380: PPUSH
37381: CALL_OW 428
37385: PPUSH
37386: CALL_OW 112
37390: GO 37352
37392: POP
37393: POP
// end else
37394: GO 37661
// begin if unitfilter ( base10_buildings , [ f_not , [ f_lives , 1000 ] ] ) > 0 then
37396: LD_EXP 171
37400: PPUSH
37401: LD_INT 3
37403: PUSH
37404: LD_INT 24
37406: PUSH
37407: LD_INT 1000
37409: PUSH
37410: EMPTY
37411: LIST
37412: LIST
37413: PUSH
37414: EMPTY
37415: LIST
37416: LIST
37417: PPUSH
37418: CALL_OW 72
37422: PUSH
37423: LD_INT 0
37425: GREATER
37426: IFFALSE 37568
// begin for i in turrets ^ depot ^ lab ^ plant do
37428: LD_ADDR_VAR 0 5
37432: PUSH
37433: LD_VAR 0 1
37437: PUSH
37438: LD_VAR 0 2
37442: ADD
37443: PUSH
37444: LD_VAR 0 3
37448: ADD
37449: PUSH
37450: LD_VAR 0 4
37454: ADD
37455: PUSH
37456: FOR_IN
37457: IFFALSE 37564
// if GetLives ( i ) < 1000 then
37459: LD_VAR 0 5
37463: PPUSH
37464: CALL_OW 256
37468: PUSH
37469: LD_INT 1000
37471: LESS
37472: IFFALSE 37562
// begin if unitfilter ( base10_people , [ [ f_class , class_apeman_engineer ] , [ f_inside ] ] ) then
37474: LD_EXP 170
37478: PPUSH
37479: LD_INT 25
37481: PUSH
37482: LD_INT 16
37484: PUSH
37485: EMPTY
37486: LIST
37487: LIST
37488: PUSH
37489: LD_INT 54
37491: PUSH
37492: EMPTY
37493: LIST
37494: PUSH
37495: EMPTY
37496: LIST
37497: LIST
37498: PPUSH
37499: CALL_OW 72
37503: IFFALSE 37531
// comexitbuilding ( unitfilter ( base10_people , [ f_class , class_apeman_engineer ] ) ) else
37505: LD_EXP 170
37509: PPUSH
37510: LD_INT 25
37512: PUSH
37513: LD_INT 16
37515: PUSH
37516: EMPTY
37517: LIST
37518: LIST
37519: PPUSH
37520: CALL_OW 72
37524: PPUSH
37525: CALL_OW 122
37529: GO 37560
// comrepairbuilding ( unitfilter ( base10_people , [ f_class , class_apeman_engineer ] ) , i ) ;
37531: LD_EXP 170
37535: PPUSH
37536: LD_INT 25
37538: PUSH
37539: LD_INT 16
37541: PUSH
37542: EMPTY
37543: LIST
37544: LIST
37545: PPUSH
37546: CALL_OW 72
37550: PPUSH
37551: LD_VAR 0 5
37555: PPUSH
37556: CALL_OW 130
// break ;
37560: GO 37564
// end ;
37562: GO 37456
37564: POP
37565: POP
// end else
37566: GO 37597
// comenterunit ( unitfilter ( base10_people , [ f_class , class_apeman_engineer ] ) , depot ) ;
37568: LD_EXP 170
37572: PPUSH
37573: LD_INT 25
37575: PUSH
37576: LD_INT 16
37578: PUSH
37579: EMPTY
37580: LIST
37581: LIST
37582: PPUSH
37583: CALL_OW 72
37587: PPUSH
37588: LD_VAR 0 2
37592: PPUSH
37593: CALL_OW 120
// comenterunit ( unitfilter ( base10_people , [ f_class , class_scientistic ] ) , lab ) ;
37597: LD_EXP 170
37601: PPUSH
37602: LD_INT 25
37604: PUSH
37605: LD_INT 4
37607: PUSH
37608: EMPTY
37609: LIST
37610: LIST
37611: PPUSH
37612: CALL_OW 72
37616: PPUSH
37617: LD_VAR 0 3
37621: PPUSH
37622: CALL_OW 120
// comenterunit ( unitfilter ( base10_people , [ f_class , class_bazooker ] ) , HexInfo ( 75 , 134 ) ) ;
37626: LD_EXP 170
37630: PPUSH
37631: LD_INT 25
37633: PUSH
37634: LD_INT 9
37636: PUSH
37637: EMPTY
37638: LIST
37639: LIST
37640: PPUSH
37641: CALL_OW 72
37645: PPUSH
37646: LD_INT 75
37648: PPUSH
37649: LD_INT 134
37651: PPUSH
37652: CALL_OW 428
37656: PPUSH
37657: CALL_OW 120
// end ; if unitfilter ( base10_people , [ f_inarea , area_base1 ] ) = base10_people then
37661: LD_EXP 170
37665: PPUSH
37666: LD_INT 95
37668: PUSH
37669: LD_INT 1
37671: PUSH
37672: EMPTY
37673: LIST
37674: LIST
37675: PPUSH
37676: CALL_OW 72
37680: PUSH
37681: LD_EXP 170
37685: EQUAL
37686: IFFALSE 37878
// begin if not 1 in ai_bases then
37688: LD_INT 1
37690: PUSH
37691: LD_EXP 29
37695: IN
37696: NOT
37697: IFFALSE 37727
// temp_people_running = temp_people_running ^ [ [ base10_people , 1 ] ] else
37699: LD_ADDR_EXP 166
37703: PUSH
37704: LD_EXP 166
37708: PUSH
37709: LD_EXP 170
37713: PUSH
37714: LD_INT 1
37716: PUSH
37717: EMPTY
37718: LIST
37719: LIST
37720: PUSH
37721: EMPTY
37722: LIST
37723: ADD
37724: ST_TO_ADDR
37725: GO 37871
// begin ai_scientists = replace ( ai_scientists , 1 , ai_scientists [ 1 ] ^ unitfilter ( base10_people , [ f_class , class_scientistic ] ) ) ;
37727: LD_ADDR_EXP 35
37731: PUSH
37732: LD_EXP 35
37736: PPUSH
37737: LD_INT 1
37739: PPUSH
37740: LD_EXP 35
37744: PUSH
37745: LD_INT 1
37747: ARRAY
37748: PUSH
37749: LD_EXP 170
37753: PPUSH
37754: LD_INT 25
37756: PUSH
37757: LD_INT 4
37759: PUSH
37760: EMPTY
37761: LIST
37762: LIST
37763: PPUSH
37764: CALL_OW 72
37768: ADD
37769: PPUSH
37770: CALL_OW 1
37774: ST_TO_ADDR
// ai_soldiers = replace ( ai_soldiers , 1 , ai_soldiers [ 1 ] ^ unitfilter ( base10_people , [ f_class , class_bazooker ] ) ) ;
37775: LD_ADDR_EXP 30
37779: PUSH
37780: LD_EXP 30
37784: PPUSH
37785: LD_INT 1
37787: PPUSH
37788: LD_EXP 30
37792: PUSH
37793: LD_INT 1
37795: ARRAY
37796: PUSH
37797: LD_EXP 170
37801: PPUSH
37802: LD_INT 25
37804: PUSH
37805: LD_INT 9
37807: PUSH
37808: EMPTY
37809: LIST
37810: LIST
37811: PPUSH
37812: CALL_OW 72
37816: ADD
37817: PPUSH
37818: CALL_OW 1
37822: ST_TO_ADDR
// ai_apemen_engineers = replace ( ai_apemen_engineers , 1 , ai_apemen_engineers [ 1 ] ^ unitfilter ( base10_people , [ f_class , class_apeman_engineer ] ) ) ;
37823: LD_ADDR_EXP 37
37827: PUSH
37828: LD_EXP 37
37832: PPUSH
37833: LD_INT 1
37835: PPUSH
37836: LD_EXP 37
37840: PUSH
37841: LD_INT 1
37843: ARRAY
37844: PUSH
37845: LD_EXP 170
37849: PPUSH
37850: LD_INT 25
37852: PUSH
37853: LD_INT 16
37855: PUSH
37856: EMPTY
37857: LIST
37858: LIST
37859: PPUSH
37860: CALL_OW 72
37864: ADD
37865: PPUSH
37866: CALL_OW 1
37870: ST_TO_ADDR
// end ; base10_people = [ ] ;
37871: LD_ADDR_EXP 170
37875: PUSH
37876: EMPTY
37877: ST_TO_ADDR
// end ; end ; enable ;
37878: ENABLE
// end ;
37879: PPOPN 5
37881: END
// every 0 0$1 trigger ai_bases < 8 do var i , base_list , area , marking , main_amount , sec_amount ;
37882: LD_EXP 29
37886: PUSH
37887: LD_INT 8
37889: LESS
37890: IFFALSE 38321
37892: GO 37894
37894: DISABLE
37895: LD_INT 0
37897: PPUSH
37898: PPUSH
37899: PPUSH
37900: PPUSH
37901: PPUSH
37902: PPUSH
// begin base_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
37903: LD_ADDR_VAR 0 2
37907: PUSH
37908: LD_INT 1
37910: PUSH
37911: LD_INT 2
37913: PUSH
37914: LD_INT 3
37916: PUSH
37917: LD_INT 4
37919: PUSH
37920: LD_INT 5
37922: PUSH
37923: LD_INT 6
37925: PUSH
37926: LD_INT 7
37928: PUSH
37929: LD_INT 8
37931: PUSH
37932: LD_INT 9
37934: PUSH
37935: LD_INT 10
37937: PUSH
37938: EMPTY
37939: LIST
37940: LIST
37941: LIST
37942: LIST
37943: LIST
37944: LIST
37945: LIST
37946: LIST
37947: LIST
37948: LIST
37949: ST_TO_ADDR
// area = [ area_base1 , area_base2 , area_base3 , area_base4 , area_base5 , area_base6 , area_base7 , area_base8 , area_base9 , area_base10 ] ;
37950: LD_ADDR_VAR 0 3
37954: PUSH
37955: LD_INT 1
37957: PUSH
37958: LD_INT 2
37960: PUSH
37961: LD_INT 3
37963: PUSH
37964: LD_INT 7
37966: PUSH
37967: LD_INT 8
37969: PUSH
37970: LD_INT 9
37972: PUSH
37973: LD_INT 10
37975: PUSH
37976: LD_INT 11
37978: PUSH
37979: LD_INT 17
37981: PUSH
37982: LD_INT 18
37984: PUSH
37985: EMPTY
37986: LIST
37987: LIST
37988: LIST
37989: LIST
37990: LIST
37991: LIST
37992: LIST
37993: LIST
37994: LIST
37995: LIST
37996: ST_TO_ADDR
// marking = [ base1_mark , base2_mark , base3_mark , base4_mark , base5_mark , base6_mark , base7_mark , base8_mark , base9_mark , base10_mark ] ;
37997: LD_ADDR_VAR 0 4
38001: PUSH
38002: LD_INT 34
38004: PUSH
38005: LD_INT 35
38007: PUSH
38008: LD_INT 36
38010: PUSH
38011: LD_INT 37
38013: PUSH
38014: LD_INT 38
38016: PUSH
38017: LD_INT 39
38019: PUSH
38020: LD_INT 40
38022: PUSH
38023: LD_INT 41
38025: PUSH
38026: LD_INT 42
38028: PUSH
38029: LD_INT 43
38031: PUSH
38032: EMPTY
38033: LIST
38034: LIST
38035: LIST
38036: LIST
38037: LIST
38038: LIST
38039: LIST
38040: LIST
38041: LIST
38042: LIST
38043: ST_TO_ADDR
// main_amount = [ 2 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 1 ] ;
38044: LD_ADDR_VAR 0 5
38048: PUSH
38049: LD_INT 2
38051: PUSH
38052: LD_INT 1
38054: PUSH
38055: LD_INT 1
38057: PUSH
38058: LD_INT 0
38060: PUSH
38061: LD_INT 1
38063: PUSH
38064: LD_INT 1
38066: PUSH
38067: LD_INT 1
38069: PUSH
38070: LD_INT 0
38072: PUSH
38073: LD_INT 1
38075: PUSH
38076: LD_INT 1
38078: PUSH
38079: EMPTY
38080: LIST
38081: LIST
38082: LIST
38083: LIST
38084: LIST
38085: LIST
38086: LIST
38087: LIST
38088: LIST
38089: LIST
38090: ST_TO_ADDR
// sec_amount = [ 6 , 8 , 4 , 3 , 3 , 2 , 2 , 1 , 1 , 1 ] ;
38091: LD_ADDR_VAR 0 6
38095: PUSH
38096: LD_INT 6
38098: PUSH
38099: LD_INT 8
38101: PUSH
38102: LD_INT 4
38104: PUSH
38105: LD_INT 3
38107: PUSH
38108: LD_INT 3
38110: PUSH
38111: LD_INT 2
38113: PUSH
38114: LD_INT 2
38116: PUSH
38117: LD_INT 1
38119: PUSH
38120: LD_INT 1
38122: PUSH
38123: LD_INT 1
38125: PUSH
38126: EMPTY
38127: LIST
38128: LIST
38129: LIST
38130: LIST
38131: LIST
38132: LIST
38133: LIST
38134: LIST
38135: LIST
38136: LIST
38137: ST_TO_ADDR
// repeat wait ( 0 0$5 ) ;
38138: LD_INT 175
38140: PPUSH
38141: CALL_OW 67
// for i in base_list do
38145: LD_ADDR_VAR 0 1
38149: PUSH
38150: LD_VAR 0 2
38154: PUSH
38155: FOR_IN
38156: IFFALSE 38294
// if i in ai_bases then
38158: LD_VAR 0 1
38162: PUSH
38163: LD_EXP 29
38167: IN
38168: IFFALSE 38174
// continue else
38170: GO 38155
38172: GO 38292
// if unitfilter ( mainbuildings , [ f_inarea , area [ i ] ] ) <= main_amount [ i ] and unitfilter ( minorbuildings , [ f_inarea , area [ i ] ] ) <= sec_amount [ i ] then
38174: LD_EXP 184
38178: PPUSH
38179: LD_INT 95
38181: PUSH
38182: LD_VAR 0 3
38186: PUSH
38187: LD_VAR 0 1
38191: ARRAY
38192: PUSH
38193: EMPTY
38194: LIST
38195: LIST
38196: PPUSH
38197: CALL_OW 72
38201: PUSH
38202: LD_VAR 0 5
38206: PUSH
38207: LD_VAR 0 1
38211: ARRAY
38212: LESSEQUAL
38213: PUSH
38214: LD_EXP 185
38218: PPUSH
38219: LD_INT 95
38221: PUSH
38222: LD_VAR 0 3
38226: PUSH
38227: LD_VAR 0 1
38231: ARRAY
38232: PUSH
38233: EMPTY
38234: LIST
38235: LIST
38236: PPUSH
38237: CALL_OW 72
38241: PUSH
38242: LD_VAR 0 6
38246: PUSH
38247: LD_VAR 0 1
38251: ARRAY
38252: LESSEQUAL
38253: AND
38254: IFFALSE 38292
// begin SetAreaMapShow ( marking [ i ] , 0 ) ;
38256: LD_VAR 0 4
38260: PUSH
38261: LD_VAR 0 1
38265: ARRAY
38266: PPUSH
38267: LD_INT 0
38269: PPUSH
38270: CALL_OW 424
// base_list = base_list diff i ;
38274: LD_ADDR_VAR 0 2
38278: PUSH
38279: LD_VAR 0 2
38283: PUSH
38284: LD_VAR 0 1
38288: DIFF
38289: ST_TO_ADDR
// break ;
38290: GO 38294
// end ;
38292: GO 38155
38294: POP
38295: POP
// until base_list = 0 ;
38296: LD_VAR 0 2
38300: PUSH
38301: LD_INT 0
38303: EQUAL
38304: IFFALSE 38138
// destruction_status = 1 ;
38306: LD_ADDR_EXP 161
38310: PUSH
38311: LD_INT 1
38313: ST_TO_ADDR
// ChangeMissionObjectives ( sec_destroy ) ;
38314: LD_STRING sec_destroy
38316: PPUSH
38317: CALL_OW 337
// end ; end_of_file
38321: PPOPN 6
38323: END
// export testing , help_variant , all_variant ; export you , russians , nature , alliance , arabians , americans , russians_alt , mines_side ; export Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Khattam , Aviradze , Evelyn , Swansson , Dwayne , Makise , Gonzo , Omar , Snake , Gordon , Alliance_sol ; export ai_bases ; export ai_soldiers , ai_attacking_soldiers , ai_engineers , ai_mechanics_defend , ai_mechanics_attack , ai_scientists , ai_attacking_scientists ; export ai_apemen_engineers , ai_excepted_soldiers , ai_depot , ai_labs , ai_facts , ai_armouries , ai_bunkers , ai_turrets , ai_oil_mine , ai_siberite_mines ; export ai_fact_extensions , ai_power_plants , ai_control_tower , ai_teleporter , ai_buildings_locations , ai_captured_buildings , ai_sib_bomb_fact ; export ai_sib_bomb_fact_location , ai_sib_bomb_mechanics , ai_spawn_people ; export ai_vehicles_defend , ai_vehicles_attack , ai_retreating_vehicles_defend , ai_vehicles_being_repaired , ai_refuel_vehicles_list ; export ai_vehicle_pullback_hexes , ai_human_pullback_hex , ai_building_under_construction , ai_heal_these_humans , ai_all_buildings ; export ai_building_constructor , ai_vehicle_being_moved , ai_vehicles_having_been_moved , ai_upcoming_building_data , ai_cannot_rebuild_these_buildings ; export ai_near_base_dist , ai_vehicle_attack_delay , ai_human_attack_delay , ai_cargo_bay , ai_cargo_bay_under_construction ; export ai_cargo_bay_destroy_tick , ai_crane , ai_crane_under_construction , ai_crane_destroy_tick , ai_crane_is_being_repaired ; export ai_crane_driver , ai_attacking_unit_hex_index , ai_retreating_attacking_humans , ai_control_tower_vehicles ; export ai_teleporter_exit_placed , ai_excepted_buildings , ai_fact_extension_replace_locations , ai_dismantle_these_buildings ; export ai_taufield_vehicles , ai_implosion_vehicles , ai_attack_strategy , ai_behemoths , ai_behemoth_parking_hexes , ai_behemoth_construction_hex ; export ai_new_attack_commencing , ai_sib_bomb_vehicles , ai_facts_with_ext_rebuild_map ; export ai_time_shift_data , ai_time_shift_hexes , ai_time_shift_hexes_underway ; export ai_contact_time , ai_attack_ground_info_initial , ai_attack_ground_info_sustain , ai_sib_bomb_used_time_matrix , ai_sib_bomb_contamination_duration ; export ai_defence_replace_mines_centerhexes , ai_defence_mines_hexes , ai_defence_max_num_replace_mines , ai_mine_guys , ai_defence_replace_mines_hexes ; export Teleport_status , Teleportation_test , Teleporter_captured , Teleport_SaveVariable ; export teleport_attack_list , teleport_attack_people , producing_the_attack , att_count , att_count2 , att_detected_units , att_backstab ; export Teleport_bottomleft , Teleport_bottomright , Teleport_centre , Teleport_right ; export CratesPrepared , OilPrepared , SiberitePrepared , EscortPrepared , EscortPrepared_vehicles , CargosPrepared , Crates_min , Crates_max , Oil_min , Oil_max , Sib_min , Sib_max , escortmin ; export CrateTransportReady , OilTransportReady , SibTransportReady , EscortReady ; export Enable_Transport , Query1_time , Query2_time , Query3_time ; export ConvoyCargos , ConvoyRussians , ConvoyAlliance , ConvoyAll , deserting , all_waypoints , all_attitude_counter , con_way_heavy , con_way_vehs , con_way_cargos , con_waypoint_counter , ConvoyTimer , Convoy_CargosPlaced ; export destruction_status ; export ai_VehiclesLeft , ai_buildingsleft ; export ai_people_running , ai_people_running_path , temp_people_running , entering_teleport_unit ; export base9_people , base9_buildings , base10_people , base10_buildings ; export starting_people_count , base_spawn_delay ; export player_forces , intro_centering , minesready ; export PlayerConvoySent , HeikeSent , EscortPeople , RescuePeople , FinalCountdown , TransportAllReadyToGo , MineTheTeleport ; export MainBuildings , MinorBuildings , RussianPeople ; export PrepareComputerSides , MissionEnd , PlayerMinimumPeople ; starting begin RandomizeAll ;
38324: CALL_OW 11
// ResetFog ;
38328: CALL_OW 335
// testing = false ;
38332: LD_ADDR_EXP 1
38336: PUSH
38337: LD_INT 0
38339: ST_TO_ADDR
// help_variant = 1 ;
38340: LD_ADDR_EXP 2
38344: PUSH
38345: LD_INT 1
38347: ST_TO_ADDR
// all_variant = 1 ;
38348: LD_ADDR_EXP 3
38352: PUSH
38353: LD_INT 1
38355: ST_TO_ADDR
// ai_VehiclesLeft = [ 5 , 7 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
38356: LD_ADDR_EXP 162
38360: PUSH
38361: LD_INT 5
38363: PUSH
38364: LD_INT 7
38366: PUSH
38367: LD_INT 0
38369: PUSH
38370: LD_INT 0
38372: PUSH
38373: LD_INT 0
38375: PUSH
38376: LD_INT 0
38378: PUSH
38379: LD_INT 0
38381: PUSH
38382: LD_INT 0
38384: PUSH
38385: LD_INT 0
38387: PUSH
38388: LD_INT 0
38390: PUSH
38391: EMPTY
38392: LIST
38393: LIST
38394: LIST
38395: LIST
38396: LIST
38397: LIST
38398: LIST
38399: LIST
38400: LIST
38401: LIST
38402: ST_TO_ADDR
// ai_buildingsleft = [ 3 , 4 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
38403: LD_ADDR_EXP 163
38407: PUSH
38408: LD_INT 3
38410: PUSH
38411: LD_INT 4
38413: PUSH
38414: LD_INT 2
38416: PUSH
38417: LD_INT 1
38419: PUSH
38420: LD_INT 0
38422: PUSH
38423: LD_INT 0
38425: PUSH
38426: LD_INT 0
38428: PUSH
38429: LD_INT 0
38431: PUSH
38432: LD_INT 0
38434: PUSH
38435: LD_INT 0
38437: PUSH
38438: EMPTY
38439: LIST
38440: LIST
38441: LIST
38442: LIST
38443: LIST
38444: LIST
38445: LIST
38446: LIST
38447: LIST
38448: LIST
38449: ST_TO_ADDR
// ai_people_running = [ ] ;
38450: LD_ADDR_EXP 164
38454: PUSH
38455: EMPTY
38456: ST_TO_ADDR
// ai_people_running_path = [ ] ;
38457: LD_ADDR_EXP 165
38461: PUSH
38462: EMPTY
38463: ST_TO_ADDR
// entering_teleport_unit = [ ] ;
38464: LD_ADDR_EXP 167
38468: PUSH
38469: EMPTY
38470: ST_TO_ADDR
// base9_buildings = [ HexInfo ( 238 , 164 ) , HexInfo ( 238 , 173 ) , HexInfo ( 243 , 172 ) , HexInfo ( 237 , 183 ) , HexInfo ( 243 , 185 ) , HexInfo ( 228 , 159 ) ] ;
38471: LD_ADDR_EXP 169
38475: PUSH
38476: LD_INT 238
38478: PPUSH
38479: LD_INT 164
38481: PPUSH
38482: CALL_OW 428
38486: PUSH
38487: LD_INT 238
38489: PPUSH
38490: LD_INT 173
38492: PPUSH
38493: CALL_OW 428
38497: PUSH
38498: LD_INT 243
38500: PPUSH
38501: LD_INT 172
38503: PPUSH
38504: CALL_OW 428
38508: PUSH
38509: LD_INT 237
38511: PPUSH
38512: LD_INT 183
38514: PPUSH
38515: CALL_OW 428
38519: PUSH
38520: LD_INT 243
38522: PPUSH
38523: LD_INT 185
38525: PPUSH
38526: CALL_OW 428
38530: PUSH
38531: LD_INT 228
38533: PPUSH
38534: LD_INT 159
38536: PPUSH
38537: CALL_OW 428
38541: PUSH
38542: EMPTY
38543: LIST
38544: LIST
38545: LIST
38546: LIST
38547: LIST
38548: LIST
38549: ST_TO_ADDR
// base10_buildings = [ HexInfo ( 85 , 145 ) , HexInfo ( 80 , 153 ) , HexInfo ( 88 , 150 ) , HexInfo ( 85 , 165 ) , HexInfo ( 90 , 162 ) ] ;
38550: LD_ADDR_EXP 171
38554: PUSH
38555: LD_INT 85
38557: PPUSH
38558: LD_INT 145
38560: PPUSH
38561: CALL_OW 428
38565: PUSH
38566: LD_INT 80
38568: PPUSH
38569: LD_INT 153
38571: PPUSH
38572: CALL_OW 428
38576: PUSH
38577: LD_INT 88
38579: PPUSH
38580: LD_INT 150
38582: PPUSH
38583: CALL_OW 428
38587: PUSH
38588: LD_INT 85
38590: PPUSH
38591: LD_INT 165
38593: PPUSH
38594: CALL_OW 428
38598: PUSH
38599: LD_INT 90
38601: PPUSH
38602: LD_INT 162
38604: PPUSH
38605: CALL_OW 428
38609: PUSH
38610: EMPTY
38611: LIST
38612: LIST
38613: LIST
38614: LIST
38615: LIST
38616: ST_TO_ADDR
// starting_people_count = [ ] ;
38617: LD_ADDR_EXP 172
38621: PUSH
38622: EMPTY
38623: ST_TO_ADDR
// base_spawn_delay = 1 ;
38624: LD_ADDR_EXP 173
38628: PUSH
38629: LD_INT 1
38631: ST_TO_ADDR
// ai_bases = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
38632: LD_ADDR_EXP 29
38636: PUSH
38637: LD_INT 1
38639: PUSH
38640: LD_INT 2
38642: PUSH
38643: LD_INT 3
38645: PUSH
38646: LD_INT 4
38648: PUSH
38649: LD_INT 5
38651: PUSH
38652: LD_INT 6
38654: PUSH
38655: LD_INT 7
38657: PUSH
38658: LD_INT 8
38660: PUSH
38661: EMPTY
38662: LIST
38663: LIST
38664: LIST
38665: LIST
38666: LIST
38667: LIST
38668: LIST
38669: LIST
38670: ST_TO_ADDR
// ai_soldiers = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38671: LD_ADDR_EXP 30
38675: PUSH
38676: EMPTY
38677: PUSH
38678: EMPTY
38679: PUSH
38680: EMPTY
38681: PUSH
38682: EMPTY
38683: PUSH
38684: EMPTY
38685: PUSH
38686: EMPTY
38687: PUSH
38688: EMPTY
38689: PUSH
38690: EMPTY
38691: PUSH
38692: EMPTY
38693: PUSH
38694: EMPTY
38695: PUSH
38696: EMPTY
38697: LIST
38698: LIST
38699: LIST
38700: LIST
38701: LIST
38702: LIST
38703: LIST
38704: LIST
38705: LIST
38706: LIST
38707: ST_TO_ADDR
// ai_excepted_soldiers = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38708: LD_ADDR_EXP 38
38712: PUSH
38713: EMPTY
38714: PUSH
38715: EMPTY
38716: PUSH
38717: EMPTY
38718: PUSH
38719: EMPTY
38720: PUSH
38721: EMPTY
38722: PUSH
38723: EMPTY
38724: PUSH
38725: EMPTY
38726: PUSH
38727: EMPTY
38728: PUSH
38729: EMPTY
38730: PUSH
38731: EMPTY
38732: PUSH
38733: EMPTY
38734: LIST
38735: LIST
38736: LIST
38737: LIST
38738: LIST
38739: LIST
38740: LIST
38741: LIST
38742: LIST
38743: LIST
38744: ST_TO_ADDR
// ai_engineers = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38745: LD_ADDR_EXP 32
38749: PUSH
38750: EMPTY
38751: PUSH
38752: EMPTY
38753: PUSH
38754: EMPTY
38755: PUSH
38756: EMPTY
38757: PUSH
38758: EMPTY
38759: PUSH
38760: EMPTY
38761: PUSH
38762: EMPTY
38763: PUSH
38764: EMPTY
38765: PUSH
38766: EMPTY
38767: PUSH
38768: EMPTY
38769: PUSH
38770: EMPTY
38771: LIST
38772: LIST
38773: LIST
38774: LIST
38775: LIST
38776: LIST
38777: LIST
38778: LIST
38779: LIST
38780: LIST
38781: ST_TO_ADDR
// ai_mechanics_defend = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38782: LD_ADDR_EXP 33
38786: PUSH
38787: EMPTY
38788: PUSH
38789: EMPTY
38790: PUSH
38791: EMPTY
38792: PUSH
38793: EMPTY
38794: PUSH
38795: EMPTY
38796: PUSH
38797: EMPTY
38798: PUSH
38799: EMPTY
38800: PUSH
38801: EMPTY
38802: PUSH
38803: EMPTY
38804: PUSH
38805: EMPTY
38806: PUSH
38807: EMPTY
38808: LIST
38809: LIST
38810: LIST
38811: LIST
38812: LIST
38813: LIST
38814: LIST
38815: LIST
38816: LIST
38817: LIST
38818: ST_TO_ADDR
// ai_scientists = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38819: LD_ADDR_EXP 35
38823: PUSH
38824: EMPTY
38825: PUSH
38826: EMPTY
38827: PUSH
38828: EMPTY
38829: PUSH
38830: EMPTY
38831: PUSH
38832: EMPTY
38833: PUSH
38834: EMPTY
38835: PUSH
38836: EMPTY
38837: PUSH
38838: EMPTY
38839: PUSH
38840: EMPTY
38841: PUSH
38842: EMPTY
38843: PUSH
38844: EMPTY
38845: LIST
38846: LIST
38847: LIST
38848: LIST
38849: LIST
38850: LIST
38851: LIST
38852: LIST
38853: LIST
38854: LIST
38855: ST_TO_ADDR
// ai_apemen_engineers = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38856: LD_ADDR_EXP 37
38860: PUSH
38861: EMPTY
38862: PUSH
38863: EMPTY
38864: PUSH
38865: EMPTY
38866: PUSH
38867: EMPTY
38868: PUSH
38869: EMPTY
38870: PUSH
38871: EMPTY
38872: PUSH
38873: EMPTY
38874: PUSH
38875: EMPTY
38876: PUSH
38877: EMPTY
38878: PUSH
38879: EMPTY
38880: PUSH
38881: EMPTY
38882: LIST
38883: LIST
38884: LIST
38885: LIST
38886: LIST
38887: LIST
38888: LIST
38889: LIST
38890: LIST
38891: LIST
38892: ST_TO_ADDR
// ai_depot = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
38893: LD_ADDR_EXP 39
38897: PUSH
38898: LD_INT 0
38900: PUSH
38901: LD_INT 0
38903: PUSH
38904: LD_INT 0
38906: PUSH
38907: LD_INT 0
38909: PUSH
38910: LD_INT 0
38912: PUSH
38913: LD_INT 0
38915: PUSH
38916: LD_INT 0
38918: PUSH
38919: LD_INT 0
38921: PUSH
38922: LD_INT 0
38924: PUSH
38925: LD_INT 0
38927: PUSH
38928: EMPTY
38929: LIST
38930: LIST
38931: LIST
38932: LIST
38933: LIST
38934: LIST
38935: LIST
38936: LIST
38937: LIST
38938: LIST
38939: ST_TO_ADDR
// ai_labs = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38940: LD_ADDR_EXP 40
38944: PUSH
38945: EMPTY
38946: PUSH
38947: EMPTY
38948: PUSH
38949: EMPTY
38950: PUSH
38951: EMPTY
38952: PUSH
38953: EMPTY
38954: PUSH
38955: EMPTY
38956: PUSH
38957: EMPTY
38958: PUSH
38959: EMPTY
38960: PUSH
38961: EMPTY
38962: PUSH
38963: EMPTY
38964: PUSH
38965: EMPTY
38966: LIST
38967: LIST
38968: LIST
38969: LIST
38970: LIST
38971: LIST
38972: LIST
38973: LIST
38974: LIST
38975: LIST
38976: ST_TO_ADDR
// ai_facts = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
38977: LD_ADDR_EXP 41
38981: PUSH
38982: EMPTY
38983: PUSH
38984: EMPTY
38985: PUSH
38986: EMPTY
38987: PUSH
38988: EMPTY
38989: PUSH
38990: EMPTY
38991: PUSH
38992: EMPTY
38993: PUSH
38994: EMPTY
38995: PUSH
38996: EMPTY
38997: PUSH
38998: EMPTY
38999: PUSH
39000: EMPTY
39001: PUSH
39002: EMPTY
39003: LIST
39004: LIST
39005: LIST
39006: LIST
39007: LIST
39008: LIST
39009: LIST
39010: LIST
39011: LIST
39012: LIST
39013: ST_TO_ADDR
// ai_armouries = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39014: LD_ADDR_EXP 42
39018: PUSH
39019: EMPTY
39020: PUSH
39021: EMPTY
39022: PUSH
39023: EMPTY
39024: PUSH
39025: EMPTY
39026: PUSH
39027: EMPTY
39028: PUSH
39029: EMPTY
39030: PUSH
39031: EMPTY
39032: PUSH
39033: EMPTY
39034: PUSH
39035: EMPTY
39036: PUSH
39037: EMPTY
39038: PUSH
39039: EMPTY
39040: LIST
39041: LIST
39042: LIST
39043: LIST
39044: LIST
39045: LIST
39046: LIST
39047: LIST
39048: LIST
39049: LIST
39050: ST_TO_ADDR
// ai_bunkers = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39051: LD_ADDR_EXP 43
39055: PUSH
39056: EMPTY
39057: PUSH
39058: EMPTY
39059: PUSH
39060: EMPTY
39061: PUSH
39062: EMPTY
39063: PUSH
39064: EMPTY
39065: PUSH
39066: EMPTY
39067: PUSH
39068: EMPTY
39069: PUSH
39070: EMPTY
39071: PUSH
39072: EMPTY
39073: PUSH
39074: EMPTY
39075: PUSH
39076: EMPTY
39077: LIST
39078: LIST
39079: LIST
39080: LIST
39081: LIST
39082: LIST
39083: LIST
39084: LIST
39085: LIST
39086: LIST
39087: ST_TO_ADDR
// ai_turrets = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39088: LD_ADDR_EXP 44
39092: PUSH
39093: EMPTY
39094: PUSH
39095: EMPTY
39096: PUSH
39097: EMPTY
39098: PUSH
39099: EMPTY
39100: PUSH
39101: EMPTY
39102: PUSH
39103: EMPTY
39104: PUSH
39105: EMPTY
39106: PUSH
39107: EMPTY
39108: PUSH
39109: EMPTY
39110: PUSH
39111: EMPTY
39112: PUSH
39113: EMPTY
39114: LIST
39115: LIST
39116: LIST
39117: LIST
39118: LIST
39119: LIST
39120: LIST
39121: LIST
39122: LIST
39123: LIST
39124: ST_TO_ADDR
// ai_oil_mine = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
39125: LD_ADDR_EXP 45
39129: PUSH
39130: LD_INT 0
39132: PUSH
39133: LD_INT 0
39135: PUSH
39136: LD_INT 0
39138: PUSH
39139: LD_INT 0
39141: PUSH
39142: LD_INT 0
39144: PUSH
39145: LD_INT 0
39147: PUSH
39148: LD_INT 0
39150: PUSH
39151: LD_INT 0
39153: PUSH
39154: LD_INT 0
39156: PUSH
39157: LD_INT 0
39159: PUSH
39160: EMPTY
39161: LIST
39162: LIST
39163: LIST
39164: LIST
39165: LIST
39166: LIST
39167: LIST
39168: LIST
39169: LIST
39170: LIST
39171: ST_TO_ADDR
// ai_siberite_mines = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39172: LD_ADDR_EXP 46
39176: PUSH
39177: EMPTY
39178: PUSH
39179: EMPTY
39180: PUSH
39181: EMPTY
39182: PUSH
39183: EMPTY
39184: PUSH
39185: EMPTY
39186: PUSH
39187: EMPTY
39188: PUSH
39189: EMPTY
39190: PUSH
39191: EMPTY
39192: PUSH
39193: EMPTY
39194: PUSH
39195: EMPTY
39196: PUSH
39197: EMPTY
39198: LIST
39199: LIST
39200: LIST
39201: LIST
39202: LIST
39203: LIST
39204: LIST
39205: LIST
39206: LIST
39207: LIST
39208: ST_TO_ADDR
// ai_fact_extensions = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39209: LD_ADDR_EXP 47
39213: PUSH
39214: EMPTY
39215: PUSH
39216: EMPTY
39217: PUSH
39218: EMPTY
39219: PUSH
39220: EMPTY
39221: PUSH
39222: EMPTY
39223: PUSH
39224: EMPTY
39225: PUSH
39226: EMPTY
39227: PUSH
39228: EMPTY
39229: PUSH
39230: EMPTY
39231: PUSH
39232: EMPTY
39233: PUSH
39234: EMPTY
39235: LIST
39236: LIST
39237: LIST
39238: LIST
39239: LIST
39240: LIST
39241: LIST
39242: LIST
39243: LIST
39244: LIST
39245: ST_TO_ADDR
// ai_power_plants = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39246: LD_ADDR_EXP 48
39250: PUSH
39251: EMPTY
39252: PUSH
39253: EMPTY
39254: PUSH
39255: EMPTY
39256: PUSH
39257: EMPTY
39258: PUSH
39259: EMPTY
39260: PUSH
39261: EMPTY
39262: PUSH
39263: EMPTY
39264: PUSH
39265: EMPTY
39266: PUSH
39267: EMPTY
39268: PUSH
39269: EMPTY
39270: PUSH
39271: EMPTY
39272: LIST
39273: LIST
39274: LIST
39275: LIST
39276: LIST
39277: LIST
39278: LIST
39279: LIST
39280: LIST
39281: LIST
39282: ST_TO_ADDR
// ai_teleporter = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
39283: LD_ADDR_EXP 50
39287: PUSH
39288: LD_INT 0
39290: PUSH
39291: LD_INT 0
39293: PUSH
39294: LD_INT 0
39296: PUSH
39297: LD_INT 0
39299: PUSH
39300: LD_INT 0
39302: PUSH
39303: LD_INT 0
39305: PUSH
39306: LD_INT 0
39308: PUSH
39309: LD_INT 0
39311: PUSH
39312: LD_INT 0
39314: PUSH
39315: LD_INT 0
39317: PUSH
39318: EMPTY
39319: LIST
39320: LIST
39321: LIST
39322: LIST
39323: LIST
39324: LIST
39325: LIST
39326: LIST
39327: LIST
39328: LIST
39329: ST_TO_ADDR
// ai_buildings_locations = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39330: LD_ADDR_EXP 51
39334: PUSH
39335: EMPTY
39336: PUSH
39337: EMPTY
39338: PUSH
39339: EMPTY
39340: PUSH
39341: EMPTY
39342: PUSH
39343: EMPTY
39344: PUSH
39345: EMPTY
39346: PUSH
39347: EMPTY
39348: PUSH
39349: EMPTY
39350: PUSH
39351: EMPTY
39352: PUSH
39353: EMPTY
39354: PUSH
39355: EMPTY
39356: LIST
39357: LIST
39358: LIST
39359: LIST
39360: LIST
39361: LIST
39362: LIST
39363: LIST
39364: LIST
39365: LIST
39366: ST_TO_ADDR
// ai_captured_buildings = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39367: LD_ADDR_EXP 52
39371: PUSH
39372: EMPTY
39373: PUSH
39374: EMPTY
39375: PUSH
39376: EMPTY
39377: PUSH
39378: EMPTY
39379: PUSH
39380: EMPTY
39381: PUSH
39382: EMPTY
39383: PUSH
39384: EMPTY
39385: PUSH
39386: EMPTY
39387: PUSH
39388: EMPTY
39389: PUSH
39390: EMPTY
39391: PUSH
39392: EMPTY
39393: LIST
39394: LIST
39395: LIST
39396: LIST
39397: LIST
39398: LIST
39399: LIST
39400: LIST
39401: LIST
39402: LIST
39403: ST_TO_ADDR
// ai_vehicles_defend = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39404: LD_ADDR_EXP 57
39408: PUSH
39409: EMPTY
39410: PUSH
39411: EMPTY
39412: PUSH
39413: EMPTY
39414: PUSH
39415: EMPTY
39416: PUSH
39417: EMPTY
39418: PUSH
39419: EMPTY
39420: PUSH
39421: EMPTY
39422: PUSH
39423: EMPTY
39424: PUSH
39425: EMPTY
39426: PUSH
39427: EMPTY
39428: PUSH
39429: EMPTY
39430: LIST
39431: LIST
39432: LIST
39433: LIST
39434: LIST
39435: LIST
39436: LIST
39437: LIST
39438: LIST
39439: LIST
39440: ST_TO_ADDR
// ai_retreating_vehicles_defend = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39441: LD_ADDR_EXP 59
39445: PUSH
39446: EMPTY
39447: PUSH
39448: EMPTY
39449: PUSH
39450: EMPTY
39451: PUSH
39452: EMPTY
39453: PUSH
39454: EMPTY
39455: PUSH
39456: EMPTY
39457: PUSH
39458: EMPTY
39459: PUSH
39460: EMPTY
39461: PUSH
39462: EMPTY
39463: PUSH
39464: EMPTY
39465: PUSH
39466: EMPTY
39467: LIST
39468: LIST
39469: LIST
39470: LIST
39471: LIST
39472: LIST
39473: LIST
39474: LIST
39475: LIST
39476: LIST
39477: ST_TO_ADDR
// ai_vehicles_being_repaired = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39478: LD_ADDR_EXP 60
39482: PUSH
39483: EMPTY
39484: PUSH
39485: EMPTY
39486: PUSH
39487: EMPTY
39488: PUSH
39489: EMPTY
39490: PUSH
39491: EMPTY
39492: PUSH
39493: EMPTY
39494: PUSH
39495: EMPTY
39496: PUSH
39497: EMPTY
39498: PUSH
39499: EMPTY
39500: PUSH
39501: EMPTY
39502: PUSH
39503: EMPTY
39504: LIST
39505: LIST
39506: LIST
39507: LIST
39508: LIST
39509: LIST
39510: LIST
39511: LIST
39512: LIST
39513: LIST
39514: ST_TO_ADDR
// ai_refuel_vehicles_list = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39515: LD_ADDR_EXP 61
39519: PUSH
39520: EMPTY
39521: PUSH
39522: EMPTY
39523: PUSH
39524: EMPTY
39525: PUSH
39526: EMPTY
39527: PUSH
39528: EMPTY
39529: PUSH
39530: EMPTY
39531: PUSH
39532: EMPTY
39533: PUSH
39534: EMPTY
39535: PUSH
39536: EMPTY
39537: PUSH
39538: EMPTY
39539: PUSH
39540: EMPTY
39541: LIST
39542: LIST
39543: LIST
39544: LIST
39545: LIST
39546: LIST
39547: LIST
39548: LIST
39549: LIST
39550: LIST
39551: ST_TO_ADDR
// ai_vehicle_pullback_hexes = [ [ [ 98 , 56 ] ] , [ [ 189 , 99 ] , [ 194 , 93 ] , [ 184 , 92 ] , [ 182 , 86 ] , [ 173 , 80 ] , [ 189 , 78 ] , [ 183 , 72 ] , [ 174 , 101 ] ] , [ [ 82 , 120 ] ] , [ [ 179 , 164 ] , [ 187 , 166 ] ] , [ [ 142 , 170 ] ] , [ [ 138 , 13 ] ] , [ ] , [ ] , [ ] , [ ] ] ;
39552: LD_ADDR_EXP 62
39556: PUSH
39557: LD_INT 98
39559: PUSH
39560: LD_INT 56
39562: PUSH
39563: EMPTY
39564: LIST
39565: LIST
39566: PUSH
39567: EMPTY
39568: LIST
39569: PUSH
39570: LD_INT 189
39572: PUSH
39573: LD_INT 99
39575: PUSH
39576: EMPTY
39577: LIST
39578: LIST
39579: PUSH
39580: LD_INT 194
39582: PUSH
39583: LD_INT 93
39585: PUSH
39586: EMPTY
39587: LIST
39588: LIST
39589: PUSH
39590: LD_INT 184
39592: PUSH
39593: LD_INT 92
39595: PUSH
39596: EMPTY
39597: LIST
39598: LIST
39599: PUSH
39600: LD_INT 182
39602: PUSH
39603: LD_INT 86
39605: PUSH
39606: EMPTY
39607: LIST
39608: LIST
39609: PUSH
39610: LD_INT 173
39612: PUSH
39613: LD_INT 80
39615: PUSH
39616: EMPTY
39617: LIST
39618: LIST
39619: PUSH
39620: LD_INT 189
39622: PUSH
39623: LD_INT 78
39625: PUSH
39626: EMPTY
39627: LIST
39628: LIST
39629: PUSH
39630: LD_INT 183
39632: PUSH
39633: LD_INT 72
39635: PUSH
39636: EMPTY
39637: LIST
39638: LIST
39639: PUSH
39640: LD_INT 174
39642: PUSH
39643: LD_INT 101
39645: PUSH
39646: EMPTY
39647: LIST
39648: LIST
39649: PUSH
39650: EMPTY
39651: LIST
39652: LIST
39653: LIST
39654: LIST
39655: LIST
39656: LIST
39657: LIST
39658: LIST
39659: PUSH
39660: LD_INT 82
39662: PUSH
39663: LD_INT 120
39665: PUSH
39666: EMPTY
39667: LIST
39668: LIST
39669: PUSH
39670: EMPTY
39671: LIST
39672: PUSH
39673: LD_INT 179
39675: PUSH
39676: LD_INT 164
39678: PUSH
39679: EMPTY
39680: LIST
39681: LIST
39682: PUSH
39683: LD_INT 187
39685: PUSH
39686: LD_INT 166
39688: PUSH
39689: EMPTY
39690: LIST
39691: LIST
39692: PUSH
39693: EMPTY
39694: LIST
39695: LIST
39696: PUSH
39697: LD_INT 142
39699: PUSH
39700: LD_INT 170
39702: PUSH
39703: EMPTY
39704: LIST
39705: LIST
39706: PUSH
39707: EMPTY
39708: LIST
39709: PUSH
39710: LD_INT 138
39712: PUSH
39713: LD_INT 13
39715: PUSH
39716: EMPTY
39717: LIST
39718: LIST
39719: PUSH
39720: EMPTY
39721: LIST
39722: PUSH
39723: EMPTY
39724: PUSH
39725: EMPTY
39726: PUSH
39727: EMPTY
39728: PUSH
39729: EMPTY
39730: PUSH
39731: EMPTY
39732: LIST
39733: LIST
39734: LIST
39735: LIST
39736: LIST
39737: LIST
39738: LIST
39739: LIST
39740: LIST
39741: LIST
39742: ST_TO_ADDR
// ai_human_pullback_hex = [ [ 92 , 70 ] , [ 173 , 96 ] , [ 105 , 130 ] , [ 177 , 170 ] , [ 131 , 175 ] , [ 147 , 17 ] , [ 39 , 67 ] , [ 206 , 129 ] , [ 233 , 166 ] , [ 78 , 144 ] , [ 234 , 167 ] , [ 80 , 146 ] ] ;
39743: LD_ADDR_EXP 63
39747: PUSH
39748: LD_INT 92
39750: PUSH
39751: LD_INT 70
39753: PUSH
39754: EMPTY
39755: LIST
39756: LIST
39757: PUSH
39758: LD_INT 173
39760: PUSH
39761: LD_INT 96
39763: PUSH
39764: EMPTY
39765: LIST
39766: LIST
39767: PUSH
39768: LD_INT 105
39770: PUSH
39771: LD_INT 130
39773: PUSH
39774: EMPTY
39775: LIST
39776: LIST
39777: PUSH
39778: LD_INT 177
39780: PUSH
39781: LD_INT 170
39783: PUSH
39784: EMPTY
39785: LIST
39786: LIST
39787: PUSH
39788: LD_INT 131
39790: PUSH
39791: LD_INT 175
39793: PUSH
39794: EMPTY
39795: LIST
39796: LIST
39797: PUSH
39798: LD_INT 147
39800: PUSH
39801: LD_INT 17
39803: PUSH
39804: EMPTY
39805: LIST
39806: LIST
39807: PUSH
39808: LD_INT 39
39810: PUSH
39811: LD_INT 67
39813: PUSH
39814: EMPTY
39815: LIST
39816: LIST
39817: PUSH
39818: LD_INT 206
39820: PUSH
39821: LD_INT 129
39823: PUSH
39824: EMPTY
39825: LIST
39826: LIST
39827: PUSH
39828: LD_INT 233
39830: PUSH
39831: LD_INT 166
39833: PUSH
39834: EMPTY
39835: LIST
39836: LIST
39837: PUSH
39838: LD_INT 78
39840: PUSH
39841: LD_INT 144
39843: PUSH
39844: EMPTY
39845: LIST
39846: LIST
39847: PUSH
39848: LD_INT 234
39850: PUSH
39851: LD_INT 167
39853: PUSH
39854: EMPTY
39855: LIST
39856: LIST
39857: PUSH
39858: LD_INT 80
39860: PUSH
39861: LD_INT 146
39863: PUSH
39864: EMPTY
39865: LIST
39866: LIST
39867: PUSH
39868: EMPTY
39869: LIST
39870: LIST
39871: LIST
39872: LIST
39873: LIST
39874: LIST
39875: LIST
39876: LIST
39877: LIST
39878: LIST
39879: LIST
39880: LIST
39881: ST_TO_ADDR
// ai_building_under_construction = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
39882: LD_ADDR_EXP 64
39886: PUSH
39887: LD_INT 0
39889: PUSH
39890: LD_INT 0
39892: PUSH
39893: LD_INT 0
39895: PUSH
39896: LD_INT 0
39898: PUSH
39899: LD_INT 0
39901: PUSH
39902: LD_INT 0
39904: PUSH
39905: LD_INT 0
39907: PUSH
39908: LD_INT 0
39910: PUSH
39911: LD_INT 0
39913: PUSH
39914: LD_INT 0
39916: PUSH
39917: EMPTY
39918: LIST
39919: LIST
39920: LIST
39921: LIST
39922: LIST
39923: LIST
39924: LIST
39925: LIST
39926: LIST
39927: LIST
39928: ST_TO_ADDR
// ai_heal_these_humans = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39929: LD_ADDR_EXP 65
39933: PUSH
39934: EMPTY
39935: PUSH
39936: EMPTY
39937: PUSH
39938: EMPTY
39939: PUSH
39940: EMPTY
39941: PUSH
39942: EMPTY
39943: PUSH
39944: EMPTY
39945: PUSH
39946: EMPTY
39947: PUSH
39948: EMPTY
39949: PUSH
39950: EMPTY
39951: PUSH
39952: EMPTY
39953: PUSH
39954: EMPTY
39955: LIST
39956: LIST
39957: LIST
39958: LIST
39959: LIST
39960: LIST
39961: LIST
39962: LIST
39963: LIST
39964: LIST
39965: ST_TO_ADDR
// ai_all_buildings = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
39966: LD_ADDR_EXP 66
39970: PUSH
39971: EMPTY
39972: PUSH
39973: EMPTY
39974: PUSH
39975: EMPTY
39976: PUSH
39977: EMPTY
39978: PUSH
39979: EMPTY
39980: PUSH
39981: EMPTY
39982: PUSH
39983: EMPTY
39984: PUSH
39985: EMPTY
39986: PUSH
39987: EMPTY
39988: PUSH
39989: EMPTY
39990: PUSH
39991: EMPTY
39992: LIST
39993: LIST
39994: LIST
39995: LIST
39996: LIST
39997: LIST
39998: LIST
39999: LIST
40000: LIST
40001: LIST
40002: ST_TO_ADDR
// ai_building_constructor = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40003: LD_ADDR_EXP 67
40007: PUSH
40008: LD_INT 0
40010: PUSH
40011: LD_INT 0
40013: PUSH
40014: LD_INT 0
40016: PUSH
40017: LD_INT 0
40019: PUSH
40020: LD_INT 0
40022: PUSH
40023: LD_INT 0
40025: PUSH
40026: LD_INT 0
40028: PUSH
40029: LD_INT 0
40031: PUSH
40032: LD_INT 0
40034: PUSH
40035: LD_INT 0
40037: PUSH
40038: EMPTY
40039: LIST
40040: LIST
40041: LIST
40042: LIST
40043: LIST
40044: LIST
40045: LIST
40046: LIST
40047: LIST
40048: LIST
40049: ST_TO_ADDR
// ai_vehicle_being_moved = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40050: LD_ADDR_EXP 68
40054: PUSH
40055: LD_INT 0
40057: PUSH
40058: LD_INT 0
40060: PUSH
40061: LD_INT 0
40063: PUSH
40064: LD_INT 0
40066: PUSH
40067: LD_INT 0
40069: PUSH
40070: LD_INT 0
40072: PUSH
40073: LD_INT 0
40075: PUSH
40076: LD_INT 0
40078: PUSH
40079: LD_INT 0
40081: PUSH
40082: LD_INT 0
40084: PUSH
40085: EMPTY
40086: LIST
40087: LIST
40088: LIST
40089: LIST
40090: LIST
40091: LIST
40092: LIST
40093: LIST
40094: LIST
40095: LIST
40096: ST_TO_ADDR
// ai_vehicles_having_been_moved = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40097: LD_ADDR_EXP 69
40101: PUSH
40102: EMPTY
40103: PUSH
40104: EMPTY
40105: PUSH
40106: EMPTY
40107: PUSH
40108: EMPTY
40109: PUSH
40110: EMPTY
40111: PUSH
40112: EMPTY
40113: PUSH
40114: EMPTY
40115: PUSH
40116: EMPTY
40117: PUSH
40118: EMPTY
40119: PUSH
40120: EMPTY
40121: PUSH
40122: EMPTY
40123: LIST
40124: LIST
40125: LIST
40126: LIST
40127: LIST
40128: LIST
40129: LIST
40130: LIST
40131: LIST
40132: LIST
40133: ST_TO_ADDR
// ai_upcoming_building_data = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40134: LD_ADDR_EXP 70
40138: PUSH
40139: EMPTY
40140: PUSH
40141: EMPTY
40142: PUSH
40143: EMPTY
40144: PUSH
40145: EMPTY
40146: PUSH
40147: EMPTY
40148: PUSH
40149: EMPTY
40150: PUSH
40151: EMPTY
40152: PUSH
40153: EMPTY
40154: PUSH
40155: EMPTY
40156: PUSH
40157: EMPTY
40158: PUSH
40159: EMPTY
40160: LIST
40161: LIST
40162: LIST
40163: LIST
40164: LIST
40165: LIST
40166: LIST
40167: LIST
40168: LIST
40169: LIST
40170: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40171: LD_ADDR_EXP 71
40175: PUSH
40176: EMPTY
40177: PUSH
40178: EMPTY
40179: PUSH
40180: EMPTY
40181: PUSH
40182: EMPTY
40183: PUSH
40184: EMPTY
40185: PUSH
40186: EMPTY
40187: PUSH
40188: EMPTY
40189: PUSH
40190: EMPTY
40191: PUSH
40192: EMPTY
40193: PUSH
40194: EMPTY
40195: PUSH
40196: EMPTY
40197: LIST
40198: LIST
40199: LIST
40200: LIST
40201: LIST
40202: LIST
40203: LIST
40204: LIST
40205: LIST
40206: LIST
40207: ST_TO_ADDR
// ai_near_base_dist = 18 ;
40208: LD_ADDR_EXP 72
40212: PUSH
40213: LD_INT 18
40215: ST_TO_ADDR
// ai_attack_strategy = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40216: LD_ADDR_EXP 92
40220: PUSH
40221: LD_INT 0
40223: PUSH
40224: LD_INT 0
40226: PUSH
40227: LD_INT 0
40229: PUSH
40230: LD_INT 0
40232: PUSH
40233: LD_INT 0
40235: PUSH
40236: LD_INT 0
40238: PUSH
40239: LD_INT 0
40241: PUSH
40242: LD_INT 0
40244: PUSH
40245: LD_INT 0
40247: PUSH
40248: LD_INT 0
40250: PUSH
40251: EMPTY
40252: LIST
40253: LIST
40254: LIST
40255: LIST
40256: LIST
40257: LIST
40258: LIST
40259: LIST
40260: LIST
40261: LIST
40262: ST_TO_ADDR
// ai_cargo_bay = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40263: LD_ADDR_EXP 75
40267: PUSH
40268: LD_INT 0
40270: PUSH
40271: LD_INT 0
40273: PUSH
40274: LD_INT 0
40276: PUSH
40277: LD_INT 0
40279: PUSH
40280: LD_INT 0
40282: PUSH
40283: LD_INT 0
40285: PUSH
40286: LD_INT 0
40288: PUSH
40289: LD_INT 0
40291: PUSH
40292: LD_INT 0
40294: PUSH
40295: LD_INT 0
40297: PUSH
40298: EMPTY
40299: LIST
40300: LIST
40301: LIST
40302: LIST
40303: LIST
40304: LIST
40305: LIST
40306: LIST
40307: LIST
40308: LIST
40309: ST_TO_ADDR
// ai_cargo_bay_under_construction = [ false , false , false , false , false , false , false , false , false , false ] ;
40310: LD_ADDR_EXP 76
40314: PUSH
40315: LD_INT 0
40317: PUSH
40318: LD_INT 0
40320: PUSH
40321: LD_INT 0
40323: PUSH
40324: LD_INT 0
40326: PUSH
40327: LD_INT 0
40329: PUSH
40330: LD_INT 0
40332: PUSH
40333: LD_INT 0
40335: PUSH
40336: LD_INT 0
40338: PUSH
40339: LD_INT 0
40341: PUSH
40342: LD_INT 0
40344: PUSH
40345: EMPTY
40346: LIST
40347: LIST
40348: LIST
40349: LIST
40350: LIST
40351: LIST
40352: LIST
40353: LIST
40354: LIST
40355: LIST
40356: ST_TO_ADDR
// ai_cargo_bay_destroy_tick = [ tick , tick , tick , tick , tick , tick , tick , tick , tick , tick ] ;
40357: LD_ADDR_EXP 77
40361: PUSH
40362: LD_OWVAR 1
40366: PUSH
40367: LD_OWVAR 1
40371: PUSH
40372: LD_OWVAR 1
40376: PUSH
40377: LD_OWVAR 1
40381: PUSH
40382: LD_OWVAR 1
40386: PUSH
40387: LD_OWVAR 1
40391: PUSH
40392: LD_OWVAR 1
40396: PUSH
40397: LD_OWVAR 1
40401: PUSH
40402: LD_OWVAR 1
40406: PUSH
40407: LD_OWVAR 1
40411: PUSH
40412: EMPTY
40413: LIST
40414: LIST
40415: LIST
40416: LIST
40417: LIST
40418: LIST
40419: LIST
40420: LIST
40421: LIST
40422: LIST
40423: ST_TO_ADDR
// ai_crane = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40424: LD_ADDR_EXP 78
40428: PUSH
40429: LD_INT 0
40431: PUSH
40432: LD_INT 0
40434: PUSH
40435: LD_INT 0
40437: PUSH
40438: LD_INT 0
40440: PUSH
40441: LD_INT 0
40443: PUSH
40444: LD_INT 0
40446: PUSH
40447: LD_INT 0
40449: PUSH
40450: LD_INT 0
40452: PUSH
40453: LD_INT 0
40455: PUSH
40456: LD_INT 0
40458: PUSH
40459: EMPTY
40460: LIST
40461: LIST
40462: LIST
40463: LIST
40464: LIST
40465: LIST
40466: LIST
40467: LIST
40468: LIST
40469: LIST
40470: ST_TO_ADDR
// ai_crane_under_construction = [ false , false , false , false , false , false , false , false , false , false ] ;
40471: LD_ADDR_EXP 79
40475: PUSH
40476: LD_INT 0
40478: PUSH
40479: LD_INT 0
40481: PUSH
40482: LD_INT 0
40484: PUSH
40485: LD_INT 0
40487: PUSH
40488: LD_INT 0
40490: PUSH
40491: LD_INT 0
40493: PUSH
40494: LD_INT 0
40496: PUSH
40497: LD_INT 0
40499: PUSH
40500: LD_INT 0
40502: PUSH
40503: LD_INT 0
40505: PUSH
40506: EMPTY
40507: LIST
40508: LIST
40509: LIST
40510: LIST
40511: LIST
40512: LIST
40513: LIST
40514: LIST
40515: LIST
40516: LIST
40517: ST_TO_ADDR
// ai_crane_destroy_tick = [ tick , tick , tick , tick , tick , tick , tick , tick , tick , tick ] ;
40518: LD_ADDR_EXP 80
40522: PUSH
40523: LD_OWVAR 1
40527: PUSH
40528: LD_OWVAR 1
40532: PUSH
40533: LD_OWVAR 1
40537: PUSH
40538: LD_OWVAR 1
40542: PUSH
40543: LD_OWVAR 1
40547: PUSH
40548: LD_OWVAR 1
40552: PUSH
40553: LD_OWVAR 1
40557: PUSH
40558: LD_OWVAR 1
40562: PUSH
40563: LD_OWVAR 1
40567: PUSH
40568: LD_OWVAR 1
40572: PUSH
40573: EMPTY
40574: LIST
40575: LIST
40576: LIST
40577: LIST
40578: LIST
40579: LIST
40580: LIST
40581: LIST
40582: LIST
40583: LIST
40584: ST_TO_ADDR
// ai_crane_is_being_repaired = [ false , false , false , false , false , false , false , false , false , false ] ;
40585: LD_ADDR_EXP 81
40589: PUSH
40590: LD_INT 0
40592: PUSH
40593: LD_INT 0
40595: PUSH
40596: LD_INT 0
40598: PUSH
40599: LD_INT 0
40601: PUSH
40602: LD_INT 0
40604: PUSH
40605: LD_INT 0
40607: PUSH
40608: LD_INT 0
40610: PUSH
40611: LD_INT 0
40613: PUSH
40614: LD_INT 0
40616: PUSH
40617: LD_INT 0
40619: PUSH
40620: EMPTY
40621: LIST
40622: LIST
40623: LIST
40624: LIST
40625: LIST
40626: LIST
40627: LIST
40628: LIST
40629: LIST
40630: LIST
40631: ST_TO_ADDR
// ai_crane_driver = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
40632: LD_ADDR_EXP 82
40636: PUSH
40637: LD_INT 0
40639: PUSH
40640: LD_INT 0
40642: PUSH
40643: LD_INT 0
40645: PUSH
40646: LD_INT 0
40648: PUSH
40649: LD_INT 0
40651: PUSH
40652: LD_INT 0
40654: PUSH
40655: LD_INT 0
40657: PUSH
40658: LD_INT 0
40660: PUSH
40661: LD_INT 0
40663: PUSH
40664: LD_INT 0
40666: PUSH
40667: EMPTY
40668: LIST
40669: LIST
40670: LIST
40671: LIST
40672: LIST
40673: LIST
40674: LIST
40675: LIST
40676: LIST
40677: LIST
40678: ST_TO_ADDR
// ai_attacking_unit_hex_index = [ ] ;
40679: LD_ADDR_EXP 83
40683: PUSH
40684: EMPTY
40685: ST_TO_ADDR
// ai_teleporter_exit_placed = [ false , false , false , false , false , false , false , false , false , false ] ;
40686: LD_ADDR_EXP 86
40690: PUSH
40691: LD_INT 0
40693: PUSH
40694: LD_INT 0
40696: PUSH
40697: LD_INT 0
40699: PUSH
40700: LD_INT 0
40702: PUSH
40703: LD_INT 0
40705: PUSH
40706: LD_INT 0
40708: PUSH
40709: LD_INT 0
40711: PUSH
40712: LD_INT 0
40714: PUSH
40715: LD_INT 0
40717: PUSH
40718: LD_INT 0
40720: PUSH
40721: EMPTY
40722: LIST
40723: LIST
40724: LIST
40725: LIST
40726: LIST
40727: LIST
40728: LIST
40729: LIST
40730: LIST
40731: LIST
40732: ST_TO_ADDR
// ai_excepted_buildings = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40733: LD_ADDR_EXP 87
40737: PUSH
40738: EMPTY
40739: PUSH
40740: EMPTY
40741: PUSH
40742: EMPTY
40743: PUSH
40744: EMPTY
40745: PUSH
40746: EMPTY
40747: PUSH
40748: EMPTY
40749: PUSH
40750: EMPTY
40751: PUSH
40752: EMPTY
40753: PUSH
40754: EMPTY
40755: PUSH
40756: EMPTY
40757: PUSH
40758: EMPTY
40759: LIST
40760: LIST
40761: LIST
40762: LIST
40763: LIST
40764: LIST
40765: LIST
40766: LIST
40767: LIST
40768: LIST
40769: ST_TO_ADDR
// ai_fact_extension_replace_locations = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40770: LD_ADDR_EXP 88
40774: PUSH
40775: EMPTY
40776: PUSH
40777: EMPTY
40778: PUSH
40779: EMPTY
40780: PUSH
40781: EMPTY
40782: PUSH
40783: EMPTY
40784: PUSH
40785: EMPTY
40786: PUSH
40787: EMPTY
40788: PUSH
40789: EMPTY
40790: PUSH
40791: EMPTY
40792: PUSH
40793: EMPTY
40794: PUSH
40795: EMPTY
40796: LIST
40797: LIST
40798: LIST
40799: LIST
40800: LIST
40801: LIST
40802: LIST
40803: LIST
40804: LIST
40805: LIST
40806: ST_TO_ADDR
// ai_facts_with_ext_rebuild_map = [ ] ;
40807: LD_ADDR_EXP 98
40811: PUSH
40812: EMPTY
40813: ST_TO_ADDR
// ai_dismantle_these_buildings = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40814: LD_ADDR_EXP 89
40818: PUSH
40819: EMPTY
40820: PUSH
40821: EMPTY
40822: PUSH
40823: EMPTY
40824: PUSH
40825: EMPTY
40826: PUSH
40827: EMPTY
40828: PUSH
40829: EMPTY
40830: PUSH
40831: EMPTY
40832: PUSH
40833: EMPTY
40834: PUSH
40835: EMPTY
40836: PUSH
40837: EMPTY
40838: PUSH
40839: EMPTY
40840: LIST
40841: LIST
40842: LIST
40843: LIST
40844: LIST
40845: LIST
40846: LIST
40847: LIST
40848: LIST
40849: LIST
40850: ST_TO_ADDR
// ai_taufield_vehicles = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40851: LD_ADDR_EXP 90
40855: PUSH
40856: EMPTY
40857: PUSH
40858: EMPTY
40859: PUSH
40860: EMPTY
40861: PUSH
40862: EMPTY
40863: PUSH
40864: EMPTY
40865: PUSH
40866: EMPTY
40867: PUSH
40868: EMPTY
40869: PUSH
40870: EMPTY
40871: PUSH
40872: EMPTY
40873: PUSH
40874: EMPTY
40875: PUSH
40876: EMPTY
40877: LIST
40878: LIST
40879: LIST
40880: LIST
40881: LIST
40882: LIST
40883: LIST
40884: LIST
40885: LIST
40886: LIST
40887: ST_TO_ADDR
// ai_time_shift_data = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40888: LD_ADDR_EXP 99
40892: PUSH
40893: EMPTY
40894: PUSH
40895: EMPTY
40896: PUSH
40897: EMPTY
40898: PUSH
40899: EMPTY
40900: PUSH
40901: EMPTY
40902: PUSH
40903: EMPTY
40904: PUSH
40905: EMPTY
40906: PUSH
40907: EMPTY
40908: PUSH
40909: EMPTY
40910: PUSH
40911: EMPTY
40912: PUSH
40913: EMPTY
40914: LIST
40915: LIST
40916: LIST
40917: LIST
40918: LIST
40919: LIST
40920: LIST
40921: LIST
40922: LIST
40923: LIST
40924: ST_TO_ADDR
// ai_time_shift_hexes = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40925: LD_ADDR_EXP 100
40929: PUSH
40930: EMPTY
40931: PUSH
40932: EMPTY
40933: PUSH
40934: EMPTY
40935: PUSH
40936: EMPTY
40937: PUSH
40938: EMPTY
40939: PUSH
40940: EMPTY
40941: PUSH
40942: EMPTY
40943: PUSH
40944: EMPTY
40945: PUSH
40946: EMPTY
40947: PUSH
40948: EMPTY
40949: PUSH
40950: EMPTY
40951: LIST
40952: LIST
40953: LIST
40954: LIST
40955: LIST
40956: LIST
40957: LIST
40958: LIST
40959: LIST
40960: LIST
40961: ST_TO_ADDR
// ai_time_shift_hexes_underway = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
40962: LD_ADDR_EXP 101
40966: PUSH
40967: EMPTY
40968: PUSH
40969: EMPTY
40970: PUSH
40971: EMPTY
40972: PUSH
40973: EMPTY
40974: PUSH
40975: EMPTY
40976: PUSH
40977: EMPTY
40978: PUSH
40979: EMPTY
40980: PUSH
40981: EMPTY
40982: PUSH
40983: EMPTY
40984: PUSH
40985: EMPTY
40986: PUSH
40987: EMPTY
40988: LIST
40989: LIST
40990: LIST
40991: LIST
40992: LIST
40993: LIST
40994: LIST
40995: LIST
40996: LIST
40997: LIST
40998: ST_TO_ADDR
// Initiate_ai_contact_time ;
40999: CALL 42544 0 0
// ai_attack_ground_info_initial = [ ] ;
41003: LD_ADDR_EXP 103
41007: PUSH
41008: EMPTY
41009: ST_TO_ADDR
// ai_attack_ground_info_sustain = [ ] ;
41010: LD_ADDR_EXP 104
41014: PUSH
41015: EMPTY
41016: ST_TO_ADDR
// temp_people_running = [ ] ;
41017: LD_ADDR_EXP 166
41021: PUSH
41022: EMPTY
41023: ST_TO_ADDR
// Teleport_status = 1 ;
41024: LD_ADDR_EXP 112
41028: PUSH
41029: LD_INT 1
41031: ST_TO_ADDR
// Teleport_SaveVariable = - 2 ;
41032: LD_ADDR_EXP 115
41036: PUSH
41037: LD_INT 2
41039: NEG
41040: ST_TO_ADDR
// Teleportation_test = 0 ;
41041: LD_ADDR_EXP 113
41045: PUSH
41046: LD_INT 0
41048: ST_TO_ADDR
// teleporter_captured = false ;
41049: LD_ADDR_EXP 114
41053: PUSH
41054: LD_INT 0
41056: ST_TO_ADDR
// producing_the_attack = 0 ;
41057: LD_ADDR_EXP 118
41061: PUSH
41062: LD_INT 0
41064: ST_TO_ADDR
// teleport_attack_list = [ ] ;
41065: LD_ADDR_EXP 116
41069: PUSH
41070: EMPTY
41071: ST_TO_ADDR
// teleport_attack_people = [ ] ;
41072: LD_ADDR_EXP 117
41076: PUSH
41077: EMPTY
41078: ST_TO_ADDR
// att_count = 1 ;
41079: LD_ADDR_EXP 119
41083: PUSH
41084: LD_INT 1
41086: ST_TO_ADDR
// att_count = 2 ;
41087: LD_ADDR_EXP 119
41091: PUSH
41092: LD_INT 2
41094: ST_TO_ADDR
// att_detected_units = [ ] ;
41095: LD_ADDR_EXP 121
41099: PUSH
41100: EMPTY
41101: ST_TO_ADDR
// Teleport_bottomleft = Hexinfo ( 74 , 141 ) ;
41102: LD_ADDR_EXP 123
41106: PUSH
41107: LD_INT 74
41109: PPUSH
41110: LD_INT 141
41112: PPUSH
41113: CALL_OW 428
41117: ST_TO_ADDR
// Teleport_bottomright = Hexinfo ( 228 , 164 ) ;
41118: LD_ADDR_EXP 124
41122: PUSH
41123: LD_INT 228
41125: PPUSH
41126: LD_INT 164
41128: PPUSH
41129: CALL_OW 428
41133: ST_TO_ADDR
// Teleport_centre = Hexinfo ( 87 , 63 ) ;
41134: LD_ADDR_EXP 125
41138: PUSH
41139: LD_INT 87
41141: PPUSH
41142: LD_INT 63
41144: PPUSH
41145: CALL_OW 428
41149: ST_TO_ADDR
// Teleport_right = Hexinfo ( 182 , 96 ) ;
41150: LD_ADDR_EXP 126
41154: PUSH
41155: LD_INT 182
41157: PPUSH
41158: LD_INT 96
41160: PPUSH
41161: CALL_OW 428
41165: ST_TO_ADDR
// CratesPrepared = 0 ;
41166: LD_ADDR_EXP 127
41170: PUSH
41171: LD_INT 0
41173: ST_TO_ADDR
// OilPrepared = 0 ;
41174: LD_ADDR_EXP 128
41178: PUSH
41179: LD_INT 0
41181: ST_TO_ADDR
// SiberitePrepared = 0 ;
41182: LD_ADDR_EXP 129
41186: PUSH
41187: LD_INT 0
41189: ST_TO_ADDR
// EscortPrepared = [ ] ;
41190: LD_ADDR_EXP 130
41194: PUSH
41195: EMPTY
41196: ST_TO_ADDR
// CargosPrepared = [ ] ;
41197: LD_ADDR_EXP 132
41201: PUSH
41202: EMPTY
41203: ST_TO_ADDR
// EscortPeople = [ ] ;
41204: LD_ADDR_EXP 179
41208: PUSH
41209: EMPTY
41210: ST_TO_ADDR
// RescuePeople = [ ] ;
41211: LD_ADDR_EXP 180
41215: PUSH
41216: EMPTY
41217: ST_TO_ADDR
// Crates_min = [ 500 , 600 , 750 ] ;
41218: LD_ADDR_EXP 133
41222: PUSH
41223: LD_INT 500
41225: PUSH
41226: LD_INT 600
41228: PUSH
41229: LD_INT 750
41231: PUSH
41232: EMPTY
41233: LIST
41234: LIST
41235: LIST
41236: ST_TO_ADDR
// Oil_min = [ 0 , 0 , 0 ] ;
41237: LD_ADDR_EXP 135
41241: PUSH
41242: LD_INT 0
41244: PUSH
41245: LD_INT 0
41247: PUSH
41248: LD_INT 0
41250: PUSH
41251: EMPTY
41252: LIST
41253: LIST
41254: LIST
41255: ST_TO_ADDR
// Sib_min = [ 150 , 200 , 250 ] ;
41256: LD_ADDR_EXP 137
41260: PUSH
41261: LD_INT 150
41263: PUSH
41264: LD_INT 200
41266: PUSH
41267: LD_INT 250
41269: PUSH
41270: EMPTY
41271: LIST
41272: LIST
41273: LIST
41274: ST_TO_ADDR
// Crates_max = [ 1000 , 1250 , 1500 ] ;
41275: LD_ADDR_EXP 134
41279: PUSH
41280: LD_INT 1000
41282: PUSH
41283: LD_INT 1250
41285: PUSH
41286: LD_INT 1500
41288: PUSH
41289: EMPTY
41290: LIST
41291: LIST
41292: LIST
41293: ST_TO_ADDR
// Oil_max = [ 700 , 850 , 1000 ] ;
41294: LD_ADDR_EXP 136
41298: PUSH
41299: LD_INT 700
41301: PUSH
41302: LD_INT 850
41304: PUSH
41305: LD_INT 1000
41307: PUSH
41308: EMPTY
41309: LIST
41310: LIST
41311: LIST
41312: ST_TO_ADDR
// Sib_max = [ 350 , 400 , 500 ] ;
41313: LD_ADDR_EXP 138
41317: PUSH
41318: LD_INT 350
41320: PUSH
41321: LD_INT 400
41323: PUSH
41324: LD_INT 500
41326: PUSH
41327: EMPTY
41328: LIST
41329: LIST
41330: LIST
41331: ST_TO_ADDR
// escortmin = 4 ;
41332: LD_ADDR_EXP 139
41336: PUSH
41337: LD_INT 4
41339: ST_TO_ADDR
// PlayerMinimumPeople = 4 ;
41340: LD_ADDR_EXP 189
41344: PUSH
41345: LD_INT 4
41347: ST_TO_ADDR
// CrateTransportReady = 0 ;
41348: LD_ADDR_EXP 140
41352: PUSH
41353: LD_INT 0
41355: ST_TO_ADDR
// OilTransportReady = 0 ;
41356: LD_ADDR_EXP 141
41360: PUSH
41361: LD_INT 0
41363: ST_TO_ADDR
// SibTransportReady = 0 ;
41364: LD_ADDR_EXP 142
41368: PUSH
41369: LD_INT 0
41371: ST_TO_ADDR
// EscortReady = 0 ;
41372: LD_ADDR_EXP 143
41376: PUSH
41377: LD_INT 0
41379: ST_TO_ADDR
// Enable_Transport = 0 ;
41380: LD_ADDR_EXP 144
41384: PUSH
41385: LD_INT 0
41387: ST_TO_ADDR
// Query1_time = 0 ;
41388: LD_ADDR_EXP 145
41392: PUSH
41393: LD_INT 0
41395: ST_TO_ADDR
// deserting = [ ] ;
41396: LD_ADDR_EXP 152
41400: PUSH
41401: EMPTY
41402: ST_TO_ADDR
// all_waypoints = [ [ 134 , 69 ] , [ 134 , 83 ] , [ 126 , 91 ] , [ 116 , 95 ] , [ 98 , 93 ] , [ 79 , 94 ] , [ 63 , 94 ] , [ 48 , 94 ] ] ;
41403: LD_ADDR_EXP 153
41407: PUSH
41408: LD_INT 134
41410: PUSH
41411: LD_INT 69
41413: PUSH
41414: EMPTY
41415: LIST
41416: LIST
41417: PUSH
41418: LD_INT 134
41420: PUSH
41421: LD_INT 83
41423: PUSH
41424: EMPTY
41425: LIST
41426: LIST
41427: PUSH
41428: LD_INT 126
41430: PUSH
41431: LD_INT 91
41433: PUSH
41434: EMPTY
41435: LIST
41436: LIST
41437: PUSH
41438: LD_INT 116
41440: PUSH
41441: LD_INT 95
41443: PUSH
41444: EMPTY
41445: LIST
41446: LIST
41447: PUSH
41448: LD_INT 98
41450: PUSH
41451: LD_INT 93
41453: PUSH
41454: EMPTY
41455: LIST
41456: LIST
41457: PUSH
41458: LD_INT 79
41460: PUSH
41461: LD_INT 94
41463: PUSH
41464: EMPTY
41465: LIST
41466: LIST
41467: PUSH
41468: LD_INT 63
41470: PUSH
41471: LD_INT 94
41473: PUSH
41474: EMPTY
41475: LIST
41476: LIST
41477: PUSH
41478: LD_INT 48
41480: PUSH
41481: LD_INT 94
41483: PUSH
41484: EMPTY
41485: LIST
41486: LIST
41487: PUSH
41488: EMPTY
41489: LIST
41490: LIST
41491: LIST
41492: LIST
41493: LIST
41494: LIST
41495: LIST
41496: LIST
41497: ST_TO_ADDR
// con_way_heavy = [ [ [ 68 , 103 ] , [ 63 , 93 ] ] , [ [ 89 , 97 ] , [ 84 , 87 ] ] , [ [ 119 , 98 ] , [ 114 , 88 ] ] , [ [ 140 , 86 ] , [ 128 , 78 ] ] , [ [ 144 , 66 ] , [ 132 , 58 ] ] ] ;
41498: LD_ADDR_EXP 155
41502: PUSH
41503: LD_INT 68
41505: PUSH
41506: LD_INT 103
41508: PUSH
41509: EMPTY
41510: LIST
41511: LIST
41512: PUSH
41513: LD_INT 63
41515: PUSH
41516: LD_INT 93
41518: PUSH
41519: EMPTY
41520: LIST
41521: LIST
41522: PUSH
41523: EMPTY
41524: LIST
41525: LIST
41526: PUSH
41527: LD_INT 89
41529: PUSH
41530: LD_INT 97
41532: PUSH
41533: EMPTY
41534: LIST
41535: LIST
41536: PUSH
41537: LD_INT 84
41539: PUSH
41540: LD_INT 87
41542: PUSH
41543: EMPTY
41544: LIST
41545: LIST
41546: PUSH
41547: EMPTY
41548: LIST
41549: LIST
41550: PUSH
41551: LD_INT 119
41553: PUSH
41554: LD_INT 98
41556: PUSH
41557: EMPTY
41558: LIST
41559: LIST
41560: PUSH
41561: LD_INT 114
41563: PUSH
41564: LD_INT 88
41566: PUSH
41567: EMPTY
41568: LIST
41569: LIST
41570: PUSH
41571: EMPTY
41572: LIST
41573: LIST
41574: PUSH
41575: LD_INT 140
41577: PUSH
41578: LD_INT 86
41580: PUSH
41581: EMPTY
41582: LIST
41583: LIST
41584: PUSH
41585: LD_INT 128
41587: PUSH
41588: LD_INT 78
41590: PUSH
41591: EMPTY
41592: LIST
41593: LIST
41594: PUSH
41595: EMPTY
41596: LIST
41597: LIST
41598: PUSH
41599: LD_INT 144
41601: PUSH
41602: LD_INT 66
41604: PUSH
41605: EMPTY
41606: LIST
41607: LIST
41608: PUSH
41609: LD_INT 132
41611: PUSH
41612: LD_INT 58
41614: PUSH
41615: EMPTY
41616: LIST
41617: LIST
41618: PUSH
41619: EMPTY
41620: LIST
41621: LIST
41622: PUSH
41623: EMPTY
41624: LIST
41625: LIST
41626: LIST
41627: LIST
41628: LIST
41629: ST_TO_ADDR
// con_way_vehs = [ [ [ 69 , 100 ] , [ 67 , 96 ] , [ 64 , 104 ] , [ 58 , 92 ] , [ 57 , 104 ] , [ 51 , 92 ] ] , [ [ 90 , 94 ] , [ 88 , 90 ] , [ 85 , 98 ] , [ 79 , 86 ] , [ 78 , 98 ] , [ 72 , 86 ] ] , [ [ 120 , 95 ] , [ 118 , 91 ] , [ 115 , 99 ] , [ 109 , 87 ] , [ 108 , 99 ] , [ 102 , 87 ] ] , [ [ 136 , 79 ] , [ 132 , 76 ] , [ 138 , 89 ] , [ 126 , 81 ] , [ 136 , 94 ] , [ 125 , 86 ] ] , [ [ 140 , 59 ] , [ 136 , 56 ] , [ 142 , 69 ] , [ 130 , 61 ] , [ 140 , 74 ] , [ 129 , 66 ] ] ] ;
41630: LD_ADDR_EXP 156
41634: PUSH
41635: LD_INT 69
41637: PUSH
41638: LD_INT 100
41640: PUSH
41641: EMPTY
41642: LIST
41643: LIST
41644: PUSH
41645: LD_INT 67
41647: PUSH
41648: LD_INT 96
41650: PUSH
41651: EMPTY
41652: LIST
41653: LIST
41654: PUSH
41655: LD_INT 64
41657: PUSH
41658: LD_INT 104
41660: PUSH
41661: EMPTY
41662: LIST
41663: LIST
41664: PUSH
41665: LD_INT 58
41667: PUSH
41668: LD_INT 92
41670: PUSH
41671: EMPTY
41672: LIST
41673: LIST
41674: PUSH
41675: LD_INT 57
41677: PUSH
41678: LD_INT 104
41680: PUSH
41681: EMPTY
41682: LIST
41683: LIST
41684: PUSH
41685: LD_INT 51
41687: PUSH
41688: LD_INT 92
41690: PUSH
41691: EMPTY
41692: LIST
41693: LIST
41694: PUSH
41695: EMPTY
41696: LIST
41697: LIST
41698: LIST
41699: LIST
41700: LIST
41701: LIST
41702: PUSH
41703: LD_INT 90
41705: PUSH
41706: LD_INT 94
41708: PUSH
41709: EMPTY
41710: LIST
41711: LIST
41712: PUSH
41713: LD_INT 88
41715: PUSH
41716: LD_INT 90
41718: PUSH
41719: EMPTY
41720: LIST
41721: LIST
41722: PUSH
41723: LD_INT 85
41725: PUSH
41726: LD_INT 98
41728: PUSH
41729: EMPTY
41730: LIST
41731: LIST
41732: PUSH
41733: LD_INT 79
41735: PUSH
41736: LD_INT 86
41738: PUSH
41739: EMPTY
41740: LIST
41741: LIST
41742: PUSH
41743: LD_INT 78
41745: PUSH
41746: LD_INT 98
41748: PUSH
41749: EMPTY
41750: LIST
41751: LIST
41752: PUSH
41753: LD_INT 72
41755: PUSH
41756: LD_INT 86
41758: PUSH
41759: EMPTY
41760: LIST
41761: LIST
41762: PUSH
41763: EMPTY
41764: LIST
41765: LIST
41766: LIST
41767: LIST
41768: LIST
41769: LIST
41770: PUSH
41771: LD_INT 120
41773: PUSH
41774: LD_INT 95
41776: PUSH
41777: EMPTY
41778: LIST
41779: LIST
41780: PUSH
41781: LD_INT 118
41783: PUSH
41784: LD_INT 91
41786: PUSH
41787: EMPTY
41788: LIST
41789: LIST
41790: PUSH
41791: LD_INT 115
41793: PUSH
41794: LD_INT 99
41796: PUSH
41797: EMPTY
41798: LIST
41799: LIST
41800: PUSH
41801: LD_INT 109
41803: PUSH
41804: LD_INT 87
41806: PUSH
41807: EMPTY
41808: LIST
41809: LIST
41810: PUSH
41811: LD_INT 108
41813: PUSH
41814: LD_INT 99
41816: PUSH
41817: EMPTY
41818: LIST
41819: LIST
41820: PUSH
41821: LD_INT 102
41823: PUSH
41824: LD_INT 87
41826: PUSH
41827: EMPTY
41828: LIST
41829: LIST
41830: PUSH
41831: EMPTY
41832: LIST
41833: LIST
41834: LIST
41835: LIST
41836: LIST
41837: LIST
41838: PUSH
41839: LD_INT 136
41841: PUSH
41842: LD_INT 79
41844: PUSH
41845: EMPTY
41846: LIST
41847: LIST
41848: PUSH
41849: LD_INT 132
41851: PUSH
41852: LD_INT 76
41854: PUSH
41855: EMPTY
41856: LIST
41857: LIST
41858: PUSH
41859: LD_INT 138
41861: PUSH
41862: LD_INT 89
41864: PUSH
41865: EMPTY
41866: LIST
41867: LIST
41868: PUSH
41869: LD_INT 126
41871: PUSH
41872: LD_INT 81
41874: PUSH
41875: EMPTY
41876: LIST
41877: LIST
41878: PUSH
41879: LD_INT 136
41881: PUSH
41882: LD_INT 94
41884: PUSH
41885: EMPTY
41886: LIST
41887: LIST
41888: PUSH
41889: LD_INT 125
41891: PUSH
41892: LD_INT 86
41894: PUSH
41895: EMPTY
41896: LIST
41897: LIST
41898: PUSH
41899: EMPTY
41900: LIST
41901: LIST
41902: LIST
41903: LIST
41904: LIST
41905: LIST
41906: PUSH
41907: LD_INT 140
41909: PUSH
41910: LD_INT 59
41912: PUSH
41913: EMPTY
41914: LIST
41915: LIST
41916: PUSH
41917: LD_INT 136
41919: PUSH
41920: LD_INT 56
41922: PUSH
41923: EMPTY
41924: LIST
41925: LIST
41926: PUSH
41927: LD_INT 142
41929: PUSH
41930: LD_INT 69
41932: PUSH
41933: EMPTY
41934: LIST
41935: LIST
41936: PUSH
41937: LD_INT 130
41939: PUSH
41940: LD_INT 61
41942: PUSH
41943: EMPTY
41944: LIST
41945: LIST
41946: PUSH
41947: LD_INT 140
41949: PUSH
41950: LD_INT 74
41952: PUSH
41953: EMPTY
41954: LIST
41955: LIST
41956: PUSH
41957: LD_INT 129
41959: PUSH
41960: LD_INT 66
41962: PUSH
41963: EMPTY
41964: LIST
41965: LIST
41966: PUSH
41967: EMPTY
41968: LIST
41969: LIST
41970: LIST
41971: LIST
41972: LIST
41973: LIST
41974: PUSH
41975: EMPTY
41976: LIST
41977: LIST
41978: LIST
41979: LIST
41980: LIST
41981: ST_TO_ADDR
// con_way_cargos = [ [ [ 66 , 100 ] , [ 64 , 96 ] , [ 63 , 100 ] , [ 61 , 96 ] , [ 60 , 100 ] , [ 58 , 96 ] , [ 57 , 100 ] , [ 55 , 96 ] ] , [ [ 87 , 94 ] , [ 85 , 90 ] , [ 84 , 94 ] , [ 82 , 90 ] , [ 81 , 94 ] , [ 79 , 90 ] , [ 78 , 94 ] , [ 76 , 90 ] ] , [ [ 117 , 95 ] , [ 115 , 91 ] , [ 114 , 95 ] , [ 112 , 91 ] , [ 111 , 95 ] , [ 109 , 91 ] , [ 108 , 95 ] , [ 106 , 91 ] ] , [ [ 135 , 82 ] , [ 132 , 80 ] , [ 134 , 84 ] , [ 131 , 82 ] , [ 134 , 87 ] , [ 131 , 85 ] , [ 133 , 89 ] , [ 130 , 87 ] ] , [ [ 139 , 62 ] , [ 136 , 60 ] , [ 138 , 64 ] , [ 135 , 62 ] , [ 138 , 67 ] , [ 135 , 65 ] , [ 137 , 69 ] , [ 134 , 67 ] ] ] ;
41982: LD_ADDR_EXP 157
41986: PUSH
41987: LD_INT 66
41989: PUSH
41990: LD_INT 100
41992: PUSH
41993: EMPTY
41994: LIST
41995: LIST
41996: PUSH
41997: LD_INT 64
41999: PUSH
42000: LD_INT 96
42002: PUSH
42003: EMPTY
42004: LIST
42005: LIST
42006: PUSH
42007: LD_INT 63
42009: PUSH
42010: LD_INT 100
42012: PUSH
42013: EMPTY
42014: LIST
42015: LIST
42016: PUSH
42017: LD_INT 61
42019: PUSH
42020: LD_INT 96
42022: PUSH
42023: EMPTY
42024: LIST
42025: LIST
42026: PUSH
42027: LD_INT 60
42029: PUSH
42030: LD_INT 100
42032: PUSH
42033: EMPTY
42034: LIST
42035: LIST
42036: PUSH
42037: LD_INT 58
42039: PUSH
42040: LD_INT 96
42042: PUSH
42043: EMPTY
42044: LIST
42045: LIST
42046: PUSH
42047: LD_INT 57
42049: PUSH
42050: LD_INT 100
42052: PUSH
42053: EMPTY
42054: LIST
42055: LIST
42056: PUSH
42057: LD_INT 55
42059: PUSH
42060: LD_INT 96
42062: PUSH
42063: EMPTY
42064: LIST
42065: LIST
42066: PUSH
42067: EMPTY
42068: LIST
42069: LIST
42070: LIST
42071: LIST
42072: LIST
42073: LIST
42074: LIST
42075: LIST
42076: PUSH
42077: LD_INT 87
42079: PUSH
42080: LD_INT 94
42082: PUSH
42083: EMPTY
42084: LIST
42085: LIST
42086: PUSH
42087: LD_INT 85
42089: PUSH
42090: LD_INT 90
42092: PUSH
42093: EMPTY
42094: LIST
42095: LIST
42096: PUSH
42097: LD_INT 84
42099: PUSH
42100: LD_INT 94
42102: PUSH
42103: EMPTY
42104: LIST
42105: LIST
42106: PUSH
42107: LD_INT 82
42109: PUSH
42110: LD_INT 90
42112: PUSH
42113: EMPTY
42114: LIST
42115: LIST
42116: PUSH
42117: LD_INT 81
42119: PUSH
42120: LD_INT 94
42122: PUSH
42123: EMPTY
42124: LIST
42125: LIST
42126: PUSH
42127: LD_INT 79
42129: PUSH
42130: LD_INT 90
42132: PUSH
42133: EMPTY
42134: LIST
42135: LIST
42136: PUSH
42137: LD_INT 78
42139: PUSH
42140: LD_INT 94
42142: PUSH
42143: EMPTY
42144: LIST
42145: LIST
42146: PUSH
42147: LD_INT 76
42149: PUSH
42150: LD_INT 90
42152: PUSH
42153: EMPTY
42154: LIST
42155: LIST
42156: PUSH
42157: EMPTY
42158: LIST
42159: LIST
42160: LIST
42161: LIST
42162: LIST
42163: LIST
42164: LIST
42165: LIST
42166: PUSH
42167: LD_INT 117
42169: PUSH
42170: LD_INT 95
42172: PUSH
42173: EMPTY
42174: LIST
42175: LIST
42176: PUSH
42177: LD_INT 115
42179: PUSH
42180: LD_INT 91
42182: PUSH
42183: EMPTY
42184: LIST
42185: LIST
42186: PUSH
42187: LD_INT 114
42189: PUSH
42190: LD_INT 95
42192: PUSH
42193: EMPTY
42194: LIST
42195: LIST
42196: PUSH
42197: LD_INT 112
42199: PUSH
42200: LD_INT 91
42202: PUSH
42203: EMPTY
42204: LIST
42205: LIST
42206: PUSH
42207: LD_INT 111
42209: PUSH
42210: LD_INT 95
42212: PUSH
42213: EMPTY
42214: LIST
42215: LIST
42216: PUSH
42217: LD_INT 109
42219: PUSH
42220: LD_INT 91
42222: PUSH
42223: EMPTY
42224: LIST
42225: LIST
42226: PUSH
42227: LD_INT 108
42229: PUSH
42230: LD_INT 95
42232: PUSH
42233: EMPTY
42234: LIST
42235: LIST
42236: PUSH
42237: LD_INT 106
42239: PUSH
42240: LD_INT 91
42242: PUSH
42243: EMPTY
42244: LIST
42245: LIST
42246: PUSH
42247: EMPTY
42248: LIST
42249: LIST
42250: LIST
42251: LIST
42252: LIST
42253: LIST
42254: LIST
42255: LIST
42256: PUSH
42257: LD_INT 135
42259: PUSH
42260: LD_INT 82
42262: PUSH
42263: EMPTY
42264: LIST
42265: LIST
42266: PUSH
42267: LD_INT 132
42269: PUSH
42270: LD_INT 80
42272: PUSH
42273: EMPTY
42274: LIST
42275: LIST
42276: PUSH
42277: LD_INT 134
42279: PUSH
42280: LD_INT 84
42282: PUSH
42283: EMPTY
42284: LIST
42285: LIST
42286: PUSH
42287: LD_INT 131
42289: PUSH
42290: LD_INT 82
42292: PUSH
42293: EMPTY
42294: LIST
42295: LIST
42296: PUSH
42297: LD_INT 134
42299: PUSH
42300: LD_INT 87
42302: PUSH
42303: EMPTY
42304: LIST
42305: LIST
42306: PUSH
42307: LD_INT 131
42309: PUSH
42310: LD_INT 85
42312: PUSH
42313: EMPTY
42314: LIST
42315: LIST
42316: PUSH
42317: LD_INT 133
42319: PUSH
42320: LD_INT 89
42322: PUSH
42323: EMPTY
42324: LIST
42325: LIST
42326: PUSH
42327: LD_INT 130
42329: PUSH
42330: LD_INT 87
42332: PUSH
42333: EMPTY
42334: LIST
42335: LIST
42336: PUSH
42337: EMPTY
42338: LIST
42339: LIST
42340: LIST
42341: LIST
42342: LIST
42343: LIST
42344: LIST
42345: LIST
42346: PUSH
42347: LD_INT 139
42349: PUSH
42350: LD_INT 62
42352: PUSH
42353: EMPTY
42354: LIST
42355: LIST
42356: PUSH
42357: LD_INT 136
42359: PUSH
42360: LD_INT 60
42362: PUSH
42363: EMPTY
42364: LIST
42365: LIST
42366: PUSH
42367: LD_INT 138
42369: PUSH
42370: LD_INT 64
42372: PUSH
42373: EMPTY
42374: LIST
42375: LIST
42376: PUSH
42377: LD_INT 135
42379: PUSH
42380: LD_INT 62
42382: PUSH
42383: EMPTY
42384: LIST
42385: LIST
42386: PUSH
42387: LD_INT 138
42389: PUSH
42390: LD_INT 67
42392: PUSH
42393: EMPTY
42394: LIST
42395: LIST
42396: PUSH
42397: LD_INT 135
42399: PUSH
42400: LD_INT 65
42402: PUSH
42403: EMPTY
42404: LIST
42405: LIST
42406: PUSH
42407: LD_INT 137
42409: PUSH
42410: LD_INT 69
42412: PUSH
42413: EMPTY
42414: LIST
42415: LIST
42416: PUSH
42417: LD_INT 134
42419: PUSH
42420: LD_INT 67
42422: PUSH
42423: EMPTY
42424: LIST
42425: LIST
42426: PUSH
42427: EMPTY
42428: LIST
42429: LIST
42430: LIST
42431: LIST
42432: LIST
42433: LIST
42434: LIST
42435: LIST
42436: PUSH
42437: EMPTY
42438: LIST
42439: LIST
42440: LIST
42441: LIST
42442: LIST
42443: ST_TO_ADDR
// con_waypoint_counter = 1 ;
42444: LD_ADDR_EXP 158
42448: PUSH
42449: LD_INT 1
42451: ST_TO_ADDR
// FinalCountdown = [ 15 15$0 , 12 12$0 , 9 9$0 ] [ difficulty ] ;
42452: LD_ADDR_EXP 181
42456: PUSH
42457: LD_INT 31500
42459: PUSH
42460: LD_INT 25200
42462: PUSH
42463: LD_INT 18900
42465: PUSH
42466: EMPTY
42467: LIST
42468: LIST
42469: LIST
42470: PUSH
42471: LD_OWVAR 67
42475: ARRAY
42476: ST_TO_ADDR
// MainBuildings = [ ] ;
42477: LD_ADDR_EXP 184
42481: PUSH
42482: EMPTY
42483: ST_TO_ADDR
// MinorBuildings = [ ] ;
42484: LD_ADDR_EXP 185
42488: PUSH
42489: EMPTY
42490: ST_TO_ADDR
// RussianPeople = [ ] ;
42491: LD_ADDR_EXP 186
42495: PUSH
42496: EMPTY
42497: ST_TO_ADDR
// destruction_status = 0 ;
42498: LD_ADDR_EXP 161
42502: PUSH
42503: LD_INT 0
42505: ST_TO_ADDR
// disable ( 1 ) ;
42506: LD_INT 1
42508: DISABLE_MARKED
// disable ( 2 ) ;
42509: LD_INT 2
42511: DISABLE_MARKED
// disable ( 3 ) ;
42512: LD_INT 3
42514: DISABLE_MARKED
// PrepareSides ;
42515: CALL 42914 0 0
// PrepareNature ;
42519: CALL 43107 0 0
// PreparePlayer ;
42523: CALL 43821 0 0
// ScanBuildings ;
42527: CALL 49336 0 0
// Action ;
42531: CALL 64202 0 0
// PrepareComputerSides = 1 ;
42535: LD_ADDR_EXP 187
42539: PUSH
42540: LD_INT 1
42542: ST_TO_ADDR
// end ;
42543: END
// function Initiate_ai_contact_time ; var i ; begin
42544: LD_INT 0
42546: PPUSH
42547: PPUSH
// ai_contact_time = [ ] ;
42548: LD_ADDR_EXP 102
42552: PUSH
42553: EMPTY
42554: ST_TO_ADDR
// for i = 1 to 8 do
42555: LD_ADDR_VAR 0 2
42559: PUSH
42560: DOUBLE
42561: LD_INT 1
42563: DEC
42564: ST_TO_ADDR
42565: LD_INT 8
42567: PUSH
42568: FOR_TO
42569: IFFALSE 42621
// ai_contact_time = ai_contact_time ^ [ [ 100000 , 100000 , 100000 , 100000 , 100000 , 100000 , 100000 , 100000 ] ] ;
42571: LD_ADDR_EXP 102
42575: PUSH
42576: LD_EXP 102
42580: PUSH
42581: LD_INT 100000
42583: PUSH
42584: LD_INT 100000
42586: PUSH
42587: LD_INT 100000
42589: PUSH
42590: LD_INT 100000
42592: PUSH
42593: LD_INT 100000
42595: PUSH
42596: LD_INT 100000
42598: PUSH
42599: LD_INT 100000
42601: PUSH
42602: LD_INT 100000
42604: PUSH
42605: EMPTY
42606: LIST
42607: LIST
42608: LIST
42609: LIST
42610: LIST
42611: LIST
42612: LIST
42613: LIST
42614: PUSH
42615: EMPTY
42616: LIST
42617: ADD
42618: ST_TO_ADDR
42619: GO 42568
42621: POP
42622: POP
// end ;
42623: LD_VAR 0 1
42627: RET
// function Initiate_ai_sib_bomb_used_time_matrix ; var base ; begin
42628: LD_INT 0
42630: PPUSH
42631: PPUSH
// ai_sib_bomb_used_time_matrix = [ ] ;
42632: LD_ADDR_EXP 105
42636: PUSH
42637: EMPTY
42638: ST_TO_ADDR
// for base in ai_bases do
42639: LD_ADDR_VAR 0 2
42643: PUSH
42644: LD_EXP 29
42648: PUSH
42649: FOR_IN
42650: IFFALSE 42710
// ai_sib_bomb_used_time_matrix = ai_sib_bomb_used_time_matrix ^ [ [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ] ;
42652: LD_ADDR_EXP 105
42656: PUSH
42657: LD_EXP 105
42661: PUSH
42662: LD_INT 1
42664: NEG
42665: PUSH
42666: LD_INT 1
42668: NEG
42669: PUSH
42670: LD_INT 1
42672: NEG
42673: PUSH
42674: LD_INT 1
42676: NEG
42677: PUSH
42678: LD_INT 1
42680: NEG
42681: PUSH
42682: LD_INT 1
42684: NEG
42685: PUSH
42686: LD_INT 1
42688: NEG
42689: PUSH
42690: LD_INT 1
42692: NEG
42693: PUSH
42694: EMPTY
42695: LIST
42696: LIST
42697: LIST
42698: LIST
42699: LIST
42700: LIST
42701: LIST
42702: LIST
42703: PUSH
42704: EMPTY
42705: LIST
42706: ADD
42707: ST_TO_ADDR
42708: GO 42649
42710: POP
42711: POP
// end ;
42712: LD_VAR 0 1
42716: RET
// function InitiateTimeShiftData ; var side ; begin
42717: LD_INT 0
42719: PPUSH
42720: PPUSH
// for side = 1 to 8 do
42721: LD_ADDR_VAR 0 2
42725: PUSH
42726: DOUBLE
42727: LD_INT 1
42729: DEC
42730: ST_TO_ADDR
42731: LD_INT 8
42733: PUSH
42734: FOR_TO
42735: IFFALSE 42907
// if Researched ( side , tech_st3 ) then
42737: LD_VAR 0 2
42741: PPUSH
42742: LD_INT 65
42744: PPUSH
42745: CALL_OW 325
42749: IFFALSE 42783
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 420 , 10 ] ) else
42751: LD_ADDR_EXP 99
42755: PUSH
42756: LD_EXP 99
42760: PPUSH
42761: LD_VAR 0 2
42765: PPUSH
42766: LD_INT 420
42768: PUSH
42769: LD_INT 10
42771: PUSH
42772: EMPTY
42773: LIST
42774: LIST
42775: PPUSH
42776: CALL_OW 1
42780: ST_TO_ADDR
42781: GO 42905
// if Researched ( side , tech_st2 ) then
42783: LD_VAR 0 2
42787: PPUSH
42788: LD_INT 64
42790: PPUSH
42791: CALL_OW 325
42795: IFFALSE 42829
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 420 , 10 ] ) else
42797: LD_ADDR_EXP 99
42801: PUSH
42802: LD_EXP 99
42806: PPUSH
42807: LD_VAR 0 2
42811: PPUSH
42812: LD_INT 420
42814: PUSH
42815: LD_INT 10
42817: PUSH
42818: EMPTY
42819: LIST
42820: LIST
42821: PPUSH
42822: CALL_OW 1
42826: ST_TO_ADDR
42827: GO 42905
// if Researched ( side , tech_st1 ) then
42829: LD_VAR 0 2
42833: PPUSH
42834: LD_INT 63
42836: PPUSH
42837: CALL_OW 325
42841: IFFALSE 42875
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 320 , 7 ] ) else
42843: LD_ADDR_EXP 99
42847: PUSH
42848: LD_EXP 99
42852: PPUSH
42853: LD_VAR 0 2
42857: PPUSH
42858: LD_INT 320
42860: PUSH
42861: LD_INT 7
42863: PUSH
42864: EMPTY
42865: LIST
42866: LIST
42867: PPUSH
42868: CALL_OW 1
42872: ST_TO_ADDR
42873: GO 42905
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 215 , 4 ] ) ;
42875: LD_ADDR_EXP 99
42879: PUSH
42880: LD_EXP 99
42884: PPUSH
42885: LD_VAR 0 2
42889: PPUSH
42890: LD_INT 215
42892: PUSH
42893: LD_INT 4
42895: PUSH
42896: EMPTY
42897: LIST
42898: LIST
42899: PPUSH
42900: CALL_OW 1
42904: ST_TO_ADDR
42905: GO 42734
42907: POP
42908: POP
// end ;
42909: LD_VAR 0 1
42913: RET
// function PrepareSides ; var legion ; begin
42914: LD_INT 0
42916: PPUSH
42917: PPUSH
// nature = 0 ;
42918: LD_ADDR_EXP 6
42922: PUSH
42923: LD_INT 0
42925: ST_TO_ADDR
// russians = 3 ;
42926: LD_ADDR_EXP 5
42930: PUSH
42931: LD_INT 3
42933: ST_TO_ADDR
// russians_alt = 6 ;
42934: LD_ADDR_EXP 10
42938: PUSH
42939: LD_INT 6
42941: ST_TO_ADDR
// Legion = 8 ;
42942: LD_ADDR_VAR 0 2
42946: PUSH
42947: LD_INT 8
42949: ST_TO_ADDR
// alliance = 7 ;
42950: LD_ADDR_EXP 7
42954: PUSH
42955: LD_INT 7
42957: ST_TO_ADDR
// you = 2 ;
42958: LD_ADDR_EXP 4
42962: PUSH
42963: LD_INT 2
42965: ST_TO_ADDR
// arabians = 5 ;
42966: LD_ADDR_EXP 8
42970: PUSH
42971: LD_INT 5
42973: ST_TO_ADDR
// mines_side = 0 ;
42974: LD_ADDR_EXP 11
42978: PUSH
42979: LD_INT 0
42981: ST_TO_ADDR
// SetAttitude ( russians , russians_alt , att_friend , true ) ;
42982: LD_EXP 5
42986: PPUSH
42987: LD_EXP 10
42991: PPUSH
42992: LD_INT 1
42994: PPUSH
42995: LD_INT 1
42997: PPUSH
42998: CALL_OW 80
// SetAttitude ( russians , alliance , att_enemy , true ) ;
43002: LD_EXP 5
43006: PPUSH
43007: LD_EXP 7
43011: PPUSH
43012: LD_INT 2
43014: PPUSH
43015: LD_INT 1
43017: PPUSH
43018: CALL_OW 80
// SetAttitude ( russians , you , att_enemy , true ) ;
43022: LD_EXP 5
43026: PPUSH
43027: LD_EXP 4
43031: PPUSH
43032: LD_INT 2
43034: PPUSH
43035: LD_INT 1
43037: PPUSH
43038: CALL_OW 80
// SetAttitude ( alliance , you , att_neutral , true ) ;
43042: LD_EXP 7
43046: PPUSH
43047: LD_EXP 4
43051: PPUSH
43052: LD_INT 0
43054: PPUSH
43055: LD_INT 1
43057: PPUSH
43058: CALL_OW 80
// SetAttitude ( Legion , you , att_friend , true ) ;
43062: LD_VAR 0 2
43066: PPUSH
43067: LD_EXP 4
43071: PPUSH
43072: LD_INT 1
43074: PPUSH
43075: LD_INT 1
43077: PPUSH
43078: CALL_OW 80
// SetAttitude ( arabians , you , att_friend , true ) ;
43082: LD_EXP 8
43086: PPUSH
43087: LD_EXP 4
43091: PPUSH
43092: LD_INT 1
43094: PPUSH
43095: LD_INT 1
43097: PPUSH
43098: CALL_OW 80
// end ;
43102: LD_VAR 0 1
43106: RET
// function PrepareNature ; var i , spots , num , agres , count , area ; begin
43107: LD_INT 0
43109: PPUSH
43110: PPUSH
43111: PPUSH
43112: PPUSH
43113: PPUSH
43114: PPUSH
43115: PPUSH
// InitUc ;
43116: CALL_OW 18
// InitHc ;
43120: CALL_OW 19
// uc_side = nature ;
43124: LD_ADDR_OWVAR 20
43128: PUSH
43129: LD_EXP 6
43133: ST_TO_ADDR
// uc_nation = nation_nature ;
43134: LD_ADDR_OWVAR 21
43138: PUSH
43139: LD_INT 0
43141: ST_TO_ADDR
// agres = - 10 + difficulty * 20 ;
43142: LD_ADDR_VAR 0 5
43146: PUSH
43147: LD_INT 10
43149: NEG
43150: PUSH
43151: LD_OWVAR 67
43155: PUSH
43156: LD_INT 20
43158: MUL
43159: PLUS
43160: ST_TO_ADDR
// hc_class = class_apeman ;
43161: LD_ADDR_OWVAR 28
43165: PUSH
43166: LD_INT 12
43168: ST_TO_ADDR
// for i = 1 to 3 do
43169: LD_ADDR_VAR 0 2
43173: PUSH
43174: DOUBLE
43175: LD_INT 1
43177: DEC
43178: ST_TO_ADDR
43179: LD_INT 3
43181: PUSH
43182: FOR_TO
43183: IFFALSE 43359
// begin if i < 3 then
43185: LD_VAR 0 2
43189: PUSH
43190: LD_INT 3
43192: LESS
43193: IFFALSE 43205
// area = ape_area1 else
43195: LD_ADDR_VAR 0 7
43199: PUSH
43200: LD_INT 30
43202: ST_TO_ADDR
43203: GO 43213
// area = ape_area2 ;
43205: LD_ADDR_VAR 0 7
43209: PUSH
43210: LD_INT 31
43212: ST_TO_ADDR
// uc_direction = Rand ( 0 , 5 ) ;
43213: LD_ADDR_OWVAR 24
43217: PUSH
43218: LD_INT 0
43220: PPUSH
43221: LD_INT 5
43223: PPUSH
43224: CALL_OW 12
43228: ST_TO_ADDR
// hc_agressivity = Rand ( - 1 * agres , agres ) ;
43229: LD_ADDR_OWVAR 35
43233: PUSH
43234: LD_INT 1
43236: NEG
43237: PUSH
43238: LD_VAR 0 5
43242: MUL
43243: PPUSH
43244: LD_VAR 0 5
43248: PPUSH
43249: CALL_OW 12
43253: ST_TO_ADDR
// hc_attr = [ Rand ( 11 , 13 ) , Rand ( 10 , 11 ) ] ;
43254: LD_ADDR_OWVAR 29
43258: PUSH
43259: LD_INT 11
43261: PPUSH
43262: LD_INT 13
43264: PPUSH
43265: CALL_OW 12
43269: PUSH
43270: LD_INT 10
43272: PPUSH
43273: LD_INT 11
43275: PPUSH
43276: CALL_OW 12
43280: PUSH
43281: EMPTY
43282: LIST
43283: LIST
43284: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
43285: LD_ADDR_OWVAR 27
43289: PUSH
43290: LD_INT 1
43292: PPUSH
43293: LD_INT 2
43295: PPUSH
43296: CALL_OW 12
43300: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 1 ) , Rand ( 0 , 1 ) , 0 , 0 ] ;
43301: LD_ADDR_OWVAR 31
43305: PUSH
43306: LD_INT 0
43308: PPUSH
43309: LD_INT 1
43311: PPUSH
43312: CALL_OW 12
43316: PUSH
43317: LD_INT 0
43319: PPUSH
43320: LD_INT 1
43322: PPUSH
43323: CALL_OW 12
43327: PUSH
43328: LD_INT 0
43330: PUSH
43331: LD_INT 0
43333: PUSH
43334: EMPTY
43335: LIST
43336: LIST
43337: LIST
43338: LIST
43339: ST_TO_ADDR
// PlaceUnitarea ( CreateHuman , area , false ) ;
43340: CALL_OW 44
43344: PPUSH
43345: LD_VAR 0 7
43349: PPUSH
43350: LD_INT 0
43352: PPUSH
43353: CALL_OW 49
// end ;
43357: GO 43182
43359: POP
43360: POP
// hc_class = class_phororhacos ;
43361: LD_ADDR_OWVAR 28
43365: PUSH
43366: LD_INT 18
43368: ST_TO_ADDR
// hc_gallery = nature_foreg ;
43369: LD_ADDR_OWVAR 33
43373: PUSH
43374: LD_STRING nature_foreg
43376: ST_TO_ADDR
// hc_face_number = 1 ;
43377: LD_ADDR_OWVAR 34
43381: PUSH
43382: LD_INT 1
43384: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
43385: LD_ADDR_OWVAR 31
43389: PUSH
43390: LD_INT 0
43392: PUSH
43393: LD_INT 0
43395: PUSH
43396: LD_INT 0
43398: PUSH
43399: LD_INT 0
43401: PUSH
43402: EMPTY
43403: LIST
43404: LIST
43405: LIST
43406: LIST
43407: ST_TO_ADDR
// for i = 1 to 2 do
43408: LD_ADDR_VAR 0 2
43412: PUSH
43413: DOUBLE
43414: LD_INT 1
43416: DEC
43417: ST_TO_ADDR
43418: LD_INT 2
43420: PUSH
43421: FOR_TO
43422: IFFALSE 43505
// begin uc_direction = Rand ( 0 , 5 ) ;
43424: LD_ADDR_OWVAR 24
43428: PUSH
43429: LD_INT 0
43431: PPUSH
43432: LD_INT 5
43434: PPUSH
43435: CALL_OW 12
43439: ST_TO_ADDR
// hc_agressivity = Rand ( - 30 , 0 ) ;
43440: LD_ADDR_OWVAR 35
43444: PUSH
43445: LD_INT 30
43447: NEG
43448: PPUSH
43449: LD_INT 0
43451: PPUSH
43452: CALL_OW 12
43456: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 10 ) , Rand ( 11 , 12 ) ] ;
43457: LD_ADDR_OWVAR 29
43461: PUSH
43462: LD_INT 9
43464: PPUSH
43465: LD_INT 10
43467: PPUSH
43468: CALL_OW 12
43472: PUSH
43473: LD_INT 11
43475: PPUSH
43476: LD_INT 12
43478: PPUSH
43479: CALL_OW 12
43483: PUSH
43484: EMPTY
43485: LIST
43486: LIST
43487: ST_TO_ADDR
// PlaceUnitArea ( CreateHuman , Ape_area1 , false ) ;
43488: CALL_OW 44
43492: PPUSH
43493: LD_INT 30
43495: PPUSH
43496: LD_INT 0
43498: PPUSH
43499: CALL_OW 49
// end ;
43503: GO 43421
43505: POP
43506: POP
// end ;
43507: LD_VAR 0 1
43511: RET
// every 0 0$1 marked 1 do var i , agres , area ;
43512: GO 43514
43514: DISABLE
43515: LD_INT 0
43517: PPUSH
43518: PPUSH
43519: PPUSH
// begin Randomize ;
43520: CALL_OW 10
// repeat wait ( rand ( 2 2$30 , 3 3$30 ) ) ;
43524: LD_INT 5250
43526: PPUSH
43527: LD_INT 7350
43529: PPUSH
43530: CALL_OW 12
43534: PPUSH
43535: CALL_OW 67
// if FilterAllUnits ( [ [ f_class , class_apeman ] , [ f_side , 0 ] ] ) > [ 14 , 17 , 20 ] [ difficulty ] then
43539: LD_INT 25
43541: PUSH
43542: LD_INT 12
43544: PUSH
43545: EMPTY
43546: LIST
43547: LIST
43548: PUSH
43549: LD_INT 22
43551: PUSH
43552: LD_INT 0
43554: PUSH
43555: EMPTY
43556: LIST
43557: LIST
43558: PUSH
43559: EMPTY
43560: LIST
43561: LIST
43562: PPUSH
43563: CALL_OW 69
43567: PUSH
43568: LD_INT 14
43570: PUSH
43571: LD_INT 17
43573: PUSH
43574: LD_INT 20
43576: PUSH
43577: EMPTY
43578: LIST
43579: LIST
43580: LIST
43581: PUSH
43582: LD_OWVAR 67
43586: ARRAY
43587: GREATER
43588: IFFALSE 43592
// continue ;
43590: GO 43524
// uc_side = nature ;
43592: LD_ADDR_OWVAR 20
43596: PUSH
43597: LD_EXP 6
43601: ST_TO_ADDR
// uc_nation = nation_nature ;
43602: LD_ADDR_OWVAR 21
43606: PUSH
43607: LD_INT 0
43609: ST_TO_ADDR
// agres = - 10 + difficulty * 20 ;
43610: LD_ADDR_VAR 0 2
43614: PUSH
43615: LD_INT 10
43617: NEG
43618: PUSH
43619: LD_OWVAR 67
43623: PUSH
43624: LD_INT 20
43626: MUL
43627: PLUS
43628: ST_TO_ADDR
// hc_class = class_apeman ;
43629: LD_ADDR_OWVAR 28
43633: PUSH
43634: LD_INT 12
43636: ST_TO_ADDR
// area = [ ape_area1 , ape_area2 ] [ rand ( 1 , 2 ) ] ;
43637: LD_ADDR_VAR 0 3
43641: PUSH
43642: LD_INT 30
43644: PUSH
43645: LD_INT 31
43647: PUSH
43648: EMPTY
43649: LIST
43650: LIST
43651: PUSH
43652: LD_INT 1
43654: PPUSH
43655: LD_INT 2
43657: PPUSH
43658: CALL_OW 12
43662: ARRAY
43663: ST_TO_ADDR
// uc_direction = Rand ( 0 , 5 ) ;
43664: LD_ADDR_OWVAR 24
43668: PUSH
43669: LD_INT 0
43671: PPUSH
43672: LD_INT 5
43674: PPUSH
43675: CALL_OW 12
43679: ST_TO_ADDR
// hc_agressivity = Rand ( - 1 * agres , agres ) ;
43680: LD_ADDR_OWVAR 35
43684: PUSH
43685: LD_INT 1
43687: NEG
43688: PUSH
43689: LD_VAR 0 2
43693: MUL
43694: PPUSH
43695: LD_VAR 0 2
43699: PPUSH
43700: CALL_OW 12
43704: ST_TO_ADDR
// hc_attr = [ Rand ( 11 , 13 ) , Rand ( 10 , 11 ) ] ;
43705: LD_ADDR_OWVAR 29
43709: PUSH
43710: LD_INT 11
43712: PPUSH
43713: LD_INT 13
43715: PPUSH
43716: CALL_OW 12
43720: PUSH
43721: LD_INT 10
43723: PPUSH
43724: LD_INT 11
43726: PPUSH
43727: CALL_OW 12
43731: PUSH
43732: EMPTY
43733: LIST
43734: LIST
43735: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
43736: LD_ADDR_OWVAR 27
43740: PUSH
43741: LD_INT 1
43743: PPUSH
43744: LD_INT 2
43746: PPUSH
43747: CALL_OW 12
43751: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 1 ) , Rand ( 0 , 1 ) , 0 , 0 ] ;
43752: LD_ADDR_OWVAR 31
43756: PUSH
43757: LD_INT 0
43759: PPUSH
43760: LD_INT 1
43762: PPUSH
43763: CALL_OW 12
43767: PUSH
43768: LD_INT 0
43770: PPUSH
43771: LD_INT 1
43773: PPUSH
43774: CALL_OW 12
43778: PUSH
43779: LD_INT 0
43781: PUSH
43782: LD_INT 0
43784: PUSH
43785: EMPTY
43786: LIST
43787: LIST
43788: LIST
43789: LIST
43790: ST_TO_ADDR
// PlaceUnitarea ( CreateHuman , area , false ) ;
43791: CALL_OW 44
43795: PPUSH
43796: LD_VAR 0 3
43800: PPUSH
43801: LD_INT 0
43803: PPUSH
43804: CALL_OW 49
// until tick > 85 85$0 ;
43808: LD_OWVAR 1
43812: PUSH
43813: LD_INT 178500
43815: GREATER
43816: IFFALSE 43524
// end ;
43818: PPOPN 3
43820: END
// function PreparePlayer ; var others , i , j , player_uns , base_ok , val , un , k , temp_list , human_list , vehicle_list , temp ; begin
43821: LD_INT 0
43823: PPUSH
43824: PPUSH
43825: PPUSH
43826: PPUSH
43827: PPUSH
43828: PPUSH
43829: PPUSH
43830: PPUSH
43831: PPUSH
43832: PPUSH
43833: PPUSH
43834: PPUSH
43835: PPUSH
// Randomize ;
43836: CALL_OW 10
// InitHc ;
43840: CALL_OW 19
// InitUc ;
43844: CALL_OW 18
// uc_side = 2 ;
43848: LD_ADDR_OWVAR 20
43852: PUSH
43853: LD_INT 2
43855: ST_TO_ADDR
// uc_nation = nation_arabian ;
43856: LD_ADDR_OWVAR 21
43860: PUSH
43861: LD_INT 2
43863: ST_TO_ADDR
// if not testing then
43864: LD_EXP 1
43868: NOT
43869: IFFALSE 45173
// begin Omar = LoadCharacter ( Omar_14 , 0 , 0 ) ;
43871: LD_ADDR_EXP 25
43875: PUSH
43876: LD_STRING Omar_14
43878: PPUSH
43879: LD_INT 0
43881: PPUSH
43882: LD_INT 0
43884: PPUSH
43885: CALL_OW 527
43889: ST_TO_ADDR
// Snake = NewCharacter ( Snake ) ;
43890: LD_ADDR_EXP 26
43894: PUSH
43895: LD_STRING Snake
43897: PPUSH
43898: CALL_OW 25
43902: ST_TO_ADDR
// Heike = LoadCharacter ( Heike_14 , 0 , 0 ) ;
43903: LD_ADDR_EXP 12
43907: PUSH
43908: LD_STRING Heike_14
43910: PPUSH
43911: LD_INT 0
43913: PPUSH
43914: LD_INT 0
43916: PPUSH
43917: CALL_OW 527
43921: ST_TO_ADDR
// Olaf = LoadCharacter ( Olaf_14 , 0 , 0 ) ;
43922: LD_ADDR_EXP 13
43926: PUSH
43927: LD_STRING Olaf_14
43929: PPUSH
43930: LD_INT 0
43932: PPUSH
43933: LD_INT 0
43935: PPUSH
43936: CALL_OW 527
43940: ST_TO_ADDR
// Sonya = LoadCharacter ( Sonya_14 , 0 , 0 ) ;
43941: LD_ADDR_EXP 14
43945: PUSH
43946: LD_STRING Sonya_14
43948: PPUSH
43949: LD_INT 0
43951: PPUSH
43952: LD_INT 0
43954: PPUSH
43955: CALL_OW 527
43959: ST_TO_ADDR
// Oswald = LoadCharacter ( Oswald_14 , 0 , 0 ) ;
43960: LD_ADDR_EXP 15
43964: PUSH
43965: LD_STRING Oswald_14
43967: PPUSH
43968: LD_INT 0
43970: PPUSH
43971: LD_INT 0
43973: PPUSH
43974: CALL_OW 527
43978: ST_TO_ADDR
// Ralph = LoadCharacter ( Ralph_14 , 0 , 0 ) ;
43979: LD_ADDR_EXP 16
43983: PUSH
43984: LD_STRING Ralph_14
43986: PPUSH
43987: LD_INT 0
43989: PPUSH
43990: LD_INT 0
43992: PPUSH
43993: CALL_OW 527
43997: ST_TO_ADDR
// Kowalski = LoadCharacter ( Kowalski_14 , 0 , 0 ) ;
43998: LD_ADDR_EXP 17
44002: PUSH
44003: LD_STRING Kowalski_14
44005: PPUSH
44006: LD_INT 0
44008: PPUSH
44009: LD_INT 0
44011: PPUSH
44012: CALL_OW 527
44016: ST_TO_ADDR
// Aviradze = LoadCharacter ( Aviradze_14 , 0 , 0 ) ;
44017: LD_ADDR_EXP 19
44021: PUSH
44022: LD_STRING Aviradze_14
44024: PPUSH
44025: LD_INT 0
44027: PPUSH
44028: LD_INT 0
44030: PPUSH
44031: CALL_OW 527
44035: ST_TO_ADDR
// Swansson = LoadCharacter ( Swansson_14 , 0 , 0 ) ;
44036: LD_ADDR_EXP 21
44040: PUSH
44041: LD_STRING Swansson_14
44043: PPUSH
44044: LD_INT 0
44046: PPUSH
44047: LD_INT 0
44049: PPUSH
44050: CALL_OW 527
44054: ST_TO_ADDR
// Dwayne = LoadCharacter ( Dwayne_14 , 0 , 0 ) ;
44055: LD_ADDR_EXP 22
44059: PUSH
44060: LD_STRING Dwayne_14
44062: PPUSH
44063: LD_INT 0
44065: PPUSH
44066: LD_INT 0
44068: PPUSH
44069: CALL_OW 527
44073: ST_TO_ADDR
// Khattam = LoadCharacter ( Khattam_14 , 0 , 0 ) ;
44074: LD_ADDR_EXP 18
44078: PUSH
44079: LD_STRING Khattam_14
44081: PPUSH
44082: LD_INT 0
44084: PPUSH
44085: LD_INT 0
44087: PPUSH
44088: CALL_OW 527
44092: ST_TO_ADDR
// Evelyn = LoadCharacter ( Evelyn_14 , 0 , 0 ) ;
44093: LD_ADDR_EXP 20
44097: PUSH
44098: LD_STRING Evelyn_14
44100: PPUSH
44101: LD_INT 0
44103: PPUSH
44104: LD_INT 0
44106: PPUSH
44107: CALL_OW 527
44111: ST_TO_ADDR
// Makise = LoadCharacter ( Makise_14 , 0 , 0 ) ;
44112: LD_ADDR_EXP 23
44116: PUSH
44117: LD_STRING Makise_14
44119: PPUSH
44120: LD_INT 0
44122: PPUSH
44123: LD_INT 0
44125: PPUSH
44126: CALL_OW 527
44130: ST_TO_ADDR
// Gonzo = LoadCharacter ( Gonzo_14 , 0 , 0 ) ;
44131: LD_ADDR_EXP 24
44135: PUSH
44136: LD_STRING Gonzo_14
44138: PPUSH
44139: LD_INT 0
44141: PPUSH
44142: LD_INT 0
44144: PPUSH
44145: CALL_OW 527
44149: ST_TO_ADDR
// others = CreateCharacterSet ( Others_14 ) diff 0 ;
44150: LD_ADDR_VAR 0 2
44154: PUSH
44155: LD_STRING Others_14
44157: PPUSH
44158: CALL_OW 31
44162: PUSH
44163: LD_INT 0
44165: DIFF
44166: ST_TO_ADDR
// Human_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ^ others diff 0 ;
44167: LD_ADDR_VAR 0 11
44171: PUSH
44172: LD_EXP 12
44176: PUSH
44177: LD_EXP 15
44181: PUSH
44182: LD_EXP 13
44186: PUSH
44187: LD_EXP 14
44191: PUSH
44192: LD_EXP 16
44196: PUSH
44197: LD_EXP 17
44201: PUSH
44202: LD_EXP 19
44206: PUSH
44207: LD_EXP 21
44211: PUSH
44212: LD_EXP 22
44216: PUSH
44217: LD_EXP 18
44221: PUSH
44222: LD_EXP 20
44226: PUSH
44227: LD_EXP 23
44231: PUSH
44232: EMPTY
44233: LIST
44234: LIST
44235: LIST
44236: LIST
44237: LIST
44238: LIST
44239: LIST
44240: LIST
44241: LIST
44242: LIST
44243: LIST
44244: LIST
44245: PUSH
44246: LD_VAR 0 2
44250: ADD
44251: PUSH
44252: LD_INT 0
44254: DIFF
44255: ST_TO_ADDR
// temp_list = LoadVariable ( Vehicles_14 , 0 ) ;
44256: LD_ADDR_VAR 0 10
44260: PUSH
44261: LD_STRING Vehicles_14
44263: PPUSH
44264: LD_INT 0
44266: PPUSH
44267: CALL_OW 30
44271: ST_TO_ADDR
// Vehicle_list = [ ] ;
44272: LD_ADDR_VAR 0 12
44276: PUSH
44277: EMPTY
44278: ST_TO_ADDR
// for i in temp_list do
44279: LD_ADDR_VAR 0 3
44283: PUSH
44284: LD_VAR 0 10
44288: PUSH
44289: FOR_IN
44290: IFFALSE 44380
// begin vc_chassis = i [ 1 ] ;
44292: LD_ADDR_OWVAR 37
44296: PUSH
44297: LD_VAR 0 3
44301: PUSH
44302: LD_INT 1
44304: ARRAY
44305: ST_TO_ADDR
// vc_control = i [ 2 ] ;
44306: LD_ADDR_OWVAR 38
44310: PUSH
44311: LD_VAR 0 3
44315: PUSH
44316: LD_INT 2
44318: ARRAY
44319: ST_TO_ADDR
// vc_engine = i [ 3 ] ;
44320: LD_ADDR_OWVAR 39
44324: PUSH
44325: LD_VAR 0 3
44329: PUSH
44330: LD_INT 3
44332: ARRAY
44333: ST_TO_ADDR
// vc_weapon = i [ 4 ] ;
44334: LD_ADDR_OWVAR 40
44338: PUSH
44339: LD_VAR 0 3
44343: PUSH
44344: LD_INT 4
44346: ARRAY
44347: ST_TO_ADDR
// uc_nation = i [ 5 ] ;
44348: LD_ADDR_OWVAR 21
44352: PUSH
44353: LD_VAR 0 3
44357: PUSH
44358: LD_INT 5
44360: ARRAY
44361: ST_TO_ADDR
// Vehicle_list = Vehicle_list ^ CreateVehicle ;
44362: LD_ADDR_VAR 0 12
44366: PUSH
44367: LD_VAR 0 12
44371: PUSH
44372: CALL_OW 45
44376: ADD
44377: ST_TO_ADDR
// end ;
44378: GO 44289
44380: POP
44381: POP
// val = 0 ;
44382: LD_ADDR_VAR 0 7
44386: PUSH
44387: LD_INT 0
44389: ST_TO_ADDR
// for i in unitfilter ( human_list , [ f_class , class_mechanic ] ) do
44390: LD_ADDR_VAR 0 3
44394: PUSH
44395: LD_VAR 0 11
44399: PPUSH
44400: LD_INT 25
44402: PUSH
44403: LD_INT 3
44405: PUSH
44406: EMPTY
44407: LIST
44408: LIST
44409: PPUSH
44410: CALL_OW 72
44414: PUSH
44415: FOR_IN
44416: IFFALSE 44483
// if getskill ( i , skill_mechanical ) > val and getclass ( i ) = class_mechanic then
44418: LD_VAR 0 3
44422: PPUSH
44423: LD_INT 3
44425: PPUSH
44426: CALL_OW 259
44430: PUSH
44431: LD_VAR 0 7
44435: GREATER
44436: PUSH
44437: LD_VAR 0 3
44441: PPUSH
44442: CALL_OW 257
44446: PUSH
44447: LD_INT 3
44449: EQUAL
44450: AND
44451: IFFALSE 44481
// begin val = getskill ( i , skill_mechanical ) ;
44453: LD_ADDR_VAR 0 7
44457: PUSH
44458: LD_VAR 0 3
44462: PPUSH
44463: LD_INT 3
44465: PPUSH
44466: CALL_OW 259
44470: ST_TO_ADDR
// temp = i ;
44471: LD_ADDR_VAR 0 13
44475: PUSH
44476: LD_VAR 0 3
44480: ST_TO_ADDR
// end ;
44481: GO 44415
44483: POP
44484: POP
// placehumaninunit ( temp , unitfilter ( Vehicle_list , [ f_weapon , ar_control_tower ] ) [ 1 ] ) ;
44485: LD_VAR 0 13
44489: PPUSH
44490: LD_VAR 0 12
44494: PPUSH
44495: LD_INT 34
44497: PUSH
44498: LD_INT 31
44500: PUSH
44501: EMPTY
44502: LIST
44503: LIST
44504: PPUSH
44505: CALL_OW 72
44509: PUSH
44510: LD_INT 1
44512: ARRAY
44513: PPUSH
44514: CALL_OW 52
// for i in human_list do
44518: LD_ADDR_VAR 0 3
44522: PUSH
44523: LD_VAR 0 11
44527: PUSH
44528: FOR_IN
44529: IFFALSE 44594
// for j in vehicle_list do
44531: LD_ADDR_VAR 0 4
44535: PUSH
44536: LD_VAR 0 12
44540: PUSH
44541: FOR_IN
44542: IFFALSE 44590
// if isdrivenby ( j ) = 0 and isinunit ( i ) = 0 then
44544: LD_VAR 0 4
44548: PPUSH
44549: CALL_OW 311
44553: PUSH
44554: LD_INT 0
44556: EQUAL
44557: PUSH
44558: LD_VAR 0 3
44562: PPUSH
44563: CALL_OW 310
44567: PUSH
44568: LD_INT 0
44570: EQUAL
44571: AND
44572: IFFALSE 44588
// placehumaninunit ( i , j ) ;
44574: LD_VAR 0 3
44578: PPUSH
44579: LD_VAR 0 4
44583: PPUSH
44584: CALL_OW 52
44588: GO 44541
44590: POP
44591: POP
44592: GO 44528
44594: POP
44595: POP
// player_forces = isinunit ( Heike ) ;
44596: LD_ADDR_EXP 174
44600: PUSH
44601: LD_EXP 12
44605: PPUSH
44606: CALL_OW 310
44610: ST_TO_ADDR
// vehicle_list = vehicle_list diff isinunit ( Heike ) ;
44611: LD_ADDR_VAR 0 12
44615: PUSH
44616: LD_VAR 0 12
44620: PUSH
44621: LD_EXP 12
44625: PPUSH
44626: CALL_OW 310
44630: DIFF
44631: ST_TO_ADDR
// player_forces = player_forces ^ unitfilter ( Vehicle_list , [ f_weapon , ar_control_tower ] ) [ 1 ] ;
44632: LD_ADDR_EXP 174
44636: PUSH
44637: LD_EXP 174
44641: PUSH
44642: LD_VAR 0 12
44646: PPUSH
44647: LD_INT 34
44649: PUSH
44650: LD_INT 31
44652: PUSH
44653: EMPTY
44654: LIST
44655: LIST
44656: PPUSH
44657: CALL_OW 72
44661: PUSH
44662: LD_INT 1
44664: ARRAY
44665: ADD
44666: ST_TO_ADDR
// vehicle_list = vehicle_list diff unitfilter ( Vehicle_list , [ f_weapon , ar_control_tower ] ) [ 1 ] ;
44667: LD_ADDR_VAR 0 12
44671: PUSH
44672: LD_VAR 0 12
44676: PUSH
44677: LD_VAR 0 12
44681: PPUSH
44682: LD_INT 34
44684: PUSH
44685: LD_INT 31
44687: PUSH
44688: EMPTY
44689: LIST
44690: LIST
44691: PPUSH
44692: CALL_OW 72
44696: PUSH
44697: LD_INT 1
44699: ARRAY
44700: DIFF
44701: ST_TO_ADDR
// for i in vehicle_list do
44702: LD_ADDR_VAR 0 3
44706: PUSH
44707: LD_VAR 0 12
44711: PUSH
44712: FOR_IN
44713: IFFALSE 44733
// player_forces = player_forces ^ i ;
44715: LD_ADDR_EXP 174
44719: PUSH
44720: LD_EXP 174
44724: PUSH
44725: LD_VAR 0 3
44729: ADD
44730: ST_TO_ADDR
44731: GO 44712
44733: POP
44734: POP
// player_forces = player_forces ^ unitfilter ( human_list , [ f_not , [ f_driving ] ] ) ;
44735: LD_ADDR_EXP 174
44739: PUSH
44740: LD_EXP 174
44744: PUSH
44745: LD_VAR 0 11
44749: PPUSH
44750: LD_INT 3
44752: PUSH
44753: LD_INT 55
44755: PUSH
44756: EMPTY
44757: LIST
44758: PUSH
44759: EMPTY
44760: LIST
44761: LIST
44762: PPUSH
44763: CALL_OW 72
44767: ADD
44768: ST_TO_ADDR
// if Gonzo > 0 then
44769: LD_EXP 24
44773: PUSH
44774: LD_INT 0
44776: GREATER
44777: IFFALSE 44795
// player_forces = player_forces ^ Gonzo ;
44779: LD_ADDR_EXP 174
44783: PUSH
44784: LD_EXP 174
44788: PUSH
44789: LD_EXP 24
44793: ADD
44794: ST_TO_ADDR
// temp = LoadVariable ( Russians_Passed_13 , 0 ) ;
44795: LD_ADDR_VAR 0 13
44799: PUSH
44800: LD_STRING Russians_Passed_13
44802: PPUSH
44803: LD_INT 0
44805: PPUSH
44806: CALL_OW 30
44810: ST_TO_ADDR
// if temp = 2 then
44811: LD_VAR 0 13
44815: PUSH
44816: LD_INT 2
44818: EQUAL
44819: IFFALSE 44831
// j = 8 else
44821: LD_ADDR_VAR 0 4
44825: PUSH
44826: LD_INT 8
44828: ST_TO_ADDR
44829: GO 44849
// if temp = 1 then
44831: LD_VAR 0 13
44835: PUSH
44836: LD_INT 1
44838: EQUAL
44839: IFFALSE 44849
// j = 5 ;
44841: LD_ADDR_VAR 0 4
44845: PUSH
44846: LD_INT 5
44848: ST_TO_ADDR
// for i = 1 to j do
44849: LD_ADDR_VAR 0 3
44853: PUSH
44854: DOUBLE
44855: LD_INT 1
44857: DEC
44858: ST_TO_ADDR
44859: LD_VAR 0 4
44863: PUSH
44864: FOR_TO
44865: IFFALSE 44936
// begin vc_chassis = ar_half_tracked ;
44867: LD_ADDR_OWVAR 37
44871: PUSH
44872: LD_INT 14
44874: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
44875: LD_ADDR_OWVAR 39
44879: PUSH
44880: LD_INT 1
44882: PUSH
44883: LD_INT 3
44885: PUSH
44886: EMPTY
44887: LIST
44888: LIST
44889: PUSH
44890: LD_INT 1
44892: PPUSH
44893: LD_INT 2
44895: PPUSH
44896: CALL_OW 12
44900: ARRAY
44901: ST_TO_ADDR
// vc_control = control_apeman ;
44902: LD_ADDR_OWVAR 38
44906: PUSH
44907: LD_INT 5
44909: ST_TO_ADDR
// vc_weapon = ar_cargo_bay ;
44910: LD_ADDR_OWVAR 40
44914: PUSH
44915: LD_INT 32
44917: ST_TO_ADDR
// player_forces = player_forces ^ CreateVehicle ;
44918: LD_ADDR_EXP 174
44922: PUSH
44923: LD_EXP 174
44927: PUSH
44928: CALL_OW 45
44932: ADD
44933: ST_TO_ADDR
// end ;
44934: GO 44864
44936: POP
44937: POP
// if LoadVariable ( Cooperates_with_traitors_10 , 0 ) = 1 then
44938: LD_STRING Cooperates_with_traitors_10
44940: PPUSH
44941: LD_INT 0
44943: PPUSH
44944: CALL_OW 30
44948: PUSH
44949: LD_INT 1
44951: EQUAL
44952: IFFALSE 44964
// help_variant = 2 else
44954: LD_ADDR_EXP 2
44958: PUSH
44959: LD_INT 2
44961: ST_TO_ADDR
44962: GO 44998
// if LoadVariable ( Cooperates_with_UPF_10 , 0 ) = 1 then
44964: LD_STRING Cooperates_with_UPF_10
44966: PPUSH
44967: LD_INT 0
44969: PPUSH
44970: CALL_OW 30
44974: PUSH
44975: LD_INT 1
44977: EQUAL
44978: IFFALSE 44990
// help_variant = 1 else
44980: LD_ADDR_EXP 2
44984: PUSH
44985: LD_INT 1
44987: ST_TO_ADDR
44988: GO 44998
// help_variant = 0 ;
44990: LD_ADDR_EXP 2
44994: PUSH
44995: LD_INT 0
44997: ST_TO_ADDR
// if help_variant = 2 then
44998: LD_EXP 2
45002: PUSH
45003: LD_INT 2
45005: EQUAL
45006: IFFALSE 45069
// begin Gordon = LoadCharacter ( traitors_leader_10 , 0 , 0 ) ;
45008: LD_ADDR_EXP 27
45012: PUSH
45013: LD_STRING traitors_leader_10
45015: PPUSH
45016: LD_INT 0
45018: PPUSH
45019: LD_INT 0
45021: PPUSH
45022: CALL_OW 527
45026: ST_TO_ADDR
// if Gordon = 0 then
45027: LD_EXP 27
45031: PUSH
45032: LD_INT 0
45034: EQUAL
45035: IFFALSE 45057
// begin preparesoldier ( false , 0 ) ;
45037: LD_INT 0
45039: PPUSH
45040: LD_INT 0
45042: PPUSH
45043: CALL_OW 381
// Gordon = CreateHuman ;
45047: LD_ADDR_EXP 27
45051: PUSH
45052: CALL_OW 44
45056: ST_TO_ADDR
// end ; setside ( Gordon , 8 ) ;
45057: LD_EXP 27
45061: PPUSH
45062: LD_INT 8
45064: PPUSH
45065: CALL_OW 235
// end ; if TestCharacters ( Released_Russian_prisoners_10 ) then
45069: LD_STRING Released_Russian_prisoners_10
45071: PPUSH
45072: CALL_OW 28
45076: IFFALSE 45119
// begin All_variant = 1 ;
45078: LD_ADDR_EXP 3
45082: PUSH
45083: LD_INT 1
45085: ST_TO_ADDR
// Alliance_sol = LoadCharacter ( Released_Russian_prisoners_10 , class_mechanic , 1 ) ;
45086: LD_ADDR_EXP 28
45090: PUSH
45091: LD_STRING Released_Russian_prisoners_10
45093: PPUSH
45094: LD_INT 3
45096: PPUSH
45097: LD_INT 1
45099: PPUSH
45100: CALL_OW 527
45104: ST_TO_ADDR
// setside ( Alliance_sol , 3 ) ;
45105: LD_EXP 28
45109: PPUSH
45110: LD_INT 3
45112: PPUSH
45113: CALL_OW 235
// end else
45117: GO 45127
// All_variant = 0 ;
45119: LD_ADDR_EXP 3
45123: PUSH
45124: LD_INT 0
45126: ST_TO_ADDR
// if LoadVariable ( Implosion_vehicle_dismantled_12_cont2 , 0 ) = 1 then
45127: LD_STRING Implosion_vehicle_dismantled_12_cont2
45129: PPUSH
45130: LD_INT 0
45132: PPUSH
45133: CALL_OW 30
45137: PUSH
45138: LD_INT 1
45140: EQUAL
45141: IFFALSE 45158
// SetTech ( 72 , 2 , state_enabled ) else
45143: LD_INT 72
45145: PPUSH
45146: LD_INT 2
45148: PPUSH
45149: LD_INT 1
45151: PPUSH
45152: CALL_OW 322
45156: GO 45171
// SetTech ( 72 , 2 , state_disabled ) ;
45158: LD_INT 72
45160: PPUSH
45161: LD_INT 2
45163: PPUSH
45164: LD_INT 0
45166: PPUSH
45167: CALL_OW 322
// end else
45171: GO 48087
// begin Omar = NewCharacter ( Omar ) ;
45173: LD_ADDR_EXP 25
45177: PUSH
45178: LD_STRING Omar
45180: PPUSH
45181: CALL_OW 25
45185: ST_TO_ADDR
// Snake = NewCharacter ( Snake ) ;
45186: LD_ADDR_EXP 26
45190: PUSH
45191: LD_STRING Snake
45193: PPUSH
45194: CALL_OW 25
45198: ST_TO_ADDR
// uc_side = 8 ;
45199: LD_ADDR_OWVAR 20
45203: PUSH
45204: LD_INT 8
45206: ST_TO_ADDR
// Gordon = NewCharacter ( Gordon ) ;
45207: LD_ADDR_EXP 27
45211: PUSH
45212: LD_STRING Gordon
45214: PPUSH
45215: CALL_OW 25
45219: ST_TO_ADDR
// uc_side = 2 ;
45220: LD_ADDR_OWVAR 20
45224: PUSH
45225: LD_INT 2
45227: ST_TO_ADDR
// uc_nation = nation_nature ;
45228: LD_ADDR_OWVAR 21
45232: PUSH
45233: LD_INT 0
45235: ST_TO_ADDR
// hc_class = class_apeman_soldier ;
45236: LD_ADDR_OWVAR 28
45240: PUSH
45241: LD_INT 15
45243: ST_TO_ADDR
// hc_attr = [ 10 , 16 ] ;
45244: LD_ADDR_OWVAR 29
45248: PUSH
45249: LD_INT 10
45251: PUSH
45252: LD_INT 16
45254: PUSH
45255: EMPTY
45256: LIST
45257: LIST
45258: ST_TO_ADDR
// hc_skills = [ 4 , 5 , 8 , 4 ] ;
45259: LD_ADDR_OWVAR 31
45263: PUSH
45264: LD_INT 4
45266: PUSH
45267: LD_INT 5
45269: PUSH
45270: LD_INT 8
45272: PUSH
45273: LD_INT 4
45275: PUSH
45276: EMPTY
45277: LIST
45278: LIST
45279: LIST
45280: LIST
45281: ST_TO_ADDR
// hc_sex = 1 ;
45282: LD_ADDR_OWVAR 27
45286: PUSH
45287: LD_INT 1
45289: ST_TO_ADDR
// hc_name = Gonzo ;
45290: LD_ADDR_OWVAR 26
45294: PUSH
45295: LD_STRING Gonzo
45297: ST_TO_ADDR
// Gonzo = CreateHuman ;
45298: LD_ADDR_EXP 24
45302: PUSH
45303: CALL_OW 44
45307: ST_TO_ADDR
// uc_nation = nation_arabian ;
45308: LD_ADDR_OWVAR 21
45312: PUSH
45313: LD_INT 2
45315: ST_TO_ADDR
// hc_class = class_mechanic ;
45316: LD_ADDR_OWVAR 28
45320: PUSH
45321: LD_INT 3
45323: ST_TO_ADDR
// hc_attr = [ 12 , 10 ] ;
45324: LD_ADDR_OWVAR 29
45328: PUSH
45329: LD_INT 12
45331: PUSH
45332: LD_INT 10
45334: PUSH
45335: EMPTY
45336: LIST
45337: LIST
45338: ST_TO_ADDR
// hc_skills = [ 4 , 5 , 9 , 4 ] ;
45339: LD_ADDR_OWVAR 31
45343: PUSH
45344: LD_INT 4
45346: PUSH
45347: LD_INT 5
45349: PUSH
45350: LD_INT 9
45352: PUSH
45353: LD_INT 4
45355: PUSH
45356: EMPTY
45357: LIST
45358: LIST
45359: LIST
45360: LIST
45361: ST_TO_ADDR
// hc_sex = 1 ;
45362: LD_ADDR_OWVAR 27
45366: PUSH
45367: LD_INT 1
45369: ST_TO_ADDR
// hc_gallery = ar ;
45370: LD_ADDR_OWVAR 33
45374: PUSH
45375: LD_STRING ar
45377: ST_TO_ADDR
// hc_face_number = 2 ;
45378: LD_ADDR_OWVAR 34
45382: PUSH
45383: LD_INT 2
45385: ST_TO_ADDR
// hc_name = Olaf ;
45386: LD_ADDR_OWVAR 26
45390: PUSH
45391: LD_STRING Olaf
45393: ST_TO_ADDR
// Olaf = CreateHuman ;
45394: LD_ADDR_EXP 13
45398: PUSH
45399: CALL_OW 44
45403: ST_TO_ADDR
// hc_class = class_soldier ;
45404: LD_ADDR_OWVAR 28
45408: PUSH
45409: LD_INT 1
45411: ST_TO_ADDR
// hc_attr = [ 11 , 10 ] ;
45412: LD_ADDR_OWVAR 29
45416: PUSH
45417: LD_INT 11
45419: PUSH
45420: LD_INT 10
45422: PUSH
45423: EMPTY
45424: LIST
45425: LIST
45426: ST_TO_ADDR
// hc_skills = [ 9 , 6 , 6 , 4 ] ;
45427: LD_ADDR_OWVAR 31
45431: PUSH
45432: LD_INT 9
45434: PUSH
45435: LD_INT 6
45437: PUSH
45438: LD_INT 6
45440: PUSH
45441: LD_INT 4
45443: PUSH
45444: EMPTY
45445: LIST
45446: LIST
45447: LIST
45448: LIST
45449: ST_TO_ADDR
// hc_sex = 1 ;
45450: LD_ADDR_OWVAR 27
45454: PUSH
45455: LD_INT 1
45457: ST_TO_ADDR
// hc_gallery = ar ;
45458: LD_ADDR_OWVAR 33
45462: PUSH
45463: LD_STRING ar
45465: ST_TO_ADDR
// hc_face_number = 15 ;
45466: LD_ADDR_OWVAR 34
45470: PUSH
45471: LD_INT 15
45473: ST_TO_ADDR
// hc_name = Oswald ;
45474: LD_ADDR_OWVAR 26
45478: PUSH
45479: LD_STRING Oswald
45481: ST_TO_ADDR
// Oswald = CreateHuman ;
45482: LD_ADDR_EXP 15
45486: PUSH
45487: CALL_OW 44
45491: ST_TO_ADDR
// hc_class = class_mechanic ;
45492: LD_ADDR_OWVAR 28
45496: PUSH
45497: LD_INT 3
45499: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
45500: LD_ADDR_OWVAR 29
45504: PUSH
45505: LD_INT 10
45507: PUSH
45508: LD_INT 10
45510: PUSH
45511: EMPTY
45512: LIST
45513: LIST
45514: ST_TO_ADDR
// hc_skills = [ 8 , 5 , 8 , 5 ] ;
45515: LD_ADDR_OWVAR 31
45519: PUSH
45520: LD_INT 8
45522: PUSH
45523: LD_INT 5
45525: PUSH
45526: LD_INT 8
45528: PUSH
45529: LD_INT 5
45531: PUSH
45532: EMPTY
45533: LIST
45534: LIST
45535: LIST
45536: LIST
45537: ST_TO_ADDR
// hc_sex = 1 ;
45538: LD_ADDR_OWVAR 27
45542: PUSH
45543: LD_INT 1
45545: ST_TO_ADDR
// hc_gallery = ar ;
45546: LD_ADDR_OWVAR 33
45550: PUSH
45551: LD_STRING ar
45553: ST_TO_ADDR
// hc_face_number = 5 ;
45554: LD_ADDR_OWVAR 34
45558: PUSH
45559: LD_INT 5
45561: ST_TO_ADDR
// hc_name = Ralph ;
45562: LD_ADDR_OWVAR 26
45566: PUSH
45567: LD_STRING Ralph
45569: ST_TO_ADDR
// Ralph = CreateHuman ;
45570: LD_ADDR_EXP 16
45574: PUSH
45575: CALL_OW 44
45579: ST_TO_ADDR
// hc_class = class_scientistic ;
45580: LD_ADDR_OWVAR 28
45584: PUSH
45585: LD_INT 4
45587: ST_TO_ADDR
// hc_attr = [ 9 , 11 ] ;
45588: LD_ADDR_OWVAR 29
45592: PUSH
45593: LD_INT 9
45595: PUSH
45596: LD_INT 11
45598: PUSH
45599: EMPTY
45600: LIST
45601: LIST
45602: ST_TO_ADDR
// hc_skills = [ 5 , 6 , 9 , 9 ] ;
45603: LD_ADDR_OWVAR 31
45607: PUSH
45608: LD_INT 5
45610: PUSH
45611: LD_INT 6
45613: PUSH
45614: LD_INT 9
45616: PUSH
45617: LD_INT 9
45619: PUSH
45620: EMPTY
45621: LIST
45622: LIST
45623: LIST
45624: LIST
45625: ST_TO_ADDR
// hc_sex = 2 ;
45626: LD_ADDR_OWVAR 27
45630: PUSH
45631: LD_INT 2
45633: ST_TO_ADDR
// hc_gallery = ar ;
45634: LD_ADDR_OWVAR 33
45638: PUSH
45639: LD_STRING ar
45641: ST_TO_ADDR
// hc_face_number = 6 ;
45642: LD_ADDR_OWVAR 34
45646: PUSH
45647: LD_INT 6
45649: ST_TO_ADDR
// hc_name = Sonya ;
45650: LD_ADDR_OWVAR 26
45654: PUSH
45655: LD_STRING Sonya
45657: ST_TO_ADDR
// Sonya = CreateHuman ;
45658: LD_ADDR_EXP 14
45662: PUSH
45663: CALL_OW 44
45667: ST_TO_ADDR
// hc_class = class_scientistic ;
45668: LD_ADDR_OWVAR 28
45672: PUSH
45673: LD_INT 4
45675: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
45676: LD_ADDR_OWVAR 29
45680: PUSH
45681: LD_INT 10
45683: PUSH
45684: LD_INT 12
45686: PUSH
45687: EMPTY
45688: LIST
45689: LIST
45690: ST_TO_ADDR
// hc_skills = [ 4 , 5 , 6 , 9 ] ;
45691: LD_ADDR_OWVAR 31
45695: PUSH
45696: LD_INT 4
45698: PUSH
45699: LD_INT 5
45701: PUSH
45702: LD_INT 6
45704: PUSH
45705: LD_INT 9
45707: PUSH
45708: EMPTY
45709: LIST
45710: LIST
45711: LIST
45712: LIST
45713: ST_TO_ADDR
// hc_sex = 1 ;
45714: LD_ADDR_OWVAR 27
45718: PUSH
45719: LD_INT 1
45721: ST_TO_ADDR
// hc_gallery = ar_new ;
45722: LD_ADDR_OWVAR 33
45726: PUSH
45727: LD_STRING ar_new
45729: ST_TO_ADDR
// hc_face_number = 1 ;
45730: LD_ADDR_OWVAR 34
45734: PUSH
45735: LD_INT 1
45737: ST_TO_ADDR
// hc_name = Aviradze ;
45738: LD_ADDR_OWVAR 26
45742: PUSH
45743: LD_STRING Aviradze
45745: ST_TO_ADDR
// Aviradze = CreateHuman ;
45746: LD_ADDR_EXP 19
45750: PUSH
45751: CALL_OW 44
45755: ST_TO_ADDR
// hc_class = class_soldier ;
45756: LD_ADDR_OWVAR 28
45760: PUSH
45761: LD_INT 1
45763: ST_TO_ADDR
// hc_attr = [ 11 , 10 ] ;
45764: LD_ADDR_OWVAR 29
45768: PUSH
45769: LD_INT 11
45771: PUSH
45772: LD_INT 10
45774: PUSH
45775: EMPTY
45776: LIST
45777: LIST
45778: ST_TO_ADDR
// hc_skills = [ 8 , 6 , 7 , 4 ] ;
45779: LD_ADDR_OWVAR 31
45783: PUSH
45784: LD_INT 8
45786: PUSH
45787: LD_INT 6
45789: PUSH
45790: LD_INT 7
45792: PUSH
45793: LD_INT 4
45795: PUSH
45796: EMPTY
45797: LIST
45798: LIST
45799: LIST
45800: LIST
45801: ST_TO_ADDR
// hc_sex = 1 ;
45802: LD_ADDR_OWVAR 27
45806: PUSH
45807: LD_INT 1
45809: ST_TO_ADDR
// hc_gallery = ar_new ;
45810: LD_ADDR_OWVAR 33
45814: PUSH
45815: LD_STRING ar_new
45817: ST_TO_ADDR
// hc_face_number = 2 ;
45818: LD_ADDR_OWVAR 34
45822: PUSH
45823: LD_INT 2
45825: ST_TO_ADDR
// hc_name = Kowalski ;
45826: LD_ADDR_OWVAR 26
45830: PUSH
45831: LD_STRING Kowalski
45833: ST_TO_ADDR
// Kowalski = CreateHuman ;
45834: LD_ADDR_EXP 17
45838: PUSH
45839: CALL_OW 44
45843: ST_TO_ADDR
// hc_class = class_mechanic ;
45844: LD_ADDR_OWVAR 28
45848: PUSH
45849: LD_INT 3
45851: ST_TO_ADDR
// hc_attr = [ 9 , 10 ] ;
45852: LD_ADDR_OWVAR 29
45856: PUSH
45857: LD_INT 9
45859: PUSH
45860: LD_INT 10
45862: PUSH
45863: EMPTY
45864: LIST
45865: LIST
45866: ST_TO_ADDR
// hc_skills = [ 5 , 9 , 6 , 6 ] ;
45867: LD_ADDR_OWVAR 31
45871: PUSH
45872: LD_INT 5
45874: PUSH
45875: LD_INT 9
45877: PUSH
45878: LD_INT 6
45880: PUSH
45881: LD_INT 6
45883: PUSH
45884: EMPTY
45885: LIST
45886: LIST
45887: LIST
45888: LIST
45889: ST_TO_ADDR
// hc_sex = 2 ;
45890: LD_ADDR_OWVAR 27
45894: PUSH
45895: LD_INT 2
45897: ST_TO_ADDR
// hc_gallery = ar_new ;
45898: LD_ADDR_OWVAR 33
45902: PUSH
45903: LD_STRING ar_new
45905: ST_TO_ADDR
// hc_face_number = 5 ;
45906: LD_ADDR_OWVAR 34
45910: PUSH
45911: LD_INT 5
45913: ST_TO_ADDR
// hc_name = Evelyn ;
45914: LD_ADDR_OWVAR 26
45918: PUSH
45919: LD_STRING Evelyn
45921: ST_TO_ADDR
// Evelyn = CreateHuman ;
45922: LD_ADDR_EXP 20
45926: PUSH
45927: CALL_OW 44
45931: ST_TO_ADDR
// hc_class = class_mechanic ;
45932: LD_ADDR_OWVAR 28
45936: PUSH
45937: LD_INT 3
45939: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
45940: LD_ADDR_OWVAR 29
45944: PUSH
45945: LD_INT 10
45947: PUSH
45948: LD_INT 10
45950: PUSH
45951: EMPTY
45952: LIST
45953: LIST
45954: ST_TO_ADDR
// hc_skills = [ 6 , 4 , 9 , 5 ] ;
45955: LD_ADDR_OWVAR 31
45959: PUSH
45960: LD_INT 6
45962: PUSH
45963: LD_INT 4
45965: PUSH
45966: LD_INT 9
45968: PUSH
45969: LD_INT 5
45971: PUSH
45972: EMPTY
45973: LIST
45974: LIST
45975: LIST
45976: LIST
45977: ST_TO_ADDR
// hc_sex = 1 ;
45978: LD_ADDR_OWVAR 27
45982: PUSH
45983: LD_INT 1
45985: ST_TO_ADDR
// hc_gallery = ar_new ;
45986: LD_ADDR_OWVAR 33
45990: PUSH
45991: LD_STRING ar_new
45993: ST_TO_ADDR
// hc_face_number = 31 ;
45994: LD_ADDR_OWVAR 34
45998: PUSH
45999: LD_INT 31
46001: ST_TO_ADDR
// hc_name = Swansson ;
46002: LD_ADDR_OWVAR 26
46006: PUSH
46007: LD_STRING Swansson
46009: ST_TO_ADDR
// Swansson = CreateHuman ;
46010: LD_ADDR_EXP 21
46014: PUSH
46015: CALL_OW 44
46019: ST_TO_ADDR
// hc_class = class_mechanic ;
46020: LD_ADDR_OWVAR 28
46024: PUSH
46025: LD_INT 3
46027: ST_TO_ADDR
// hc_attr = [ 11 , 10 ] ;
46028: LD_ADDR_OWVAR 29
46032: PUSH
46033: LD_INT 11
46035: PUSH
46036: LD_INT 10
46038: PUSH
46039: EMPTY
46040: LIST
46041: LIST
46042: ST_TO_ADDR
// hc_skills = [ 7 , 5 , 9 , 5 ] ;
46043: LD_ADDR_OWVAR 31
46047: PUSH
46048: LD_INT 7
46050: PUSH
46051: LD_INT 5
46053: PUSH
46054: LD_INT 9
46056: PUSH
46057: LD_INT 5
46059: PUSH
46060: EMPTY
46061: LIST
46062: LIST
46063: LIST
46064: LIST
46065: ST_TO_ADDR
// hc_sex = 1 ;
46066: LD_ADDR_OWVAR 27
46070: PUSH
46071: LD_INT 1
46073: ST_TO_ADDR
// hc_gallery = ar_new ;
46074: LD_ADDR_OWVAR 33
46078: PUSH
46079: LD_STRING ar_new
46081: ST_TO_ADDR
// hc_face_number = 13 ;
46082: LD_ADDR_OWVAR 34
46086: PUSH
46087: LD_INT 13
46089: ST_TO_ADDR
// hc_name = Dwayne ;
46090: LD_ADDR_OWVAR 26
46094: PUSH
46095: LD_STRING Dwayne
46097: ST_TO_ADDR
// Dwayne = CreateHuman ;
46098: LD_ADDR_EXP 22
46102: PUSH
46103: CALL_OW 44
46107: ST_TO_ADDR
// hc_class = class_scientistic ;
46108: LD_ADDR_OWVAR 28
46112: PUSH
46113: LD_INT 4
46115: ST_TO_ADDR
// hc_attr = [ 9 , 10 ] ;
46116: LD_ADDR_OWVAR 29
46120: PUSH
46121: LD_INT 9
46123: PUSH
46124: LD_INT 10
46126: PUSH
46127: EMPTY
46128: LIST
46129: LIST
46130: ST_TO_ADDR
// hc_skills = [ 4 , 6 , 5 , 9 ] ;
46131: LD_ADDR_OWVAR 31
46135: PUSH
46136: LD_INT 4
46138: PUSH
46139: LD_INT 6
46141: PUSH
46142: LD_INT 5
46144: PUSH
46145: LD_INT 9
46147: PUSH
46148: EMPTY
46149: LIST
46150: LIST
46151: LIST
46152: LIST
46153: ST_TO_ADDR
// hc_sex = 1 ;
46154: LD_ADDR_OWVAR 27
46158: PUSH
46159: LD_INT 1
46161: ST_TO_ADDR
// hc_gallery = us ;
46162: LD_ADDR_OWVAR 33
46166: PUSH
46167: LD_STRING us
46169: ST_TO_ADDR
// hc_face_number = 10 ;
46170: LD_ADDR_OWVAR 34
46174: PUSH
46175: LD_INT 10
46177: ST_TO_ADDR
// hc_name = Khattam ;
46178: LD_ADDR_OWVAR 26
46182: PUSH
46183: LD_STRING Khattam
46185: ST_TO_ADDR
// Khattam = CreateHuman ;
46186: LD_ADDR_EXP 18
46190: PUSH
46191: CALL_OW 44
46195: ST_TO_ADDR
// hc_class = class_scientistic ;
46196: LD_ADDR_OWVAR 28
46200: PUSH
46201: LD_INT 4
46203: ST_TO_ADDR
// hc_attr = [ 9 , 9 ] ;
46204: LD_ADDR_OWVAR 29
46208: PUSH
46209: LD_INT 9
46211: PUSH
46212: LD_INT 9
46214: PUSH
46215: EMPTY
46216: LIST
46217: LIST
46218: ST_TO_ADDR
// hc_skills = [ 4 , 8 , 8 , 10 ] ;
46219: LD_ADDR_OWVAR 31
46223: PUSH
46224: LD_INT 4
46226: PUSH
46227: LD_INT 8
46229: PUSH
46230: LD_INT 8
46232: PUSH
46233: LD_INT 10
46235: PUSH
46236: EMPTY
46237: LIST
46238: LIST
46239: LIST
46240: LIST
46241: ST_TO_ADDR
// hc_sex = 2 ;
46242: LD_ADDR_OWVAR 27
46246: PUSH
46247: LD_INT 2
46249: ST_TO_ADDR
// hc_gallery = ar_new ;
46250: LD_ADDR_OWVAR 33
46254: PUSH
46255: LD_STRING ar_new
46257: ST_TO_ADDR
// hc_face_number = 34 ;
46258: LD_ADDR_OWVAR 34
46262: PUSH
46263: LD_INT 34
46265: ST_TO_ADDR
// hc_name = Makise ;
46266: LD_ADDR_OWVAR 26
46270: PUSH
46271: LD_STRING Makise
46273: ST_TO_ADDR
// Makise = CreateHuman ;
46274: LD_ADDR_EXP 23
46278: PUSH
46279: CALL_OW 44
46283: ST_TO_ADDR
// hc_class = class_soldier ;
46284: LD_ADDR_OWVAR 28
46288: PUSH
46289: LD_INT 1
46291: ST_TO_ADDR
// hc_attr = [ 12 , 12 ] ;
46292: LD_ADDR_OWVAR 29
46296: PUSH
46297: LD_INT 12
46299: PUSH
46300: LD_INT 12
46302: PUSH
46303: EMPTY
46304: LIST
46305: LIST
46306: ST_TO_ADDR
// hc_skills = [ 9 , 4 , 8 , 6 ] ;
46307: LD_ADDR_OWVAR 31
46311: PUSH
46312: LD_INT 9
46314: PUSH
46315: LD_INT 4
46317: PUSH
46318: LD_INT 8
46320: PUSH
46321: LD_INT 6
46323: PUSH
46324: EMPTY
46325: LIST
46326: LIST
46327: LIST
46328: LIST
46329: ST_TO_ADDR
// hc_sex = 2 ;
46330: LD_ADDR_OWVAR 27
46334: PUSH
46335: LD_INT 2
46337: ST_TO_ADDR
// hc_gallery = ru ;
46338: LD_ADDR_OWVAR 33
46342: PUSH
46343: LD_STRING ru
46345: ST_TO_ADDR
// hc_face_number = 24 ;
46346: LD_ADDR_OWVAR 34
46350: PUSH
46351: LD_INT 24
46353: ST_TO_ADDR
// hc_name = Heike ;
46354: LD_ADDR_OWVAR 26
46358: PUSH
46359: LD_STRING Heike
46361: ST_TO_ADDR
// Heike = CreateHuman ;
46362: LD_ADDR_EXP 12
46366: PUSH
46367: CALL_OW 44
46371: ST_TO_ADDR
// Human_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
46372: LD_ADDR_VAR 0 11
46376: PUSH
46377: LD_EXP 12
46381: PUSH
46382: LD_EXP 15
46386: PUSH
46387: LD_EXP 13
46391: PUSH
46392: LD_EXP 14
46396: PUSH
46397: LD_EXP 16
46401: PUSH
46402: LD_EXP 17
46406: PUSH
46407: LD_EXP 19
46411: PUSH
46412: LD_EXP 21
46416: PUSH
46417: LD_EXP 22
46421: PUSH
46422: LD_EXP 18
46426: PUSH
46427: LD_EXP 20
46431: PUSH
46432: LD_EXP 23
46436: PUSH
46437: EMPTY
46438: LIST
46439: LIST
46440: LIST
46441: LIST
46442: LIST
46443: LIST
46444: LIST
46445: LIST
46446: LIST
46447: LIST
46448: LIST
46449: LIST
46450: ST_TO_ADDR
// Vehicle_list = [ [ ar_half_tracked , control_remote , engine_siberite , ar_cargo_bay ] , [ ar_half_tracked , control_remote , engine_siberite , ar_cargo_bay ] , [ ar_half_tracked , control_manual , engine_siberite , ar_control_tower ] , [ ar_half_tracked , control_remote , engine_combustion , ar_radar ] , [ ar_hovercraft , control_manual , engine_combustion , [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ] , [ ar_hovercraft , control_manual , engine_combustion , [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ] , [ ar_medium_trike , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_rocket_launcher ] , [ ar_medium_trike , control_apeman , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_rocket_launcher ] , [ ar_medium_trike , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_gatling_gun ] , [ ar_medium_trike , control_apeman , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_gatling_gun ] ] ;
46451: LD_ADDR_VAR 0 12
46455: PUSH
46456: LD_INT 14
46458: PUSH
46459: LD_INT 2
46461: PUSH
46462: LD_INT 3
46464: PUSH
46465: LD_INT 32
46467: PUSH
46468: EMPTY
46469: LIST
46470: LIST
46471: LIST
46472: LIST
46473: PUSH
46474: LD_INT 14
46476: PUSH
46477: LD_INT 2
46479: PUSH
46480: LD_INT 3
46482: PUSH
46483: LD_INT 32
46485: PUSH
46486: EMPTY
46487: LIST
46488: LIST
46489: LIST
46490: LIST
46491: PUSH
46492: LD_INT 14
46494: PUSH
46495: LD_INT 1
46497: PUSH
46498: LD_INT 3
46500: PUSH
46501: LD_INT 31
46503: PUSH
46504: EMPTY
46505: LIST
46506: LIST
46507: LIST
46508: LIST
46509: PUSH
46510: LD_INT 14
46512: PUSH
46513: LD_INT 2
46515: PUSH
46516: LD_INT 1
46518: PUSH
46519: LD_INT 30
46521: PUSH
46522: EMPTY
46523: LIST
46524: LIST
46525: LIST
46526: LIST
46527: PUSH
46528: LD_INT 11
46530: PUSH
46531: LD_INT 1
46533: PUSH
46534: LD_INT 1
46536: PUSH
46537: LD_INT 23
46539: PUSH
46540: LD_INT 24
46542: PUSH
46543: EMPTY
46544: LIST
46545: LIST
46546: PUSH
46547: LD_INT 1
46549: PPUSH
46550: LD_INT 2
46552: PPUSH
46553: CALL_OW 12
46557: ARRAY
46558: PUSH
46559: EMPTY
46560: LIST
46561: LIST
46562: LIST
46563: LIST
46564: PUSH
46565: LD_INT 11
46567: PUSH
46568: LD_INT 1
46570: PUSH
46571: LD_INT 1
46573: PUSH
46574: LD_INT 23
46576: PUSH
46577: LD_INT 24
46579: PUSH
46580: EMPTY
46581: LIST
46582: LIST
46583: PUSH
46584: LD_INT 1
46586: PPUSH
46587: LD_INT 2
46589: PPUSH
46590: CALL_OW 12
46594: ARRAY
46595: PUSH
46596: EMPTY
46597: LIST
46598: LIST
46599: LIST
46600: LIST
46601: PUSH
46602: LD_INT 13
46604: PUSH
46605: LD_INT 1
46607: PUSH
46608: LD_INT 1
46610: PUSH
46611: LD_INT 3
46613: PUSH
46614: EMPTY
46615: LIST
46616: LIST
46617: PUSH
46618: LD_INT 1
46620: PPUSH
46621: LD_INT 2
46623: PPUSH
46624: CALL_OW 12
46628: ARRAY
46629: PUSH
46630: LD_INT 28
46632: PUSH
46633: EMPTY
46634: LIST
46635: LIST
46636: LIST
46637: LIST
46638: PUSH
46639: LD_INT 13
46641: PUSH
46642: LD_INT 5
46644: PUSH
46645: LD_INT 1
46647: PUSH
46648: LD_INT 3
46650: PUSH
46651: EMPTY
46652: LIST
46653: LIST
46654: PUSH
46655: LD_INT 1
46657: PPUSH
46658: LD_INT 2
46660: PPUSH
46661: CALL_OW 12
46665: ARRAY
46666: PUSH
46667: LD_INT 28
46669: PUSH
46670: EMPTY
46671: LIST
46672: LIST
46673: LIST
46674: LIST
46675: PUSH
46676: LD_INT 13
46678: PUSH
46679: LD_INT 1
46681: PUSH
46682: LD_INT 1
46684: PUSH
46685: LD_INT 3
46687: PUSH
46688: EMPTY
46689: LIST
46690: LIST
46691: PUSH
46692: LD_INT 1
46694: PPUSH
46695: LD_INT 2
46697: PPUSH
46698: CALL_OW 12
46702: ARRAY
46703: PUSH
46704: LD_INT 25
46706: PUSH
46707: EMPTY
46708: LIST
46709: LIST
46710: LIST
46711: LIST
46712: PUSH
46713: LD_INT 13
46715: PUSH
46716: LD_INT 5
46718: PUSH
46719: LD_INT 1
46721: PUSH
46722: LD_INT 3
46724: PUSH
46725: EMPTY
46726: LIST
46727: LIST
46728: PUSH
46729: LD_INT 1
46731: PPUSH
46732: LD_INT 2
46734: PPUSH
46735: CALL_OW 12
46739: ARRAY
46740: PUSH
46741: LD_INT 25
46743: PUSH
46744: EMPTY
46745: LIST
46746: LIST
46747: LIST
46748: LIST
46749: PUSH
46750: EMPTY
46751: LIST
46752: LIST
46753: LIST
46754: LIST
46755: LIST
46756: LIST
46757: LIST
46758: LIST
46759: LIST
46760: LIST
46761: ST_TO_ADDR
// if difficulty < 3 then
46762: LD_OWVAR 67
46766: PUSH
46767: LD_INT 3
46769: LESS
46770: IFFALSE 46861
// Vehicle_list = Vehicle_list ^ [ [ ar_medium_trike , control_remote , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_rocket_launcher ] , [ ar_medium_trike , control_remote , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_gatling_gun ] ] ;
46772: LD_ADDR_VAR 0 12
46776: PUSH
46777: LD_VAR 0 12
46781: PUSH
46782: LD_INT 13
46784: PUSH
46785: LD_INT 2
46787: PUSH
46788: LD_INT 1
46790: PUSH
46791: LD_INT 3
46793: PUSH
46794: EMPTY
46795: LIST
46796: LIST
46797: PUSH
46798: LD_INT 1
46800: PPUSH
46801: LD_INT 2
46803: PPUSH
46804: CALL_OW 12
46808: ARRAY
46809: PUSH
46810: LD_INT 28
46812: PUSH
46813: EMPTY
46814: LIST
46815: LIST
46816: LIST
46817: LIST
46818: PUSH
46819: LD_INT 13
46821: PUSH
46822: LD_INT 2
46824: PUSH
46825: LD_INT 1
46827: PUSH
46828: LD_INT 3
46830: PUSH
46831: EMPTY
46832: LIST
46833: LIST
46834: PUSH
46835: LD_INT 1
46837: PPUSH
46838: LD_INT 2
46840: PPUSH
46841: CALL_OW 12
46845: ARRAY
46846: PUSH
46847: LD_INT 25
46849: PUSH
46850: EMPTY
46851: LIST
46852: LIST
46853: LIST
46854: LIST
46855: PUSH
46856: EMPTY
46857: LIST
46858: LIST
46859: ADD
46860: ST_TO_ADDR
// if difficulty = 1 then
46861: LD_OWVAR 67
46865: PUSH
46866: LD_INT 1
46868: EQUAL
46869: IFFALSE 47006
// Vehicle_list = Vehicle_list ^ [ [ ar_half_tracked , [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_rocket_launcher ] , [ ar_half_tracked , [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , ar_gatling_gun ] ] ;
46871: LD_ADDR_VAR 0 12
46875: PUSH
46876: LD_VAR 0 12
46880: PUSH
46881: LD_INT 14
46883: PUSH
46884: LD_INT 1
46886: PUSH
46887: LD_INT 2
46889: PUSH
46890: LD_INT 5
46892: PUSH
46893: EMPTY
46894: LIST
46895: LIST
46896: LIST
46897: PUSH
46898: LD_INT 1
46900: PPUSH
46901: LD_INT 3
46903: PPUSH
46904: CALL_OW 12
46908: ARRAY
46909: PUSH
46910: LD_INT 1
46912: PUSH
46913: LD_INT 3
46915: PUSH
46916: EMPTY
46917: LIST
46918: LIST
46919: PUSH
46920: LD_INT 1
46922: PPUSH
46923: LD_INT 2
46925: PPUSH
46926: CALL_OW 12
46930: ARRAY
46931: PUSH
46932: LD_INT 28
46934: PUSH
46935: EMPTY
46936: LIST
46937: LIST
46938: LIST
46939: LIST
46940: PUSH
46941: LD_INT 14
46943: PUSH
46944: LD_INT 1
46946: PUSH
46947: LD_INT 2
46949: PUSH
46950: LD_INT 5
46952: PUSH
46953: EMPTY
46954: LIST
46955: LIST
46956: LIST
46957: PUSH
46958: LD_INT 1
46960: PPUSH
46961: LD_INT 3
46963: PPUSH
46964: CALL_OW 12
46968: ARRAY
46969: PUSH
46970: LD_INT 1
46972: PUSH
46973: LD_INT 3
46975: PUSH
46976: EMPTY
46977: LIST
46978: LIST
46979: PUSH
46980: LD_INT 1
46982: PPUSH
46983: LD_INT 2
46985: PPUSH
46986: CALL_OW 12
46990: ARRAY
46991: PUSH
46992: LD_INT 25
46994: PUSH
46995: EMPTY
46996: LIST
46997: LIST
46998: LIST
46999: LIST
47000: PUSH
47001: EMPTY
47002: LIST
47003: LIST
47004: ADD
47005: ST_TO_ADDR
// Vehicle_list = Vehicle_list ^ [ [ [ ar_half_tracked , ar_medium_trike ] [ rand ( 1 , 2 ) ] , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , [ ar_gun , ar_gun , ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 6 ) ] ] , [ [ ar_half_tracked , ar_medium_trike ] [ rand ( 1 , 2 ) ] , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , [ ar_gun , ar_gun , ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 6 ) ] ] , [ [ ar_half_tracked , ar_medium_trike ] [ rand ( 1 , 2 ) ] , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , [ ar_gun , ar_gun , ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 6 ) ] ] , [ [ ar_half_tracked , ar_medium_trike ] [ rand ( 1 , 2 ) ] , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , [ ar_gun , ar_gun , ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 6 ) ] ] , [ [ ar_half_tracked , ar_medium_trike ] [ rand ( 1 , 2 ) ] , control_manual , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , [ ar_gun , ar_gun , ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 6 ) ] ] ] ;
47006: LD_ADDR_VAR 0 12
47010: PUSH
47011: LD_VAR 0 12
47015: PUSH
47016: LD_INT 14
47018: PUSH
47019: LD_INT 13
47021: PUSH
47022: EMPTY
47023: LIST
47024: LIST
47025: PUSH
47026: LD_INT 1
47028: PPUSH
47029: LD_INT 2
47031: PPUSH
47032: CALL_OW 12
47036: ARRAY
47037: PUSH
47038: LD_INT 1
47040: PUSH
47041: LD_INT 1
47043: PUSH
47044: LD_INT 3
47046: PUSH
47047: EMPTY
47048: LIST
47049: LIST
47050: PUSH
47051: LD_INT 1
47053: PPUSH
47054: LD_INT 2
47056: PPUSH
47057: CALL_OW 12
47061: ARRAY
47062: PUSH
47063: LD_INT 27
47065: PUSH
47066: LD_INT 27
47068: PUSH
47069: LD_INT 28
47071: PUSH
47072: LD_INT 28
47074: PUSH
47075: LD_INT 25
47077: PUSH
47078: LD_INT 26
47080: PUSH
47081: EMPTY
47082: LIST
47083: LIST
47084: LIST
47085: LIST
47086: LIST
47087: LIST
47088: PUSH
47089: LD_INT 1
47091: PPUSH
47092: LD_INT 6
47094: PPUSH
47095: CALL_OW 12
47099: ARRAY
47100: PUSH
47101: EMPTY
47102: LIST
47103: LIST
47104: LIST
47105: LIST
47106: PUSH
47107: LD_INT 14
47109: PUSH
47110: LD_INT 13
47112: PUSH
47113: EMPTY
47114: LIST
47115: LIST
47116: PUSH
47117: LD_INT 1
47119: PPUSH
47120: LD_INT 2
47122: PPUSH
47123: CALL_OW 12
47127: ARRAY
47128: PUSH
47129: LD_INT 1
47131: PUSH
47132: LD_INT 1
47134: PUSH
47135: LD_INT 3
47137: PUSH
47138: EMPTY
47139: LIST
47140: LIST
47141: PUSH
47142: LD_INT 1
47144: PPUSH
47145: LD_INT 2
47147: PPUSH
47148: CALL_OW 12
47152: ARRAY
47153: PUSH
47154: LD_INT 27
47156: PUSH
47157: LD_INT 27
47159: PUSH
47160: LD_INT 28
47162: PUSH
47163: LD_INT 28
47165: PUSH
47166: LD_INT 25
47168: PUSH
47169: LD_INT 26
47171: PUSH
47172: EMPTY
47173: LIST
47174: LIST
47175: LIST
47176: LIST
47177: LIST
47178: LIST
47179: PUSH
47180: LD_INT 1
47182: PPUSH
47183: LD_INT 6
47185: PPUSH
47186: CALL_OW 12
47190: ARRAY
47191: PUSH
47192: EMPTY
47193: LIST
47194: LIST
47195: LIST
47196: LIST
47197: PUSH
47198: LD_INT 14
47200: PUSH
47201: LD_INT 13
47203: PUSH
47204: EMPTY
47205: LIST
47206: LIST
47207: PUSH
47208: LD_INT 1
47210: PPUSH
47211: LD_INT 2
47213: PPUSH
47214: CALL_OW 12
47218: ARRAY
47219: PUSH
47220: LD_INT 1
47222: PUSH
47223: LD_INT 1
47225: PUSH
47226: LD_INT 3
47228: PUSH
47229: EMPTY
47230: LIST
47231: LIST
47232: PUSH
47233: LD_INT 1
47235: PPUSH
47236: LD_INT 2
47238: PPUSH
47239: CALL_OW 12
47243: ARRAY
47244: PUSH
47245: LD_INT 27
47247: PUSH
47248: LD_INT 27
47250: PUSH
47251: LD_INT 28
47253: PUSH
47254: LD_INT 28
47256: PUSH
47257: LD_INT 25
47259: PUSH
47260: LD_INT 26
47262: PUSH
47263: EMPTY
47264: LIST
47265: LIST
47266: LIST
47267: LIST
47268: LIST
47269: LIST
47270: PUSH
47271: LD_INT 1
47273: PPUSH
47274: LD_INT 6
47276: PPUSH
47277: CALL_OW 12
47281: ARRAY
47282: PUSH
47283: EMPTY
47284: LIST
47285: LIST
47286: LIST
47287: LIST
47288: PUSH
47289: LD_INT 14
47291: PUSH
47292: LD_INT 13
47294: PUSH
47295: EMPTY
47296: LIST
47297: LIST
47298: PUSH
47299: LD_INT 1
47301: PPUSH
47302: LD_INT 2
47304: PPUSH
47305: CALL_OW 12
47309: ARRAY
47310: PUSH
47311: LD_INT 1
47313: PUSH
47314: LD_INT 1
47316: PUSH
47317: LD_INT 3
47319: PUSH
47320: EMPTY
47321: LIST
47322: LIST
47323: PUSH
47324: LD_INT 1
47326: PPUSH
47327: LD_INT 2
47329: PPUSH
47330: CALL_OW 12
47334: ARRAY
47335: PUSH
47336: LD_INT 27
47338: PUSH
47339: LD_INT 27
47341: PUSH
47342: LD_INT 28
47344: PUSH
47345: LD_INT 28
47347: PUSH
47348: LD_INT 25
47350: PUSH
47351: LD_INT 26
47353: PUSH
47354: EMPTY
47355: LIST
47356: LIST
47357: LIST
47358: LIST
47359: LIST
47360: LIST
47361: PUSH
47362: LD_INT 1
47364: PPUSH
47365: LD_INT 6
47367: PPUSH
47368: CALL_OW 12
47372: ARRAY
47373: PUSH
47374: EMPTY
47375: LIST
47376: LIST
47377: LIST
47378: LIST
47379: PUSH
47380: LD_INT 14
47382: PUSH
47383: LD_INT 13
47385: PUSH
47386: EMPTY
47387: LIST
47388: LIST
47389: PUSH
47390: LD_INT 1
47392: PPUSH
47393: LD_INT 2
47395: PPUSH
47396: CALL_OW 12
47400: ARRAY
47401: PUSH
47402: LD_INT 1
47404: PUSH
47405: LD_INT 1
47407: PUSH
47408: LD_INT 3
47410: PUSH
47411: EMPTY
47412: LIST
47413: LIST
47414: PUSH
47415: LD_INT 1
47417: PPUSH
47418: LD_INT 2
47420: PPUSH
47421: CALL_OW 12
47425: ARRAY
47426: PUSH
47427: LD_INT 27
47429: PUSH
47430: LD_INT 27
47432: PUSH
47433: LD_INT 28
47435: PUSH
47436: LD_INT 28
47438: PUSH
47439: LD_INT 25
47441: PUSH
47442: LD_INT 26
47444: PUSH
47445: EMPTY
47446: LIST
47447: LIST
47448: LIST
47449: LIST
47450: LIST
47451: LIST
47452: PUSH
47453: LD_INT 1
47455: PPUSH
47456: LD_INT 6
47458: PPUSH
47459: CALL_OW 12
47463: ARRAY
47464: PUSH
47465: EMPTY
47466: LIST
47467: LIST
47468: LIST
47469: LIST
47470: PUSH
47471: EMPTY
47472: LIST
47473: LIST
47474: LIST
47475: LIST
47476: LIST
47477: ADD
47478: ST_TO_ADDR
// player_uns = create_player_forces ( 0 , vehicle_list ) ;
47479: LD_ADDR_VAR 0 5
47483: PUSH
47484: LD_INT 0
47486: PPUSH
47487: LD_VAR 0 12
47491: PPUSH
47492: CALL 63806 0 2
47496: ST_TO_ADDR
// human_list = human_list diff heike ;
47497: LD_ADDR_VAR 0 11
47501: PUSH
47502: LD_VAR 0 11
47506: PUSH
47507: LD_EXP 12
47511: DIFF
47512: ST_TO_ADDR
// temp_list = [ ] ;
47513: LD_ADDR_VAR 0 10
47517: PUSH
47518: EMPTY
47519: ST_TO_ADDR
// for i = 1 to [ 9 , 8 , 7 ] [ difficulty ] do
47520: LD_ADDR_VAR 0 3
47524: PUSH
47525: DOUBLE
47526: LD_INT 1
47528: DEC
47529: ST_TO_ADDR
47530: LD_INT 9
47532: PUSH
47533: LD_INT 8
47535: PUSH
47536: LD_INT 7
47538: PUSH
47539: EMPTY
47540: LIST
47541: LIST
47542: LIST
47543: PUSH
47544: LD_OWVAR 67
47548: ARRAY
47549: PUSH
47550: FOR_TO
47551: IFFALSE 47617
// begin temp = rand ( 1 , human_list ) ;
47553: LD_ADDR_VAR 0 13
47557: PUSH
47558: LD_INT 1
47560: PPUSH
47561: LD_VAR 0 11
47565: PPUSH
47566: CALL_OW 12
47570: ST_TO_ADDR
// temp_list = temp_list ^ human_list [ temp ] ;
47571: LD_ADDR_VAR 0 10
47575: PUSH
47576: LD_VAR 0 10
47580: PUSH
47581: LD_VAR 0 11
47585: PUSH
47586: LD_VAR 0 13
47590: ARRAY
47591: ADD
47592: ST_TO_ADDR
// human_list = human_list diff human_list [ temp ] ;
47593: LD_ADDR_VAR 0 11
47597: PUSH
47598: LD_VAR 0 11
47602: PUSH
47603: LD_VAR 0 11
47607: PUSH
47608: LD_VAR 0 13
47612: ARRAY
47613: DIFF
47614: ST_TO_ADDR
// end ;
47615: GO 47550
47617: POP
47618: POP
// setclass ( temp_list [ 1 ] , class_engineer ) ;
47619: LD_VAR 0 10
47623: PUSH
47624: LD_INT 1
47626: ARRAY
47627: PPUSH
47628: LD_INT 2
47630: PPUSH
47631: CALL_OW 336
// temp_list = temp_list ^ Heike ;
47635: LD_ADDR_VAR 0 10
47639: PUSH
47640: LD_VAR 0 10
47644: PUSH
47645: LD_EXP 12
47649: ADD
47650: ST_TO_ADDR
// if unitfilter ( temp_list , [ f_class , class_mechanic ] ) > 0 then
47651: LD_VAR 0 10
47655: PPUSH
47656: LD_INT 25
47658: PUSH
47659: LD_INT 3
47661: PUSH
47662: EMPTY
47663: LIST
47664: LIST
47665: PPUSH
47666: CALL_OW 72
47670: PUSH
47671: LD_INT 0
47673: GREATER
47674: IFFALSE 47707
// temp = unitfilter ( temp_list , [ f_class , class_mechanic ] ) [ 1 ] else
47676: LD_ADDR_VAR 0 13
47680: PUSH
47681: LD_VAR 0 10
47685: PPUSH
47686: LD_INT 25
47688: PUSH
47689: LD_INT 3
47691: PUSH
47692: EMPTY
47693: LIST
47694: LIST
47695: PPUSH
47696: CALL_OW 72
47700: PUSH
47701: LD_INT 1
47703: ARRAY
47704: ST_TO_ADDR
47705: GO 47721
// temp = temp_list [ 2 ] ;
47707: LD_ADDR_VAR 0 13
47711: PUSH
47712: LD_VAR 0 10
47716: PUSH
47717: LD_INT 2
47719: ARRAY
47720: ST_TO_ADDR
// setclass ( temp , class_mechanic ) ;
47721: LD_VAR 0 13
47725: PPUSH
47726: LD_INT 3
47728: PPUSH
47729: CALL_OW 336
// placehumaninunit ( temp , unitfilter ( player_uns [ 2 ] , [ f_weapon , ar_control_tower ] ) [ 1 ] ) ;
47733: LD_VAR 0 13
47737: PPUSH
47738: LD_VAR 0 5
47742: PUSH
47743: LD_INT 2
47745: ARRAY
47746: PPUSH
47747: LD_INT 34
47749: PUSH
47750: LD_INT 31
47752: PUSH
47753: EMPTY
47754: LIST
47755: LIST
47756: PPUSH
47757: CALL_OW 72
47761: PUSH
47762: LD_INT 1
47764: ARRAY
47765: PPUSH
47766: CALL_OW 52
// for i in temp_list do
47770: LD_ADDR_VAR 0 3
47774: PUSH
47775: LD_VAR 0 10
47779: PUSH
47780: FOR_IN
47781: IFFALSE 47865
// for j in player_uns [ 2 ] do
47783: LD_ADDR_VAR 0 4
47787: PUSH
47788: LD_VAR 0 5
47792: PUSH
47793: LD_INT 2
47795: ARRAY
47796: PUSH
47797: FOR_IN
47798: IFFALSE 47861
// if IsInUnit ( i ) = 0 and GetControl ( j ) = control_manual and IsDrivenBy ( j ) = 0 then
47800: LD_VAR 0 3
47804: PPUSH
47805: CALL_OW 310
47809: PUSH
47810: LD_INT 0
47812: EQUAL
47813: PUSH
47814: LD_VAR 0 4
47818: PPUSH
47819: CALL_OW 263
47823: PUSH
47824: LD_INT 1
47826: EQUAL
47827: AND
47828: PUSH
47829: LD_VAR 0 4
47833: PPUSH
47834: CALL_OW 311
47838: PUSH
47839: LD_INT 0
47841: EQUAL
47842: AND
47843: IFFALSE 47859
// PlaceHumanInUnit ( i , j ) ;
47845: LD_VAR 0 3
47849: PPUSH
47850: LD_VAR 0 4
47854: PPUSH
47855: CALL_OW 52
47859: GO 47797
47861: POP
47862: POP
47863: GO 47780
47865: POP
47866: POP
// player_forces = isinunit ( Heike ) ;
47867: LD_ADDR_EXP 174
47871: PUSH
47872: LD_EXP 12
47876: PPUSH
47877: CALL_OW 310
47881: ST_TO_ADDR
// vehicle_list = player_uns [ 2 ] diff isinunit ( Heike ) ;
47882: LD_ADDR_VAR 0 12
47886: PUSH
47887: LD_VAR 0 5
47891: PUSH
47892: LD_INT 2
47894: ARRAY
47895: PUSH
47896: LD_EXP 12
47900: PPUSH
47901: CALL_OW 310
47905: DIFF
47906: ST_TO_ADDR
// player_forces = player_forces ^ unitfilter ( Vehicle_list , [ f_weapon , ar_control_tower ] ) [ 1 ] ;
47907: LD_ADDR_EXP 174
47911: PUSH
47912: LD_EXP 174
47916: PUSH
47917: LD_VAR 0 12
47921: PPUSH
47922: LD_INT 34
47924: PUSH
47925: LD_INT 31
47927: PUSH
47928: EMPTY
47929: LIST
47930: LIST
47931: PPUSH
47932: CALL_OW 72
47936: PUSH
47937: LD_INT 1
47939: ARRAY
47940: ADD
47941: ST_TO_ADDR
// vehicle_list = vehicle_list diff unitfilter ( Vehicle_list , [ f_weapon , ar_control_tower ] ) [ 1 ] ;
47942: LD_ADDR_VAR 0 12
47946: PUSH
47947: LD_VAR 0 12
47951: PUSH
47952: LD_VAR 0 12
47956: PPUSH
47957: LD_INT 34
47959: PUSH
47960: LD_INT 31
47962: PUSH
47963: EMPTY
47964: LIST
47965: LIST
47966: PPUSH
47967: CALL_OW 72
47971: PUSH
47972: LD_INT 1
47974: ARRAY
47975: DIFF
47976: ST_TO_ADDR
// for i in unitfilter ( vehicle_list , [ f_not , [ f_empty ] ] ) do
47977: LD_ADDR_VAR 0 3
47981: PUSH
47982: LD_VAR 0 12
47986: PPUSH
47987: LD_INT 3
47989: PUSH
47990: LD_INT 58
47992: PUSH
47993: EMPTY
47994: LIST
47995: PUSH
47996: EMPTY
47997: LIST
47998: LIST
47999: PPUSH
48000: CALL_OW 72
48004: PUSH
48005: FOR_IN
48006: IFFALSE 48026
// player_forces = player_forces ^ i ;
48008: LD_ADDR_EXP 174
48012: PUSH
48013: LD_EXP 174
48017: PUSH
48018: LD_VAR 0 3
48022: ADD
48023: ST_TO_ADDR
48024: GO 48005
48026: POP
48027: POP
// SetTech ( 72 , 2 , state_enabled ) ;
48028: LD_INT 72
48030: PPUSH
48031: LD_INT 2
48033: PPUSH
48034: LD_INT 1
48036: PPUSH
48037: CALL_OW 322
// if All_variant = 1 then
48041: LD_EXP 3
48045: PUSH
48046: LD_INT 1
48048: EQUAL
48049: IFFALSE 48087
// begin uc_side = 3 ;
48051: LD_ADDR_OWVAR 20
48055: PUSH
48056: LD_INT 3
48058: ST_TO_ADDR
// uc_nation = nation_russian ;
48059: LD_ADDR_OWVAR 21
48063: PUSH
48064: LD_INT 3
48066: ST_TO_ADDR
// preparemechanic ( false , 10 ) ;
48067: LD_INT 0
48069: PPUSH
48070: LD_INT 10
48072: PPUSH
48073: CALL_OW 383
// Alliance_sol = createhuman ;
48077: LD_ADDR_EXP 28
48081: PUSH
48082: CALL_OW 44
48086: ST_TO_ADDR
// end ; end ; if help_variant = 1 then
48087: LD_EXP 2
48091: PUSH
48092: LD_INT 1
48094: EQUAL
48095: IFFALSE 48467
// for i = 1 to 3 do
48097: LD_ADDR_VAR 0 3
48101: PUSH
48102: DOUBLE
48103: LD_INT 1
48105: DEC
48106: ST_TO_ADDR
48107: LD_INT 3
48109: PUSH
48110: FOR_TO
48111: IFFALSE 48465
// begin uc_side = 2 ;
48113: LD_ADDR_OWVAR 20
48117: PUSH
48118: LD_INT 2
48120: ST_TO_ADDR
// uc_nation = nation_arabian ;
48121: LD_ADDR_OWVAR 21
48125: PUSH
48126: LD_INT 2
48128: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
48129: LD_ADDR_OWVAR 27
48133: PUSH
48134: LD_INT 1
48136: PPUSH
48137: LD_INT 2
48139: PPUSH
48140: CALL_OW 12
48144: ST_TO_ADDR
// case rand ( 1 , 3 ) of 1 :
48145: LD_INT 1
48147: PPUSH
48148: LD_INT 3
48150: PPUSH
48151: CALL_OW 12
48155: PUSH
48156: LD_INT 1
48158: DOUBLE
48159: EQUAL
48160: IFTRUE 48164
48162: GO 48222
48164: POP
// hc_skills = [ rand ( 9 , 10 ) , rand ( 4 , 5 ) , rand ( 1 , 2 ) , rand ( 1 , 2 ) ] ; 2 :
48165: LD_ADDR_OWVAR 31
48169: PUSH
48170: LD_INT 9
48172: PPUSH
48173: LD_INT 10
48175: PPUSH
48176: CALL_OW 12
48180: PUSH
48181: LD_INT 4
48183: PPUSH
48184: LD_INT 5
48186: PPUSH
48187: CALL_OW 12
48191: PUSH
48192: LD_INT 1
48194: PPUSH
48195: LD_INT 2
48197: PPUSH
48198: CALL_OW 12
48202: PUSH
48203: LD_INT 1
48205: PPUSH
48206: LD_INT 2
48208: PPUSH
48209: CALL_OW 12
48213: PUSH
48214: EMPTY
48215: LIST
48216: LIST
48217: LIST
48218: LIST
48219: ST_TO_ADDR
48220: GO 48355
48222: LD_INT 2
48224: DOUBLE
48225: EQUAL
48226: IFTRUE 48230
48228: GO 48288
48230: POP
// hc_skills = [ rand ( 9 , 10 ) , rand ( 1 , 2 ) , rand ( 4 , 5 ) , rand ( 1 , 2 ) ] ; 3 :
48231: LD_ADDR_OWVAR 31
48235: PUSH
48236: LD_INT 9
48238: PPUSH
48239: LD_INT 10
48241: PPUSH
48242: CALL_OW 12
48246: PUSH
48247: LD_INT 1
48249: PPUSH
48250: LD_INT 2
48252: PPUSH
48253: CALL_OW 12
48257: PUSH
48258: LD_INT 4
48260: PPUSH
48261: LD_INT 5
48263: PPUSH
48264: CALL_OW 12
48268: PUSH
48269: LD_INT 1
48271: PPUSH
48272: LD_INT 2
48274: PPUSH
48275: CALL_OW 12
48279: PUSH
48280: EMPTY
48281: LIST
48282: LIST
48283: LIST
48284: LIST
48285: ST_TO_ADDR
48286: GO 48355
48288: LD_INT 3
48290: DOUBLE
48291: EQUAL
48292: IFTRUE 48296
48294: GO 48354
48296: POP
// hc_skills = [ rand ( 9 , 10 ) , rand ( 1 , 2 ) , rand ( 1 , 2 ) , rand ( 4 , 5 ) ] ; end ;
48297: LD_ADDR_OWVAR 31
48301: PUSH
48302: LD_INT 9
48304: PPUSH
48305: LD_INT 10
48307: PPUSH
48308: CALL_OW 12
48312: PUSH
48313: LD_INT 1
48315: PPUSH
48316: LD_INT 2
48318: PPUSH
48319: CALL_OW 12
48323: PUSH
48324: LD_INT 1
48326: PPUSH
48327: LD_INT 2
48329: PPUSH
48330: CALL_OW 12
48334: PUSH
48335: LD_INT 4
48337: PPUSH
48338: LD_INT 5
48340: PPUSH
48341: CALL_OW 12
48345: PUSH
48346: EMPTY
48347: LIST
48348: LIST
48349: LIST
48350: LIST
48351: ST_TO_ADDR
48352: GO 48355
48354: POP
// if rand ( 1 , 2 ) = 1 then
48355: LD_INT 1
48357: PPUSH
48358: LD_INT 2
48360: PPUSH
48361: CALL_OW 12
48365: PUSH
48366: LD_INT 1
48368: EQUAL
48369: IFFALSE 48388
// hc_attr = [ 10 , 11 ] else
48371: LD_ADDR_OWVAR 29
48375: PUSH
48376: LD_INT 10
48378: PUSH
48379: LD_INT 11
48381: PUSH
48382: EMPTY
48383: LIST
48384: LIST
48385: ST_TO_ADDR
48386: GO 48403
// hc_attr = [ 11 , 10 ] ;
48388: LD_ADDR_OWVAR 29
48392: PUSH
48393: LD_INT 11
48395: PUSH
48396: LD_INT 10
48398: PUSH
48399: EMPTY
48400: LIST
48401: LIST
48402: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
48403: LD_INT 1
48405: PPUSH
48406: LD_INT 2
48408: PPUSH
48409: CALL_OW 12
48413: PUSH
48414: LD_INT 1
48416: EQUAL
48417: IFFALSE 48429
// hc_class = class_soldier else
48419: LD_ADDR_OWVAR 28
48423: PUSH
48424: LD_INT 1
48426: ST_TO_ADDR
48427: GO 48437
// hc_class = class_mortar ;
48429: LD_ADDR_OWVAR 28
48433: PUSH
48434: LD_INT 8
48436: ST_TO_ADDR
// un = createhuman ;
48437: LD_ADDR_VAR 0 8
48441: PUSH
48442: CALL_OW 44
48446: ST_TO_ADDR
// player_forces = player_forces ^ un ;
48447: LD_ADDR_EXP 174
48451: PUSH
48452: LD_EXP 174
48456: PUSH
48457: LD_VAR 0 8
48461: ADD
48462: ST_TO_ADDR
// end ;
48463: GO 48110
48465: POP
48466: POP
// if All_variant = 1 then
48467: LD_EXP 3
48471: PUSH
48472: LD_INT 1
48474: EQUAL
48475: IFFALSE 49233
// begin uc_side = 3 ;
48477: LD_ADDR_OWVAR 20
48481: PUSH
48482: LD_INT 3
48484: ST_TO_ADDR
// uc_nation = nation_russian ;
48485: LD_ADDR_OWVAR 21
48489: PUSH
48490: LD_INT 3
48492: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
48493: LD_ADDR_OWVAR 37
48497: PUSH
48498: LD_INT 22
48500: ST_TO_ADDR
// vc_weapon = ru_cargo_bay ;
48501: LD_ADDR_OWVAR 40
48505: PUSH
48506: LD_INT 51
48508: ST_TO_ADDR
// vc_engine = engine_siberite ;
48509: LD_ADDR_OWVAR 39
48513: PUSH
48514: LD_INT 3
48516: ST_TO_ADDR
// vc_control = control_computer ;
48517: LD_ADDR_OWVAR 38
48521: PUSH
48522: LD_INT 3
48524: ST_TO_ADDR
// ConvoyCargos = Createvehicle ^ Createvehicle ^ Createvehicle ^ Createvehicle ^ Createvehicle ^ Createvehicle ;
48525: LD_ADDR_EXP 148
48529: PUSH
48530: CALL_OW 45
48534: PUSH
48535: CALL_OW 45
48539: ADD
48540: PUSH
48541: CALL_OW 45
48545: ADD
48546: PUSH
48547: CALL_OW 45
48551: ADD
48552: PUSH
48553: CALL_OW 45
48557: ADD
48558: PUSH
48559: CALL_OW 45
48563: ADD
48564: ST_TO_ADDR
// SetCargo ( ConvoyCargos [ 1 ] , mat_siberit , 50 ) ;
48565: LD_EXP 148
48569: PUSH
48570: LD_INT 1
48572: ARRAY
48573: PPUSH
48574: LD_INT 3
48576: PPUSH
48577: LD_INT 50
48579: PPUSH
48580: CALL_OW 290
// SetCargo ( ConvoyCargos [ 2 ] , mat_oil , 100 ) ;
48584: LD_EXP 148
48588: PUSH
48589: LD_INT 2
48591: ARRAY
48592: PPUSH
48593: LD_INT 2
48595: PPUSH
48596: LD_INT 100
48598: PPUSH
48599: CALL_OW 290
// SetCargo ( ConvoyCargos [ 3 ] ^ ConvoyCargos [ 4 ] ^ ConvoyCargos [ 5 ] ^ ConvoyCargos [ 6 ] , mat_cans , 100 ) ;
48603: LD_EXP 148
48607: PUSH
48608: LD_INT 3
48610: ARRAY
48611: PUSH
48612: LD_EXP 148
48616: PUSH
48617: LD_INT 4
48619: ARRAY
48620: ADD
48621: PUSH
48622: LD_EXP 148
48626: PUSH
48627: LD_INT 5
48629: ARRAY
48630: ADD
48631: PUSH
48632: LD_EXP 148
48636: PUSH
48637: LD_INT 6
48639: ARRAY
48640: ADD
48641: PPUSH
48642: LD_INT 1
48644: PPUSH
48645: LD_INT 100
48647: PPUSH
48648: CALL_OW 290
// ConvoyRussians = [ ] ;
48652: LD_ADDR_EXP 149
48656: PUSH
48657: EMPTY
48658: ST_TO_ADDR
// ConvoyAlliance = [ ] ;
48659: LD_ADDR_EXP 150
48663: PUSH
48664: EMPTY
48665: ST_TO_ADDR
// vc_control = control_manual ;
48666: LD_ADDR_OWVAR 38
48670: PUSH
48671: LD_INT 1
48673: ST_TO_ADDR
// vc_chassis = ru_heavy_tracked ;
48674: LD_ADDR_OWVAR 37
48678: PUSH
48679: LD_INT 24
48681: ST_TO_ADDR
// vc_weapon = ru_heavy_gun ;
48682: LD_ADDR_OWVAR 40
48686: PUSH
48687: LD_INT 46
48689: ST_TO_ADDR
// ConvoyRussians = ConvoyRussians ^ CreateVehicle ;
48690: LD_ADDR_EXP 149
48694: PUSH
48695: LD_EXP 149
48699: PUSH
48700: CALL_OW 45
48704: ADD
48705: ST_TO_ADDR
// ConvoyAlliance = ConvoyAlliance ^ CreateVehicle ;
48706: LD_ADDR_EXP 150
48710: PUSH
48711: LD_EXP 150
48715: PUSH
48716: CALL_OW 45
48720: ADD
48721: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
48722: LD_ADDR_OWVAR 37
48726: PUSH
48727: LD_INT 22
48729: ST_TO_ADDR
// for i = 1 to 3 do
48730: LD_ADDR_VAR 0 3
48734: PUSH
48735: DOUBLE
48736: LD_INT 1
48738: DEC
48739: ST_TO_ADDR
48740: LD_INT 3
48742: PUSH
48743: FOR_TO
48744: IFFALSE 48842
// begin vc_weapon = [ ru_gun , ru_gatling_gun , ru_rocket_launcher ] [ rand ( 1 , 3 ) ] ;
48746: LD_ADDR_OWVAR 40
48750: PUSH
48751: LD_INT 44
48753: PUSH
48754: LD_INT 43
48756: PUSH
48757: LD_INT 45
48759: PUSH
48760: EMPTY
48761: LIST
48762: LIST
48763: LIST
48764: PUSH
48765: LD_INT 1
48767: PPUSH
48768: LD_INT 3
48770: PPUSH
48771: CALL_OW 12
48775: ARRAY
48776: ST_TO_ADDR
// ConvoyRussians = ConvoyRussians ^ CreateVehicle ;
48777: LD_ADDR_EXP 149
48781: PUSH
48782: LD_EXP 149
48786: PUSH
48787: CALL_OW 45
48791: ADD
48792: ST_TO_ADDR
// vc_weapon = [ ru_gun , ru_gatling_gun , ru_rocket_launcher ] [ rand ( 1 , 3 ) ] ;
48793: LD_ADDR_OWVAR 40
48797: PUSH
48798: LD_INT 44
48800: PUSH
48801: LD_INT 43
48803: PUSH
48804: LD_INT 45
48806: PUSH
48807: EMPTY
48808: LIST
48809: LIST
48810: LIST
48811: PUSH
48812: LD_INT 1
48814: PPUSH
48815: LD_INT 3
48817: PPUSH
48818: CALL_OW 12
48822: ARRAY
48823: ST_TO_ADDR
// ConvoyAlliance = ConvoyAlliance ^ CreateVehicle ;
48824: LD_ADDR_EXP 150
48828: PUSH
48829: LD_EXP 150
48833: PUSH
48834: CALL_OW 45
48838: ADD
48839: ST_TO_ADDR
// end ;
48840: GO 48743
48842: POP
48843: POP
// preparemechanic ( false , [ 7 , 8 , 9 ] [ difficulty ] ) ;
48844: LD_INT 0
48846: PPUSH
48847: LD_INT 7
48849: PUSH
48850: LD_INT 8
48852: PUSH
48853: LD_INT 9
48855: PUSH
48856: EMPTY
48857: LIST
48858: LIST
48859: LIST
48860: PUSH
48861: LD_OWVAR 67
48865: ARRAY
48866: PPUSH
48867: CALL_OW 383
// un = createhuman ;
48871: LD_ADDR_VAR 0 8
48875: PUSH
48876: CALL_OW 44
48880: ST_TO_ADDR
// placehumaninunit ( un , ConvoyRussians [ 1 ] ) ;
48881: LD_VAR 0 8
48885: PPUSH
48886: LD_EXP 149
48890: PUSH
48891: LD_INT 1
48893: ARRAY
48894: PPUSH
48895: CALL_OW 52
// if getskill ( Alliance_sol , skill_mechanical ) < [ 7 , 8 , 9 ] [ difficulty ] then
48899: LD_EXP 28
48903: PPUSH
48904: LD_INT 3
48906: PPUSH
48907: CALL_OW 259
48911: PUSH
48912: LD_INT 7
48914: PUSH
48915: LD_INT 8
48917: PUSH
48918: LD_INT 9
48920: PUSH
48921: EMPTY
48922: LIST
48923: LIST
48924: LIST
48925: PUSH
48926: LD_OWVAR 67
48930: ARRAY
48931: LESS
48932: IFFALSE 48966
// setskill ( Alliance_sol , skill_mechanical , [ 7 , 8 , 9 ] [ difficulty ] ) ;
48934: LD_EXP 28
48938: PPUSH
48939: LD_INT 3
48941: PPUSH
48942: LD_INT 7
48944: PUSH
48945: LD_INT 8
48947: PUSH
48948: LD_INT 9
48950: PUSH
48951: EMPTY
48952: LIST
48953: LIST
48954: LIST
48955: PUSH
48956: LD_OWVAR 67
48960: ARRAY
48961: PPUSH
48962: CALL_OW 237
// placehumaninunit ( Alliance_sol , ConvoyAlliance [ 1 ] ) ;
48966: LD_EXP 28
48970: PPUSH
48971: LD_EXP 150
48975: PUSH
48976: LD_INT 1
48978: ARRAY
48979: PPUSH
48980: CALL_OW 52
// for i = 1 to ConvoyRussians do
48984: LD_ADDR_VAR 0 3
48988: PUSH
48989: DOUBLE
48990: LD_INT 1
48992: DEC
48993: ST_TO_ADDR
48994: LD_EXP 149
48998: PUSH
48999: FOR_TO
49000: IFFALSE 49061
// begin preparemechanic ( false , [ 7 , 8 , 9 ] [ difficulty ] ) ;
49002: LD_INT 0
49004: PPUSH
49005: LD_INT 7
49007: PUSH
49008: LD_INT 8
49010: PUSH
49011: LD_INT 9
49013: PUSH
49014: EMPTY
49015: LIST
49016: LIST
49017: LIST
49018: PUSH
49019: LD_OWVAR 67
49023: ARRAY
49024: PPUSH
49025: CALL_OW 383
// if i > 1 then
49029: LD_VAR 0 3
49033: PUSH
49034: LD_INT 1
49036: GREATER
49037: IFFALSE 49059
// placehumaninunit ( createhuman , ConvoyRussians [ i ] ) ;
49039: CALL_OW 44
49043: PPUSH
49044: LD_EXP 149
49048: PUSH
49049: LD_VAR 0 3
49053: ARRAY
49054: PPUSH
49055: CALL_OW 52
// end ;
49059: GO 48999
49061: POP
49062: POP
// temp_list = [ ] ;
49063: LD_ADDR_VAR 0 10
49067: PUSH
49068: EMPTY
49069: ST_TO_ADDR
// if not testing then
49070: LD_EXP 1
49074: NOT
49075: IFFALSE 49114
// begin temp_list = LoadCharacter ( Released_Russian_prisoners_10 , 0 , 0 ) ;
49077: LD_ADDR_VAR 0 10
49081: PUSH
49082: LD_STRING Released_Russian_prisoners_10
49084: PPUSH
49085: LD_INT 0
49087: PPUSH
49088: LD_INT 0
49090: PPUSH
49091: CALL_OW 527
49095: ST_TO_ADDR
// temp_list = delete ( temp_list , 1 ) ;
49096: LD_ADDR_VAR 0 10
49100: PUSH
49101: LD_VAR 0 10
49105: PPUSH
49106: LD_INT 1
49108: PPUSH
49109: CALL_OW 3
49113: ST_TO_ADDR
// end ; while temp_list < 3 do
49114: LD_VAR 0 10
49118: PUSH
49119: LD_INT 3
49121: LESS
49122: IFFALSE 49169
// begin preparemechanic ( false , [ 7 , 8 , 9 ] [ difficulty ] ) ;
49124: LD_INT 0
49126: PPUSH
49127: LD_INT 7
49129: PUSH
49130: LD_INT 8
49132: PUSH
49133: LD_INT 9
49135: PUSH
49136: EMPTY
49137: LIST
49138: LIST
49139: LIST
49140: PUSH
49141: LD_OWVAR 67
49145: ARRAY
49146: PPUSH
49147: CALL_OW 383
// temp_list = temp_list ^ createhuman ;
49151: LD_ADDR_VAR 0 10
49155: PUSH
49156: LD_VAR 0 10
49160: PUSH
49161: CALL_OW 44
49165: ADD
49166: ST_TO_ADDR
// end ;
49167: GO 49114
// for i = 1 to ConvoyAlliance do
49169: LD_ADDR_VAR 0 3
49173: PUSH
49174: DOUBLE
49175: LD_INT 1
49177: DEC
49178: ST_TO_ADDR
49179: LD_EXP 150
49183: PUSH
49184: FOR_TO
49185: IFFALSE 49229
// if i > 1 then
49187: LD_VAR 0 3
49191: PUSH
49192: LD_INT 1
49194: GREATER
49195: IFFALSE 49227
// placehumaninunit ( temp_list [ i - 1 ] , ConvoyAlliance [ i ] ) ;
49197: LD_VAR 0 10
49201: PUSH
49202: LD_VAR 0 3
49206: PUSH
49207: LD_INT 1
49209: MINUS
49210: ARRAY
49211: PPUSH
49212: LD_EXP 150
49216: PUSH
49217: LD_VAR 0 3
49221: ARRAY
49222: PPUSH
49223: CALL_OW 52
49227: GO 49184
49229: POP
49230: POP
// end else
49231: GO 49279
// begin ConvoyRussians = [ 0 , 0 , 0 , 0 ] ;
49233: LD_ADDR_EXP 149
49237: PUSH
49238: LD_INT 0
49240: PUSH
49241: LD_INT 0
49243: PUSH
49244: LD_INT 0
49246: PUSH
49247: LD_INT 0
49249: PUSH
49250: EMPTY
49251: LIST
49252: LIST
49253: LIST
49254: LIST
49255: ST_TO_ADDR
// ConvoyAlliance = [ 0 , 0 , 0 , 0 ] ;
49256: LD_ADDR_EXP 150
49260: PUSH
49261: LD_INT 0
49263: PUSH
49264: LD_INT 0
49266: PUSH
49267: LD_INT 0
49269: PUSH
49270: LD_INT 0
49272: PUSH
49273: EMPTY
49274: LIST
49275: LIST
49276: LIST
49277: LIST
49278: ST_TO_ADDR
// end ; end ;
49279: LD_VAR 0 1
49283: RET
// function LoadPlayerChar ( c_name ) ; begin
49284: LD_INT 0
49286: PPUSH
// if TestCharacters ( c_name & _15a ) then
49287: LD_VAR 0 1
49291: PUSH
49292: LD_STRING _15a
49294: STR
49295: PPUSH
49296: CALL_OW 28
49300: IFFALSE 49323
// result = CreateCharacter ( c_name & _15a ) else
49302: LD_ADDR_VAR 0 2
49306: PUSH
49307: LD_VAR 0 1
49311: PUSH
49312: LD_STRING _15a
49314: STR
49315: PPUSH
49316: CALL_OW 34
49320: ST_TO_ADDR
49321: GO 49331
// result = 0 ;
49323: LD_ADDR_VAR 0 2
49327: PUSH
49328: LD_INT 0
49330: ST_TO_ADDR
// end ;
49331: LD_VAR 0 2
49335: RET
// function ScanBuildings ; var side , i , temp_list , base , area , temp_list_2 , k ; var rubun7_new , rubun3_new ; begin
49336: LD_INT 0
49338: PPUSH
49339: PPUSH
49340: PPUSH
49341: PPUSH
49342: PPUSH
49343: PPUSH
49344: PPUSH
49345: PPUSH
49346: PPUSH
49347: PPUSH
// for base in ai_bases do
49348: LD_ADDR_VAR 0 5
49352: PUSH
49353: LD_EXP 29
49357: PUSH
49358: FOR_IN
49359: IFFALSE 49724
// begin area = GetBaseArea ( base ) ;
49361: LD_ADDR_VAR 0 6
49365: PUSH
49366: LD_VAR 0 5
49370: PPUSH
49371: CALL 3614 0 1
49375: ST_TO_ADDR
// side = GetBaseSide ( base ) ;
49376: LD_ADDR_VAR 0 2
49380: PUSH
49381: LD_VAR 0 5
49385: PPUSH
49386: CALL 3818 0 1
49390: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_inarea , area ] ] ) ) ;
49391: LD_ADDR_EXP 66
49395: PUSH
49396: LD_EXP 66
49400: PPUSH
49401: LD_VAR 0 5
49405: PPUSH
49406: LD_INT 22
49408: PUSH
49409: LD_VAR 0 2
49413: PUSH
49414: EMPTY
49415: LIST
49416: LIST
49417: PUSH
49418: LD_INT 21
49420: PUSH
49421: LD_INT 3
49423: PUSH
49424: EMPTY
49425: LIST
49426: LIST
49427: PUSH
49428: LD_INT 95
49430: PUSH
49431: LD_VAR 0 6
49435: PUSH
49436: EMPTY
49437: LIST
49438: LIST
49439: PUSH
49440: EMPTY
49441: LIST
49442: LIST
49443: LIST
49444: PPUSH
49445: CALL_OW 69
49449: PPUSH
49450: CALL_OW 1
49454: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
49455: LD_ADDR_VAR 0 3
49459: PUSH
49460: LD_EXP 66
49464: PUSH
49465: LD_VAR 0 5
49469: ARRAY
49470: PUSH
49471: FOR_IN
49472: IFFALSE 49493
// UpdateBuildingBasicVariables ( base , i , true ) ;
49474: LD_VAR 0 5
49478: PPUSH
49479: LD_VAR 0 3
49483: PPUSH
49484: LD_INT 1
49486: PPUSH
49487: CALL 49912 0 3
49491: GO 49471
49493: POP
49494: POP
// temp_list = [ ] ;
49495: LD_ADDR_VAR 0 4
49499: PUSH
49500: EMPTY
49501: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
49502: LD_ADDR_VAR 0 3
49506: PUSH
49507: LD_EXP 66
49511: PUSH
49512: LD_VAR 0 5
49516: ARRAY
49517: PUSH
49518: FOR_IN
49519: IFFALSE 49622
// begin temp_list = temp_list ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetLabKind ( i , 1 ) , GetLabKind ( i , 2 ) , GetBWeapon ( i ) ] ] ;
49521: LD_ADDR_VAR 0 4
49525: PUSH
49526: LD_VAR 0 4
49530: PUSH
49531: LD_VAR 0 3
49535: PPUSH
49536: CALL_OW 250
49540: PUSH
49541: LD_VAR 0 3
49545: PPUSH
49546: CALL_OW 251
49550: PUSH
49551: LD_VAR 0 3
49555: PPUSH
49556: CALL_OW 254
49560: PUSH
49561: LD_VAR 0 3
49565: PPUSH
49566: CALL_OW 266
49570: PUSH
49571: LD_VAR 0 3
49575: PPUSH
49576: LD_INT 1
49578: PPUSH
49579: CALL_OW 268
49583: PUSH
49584: LD_VAR 0 3
49588: PPUSH
49589: LD_INT 2
49591: PPUSH
49592: CALL_OW 268
49596: PUSH
49597: LD_VAR 0 3
49601: PPUSH
49602: CALL_OW 269
49606: PUSH
49607: EMPTY
49608: LIST
49609: LIST
49610: LIST
49611: LIST
49612: LIST
49613: LIST
49614: LIST
49615: PUSH
49616: EMPTY
49617: LIST
49618: ADD
49619: ST_TO_ADDR
// end ;
49620: GO 49518
49622: POP
49623: POP
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list ) ;
49624: LD_ADDR_EXP 51
49628: PUSH
49629: LD_EXP 51
49633: PPUSH
49634: LD_VAR 0 5
49638: PPUSH
49639: LD_VAR 0 4
49643: PPUSH
49644: CALL_OW 1
49648: ST_TO_ADDR
// SortBuildingLocationsListInCorrectOrder ( base ) ;
49649: LD_VAR 0 5
49653: PPUSH
49654: CALL 51124 0 1
// for i in ai_siberite_mines [ base ] ^ ai_oil_mine [ base ] do
49658: LD_ADDR_VAR 0 3
49662: PUSH
49663: LD_EXP 46
49667: PUSH
49668: LD_VAR 0 5
49672: ARRAY
49673: PUSH
49674: LD_EXP 45
49678: PUSH
49679: LD_VAR 0 5
49683: ARRAY
49684: ADD
49685: PUSH
49686: FOR_IN
49687: IFFALSE 49720
// SetResourceVisibility ( GetX ( i ) , GetY ( i ) , side ) ;
49689: LD_VAR 0 3
49693: PPUSH
49694: CALL_OW 250
49698: PPUSH
49699: LD_VAR 0 3
49703: PPUSH
49704: CALL_OW 251
49708: PPUSH
49709: LD_VAR 0 2
49713: PPUSH
49714: CALL_OW 441
49718: GO 49686
49720: POP
49721: POP
// end ;
49722: GO 49358
49724: POP
49725: POP
// end ;
49726: LD_VAR 0 1
49730: RET
// function ReplaceBunkerWithTurret ( id ) ; var un , temp_list ; begin
49731: LD_INT 0
49733: PPUSH
49734: PPUSH
49735: PPUSH
// InitUc ;
49736: CALL_OW 18
// InitBc ;
49740: CALL_OW 21
// uc_nation = GetNation ( id ) ;
49744: LD_ADDR_OWVAR 21
49748: PUSH
49749: LD_VAR 0 1
49753: PPUSH
49754: CALL_OW 248
49758: ST_TO_ADDR
// uc_side = GetSide ( id ) ;
49759: LD_ADDR_OWVAR 20
49763: PUSH
49764: LD_VAR 0 1
49768: PPUSH
49769: CALL_OW 255
49773: ST_TO_ADDR
// temp_list = [ GetX ( id ) , GetY ( id ) , GetDir ( id ) , GetBWeapon ( id ) ] ;
49774: LD_ADDR_VAR 0 4
49778: PUSH
49779: LD_VAR 0 1
49783: PPUSH
49784: CALL_OW 250
49788: PUSH
49789: LD_VAR 0 1
49793: PPUSH
49794: CALL_OW 251
49798: PUSH
49799: LD_VAR 0 1
49803: PPUSH
49804: CALL_OW 254
49808: PUSH
49809: LD_VAR 0 1
49813: PPUSH
49814: CALL_OW 269
49818: PUSH
49819: EMPTY
49820: LIST
49821: LIST
49822: LIST
49823: LIST
49824: ST_TO_ADDR
// DestroyUnit ( id ) ;
49825: LD_VAR 0 1
49829: PPUSH
49830: CALL_OW 65
// bc_type = b_turret ;
49834: LD_ADDR_OWVAR 42
49838: PUSH
49839: LD_INT 33
49841: ST_TO_ADDR
// un = CreateAndPlaceBuildingXYD ( temp_list [ 1 ] , temp_list [ 2 ] , temp_list [ 3 ] ) ;
49842: LD_ADDR_VAR 0 3
49846: PUSH
49847: LD_VAR 0 4
49851: PUSH
49852: LD_INT 1
49854: ARRAY
49855: PPUSH
49856: LD_VAR 0 4
49860: PUSH
49861: LD_INT 2
49863: ARRAY
49864: PPUSH
49865: LD_VAR 0 4
49869: PUSH
49870: LD_INT 3
49872: ARRAY
49873: PPUSH
49874: CALL_OW 47
49878: ST_TO_ADDR
// PlaceWeaponTurret ( un , temp_list [ 4 ] ) ;
49879: LD_VAR 0 3
49883: PPUSH
49884: LD_VAR 0 4
49888: PUSH
49889: LD_INT 4
49891: ARRAY
49892: PPUSH
49893: CALL_OW 431
// result = un ;
49897: LD_ADDR_VAR 0 2
49901: PUSH
49902: LD_VAR 0 3
49906: ST_TO_ADDR
// end ;
49907: LD_VAR 0 2
49911: RET
// export function UpdateBuildingBasicVariables ( base , un , add ) ; var temp_list ; begin
49912: LD_INT 0
49914: PPUSH
49915: PPUSH
// case GetBType ( un ) of b_depot , b_warehouse :
49916: LD_VAR 0 2
49920: PPUSH
49921: CALL_OW 266
49925: PUSH
49926: LD_INT 0
49928: DOUBLE
49929: EQUAL
49930: IFTRUE 49940
49932: LD_INT 1
49934: DOUBLE
49935: EQUAL
49936: IFTRUE 49940
49938: GO 50017
49940: POP
// if add then
49941: LD_VAR 0 3
49945: IFFALSE 49974
// ai_depot = Replace ( ai_depot , base , un ) else
49947: LD_ADDR_EXP 39
49951: PUSH
49952: LD_EXP 39
49956: PPUSH
49957: LD_VAR 0 1
49961: PPUSH
49962: LD_VAR 0 2
49966: PPUSH
49967: CALL_OW 1
49971: ST_TO_ADDR
49972: GO 50015
// if un = ai_depot [ base ] then
49974: LD_VAR 0 2
49978: PUSH
49979: LD_EXP 39
49983: PUSH
49984: LD_VAR 0 1
49988: ARRAY
49989: EQUAL
49990: IFFALSE 50015
// ai_depot = Replace ( ai_depot , base , 0 ) ; b_lab , b_lab_half , b_lab_full :
49992: LD_ADDR_EXP 39
49996: PUSH
49997: LD_EXP 39
50001: PPUSH
50002: LD_VAR 0 1
50006: PPUSH
50007: LD_INT 0
50009: PPUSH
50010: CALL_OW 1
50014: ST_TO_ADDR
50015: GO 51119
50017: LD_INT 6
50019: DOUBLE
50020: EQUAL
50021: IFTRUE 50037
50023: LD_INT 7
50025: DOUBLE
50026: EQUAL
50027: IFTRUE 50037
50029: LD_INT 8
50031: DOUBLE
50032: EQUAL
50033: IFTRUE 50037
50035: GO 50117
50037: POP
// begin if add then
50038: LD_VAR 0 3
50042: IFFALSE 50068
// temp_list = ai_labs [ base ] ^ un else
50044: LD_ADDR_VAR 0 5
50048: PUSH
50049: LD_EXP 40
50053: PUSH
50054: LD_VAR 0 1
50058: ARRAY
50059: PUSH
50060: LD_VAR 0 2
50064: ADD
50065: ST_TO_ADDR
50066: GO 50090
// temp_list = ai_labs [ base ] diff un ;
50068: LD_ADDR_VAR 0 5
50072: PUSH
50073: LD_EXP 40
50077: PUSH
50078: LD_VAR 0 1
50082: ARRAY
50083: PUSH
50084: LD_VAR 0 2
50088: DIFF
50089: ST_TO_ADDR
// ai_labs = Replace ( ai_labs , base , temp_list ) ;
50090: LD_ADDR_EXP 40
50094: PUSH
50095: LD_EXP 40
50099: PPUSH
50100: LD_VAR 0 1
50104: PPUSH
50105: LD_VAR 0 5
50109: PPUSH
50110: CALL_OW 1
50114: ST_TO_ADDR
// end ; b_factory , b_workshop :
50115: GO 51119
50117: LD_INT 3
50119: DOUBLE
50120: EQUAL
50121: IFTRUE 50131
50123: LD_INT 2
50125: DOUBLE
50126: EQUAL
50127: IFTRUE 50131
50129: GO 50211
50131: POP
// begin if add then
50132: LD_VAR 0 3
50136: IFFALSE 50162
// temp_list = ai_facts [ base ] ^ un else
50138: LD_ADDR_VAR 0 5
50142: PUSH
50143: LD_EXP 41
50147: PUSH
50148: LD_VAR 0 1
50152: ARRAY
50153: PUSH
50154: LD_VAR 0 2
50158: ADD
50159: ST_TO_ADDR
50160: GO 50184
// temp_list = ai_facts [ base ] diff un ;
50162: LD_ADDR_VAR 0 5
50166: PUSH
50167: LD_EXP 41
50171: PUSH
50172: LD_VAR 0 1
50176: ARRAY
50177: PUSH
50178: LD_VAR 0 2
50182: DIFF
50183: ST_TO_ADDR
// ai_facts = Replace ( ai_facts , base , temp_list ) ;
50184: LD_ADDR_EXP 41
50188: PUSH
50189: LD_EXP 41
50193: PPUSH
50194: LD_VAR 0 1
50198: PPUSH
50199: LD_VAR 0 5
50203: PPUSH
50204: CALL_OW 1
50208: ST_TO_ADDR
// end ; b_armoury , b_barracks , b_fort :
50209: GO 51119
50211: LD_INT 4
50213: DOUBLE
50214: EQUAL
50215: IFTRUE 50231
50217: LD_INT 5
50219: DOUBLE
50220: EQUAL
50221: IFTRUE 50231
50223: LD_INT 35
50225: DOUBLE
50226: EQUAL
50227: IFTRUE 50231
50229: GO 50311
50231: POP
// begin if add then
50232: LD_VAR 0 3
50236: IFFALSE 50262
// temp_list = ai_armouries [ base ] ^ un else
50238: LD_ADDR_VAR 0 5
50242: PUSH
50243: LD_EXP 42
50247: PUSH
50248: LD_VAR 0 1
50252: ARRAY
50253: PUSH
50254: LD_VAR 0 2
50258: ADD
50259: ST_TO_ADDR
50260: GO 50284
// temp_list = ai_armouries [ base ] diff un ;
50262: LD_ADDR_VAR 0 5
50266: PUSH
50267: LD_EXP 42
50271: PUSH
50272: LD_VAR 0 1
50276: ARRAY
50277: PUSH
50278: LD_VAR 0 2
50282: DIFF
50283: ST_TO_ADDR
// ai_armouries = Replace ( ai_armouries , base , temp_list ) ;
50284: LD_ADDR_EXP 42
50288: PUSH
50289: LD_EXP 42
50293: PPUSH
50294: LD_VAR 0 1
50298: PPUSH
50299: LD_VAR 0 5
50303: PPUSH
50304: CALL_OW 1
50308: ST_TO_ADDR
// end ; b_breastwork , b_bunker :
50309: GO 51119
50311: LD_INT 31
50313: DOUBLE
50314: EQUAL
50315: IFTRUE 50325
50317: LD_INT 32
50319: DOUBLE
50320: EQUAL
50321: IFTRUE 50325
50323: GO 50405
50325: POP
// begin if add then
50326: LD_VAR 0 3
50330: IFFALSE 50356
// temp_list = ai_bunkers [ base ] ^ un else
50332: LD_ADDR_VAR 0 5
50336: PUSH
50337: LD_EXP 43
50341: PUSH
50342: LD_VAR 0 1
50346: ARRAY
50347: PUSH
50348: LD_VAR 0 2
50352: ADD
50353: ST_TO_ADDR
50354: GO 50378
// temp_list = ai_bunkers [ base ] diff un ;
50356: LD_ADDR_VAR 0 5
50360: PUSH
50361: LD_EXP 43
50365: PUSH
50366: LD_VAR 0 1
50370: ARRAY
50371: PUSH
50372: LD_VAR 0 2
50376: DIFF
50377: ST_TO_ADDR
// ai_bunkers = Replace ( ai_bunkers , base , temp_list ) ;
50378: LD_ADDR_EXP 43
50382: PUSH
50383: LD_EXP 43
50387: PPUSH
50388: LD_VAR 0 1
50392: PPUSH
50393: LD_VAR 0 5
50397: PPUSH
50398: CALL_OW 1
50402: ST_TO_ADDR
// end ; b_turret :
50403: GO 51119
50405: LD_INT 33
50407: DOUBLE
50408: EQUAL
50409: IFTRUE 50413
50411: GO 50493
50413: POP
// begin if add then
50414: LD_VAR 0 3
50418: IFFALSE 50444
// temp_list = ai_turrets [ base ] ^ un else
50420: LD_ADDR_VAR 0 5
50424: PUSH
50425: LD_EXP 44
50429: PUSH
50430: LD_VAR 0 1
50434: ARRAY
50435: PUSH
50436: LD_VAR 0 2
50440: ADD
50441: ST_TO_ADDR
50442: GO 50466
// temp_list = ai_turrets [ base ] diff un ;
50444: LD_ADDR_VAR 0 5
50448: PUSH
50449: LD_EXP 44
50453: PUSH
50454: LD_VAR 0 1
50458: ARRAY
50459: PUSH
50460: LD_VAR 0 2
50464: DIFF
50465: ST_TO_ADDR
// ai_turrets = Replace ( ai_turrets , base , temp_list ) ;
50466: LD_ADDR_EXP 44
50470: PUSH
50471: LD_EXP 44
50475: PPUSH
50476: LD_VAR 0 1
50480: PPUSH
50481: LD_VAR 0 5
50485: PPUSH
50486: CALL_OW 1
50490: ST_TO_ADDR
// end ; b_oil_mine :
50491: GO 51119
50493: LD_INT 29
50495: DOUBLE
50496: EQUAL
50497: IFTRUE 50501
50499: GO 50578
50501: POP
// if add then
50502: LD_VAR 0 3
50506: IFFALSE 50535
// ai_oil_mine = Replace ( ai_oil_mine , base , un ) else
50508: LD_ADDR_EXP 45
50512: PUSH
50513: LD_EXP 45
50517: PPUSH
50518: LD_VAR 0 1
50522: PPUSH
50523: LD_VAR 0 2
50527: PPUSH
50528: CALL_OW 1
50532: ST_TO_ADDR
50533: GO 50576
// if un = ai_oil_mine [ base ] then
50535: LD_VAR 0 2
50539: PUSH
50540: LD_EXP 45
50544: PUSH
50545: LD_VAR 0 1
50549: ARRAY
50550: EQUAL
50551: IFFALSE 50576
// ai_oil_mine = Replace ( ai_oil_mine , base , 0 ) ; b_siberite_mine :
50553: LD_ADDR_EXP 45
50557: PUSH
50558: LD_EXP 45
50562: PPUSH
50563: LD_VAR 0 1
50567: PPUSH
50568: LD_INT 0
50570: PPUSH
50571: CALL_OW 1
50575: ST_TO_ADDR
50576: GO 51119
50578: LD_INT 30
50580: DOUBLE
50581: EQUAL
50582: IFTRUE 50586
50584: GO 50666
50586: POP
// begin if add then
50587: LD_VAR 0 3
50591: IFFALSE 50617
// temp_list = ai_siberite_mines [ base ] ^ un else
50593: LD_ADDR_VAR 0 5
50597: PUSH
50598: LD_EXP 46
50602: PUSH
50603: LD_VAR 0 1
50607: ARRAY
50608: PUSH
50609: LD_VAR 0 2
50613: ADD
50614: ST_TO_ADDR
50615: GO 50639
// temp_list = ai_siberite_mines [ base ] diff un ;
50617: LD_ADDR_VAR 0 5
50621: PUSH
50622: LD_EXP 46
50626: PUSH
50627: LD_VAR 0 1
50631: ARRAY
50632: PUSH
50633: LD_VAR 0 2
50637: DIFF
50638: ST_TO_ADDR
// ai_siberite_mines = Replace ( ai_siberite_mines , base , temp_list ) ;
50639: LD_ADDR_EXP 46
50643: PUSH
50644: LD_EXP 46
50648: PPUSH
50649: LD_VAR 0 1
50653: PPUSH
50654: LD_VAR 0 5
50658: PPUSH
50659: CALL_OW 1
50663: ST_TO_ADDR
// end ; b_ext_gun , b_ext_noncombat , b_ext_laser , b_ext_computer , b_ext_radar , b_ext_rocket , b_ext_siberium , b_ext_track , b_ext_stitch :
50664: GO 51119
50666: LD_INT 17
50668: DOUBLE
50669: EQUAL
50670: IFTRUE 50722
50672: LD_INT 19
50674: DOUBLE
50675: EQUAL
50676: IFTRUE 50722
50678: LD_INT 25
50680: DOUBLE
50681: EQUAL
50682: IFTRUE 50722
50684: LD_INT 24
50686: DOUBLE
50687: EQUAL
50688: IFTRUE 50722
50690: LD_INT 20
50692: DOUBLE
50693: EQUAL
50694: IFTRUE 50722
50696: LD_INT 18
50698: DOUBLE
50699: EQUAL
50700: IFTRUE 50722
50702: LD_INT 21
50704: DOUBLE
50705: EQUAL
50706: IFTRUE 50722
50708: LD_INT 16
50710: DOUBLE
50711: EQUAL
50712: IFTRUE 50722
50714: LD_INT 23
50716: DOUBLE
50717: EQUAL
50718: IFTRUE 50722
50720: GO 50802
50722: POP
// begin if add then
50723: LD_VAR 0 3
50727: IFFALSE 50753
// temp_list = ai_fact_extensions [ base ] ^ un else
50729: LD_ADDR_VAR 0 5
50733: PUSH
50734: LD_EXP 47
50738: PUSH
50739: LD_VAR 0 1
50743: ARRAY
50744: PUSH
50745: LD_VAR 0 2
50749: ADD
50750: ST_TO_ADDR
50751: GO 50775
// temp_list = ai_fact_extensions [ base ] diff un ;
50753: LD_ADDR_VAR 0 5
50757: PUSH
50758: LD_EXP 47
50762: PUSH
50763: LD_VAR 0 1
50767: ARRAY
50768: PUSH
50769: LD_VAR 0 2
50773: DIFF
50774: ST_TO_ADDR
// ai_fact_extensions = Replace ( ai_fact_extensions , base , temp_list ) ;
50775: LD_ADDR_EXP 47
50779: PUSH
50780: LD_EXP 47
50784: PPUSH
50785: LD_VAR 0 1
50789: PPUSH
50790: LD_VAR 0 5
50794: PPUSH
50795: CALL_OW 1
50799: ST_TO_ADDR
// end ; b_solar_power , b_oil_power , b_siberite_power :
50800: GO 51119
50802: LD_INT 27
50804: DOUBLE
50805: EQUAL
50806: IFTRUE 50822
50808: LD_INT 26
50810: DOUBLE
50811: EQUAL
50812: IFTRUE 50822
50814: LD_INT 28
50816: DOUBLE
50817: EQUAL
50818: IFTRUE 50822
50820: GO 50902
50822: POP
// begin if add then
50823: LD_VAR 0 3
50827: IFFALSE 50853
// temp_list = ai_power_plants [ base ] ^ un else
50829: LD_ADDR_VAR 0 5
50833: PUSH
50834: LD_EXP 48
50838: PUSH
50839: LD_VAR 0 1
50843: ARRAY
50844: PUSH
50845: LD_VAR 0 2
50849: ADD
50850: ST_TO_ADDR
50851: GO 50875
// temp_list = ai_power_plants [ base ] diff un ;
50853: LD_ADDR_VAR 0 5
50857: PUSH
50858: LD_EXP 48
50862: PUSH
50863: LD_VAR 0 1
50867: ARRAY
50868: PUSH
50869: LD_VAR 0 2
50873: DIFF
50874: ST_TO_ADDR
// ai_power_plants = Replace ( ai_power_plants , base , temp_list ) ;
50875: LD_ADDR_EXP 48
50879: PUSH
50880: LD_EXP 48
50884: PPUSH
50885: LD_VAR 0 1
50889: PPUSH
50890: LD_VAR 0 5
50894: PPUSH
50895: CALL_OW 1
50899: ST_TO_ADDR
// end ; b_control_tower :
50900: GO 51119
50902: LD_INT 36
50904: DOUBLE
50905: EQUAL
50906: IFTRUE 50910
50908: GO 50987
50910: POP
// begin if add then
50911: LD_VAR 0 3
50915: IFFALSE 50944
// ai_control_tower = Replace ( ai_control_tower , base , un ) else
50917: LD_ADDR_EXP 49
50921: PUSH
50922: LD_EXP 49
50926: PPUSH
50927: LD_VAR 0 1
50931: PPUSH
50932: LD_VAR 0 2
50936: PPUSH
50937: CALL_OW 1
50941: ST_TO_ADDR
50942: GO 50985
// if un = ai_control_tower [ base ] then
50944: LD_VAR 0 2
50948: PUSH
50949: LD_EXP 49
50953: PUSH
50954: LD_VAR 0 1
50958: ARRAY
50959: EQUAL
50960: IFFALSE 50985
// ai_control_tower = Replace ( ai_control_tower , base , 0 ) ;
50962: LD_ADDR_EXP 49
50966: PUSH
50967: LD_EXP 49
50971: PPUSH
50972: LD_VAR 0 1
50976: PPUSH
50977: LD_INT 0
50979: PPUSH
50980: CALL_OW 1
50984: ST_TO_ADDR
// end ; b_teleport :
50985: GO 51119
50987: LD_INT 34
50989: DOUBLE
50990: EQUAL
50991: IFTRUE 50995
50993: GO 51118
50995: POP
// begin if add then
50996: LD_VAR 0 3
51000: IFFALSE 51052
// begin ai_teleporter = Replace ( ai_teleporter , base , un ) ;
51002: LD_ADDR_EXP 50
51006: PUSH
51007: LD_EXP 50
51011: PPUSH
51012: LD_VAR 0 1
51016: PPUSH
51017: LD_VAR 0 2
51021: PPUSH
51022: CALL_OW 1
51026: ST_TO_ADDR
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , base , false ) ;
51027: LD_ADDR_EXP 86
51031: PUSH
51032: LD_EXP 86
51036: PPUSH
51037: LD_VAR 0 1
51041: PPUSH
51042: LD_INT 0
51044: PPUSH
51045: CALL_OW 1
51049: ST_TO_ADDR
// end else
51050: GO 51116
// if un = ai_teleporter [ base ] then
51052: LD_VAR 0 2
51056: PUSH
51057: LD_EXP 50
51061: PUSH
51062: LD_VAR 0 1
51066: ARRAY
51067: EQUAL
51068: IFFALSE 51116
// begin ai_teleporter = Replace ( ai_teleporter , base , 0 ) ;
51070: LD_ADDR_EXP 50
51074: PUSH
51075: LD_EXP 50
51079: PPUSH
51080: LD_VAR 0 1
51084: PPUSH
51085: LD_INT 0
51087: PPUSH
51088: CALL_OW 1
51092: ST_TO_ADDR
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , base , false ) ;
51093: LD_ADDR_EXP 86
51097: PUSH
51098: LD_EXP 86
51102: PPUSH
51103: LD_VAR 0 1
51107: PPUSH
51108: LD_INT 0
51110: PPUSH
51111: CALL_OW 1
51115: ST_TO_ADDR
// end ; end ; end ;
51116: GO 51119
51118: POP
// end ;
51119: LD_VAR 0 4
51123: RET
// export function SortBuildingLocationsListInCorrectOrder ( base ) ; var i , temp_list , p ; begin
51124: LD_INT 0
51126: PPUSH
51127: PPUSH
51128: PPUSH
51129: PPUSH
// temp_list = [ ] ;
51130: LD_ADDR_VAR 0 4
51134: PUSH
51135: EMPTY
51136: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
51137: LD_ADDR_VAR 0 3
51141: PUSH
51142: LD_EXP 51
51146: PUSH
51147: LD_VAR 0 1
51151: ARRAY
51152: PUSH
51153: FOR_IN
51154: IFFALSE 51527
// begin case i [ 4 ] of b_depot , b_warehouse :
51156: LD_VAR 0 3
51160: PUSH
51161: LD_INT 4
51163: ARRAY
51164: PUSH
51165: LD_INT 0
51167: DOUBLE
51168: EQUAL
51169: IFTRUE 51179
51171: LD_INT 1
51173: DOUBLE
51174: EQUAL
51175: IFTRUE 51179
51177: GO 51190
51179: POP
// p = 100 ; b_armoury , b_barracks , b_fort :
51180: LD_ADDR_VAR 0 5
51184: PUSH
51185: LD_INT 100
51187: ST_TO_ADDR
51188: GO 51509
51190: LD_INT 4
51192: DOUBLE
51193: EQUAL
51194: IFTRUE 51210
51196: LD_INT 5
51198: DOUBLE
51199: EQUAL
51200: IFTRUE 51210
51202: LD_INT 35
51204: DOUBLE
51205: EQUAL
51206: IFTRUE 51210
51208: GO 51221
51210: POP
// p = 99 ; b_solar_power , b_oil_power , b_siberite_power :
51211: LD_ADDR_VAR 0 5
51215: PUSH
51216: LD_INT 99
51218: ST_TO_ADDR
51219: GO 51509
51221: LD_INT 27
51223: DOUBLE
51224: EQUAL
51225: IFTRUE 51241
51227: LD_INT 26
51229: DOUBLE
51230: EQUAL
51231: IFTRUE 51241
51233: LD_INT 28
51235: DOUBLE
51236: EQUAL
51237: IFTRUE 51241
51239: GO 51252
51241: POP
// p = 98 ; b_breastwork :
51242: LD_ADDR_VAR 0 5
51246: PUSH
51247: LD_INT 98
51249: ST_TO_ADDR
51250: GO 51509
51252: LD_INT 31
51254: DOUBLE
51255: EQUAL
51256: IFTRUE 51260
51258: GO 51271
51260: POP
// p = 97 ; b_factory , b_workshop :
51261: LD_ADDR_VAR 0 5
51265: PUSH
51266: LD_INT 97
51268: ST_TO_ADDR
51269: GO 51509
51271: LD_INT 3
51273: DOUBLE
51274: EQUAL
51275: IFTRUE 51285
51277: LD_INT 2
51279: DOUBLE
51280: EQUAL
51281: IFTRUE 51285
51283: GO 51296
51285: POP
// p = 96 ; b_ext_gun , b_ext_noncombat , b_ext_laser , b_ext_computer , b_ext_radar , b_ext_rocket , b_ext_siberium , b_ext_track , b_ext_stitch :
51286: LD_ADDR_VAR 0 5
51290: PUSH
51291: LD_INT 96
51293: ST_TO_ADDR
51294: GO 51509
51296: LD_INT 17
51298: DOUBLE
51299: EQUAL
51300: IFTRUE 51352
51302: LD_INT 19
51304: DOUBLE
51305: EQUAL
51306: IFTRUE 51352
51308: LD_INT 25
51310: DOUBLE
51311: EQUAL
51312: IFTRUE 51352
51314: LD_INT 24
51316: DOUBLE
51317: EQUAL
51318: IFTRUE 51352
51320: LD_INT 20
51322: DOUBLE
51323: EQUAL
51324: IFTRUE 51352
51326: LD_INT 18
51328: DOUBLE
51329: EQUAL
51330: IFTRUE 51352
51332: LD_INT 21
51334: DOUBLE
51335: EQUAL
51336: IFTRUE 51352
51338: LD_INT 16
51340: DOUBLE
51341: EQUAL
51342: IFTRUE 51352
51344: LD_INT 23
51346: DOUBLE
51347: EQUAL
51348: IFTRUE 51352
51350: GO 51363
51352: POP
// p = 95 ; b_bunker :
51353: LD_ADDR_VAR 0 5
51357: PUSH
51358: LD_INT 95
51360: ST_TO_ADDR
51361: GO 51509
51363: LD_INT 32
51365: DOUBLE
51366: EQUAL
51367: IFTRUE 51371
51369: GO 51382
51371: POP
// p = 94 ; b_control_tower :
51372: LD_ADDR_VAR 0 5
51376: PUSH
51377: LD_INT 94
51379: ST_TO_ADDR
51380: GO 51509
51382: LD_INT 36
51384: DOUBLE
51385: EQUAL
51386: IFTRUE 51390
51388: GO 51401
51390: POP
// p = 93 ; b_turret :
51391: LD_ADDR_VAR 0 5
51395: PUSH
51396: LD_INT 93
51398: ST_TO_ADDR
51399: GO 51509
51401: LD_INT 33
51403: DOUBLE
51404: EQUAL
51405: IFTRUE 51409
51407: GO 51420
51409: POP
// p = 92 ; b_lab , b_lab_half , b_lab_full :
51410: LD_ADDR_VAR 0 5
51414: PUSH
51415: LD_INT 92
51417: ST_TO_ADDR
51418: GO 51509
51420: LD_INT 6
51422: DOUBLE
51423: EQUAL
51424: IFTRUE 51440
51426: LD_INT 7
51428: DOUBLE
51429: EQUAL
51430: IFTRUE 51440
51432: LD_INT 8
51434: DOUBLE
51435: EQUAL
51436: IFTRUE 51440
51438: GO 51451
51440: POP
// p = 91 ; b_teleport :
51441: LD_ADDR_VAR 0 5
51445: PUSH
51446: LD_INT 91
51448: ST_TO_ADDR
51449: GO 51509
51451: LD_INT 34
51453: DOUBLE
51454: EQUAL
51455: IFTRUE 51459
51457: GO 51470
51459: POP
// p = 90 ; b_siberite_mine :
51460: LD_ADDR_VAR 0 5
51464: PUSH
51465: LD_INT 90
51467: ST_TO_ADDR
51468: GO 51509
51470: LD_INT 30
51472: DOUBLE
51473: EQUAL
51474: IFTRUE 51478
51476: GO 51489
51478: POP
// p = 89 ; b_oil_mine :
51479: LD_ADDR_VAR 0 5
51483: PUSH
51484: LD_INT 89
51486: ST_TO_ADDR
51487: GO 51509
51489: LD_INT 29
51491: DOUBLE
51492: EQUAL
51493: IFTRUE 51497
51495: GO 51508
51497: POP
// p = 88 ; end ;
51498: LD_ADDR_VAR 0 5
51502: PUSH
51503: LD_INT 88
51505: ST_TO_ADDR
51506: GO 51509
51508: POP
// temp_list = temp_list ^ p ;
51509: LD_ADDR_VAR 0 4
51513: PUSH
51514: LD_VAR 0 4
51518: PUSH
51519: LD_VAR 0 5
51523: ADD
51524: ST_TO_ADDR
// end ;
51525: GO 51153
51527: POP
51528: POP
// temp_list = SortListByListDesc ( ai_buildings_locations [ base ] , temp_list ) ;
51529: LD_ADDR_VAR 0 4
51533: PUSH
51534: LD_EXP 51
51538: PUSH
51539: LD_VAR 0 1
51543: ARRAY
51544: PPUSH
51545: LD_VAR 0 4
51549: PPUSH
51550: CALL_OW 77
51554: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list ) ;
51555: LD_ADDR_EXP 51
51559: PUSH
51560: LD_EXP 51
51564: PPUSH
51565: LD_VAR 0 1
51569: PPUSH
51570: LD_VAR 0 4
51574: PPUSH
51575: CALL_OW 1
51579: ST_TO_ADDR
// end ;
51580: LD_VAR 0 2
51584: RET
// every 0 0$1 trigger PrepareComputerSides do var i , temp_list , temp_list2 , side , base , num , nation , temp ;
51585: LD_EXP 187
51589: IFFALSE 58834
51591: GO 51593
51593: DISABLE
51594: LD_INT 0
51596: PPUSH
51597: PPUSH
51598: PPUSH
51599: PPUSH
51600: PPUSH
51601: PPUSH
51602: PPUSH
51603: PPUSH
// begin Randomize ;
51604: CALL_OW 10
// for base in ai_bases do
51608: LD_ADDR_VAR 0 5
51612: PUSH
51613: LD_EXP 29
51617: PUSH
51618: FOR_IN
51619: IFFALSE 54940
// begin repeat wait ( 0 0$0.1 ) ;
51621: LD_INT 4
51623: PPUSH
51624: CALL_OW 67
// until base < base_spawn_delay ;
51628: LD_VAR 0 5
51632: PUSH
51633: LD_EXP 173
51637: LESS
51638: IFFALSE 51621
// side = GetBaseSide ( base ) ;
51640: LD_ADDR_VAR 0 4
51644: PUSH
51645: LD_VAR 0 5
51649: PPUSH
51650: CALL 3818 0 1
51654: ST_TO_ADDR
// nation = GetBaseNation ( base ) ;
51655: LD_ADDR_VAR 0 7
51659: PUSH
51660: LD_VAR 0 5
51664: PPUSH
51665: CALL 4042 0 1
51669: ST_TO_ADDR
// InitUc ;
51670: CALL_OW 18
// InitHc ;
51674: CALL_OW 19
// uc_side = side ;
51678: LD_ADDR_OWVAR 20
51682: PUSH
51683: LD_VAR 0 4
51687: ST_TO_ADDR
// uc_nation = nation ;
51688: LD_ADDR_OWVAR 21
51692: PUSH
51693: LD_VAR 0 7
51697: ST_TO_ADDR
// case base of 1 :
51698: LD_VAR 0 5
51702: PUSH
51703: LD_INT 1
51705: DOUBLE
51706: EQUAL
51707: IFTRUE 51711
51709: GO 51956
51711: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
51712: LD_ADDR_VAR 0 2
51716: PUSH
51717: LD_EXP 43
51721: PUSH
51722: LD_VAR 0 5
51726: ARRAY
51727: PPUSH
51728: LD_INT 1
51730: PPUSH
51731: LD_VAR 0 5
51735: PPUSH
51736: CALL 58837 0 3
51740: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
51741: LD_ADDR_VAR 0 2
51745: PUSH
51746: LD_INT 4
51748: PUSH
51749: LD_INT 5
51751: PUSH
51752: LD_INT 6
51754: PUSH
51755: EMPTY
51756: LIST
51757: LIST
51758: LIST
51759: PUSH
51760: LD_OWVAR 67
51764: ARRAY
51765: PUSH
51766: LD_EXP 42
51770: PUSH
51771: LD_VAR 0 5
51775: ARRAY
51776: PPUSH
51777: LD_INT 30
51779: PUSH
51780: LD_INT 5
51782: PUSH
51783: EMPTY
51784: LIST
51785: LIST
51786: PPUSH
51787: CALL_OW 72
51791: MUL
51792: PPUSH
51793: LD_INT 9
51795: PPUSH
51796: LD_VAR 0 5
51800: PPUSH
51801: CALL 58837 0 3
51805: PUSH
51806: LD_VAR 0 2
51810: ADD
51811: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
51812: LD_ADDR_VAR 0 2
51816: PUSH
51817: LD_INT 1
51819: PUSH
51820: LD_INT 2
51822: PUSH
51823: LD_INT 3
51825: PUSH
51826: EMPTY
51827: LIST
51828: LIST
51829: LIST
51830: PUSH
51831: LD_OWVAR 67
51835: ARRAY
51836: PUSH
51837: LD_EXP 42
51841: PUSH
51842: LD_VAR 0 5
51846: ARRAY
51847: PPUSH
51848: LD_INT 30
51850: PUSH
51851: LD_INT 4
51853: PUSH
51854: EMPTY
51855: LIST
51856: LIST
51857: PPUSH
51858: CALL_OW 72
51862: MUL
51863: PPUSH
51864: LD_INT 9
51866: PPUSH
51867: LD_VAR 0 5
51871: PPUSH
51872: CALL 58837 0 3
51876: PUSH
51877: LD_VAR 0 2
51881: ADD
51882: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
51883: LD_ADDR_VAR 0 2
51887: PUSH
51888: LD_INT 3
51890: PUSH
51891: LD_INT 3
51893: PUSH
51894: LD_INT 3
51896: PUSH
51897: EMPTY
51898: LIST
51899: LIST
51900: LIST
51901: PUSH
51902: LD_OWVAR 67
51906: ARRAY
51907: PUSH
51908: LD_EXP 42
51912: PUSH
51913: LD_VAR 0 5
51917: ARRAY
51918: PPUSH
51919: LD_INT 30
51921: PUSH
51922: LD_INT 4
51924: PUSH
51925: EMPTY
51926: LIST
51927: LIST
51928: PPUSH
51929: CALL_OW 72
51933: MUL
51934: PPUSH
51935: LD_INT 1
51937: PPUSH
51938: LD_VAR 0 5
51942: PPUSH
51943: CALL 58837 0 3
51947: PUSH
51948: LD_VAR 0 2
51952: ADD
51953: ST_TO_ADDR
// end ; 2 :
51954: GO 53728
51956: LD_INT 2
51958: DOUBLE
51959: EQUAL
51960: IFTRUE 51964
51962: GO 52209
51964: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
51965: LD_ADDR_VAR 0 2
51969: PUSH
51970: LD_EXP 43
51974: PUSH
51975: LD_VAR 0 5
51979: ARRAY
51980: PPUSH
51981: LD_INT 1
51983: PPUSH
51984: LD_VAR 0 5
51988: PPUSH
51989: CALL 58837 0 3
51993: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
51994: LD_ADDR_VAR 0 2
51998: PUSH
51999: LD_INT 4
52001: PUSH
52002: LD_INT 5
52004: PUSH
52005: LD_INT 6
52007: PUSH
52008: EMPTY
52009: LIST
52010: LIST
52011: LIST
52012: PUSH
52013: LD_OWVAR 67
52017: ARRAY
52018: PUSH
52019: LD_EXP 42
52023: PUSH
52024: LD_VAR 0 5
52028: ARRAY
52029: PPUSH
52030: LD_INT 30
52032: PUSH
52033: LD_INT 5
52035: PUSH
52036: EMPTY
52037: LIST
52038: LIST
52039: PPUSH
52040: CALL_OW 72
52044: MUL
52045: PPUSH
52046: LD_INT 9
52048: PPUSH
52049: LD_VAR 0 5
52053: PPUSH
52054: CALL 58837 0 3
52058: PUSH
52059: LD_VAR 0 2
52063: ADD
52064: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
52065: LD_ADDR_VAR 0 2
52069: PUSH
52070: LD_INT 1
52072: PUSH
52073: LD_INT 2
52075: PUSH
52076: LD_INT 3
52078: PUSH
52079: EMPTY
52080: LIST
52081: LIST
52082: LIST
52083: PUSH
52084: LD_OWVAR 67
52088: ARRAY
52089: PUSH
52090: LD_EXP 42
52094: PUSH
52095: LD_VAR 0 5
52099: ARRAY
52100: PPUSH
52101: LD_INT 30
52103: PUSH
52104: LD_INT 4
52106: PUSH
52107: EMPTY
52108: LIST
52109: LIST
52110: PPUSH
52111: CALL_OW 72
52115: MUL
52116: PPUSH
52117: LD_INT 9
52119: PPUSH
52120: LD_VAR 0 5
52124: PPUSH
52125: CALL 58837 0 3
52129: PUSH
52130: LD_VAR 0 2
52134: ADD
52135: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
52136: LD_ADDR_VAR 0 2
52140: PUSH
52141: LD_INT 3
52143: PUSH
52144: LD_INT 3
52146: PUSH
52147: LD_INT 3
52149: PUSH
52150: EMPTY
52151: LIST
52152: LIST
52153: LIST
52154: PUSH
52155: LD_OWVAR 67
52159: ARRAY
52160: PUSH
52161: LD_EXP 42
52165: PUSH
52166: LD_VAR 0 5
52170: ARRAY
52171: PPUSH
52172: LD_INT 30
52174: PUSH
52175: LD_INT 4
52177: PUSH
52178: EMPTY
52179: LIST
52180: LIST
52181: PPUSH
52182: CALL_OW 72
52186: MUL
52187: PPUSH
52188: LD_INT 1
52190: PPUSH
52191: LD_VAR 0 5
52195: PPUSH
52196: CALL 58837 0 3
52200: PUSH
52201: LD_VAR 0 2
52205: ADD
52206: ST_TO_ADDR
// end ; 3 :
52207: GO 53728
52209: LD_INT 3
52211: DOUBLE
52212: EQUAL
52213: IFTRUE 52217
52215: GO 52462
52217: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
52218: LD_ADDR_VAR 0 2
52222: PUSH
52223: LD_EXP 43
52227: PUSH
52228: LD_VAR 0 5
52232: ARRAY
52233: PPUSH
52234: LD_INT 1
52236: PPUSH
52237: LD_VAR 0 5
52241: PPUSH
52242: CALL 58837 0 3
52246: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
52247: LD_ADDR_VAR 0 2
52251: PUSH
52252: LD_INT 4
52254: PUSH
52255: LD_INT 5
52257: PUSH
52258: LD_INT 6
52260: PUSH
52261: EMPTY
52262: LIST
52263: LIST
52264: LIST
52265: PUSH
52266: LD_OWVAR 67
52270: ARRAY
52271: PUSH
52272: LD_EXP 42
52276: PUSH
52277: LD_VAR 0 5
52281: ARRAY
52282: PPUSH
52283: LD_INT 30
52285: PUSH
52286: LD_INT 5
52288: PUSH
52289: EMPTY
52290: LIST
52291: LIST
52292: PPUSH
52293: CALL_OW 72
52297: MUL
52298: PPUSH
52299: LD_INT 9
52301: PPUSH
52302: LD_VAR 0 5
52306: PPUSH
52307: CALL 58837 0 3
52311: PUSH
52312: LD_VAR 0 2
52316: ADD
52317: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
52318: LD_ADDR_VAR 0 2
52322: PUSH
52323: LD_INT 1
52325: PUSH
52326: LD_INT 2
52328: PUSH
52329: LD_INT 3
52331: PUSH
52332: EMPTY
52333: LIST
52334: LIST
52335: LIST
52336: PUSH
52337: LD_OWVAR 67
52341: ARRAY
52342: PUSH
52343: LD_EXP 42
52347: PUSH
52348: LD_VAR 0 5
52352: ARRAY
52353: PPUSH
52354: LD_INT 30
52356: PUSH
52357: LD_INT 4
52359: PUSH
52360: EMPTY
52361: LIST
52362: LIST
52363: PPUSH
52364: CALL_OW 72
52368: MUL
52369: PPUSH
52370: LD_INT 9
52372: PPUSH
52373: LD_VAR 0 5
52377: PPUSH
52378: CALL 58837 0 3
52382: PUSH
52383: LD_VAR 0 2
52387: ADD
52388: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
52389: LD_ADDR_VAR 0 2
52393: PUSH
52394: LD_INT 3
52396: PUSH
52397: LD_INT 3
52399: PUSH
52400: LD_INT 3
52402: PUSH
52403: EMPTY
52404: LIST
52405: LIST
52406: LIST
52407: PUSH
52408: LD_OWVAR 67
52412: ARRAY
52413: PUSH
52414: LD_EXP 42
52418: PUSH
52419: LD_VAR 0 5
52423: ARRAY
52424: PPUSH
52425: LD_INT 30
52427: PUSH
52428: LD_INT 4
52430: PUSH
52431: EMPTY
52432: LIST
52433: LIST
52434: PPUSH
52435: CALL_OW 72
52439: MUL
52440: PPUSH
52441: LD_INT 1
52443: PPUSH
52444: LD_VAR 0 5
52448: PPUSH
52449: CALL 58837 0 3
52453: PUSH
52454: LD_VAR 0 2
52458: ADD
52459: ST_TO_ADDR
// end ; 4 :
52460: GO 53728
52462: LD_INT 4
52464: DOUBLE
52465: EQUAL
52466: IFTRUE 52470
52468: GO 52715
52470: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
52471: LD_ADDR_VAR 0 2
52475: PUSH
52476: LD_EXP 43
52480: PUSH
52481: LD_VAR 0 5
52485: ARRAY
52486: PPUSH
52487: LD_INT 1
52489: PPUSH
52490: LD_VAR 0 5
52494: PPUSH
52495: CALL 58837 0 3
52499: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
52500: LD_ADDR_VAR 0 2
52504: PUSH
52505: LD_INT 4
52507: PUSH
52508: LD_INT 5
52510: PUSH
52511: LD_INT 6
52513: PUSH
52514: EMPTY
52515: LIST
52516: LIST
52517: LIST
52518: PUSH
52519: LD_OWVAR 67
52523: ARRAY
52524: PUSH
52525: LD_EXP 42
52529: PUSH
52530: LD_VAR 0 5
52534: ARRAY
52535: PPUSH
52536: LD_INT 30
52538: PUSH
52539: LD_INT 5
52541: PUSH
52542: EMPTY
52543: LIST
52544: LIST
52545: PPUSH
52546: CALL_OW 72
52550: MUL
52551: PPUSH
52552: LD_INT 9
52554: PPUSH
52555: LD_VAR 0 5
52559: PPUSH
52560: CALL 58837 0 3
52564: PUSH
52565: LD_VAR 0 2
52569: ADD
52570: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
52571: LD_ADDR_VAR 0 2
52575: PUSH
52576: LD_INT 1
52578: PUSH
52579: LD_INT 2
52581: PUSH
52582: LD_INT 3
52584: PUSH
52585: EMPTY
52586: LIST
52587: LIST
52588: LIST
52589: PUSH
52590: LD_OWVAR 67
52594: ARRAY
52595: PUSH
52596: LD_EXP 42
52600: PUSH
52601: LD_VAR 0 5
52605: ARRAY
52606: PPUSH
52607: LD_INT 30
52609: PUSH
52610: LD_INT 4
52612: PUSH
52613: EMPTY
52614: LIST
52615: LIST
52616: PPUSH
52617: CALL_OW 72
52621: MUL
52622: PPUSH
52623: LD_INT 9
52625: PPUSH
52626: LD_VAR 0 5
52630: PPUSH
52631: CALL 58837 0 3
52635: PUSH
52636: LD_VAR 0 2
52640: ADD
52641: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
52642: LD_ADDR_VAR 0 2
52646: PUSH
52647: LD_INT 3
52649: PUSH
52650: LD_INT 3
52652: PUSH
52653: LD_INT 3
52655: PUSH
52656: EMPTY
52657: LIST
52658: LIST
52659: LIST
52660: PUSH
52661: LD_OWVAR 67
52665: ARRAY
52666: PUSH
52667: LD_EXP 42
52671: PUSH
52672: LD_VAR 0 5
52676: ARRAY
52677: PPUSH
52678: LD_INT 30
52680: PUSH
52681: LD_INT 4
52683: PUSH
52684: EMPTY
52685: LIST
52686: LIST
52687: PPUSH
52688: CALL_OW 72
52692: MUL
52693: PPUSH
52694: LD_INT 1
52696: PPUSH
52697: LD_VAR 0 5
52701: PPUSH
52702: CALL 58837 0 3
52706: PUSH
52707: LD_VAR 0 2
52711: ADD
52712: ST_TO_ADDR
// end ; 5 :
52713: GO 53728
52715: LD_INT 5
52717: DOUBLE
52718: EQUAL
52719: IFTRUE 52723
52721: GO 52968
52723: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
52724: LD_ADDR_VAR 0 2
52728: PUSH
52729: LD_EXP 43
52733: PUSH
52734: LD_VAR 0 5
52738: ARRAY
52739: PPUSH
52740: LD_INT 1
52742: PPUSH
52743: LD_VAR 0 5
52747: PPUSH
52748: CALL 58837 0 3
52752: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
52753: LD_ADDR_VAR 0 2
52757: PUSH
52758: LD_INT 4
52760: PUSH
52761: LD_INT 5
52763: PUSH
52764: LD_INT 6
52766: PUSH
52767: EMPTY
52768: LIST
52769: LIST
52770: LIST
52771: PUSH
52772: LD_OWVAR 67
52776: ARRAY
52777: PUSH
52778: LD_EXP 42
52782: PUSH
52783: LD_VAR 0 5
52787: ARRAY
52788: PPUSH
52789: LD_INT 30
52791: PUSH
52792: LD_INT 5
52794: PUSH
52795: EMPTY
52796: LIST
52797: LIST
52798: PPUSH
52799: CALL_OW 72
52803: MUL
52804: PPUSH
52805: LD_INT 9
52807: PPUSH
52808: LD_VAR 0 5
52812: PPUSH
52813: CALL 58837 0 3
52817: PUSH
52818: LD_VAR 0 2
52822: ADD
52823: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
52824: LD_ADDR_VAR 0 2
52828: PUSH
52829: LD_INT 1
52831: PUSH
52832: LD_INT 2
52834: PUSH
52835: LD_INT 3
52837: PUSH
52838: EMPTY
52839: LIST
52840: LIST
52841: LIST
52842: PUSH
52843: LD_OWVAR 67
52847: ARRAY
52848: PUSH
52849: LD_EXP 42
52853: PUSH
52854: LD_VAR 0 5
52858: ARRAY
52859: PPUSH
52860: LD_INT 30
52862: PUSH
52863: LD_INT 4
52865: PUSH
52866: EMPTY
52867: LIST
52868: LIST
52869: PPUSH
52870: CALL_OW 72
52874: MUL
52875: PPUSH
52876: LD_INT 9
52878: PPUSH
52879: LD_VAR 0 5
52883: PPUSH
52884: CALL 58837 0 3
52888: PUSH
52889: LD_VAR 0 2
52893: ADD
52894: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
52895: LD_ADDR_VAR 0 2
52899: PUSH
52900: LD_INT 3
52902: PUSH
52903: LD_INT 3
52905: PUSH
52906: LD_INT 3
52908: PUSH
52909: EMPTY
52910: LIST
52911: LIST
52912: LIST
52913: PUSH
52914: LD_OWVAR 67
52918: ARRAY
52919: PUSH
52920: LD_EXP 42
52924: PUSH
52925: LD_VAR 0 5
52929: ARRAY
52930: PPUSH
52931: LD_INT 30
52933: PUSH
52934: LD_INT 4
52936: PUSH
52937: EMPTY
52938: LIST
52939: LIST
52940: PPUSH
52941: CALL_OW 72
52945: MUL
52946: PPUSH
52947: LD_INT 1
52949: PPUSH
52950: LD_VAR 0 5
52954: PPUSH
52955: CALL 58837 0 3
52959: PUSH
52960: LD_VAR 0 2
52964: ADD
52965: ST_TO_ADDR
// end ; 6 :
52966: GO 53728
52968: LD_INT 6
52970: DOUBLE
52971: EQUAL
52972: IFTRUE 52976
52974: GO 53221
52976: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
52977: LD_ADDR_VAR 0 2
52981: PUSH
52982: LD_EXP 43
52986: PUSH
52987: LD_VAR 0 5
52991: ARRAY
52992: PPUSH
52993: LD_INT 1
52995: PPUSH
52996: LD_VAR 0 5
53000: PPUSH
53001: CALL 58837 0 3
53005: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
53006: LD_ADDR_VAR 0 2
53010: PUSH
53011: LD_INT 4
53013: PUSH
53014: LD_INT 5
53016: PUSH
53017: LD_INT 6
53019: PUSH
53020: EMPTY
53021: LIST
53022: LIST
53023: LIST
53024: PUSH
53025: LD_OWVAR 67
53029: ARRAY
53030: PUSH
53031: LD_EXP 42
53035: PUSH
53036: LD_VAR 0 5
53040: ARRAY
53041: PPUSH
53042: LD_INT 30
53044: PUSH
53045: LD_INT 5
53047: PUSH
53048: EMPTY
53049: LIST
53050: LIST
53051: PPUSH
53052: CALL_OW 72
53056: MUL
53057: PPUSH
53058: LD_INT 9
53060: PPUSH
53061: LD_VAR 0 5
53065: PPUSH
53066: CALL 58837 0 3
53070: PUSH
53071: LD_VAR 0 2
53075: ADD
53076: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
53077: LD_ADDR_VAR 0 2
53081: PUSH
53082: LD_INT 1
53084: PUSH
53085: LD_INT 2
53087: PUSH
53088: LD_INT 3
53090: PUSH
53091: EMPTY
53092: LIST
53093: LIST
53094: LIST
53095: PUSH
53096: LD_OWVAR 67
53100: ARRAY
53101: PUSH
53102: LD_EXP 42
53106: PUSH
53107: LD_VAR 0 5
53111: ARRAY
53112: PPUSH
53113: LD_INT 30
53115: PUSH
53116: LD_INT 4
53118: PUSH
53119: EMPTY
53120: LIST
53121: LIST
53122: PPUSH
53123: CALL_OW 72
53127: MUL
53128: PPUSH
53129: LD_INT 9
53131: PPUSH
53132: LD_VAR 0 5
53136: PPUSH
53137: CALL 58837 0 3
53141: PUSH
53142: LD_VAR 0 2
53146: ADD
53147: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
53148: LD_ADDR_VAR 0 2
53152: PUSH
53153: LD_INT 3
53155: PUSH
53156: LD_INT 3
53158: PUSH
53159: LD_INT 3
53161: PUSH
53162: EMPTY
53163: LIST
53164: LIST
53165: LIST
53166: PUSH
53167: LD_OWVAR 67
53171: ARRAY
53172: PUSH
53173: LD_EXP 42
53177: PUSH
53178: LD_VAR 0 5
53182: ARRAY
53183: PPUSH
53184: LD_INT 30
53186: PUSH
53187: LD_INT 4
53189: PUSH
53190: EMPTY
53191: LIST
53192: LIST
53193: PPUSH
53194: CALL_OW 72
53198: MUL
53199: PPUSH
53200: LD_INT 1
53202: PPUSH
53203: LD_VAR 0 5
53207: PPUSH
53208: CALL 58837 0 3
53212: PUSH
53213: LD_VAR 0 2
53217: ADD
53218: ST_TO_ADDR
// end ; 7 :
53219: GO 53728
53221: LD_INT 7
53223: DOUBLE
53224: EQUAL
53225: IFTRUE 53229
53227: GO 53474
53229: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
53230: LD_ADDR_VAR 0 2
53234: PUSH
53235: LD_EXP 43
53239: PUSH
53240: LD_VAR 0 5
53244: ARRAY
53245: PPUSH
53246: LD_INT 1
53248: PPUSH
53249: LD_VAR 0 5
53253: PPUSH
53254: CALL 58837 0 3
53258: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
53259: LD_ADDR_VAR 0 2
53263: PUSH
53264: LD_INT 4
53266: PUSH
53267: LD_INT 5
53269: PUSH
53270: LD_INT 6
53272: PUSH
53273: EMPTY
53274: LIST
53275: LIST
53276: LIST
53277: PUSH
53278: LD_OWVAR 67
53282: ARRAY
53283: PUSH
53284: LD_EXP 42
53288: PUSH
53289: LD_VAR 0 5
53293: ARRAY
53294: PPUSH
53295: LD_INT 30
53297: PUSH
53298: LD_INT 5
53300: PUSH
53301: EMPTY
53302: LIST
53303: LIST
53304: PPUSH
53305: CALL_OW 72
53309: MUL
53310: PPUSH
53311: LD_INT 9
53313: PPUSH
53314: LD_VAR 0 5
53318: PPUSH
53319: CALL 58837 0 3
53323: PUSH
53324: LD_VAR 0 2
53328: ADD
53329: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
53330: LD_ADDR_VAR 0 2
53334: PUSH
53335: LD_INT 1
53337: PUSH
53338: LD_INT 2
53340: PUSH
53341: LD_INT 3
53343: PUSH
53344: EMPTY
53345: LIST
53346: LIST
53347: LIST
53348: PUSH
53349: LD_OWVAR 67
53353: ARRAY
53354: PUSH
53355: LD_EXP 42
53359: PUSH
53360: LD_VAR 0 5
53364: ARRAY
53365: PPUSH
53366: LD_INT 30
53368: PUSH
53369: LD_INT 4
53371: PUSH
53372: EMPTY
53373: LIST
53374: LIST
53375: PPUSH
53376: CALL_OW 72
53380: MUL
53381: PPUSH
53382: LD_INT 9
53384: PPUSH
53385: LD_VAR 0 5
53389: PPUSH
53390: CALL 58837 0 3
53394: PUSH
53395: LD_VAR 0 2
53399: ADD
53400: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
53401: LD_ADDR_VAR 0 2
53405: PUSH
53406: LD_INT 3
53408: PUSH
53409: LD_INT 3
53411: PUSH
53412: LD_INT 3
53414: PUSH
53415: EMPTY
53416: LIST
53417: LIST
53418: LIST
53419: PUSH
53420: LD_OWVAR 67
53424: ARRAY
53425: PUSH
53426: LD_EXP 42
53430: PUSH
53431: LD_VAR 0 5
53435: ARRAY
53436: PPUSH
53437: LD_INT 30
53439: PUSH
53440: LD_INT 4
53442: PUSH
53443: EMPTY
53444: LIST
53445: LIST
53446: PPUSH
53447: CALL_OW 72
53451: MUL
53452: PPUSH
53453: LD_INT 1
53455: PPUSH
53456: LD_VAR 0 5
53460: PPUSH
53461: CALL 58837 0 3
53465: PUSH
53466: LD_VAR 0 2
53470: ADD
53471: ST_TO_ADDR
// end ; 8 :
53472: GO 53728
53474: LD_INT 8
53476: DOUBLE
53477: EQUAL
53478: IFTRUE 53482
53480: GO 53727
53482: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
53483: LD_ADDR_VAR 0 2
53487: PUSH
53488: LD_EXP 43
53492: PUSH
53493: LD_VAR 0 5
53497: ARRAY
53498: PPUSH
53499: LD_INT 1
53501: PPUSH
53502: LD_VAR 0 5
53506: PPUSH
53507: CALL 58837 0 3
53511: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_barracks ] ) , class_bazooker , base ) ^ temp_list ;
53512: LD_ADDR_VAR 0 2
53516: PUSH
53517: LD_INT 4
53519: PUSH
53520: LD_INT 5
53522: PUSH
53523: LD_INT 6
53525: PUSH
53526: EMPTY
53527: LIST
53528: LIST
53529: LIST
53530: PUSH
53531: LD_OWVAR 67
53535: ARRAY
53536: PUSH
53537: LD_EXP 42
53541: PUSH
53542: LD_VAR 0 5
53546: ARRAY
53547: PPUSH
53548: LD_INT 30
53550: PUSH
53551: LD_INT 5
53553: PUSH
53554: EMPTY
53555: LIST
53556: LIST
53557: PPUSH
53558: CALL_OW 72
53562: MUL
53563: PPUSH
53564: LD_INT 9
53566: PPUSH
53567: LD_VAR 0 5
53571: PPUSH
53572: CALL 58837 0 3
53576: PUSH
53577: LD_VAR 0 2
53581: ADD
53582: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 1 , 2 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_bazooker , base ) ^ temp_list ;
53583: LD_ADDR_VAR 0 2
53587: PUSH
53588: LD_INT 1
53590: PUSH
53591: LD_INT 2
53593: PUSH
53594: LD_INT 3
53596: PUSH
53597: EMPTY
53598: LIST
53599: LIST
53600: LIST
53601: PUSH
53602: LD_OWVAR 67
53606: ARRAY
53607: PUSH
53608: LD_EXP 42
53612: PUSH
53613: LD_VAR 0 5
53617: ARRAY
53618: PPUSH
53619: LD_INT 30
53621: PUSH
53622: LD_INT 4
53624: PUSH
53625: EMPTY
53626: LIST
53627: LIST
53628: PPUSH
53629: CALL_OW 72
53633: MUL
53634: PPUSH
53635: LD_INT 9
53637: PPUSH
53638: LD_VAR 0 5
53642: PPUSH
53643: CALL 58837 0 3
53647: PUSH
53648: LD_VAR 0 2
53652: ADD
53653: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 3 , 3 , 3 ] [ difficulty ] * unitfilter ( ai_armouries [ base ] , [ f_btype , b_armoury ] ) , class_soldier , base ) ^ temp_list ;
53654: LD_ADDR_VAR 0 2
53658: PUSH
53659: LD_INT 3
53661: PUSH
53662: LD_INT 3
53664: PUSH
53665: LD_INT 3
53667: PUSH
53668: EMPTY
53669: LIST
53670: LIST
53671: LIST
53672: PUSH
53673: LD_OWVAR 67
53677: ARRAY
53678: PUSH
53679: LD_EXP 42
53683: PUSH
53684: LD_VAR 0 5
53688: ARRAY
53689: PPUSH
53690: LD_INT 30
53692: PUSH
53693: LD_INT 4
53695: PUSH
53696: EMPTY
53697: LIST
53698: LIST
53699: PPUSH
53700: CALL_OW 72
53704: MUL
53705: PPUSH
53706: LD_INT 1
53708: PPUSH
53709: LD_VAR 0 5
53713: PPUSH
53714: CALL 58837 0 3
53718: PUSH
53719: LD_VAR 0 2
53723: ADD
53724: ST_TO_ADDR
// end ; end ;
53725: GO 53728
53727: POP
// ai_soldiers = Replace ( ai_soldiers , base , temp_list ) ;
53728: LD_ADDR_EXP 30
53732: PUSH
53733: LD_EXP 30
53737: PPUSH
53738: LD_VAR 0 5
53742: PPUSH
53743: LD_VAR 0 2
53747: PPUSH
53748: CALL_OW 1
53752: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_soldiers [ base ] , ai_armouries [ base ] ) ;
53753: LD_VAR 0 5
53757: PPUSH
53758: LD_EXP 30
53762: PUSH
53763: LD_VAR 0 5
53767: ARRAY
53768: PPUSH
53769: LD_EXP 42
53773: PUSH
53774: LD_VAR 0 5
53778: ARRAY
53779: PPUSH
53780: CALL 59288 0 3
// ai_engineers = Replace ( ai_engineers , base , CreateUnitsWithClass ( [ [ 1 , 2 , 3 ] [ difficulty ] , [ 4 , 5 , 6 ] [ difficulty ] , [ 1 , 2 , 3 ] [ difficulty ] , 2 , 2 , 2 , 1 , 2 , 1 , 0 ] [ base ] , class_engineer , base ) ) ;
53784: LD_ADDR_EXP 32
53788: PUSH
53789: LD_EXP 32
53793: PPUSH
53794: LD_VAR 0 5
53798: PPUSH
53799: LD_INT 1
53801: PUSH
53802: LD_INT 2
53804: PUSH
53805: LD_INT 3
53807: PUSH
53808: EMPTY
53809: LIST
53810: LIST
53811: LIST
53812: PUSH
53813: LD_OWVAR 67
53817: ARRAY
53818: PUSH
53819: LD_INT 4
53821: PUSH
53822: LD_INT 5
53824: PUSH
53825: LD_INT 6
53827: PUSH
53828: EMPTY
53829: LIST
53830: LIST
53831: LIST
53832: PUSH
53833: LD_OWVAR 67
53837: ARRAY
53838: PUSH
53839: LD_INT 1
53841: PUSH
53842: LD_INT 2
53844: PUSH
53845: LD_INT 3
53847: PUSH
53848: EMPTY
53849: LIST
53850: LIST
53851: LIST
53852: PUSH
53853: LD_OWVAR 67
53857: ARRAY
53858: PUSH
53859: LD_INT 2
53861: PUSH
53862: LD_INT 2
53864: PUSH
53865: LD_INT 2
53867: PUSH
53868: LD_INT 1
53870: PUSH
53871: LD_INT 2
53873: PUSH
53874: LD_INT 1
53876: PUSH
53877: LD_INT 0
53879: PUSH
53880: EMPTY
53881: LIST
53882: LIST
53883: LIST
53884: LIST
53885: LIST
53886: LIST
53887: LIST
53888: LIST
53889: LIST
53890: LIST
53891: PUSH
53892: LD_VAR 0 5
53896: ARRAY
53897: PPUSH
53898: LD_INT 2
53900: PPUSH
53901: LD_VAR 0 5
53905: PPUSH
53906: CALL 58837 0 3
53910: PPUSH
53911: CALL_OW 1
53915: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_engineers [ base ] , [ ai_depot [ base ] ] ) ;
53916: LD_VAR 0 5
53920: PPUSH
53921: LD_EXP 32
53925: PUSH
53926: LD_VAR 0 5
53930: ARRAY
53931: PPUSH
53932: LD_EXP 39
53936: PUSH
53937: LD_VAR 0 5
53941: ARRAY
53942: PUSH
53943: EMPTY
53944: LIST
53945: PPUSH
53946: CALL 59288 0 3
// temp_list = [ ] ;
53950: LD_ADDR_VAR 0 2
53954: PUSH
53955: EMPTY
53956: ST_TO_ADDR
// for i in ai_engineers [ base ] do
53957: LD_ADDR_VAR 0 1
53961: PUSH
53962: LD_EXP 32
53966: PUSH
53967: LD_VAR 0 5
53971: ARRAY
53972: PUSH
53973: FOR_IN
53974: IFFALSE 54002
// temp_list = temp_list ^ GetSkill ( i , skill_engineering ) ;
53976: LD_ADDR_VAR 0 2
53980: PUSH
53981: LD_VAR 0 2
53985: PUSH
53986: LD_VAR 0 1
53990: PPUSH
53991: LD_INT 2
53993: PPUSH
53994: CALL_OW 259
53998: ADD
53999: ST_TO_ADDR
54000: GO 53973
54002: POP
54003: POP
// num = BestFromListByList ( temp_list , temp_list ) ;
54004: LD_ADDR_VAR 0 6
54008: PUSH
54009: LD_VAR 0 2
54013: PPUSH
54014: LD_VAR 0 2
54018: PPUSH
54019: CALL_OW 79
54023: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
54024: LD_ADDR_VAR 0 1
54028: PUSH
54029: LD_EXP 66
54033: PUSH
54034: LD_VAR 0 5
54038: ARRAY
54039: PUSH
54040: FOR_IN
54041: IFFALSE 54130
// if GetBtype ( i ) in [ b_armoury , b_barracks , b_breastwork , b_bunker , b_turret ] then
54043: LD_VAR 0 1
54047: PPUSH
54048: CALL_OW 266
54052: PUSH
54053: LD_INT 4
54055: PUSH
54056: LD_INT 5
54058: PUSH
54059: LD_INT 31
54061: PUSH
54062: LD_INT 32
54064: PUSH
54065: LD_INT 33
54067: PUSH
54068: EMPTY
54069: LIST
54070: LIST
54071: LIST
54072: LIST
54073: LIST
54074: IN
54075: IFFALSE 54093
// SetBLevel ( i , num ) else
54077: LD_VAR 0 1
54081: PPUSH
54082: LD_VAR 0 6
54086: PPUSH
54087: CALL_OW 241
54091: GO 54128
// SetBLevel ( i , num - [ 5 , 4 , 3 ] [ difficulty ] ) ;
54093: LD_VAR 0 1
54097: PPUSH
54098: LD_VAR 0 6
54102: PUSH
54103: LD_INT 5
54105: PUSH
54106: LD_INT 4
54108: PUSH
54109: LD_INT 3
54111: PUSH
54112: EMPTY
54113: LIST
54114: LIST
54115: LIST
54116: PUSH
54117: LD_OWVAR 67
54121: ARRAY
54122: MINUS
54123: PPUSH
54124: CALL_OW 241
54128: GO 54040
54130: POP
54131: POP
// ai_apemen_engineers = Replace ( ai_apemen_engineers , base , CreateApemenWithClass ( [ [ 1 , 2 , 3 ] [ difficulty ] , [ 1 , 2 , 3 ] [ difficulty ] , 2 , 0 , 2 , 3 , 3 , 2 , 3 , 3 ] [ base ] , class_apeman_engineer , base ) ) ;
54132: LD_ADDR_EXP 37
54136: PUSH
54137: LD_EXP 37
54141: PPUSH
54142: LD_VAR 0 5
54146: PPUSH
54147: LD_INT 1
54149: PUSH
54150: LD_INT 2
54152: PUSH
54153: LD_INT 3
54155: PUSH
54156: EMPTY
54157: LIST
54158: LIST
54159: LIST
54160: PUSH
54161: LD_OWVAR 67
54165: ARRAY
54166: PUSH
54167: LD_INT 1
54169: PUSH
54170: LD_INT 2
54172: PUSH
54173: LD_INT 3
54175: PUSH
54176: EMPTY
54177: LIST
54178: LIST
54179: LIST
54180: PUSH
54181: LD_OWVAR 67
54185: ARRAY
54186: PUSH
54187: LD_INT 2
54189: PUSH
54190: LD_INT 0
54192: PUSH
54193: LD_INT 2
54195: PUSH
54196: LD_INT 3
54198: PUSH
54199: LD_INT 3
54201: PUSH
54202: LD_INT 2
54204: PUSH
54205: LD_INT 3
54207: PUSH
54208: LD_INT 3
54210: PUSH
54211: EMPTY
54212: LIST
54213: LIST
54214: LIST
54215: LIST
54216: LIST
54217: LIST
54218: LIST
54219: LIST
54220: LIST
54221: LIST
54222: PUSH
54223: LD_VAR 0 5
54227: ARRAY
54228: PPUSH
54229: LD_INT 16
54231: PPUSH
54232: LD_VAR 0 5
54236: PPUSH
54237: CALL 59107 0 3
54241: PPUSH
54242: CALL_OW 1
54246: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_apemen_engineers [ base ] , [ ai_depot [ base ] ] ) ;
54247: LD_VAR 0 5
54251: PPUSH
54252: LD_EXP 37
54256: PUSH
54257: LD_VAR 0 5
54261: ARRAY
54262: PPUSH
54263: LD_EXP 39
54267: PUSH
54268: LD_VAR 0 5
54272: ARRAY
54273: PUSH
54274: EMPTY
54275: LIST
54276: PPUSH
54277: CALL 59288 0 3
// ai_mechanics_defend = Replace ( ai_mechanics_defend , base , CreateUnitsWithClass ( [ 6 , [ 8 , 10 , 12 ] [ difficulty ] , [ 4 , 5 , 6 ] [ difficulty ] , 3 , [ 4 , 5 , 6 ] [ difficulty ] , 3 , 3 , 0 , 0 , 0 ] [ base ] , class_mechanic , base ) ) ;
54281: LD_ADDR_EXP 33
54285: PUSH
54286: LD_EXP 33
54290: PPUSH
54291: LD_VAR 0 5
54295: PPUSH
54296: LD_INT 6
54298: PUSH
54299: LD_INT 8
54301: PUSH
54302: LD_INT 10
54304: PUSH
54305: LD_INT 12
54307: PUSH
54308: EMPTY
54309: LIST
54310: LIST
54311: LIST
54312: PUSH
54313: LD_OWVAR 67
54317: ARRAY
54318: PUSH
54319: LD_INT 4
54321: PUSH
54322: LD_INT 5
54324: PUSH
54325: LD_INT 6
54327: PUSH
54328: EMPTY
54329: LIST
54330: LIST
54331: LIST
54332: PUSH
54333: LD_OWVAR 67
54337: ARRAY
54338: PUSH
54339: LD_INT 3
54341: PUSH
54342: LD_INT 4
54344: PUSH
54345: LD_INT 5
54347: PUSH
54348: LD_INT 6
54350: PUSH
54351: EMPTY
54352: LIST
54353: LIST
54354: LIST
54355: PUSH
54356: LD_OWVAR 67
54360: ARRAY
54361: PUSH
54362: LD_INT 3
54364: PUSH
54365: LD_INT 3
54367: PUSH
54368: LD_INT 0
54370: PUSH
54371: LD_INT 0
54373: PUSH
54374: LD_INT 0
54376: PUSH
54377: EMPTY
54378: LIST
54379: LIST
54380: LIST
54381: LIST
54382: LIST
54383: LIST
54384: LIST
54385: LIST
54386: LIST
54387: LIST
54388: PUSH
54389: LD_VAR 0 5
54393: ARRAY
54394: PPUSH
54395: LD_INT 3
54397: PPUSH
54398: LD_VAR 0 5
54402: PPUSH
54403: CALL 58837 0 3
54407: PPUSH
54408: CALL_OW 1
54412: ST_TO_ADDR
// if base = 2 and difficulty < 3 then
54413: LD_VAR 0 5
54417: PUSH
54418: LD_INT 2
54420: EQUAL
54421: PUSH
54422: LD_OWVAR 67
54426: PUSH
54427: LD_INT 3
54429: LESS
54430: AND
54431: IFFALSE 54564
// begin temp_list = ai_mechanics_defend [ 2 ] ;
54433: LD_ADDR_VAR 0 2
54437: PUSH
54438: LD_EXP 33
54442: PUSH
54443: LD_INT 2
54445: ARRAY
54446: ST_TO_ADDR
// SetSkill ( temp_list [ 1 ] , Skill_Mechanical , Rand ( 4 + difficulty , 6 + difficulty ) ) ;
54447: LD_VAR 0 2
54451: PUSH
54452: LD_INT 1
54454: ARRAY
54455: PPUSH
54456: LD_INT 3
54458: PPUSH
54459: LD_INT 4
54461: PUSH
54462: LD_OWVAR 67
54466: PLUS
54467: PPUSH
54468: LD_INT 6
54470: PUSH
54471: LD_OWVAR 67
54475: PLUS
54476: PPUSH
54477: CALL_OW 12
54481: PPUSH
54482: CALL_OW 237
// SetSkill ( temp_list [ 2 ] , Skill_Mechanical , Rand ( 4 + difficulty , 6 + difficulty ) ) ;
54486: LD_VAR 0 2
54490: PUSH
54491: LD_INT 2
54493: ARRAY
54494: PPUSH
54495: LD_INT 3
54497: PPUSH
54498: LD_INT 4
54500: PUSH
54501: LD_OWVAR 67
54505: PLUS
54506: PPUSH
54507: LD_INT 6
54509: PUSH
54510: LD_OWVAR 67
54514: PLUS
54515: PPUSH
54516: CALL_OW 12
54520: PPUSH
54521: CALL_OW 237
// SetSkill ( temp_list [ 3 ] , Skill_Mechanical , Rand ( 4 + difficulty , 6 + difficulty ) ) ;
54525: LD_VAR 0 2
54529: PUSH
54530: LD_INT 3
54532: ARRAY
54533: PPUSH
54534: LD_INT 3
54536: PPUSH
54537: LD_INT 4
54539: PUSH
54540: LD_OWVAR 67
54544: PLUS
54545: PPUSH
54546: LD_INT 6
54548: PUSH
54549: LD_OWVAR 67
54553: PLUS
54554: PPUSH
54555: CALL_OW 12
54559: PPUSH
54560: CALL_OW 237
// end ; PlaceComputerUnits ( base , ai_mechanics_defend [ base ] , ai_facts [ base ] ) ;
54564: LD_VAR 0 5
54568: PPUSH
54569: LD_EXP 33
54573: PUSH
54574: LD_VAR 0 5
54578: ARRAY
54579: PPUSH
54580: LD_EXP 41
54584: PUSH
54585: LD_VAR 0 5
54589: ARRAY
54590: PPUSH
54591: CALL 59288 0 3
// num = [ [ 4 , 6 , 8 ] [ difficulty ] , 6 , [ 6 , 8 , 10 ] [ difficulty ] , 6 , 0 , 2 , 2 , 0 , 3 , 2 ] [ base ] ;
54595: LD_ADDR_VAR 0 6
54599: PUSH
54600: LD_INT 4
54602: PUSH
54603: LD_INT 6
54605: PUSH
54606: LD_INT 8
54608: PUSH
54609: EMPTY
54610: LIST
54611: LIST
54612: LIST
54613: PUSH
54614: LD_OWVAR 67
54618: ARRAY
54619: PUSH
54620: LD_INT 6
54622: PUSH
54623: LD_INT 6
54625: PUSH
54626: LD_INT 8
54628: PUSH
54629: LD_INT 10
54631: PUSH
54632: EMPTY
54633: LIST
54634: LIST
54635: LIST
54636: PUSH
54637: LD_OWVAR 67
54641: ARRAY
54642: PUSH
54643: LD_INT 6
54645: PUSH
54646: LD_INT 0
54648: PUSH
54649: LD_INT 2
54651: PUSH
54652: LD_INT 2
54654: PUSH
54655: LD_INT 0
54657: PUSH
54658: LD_INT 3
54660: PUSH
54661: LD_INT 2
54663: PUSH
54664: EMPTY
54665: LIST
54666: LIST
54667: LIST
54668: LIST
54669: LIST
54670: LIST
54671: LIST
54672: LIST
54673: LIST
54674: LIST
54675: PUSH
54676: LD_VAR 0 5
54680: ARRAY
54681: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , base , CreateUnitsWithClass ( num , class_scientistic , base ) ) ;
54682: LD_ADDR_EXP 35
54686: PUSH
54687: LD_EXP 35
54691: PPUSH
54692: LD_VAR 0 5
54696: PPUSH
54697: LD_VAR 0 6
54701: PPUSH
54702: LD_INT 4
54704: PPUSH
54705: LD_VAR 0 5
54709: PPUSH
54710: CALL 58837 0 3
54714: PPUSH
54715: CALL_OW 1
54719: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_scientists [ base ] , ai_labs [ base ] ) ;
54720: LD_VAR 0 5
54724: PPUSH
54725: LD_EXP 35
54729: PUSH
54730: LD_VAR 0 5
54734: ARRAY
54735: PPUSH
54736: LD_EXP 40
54740: PUSH
54741: LD_VAR 0 5
54745: ARRAY
54746: PPUSH
54747: CALL 59288 0 3
// SetResourceType ( GetBase ( ai_depot [ base ] ) , mat_cans , 300 ) ;
54751: LD_EXP 39
54755: PUSH
54756: LD_VAR 0 5
54760: ARRAY
54761: PPUSH
54762: CALL_OW 274
54766: PPUSH
54767: LD_INT 1
54769: PPUSH
54770: LD_INT 300
54772: PPUSH
54773: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ base ] ) , mat_oil , 300 ) ;
54777: LD_EXP 39
54781: PUSH
54782: LD_VAR 0 5
54786: ARRAY
54787: PPUSH
54788: CALL_OW 274
54792: PPUSH
54793: LD_INT 2
54795: PPUSH
54796: LD_INT 300
54798: PPUSH
54799: CALL_OW 277
// SetResourceType ( GetBase ( ai_depot [ base ] ) , mat_siberit , 300 ) ;
54803: LD_EXP 39
54807: PUSH
54808: LD_VAR 0 5
54812: ARRAY
54813: PPUSH
54814: CALL_OW 274
54818: PPUSH
54819: LD_INT 3
54821: PPUSH
54822: LD_INT 300
54824: PPUSH
54825: CALL_OW 277
// num = 0 ;
54829: LD_ADDR_VAR 0 6
54833: PUSH
54834: LD_INT 0
54836: ST_TO_ADDR
// for i in ai_soldiers [ base ] ^ ai_engineers [ base ] ^ ai_apemen_engineers [ base ] ^ ai_mechanics_defend [ base ] ^ ai_scientists [ base ] do
54837: LD_ADDR_VAR 0 1
54841: PUSH
54842: LD_EXP 30
54846: PUSH
54847: LD_VAR 0 5
54851: ARRAY
54852: PUSH
54853: LD_EXP 32
54857: PUSH
54858: LD_VAR 0 5
54862: ARRAY
54863: ADD
54864: PUSH
54865: LD_EXP 37
54869: PUSH
54870: LD_VAR 0 5
54874: ARRAY
54875: ADD
54876: PUSH
54877: LD_EXP 33
54881: PUSH
54882: LD_VAR 0 5
54886: ARRAY
54887: ADD
54888: PUSH
54889: LD_EXP 35
54893: PUSH
54894: LD_VAR 0 5
54898: ARRAY
54899: ADD
54900: PUSH
54901: FOR_IN
54902: IFFALSE 54920
// num = num + 1 ;
54904: LD_ADDR_VAR 0 6
54908: PUSH
54909: LD_VAR 0 6
54913: PUSH
54914: LD_INT 1
54916: PLUS
54917: ST_TO_ADDR
54918: GO 54901
54920: POP
54921: POP
// starting_people_count = starting_people_count ^ num ;
54922: LD_ADDR_EXP 172
54926: PUSH
54927: LD_EXP 172
54931: PUSH
54932: LD_VAR 0 6
54936: ADD
54937: ST_TO_ADDR
// end ;
54938: GO 51618
54940: POP
54941: POP
// enable ( 2 ) ;
54942: LD_INT 2
54944: ENABLE_MARKED
// Inituc ;
54945: CALL_OW 18
// Initvc ;
54949: CALL_OW 20
// uc_side = 3 ;
54953: LD_ADDR_OWVAR 20
54957: PUSH
54958: LD_INT 3
54960: ST_TO_ADDR
// uc_nation = nation_russian ;
54961: LD_ADDR_OWVAR 21
54965: PUSH
54966: LD_INT 3
54968: ST_TO_ADDR
// vc_weapon = ru_crane ;
54969: LD_ADDR_OWVAR 40
54973: PUSH
54974: LD_INT 52
54976: ST_TO_ADDR
// vc_engine = engine_siberite ;
54977: LD_ADDR_OWVAR 39
54981: PUSH
54982: LD_INT 3
54984: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
54985: LD_ADDR_OWVAR 37
54989: PUSH
54990: LD_INT 22
54992: ST_TO_ADDR
// vc_control = control_computer ;
54993: LD_ADDR_OWVAR 38
54997: PUSH
54998: LD_INT 3
55000: ST_TO_ADDR
// temp = createvehicle ;
55001: LD_ADDR_VAR 0 8
55005: PUSH
55006: CALL_OW 45
55010: ST_TO_ADDR
// ai_crane = replace ( ai_crane , 1 , temp ) ;
55011: LD_ADDR_EXP 78
55015: PUSH
55016: LD_EXP 78
55020: PPUSH
55021: LD_INT 1
55023: PPUSH
55024: LD_VAR 0 8
55028: PPUSH
55029: CALL_OW 1
55033: ST_TO_ADDR
// placeunitarea ( temp , area_base1 , false ) ;
55034: LD_VAR 0 8
55038: PPUSH
55039: LD_INT 1
55041: PPUSH
55042: LD_INT 0
55044: PPUSH
55045: CALL_OW 49
// commovexy ( temp , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] ) ;
55049: LD_VAR 0 8
55053: PPUSH
55054: LD_EXP 63
55058: PUSH
55059: LD_INT 1
55061: ARRAY
55062: PUSH
55063: LD_INT 1
55065: ARRAY
55066: PPUSH
55067: LD_EXP 63
55071: PUSH
55072: LD_INT 1
55074: ARRAY
55075: PUSH
55076: LD_INT 2
55078: ARRAY
55079: PPUSH
55080: CALL_OW 111
// vc_control = control_manual ;
55084: LD_ADDR_OWVAR 38
55088: PUSH
55089: LD_INT 1
55091: ST_TO_ADDR
// temp = createvehicle ;
55092: LD_ADDR_VAR 0 8
55096: PUSH
55097: CALL_OW 45
55101: ST_TO_ADDR
// ai_crane = replace ( ai_crane , 2 , temp ) ;
55102: LD_ADDR_EXP 78
55106: PUSH
55107: LD_EXP 78
55111: PPUSH
55112: LD_INT 2
55114: PPUSH
55115: LD_VAR 0 8
55119: PPUSH
55120: CALL_OW 1
55124: ST_TO_ADDR
// placeunitarea ( temp , area_base2 , false ) ;
55125: LD_VAR 0 8
55129: PPUSH
55130: LD_INT 2
55132: PPUSH
55133: LD_INT 0
55135: PPUSH
55136: CALL_OW 49
// commovexy ( temp , ai_human_pullback_hex [ 2 ] [ 1 ] , ai_human_pullback_hex [ 2 ] [ 2 ] ) ;
55140: LD_VAR 0 8
55144: PPUSH
55145: LD_EXP 63
55149: PUSH
55150: LD_INT 2
55152: ARRAY
55153: PUSH
55154: LD_INT 1
55156: ARRAY
55157: PPUSH
55158: LD_EXP 63
55162: PUSH
55163: LD_INT 2
55165: ARRAY
55166: PUSH
55167: LD_INT 2
55169: ARRAY
55170: PPUSH
55171: CALL_OW 111
// for i = 1 to 2 do
55175: LD_ADDR_VAR 0 1
55179: PUSH
55180: DOUBLE
55181: LD_INT 1
55183: DEC
55184: ST_TO_ADDR
55185: LD_INT 2
55187: PUSH
55188: FOR_TO
55189: IFFALSE 55470
// begin case rand ( 1 , 4 ) of 1 :
55191: LD_INT 1
55193: PPUSH
55194: LD_INT 4
55196: PPUSH
55197: CALL_OW 12
55201: PUSH
55202: LD_INT 1
55204: DOUBLE
55205: EQUAL
55206: IFTRUE 55210
55208: GO 55245
55210: POP
// begin vc_weapon = ru_heavy_gun ;
55211: LD_ADDR_OWVAR 40
55215: PUSH
55216: LD_INT 46
55218: ST_TO_ADDR
// vc_chassis = ru_heavy_tracked ;
55219: LD_ADDR_OWVAR 37
55223: PUSH
55224: LD_INT 24
55226: ST_TO_ADDR
// vc_engine = engine_siberite ;
55227: LD_ADDR_OWVAR 39
55231: PUSH
55232: LD_INT 3
55234: ST_TO_ADDR
// vc_control = control_computer ;
55235: LD_ADDR_OWVAR 38
55239: PUSH
55240: LD_INT 3
55242: ST_TO_ADDR
// end ; 2 :
55243: GO 55375
55245: LD_INT 2
55247: DOUBLE
55248: EQUAL
55249: IFTRUE 55253
55251: GO 55288
55253: POP
// begin vc_weapon = ru_gun ;
55254: LD_ADDR_OWVAR 40
55258: PUSH
55259: LD_INT 44
55261: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55262: LD_ADDR_OWVAR 37
55266: PUSH
55267: LD_INT 22
55269: ST_TO_ADDR
// vc_engine = engine_siberite ;
55270: LD_ADDR_OWVAR 39
55274: PUSH
55275: LD_INT 3
55277: ST_TO_ADDR
// vc_control = control_computer ;
55278: LD_ADDR_OWVAR 38
55282: PUSH
55283: LD_INT 3
55285: ST_TO_ADDR
// end ; 3 :
55286: GO 55375
55288: LD_INT 3
55290: DOUBLE
55291: EQUAL
55292: IFTRUE 55296
55294: GO 55331
55296: POP
// begin vc_weapon = ru_rocket_launcher ;
55297: LD_ADDR_OWVAR 40
55301: PUSH
55302: LD_INT 45
55304: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55305: LD_ADDR_OWVAR 37
55309: PUSH
55310: LD_INT 22
55312: ST_TO_ADDR
// vc_engine = engine_siberite ;
55313: LD_ADDR_OWVAR 39
55317: PUSH
55318: LD_INT 3
55320: ST_TO_ADDR
// vc_control = control_computer ;
55321: LD_ADDR_OWVAR 38
55325: PUSH
55326: LD_INT 3
55328: ST_TO_ADDR
// end ; 4 :
55329: GO 55375
55331: LD_INT 4
55333: DOUBLE
55334: EQUAL
55335: IFTRUE 55339
55337: GO 55374
55339: POP
// begin vc_weapon = ru_gatling_gun ;
55340: LD_ADDR_OWVAR 40
55344: PUSH
55345: LD_INT 43
55347: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55348: LD_ADDR_OWVAR 37
55352: PUSH
55353: LD_INT 22
55355: ST_TO_ADDR
// vc_engine = engine_siberite ;
55356: LD_ADDR_OWVAR 39
55360: PUSH
55361: LD_INT 3
55363: ST_TO_ADDR
// vc_control = control_computer ;
55364: LD_ADDR_OWVAR 38
55368: PUSH
55369: LD_INT 3
55371: ST_TO_ADDR
// end ; end ;
55372: GO 55375
55374: POP
// temp = createvehicle ;
55375: LD_ADDR_VAR 0 8
55379: PUSH
55380: CALL_OW 45
55384: ST_TO_ADDR
// placeunitarea ( temp , base3_vehicle_defend , false ) ;
55385: LD_VAR 0 8
55389: PPUSH
55390: LD_INT 13
55392: PPUSH
55393: LD_INT 0
55395: PPUSH
55396: CALL_OW 49
// ai_vehicles_defend = replace ( ai_vehicles_defend , 3 , ai_vehicles_defend [ 3 ] ^ temp ) ;
55400: LD_ADDR_EXP 57
55404: PUSH
55405: LD_EXP 57
55409: PPUSH
55410: LD_INT 3
55412: PPUSH
55413: LD_EXP 57
55417: PUSH
55418: LD_INT 3
55420: ARRAY
55421: PUSH
55422: LD_VAR 0 8
55426: ADD
55427: PPUSH
55428: CALL_OW 1
55432: ST_TO_ADDR
// commovexy ( temp , ai_human_pullback_hex [ 3 ] [ 1 ] , ai_human_pullback_hex [ 3 ] [ 2 ] ) ;
55433: LD_VAR 0 8
55437: PPUSH
55438: LD_EXP 63
55442: PUSH
55443: LD_INT 3
55445: ARRAY
55446: PUSH
55447: LD_INT 1
55449: ARRAY
55450: PPUSH
55451: LD_EXP 63
55455: PUSH
55456: LD_INT 3
55458: ARRAY
55459: PUSH
55460: LD_INT 2
55462: ARRAY
55463: PPUSH
55464: CALL_OW 111
// end ;
55468: GO 55188
55470: POP
55471: POP
// vc_control = control_manual ;
55472: LD_ADDR_OWVAR 38
55476: PUSH
55477: LD_INT 1
55479: ST_TO_ADDR
// vc_chassis = ru_heavy_tracked ;
55480: LD_ADDR_OWVAR 37
55484: PUSH
55485: LD_INT 24
55487: ST_TO_ADDR
// vc_weapon = ru_gun ;
55488: LD_ADDR_OWVAR 40
55492: PUSH
55493: LD_INT 44
55495: ST_TO_ADDR
// temp = createvehicle ;
55496: LD_ADDR_VAR 0 8
55500: PUSH
55501: CALL_OW 45
55505: ST_TO_ADDR
// placeunitarea ( temp , area_base4 , false ) ;
55506: LD_VAR 0 8
55510: PPUSH
55511: LD_INT 7
55513: PPUSH
55514: LD_INT 0
55516: PPUSH
55517: CALL_OW 49
// ai_vehicles_defend = replace ( ai_vehicles_defend , 4 , ai_vehicles_defend [ 4 ] ^ temp ) ;
55521: LD_ADDR_EXP 57
55525: PUSH
55526: LD_EXP 57
55530: PPUSH
55531: LD_INT 4
55533: PPUSH
55534: LD_EXP 57
55538: PUSH
55539: LD_INT 4
55541: ARRAY
55542: PUSH
55543: LD_VAR 0 8
55547: ADD
55548: PPUSH
55549: CALL_OW 1
55553: ST_TO_ADDR
// commovexy ( temp , ai_human_pullback_hex [ 4 ] [ 1 ] , ai_human_pullback_hex [ 4 ] [ 2 ] ) ;
55554: LD_VAR 0 8
55558: PPUSH
55559: LD_EXP 63
55563: PUSH
55564: LD_INT 4
55566: ARRAY
55567: PUSH
55568: LD_INT 1
55570: ARRAY
55571: PPUSH
55572: LD_EXP 63
55576: PUSH
55577: LD_INT 4
55579: ARRAY
55580: PUSH
55581: LD_INT 2
55583: ARRAY
55584: PPUSH
55585: CALL_OW 111
// vc_weapon = ru_heavy_gun ;
55589: LD_ADDR_OWVAR 40
55593: PUSH
55594: LD_INT 46
55596: ST_TO_ADDR
// temp = createvehicle ;
55597: LD_ADDR_VAR 0 8
55601: PUSH
55602: CALL_OW 45
55606: ST_TO_ADDR
// placeunitarea ( temp , area_base4 , false ) ;
55607: LD_VAR 0 8
55611: PPUSH
55612: LD_INT 7
55614: PPUSH
55615: LD_INT 0
55617: PPUSH
55618: CALL_OW 49
// ai_vehicles_defend = replace ( ai_vehicles_defend , 4 , ai_vehicles_defend [ 4 ] ^ temp ) ;
55622: LD_ADDR_EXP 57
55626: PUSH
55627: LD_EXP 57
55631: PPUSH
55632: LD_INT 4
55634: PPUSH
55635: LD_EXP 57
55639: PUSH
55640: LD_INT 4
55642: ARRAY
55643: PUSH
55644: LD_VAR 0 8
55648: ADD
55649: PPUSH
55650: CALL_OW 1
55654: ST_TO_ADDR
// commovexy ( temp , ai_human_pullback_hex [ 4 ] [ 1 ] , ai_human_pullback_hex [ 4 ] [ 2 ] ) ;
55655: LD_VAR 0 8
55659: PPUSH
55660: LD_EXP 63
55664: PUSH
55665: LD_INT 4
55667: ARRAY
55668: PUSH
55669: LD_INT 1
55671: ARRAY
55672: PPUSH
55673: LD_EXP 63
55677: PUSH
55678: LD_INT 4
55680: ARRAY
55681: PUSH
55682: LD_INT 2
55684: ARRAY
55685: PPUSH
55686: CALL_OW 111
// for i = 1 to 3 do
55690: LD_ADDR_VAR 0 1
55694: PUSH
55695: DOUBLE
55696: LD_INT 1
55698: DEC
55699: ST_TO_ADDR
55700: LD_INT 3
55702: PUSH
55703: FOR_TO
55704: IFFALSE 55985
// begin case rand ( 1 , 4 ) of 1 :
55706: LD_INT 1
55708: PPUSH
55709: LD_INT 4
55711: PPUSH
55712: CALL_OW 12
55716: PUSH
55717: LD_INT 1
55719: DOUBLE
55720: EQUAL
55721: IFTRUE 55725
55723: GO 55760
55725: POP
// begin vc_weapon = ru_heavy_gun ;
55726: LD_ADDR_OWVAR 40
55730: PUSH
55731: LD_INT 46
55733: ST_TO_ADDR
// vc_chassis = ru_heavy_tracked ;
55734: LD_ADDR_OWVAR 37
55738: PUSH
55739: LD_INT 24
55741: ST_TO_ADDR
// vc_engine = engine_siberite ;
55742: LD_ADDR_OWVAR 39
55746: PUSH
55747: LD_INT 3
55749: ST_TO_ADDR
// vc_control = control_computer ;
55750: LD_ADDR_OWVAR 38
55754: PUSH
55755: LD_INT 3
55757: ST_TO_ADDR
// end ; 2 :
55758: GO 55890
55760: LD_INT 2
55762: DOUBLE
55763: EQUAL
55764: IFTRUE 55768
55766: GO 55803
55768: POP
// begin vc_weapon = ru_gun ;
55769: LD_ADDR_OWVAR 40
55773: PUSH
55774: LD_INT 44
55776: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55777: LD_ADDR_OWVAR 37
55781: PUSH
55782: LD_INT 22
55784: ST_TO_ADDR
// vc_engine = engine_siberite ;
55785: LD_ADDR_OWVAR 39
55789: PUSH
55790: LD_INT 3
55792: ST_TO_ADDR
// vc_control = control_computer ;
55793: LD_ADDR_OWVAR 38
55797: PUSH
55798: LD_INT 3
55800: ST_TO_ADDR
// end ; 3 :
55801: GO 55890
55803: LD_INT 3
55805: DOUBLE
55806: EQUAL
55807: IFTRUE 55811
55809: GO 55846
55811: POP
// begin vc_weapon = ru_rocket_launcher ;
55812: LD_ADDR_OWVAR 40
55816: PUSH
55817: LD_INT 45
55819: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55820: LD_ADDR_OWVAR 37
55824: PUSH
55825: LD_INT 22
55827: ST_TO_ADDR
// vc_engine = engine_siberite ;
55828: LD_ADDR_OWVAR 39
55832: PUSH
55833: LD_INT 3
55835: ST_TO_ADDR
// vc_control = control_computer ;
55836: LD_ADDR_OWVAR 38
55840: PUSH
55841: LD_INT 3
55843: ST_TO_ADDR
// end ; 4 :
55844: GO 55890
55846: LD_INT 4
55848: DOUBLE
55849: EQUAL
55850: IFTRUE 55854
55852: GO 55889
55854: POP
// begin vc_weapon = ru_gatling_gun ;
55855: LD_ADDR_OWVAR 40
55859: PUSH
55860: LD_INT 43
55862: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
55863: LD_ADDR_OWVAR 37
55867: PUSH
55868: LD_INT 22
55870: ST_TO_ADDR
// vc_engine = engine_siberite ;
55871: LD_ADDR_OWVAR 39
55875: PUSH
55876: LD_INT 3
55878: ST_TO_ADDR
// vc_control = control_computer ;
55879: LD_ADDR_OWVAR 38
55883: PUSH
55884: LD_INT 3
55886: ST_TO_ADDR
// end ; end ;
55887: GO 55890
55889: POP
// temp = createvehicle ;
55890: LD_ADDR_VAR 0 8
55894: PUSH
55895: CALL_OW 45
55899: ST_TO_ADDR
// placeunitarea ( temp , area_base5 , false ) ;
55900: LD_VAR 0 8
55904: PPUSH
55905: LD_INT 8
55907: PPUSH
55908: LD_INT 0
55910: PPUSH
55911: CALL_OW 49
// ai_vehicles_defend = replace ( ai_vehicles_defend , 5 , ai_vehicles_defend [ 5 ] ^ temp ) ;
55915: LD_ADDR_EXP 57
55919: PUSH
55920: LD_EXP 57
55924: PPUSH
55925: LD_INT 5
55927: PPUSH
55928: LD_EXP 57
55932: PUSH
55933: LD_INT 5
55935: ARRAY
55936: PUSH
55937: LD_VAR 0 8
55941: ADD
55942: PPUSH
55943: CALL_OW 1
55947: ST_TO_ADDR
// commovexy ( temp , ai_human_pullback_hex [ 5 ] [ 1 ] , ai_human_pullback_hex [ 5 ] [ 2 ] ) ;
55948: LD_VAR 0 8
55952: PPUSH
55953: LD_EXP 63
55957: PUSH
55958: LD_INT 5
55960: ARRAY
55961: PUSH
55962: LD_INT 1
55964: ARRAY
55965: PPUSH
55966: LD_EXP 63
55970: PUSH
55971: LD_INT 5
55973: ARRAY
55974: PUSH
55975: LD_INT 2
55977: ARRAY
55978: PPUSH
55979: CALL_OW 111
// end ;
55983: GO 55703
55985: POP
55986: POP
// vc_weapon = ru_time_lapser ;
55987: LD_ADDR_OWVAR 40
55991: PUSH
55992: LD_INT 49
55994: ST_TO_ADDR
// vc_chassis = ru_heavy_wheeled ;
55995: LD_ADDR_OWVAR 37
55999: PUSH
56000: LD_INT 23
56002: ST_TO_ADDR
// vc_engine = engine_siberite ;
56003: LD_ADDR_OWVAR 39
56007: PUSH
56008: LD_INT 3
56010: ST_TO_ADDR
// vc_control = control_computer ;
56011: LD_ADDR_OWVAR 38
56015: PUSH
56016: LD_INT 3
56018: ST_TO_ADDR
// temp = createvehicle ;
56019: LD_ADDR_VAR 0 8
56023: PUSH
56024: CALL_OW 45
56028: ST_TO_ADDR
// placeunitarea ( temp , area_base6 , false ) ;
56029: LD_VAR 0 8
56033: PPUSH
56034: LD_INT 9
56036: PPUSH
56037: LD_INT 0
56039: PPUSH
56040: CALL_OW 49
// ai_vehicles_defend = replace ( ai_vehicles_defend , 6 , ai_vehicles_defend [ 6 ] ^ temp ) ;
56044: LD_ADDR_EXP 57
56048: PUSH
56049: LD_EXP 57
56053: PPUSH
56054: LD_INT 6
56056: PPUSH
56057: LD_EXP 57
56061: PUSH
56062: LD_INT 6
56064: ARRAY
56065: PUSH
56066: LD_VAR 0 8
56070: ADD
56071: PPUSH
56072: CALL_OW 1
56076: ST_TO_ADDR
// commovexy ( temp , 137 , 14 ) ;
56077: LD_VAR 0 8
56081: PPUSH
56082: LD_INT 137
56084: PPUSH
56085: LD_INT 14
56087: PPUSH
56088: CALL_OW 111
// if help_variant = 2 then
56092: LD_EXP 2
56096: PUSH
56097: LD_INT 2
56099: EQUAL
56100: IFFALSE 56984
// begin uc_side = 8 ;
56102: LD_ADDR_OWVAR 20
56106: PUSH
56107: LD_INT 8
56109: ST_TO_ADDR
// uc_nation = nation_arabian ;
56110: LD_ADDR_OWVAR 21
56114: PUSH
56115: LD_INT 2
56117: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
56118: LD_ADDR_OWVAR 37
56122: PUSH
56123: LD_INT 14
56125: ST_TO_ADDR
// vc_engine = engine_siberite ;
56126: LD_ADDR_OWVAR 39
56130: PUSH
56131: LD_INT 3
56133: ST_TO_ADDR
// vc_control = control_remote ;
56134: LD_ADDR_OWVAR 38
56138: PUSH
56139: LD_INT 2
56141: ST_TO_ADDR
// vc_weapon = ar_selfpropelled_bomb ;
56142: LD_ADDR_OWVAR 40
56146: PUSH
56147: LD_INT 29
56149: ST_TO_ADDR
// temp_list = createvehicle ;
56150: LD_ADDR_VAR 0 2
56154: PUSH
56155: CALL_OW 45
56159: ST_TO_ADDR
// vc_control = control_apeman ;
56160: LD_ADDR_OWVAR 38
56164: PUSH
56165: LD_INT 5
56167: ST_TO_ADDR
// vc_weapon = ar_radar ;
56168: LD_ADDR_OWVAR 40
56172: PUSH
56173: LD_INT 30
56175: ST_TO_ADDR
// temp_list = temp_list ^ createvehicle ;
56176: LD_ADDR_VAR 0 2
56180: PUSH
56181: LD_VAR 0 2
56185: PUSH
56186: CALL_OW 45
56190: ADD
56191: ST_TO_ADDR
// vc_weapon = ar_rocket_launcher ;
56192: LD_ADDR_OWVAR 40
56196: PUSH
56197: LD_INT 28
56199: ST_TO_ADDR
// temp_list = temp_list ^ createvehicle ;
56200: LD_ADDR_VAR 0 2
56204: PUSH
56205: LD_VAR 0 2
56209: PUSH
56210: CALL_OW 45
56214: ADD
56215: ST_TO_ADDR
// vc_control = control_remote ;
56216: LD_ADDR_OWVAR 38
56220: PUSH
56221: LD_INT 2
56223: ST_TO_ADDR
// temp_list = temp_list ^ createvehicle ;
56224: LD_ADDR_VAR 0 2
56228: PUSH
56229: LD_VAR 0 2
56233: PUSH
56234: CALL_OW 45
56238: ADD
56239: ST_TO_ADDR
// for i in temp_list do
56240: LD_ADDR_VAR 0 1
56244: PUSH
56245: LD_VAR 0 2
56249: PUSH
56250: FOR_IN
56251: IFFALSE 56270
// placeunitarea ( i , legion_help1 , false ) ;
56253: LD_VAR 0 1
56257: PPUSH
56258: LD_INT 20
56260: PPUSH
56261: LD_INT 0
56263: PPUSH
56264: CALL_OW 49
56268: GO 56250
56270: POP
56271: POP
// vc_control = control_apeman ;
56272: LD_ADDR_OWVAR 38
56276: PUSH
56277: LD_INT 5
56279: ST_TO_ADDR
// vc_weapon = ar_gatling_gun ;
56280: LD_ADDR_OWVAR 40
56284: PUSH
56285: LD_INT 25
56287: ST_TO_ADDR
// temp_list = createvehicle ;
56288: LD_ADDR_VAR 0 2
56292: PUSH
56293: CALL_OW 45
56297: ST_TO_ADDR
// uc_nation = nation_nature ;
56298: LD_ADDR_OWVAR 21
56302: PUSH
56303: LD_INT 0
56305: ST_TO_ADDR
// hc_class = class_apeman_soldier ;
56306: LD_ADDR_OWVAR 28
56310: PUSH
56311: LD_INT 15
56313: ST_TO_ADDR
// hc_skills = [ rand ( 6 , 8 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) ] ;
56314: LD_ADDR_OWVAR 31
56318: PUSH
56319: LD_INT 6
56321: PPUSH
56322: LD_INT 8
56324: PPUSH
56325: CALL_OW 12
56329: PUSH
56330: LD_INT 2
56332: PPUSH
56333: LD_INT 6
56335: PPUSH
56336: CALL_OW 12
56340: PUSH
56341: LD_INT 2
56343: PPUSH
56344: LD_INT 6
56346: PPUSH
56347: CALL_OW 12
56351: PUSH
56352: LD_INT 2
56354: PPUSH
56355: LD_INT 6
56357: PPUSH
56358: CALL_OW 12
56362: PUSH
56363: EMPTY
56364: LIST
56365: LIST
56366: LIST
56367: LIST
56368: ST_TO_ADDR
// temp_list = temp_list ^ createhuman ;
56369: LD_ADDR_VAR 0 2
56373: PUSH
56374: LD_VAR 0 2
56378: PUSH
56379: CALL_OW 44
56383: ADD
56384: ST_TO_ADDR
// hc_skills = [ rand ( 6 , 8 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) ] ;
56385: LD_ADDR_OWVAR 31
56389: PUSH
56390: LD_INT 6
56392: PPUSH
56393: LD_INT 8
56395: PPUSH
56396: CALL_OW 12
56400: PUSH
56401: LD_INT 2
56403: PPUSH
56404: LD_INT 6
56406: PPUSH
56407: CALL_OW 12
56411: PUSH
56412: LD_INT 2
56414: PPUSH
56415: LD_INT 6
56417: PPUSH
56418: CALL_OW 12
56422: PUSH
56423: LD_INT 2
56425: PPUSH
56426: LD_INT 6
56428: PPUSH
56429: CALL_OW 12
56433: PUSH
56434: EMPTY
56435: LIST
56436: LIST
56437: LIST
56438: LIST
56439: ST_TO_ADDR
// temp_list = temp_list ^ createhuman ;
56440: LD_ADDR_VAR 0 2
56444: PUSH
56445: LD_VAR 0 2
56449: PUSH
56450: CALL_OW 44
56454: ADD
56455: ST_TO_ADDR
// hc_skills = [ rand ( 6 , 8 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) ] ;
56456: LD_ADDR_OWVAR 31
56460: PUSH
56461: LD_INT 6
56463: PPUSH
56464: LD_INT 8
56466: PPUSH
56467: CALL_OW 12
56471: PUSH
56472: LD_INT 2
56474: PPUSH
56475: LD_INT 6
56477: PPUSH
56478: CALL_OW 12
56482: PUSH
56483: LD_INT 2
56485: PPUSH
56486: LD_INT 6
56488: PPUSH
56489: CALL_OW 12
56493: PUSH
56494: LD_INT 2
56496: PPUSH
56497: LD_INT 6
56499: PPUSH
56500: CALL_OW 12
56504: PUSH
56505: EMPTY
56506: LIST
56507: LIST
56508: LIST
56509: LIST
56510: ST_TO_ADDR
// temp_list = temp_list ^ createhuman ;
56511: LD_ADDR_VAR 0 2
56515: PUSH
56516: LD_VAR 0 2
56520: PUSH
56521: CALL_OW 44
56525: ADD
56526: ST_TO_ADDR
// hc_class = class_apeman_kamikaze ;
56527: LD_ADDR_OWVAR 28
56531: PUSH
56532: LD_INT 17
56534: ST_TO_ADDR
// temp_list = temp_list ^ createhuman ;
56535: LD_ADDR_VAR 0 2
56539: PUSH
56540: LD_VAR 0 2
56544: PUSH
56545: CALL_OW 44
56549: ADD
56550: ST_TO_ADDR
// hc_skills = [ rand ( 6 , 8 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) , rand ( 2 , 6 ) ] ;
56551: LD_ADDR_OWVAR 31
56555: PUSH
56556: LD_INT 6
56558: PPUSH
56559: LD_INT 8
56561: PPUSH
56562: CALL_OW 12
56566: PUSH
56567: LD_INT 2
56569: PPUSH
56570: LD_INT 6
56572: PPUSH
56573: CALL_OW 12
56577: PUSH
56578: LD_INT 2
56580: PPUSH
56581: LD_INT 6
56583: PPUSH
56584: CALL_OW 12
56588: PUSH
56589: LD_INT 2
56591: PPUSH
56592: LD_INT 6
56594: PPUSH
56595: CALL_OW 12
56599: PUSH
56600: EMPTY
56601: LIST
56602: LIST
56603: LIST
56604: LIST
56605: ST_TO_ADDR
// temp_list = temp_list ^ createhuman ;
56606: LD_ADDR_VAR 0 2
56610: PUSH
56611: LD_VAR 0 2
56615: PUSH
56616: CALL_OW 44
56620: ADD
56621: ST_TO_ADDR
// for i in temp_list do
56622: LD_ADDR_VAR 0 1
56626: PUSH
56627: LD_VAR 0 2
56631: PUSH
56632: FOR_IN
56633: IFFALSE 56652
// placeunitarea ( i , legion_help2 , false ) ;
56635: LD_VAR 0 1
56639: PPUSH
56640: LD_INT 21
56642: PPUSH
56643: LD_INT 0
56645: PPUSH
56646: CALL_OW 49
56650: GO 56632
56652: POP
56653: POP
// placemine ( 118 , 72 , 8 , 0 ) ;
56654: LD_INT 118
56656: PPUSH
56657: LD_INT 72
56659: PPUSH
56660: LD_INT 8
56662: PPUSH
56663: LD_INT 0
56665: PPUSH
56666: CALL_OW 454
// placemine ( 118 , 72 , 8 , 0 ) ;
56670: LD_INT 118
56672: PPUSH
56673: LD_INT 72
56675: PPUSH
56676: LD_INT 8
56678: PPUSH
56679: LD_INT 0
56681: PPUSH
56682: CALL_OW 454
// placemine ( 118 , 72 , 8 , 0 ) ;
56686: LD_INT 118
56688: PPUSH
56689: LD_INT 72
56691: PPUSH
56692: LD_INT 8
56694: PPUSH
56695: LD_INT 0
56697: PPUSH
56698: CALL_OW 454
// placemine ( 118 , 73 , 8 , 0 ) ;
56702: LD_INT 118
56704: PPUSH
56705: LD_INT 73
56707: PPUSH
56708: LD_INT 8
56710: PPUSH
56711: LD_INT 0
56713: PPUSH
56714: CALL_OW 454
// placemine ( 118 , 73 , 8 , 0 ) ;
56718: LD_INT 118
56720: PPUSH
56721: LD_INT 73
56723: PPUSH
56724: LD_INT 8
56726: PPUSH
56727: LD_INT 0
56729: PPUSH
56730: CALL_OW 454
// placemine ( 118 , 73 , 8 , 0 ) ;
56734: LD_INT 118
56736: PPUSH
56737: LD_INT 73
56739: PPUSH
56740: LD_INT 8
56742: PPUSH
56743: LD_INT 0
56745: PPUSH
56746: CALL_OW 454
// placemine ( 76 , 67 , 8 , 0 ) ;
56750: LD_INT 76
56752: PPUSH
56753: LD_INT 67
56755: PPUSH
56756: LD_INT 8
56758: PPUSH
56759: LD_INT 0
56761: PPUSH
56762: CALL_OW 454
// placemine ( 79 , 67 , 8 , 0 ) ;
56766: LD_INT 79
56768: PPUSH
56769: LD_INT 67
56771: PPUSH
56772: LD_INT 8
56774: PPUSH
56775: LD_INT 0
56777: PPUSH
56778: CALL_OW 454
// placemine ( 79 , 67 , 8 , 0 ) ;
56782: LD_INT 79
56784: PPUSH
56785: LD_INT 67
56787: PPUSH
56788: LD_INT 8
56790: PPUSH
56791: LD_INT 0
56793: PPUSH
56794: CALL_OW 454
// placemine ( 79 , 67 , 8 , 0 ) ;
56798: LD_INT 79
56800: PPUSH
56801: LD_INT 67
56803: PPUSH
56804: LD_INT 8
56806: PPUSH
56807: LD_INT 0
56809: PPUSH
56810: CALL_OW 454
// placemine ( 79 , 67 , 8 , 0 ) ;
56814: LD_INT 79
56816: PPUSH
56817: LD_INT 67
56819: PPUSH
56820: LD_INT 8
56822: PPUSH
56823: LD_INT 0
56825: PPUSH
56826: CALL_OW 454
// placemine ( 100 , 68 , 8 , 0 ) ;
56830: LD_INT 100
56832: PPUSH
56833: LD_INT 68
56835: PPUSH
56836: LD_INT 8
56838: PPUSH
56839: LD_INT 0
56841: PPUSH
56842: CALL_OW 454
// placemine ( 100 , 68 , 8 , 0 ) ;
56846: LD_INT 100
56848: PPUSH
56849: LD_INT 68
56851: PPUSH
56852: LD_INT 8
56854: PPUSH
56855: LD_INT 0
56857: PPUSH
56858: CALL_OW 454
// placemine ( 100 , 68 , 8 , 0 ) ;
56862: LD_INT 100
56864: PPUSH
56865: LD_INT 68
56867: PPUSH
56868: LD_INT 8
56870: PPUSH
56871: LD_INT 0
56873: PPUSH
56874: CALL_OW 454
// placemine ( 81 , 53 , 8 , 0 ) ;
56878: LD_INT 81
56880: PPUSH
56881: LD_INT 53
56883: PPUSH
56884: LD_INT 8
56886: PPUSH
56887: LD_INT 0
56889: PPUSH
56890: CALL_OW 454
// placemine ( 81 , 53 , 8 , 0 ) ;
56894: LD_INT 81
56896: PPUSH
56897: LD_INT 53
56899: PPUSH
56900: LD_INT 8
56902: PPUSH
56903: LD_INT 0
56905: PPUSH
56906: CALL_OW 454
// placemine ( 81 , 53 , 8 , 0 ) ;
56910: LD_INT 81
56912: PPUSH
56913: LD_INT 53
56915: PPUSH
56916: LD_INT 8
56918: PPUSH
56919: LD_INT 0
56921: PPUSH
56922: CALL_OW 454
// placemine ( 104 , 65 , 8 , 0 ) ;
56926: LD_INT 104
56928: PPUSH
56929: LD_INT 65
56931: PPUSH
56932: LD_INT 8
56934: PPUSH
56935: LD_INT 0
56937: PPUSH
56938: CALL_OW 454
// placemine ( 104 , 65 , 8 , 0 ) ;
56942: LD_INT 104
56944: PPUSH
56945: LD_INT 65
56947: PPUSH
56948: LD_INT 8
56950: PPUSH
56951: LD_INT 0
56953: PPUSH
56954: CALL_OW 454
// if difficulty = 3 then
56958: LD_OWVAR 67
56962: PUSH
56963: LD_INT 3
56965: EQUAL
56966: IFFALSE 56984
// placemine ( 100 , 68 , 8 , 0 ) ;
56968: LD_INT 100
56970: PPUSH
56971: LD_INT 68
56973: PPUSH
56974: LD_INT 8
56976: PPUSH
56977: LD_INT 0
56979: PPUSH
56980: CALL_OW 454
// end ; temp_list = [ [ 238 , 188 ] , [ 92 , 171 ] , 0 , 0 , [ 137 , 176 ] , 0 , 0 , 0 , [ 166 , 64 ] , [ 122 , 71 ] ] ;
56984: LD_ADDR_VAR 0 2
56988: PUSH
56989: LD_INT 238
56991: PUSH
56992: LD_INT 188
56994: PUSH
56995: EMPTY
56996: LIST
56997: LIST
56998: PUSH
56999: LD_INT 92
57001: PUSH
57002: LD_INT 171
57004: PUSH
57005: EMPTY
57006: LIST
57007: LIST
57008: PUSH
57009: LD_INT 0
57011: PUSH
57012: LD_INT 0
57014: PUSH
57015: LD_INT 137
57017: PUSH
57018: LD_INT 176
57020: PUSH
57021: EMPTY
57022: LIST
57023: LIST
57024: PUSH
57025: LD_INT 0
57027: PUSH
57028: LD_INT 0
57030: PUSH
57031: LD_INT 0
57033: PUSH
57034: LD_INT 166
57036: PUSH
57037: LD_INT 64
57039: PUSH
57040: EMPTY
57041: LIST
57042: LIST
57043: PUSH
57044: LD_INT 122
57046: PUSH
57047: LD_INT 71
57049: PUSH
57050: EMPTY
57051: LIST
57052: LIST
57053: PUSH
57054: EMPTY
57055: LIST
57056: LIST
57057: LIST
57058: LIST
57059: LIST
57060: LIST
57061: LIST
57062: LIST
57063: LIST
57064: LIST
57065: ST_TO_ADDR
// for i = 1 to temp_list do
57066: LD_ADDR_VAR 0 1
57070: PUSH
57071: DOUBLE
57072: LD_INT 1
57074: DEC
57075: ST_TO_ADDR
57076: LD_VAR 0 2
57080: PUSH
57081: FOR_TO
57082: IFFALSE 57170
// if temp_list [ i ] > 0 then
57084: LD_VAR 0 2
57088: PUSH
57089: LD_VAR 0 1
57093: ARRAY
57094: PUSH
57095: LD_INT 0
57097: GREATER
57098: IFFALSE 57168
// begin TeleportExit ( ai_teleporter [ i ] , temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] ) ;
57100: LD_EXP 50
57104: PUSH
57105: LD_VAR 0 1
57109: ARRAY
57110: PPUSH
57111: LD_VAR 0 2
57115: PUSH
57116: LD_VAR 0 1
57120: ARRAY
57121: PUSH
57122: LD_INT 1
57124: ARRAY
57125: PPUSH
57126: LD_VAR 0 2
57130: PUSH
57131: LD_VAR 0 1
57135: ARRAY
57136: PUSH
57137: LD_INT 2
57139: ARRAY
57140: PPUSH
57141: CALL_OW 243
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , i , true ) ;
57145: LD_ADDR_EXP 86
57149: PUSH
57150: LD_EXP 86
57154: PPUSH
57155: LD_VAR 0 1
57159: PPUSH
57160: LD_INT 1
57162: PPUSH
57163: CALL_OW 1
57167: ST_TO_ADDR
// end ;
57168: GO 57081
57170: POP
57171: POP
// TeleportExit ( Hexinfo ( 228 , 164 ) , 166 , 64 ) ;
57172: LD_INT 228
57174: PPUSH
57175: LD_INT 164
57177: PPUSH
57178: CALL_OW 428
57182: PPUSH
57183: LD_INT 166
57185: PPUSH
57186: LD_INT 64
57188: PPUSH
57189: CALL_OW 243
// TeleportExit ( Hexinfo ( 74 , 141 ) , 122 , 71 ) ;
57193: LD_INT 74
57195: PPUSH
57196: LD_INT 141
57198: PPUSH
57199: CALL_OW 428
57203: PPUSH
57204: LD_INT 122
57206: PPUSH
57207: LD_INT 71
57209: PPUSH
57210: CALL_OW 243
// for i in base10_buildings ^ base9_buildings do
57214: LD_ADDR_VAR 0 1
57218: PUSH
57219: LD_EXP 171
57223: PUSH
57224: LD_EXP 169
57228: ADD
57229: PUSH
57230: FOR_IN
57231: IFFALSE 57247
// SetBLevel ( i , 8 ) ;
57233: LD_VAR 0 1
57237: PPUSH
57238: LD_INT 8
57240: PPUSH
57241: CALL_OW 241
57245: GO 57230
57247: POP
57248: POP
// base9_people = CreateUnitsWithClass ( 3 , class_scientistic , 1 ) ^ CreateApemenWithClass ( [ 1 , 2 , 3 ] [ difficulty ] , class_apeman_engineer , 1 ) ;
57249: LD_ADDR_EXP 168
57253: PUSH
57254: LD_INT 3
57256: PPUSH
57257: LD_INT 4
57259: PPUSH
57260: LD_INT 1
57262: PPUSH
57263: CALL 58837 0 3
57267: PUSH
57268: LD_INT 1
57270: PUSH
57271: LD_INT 2
57273: PUSH
57274: LD_INT 3
57276: PUSH
57277: EMPTY
57278: LIST
57279: LIST
57280: LIST
57281: PUSH
57282: LD_OWVAR 67
57286: ARRAY
57287: PPUSH
57288: LD_INT 16
57290: PPUSH
57291: LD_INT 1
57293: PPUSH
57294: CALL 59107 0 3
57298: ADD
57299: ST_TO_ADDR
// base10_people = CreateUnitsWithClass ( 2 , class_scientistic , 1 ) ^ CreateApemenWithClass ( [ 1 , 2 , 3 ] [ difficulty ] , class_apeman_engineer , 1 ) ^ CreateUnitsWithClass ( 1 , class_bazooker , 1 ) ;
57300: LD_ADDR_EXP 170
57304: PUSH
57305: LD_INT 2
57307: PPUSH
57308: LD_INT 4
57310: PPUSH
57311: LD_INT 1
57313: PPUSH
57314: CALL 58837 0 3
57318: PUSH
57319: LD_INT 1
57321: PUSH
57322: LD_INT 2
57324: PUSH
57325: LD_INT 3
57327: PUSH
57328: EMPTY
57329: LIST
57330: LIST
57331: LIST
57332: PUSH
57333: LD_OWVAR 67
57337: ARRAY
57338: PPUSH
57339: LD_INT 16
57341: PPUSH
57342: LD_INT 1
57344: PPUSH
57345: CALL 59107 0 3
57349: ADD
57350: PUSH
57351: LD_INT 1
57353: PPUSH
57354: LD_INT 9
57356: PPUSH
57357: LD_INT 1
57359: PPUSH
57360: CALL 58837 0 3
57364: ADD
57365: ST_TO_ADDR
// for i in base9_people do
57366: LD_ADDR_VAR 0 1
57370: PUSH
57371: LD_EXP 168
57375: PUSH
57376: FOR_IN
57377: IFFALSE 57396
// placeunitarea ( i , area_base9 , false ) ;
57379: LD_VAR 0 1
57383: PPUSH
57384: LD_INT 17
57386: PPUSH
57387: LD_INT 0
57389: PPUSH
57390: CALL_OW 49
57394: GO 57376
57396: POP
57397: POP
// for i in base10_people do
57398: LD_ADDR_VAR 0 1
57402: PUSH
57403: LD_EXP 170
57407: PUSH
57408: FOR_IN
57409: IFFALSE 57428
// placeunitarea ( i , area_base10 , false ) ;
57411: LD_VAR 0 1
57415: PPUSH
57416: LD_INT 18
57418: PPUSH
57419: LD_INT 0
57421: PPUSH
57422: CALL_OW 49
57426: GO 57408
57428: POP
57429: POP
// comlinktobase ( base10_buildings [ 2 ] , base10_buildings [ 1 ] ) ;
57430: LD_EXP 171
57434: PUSH
57435: LD_INT 2
57437: ARRAY
57438: PPUSH
57439: LD_EXP 171
57443: PUSH
57444: LD_INT 1
57446: ARRAY
57447: PPUSH
57448: CALL_OW 169
// addcomlinktobase ( base10_buildings [ 2 ] , base10_buildings [ 3 ] ) ;
57452: LD_EXP 171
57456: PUSH
57457: LD_INT 2
57459: ARRAY
57460: PPUSH
57461: LD_EXP 171
57465: PUSH
57466: LD_INT 3
57468: ARRAY
57469: PPUSH
57470: CALL_OW 229
// addcomlinktobase ( base10_buildings [ 2 ] , base10_buildings [ 4 ] ) ;
57474: LD_EXP 171
57478: PUSH
57479: LD_INT 2
57481: ARRAY
57482: PPUSH
57483: LD_EXP 171
57487: PUSH
57488: LD_INT 4
57490: ARRAY
57491: PPUSH
57492: CALL_OW 229
// addcomlinktobase ( base10_buildings [ 2 ] , base10_buildings [ 5 ] ) ;
57496: LD_EXP 171
57500: PUSH
57501: LD_INT 2
57503: ARRAY
57504: PPUSH
57505: LD_EXP 171
57509: PUSH
57510: LD_INT 5
57512: ARRAY
57513: PPUSH
57514: CALL_OW 229
// comenterunit ( base9_people [ 1 ] ^ base9_people [ 2 ] ^ base9_people [ 3 ] , base9_buildings [ 1 ] ) ;
57518: LD_EXP 168
57522: PUSH
57523: LD_INT 1
57525: ARRAY
57526: PUSH
57527: LD_EXP 168
57531: PUSH
57532: LD_INT 2
57534: ARRAY
57535: ADD
57536: PUSH
57537: LD_EXP 168
57541: PUSH
57542: LD_INT 3
57544: ARRAY
57545: ADD
57546: PPUSH
57547: LD_EXP 169
57551: PUSH
57552: LD_INT 1
57554: ARRAY
57555: PPUSH
57556: CALL_OW 120
// comenterunit ( base9_people diff unitfilter ( base9_people , [ f_class , class_scientistic ] ) , base9_buildings [ 2 ] ) ;
57560: LD_EXP 168
57564: PUSH
57565: LD_EXP 168
57569: PPUSH
57570: LD_INT 25
57572: PUSH
57573: LD_INT 4
57575: PUSH
57576: EMPTY
57577: LIST
57578: LIST
57579: PPUSH
57580: CALL_OW 72
57584: DIFF
57585: PPUSH
57586: LD_EXP 169
57590: PUSH
57591: LD_INT 2
57593: ARRAY
57594: PPUSH
57595: CALL_OW 120
// comenterunit ( base10_people [ 1 ] ^ base10_people [ 2 ] , base10_buildings [ 1 ] ) ;
57599: LD_EXP 170
57603: PUSH
57604: LD_INT 1
57606: ARRAY
57607: PUSH
57608: LD_EXP 170
57612: PUSH
57613: LD_INT 2
57615: ARRAY
57616: ADD
57617: PPUSH
57618: LD_EXP 171
57622: PUSH
57623: LD_INT 1
57625: ARRAY
57626: PPUSH
57627: CALL_OW 120
// comenterunit ( base10_people diff unitfilter ( base10_people , [ f_or , [ f_class , class_scientistic ] , [ f_class , class_bazooker ] ] ) , base10_buildings [ 2 ] ) ;
57631: LD_EXP 170
57635: PUSH
57636: LD_EXP 170
57640: PPUSH
57641: LD_INT 2
57643: PUSH
57644: LD_INT 25
57646: PUSH
57647: LD_INT 4
57649: PUSH
57650: EMPTY
57651: LIST
57652: LIST
57653: PUSH
57654: LD_INT 25
57656: PUSH
57657: LD_INT 9
57659: PUSH
57660: EMPTY
57661: LIST
57662: LIST
57663: PUSH
57664: EMPTY
57665: LIST
57666: LIST
57667: LIST
57668: PPUSH
57669: CALL_OW 72
57673: DIFF
57674: PPUSH
57675: LD_EXP 171
57679: PUSH
57680: LD_INT 2
57682: ARRAY
57683: PPUSH
57684: CALL_OW 120
// comenterunit ( unitfilter ( base10_people , [ f_class , class_bazooker ] ) , HexInfo ( 75 , 134 ) ) ;
57688: LD_EXP 170
57692: PPUSH
57693: LD_INT 25
57695: PUSH
57696: LD_INT 9
57698: PUSH
57699: EMPTY
57700: LIST
57701: LIST
57702: PPUSH
57703: CALL_OW 72
57707: PPUSH
57708: LD_INT 75
57710: PPUSH
57711: LD_INT 134
57713: PPUSH
57714: CALL_OW 428
57718: PPUSH
57719: CALL_OW 120
// temp = CreateUnitsWithClass ( 4 , class_bazooker , 1 ) ;
57723: LD_ADDR_VAR 0 8
57727: PUSH
57728: LD_INT 4
57730: PPUSH
57731: LD_INT 9
57733: PPUSH
57734: LD_INT 1
57736: PPUSH
57737: CALL 58837 0 3
57741: ST_TO_ADDR
// temp_list = [ [ 136 , 109 ] , [ 139 , 111 ] , [ 139 , 108 ] , [ 138 , 106 ] ] ;
57742: LD_ADDR_VAR 0 2
57746: PUSH
57747: LD_INT 136
57749: PUSH
57750: LD_INT 109
57752: PUSH
57753: EMPTY
57754: LIST
57755: LIST
57756: PUSH
57757: LD_INT 139
57759: PUSH
57760: LD_INT 111
57762: PUSH
57763: EMPTY
57764: LIST
57765: LIST
57766: PUSH
57767: LD_INT 139
57769: PUSH
57770: LD_INT 108
57772: PUSH
57773: EMPTY
57774: LIST
57775: LIST
57776: PUSH
57777: LD_INT 138
57779: PUSH
57780: LD_INT 106
57782: PUSH
57783: EMPTY
57784: LIST
57785: LIST
57786: PUSH
57787: EMPTY
57788: LIST
57789: LIST
57790: LIST
57791: LIST
57792: ST_TO_ADDR
// temp_list2 = [ [ 135 , 110 ] , [ 140 , 113 ] , [ 142 , 109 ] , [ 135 , 106 ] ] ;
57793: LD_ADDR_VAR 0 3
57797: PUSH
57798: LD_INT 135
57800: PUSH
57801: LD_INT 110
57803: PUSH
57804: EMPTY
57805: LIST
57806: LIST
57807: PUSH
57808: LD_INT 140
57810: PUSH
57811: LD_INT 113
57813: PUSH
57814: EMPTY
57815: LIST
57816: LIST
57817: PUSH
57818: LD_INT 142
57820: PUSH
57821: LD_INT 109
57823: PUSH
57824: EMPTY
57825: LIST
57826: LIST
57827: PUSH
57828: LD_INT 135
57830: PUSH
57831: LD_INT 106
57833: PUSH
57834: EMPTY
57835: LIST
57836: LIST
57837: PUSH
57838: EMPTY
57839: LIST
57840: LIST
57841: LIST
57842: LIST
57843: ST_TO_ADDR
// for i = 1 to temp do
57844: LD_ADDR_VAR 0 1
57848: PUSH
57849: DOUBLE
57850: LD_INT 1
57852: DEC
57853: ST_TO_ADDR
57854: LD_VAR 0 8
57858: PUSH
57859: FOR_TO
57860: IFFALSE 57962
// begin placeunitxy ( temp [ i ] , temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] , false ) ;
57862: LD_VAR 0 8
57866: PUSH
57867: LD_VAR 0 1
57871: ARRAY
57872: PPUSH
57873: LD_VAR 0 2
57877: PUSH
57878: LD_VAR 0 1
57882: ARRAY
57883: PUSH
57884: LD_INT 1
57886: ARRAY
57887: PPUSH
57888: LD_VAR 0 2
57892: PUSH
57893: LD_VAR 0 1
57897: ARRAY
57898: PUSH
57899: LD_INT 2
57901: ARRAY
57902: PPUSH
57903: LD_INT 0
57905: PPUSH
57906: CALL_OW 48
// comenterunit ( temp [ i ] , HexInfo ( temp_list2 [ i ] [ 1 ] , temp_list2 [ i ] [ 2 ] ) ) ;
57910: LD_VAR 0 8
57914: PUSH
57915: LD_VAR 0 1
57919: ARRAY
57920: PPUSH
57921: LD_VAR 0 3
57925: PUSH
57926: LD_VAR 0 1
57930: ARRAY
57931: PUSH
57932: LD_INT 1
57934: ARRAY
57935: PPUSH
57936: LD_VAR 0 3
57940: PUSH
57941: LD_VAR 0 1
57945: ARRAY
57946: PUSH
57947: LD_INT 2
57949: ARRAY
57950: PPUSH
57951: CALL_OW 428
57955: PPUSH
57956: CALL_OW 120
// end ;
57960: GO 57859
57962: POP
57963: POP
// temp = CreateUnitsWithClass ( 3 , class_soldier , 1 ) ;
57964: LD_ADDR_VAR 0 8
57968: PUSH
57969: LD_INT 3
57971: PPUSH
57972: LD_INT 1
57974: PPUSH
57975: LD_INT 1
57977: PPUSH
57978: CALL 58837 0 3
57982: ST_TO_ADDR
// temp_list = [ [ 58 , 4 ] , [ 64 , 12 ] , [ 76 , 12 ] ] ;
57983: LD_ADDR_VAR 0 2
57987: PUSH
57988: LD_INT 58
57990: PUSH
57991: LD_INT 4
57993: PUSH
57994: EMPTY
57995: LIST
57996: LIST
57997: PUSH
57998: LD_INT 64
58000: PUSH
58001: LD_INT 12
58003: PUSH
58004: EMPTY
58005: LIST
58006: LIST
58007: PUSH
58008: LD_INT 76
58010: PUSH
58011: LD_INT 12
58013: PUSH
58014: EMPTY
58015: LIST
58016: LIST
58017: PUSH
58018: EMPTY
58019: LIST
58020: LIST
58021: LIST
58022: ST_TO_ADDR
// temp_list2 = [ [ 55 , 4 ] , [ 64 , 15 ] , [ 79 , 15 ] ] ;
58023: LD_ADDR_VAR 0 3
58027: PUSH
58028: LD_INT 55
58030: PUSH
58031: LD_INT 4
58033: PUSH
58034: EMPTY
58035: LIST
58036: LIST
58037: PUSH
58038: LD_INT 64
58040: PUSH
58041: LD_INT 15
58043: PUSH
58044: EMPTY
58045: LIST
58046: LIST
58047: PUSH
58048: LD_INT 79
58050: PUSH
58051: LD_INT 15
58053: PUSH
58054: EMPTY
58055: LIST
58056: LIST
58057: PUSH
58058: EMPTY
58059: LIST
58060: LIST
58061: LIST
58062: ST_TO_ADDR
// for i = 1 to temp do
58063: LD_ADDR_VAR 0 1
58067: PUSH
58068: DOUBLE
58069: LD_INT 1
58071: DEC
58072: ST_TO_ADDR
58073: LD_VAR 0 8
58077: PUSH
58078: FOR_TO
58079: IFFALSE 58181
// begin placeunitxy ( temp [ i ] , temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] , false ) ;
58081: LD_VAR 0 8
58085: PUSH
58086: LD_VAR 0 1
58090: ARRAY
58091: PPUSH
58092: LD_VAR 0 2
58096: PUSH
58097: LD_VAR 0 1
58101: ARRAY
58102: PUSH
58103: LD_INT 1
58105: ARRAY
58106: PPUSH
58107: LD_VAR 0 2
58111: PUSH
58112: LD_VAR 0 1
58116: ARRAY
58117: PUSH
58118: LD_INT 2
58120: ARRAY
58121: PPUSH
58122: LD_INT 0
58124: PPUSH
58125: CALL_OW 48
// comenterunit ( temp [ i ] , HexInfo ( temp_list2 [ i ] [ 1 ] , temp_list2 [ i ] [ 2 ] ) ) ;
58129: LD_VAR 0 8
58133: PUSH
58134: LD_VAR 0 1
58138: ARRAY
58139: PPUSH
58140: LD_VAR 0 3
58144: PUSH
58145: LD_VAR 0 1
58149: ARRAY
58150: PUSH
58151: LD_INT 1
58153: ARRAY
58154: PPUSH
58155: LD_VAR 0 3
58159: PUSH
58160: LD_VAR 0 1
58164: ARRAY
58165: PUSH
58166: LD_INT 2
58168: ARRAY
58169: PPUSH
58170: CALL_OW 428
58174: PPUSH
58175: CALL_OW 120
// end ;
58179: GO 58078
58181: POP
58182: POP
// Settech ( tech_tech1 , 3 , state_researched ) ;
58183: LD_INT 48
58185: PPUSH
58186: LD_INT 3
58188: PPUSH
58189: LD_INT 2
58191: PPUSH
58192: CALL_OW 322
// Settech ( tech_tech1 , 7 , state_researched ) ;
58196: LD_INT 48
58198: PPUSH
58199: LD_INT 7
58201: PPUSH
58202: LD_INT 2
58204: PPUSH
58205: CALL_OW 322
// Settech ( tech_tech2 , 3 , state_researched ) ;
58209: LD_INT 49
58211: PPUSH
58212: LD_INT 3
58214: PPUSH
58215: LD_INT 2
58217: PPUSH
58218: CALL_OW 322
// Settech ( tech_tech2 , 7 , state_researched ) ;
58222: LD_INT 49
58224: PPUSH
58225: LD_INT 7
58227: PPUSH
58228: LD_INT 2
58230: PPUSH
58231: CALL_OW 322
// Settech ( tech_weap1 , 3 , state_researched ) ;
58235: LD_INT 51
58237: PPUSH
58238: LD_INT 3
58240: PPUSH
58241: LD_INT 2
58243: PPUSH
58244: CALL_OW 322
// Settech ( tech_weap1 , 7 , state_researched ) ;
58248: LD_INT 51
58250: PPUSH
58251: LD_INT 7
58253: PPUSH
58254: LD_INT 2
58256: PPUSH
58257: CALL_OW 322
// Settech ( tech_sib1 , 3 , state_researched ) ;
58261: LD_INT 54
58263: PPUSH
58264: LD_INT 3
58266: PPUSH
58267: LD_INT 2
58269: PPUSH
58270: CALL_OW 322
// Settech ( tech_sib1 , 7 , state_researched ) ;
58274: LD_INT 54
58276: PPUSH
58277: LD_INT 7
58279: PPUSH
58280: LD_INT 2
58282: PPUSH
58283: CALL_OW 322
// Settech ( tech_comp1 , 3 , state_researched ) ;
58287: LD_INT 57
58289: PPUSH
58290: LD_INT 3
58292: PPUSH
58293: LD_INT 2
58295: PPUSH
58296: CALL_OW 322
// Settech ( tech_comp1 , 7 , state_researched ) ;
58300: LD_INT 57
58302: PPUSH
58303: LD_INT 7
58305: PPUSH
58306: LD_INT 2
58308: PPUSH
58309: CALL_OW 322
// Settech ( tech_ST1 , 3 , state_researched ) ;
58313: LD_INT 63
58315: PPUSH
58316: LD_INT 3
58318: PPUSH
58319: LD_INT 2
58321: PPUSH
58322: CALL_OW 322
// Settech ( tech_ST1 , 7 , state_researched ) ;
58326: LD_INT 63
58328: PPUSH
58329: LD_INT 7
58331: PPUSH
58332: LD_INT 2
58334: PPUSH
58335: CALL_OW 322
// if difficulty > 1 then
58339: LD_OWVAR 67
58343: PUSH
58344: LD_INT 1
58346: GREATER
58347: IFFALSE 58479
// begin Settech ( tech_tech3 , 3 , state_researched ) ;
58349: LD_INT 50
58351: PPUSH
58352: LD_INT 3
58354: PPUSH
58355: LD_INT 2
58357: PPUSH
58358: CALL_OW 322
// Settech ( tech_tech3 , 7 , state_researched ) ;
58362: LD_INT 50
58364: PPUSH
58365: LD_INT 7
58367: PPUSH
58368: LD_INT 2
58370: PPUSH
58371: CALL_OW 322
// Settech ( tech_weap2 , 3 , state_researched ) ;
58375: LD_INT 52
58377: PPUSH
58378: LD_INT 3
58380: PPUSH
58381: LD_INT 2
58383: PPUSH
58384: CALL_OW 322
// Settech ( tech_weap2 , 7 , state_researched ) ;
58388: LD_INT 52
58390: PPUSH
58391: LD_INT 7
58393: PPUSH
58394: LD_INT 2
58396: PPUSH
58397: CALL_OW 322
// Settech ( tech_sib2 , 3 , state_researched ) ;
58401: LD_INT 55
58403: PPUSH
58404: LD_INT 3
58406: PPUSH
58407: LD_INT 2
58409: PPUSH
58410: CALL_OW 322
// Settech ( tech_sib2 , 7 , state_researched ) ;
58414: LD_INT 55
58416: PPUSH
58417: LD_INT 7
58419: PPUSH
58420: LD_INT 2
58422: PPUSH
58423: CALL_OW 322
// Settech ( tech_comp2 , 3 , state_researched ) ;
58427: LD_INT 58
58429: PPUSH
58430: LD_INT 3
58432: PPUSH
58433: LD_INT 2
58435: PPUSH
58436: CALL_OW 322
// Settech ( tech_comp2 , 7 , state_researched ) ;
58440: LD_INT 58
58442: PPUSH
58443: LD_INT 7
58445: PPUSH
58446: LD_INT 2
58448: PPUSH
58449: CALL_OW 322
// Settech ( tech_ST2 , 3 , state_researched ) ;
58453: LD_INT 64
58455: PPUSH
58456: LD_INT 3
58458: PPUSH
58459: LD_INT 2
58461: PPUSH
58462: CALL_OW 322
// Settech ( tech_ST2 , 7 , state_researched ) ;
58466: LD_INT 64
58468: PPUSH
58469: LD_INT 7
58471: PPUSH
58472: LD_INT 2
58474: PPUSH
58475: CALL_OW 322
// end ; if difficulty = 3 then
58479: LD_OWVAR 67
58483: PUSH
58484: LD_INT 3
58486: EQUAL
58487: IFFALSE 58567
// begin Settech ( tech_weap3 , 3 , state_researched ) ;
58489: LD_INT 53
58491: PPUSH
58492: LD_INT 3
58494: PPUSH
58495: LD_INT 2
58497: PPUSH
58498: CALL_OW 322
// Settech ( tech_weap3 , 7 , state_researched ) ;
58502: LD_INT 53
58504: PPUSH
58505: LD_INT 7
58507: PPUSH
58508: LD_INT 2
58510: PPUSH
58511: CALL_OW 322
// Settech ( tech_sib3 , 3 , state_researched ) ;
58515: LD_INT 56
58517: PPUSH
58518: LD_INT 3
58520: PPUSH
58521: LD_INT 2
58523: PPUSH
58524: CALL_OW 322
// Settech ( tech_sib3 , 7 , state_researched ) ;
58528: LD_INT 56
58530: PPUSH
58531: LD_INT 7
58533: PPUSH
58534: LD_INT 2
58536: PPUSH
58537: CALL_OW 322
// Settech ( tech_comp3 , 3 , state_researched ) ;
58541: LD_INT 59
58543: PPUSH
58544: LD_INT 3
58546: PPUSH
58547: LD_INT 2
58549: PPUSH
58550: CALL_OW 322
// Settech ( tech_comp3 , 7 , state_researched ) ;
58554: LD_INT 59
58556: PPUSH
58557: LD_INT 7
58559: PPUSH
58560: LD_INT 2
58562: PPUSH
58563: CALL_OW 322
// end ; if difficulty = 1 then
58567: LD_OWVAR 67
58571: PUSH
58572: LD_INT 1
58574: EQUAL
58575: IFFALSE 58590
// SetTech ( 37 , 3 , state_enabled ) ;
58577: LD_INT 37
58579: PPUSH
58580: LD_INT 3
58582: PPUSH
58583: LD_INT 1
58585: PPUSH
58586: CALL_OW 322
// for i in filterallunits ( [ f_type , unit_building ] ) do
58590: LD_ADDR_VAR 0 1
58594: PUSH
58595: LD_INT 21
58597: PUSH
58598: LD_INT 3
58600: PUSH
58601: EMPTY
58602: LIST
58603: LIST
58604: PPUSH
58605: CALL_OW 69
58609: PUSH
58610: FOR_IN
58611: IFFALSE 58755
// begin if GetBType ( i ) in [ b_barracks , b_factory , b_workshop , b_depot , b_warehouse , b_teleport , b_lab_half , b_lab_full ] then
58613: LD_VAR 0 1
58617: PPUSH
58618: CALL_OW 266
58622: PUSH
58623: LD_INT 5
58625: PUSH
58626: LD_INT 3
58628: PUSH
58629: LD_INT 2
58631: PUSH
58632: LD_INT 0
58634: PUSH
58635: LD_INT 1
58637: PUSH
58638: LD_INT 34
58640: PUSH
58641: LD_INT 7
58643: PUSH
58644: LD_INT 8
58646: PUSH
58647: EMPTY
58648: LIST
58649: LIST
58650: LIST
58651: LIST
58652: LIST
58653: LIST
58654: LIST
58655: LIST
58656: IN
58657: IFFALSE 58675
// mainbuildings = mainbuildings ^ i ;
58659: LD_ADDR_EXP 184
58663: PUSH
58664: LD_EXP 184
58668: PUSH
58669: LD_VAR 0 1
58673: ADD
58674: ST_TO_ADDR
// if GetType ( i ) = unit_building and not GetBType ( i ) in [ b_barracks , b_factory , b_workshop , b_depot , b_warehouse , b_teleport , b_lab_half , b_lab_full ] then
58675: LD_VAR 0 1
58679: PPUSH
58680: CALL_OW 247
58684: PUSH
58685: LD_INT 3
58687: EQUAL
58688: PUSH
58689: LD_VAR 0 1
58693: PPUSH
58694: CALL_OW 266
58698: PUSH
58699: LD_INT 5
58701: PUSH
58702: LD_INT 3
58704: PUSH
58705: LD_INT 2
58707: PUSH
58708: LD_INT 0
58710: PUSH
58711: LD_INT 1
58713: PUSH
58714: LD_INT 34
58716: PUSH
58717: LD_INT 7
58719: PUSH
58720: LD_INT 8
58722: PUSH
58723: EMPTY
58724: LIST
58725: LIST
58726: LIST
58727: LIST
58728: LIST
58729: LIST
58730: LIST
58731: LIST
58732: IN
58733: NOT
58734: AND
58735: IFFALSE 58753
// minorbuildings = minorbuildings ^ i ;
58737: LD_ADDR_EXP 185
58741: PUSH
58742: LD_EXP 185
58746: PUSH
58747: LD_VAR 0 1
58751: ADD
58752: ST_TO_ADDR
// end ;
58753: GO 58610
58755: POP
58756: POP
// for i in filterallunits ( [ [ f_type , unit_human ] , [ f_side , 3 ] ] ) do
58757: LD_ADDR_VAR 0 1
58761: PUSH
58762: LD_INT 21
58764: PUSH
58765: LD_INT 1
58767: PUSH
58768: EMPTY
58769: LIST
58770: LIST
58771: PUSH
58772: LD_INT 22
58774: PUSH
58775: LD_INT 3
58777: PUSH
58778: EMPTY
58779: LIST
58780: LIST
58781: PUSH
58782: EMPTY
58783: LIST
58784: LIST
58785: PPUSH
58786: CALL_OW 69
58790: PUSH
58791: FOR_IN
58792: IFFALSE 58828
// if not GetClass ( i ) = class_apeman_engineer then
58794: LD_VAR 0 1
58798: PPUSH
58799: CALL_OW 257
58803: PUSH
58804: LD_INT 16
58806: EQUAL
58807: NOT
58808: IFFALSE 58826
// RussianPeople = RussianPeople ^ i ;
58810: LD_ADDR_EXP 186
58814: PUSH
58815: LD_EXP 186
58819: PUSH
58820: LD_VAR 0 1
58824: ADD
58825: ST_TO_ADDR
58826: GO 58791
58828: POP
58829: POP
// InitiateTimeShiftData ;
58830: CALL 42717 0 0
// end ;
58834: PPOPN 8
58836: END
// export function CreateUnitsWithClass ( num_units , un_class , base ) ; var i , overskill ; begin
58837: LD_INT 0
58839: PPUSH
58840: PPUSH
58841: PPUSH
// result = [ ] ;
58842: LD_ADDR_VAR 0 4
58846: PUSH
58847: EMPTY
58848: ST_TO_ADDR
// InitUc ;
58849: CALL_OW 18
// InitHc ;
58853: CALL_OW 19
// uc_side = GetBaseSide ( base ) ;
58857: LD_ADDR_OWVAR 20
58861: PUSH
58862: LD_VAR 0 3
58866: PPUSH
58867: CALL 3818 0 1
58871: ST_TO_ADDR
// uc_nation = GetBaseNation ( base ) ;
58872: LD_ADDR_OWVAR 21
58876: PUSH
58877: LD_VAR 0 3
58881: PPUSH
58882: CALL 4042 0 1
58886: ST_TO_ADDR
// overskill = difficulty + 7 ;
58887: LD_ADDR_VAR 0 6
58891: PUSH
58892: LD_OWVAR 67
58896: PUSH
58897: LD_INT 7
58899: PLUS
58900: ST_TO_ADDR
// if un_class = class_bazooker then
58901: LD_VAR 0 2
58905: PUSH
58906: LD_INT 9
58908: EQUAL
58909: IFFALSE 58974
// case difficulty of 1 :
58911: LD_OWVAR 67
58915: PUSH
58916: LD_INT 1
58918: DOUBLE
58919: EQUAL
58920: IFTRUE 58924
58922: GO 58935
58924: POP
// overskill = 6 ; 2 :
58925: LD_ADDR_VAR 0 6
58929: PUSH
58930: LD_INT 6
58932: ST_TO_ADDR
58933: GO 58974
58935: LD_INT 2
58937: DOUBLE
58938: EQUAL
58939: IFTRUE 58943
58941: GO 58954
58943: POP
// overskill = 7 ; 3 :
58944: LD_ADDR_VAR 0 6
58948: PUSH
58949: LD_INT 7
58951: ST_TO_ADDR
58952: GO 58974
58954: LD_INT 3
58956: DOUBLE
58957: EQUAL
58958: IFTRUE 58962
58960: GO 58973
58962: POP
// overskill = 8 ; end ;
58963: LD_ADDR_VAR 0 6
58967: PUSH
58968: LD_INT 8
58970: ST_TO_ADDR
58971: GO 58974
58973: POP
// if un_class = class_soldier then
58974: LD_VAR 0 2
58978: PUSH
58979: LD_INT 1
58981: EQUAL
58982: IFFALSE 59047
// case difficulty of 1 :
58984: LD_OWVAR 67
58988: PUSH
58989: LD_INT 1
58991: DOUBLE
58992: EQUAL
58993: IFTRUE 58997
58995: GO 59008
58997: POP
// overskill = 7 ; 2 :
58998: LD_ADDR_VAR 0 6
59002: PUSH
59003: LD_INT 7
59005: ST_TO_ADDR
59006: GO 59047
59008: LD_INT 2
59010: DOUBLE
59011: EQUAL
59012: IFTRUE 59016
59014: GO 59027
59016: POP
// overskill = 8 ; 3 :
59017: LD_ADDR_VAR 0 6
59021: PUSH
59022: LD_INT 8
59024: ST_TO_ADDR
59025: GO 59047
59027: LD_INT 3
59029: DOUBLE
59030: EQUAL
59031: IFTRUE 59035
59033: GO 59046
59035: POP
// overskill = 9 ; end ;
59036: LD_ADDR_VAR 0 6
59040: PUSH
59041: LD_INT 9
59043: ST_TO_ADDR
59044: GO 59047
59046: POP
// for i = 1 to num_units do
59047: LD_ADDR_VAR 0 5
59051: PUSH
59052: DOUBLE
59053: LD_INT 1
59055: DEC
59056: ST_TO_ADDR
59057: LD_VAR 0 1
59061: PUSH
59062: FOR_TO
59063: IFFALSE 59100
// begin PrepareHuman ( false , un_class , overskill ) ;
59065: LD_INT 0
59067: PPUSH
59068: LD_VAR 0 2
59072: PPUSH
59073: LD_VAR 0 6
59077: PPUSH
59078: CALL_OW 380
// result = result ^ CreateHuman ;
59082: LD_ADDR_VAR 0 4
59086: PUSH
59087: LD_VAR 0 4
59091: PUSH
59092: CALL_OW 44
59096: ADD
59097: ST_TO_ADDR
// end ;
59098: GO 59062
59100: POP
59101: POP
// end ;
59102: LD_VAR 0 4
59106: RET
// export function CreateApemenWithClass ( num_units , un_class , base ) ; var i ; begin
59107: LD_INT 0
59109: PPUSH
59110: PPUSH
// result = [ ] ;
59111: LD_ADDR_VAR 0 4
59115: PUSH
59116: EMPTY
59117: ST_TO_ADDR
// InitUc ;
59118: CALL_OW 18
// InitHc ;
59122: CALL_OW 19
// uc_side = GetBaseSide ( base ) ;
59126: LD_ADDR_OWVAR 20
59130: PUSH
59131: LD_VAR 0 3
59135: PPUSH
59136: CALL 3818 0 1
59140: ST_TO_ADDR
// uc_nation = nation_nature ;
59141: LD_ADDR_OWVAR 21
59145: PUSH
59146: LD_INT 0
59148: ST_TO_ADDR
// hc_class = un_class ;
59149: LD_ADDR_OWVAR 28
59153: PUSH
59154: LD_VAR 0 2
59158: ST_TO_ADDR
// for i = 1 to num_units do
59159: LD_ADDR_VAR 0 5
59163: PUSH
59164: DOUBLE
59165: LD_INT 1
59167: DEC
59168: ST_TO_ADDR
59169: LD_VAR 0 1
59173: PUSH
59174: FOR_TO
59175: IFFALSE 59281
// begin hc_attr = [ Rand ( 11 , 13 ) , Rand ( 10 , 11 ) ] ;
59177: LD_ADDR_OWVAR 29
59181: PUSH
59182: LD_INT 11
59184: PPUSH
59185: LD_INT 13
59187: PPUSH
59188: CALL_OW 12
59192: PUSH
59193: LD_INT 10
59195: PPUSH
59196: LD_INT 11
59198: PPUSH
59199: CALL_OW 12
59203: PUSH
59204: EMPTY
59205: LIST
59206: LIST
59207: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
59208: LD_ADDR_OWVAR 27
59212: PUSH
59213: LD_INT 1
59215: PPUSH
59216: LD_INT 2
59218: PPUSH
59219: CALL_OW 12
59223: ST_TO_ADDR
// hc_skills = [ Rand ( 1 , 3 ) , Rand ( 1 , 3 ) , 0 , 0 ] ;
59224: LD_ADDR_OWVAR 31
59228: PUSH
59229: LD_INT 1
59231: PPUSH
59232: LD_INT 3
59234: PPUSH
59235: CALL_OW 12
59239: PUSH
59240: LD_INT 1
59242: PPUSH
59243: LD_INT 3
59245: PPUSH
59246: CALL_OW 12
59250: PUSH
59251: LD_INT 0
59253: PUSH
59254: LD_INT 0
59256: PUSH
59257: EMPTY
59258: LIST
59259: LIST
59260: LIST
59261: LIST
59262: ST_TO_ADDR
// result = result ^ CreateHuman ;
59263: LD_ADDR_VAR 0 4
59267: PUSH
59268: LD_VAR 0 4
59272: PUSH
59273: CALL_OW 44
59277: ADD
59278: ST_TO_ADDR
// end ;
59279: GO 59174
59281: POP
59282: POP
// end ;
59283: LD_VAR 0 4
59287: RET
// function PlaceComputerUnits ( base , un_list , buildings_list ) ; var num , i , b ; begin
59288: LD_INT 0
59290: PPUSH
59291: PPUSH
59292: PPUSH
59293: PPUSH
// num = 1 ;
59294: LD_ADDR_VAR 0 5
59298: PUSH
59299: LD_INT 1
59301: ST_TO_ADDR
// for b in buildings_list do
59302: LD_ADDR_VAR 0 7
59306: PUSH
59307: LD_VAR 0 3
59311: PUSH
59312: FOR_IN
59313: IFFALSE 59447
// begin if num > un_list then
59315: LD_VAR 0 5
59319: PUSH
59320: LD_VAR 0 2
59324: GREATER
59325: IFFALSE 59329
// break ;
59327: GO 59447
// for i = UnitsInside ( b ) + 1 to 6 do
59329: LD_ADDR_VAR 0 6
59333: PUSH
59334: DOUBLE
59335: LD_VAR 0 7
59339: PPUSH
59340: CALL_OW 313
59344: PUSH
59345: LD_INT 1
59347: PLUS
59348: DEC
59349: ST_TO_ADDR
59350: LD_INT 6
59352: PUSH
59353: FOR_TO
59354: IFFALSE 59443
// begin if num > un_list then
59356: LD_VAR 0 5
59360: PUSH
59361: LD_VAR 0 2
59365: GREATER
59366: IFFALSE 59370
// break ;
59368: GO 59443
// PlaceHumanInUnit ( un_list [ num ] , b ) ;
59370: LD_VAR 0 2
59374: PUSH
59375: LD_VAR 0 5
59379: ARRAY
59380: PPUSH
59381: LD_VAR 0 7
59385: PPUSH
59386: CALL_OW 52
// if GetBType ( b ) in [ b_barracks , b_armoury ] then
59390: LD_VAR 0 7
59394: PPUSH
59395: CALL_OW 266
59399: PUSH
59400: LD_INT 5
59402: PUSH
59403: LD_INT 4
59405: PUSH
59406: EMPTY
59407: LIST
59408: LIST
59409: IN
59410: IFFALSE 59427
// AddComExitBuilding ( un_list [ num ] ) ;
59412: LD_VAR 0 2
59416: PUSH
59417: LD_VAR 0 5
59421: ARRAY
59422: PPUSH
59423: CALL_OW 182
// num = num + 1 ;
59427: LD_ADDR_VAR 0 5
59431: PUSH
59432: LD_VAR 0 5
59436: PUSH
59437: LD_INT 1
59439: PLUS
59440: ST_TO_ADDR
// end ;
59441: GO 59353
59443: POP
59444: POP
// end ;
59445: GO 59312
59447: POP
59448: POP
// for i = num to un_list do
59449: LD_ADDR_VAR 0 6
59453: PUSH
59454: DOUBLE
59455: LD_VAR 0 5
59459: DEC
59460: ST_TO_ADDR
59461: LD_VAR 0 2
59465: PUSH
59466: FOR_TO
59467: IFFALSE 59522
// PlaceUnitXYR ( un_list [ i ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] , 7 , false ) ;
59469: LD_VAR 0 2
59473: PUSH
59474: LD_VAR 0 6
59478: ARRAY
59479: PPUSH
59480: LD_EXP 63
59484: PUSH
59485: LD_VAR 0 1
59489: ARRAY
59490: PUSH
59491: LD_INT 1
59493: ARRAY
59494: PPUSH
59495: LD_EXP 63
59499: PUSH
59500: LD_VAR 0 1
59504: ARRAY
59505: PUSH
59506: LD_INT 2
59508: ARRAY
59509: PPUSH
59510: LD_INT 7
59512: PPUSH
59513: LD_INT 0
59515: PPUSH
59516: CALL_OW 50
59520: GO 59466
59522: POP
59523: POP
// end ;
59524: LD_VAR 0 4
59528: RET
// function PrepareMines ; var hex , temp_list , i , k , temp_list_2 , temp_list_3 , y ; begin
59529: LD_INT 0
59531: PPUSH
59532: PPUSH
59533: PPUSH
59534: PPUSH
59535: PPUSH
59536: PPUSH
59537: PPUSH
59538: PPUSH
// end ;
59539: LD_VAR 0 1
59543: RET
// every 0 0$0.1 marked 1 do var col1 , col2 , col3 , col4 , strings , count1 , count2 , i , j , time ;
59544: GO 59546
59546: DISABLE
59547: LD_INT 0
59549: PPUSH
59550: PPUSH
59551: PPUSH
59552: PPUSH
59553: PPUSH
59554: PPUSH
59555: PPUSH
59556: PPUSH
59557: PPUSH
59558: PPUSH
// begin strings = [ ] ;
59559: LD_ADDR_VAR 0 5
59563: PUSH
59564: EMPTY
59565: ST_TO_ADDR
// if difficulty < 3 and MissionEnd = 0 then
59566: LD_OWVAR 67
59570: PUSH
59571: LD_INT 3
59573: LESS
59574: PUSH
59575: LD_EXP 188
59579: PUSH
59580: LD_INT 0
59582: EQUAL
59583: AND
59584: IFFALSE 59677
// begin i = ( 90 90$0 - tick ) / 35 ;
59586: LD_ADDR_VAR 0 8
59590: PUSH
59591: LD_INT 189000
59593: PUSH
59594: LD_OWVAR 1
59598: MINUS
59599: PUSH
59600: LD_INT 35
59602: DIVREAL
59603: ST_TO_ADDR
// i = i / 60 ;
59604: LD_ADDR_VAR 0 8
59608: PUSH
59609: LD_VAR 0 8
59613: PUSH
59614: LD_INT 60
59616: DIVREAL
59617: ST_TO_ADDR
// for j = 1 to i do
59618: LD_ADDR_VAR 0 9
59622: PUSH
59623: DOUBLE
59624: LD_INT 1
59626: DEC
59627: ST_TO_ADDR
59628: LD_VAR 0 8
59632: PUSH
59633: FOR_TO
59634: IFFALSE 59652
// time = time + 1 ;
59636: LD_ADDR_VAR 0 10
59640: PUSH
59641: LD_VAR 0 10
59645: PUSH
59646: LD_INT 1
59648: PLUS
59649: ST_TO_ADDR
59650: GO 59633
59652: POP
59653: POP
// strings = strings ^ [ #Ar14-MissionTimer , time ] ;
59654: LD_ADDR_VAR 0 5
59658: PUSH
59659: LD_VAR 0 5
59663: PUSH
59664: LD_STRING #Ar14-MissionTimer
59666: PUSH
59667: LD_VAR 0 10
59671: PUSH
59672: EMPTY
59673: LIST
59674: LIST
59675: ADD
59676: ST_TO_ADDR
// end ; if ConvoyTimer > 0 then
59677: LD_EXP 159
59681: PUSH
59682: LD_INT 0
59684: GREATER
59685: IFFALSE 59820
// begin i = 5 5$0 - ( tick - ConvoyTimer ) ;
59687: LD_ADDR_VAR 0 8
59691: PUSH
59692: LD_INT 10500
59694: PUSH
59695: LD_OWVAR 1
59699: PUSH
59700: LD_EXP 159
59704: MINUS
59705: MINUS
59706: ST_TO_ADDR
// i = i / 35 ;
59707: LD_ADDR_VAR 0 8
59711: PUSH
59712: LD_VAR 0 8
59716: PUSH
59717: LD_INT 35
59719: DIVREAL
59720: ST_TO_ADDR
// i = i / 60 ;
59721: LD_ADDR_VAR 0 8
59725: PUSH
59726: LD_VAR 0 8
59730: PUSH
59731: LD_INT 60
59733: DIVREAL
59734: ST_TO_ADDR
// time = 0 ;
59735: LD_ADDR_VAR 0 10
59739: PUSH
59740: LD_INT 0
59742: ST_TO_ADDR
// for j = 1 to i do
59743: LD_ADDR_VAR 0 9
59747: PUSH
59748: DOUBLE
59749: LD_INT 1
59751: DEC
59752: ST_TO_ADDR
59753: LD_VAR 0 8
59757: PUSH
59758: FOR_TO
59759: IFFALSE 59777
// time = time + 1 ;
59761: LD_ADDR_VAR 0 10
59765: PUSH
59766: LD_VAR 0 10
59770: PUSH
59771: LD_INT 1
59773: PLUS
59774: ST_TO_ADDR
59775: GO 59758
59777: POP
59778: POP
// strings = strings ^ [ #Ar14-ConvoyTimer , time ] ;
59779: LD_ADDR_VAR 0 5
59783: PUSH
59784: LD_VAR 0 5
59788: PUSH
59789: LD_STRING #Ar14-ConvoyTimer
59791: PUSH
59792: LD_VAR 0 10
59796: PUSH
59797: EMPTY
59798: LIST
59799: LIST
59800: ADD
59801: ST_TO_ADDR
// if time = 0 then
59802: LD_VAR 0 10
59806: PUSH
59807: LD_INT 0
59809: EQUAL
59810: IFFALSE 59820
// ConvoyTimer = 0 ;
59812: LD_ADDR_EXP 159
59816: PUSH
59817: LD_INT 0
59819: ST_TO_ADDR
// end ; if CratesPrepared < Crates_min [ difficulty ] then
59820: LD_EXP 127
59824: PUSH
59825: LD_EXP 133
59829: PUSH
59830: LD_OWVAR 67
59834: ARRAY
59835: LESS
59836: IFFALSE 59848
// col1 = 3 else
59838: LD_ADDR_VAR 0 1
59842: PUSH
59843: LD_INT 3
59845: ST_TO_ADDR
59846: GO 59884
// if CratesPrepared < Crates_max [ difficulty ] then
59848: LD_EXP 127
59852: PUSH
59853: LD_EXP 134
59857: PUSH
59858: LD_OWVAR 67
59862: ARRAY
59863: LESS
59864: IFFALSE 59876
// col1 = 2 else
59866: LD_ADDR_VAR 0 1
59870: PUSH
59871: LD_INT 2
59873: ST_TO_ADDR
59874: GO 59884
// col1 = 7 ;
59876: LD_ADDR_VAR 0 1
59880: PUSH
59881: LD_INT 7
59883: ST_TO_ADDR
// if OilPrepared < Oil_min [ difficulty ] then
59884: LD_EXP 128
59888: PUSH
59889: LD_EXP 135
59893: PUSH
59894: LD_OWVAR 67
59898: ARRAY
59899: LESS
59900: IFFALSE 59912
// col2 = 3 else
59902: LD_ADDR_VAR 0 2
59906: PUSH
59907: LD_INT 3
59909: ST_TO_ADDR
59910: GO 59948
// if OilPrepared < Oil_max [ difficulty ] then
59912: LD_EXP 128
59916: PUSH
59917: LD_EXP 136
59921: PUSH
59922: LD_OWVAR 67
59926: ARRAY
59927: LESS
59928: IFFALSE 59940
// col2 = 2 else
59930: LD_ADDR_VAR 0 2
59934: PUSH
59935: LD_INT 2
59937: ST_TO_ADDR
59938: GO 59948
// col2 = 7 ;
59940: LD_ADDR_VAR 0 2
59944: PUSH
59945: LD_INT 7
59947: ST_TO_ADDR
// if SiberitePrepared < Sib_min [ difficulty ] then
59948: LD_EXP 129
59952: PUSH
59953: LD_EXP 137
59957: PUSH
59958: LD_OWVAR 67
59962: ARRAY
59963: LESS
59964: IFFALSE 59976
// col3 = 3 else
59966: LD_ADDR_VAR 0 3
59970: PUSH
59971: LD_INT 3
59973: ST_TO_ADDR
59974: GO 60012
// if SiberitePrepared < Sib_max [ difficulty ] then
59976: LD_EXP 129
59980: PUSH
59981: LD_EXP 138
59985: PUSH
59986: LD_OWVAR 67
59990: ARRAY
59991: LESS
59992: IFFALSE 60004
// col3 = 2 else
59994: LD_ADDR_VAR 0 3
59998: PUSH
59999: LD_INT 2
60001: ST_TO_ADDR
60002: GO 60012
// col3 = 7 ;
60004: LD_ADDR_VAR 0 3
60008: PUSH
60009: LD_INT 7
60011: ST_TO_ADDR
// count1 = 0 ;
60012: LD_ADDR_VAR 0 6
60016: PUSH
60017: LD_INT 0
60019: ST_TO_ADDR
// count2 = 0 ;
60020: LD_ADDR_VAR 0 7
60024: PUSH
60025: LD_INT 0
60027: ST_TO_ADDR
// for i in EscortPrepared do
60028: LD_ADDR_VAR 0 8
60032: PUSH
60033: LD_EXP 130
60037: PUSH
60038: FOR_IN
60039: IFFALSE 60057
// count1 = count1 + 1 ;
60041: LD_ADDR_VAR 0 6
60045: PUSH
60046: LD_VAR 0 6
60050: PUSH
60051: LD_INT 1
60053: PLUS
60054: ST_TO_ADDR
60055: GO 60038
60057: POP
60058: POP
// for i in EscortPrepared_vehicles do
60059: LD_ADDR_VAR 0 8
60063: PUSH
60064: LD_EXP 131
60068: PUSH
60069: FOR_IN
60070: IFFALSE 60088
// count2 = count2 + 1 ;
60072: LD_ADDR_VAR 0 7
60076: PUSH
60077: LD_VAR 0 7
60081: PUSH
60082: LD_INT 1
60084: PLUS
60085: ST_TO_ADDR
60086: GO 60069
60088: POP
60089: POP
// if Count1 >= Escortmin and Count2 >= 4 then
60090: LD_VAR 0 6
60094: PUSH
60095: LD_EXP 139
60099: GREATEREQUAL
60100: PUSH
60101: LD_VAR 0 7
60105: PUSH
60106: LD_INT 4
60108: GREATEREQUAL
60109: AND
60110: IFFALSE 60122
// col4 = 7 else
60112: LD_ADDR_VAR 0 4
60116: PUSH
60117: LD_INT 7
60119: ST_TO_ADDR
60120: GO 60130
// col4 = 3 ;
60122: LD_ADDR_VAR 0 4
60126: PUSH
60127: LD_INT 3
60129: ST_TO_ADDR
// if MissionEnd then
60130: LD_EXP 188
60134: IFFALSE 60161
// strings = strings ^ [ #Ar14-FinalCountdown , FinalCountdown ] else
60136: LD_ADDR_VAR 0 5
60140: PUSH
60141: LD_VAR 0 5
60145: PUSH
60146: LD_STRING #Ar14-FinalCountdown
60148: PUSH
60149: LD_EXP 181
60153: PUSH
60154: EMPTY
60155: LIST
60156: LIST
60157: ADD
60158: ST_TO_ADDR
60159: GO 60190
// if testing then
60161: LD_EXP 1
60165: IFFALSE 60190
// strings = strings ^ [ #Am15-1 , tick ] ;
60167: LD_ADDR_VAR 0 5
60171: PUSH
60172: LD_VAR 0 5
60176: PUSH
60177: LD_STRING #Am15-1
60179: PUSH
60180: LD_OWVAR 1
60184: PUSH
60185: EMPTY
60186: LIST
60187: LIST
60188: ADD
60189: ST_TO_ADDR
// if enable_transport < 2 then
60190: LD_EXP 144
60194: PUSH
60195: LD_INT 2
60197: LESS
60198: IFFALSE 60420
// begin if enable_transport = 0 then
60200: LD_EXP 144
60204: PUSH
60205: LD_INT 0
60207: EQUAL
60208: IFFALSE 60269
// strings = strings ^ [ #Ar14-Crates , CratesPrepared , Crates_min [ difficulty ] , #Ar14-Sib , SiberitePrepared , Sib_min [ difficulty ] ] else
60210: LD_ADDR_VAR 0 5
60214: PUSH
60215: LD_VAR 0 5
60219: PUSH
60220: LD_STRING #Ar14-Crates
60222: PUSH
60223: LD_EXP 127
60227: PUSH
60228: LD_EXP 133
60232: PUSH
60233: LD_OWVAR 67
60237: ARRAY
60238: PUSH
60239: LD_STRING #Ar14-Sib
60241: PUSH
60242: LD_EXP 129
60246: PUSH
60247: LD_EXP 137
60251: PUSH
60252: LD_OWVAR 67
60256: ARRAY
60257: PUSH
60258: EMPTY
60259: LIST
60260: LIST
60261: LIST
60262: LIST
60263: LIST
60264: LIST
60265: ADD
60266: ST_TO_ADDR
60267: GO 60338
// strings = strings ^ [ #Ar14-Crates_Prepared , col1 , CratesPrepared , Crates_min [ difficulty ] , #Ar14-Sib_Prepared , col3 , SiberitePrepared , Sib_min [ difficulty ] ] ;
60269: LD_ADDR_VAR 0 5
60273: PUSH
60274: LD_VAR 0 5
60278: PUSH
60279: LD_STRING #Ar14-Crates_Prepared
60281: PUSH
60282: LD_VAR 0 1
60286: PUSH
60287: LD_EXP 127
60291: PUSH
60292: LD_EXP 133
60296: PUSH
60297: LD_OWVAR 67
60301: ARRAY
60302: PUSH
60303: LD_STRING #Ar14-Sib_Prepared
60305: PUSH
60306: LD_VAR 0 3
60310: PUSH
60311: LD_EXP 129
60315: PUSH
60316: LD_EXP 137
60320: PUSH
60321: LD_OWVAR 67
60325: ARRAY
60326: PUSH
60327: EMPTY
60328: LIST
60329: LIST
60330: LIST
60331: LIST
60332: LIST
60333: LIST
60334: LIST
60335: LIST
60336: ADD
60337: ST_TO_ADDR
// if MissionEnd then
60338: LD_EXP 188
60342: IFFALSE 60420
// if EscortReady then
60344: LD_EXP 143
60348: IFFALSE 60375
// strings = strings ^ [ #Ar14-Escort , col4 ] else
60350: LD_ADDR_VAR 0 5
60354: PUSH
60355: LD_VAR 0 5
60359: PUSH
60360: LD_STRING #Ar14-Escort
60362: PUSH
60363: LD_VAR 0 4
60367: PUSH
60368: EMPTY
60369: LIST
60370: LIST
60371: ADD
60372: ST_TO_ADDR
60373: GO 60420
// strings = strings ^ [ #Ar14-Escort_no , col4 , count1 , Escortmin , count2 , 4 ] ;
60375: LD_ADDR_VAR 0 5
60379: PUSH
60380: LD_VAR 0 5
60384: PUSH
60385: LD_STRING #Ar14-Escort_no
60387: PUSH
60388: LD_VAR 0 4
60392: PUSH
60393: LD_VAR 0 6
60397: PUSH
60398: LD_EXP 139
60402: PUSH
60403: LD_VAR 0 7
60407: PUSH
60408: LD_INT 4
60410: PUSH
60411: EMPTY
60412: LIST
60413: LIST
60414: LIST
60415: LIST
60416: LIST
60417: LIST
60418: ADD
60419: ST_TO_ADDR
// end ; display_strings = strings ;
60420: LD_ADDR_OWVAR 47
60424: PUSH
60425: LD_VAR 0 5
60429: ST_TO_ADDR
// enable ;
60430: ENABLE
// end ; end_of_file
60431: PPOPN 10
60433: END
// export function AI_GetAwayFromXY ( unit1 , x , y , dist , add ) ; var list_nearest , list_coords , temp_dir , dir_list , b , min_dist , temp_dist , c , rand_num , rand_near_hex , attempts ; begin
60434: LD_INT 0
60436: PPUSH
60437: PPUSH
60438: PPUSH
60439: PPUSH
60440: PPUSH
60441: PPUSH
60442: PPUSH
60443: PPUSH
60444: PPUSH
60445: PPUSH
60446: PPUSH
60447: PPUSH
// if not IsOk ( unit1 ) or dist = 1 or not ValidHex ( x , y ) or GetDistUnitXY ( unit1 , x , y ) >= dist or not add in [ true , false ] then
60448: LD_VAR 0 1
60452: PPUSH
60453: CALL_OW 302
60457: NOT
60458: PUSH
60459: LD_VAR 0 4
60463: PUSH
60464: LD_INT 1
60466: EQUAL
60467: OR
60468: PUSH
60469: LD_VAR 0 2
60473: PPUSH
60474: LD_VAR 0 3
60478: PPUSH
60479: CALL_OW 488
60483: NOT
60484: OR
60485: PUSH
60486: LD_VAR 0 1
60490: PPUSH
60491: LD_VAR 0 2
60495: PPUSH
60496: LD_VAR 0 3
60500: PPUSH
60501: CALL_OW 297
60505: PUSH
60506: LD_VAR 0 4
60510: GREATEREQUAL
60511: OR
60512: PUSH
60513: LD_VAR 0 5
60517: PUSH
60518: LD_INT 1
60520: PUSH
60521: LD_INT 0
60523: PUSH
60524: EMPTY
60525: LIST
60526: LIST
60527: IN
60528: NOT
60529: OR
60530: IFFALSE 60534
// exit ;
60532: GO 62091
// attempts = 0 ;
60534: LD_ADDR_VAR 0 17
60538: PUSH
60539: LD_INT 0
60541: ST_TO_ADDR
// repeat list_nearest = [ ] ;
60542: LD_ADDR_VAR 0 7
60546: PUSH
60547: EMPTY
60548: ST_TO_ADDR
// list_coords = [ ] ;
60549: LD_ADDR_VAR 0 8
60553: PUSH
60554: EMPTY
60555: ST_TO_ADDR
// temp_dir = AI_GetTurnDirection ( x , y , GetX ( unit1 ) , GetY ( unit1 ) ) ;
60556: LD_ADDR_VAR 0 9
60560: PUSH
60561: LD_VAR 0 2
60565: PPUSH
60566: LD_VAR 0 3
60570: PPUSH
60571: LD_VAR 0 1
60575: PPUSH
60576: CALL_OW 250
60580: PPUSH
60581: LD_VAR 0 1
60585: PPUSH
60586: CALL_OW 251
60590: PPUSH
60591: CALL 62096 0 4
60595: ST_TO_ADDR
// if attempts = 0 then
60596: LD_VAR 0 17
60600: PUSH
60601: LD_INT 0
60603: EQUAL
60604: IFFALSE 60712
// begin dir_list = [ temp_dir , temp_dir + 1 , temp_dir - 1 ] ;
60606: LD_ADDR_VAR 0 10
60610: PUSH
60611: LD_VAR 0 9
60615: PUSH
60616: LD_VAR 0 9
60620: PUSH
60621: LD_INT 1
60623: PLUS
60624: PUSH
60625: LD_VAR 0 9
60629: PUSH
60630: LD_INT 1
60632: MINUS
60633: PUSH
60634: EMPTY
60635: LIST
60636: LIST
60637: LIST
60638: ST_TO_ADDR
// if dir_list [ 2 ] = 6 then
60639: LD_VAR 0 10
60643: PUSH
60644: LD_INT 2
60646: ARRAY
60647: PUSH
60648: LD_INT 6
60650: EQUAL
60651: IFFALSE 60674
// dir_list = Replace ( dir_list , 2 , 0 ) ;
60653: LD_ADDR_VAR 0 10
60657: PUSH
60658: LD_VAR 0 10
60662: PPUSH
60663: LD_INT 2
60665: PPUSH
60666: LD_INT 0
60668: PPUSH
60669: CALL_OW 1
60673: ST_TO_ADDR
// if dir_list [ 3 ] = - 1 then
60674: LD_VAR 0 10
60678: PUSH
60679: LD_INT 3
60681: ARRAY
60682: PUSH
60683: LD_INT 1
60685: NEG
60686: EQUAL
60687: IFFALSE 60710
// dir_list = Replace ( dir_list , 3 , 5 ) ;
60689: LD_ADDR_VAR 0 10
60693: PUSH
60694: LD_VAR 0 10
60698: PPUSH
60699: LD_INT 3
60701: PPUSH
60702: LD_INT 5
60704: PPUSH
60705: CALL_OW 1
60709: ST_TO_ADDR
// end else
60710: GO 60749
// dir_list = [ 0 , 1 , 2 , 3 , 4 , 5 ] diff temp_dir ;
60712: LD_ADDR_VAR 0 10
60716: PUSH
60717: LD_INT 0
60719: PUSH
60720: LD_INT 1
60722: PUSH
60723: LD_INT 2
60725: PUSH
60726: LD_INT 3
60728: PUSH
60729: LD_INT 4
60731: PUSH
60732: LD_INT 5
60734: PUSH
60735: EMPTY
60736: LIST
60737: LIST
60738: LIST
60739: LIST
60740: LIST
60741: LIST
60742: PUSH
60743: LD_VAR 0 9
60747: DIFF
60748: ST_TO_ADDR
// for c = 1 to ( dir_list + 0 ) do
60749: LD_ADDR_VAR 0 14
60753: PUSH
60754: DOUBLE
60755: LD_INT 1
60757: DEC
60758: ST_TO_ADDR
60759: LD_VAR 0 10
60763: PUSH
60764: LD_INT 0
60766: PLUS
60767: PUSH
60768: FOR_TO
60769: IFFALSE 61091
// case dir_list [ c ] of 0 :
60771: LD_VAR 0 10
60775: PUSH
60776: LD_VAR 0 14
60780: ARRAY
60781: PUSH
60782: LD_INT 0
60784: DOUBLE
60785: EQUAL
60786: IFTRUE 60790
60788: GO 60831
60790: POP
// list_coords = Insert ( list_coords , 1 , [ x , y - dist ] ) ; 1 :
60791: LD_ADDR_VAR 0 8
60795: PUSH
60796: LD_VAR 0 8
60800: PPUSH
60801: LD_INT 1
60803: PPUSH
60804: LD_VAR 0 2
60808: PUSH
60809: LD_VAR 0 3
60813: PUSH
60814: LD_VAR 0 4
60818: MINUS
60819: PUSH
60820: EMPTY
60821: LIST
60822: LIST
60823: PPUSH
60824: CALL_OW 2
60828: ST_TO_ADDR
60829: GO 61089
60831: LD_INT 1
60833: DOUBLE
60834: EQUAL
60835: IFTRUE 60839
60837: GO 60880
60839: POP
// list_coords = Insert ( list_coords , 1 , [ x + dist , y ] ) ; 2 :
60840: LD_ADDR_VAR 0 8
60844: PUSH
60845: LD_VAR 0 8
60849: PPUSH
60850: LD_INT 1
60852: PPUSH
60853: LD_VAR 0 2
60857: PUSH
60858: LD_VAR 0 4
60862: PLUS
60863: PUSH
60864: LD_VAR 0 3
60868: PUSH
60869: EMPTY
60870: LIST
60871: LIST
60872: PPUSH
60873: CALL_OW 2
60877: ST_TO_ADDR
60878: GO 61089
60880: LD_INT 2
60882: DOUBLE
60883: EQUAL
60884: IFTRUE 60888
60886: GO 60935
60888: POP
// list_coords = Insert ( list_coords , 1 , [ x + dist , y + dist ] ) ; 3 :
60889: LD_ADDR_VAR 0 8
60893: PUSH
60894: LD_VAR 0 8
60898: PPUSH
60899: LD_INT 1
60901: PPUSH
60902: LD_VAR 0 2
60906: PUSH
60907: LD_VAR 0 4
60911: PLUS
60912: PUSH
60913: LD_VAR 0 3
60917: PUSH
60918: LD_VAR 0 4
60922: PLUS
60923: PUSH
60924: EMPTY
60925: LIST
60926: LIST
60927: PPUSH
60928: CALL_OW 2
60932: ST_TO_ADDR
60933: GO 61089
60935: LD_INT 3
60937: DOUBLE
60938: EQUAL
60939: IFTRUE 60943
60941: GO 60984
60943: POP
// list_coords = Insert ( list_coords , 1 , [ x , y + dist ] ) ; 4 :
60944: LD_ADDR_VAR 0 8
60948: PUSH
60949: LD_VAR 0 8
60953: PPUSH
60954: LD_INT 1
60956: PPUSH
60957: LD_VAR 0 2
60961: PUSH
60962: LD_VAR 0 3
60966: PUSH
60967: LD_VAR 0 4
60971: PLUS
60972: PUSH
60973: EMPTY
60974: LIST
60975: LIST
60976: PPUSH
60977: CALL_OW 2
60981: ST_TO_ADDR
60982: GO 61089
60984: LD_INT 4
60986: DOUBLE
60987: EQUAL
60988: IFTRUE 60992
60990: GO 61033
60992: POP
// list_coords = Insert ( list_coords , 1 , [ x - dist , y ] ) ; 5 :
60993: LD_ADDR_VAR 0 8
60997: PUSH
60998: LD_VAR 0 8
61002: PPUSH
61003: LD_INT 1
61005: PPUSH
61006: LD_VAR 0 2
61010: PUSH
61011: LD_VAR 0 4
61015: MINUS
61016: PUSH
61017: LD_VAR 0 3
61021: PUSH
61022: EMPTY
61023: LIST
61024: LIST
61025: PPUSH
61026: CALL_OW 2
61030: ST_TO_ADDR
61031: GO 61089
61033: LD_INT 5
61035: DOUBLE
61036: EQUAL
61037: IFTRUE 61041
61039: GO 61088
61041: POP
// list_coords = Insert ( list_coords , 1 , [ x - dist , y - dist ] ) ; end ;
61042: LD_ADDR_VAR 0 8
61046: PUSH
61047: LD_VAR 0 8
61051: PPUSH
61052: LD_INT 1
61054: PPUSH
61055: LD_VAR 0 2
61059: PUSH
61060: LD_VAR 0 4
61064: MINUS
61065: PUSH
61066: LD_VAR 0 3
61070: PUSH
61071: LD_VAR 0 4
61075: MINUS
61076: PUSH
61077: EMPTY
61078: LIST
61079: LIST
61080: PPUSH
61081: CALL_OW 2
61085: ST_TO_ADDR
61086: GO 61089
61088: POP
61089: GO 60768
61091: POP
61092: POP
// if dist < 30 then
61093: LD_VAR 0 4
61097: PUSH
61098: LD_INT 30
61100: LESS
61101: IFFALSE 61113
// c = 1 else
61103: LD_ADDR_VAR 0 14
61107: PUSH
61108: LD_INT 1
61110: ST_TO_ADDR
61111: GO 61121
// c = 2 ;
61113: LD_ADDR_VAR 0 14
61117: PUSH
61118: LD_INT 2
61120: ST_TO_ADDR
// b = 1 ;
61121: LD_ADDR_VAR 0 11
61125: PUSH
61126: LD_INT 1
61128: ST_TO_ADDR
// while b <= ( dist - 1 ) do
61129: LD_VAR 0 11
61133: PUSH
61134: LD_VAR 0 4
61138: PUSH
61139: LD_INT 1
61141: MINUS
61142: LESSEQUAL
61143: IFFALSE 61571
// begin if 0 in dir_list and 1 in dir_list then
61145: LD_INT 0
61147: PUSH
61148: LD_VAR 0 10
61152: IN
61153: PUSH
61154: LD_INT 1
61156: PUSH
61157: LD_VAR 0 10
61161: IN
61162: AND
61163: IFFALSE 61215
// list_coords = Insert ( list_coords , 1 , [ x + b , y - dist + b ] ) ;
61165: LD_ADDR_VAR 0 8
61169: PUSH
61170: LD_VAR 0 8
61174: PPUSH
61175: LD_INT 1
61177: PPUSH
61178: LD_VAR 0 2
61182: PUSH
61183: LD_VAR 0 11
61187: PLUS
61188: PUSH
61189: LD_VAR 0 3
61193: PUSH
61194: LD_VAR 0 4
61198: MINUS
61199: PUSH
61200: LD_VAR 0 11
61204: PLUS
61205: PUSH
61206: EMPTY
61207: LIST
61208: LIST
61209: PPUSH
61210: CALL_OW 2
61214: ST_TO_ADDR
// if 1 in dir_list and 2 in dir_list then
61215: LD_INT 1
61217: PUSH
61218: LD_VAR 0 10
61222: IN
61223: PUSH
61224: LD_INT 2
61226: PUSH
61227: LD_VAR 0 10
61231: IN
61232: AND
61233: IFFALSE 61279
// list_coords = Insert ( list_coords , 1 , [ x + dist , y + b ] ) ;
61235: LD_ADDR_VAR 0 8
61239: PUSH
61240: LD_VAR 0 8
61244: PPUSH
61245: LD_INT 1
61247: PPUSH
61248: LD_VAR 0 2
61252: PUSH
61253: LD_VAR 0 4
61257: PLUS
61258: PUSH
61259: LD_VAR 0 3
61263: PUSH
61264: LD_VAR 0 11
61268: PLUS
61269: PUSH
61270: EMPTY
61271: LIST
61272: LIST
61273: PPUSH
61274: CALL_OW 2
61278: ST_TO_ADDR
// if 2 in dir_list and 3 in dir_list then
61279: LD_INT 2
61281: PUSH
61282: LD_VAR 0 10
61286: IN
61287: PUSH
61288: LD_INT 3
61290: PUSH
61291: LD_VAR 0 10
61295: IN
61296: AND
61297: IFFALSE 61349
// list_coords = Insert ( list_coords , 1 , [ x + dist - b , y + dist ] ) ;
61299: LD_ADDR_VAR 0 8
61303: PUSH
61304: LD_VAR 0 8
61308: PPUSH
61309: LD_INT 1
61311: PPUSH
61312: LD_VAR 0 2
61316: PUSH
61317: LD_VAR 0 4
61321: PLUS
61322: PUSH
61323: LD_VAR 0 11
61327: MINUS
61328: PUSH
61329: LD_VAR 0 3
61333: PUSH
61334: LD_VAR 0 4
61338: PLUS
61339: PUSH
61340: EMPTY
61341: LIST
61342: LIST
61343: PPUSH
61344: CALL_OW 2
61348: ST_TO_ADDR
// if 3 in dir_list and 4 in dir_list then
61349: LD_INT 3
61351: PUSH
61352: LD_VAR 0 10
61356: IN
61357: PUSH
61358: LD_INT 4
61360: PUSH
61361: LD_VAR 0 10
61365: IN
61366: AND
61367: IFFALSE 61419
// list_coords = Insert ( list_coords , 1 , [ x - b , y + dist - b ] ) ;
61369: LD_ADDR_VAR 0 8
61373: PUSH
61374: LD_VAR 0 8
61378: PPUSH
61379: LD_INT 1
61381: PPUSH
61382: LD_VAR 0 2
61386: PUSH
61387: LD_VAR 0 11
61391: MINUS
61392: PUSH
61393: LD_VAR 0 3
61397: PUSH
61398: LD_VAR 0 4
61402: PLUS
61403: PUSH
61404: LD_VAR 0 11
61408: MINUS
61409: PUSH
61410: EMPTY
61411: LIST
61412: LIST
61413: PPUSH
61414: CALL_OW 2
61418: ST_TO_ADDR
// if 4 in dir_list and 5 in dir_list then
61419: LD_INT 4
61421: PUSH
61422: LD_VAR 0 10
61426: IN
61427: PUSH
61428: LD_INT 5
61430: PUSH
61431: LD_VAR 0 10
61435: IN
61436: AND
61437: IFFALSE 61483
// list_coords = Insert ( list_coords , 1 , [ x - dist , y - b ] ) ;
61439: LD_ADDR_VAR 0 8
61443: PUSH
61444: LD_VAR 0 8
61448: PPUSH
61449: LD_INT 1
61451: PPUSH
61452: LD_VAR 0 2
61456: PUSH
61457: LD_VAR 0 4
61461: MINUS
61462: PUSH
61463: LD_VAR 0 3
61467: PUSH
61468: LD_VAR 0 11
61472: MINUS
61473: PUSH
61474: EMPTY
61475: LIST
61476: LIST
61477: PPUSH
61478: CALL_OW 2
61482: ST_TO_ADDR
// if 5 in dir_list and 0 in dir_list then
61483: LD_INT 5
61485: PUSH
61486: LD_VAR 0 10
61490: IN
61491: PUSH
61492: LD_INT 0
61494: PUSH
61495: LD_VAR 0 10
61499: IN
61500: AND
61501: IFFALSE 61553
// list_coords = Insert ( list_coords , 1 , [ x - dist + b , y - dist ] ) ;
61503: LD_ADDR_VAR 0 8
61507: PUSH
61508: LD_VAR 0 8
61512: PPUSH
61513: LD_INT 1
61515: PPUSH
61516: LD_VAR 0 2
61520: PUSH
61521: LD_VAR 0 4
61525: MINUS
61526: PUSH
61527: LD_VAR 0 11
61531: PLUS
61532: PUSH
61533: LD_VAR 0 3
61537: PUSH
61538: LD_VAR 0 4
61542: MINUS
61543: PUSH
61544: EMPTY
61545: LIST
61546: LIST
61547: PPUSH
61548: CALL_OW 2
61552: ST_TO_ADDR
// b = b + c end ;
61553: LD_ADDR_VAR 0 11
61557: PUSH
61558: LD_VAR 0 11
61562: PUSH
61563: LD_VAR 0 14
61567: PLUS
61568: ST_TO_ADDR
61569: GO 61129
// if list_coords = 0 then
61571: LD_VAR 0 8
61575: PUSH
61576: LD_INT 0
61578: EQUAL
61579: IFFALSE 61583
// exit ;
61581: GO 62091
// repeat min_dist = 5000 ;
61583: LD_ADDR_VAR 0 12
61587: PUSH
61588: LD_INT 5000
61590: ST_TO_ADDR
// for b in list_coords do
61591: LD_ADDR_VAR 0 11
61595: PUSH
61596: LD_VAR 0 8
61600: PUSH
61601: FOR_IN
61602: IFFALSE 61661
// begin temp_dist = GetDistUnitXY ( unit1 , b [ 1 ] , b [ 2 ] ) ;
61604: LD_ADDR_VAR 0 13
61608: PUSH
61609: LD_VAR 0 1
61613: PPUSH
61614: LD_VAR 0 11
61618: PUSH
61619: LD_INT 1
61621: ARRAY
61622: PPUSH
61623: LD_VAR 0 11
61627: PUSH
61628: LD_INT 2
61630: ARRAY
61631: PPUSH
61632: CALL_OW 297
61636: ST_TO_ADDR
// if temp_dist < min_dist then
61637: LD_VAR 0 13
61641: PUSH
61642: LD_VAR 0 12
61646: LESS
61647: IFFALSE 61659
// min_dist = temp_dist ;
61649: LD_ADDR_VAR 0 12
61653: PUSH
61654: LD_VAR 0 13
61658: ST_TO_ADDR
// end ;
61659: GO 61601
61661: POP
61662: POP
// c = 0 ;
61663: LD_ADDR_VAR 0 14
61667: PUSH
61668: LD_INT 0
61670: ST_TO_ADDR
// repeat c = c + 1 ;
61671: LD_ADDR_VAR 0 14
61675: PUSH
61676: LD_VAR 0 14
61680: PUSH
61681: LD_INT 1
61683: PLUS
61684: ST_TO_ADDR
// if GetDistUnitXY ( unit1 , list_coords [ c ] [ 1 ] , list_coords [ c ] [ 2 ] ) = min_dist then
61685: LD_VAR 0 1
61689: PPUSH
61690: LD_VAR 0 8
61694: PUSH
61695: LD_VAR 0 14
61699: ARRAY
61700: PUSH
61701: LD_INT 1
61703: ARRAY
61704: PPUSH
61705: LD_VAR 0 8
61709: PUSH
61710: LD_VAR 0 14
61714: ARRAY
61715: PUSH
61716: LD_INT 2
61718: ARRAY
61719: PPUSH
61720: CALL_OW 297
61724: PUSH
61725: LD_VAR 0 12
61729: EQUAL
61730: IFFALSE 61795
// begin list_nearest = Insert ( list_nearest , 1 , list_coords [ c ] ) ;
61732: LD_ADDR_VAR 0 7
61736: PUSH
61737: LD_VAR 0 7
61741: PPUSH
61742: LD_INT 1
61744: PPUSH
61745: LD_VAR 0 8
61749: PUSH
61750: LD_VAR 0 14
61754: ARRAY
61755: PPUSH
61756: CALL_OW 2
61760: ST_TO_ADDR
// list_coords = Delete ( list_coords , c ) ;
61761: LD_ADDR_VAR 0 8
61765: PUSH
61766: LD_VAR 0 8
61770: PPUSH
61771: LD_VAR 0 14
61775: PPUSH
61776: CALL_OW 3
61780: ST_TO_ADDR
// c = c - 1 ;
61781: LD_ADDR_VAR 0 14
61785: PUSH
61786: LD_VAR 0 14
61790: PUSH
61791: LD_INT 1
61793: MINUS
61794: ST_TO_ADDR
// end ; until c = list_coords ;
61795: LD_VAR 0 14
61799: PUSH
61800: LD_VAR 0 8
61804: EQUAL
61805: IFFALSE 61671
// c = 0 ;
61807: LD_ADDR_VAR 0 14
61811: PUSH
61812: LD_INT 0
61814: ST_TO_ADDR
// if list_nearest > 0 then
61815: LD_VAR 0 7
61819: PUSH
61820: LD_INT 0
61822: GREATER
61823: IFFALSE 61965
// begin repeat rand_num = Rand ( 1 , list_nearest ) ;
61825: LD_ADDR_VAR 0 15
61829: PUSH
61830: LD_INT 1
61832: PPUSH
61833: LD_VAR 0 7
61837: PPUSH
61838: CALL_OW 12
61842: ST_TO_ADDR
// rand_near_hex = list_nearest [ rand_num ] ;
61843: LD_ADDR_VAR 0 16
61847: PUSH
61848: LD_VAR 0 7
61852: PUSH
61853: LD_VAR 0 15
61857: ARRAY
61858: ST_TO_ADDR
// if ValidHex ( rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) > 0 and HexInfo ( rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) = 0 then
61859: LD_VAR 0 16
61863: PUSH
61864: LD_INT 1
61866: ARRAY
61867: PPUSH
61868: LD_VAR 0 16
61872: PUSH
61873: LD_INT 2
61875: ARRAY
61876: PPUSH
61877: CALL_OW 488
61881: PUSH
61882: LD_INT 0
61884: GREATER
61885: PUSH
61886: LD_VAR 0 16
61890: PUSH
61891: LD_INT 1
61893: ARRAY
61894: PPUSH
61895: LD_VAR 0 16
61899: PUSH
61900: LD_INT 2
61902: ARRAY
61903: PPUSH
61904: CALL_OW 428
61908: PUSH
61909: LD_INT 0
61911: EQUAL
61912: AND
61913: IFFALSE 61925
// c = 1 else
61915: LD_ADDR_VAR 0 14
61919: PUSH
61920: LD_INT 1
61922: ST_TO_ADDR
61923: GO 61945
// list_nearest = Delete ( list_nearest , rand_num ) ;
61925: LD_ADDR_VAR 0 7
61929: PUSH
61930: LD_VAR 0 7
61934: PPUSH
61935: LD_VAR 0 15
61939: PPUSH
61940: CALL_OW 3
61944: ST_TO_ADDR
// until c = 1 or list_nearest = 0 ;
61945: LD_VAR 0 14
61949: PUSH
61950: LD_INT 1
61952: EQUAL
61953: PUSH
61954: LD_VAR 0 7
61958: PUSH
61959: LD_INT 0
61961: EQUAL
61962: OR
61963: IFFALSE 61825
// end ; until c = 1 or list_coords = 0 ;
61965: LD_VAR 0 14
61969: PUSH
61970: LD_INT 1
61972: EQUAL
61973: PUSH
61974: LD_VAR 0 8
61978: PUSH
61979: LD_INT 0
61981: EQUAL
61982: OR
61983: IFFALSE 61583
// attempts = attempts + 1 ;
61985: LD_ADDR_VAR 0 17
61989: PUSH
61990: LD_VAR 0 17
61994: PUSH
61995: LD_INT 1
61997: PLUS
61998: ST_TO_ADDR
// until c = 1 or attempts > 1 ;
61999: LD_VAR 0 14
62003: PUSH
62004: LD_INT 1
62006: EQUAL
62007: PUSH
62008: LD_VAR 0 17
62012: PUSH
62013: LD_INT 1
62015: GREATER
62016: OR
62017: IFFALSE 60542
// if c = 1 then
62019: LD_VAR 0 14
62023: PUSH
62024: LD_INT 1
62026: EQUAL
62027: IFFALSE 62091
// if add then
62029: LD_VAR 0 5
62033: IFFALSE 62064
// AddComMoveXY ( unit1 , rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) else
62035: LD_VAR 0 1
62039: PPUSH
62040: LD_VAR 0 16
62044: PUSH
62045: LD_INT 1
62047: ARRAY
62048: PPUSH
62049: LD_VAR 0 16
62053: PUSH
62054: LD_INT 2
62056: ARRAY
62057: PPUSH
62058: CALL_OW 171
62062: GO 62091
// ComMoveXY ( unit1 , rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) ;
62064: LD_VAR 0 1
62068: PPUSH
62069: LD_VAR 0 16
62073: PUSH
62074: LD_INT 1
62076: ARRAY
62077: PPUSH
62078: LD_VAR 0 16
62082: PUSH
62083: LD_INT 2
62085: ARRAY
62086: PPUSH
62087: CALL_OW 111
// end ;
62091: LD_VAR 0 6
62095: RET
// export function AI_GetTurnDirection ( x1 , y1 , x , y ) ; var dist_1 , dist_2 , b , temp_dist , dir ; begin
62096: LD_INT 0
62098: PPUSH
62099: PPUSH
62100: PPUSH
62101: PPUSH
62102: PPUSH
62103: PPUSH
// if not ValidHex ( x1 , y1 ) or not ValidHex ( x , y ) then
62104: LD_VAR 0 1
62108: PPUSH
62109: LD_VAR 0 2
62113: PPUSH
62114: CALL_OW 488
62118: NOT
62119: PUSH
62120: LD_VAR 0 3
62124: PPUSH
62125: LD_VAR 0 4
62129: PPUSH
62130: CALL_OW 488
62134: NOT
62135: OR
62136: IFFALSE 62149
// begin result = - 1 ;
62138: LD_ADDR_VAR 0 5
62142: PUSH
62143: LD_INT 1
62145: NEG
62146: ST_TO_ADDR
// exit ;
62147: GO 62309
// end ; dist_1 = GetDistXY ( x1 , y1 , x , y ) ;
62149: LD_ADDR_VAR 0 6
62153: PUSH
62154: LD_VAR 0 1
62158: PPUSH
62159: LD_VAR 0 2
62163: PPUSH
62164: LD_VAR 0 3
62168: PPUSH
62169: LD_VAR 0 4
62173: PPUSH
62174: CALL_OW 298
62178: ST_TO_ADDR
// dist_2 = 99999 ;
62179: LD_ADDR_VAR 0 7
62183: PUSH
62184: LD_INT 99999
62186: ST_TO_ADDR
// for b = 0 to 5 do
62187: LD_ADDR_VAR 0 8
62191: PUSH
62192: DOUBLE
62193: LD_INT 0
62195: DEC
62196: ST_TO_ADDR
62197: LD_INT 5
62199: PUSH
62200: FOR_TO
62201: IFFALSE 62297
// begin temp_dist = GetDistXY ( ShiftX ( x1 , b , dist_1 ) , ShiftY ( y1 , b , dist_1 ) , x , y ) ;
62203: LD_ADDR_VAR 0 9
62207: PUSH
62208: LD_VAR 0 1
62212: PPUSH
62213: LD_VAR 0 8
62217: PPUSH
62218: LD_VAR 0 6
62222: PPUSH
62223: CALL_OW 272
62227: PPUSH
62228: LD_VAR 0 2
62232: PPUSH
62233: LD_VAR 0 8
62237: PPUSH
62238: LD_VAR 0 6
62242: PPUSH
62243: CALL_OW 273
62247: PPUSH
62248: LD_VAR 0 3
62252: PPUSH
62253: LD_VAR 0 4
62257: PPUSH
62258: CALL_OW 298
62262: ST_TO_ADDR
// if temp_dist < dist_2 then
62263: LD_VAR 0 9
62267: PUSH
62268: LD_VAR 0 7
62272: LESS
62273: IFFALSE 62295
// begin dist_2 = temp_dist ;
62275: LD_ADDR_VAR 0 7
62279: PUSH
62280: LD_VAR 0 9
62284: ST_TO_ADDR
// dir = b ;
62285: LD_ADDR_VAR 0 10
62289: PUSH
62290: LD_VAR 0 8
62294: ST_TO_ADDR
// end ; end ;
62295: GO 62200
62297: POP
62298: POP
// result = dir ;
62299: LD_ADDR_VAR 0 5
62303: PUSH
62304: LD_VAR 0 10
62308: ST_TO_ADDR
// end ;
62309: LD_VAR 0 5
62313: RET
// export function AI_InvertDirection ( direction ) ; var dir ; begin
62314: LD_INT 0
62316: PPUSH
62317: PPUSH
// dir = direction - 3 ;
62318: LD_ADDR_VAR 0 3
62322: PUSH
62323: LD_VAR 0 1
62327: PUSH
62328: LD_INT 3
62330: MINUS
62331: ST_TO_ADDR
// if dir < 0 then
62332: LD_VAR 0 3
62336: PUSH
62337: LD_INT 0
62339: LESS
62340: IFFALSE 62356
// dir = dir + 6 ;
62342: LD_ADDR_VAR 0 3
62346: PUSH
62347: LD_VAR 0 3
62351: PUSH
62352: LD_INT 6
62354: PLUS
62355: ST_TO_ADDR
// result = dir ;
62356: LD_ADDR_VAR 0 2
62360: PUSH
62361: LD_VAR 0 3
62365: ST_TO_ADDR
// end ;
62366: LD_VAR 0 2
62370: RET
// export function BehindLine ( un , x , y , dir , dist ) ; var c ; begin
62371: LD_INT 0
62373: PPUSH
62374: PPUSH
// case dir of 0 :
62375: LD_VAR 0 4
62379: PUSH
62380: LD_INT 0
62382: DOUBLE
62383: EQUAL
62384: IFTRUE 62388
62386: GO 62483
62388: POP
// begin c = GetX ( un ) - x ;
62389: LD_ADDR_VAR 0 7
62393: PUSH
62394: LD_VAR 0 1
62398: PPUSH
62399: CALL_OW 250
62403: PUSH
62404: LD_VAR 0 2
62408: MINUS
62409: ST_TO_ADDR
// if c > 0 then
62410: LD_VAR 0 7
62414: PUSH
62415: LD_INT 0
62417: GREATER
62418: IFFALSE 62434
// c = c + 1 ;
62420: LD_ADDR_VAR 0 7
62424: PUSH
62425: LD_VAR 0 7
62429: PUSH
62430: LD_INT 1
62432: PLUS
62433: ST_TO_ADDR
// y = y + ( c div 2 ) ;
62434: LD_ADDR_VAR 0 3
62438: PUSH
62439: LD_VAR 0 3
62443: PUSH
62444: LD_VAR 0 7
62448: PUSH
62449: LD_INT 2
62451: DIV
62452: PLUS
62453: ST_TO_ADDR
// result := GetY ( un ) >= y + dist ;
62454: LD_ADDR_VAR 0 6
62458: PUSH
62459: LD_VAR 0 1
62463: PPUSH
62464: CALL_OW 251
62468: PUSH
62469: LD_VAR 0 3
62473: PUSH
62474: LD_VAR 0 5
62478: PLUS
62479: GREATEREQUAL
62480: ST_TO_ADDR
// end ; 1 :
62481: GO 62911
62483: LD_INT 1
62485: DOUBLE
62486: EQUAL
62487: IFTRUE 62491
62489: GO 62586
62491: POP
// begin c = GetY ( un ) - y ;
62492: LD_ADDR_VAR 0 7
62496: PUSH
62497: LD_VAR 0 1
62501: PPUSH
62502: CALL_OW 251
62506: PUSH
62507: LD_VAR 0 3
62511: MINUS
62512: ST_TO_ADDR
// if c < 0 then
62513: LD_VAR 0 7
62517: PUSH
62518: LD_INT 0
62520: LESS
62521: IFFALSE 62537
// c = c - 1 ;
62523: LD_ADDR_VAR 0 7
62527: PUSH
62528: LD_VAR 0 7
62532: PUSH
62533: LD_INT 1
62535: MINUS
62536: ST_TO_ADDR
// x = x + ( c div 2 ) ;
62537: LD_ADDR_VAR 0 2
62541: PUSH
62542: LD_VAR 0 2
62546: PUSH
62547: LD_VAR 0 7
62551: PUSH
62552: LD_INT 2
62554: DIV
62555: PLUS
62556: ST_TO_ADDR
// result := GetX ( un ) <= x - dist ;
62557: LD_ADDR_VAR 0 6
62561: PUSH
62562: LD_VAR 0 1
62566: PPUSH
62567: CALL_OW 250
62571: PUSH
62572: LD_VAR 0 2
62576: PUSH
62577: LD_VAR 0 5
62581: MINUS
62582: LESSEQUAL
62583: ST_TO_ADDR
// end ; 2 :
62584: GO 62911
62586: LD_INT 2
62588: DOUBLE
62589: EQUAL
62590: IFTRUE 62594
62592: GO 62645
62594: POP
// begin result := GetX ( un ) + GetY ( un ) <= x + y - 2 * dist ;
62595: LD_ADDR_VAR 0 6
62599: PUSH
62600: LD_VAR 0 1
62604: PPUSH
62605: CALL_OW 250
62609: PUSH
62610: LD_VAR 0 1
62614: PPUSH
62615: CALL_OW 251
62619: PLUS
62620: PUSH
62621: LD_VAR 0 2
62625: PUSH
62626: LD_VAR 0 3
62630: PLUS
62631: PUSH
62632: LD_INT 2
62634: PUSH
62635: LD_VAR 0 5
62639: MUL
62640: MINUS
62641: LESSEQUAL
62642: ST_TO_ADDR
// end ; 3 :
62643: GO 62911
62645: LD_INT 3
62647: DOUBLE
62648: EQUAL
62649: IFTRUE 62653
62651: GO 62748
62653: POP
// begin c = GetX ( un ) - x ;
62654: LD_ADDR_VAR 0 7
62658: PUSH
62659: LD_VAR 0 1
62663: PPUSH
62664: CALL_OW 250
62668: PUSH
62669: LD_VAR 0 2
62673: MINUS
62674: ST_TO_ADDR
// if c < 0 then
62675: LD_VAR 0 7
62679: PUSH
62680: LD_INT 0
62682: LESS
62683: IFFALSE 62699
// c = c - 1 ;
62685: LD_ADDR_VAR 0 7
62689: PUSH
62690: LD_VAR 0 7
62694: PUSH
62695: LD_INT 1
62697: MINUS
62698: ST_TO_ADDR
// y = y + ( c div 2 ) ;
62699: LD_ADDR_VAR 0 3
62703: PUSH
62704: LD_VAR 0 3
62708: PUSH
62709: LD_VAR 0 7
62713: PUSH
62714: LD_INT 2
62716: DIV
62717: PLUS
62718: ST_TO_ADDR
// result := GetY ( un ) <= y - dist ;
62719: LD_ADDR_VAR 0 6
62723: PUSH
62724: LD_VAR 0 1
62728: PPUSH
62729: CALL_OW 251
62733: PUSH
62734: LD_VAR 0 3
62738: PUSH
62739: LD_VAR 0 5
62743: MINUS
62744: LESSEQUAL
62745: ST_TO_ADDR
// end ; 4 :
62746: GO 62911
62748: LD_INT 4
62750: DOUBLE
62751: EQUAL
62752: IFTRUE 62756
62754: GO 62851
62756: POP
// begin c = GetY ( un ) - y ;
62757: LD_ADDR_VAR 0 7
62761: PUSH
62762: LD_VAR 0 1
62766: PPUSH
62767: CALL_OW 251
62771: PUSH
62772: LD_VAR 0 3
62776: MINUS
62777: ST_TO_ADDR
// if c > 0 then
62778: LD_VAR 0 7
62782: PUSH
62783: LD_INT 0
62785: GREATER
62786: IFFALSE 62802
// c = c + 1 ;
62788: LD_ADDR_VAR 0 7
62792: PUSH
62793: LD_VAR 0 7
62797: PUSH
62798: LD_INT 1
62800: PLUS
62801: ST_TO_ADDR
// x = x + ( c div 2 ) ;
62802: LD_ADDR_VAR 0 2
62806: PUSH
62807: LD_VAR 0 2
62811: PUSH
62812: LD_VAR 0 7
62816: PUSH
62817: LD_INT 2
62819: DIV
62820: PLUS
62821: ST_TO_ADDR
// result := GetX ( un ) >= x + dist ;
62822: LD_ADDR_VAR 0 6
62826: PUSH
62827: LD_VAR 0 1
62831: PPUSH
62832: CALL_OW 250
62836: PUSH
62837: LD_VAR 0 2
62841: PUSH
62842: LD_VAR 0 5
62846: PLUS
62847: GREATEREQUAL
62848: ST_TO_ADDR
// end ; 5 :
62849: GO 62911
62851: LD_INT 5
62853: DOUBLE
62854: EQUAL
62855: IFTRUE 62859
62857: GO 62910
62859: POP
// begin result := GetX ( un ) + GetY ( un ) >= x + y + 2 * dist ;
62860: LD_ADDR_VAR 0 6
62864: PUSH
62865: LD_VAR 0 1
62869: PPUSH
62870: CALL_OW 250
62874: PUSH
62875: LD_VAR 0 1
62879: PPUSH
62880: CALL_OW 251
62884: PLUS
62885: PUSH
62886: LD_VAR 0 2
62890: PUSH
62891: LD_VAR 0 3
62895: PLUS
62896: PUSH
62897: LD_INT 2
62899: PUSH
62900: LD_VAR 0 5
62904: MUL
62905: PLUS
62906: GREATEREQUAL
62907: ST_TO_ADDR
// end ; end ;
62908: GO 62911
62910: POP
// end ;
62911: LD_VAR 0 6
62915: RET
// export function GetHexesNearHex ( x , y , dist ) ; var d , list_coords , b ; begin
62916: LD_INT 0
62918: PPUSH
62919: PPUSH
62920: PPUSH
62921: PPUSH
// result = [ [ x , y ] ] ;
62922: LD_ADDR_VAR 0 4
62926: PUSH
62927: LD_VAR 0 1
62931: PUSH
62932: LD_VAR 0 2
62936: PUSH
62937: EMPTY
62938: LIST
62939: LIST
62940: PUSH
62941: EMPTY
62942: LIST
62943: ST_TO_ADDR
// for d = 1 to dist do
62944: LD_ADDR_VAR 0 5
62948: PUSH
62949: DOUBLE
62950: LD_INT 1
62952: DEC
62953: ST_TO_ADDR
62954: LD_VAR 0 3
62958: PUSH
62959: FOR_TO
62960: IFFALSE 63555
// begin list_coords = [ ] ;
62962: LD_ADDR_VAR 0 6
62966: PUSH
62967: EMPTY
62968: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x , y - d ] ) ;
62969: LD_ADDR_VAR 0 6
62973: PUSH
62974: LD_VAR 0 6
62978: PPUSH
62979: LD_INT 1
62981: PPUSH
62982: LD_VAR 0 1
62986: PUSH
62987: LD_VAR 0 2
62991: PUSH
62992: LD_VAR 0 5
62996: MINUS
62997: PUSH
62998: EMPTY
62999: LIST
63000: LIST
63001: PPUSH
63002: CALL_OW 2
63006: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y ] ) ;
63007: LD_ADDR_VAR 0 6
63011: PUSH
63012: LD_VAR 0 6
63016: PPUSH
63017: LD_INT 1
63019: PPUSH
63020: LD_VAR 0 1
63024: PUSH
63025: LD_VAR 0 5
63029: PLUS
63030: PUSH
63031: LD_VAR 0 2
63035: PUSH
63036: EMPTY
63037: LIST
63038: LIST
63039: PPUSH
63040: CALL_OW 2
63044: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y + d ] ) ;
63045: LD_ADDR_VAR 0 6
63049: PUSH
63050: LD_VAR 0 6
63054: PPUSH
63055: LD_INT 1
63057: PPUSH
63058: LD_VAR 0 1
63062: PUSH
63063: LD_VAR 0 5
63067: PLUS
63068: PUSH
63069: LD_VAR 0 2
63073: PUSH
63074: LD_VAR 0 5
63078: PLUS
63079: PUSH
63080: EMPTY
63081: LIST
63082: LIST
63083: PPUSH
63084: CALL_OW 2
63088: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x , y + d ] ) ;
63089: LD_ADDR_VAR 0 6
63093: PUSH
63094: LD_VAR 0 6
63098: PPUSH
63099: LD_INT 1
63101: PPUSH
63102: LD_VAR 0 1
63106: PUSH
63107: LD_VAR 0 2
63111: PUSH
63112: LD_VAR 0 5
63116: PLUS
63117: PUSH
63118: EMPTY
63119: LIST
63120: LIST
63121: PPUSH
63122: CALL_OW 2
63126: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y ] ) ;
63127: LD_ADDR_VAR 0 6
63131: PUSH
63132: LD_VAR 0 6
63136: PPUSH
63137: LD_INT 1
63139: PPUSH
63140: LD_VAR 0 1
63144: PUSH
63145: LD_VAR 0 5
63149: MINUS
63150: PUSH
63151: LD_VAR 0 2
63155: PUSH
63156: EMPTY
63157: LIST
63158: LIST
63159: PPUSH
63160: CALL_OW 2
63164: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y - d ] ) ;
63165: LD_ADDR_VAR 0 6
63169: PUSH
63170: LD_VAR 0 6
63174: PPUSH
63175: LD_INT 1
63177: PPUSH
63178: LD_VAR 0 1
63182: PUSH
63183: LD_VAR 0 5
63187: MINUS
63188: PUSH
63189: LD_VAR 0 2
63193: PUSH
63194: LD_VAR 0 5
63198: MINUS
63199: PUSH
63200: EMPTY
63201: LIST
63202: LIST
63203: PPUSH
63204: CALL_OW 2
63208: ST_TO_ADDR
// b = 1 ;
63209: LD_ADDR_VAR 0 7
63213: PUSH
63214: LD_INT 1
63216: ST_TO_ADDR
// while b <= ( d - 1 ) do
63217: LD_VAR 0 7
63221: PUSH
63222: LD_VAR 0 5
63226: PUSH
63227: LD_INT 1
63229: MINUS
63230: LESSEQUAL
63231: IFFALSE 63537
// begin list_coords = Insert ( list_coords , 1 , [ x + b , y - d + b ] ) ;
63233: LD_ADDR_VAR 0 6
63237: PUSH
63238: LD_VAR 0 6
63242: PPUSH
63243: LD_INT 1
63245: PPUSH
63246: LD_VAR 0 1
63250: PUSH
63251: LD_VAR 0 7
63255: PLUS
63256: PUSH
63257: LD_VAR 0 2
63261: PUSH
63262: LD_VAR 0 5
63266: MINUS
63267: PUSH
63268: LD_VAR 0 7
63272: PLUS
63273: PUSH
63274: EMPTY
63275: LIST
63276: LIST
63277: PPUSH
63278: CALL_OW 2
63282: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y + b ] ) ;
63283: LD_ADDR_VAR 0 6
63287: PUSH
63288: LD_VAR 0 6
63292: PPUSH
63293: LD_INT 1
63295: PPUSH
63296: LD_VAR 0 1
63300: PUSH
63301: LD_VAR 0 5
63305: PLUS
63306: PUSH
63307: LD_VAR 0 2
63311: PUSH
63312: LD_VAR 0 7
63316: PLUS
63317: PUSH
63318: EMPTY
63319: LIST
63320: LIST
63321: PPUSH
63322: CALL_OW 2
63326: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d - b , y + d ] ) ;
63327: LD_ADDR_VAR 0 6
63331: PUSH
63332: LD_VAR 0 6
63336: PPUSH
63337: LD_INT 1
63339: PPUSH
63340: LD_VAR 0 1
63344: PUSH
63345: LD_VAR 0 5
63349: PLUS
63350: PUSH
63351: LD_VAR 0 7
63355: MINUS
63356: PUSH
63357: LD_VAR 0 2
63361: PUSH
63362: LD_VAR 0 5
63366: PLUS
63367: PUSH
63368: EMPTY
63369: LIST
63370: LIST
63371: PPUSH
63372: CALL_OW 2
63376: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - b , y + d - b ] ) ;
63377: LD_ADDR_VAR 0 6
63381: PUSH
63382: LD_VAR 0 6
63386: PPUSH
63387: LD_INT 1
63389: PPUSH
63390: LD_VAR 0 1
63394: PUSH
63395: LD_VAR 0 7
63399: MINUS
63400: PUSH
63401: LD_VAR 0 2
63405: PUSH
63406: LD_VAR 0 5
63410: PLUS
63411: PUSH
63412: LD_VAR 0 7
63416: MINUS
63417: PUSH
63418: EMPTY
63419: LIST
63420: LIST
63421: PPUSH
63422: CALL_OW 2
63426: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y - b ] ) ;
63427: LD_ADDR_VAR 0 6
63431: PUSH
63432: LD_VAR 0 6
63436: PPUSH
63437: LD_INT 1
63439: PPUSH
63440: LD_VAR 0 1
63444: PUSH
63445: LD_VAR 0 5
63449: MINUS
63450: PUSH
63451: LD_VAR 0 2
63455: PUSH
63456: LD_VAR 0 7
63460: MINUS
63461: PUSH
63462: EMPTY
63463: LIST
63464: LIST
63465: PPUSH
63466: CALL_OW 2
63470: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d + b , y - d ] ) ;
63471: LD_ADDR_VAR 0 6
63475: PUSH
63476: LD_VAR 0 6
63480: PPUSH
63481: LD_INT 1
63483: PPUSH
63484: LD_VAR 0 1
63488: PUSH
63489: LD_VAR 0 5
63493: MINUS
63494: PUSH
63495: LD_VAR 0 7
63499: PLUS
63500: PUSH
63501: LD_VAR 0 2
63505: PUSH
63506: LD_VAR 0 5
63510: MINUS
63511: PUSH
63512: EMPTY
63513: LIST
63514: LIST
63515: PPUSH
63516: CALL_OW 2
63520: ST_TO_ADDR
// b = b + 1 ;
63521: LD_ADDR_VAR 0 7
63525: PUSH
63526: LD_VAR 0 7
63530: PUSH
63531: LD_INT 1
63533: PLUS
63534: ST_TO_ADDR
// end ;
63535: GO 63217
// result = result ^ list_coords ;
63537: LD_ADDR_VAR 0 4
63541: PUSH
63542: LD_VAR 0 4
63546: PUSH
63547: LD_VAR 0 6
63551: ADD
63552: ST_TO_ADDR
// end ;
63553: GO 62959
63555: POP
63556: POP
// end ;
63557: LD_VAR 0 4
63561: RET
// export function RoundDouble ( d ) ; begin
63562: LD_INT 0
63564: PPUSH
// result = d div 1 ;
63565: LD_ADDR_VAR 0 2
63569: PUSH
63570: LD_VAR 0 1
63574: PUSH
63575: LD_INT 1
63577: DIV
63578: ST_TO_ADDR
// if d mod 1 >= 0.5 then
63579: LD_VAR 0 1
63583: PUSH
63584: LD_INT 1
63586: MOD
63587: PUSH
63588: LD_REAL  5.00000000000000E-0001
63591: GREATEREQUAL
63592: IFFALSE 63608
// result = result + 1 ;
63594: LD_ADDR_VAR 0 2
63598: PUSH
63599: LD_VAR 0 2
63603: PUSH
63604: LD_INT 1
63606: PLUS
63607: ST_TO_ADDR
// end ;
63608: LD_VAR 0 2
63612: RET
// export function Check2DArraysEqual ( list1 , list2 ) ; var a , b ; begin
63613: LD_INT 0
63615: PPUSH
63616: PPUSH
63617: PPUSH
// result = true ;
63618: LD_ADDR_VAR 0 3
63622: PUSH
63623: LD_INT 1
63625: ST_TO_ADDR
// if list1 + 0 <> list2 + 0 then
63626: LD_VAR 0 1
63630: PUSH
63631: LD_INT 0
63633: PLUS
63634: PUSH
63635: LD_VAR 0 2
63639: PUSH
63640: LD_INT 0
63642: PLUS
63643: NONEQUAL
63644: IFFALSE 63656
// begin result = false ;
63646: LD_ADDR_VAR 0 3
63650: PUSH
63651: LD_INT 0
63653: ST_TO_ADDR
// exit ;
63654: GO 63801
// end ; for a = 1 to list1 do
63656: LD_ADDR_VAR 0 4
63660: PUSH
63661: DOUBLE
63662: LD_INT 1
63664: DEC
63665: ST_TO_ADDR
63666: LD_VAR 0 1
63670: PUSH
63671: FOR_TO
63672: IFFALSE 63799
// begin if list1 [ a ] + 0 <> list2 [ a ] + 0 then
63674: LD_VAR 0 1
63678: PUSH
63679: LD_VAR 0 4
63683: ARRAY
63684: PUSH
63685: LD_INT 0
63687: PLUS
63688: PUSH
63689: LD_VAR 0 2
63693: PUSH
63694: LD_VAR 0 4
63698: ARRAY
63699: PUSH
63700: LD_INT 0
63702: PLUS
63703: NONEQUAL
63704: IFFALSE 63718
// begin result = false ;
63706: LD_ADDR_VAR 0 3
63710: PUSH
63711: LD_INT 0
63713: ST_TO_ADDR
// exit ;
63714: POP
63715: POP
63716: GO 63801
// end ; for b = 1 to list1 [ a ] do
63718: LD_ADDR_VAR 0 5
63722: PUSH
63723: DOUBLE
63724: LD_INT 1
63726: DEC
63727: ST_TO_ADDR
63728: LD_VAR 0 1
63732: PUSH
63733: LD_VAR 0 4
63737: ARRAY
63738: PUSH
63739: FOR_TO
63740: IFFALSE 63795
// if not list1 [ a ] [ b ] = list2 [ a ] [ b ] then
63742: LD_VAR 0 1
63746: PUSH
63747: LD_VAR 0 4
63751: ARRAY
63752: PUSH
63753: LD_VAR 0 5
63757: ARRAY
63758: PUSH
63759: LD_VAR 0 2
63763: PUSH
63764: LD_VAR 0 4
63768: ARRAY
63769: PUSH
63770: LD_VAR 0 5
63774: ARRAY
63775: EQUAL
63776: NOT
63777: IFFALSE 63793
// begin result = false ;
63779: LD_ADDR_VAR 0 3
63783: PUSH
63784: LD_INT 0
63786: ST_TO_ADDR
// exit ;
63787: POP
63788: POP
63789: POP
63790: POP
63791: GO 63801
// end ;
63793: GO 63739
63795: POP
63796: POP
// end ;
63797: GO 63671
63799: POP
63800: POP
// end ;
63801: LD_VAR 0 3
63805: RET
// export function Create_player_forces ( Human_list , Vechicle_list ) ; var i , j , temp , temp_list1 , temp_list2 , count ; var mechs , vehs ; begin
63806: LD_INT 0
63808: PPUSH
63809: PPUSH
63810: PPUSH
63811: PPUSH
63812: PPUSH
63813: PPUSH
63814: PPUSH
63815: PPUSH
63816: PPUSH
// inituc ;
63817: CALL_OW 18
// inithc ;
63821: CALL_OW 19
// initvc ;
63825: CALL_OW 20
// uc_nation = nation_arabian ;
63829: LD_ADDR_OWVAR 21
63833: PUSH
63834: LD_INT 2
63836: ST_TO_ADDR
// uc_side = 2 ;
63837: LD_ADDR_OWVAR 20
63841: PUSH
63842: LD_INT 2
63844: ST_TO_ADDR
// Randomize ;
63845: CALL_OW 10
// temp_list1 = [ ] ;
63849: LD_ADDR_VAR 0 7
63853: PUSH
63854: EMPTY
63855: ST_TO_ADDR
// temp_list2 = [ ] ;
63856: LD_ADDR_VAR 0 8
63860: PUSH
63861: EMPTY
63862: ST_TO_ADDR
// for i = 1 to Human_list do
63863: LD_ADDR_VAR 0 4
63867: PUSH
63868: DOUBLE
63869: LD_INT 1
63871: DEC
63872: ST_TO_ADDR
63873: LD_VAR 0 1
63877: PUSH
63878: FOR_TO
63879: IFFALSE 64077
// begin hc_attr = [ Human_list [ i ] [ 1 ] , Human_list [ i ] [ 2 ] ] ;
63881: LD_ADDR_OWVAR 29
63885: PUSH
63886: LD_VAR 0 1
63890: PUSH
63891: LD_VAR 0 4
63895: ARRAY
63896: PUSH
63897: LD_INT 1
63899: ARRAY
63900: PUSH
63901: LD_VAR 0 1
63905: PUSH
63906: LD_VAR 0 4
63910: ARRAY
63911: PUSH
63912: LD_INT 2
63914: ARRAY
63915: PUSH
63916: EMPTY
63917: LIST
63918: LIST
63919: ST_TO_ADDR
// temp = Human_list [ i ] [ 3 ] ;
63920: LD_ADDR_VAR 0 6
63924: PUSH
63925: LD_VAR 0 1
63929: PUSH
63930: LD_VAR 0 4
63934: ARRAY
63935: PUSH
63936: LD_INT 3
63938: ARRAY
63939: ST_TO_ADDR
// if temp = 0 then
63940: LD_VAR 0 6
63944: PUSH
63945: LD_INT 0
63947: EQUAL
63948: IFFALSE 63968
// hc_class = rand ( 1 , 4 ) else
63950: LD_ADDR_OWVAR 28
63954: PUSH
63955: LD_INT 1
63957: PPUSH
63958: LD_INT 4
63960: PPUSH
63961: CALL_OW 12
63965: ST_TO_ADDR
63966: GO 63978
// hc_class = temp ;
63968: LD_ADDR_OWVAR 28
63972: PUSH
63973: LD_VAR 0 6
63977: ST_TO_ADDR
// hc_skills = [ Human_list [ i ] [ 4 ] , Human_list [ i ] [ 5 ] , Human_list [ i ] [ 6 ] , Human_list [ i ] [ 7 ] ] ;
63978: LD_ADDR_OWVAR 31
63982: PUSH
63983: LD_VAR 0 1
63987: PUSH
63988: LD_VAR 0 4
63992: ARRAY
63993: PUSH
63994: LD_INT 4
63996: ARRAY
63997: PUSH
63998: LD_VAR 0 1
64002: PUSH
64003: LD_VAR 0 4
64007: ARRAY
64008: PUSH
64009: LD_INT 5
64011: ARRAY
64012: PUSH
64013: LD_VAR 0 1
64017: PUSH
64018: LD_VAR 0 4
64022: ARRAY
64023: PUSH
64024: LD_INT 6
64026: ARRAY
64027: PUSH
64028: LD_VAR 0 1
64032: PUSH
64033: LD_VAR 0 4
64037: ARRAY
64038: PUSH
64039: LD_INT 7
64041: ARRAY
64042: PUSH
64043: EMPTY
64044: LIST
64045: LIST
64046: LIST
64047: LIST
64048: ST_TO_ADDR
// temp = createhuman ;
64049: LD_ADDR_VAR 0 6
64053: PUSH
64054: CALL_OW 44
64058: ST_TO_ADDR
// temp_list1 = temp_list1 ^ temp ;
64059: LD_ADDR_VAR 0 7
64063: PUSH
64064: LD_VAR 0 7
64068: PUSH
64069: LD_VAR 0 6
64073: ADD
64074: ST_TO_ADDR
// end ;
64075: GO 63878
64077: POP
64078: POP
// for i in Vechicle_list do
64079: LD_ADDR_VAR 0 4
64083: PUSH
64084: LD_VAR 0 2
64088: PUSH
64089: FOR_IN
64090: IFFALSE 64176
// begin vc_chassis = i [ 1 ] ;
64092: LD_ADDR_OWVAR 37
64096: PUSH
64097: LD_VAR 0 4
64101: PUSH
64102: LD_INT 1
64104: ARRAY
64105: ST_TO_ADDR
// vc_control = i [ 2 ] ;
64106: LD_ADDR_OWVAR 38
64110: PUSH
64111: LD_VAR 0 4
64115: PUSH
64116: LD_INT 2
64118: ARRAY
64119: ST_TO_ADDR
// vc_engine = i [ 3 ] ;
64120: LD_ADDR_OWVAR 39
64124: PUSH
64125: LD_VAR 0 4
64129: PUSH
64130: LD_INT 3
64132: ARRAY
64133: ST_TO_ADDR
// ; vc_weapon = i [ 4 ] ;
64134: LD_ADDR_OWVAR 40
64138: PUSH
64139: LD_VAR 0 4
64143: PUSH
64144: LD_INT 4
64146: ARRAY
64147: ST_TO_ADDR
// temp = createvehicle ;
64148: LD_ADDR_VAR 0 6
64152: PUSH
64153: CALL_OW 45
64157: ST_TO_ADDR
// temp_list2 = temp_list2 ^ temp ;
64158: LD_ADDR_VAR 0 8
64162: PUSH
64163: LD_VAR 0 8
64167: PUSH
64168: LD_VAR 0 6
64172: ADD
64173: ST_TO_ADDR
// end ;
64174: GO 64089
64176: POP
64177: POP
// result = [ temp_list1 , temp_list2 ] ;
64178: LD_ADDR_VAR 0 3
64182: PUSH
64183: LD_VAR 0 7
64187: PUSH
64188: LD_VAR 0 8
64192: PUSH
64193: EMPTY
64194: LIST
64195: LIST
64196: ST_TO_ADDR
// end ; end_of_file
64197: LD_VAR 0 3
64201: RET
// export function Action ; var i ; begin
64202: LD_INT 0
64204: PPUSH
64205: PPUSH
// IngameOn ;
64206: CALL_OW 8
// ExclusiveOff ;
64210: CALL_OW 5
// for i in filterunitsinarea ( area_base7 , [ f_side , 3 ] ) do
64214: LD_ADDR_VAR 0 2
64218: PUSH
64219: LD_INT 10
64221: PPUSH
64222: LD_INT 22
64224: PUSH
64225: LD_INT 3
64227: PUSH
64228: EMPTY
64229: LIST
64230: LIST
64231: PPUSH
64232: CALL_OW 70
64236: PUSH
64237: FOR_IN
64238: IFFALSE 64254
// DoNotAttack ( 2 , i ) ;
64240: LD_INT 2
64242: PPUSH
64243: LD_VAR 0 2
64247: PPUSH
64248: CALL_OW 471
64252: GO 64237
64254: POP
64255: POP
// PrepareComputerSides = 1 ;
64256: LD_ADDR_EXP 187
64260: PUSH
64261: LD_INT 1
64263: ST_TO_ADDR
// RevealFOgArea ( 2 , Snake_initial ) ;
64264: LD_INT 2
64266: PPUSH
64267: LD_INT 32
64269: PPUSH
64270: CALL_OW 332
// placeunitxy ( Snake , 44 , 30 , false ) ;
64274: LD_EXP 26
64278: PPUSH
64279: LD_INT 44
64281: PPUSH
64282: LD_INT 30
64284: PPUSH
64285: LD_INT 0
64287: PPUSH
64288: CALL_OW 48
// centernowonunits ( Snake ) ;
64292: LD_EXP 26
64296: PPUSH
64297: CALL_OW 87
// commovexy ( Snake , 29 , 24 ) ;
64301: LD_EXP 26
64305: PPUSH
64306: LD_INT 29
64308: PPUSH
64309: LD_INT 24
64311: PPUSH
64312: CALL_OW 111
// wait ( 0 0$2 ) ;
64316: LD_INT 70
64318: PPUSH
64319: CALL_OW 67
// placeunitarea ( player_forces [ 1 ] , player_start_area , false ) ;
64323: LD_EXP 174
64327: PUSH
64328: LD_INT 1
64330: ARRAY
64331: PPUSH
64332: LD_INT 19
64334: PPUSH
64335: LD_INT 0
64337: PPUSH
64338: CALL_OW 49
// player_forces = delete ( player_forces , 1 ) ;
64342: LD_ADDR_EXP 174
64346: PUSH
64347: LD_EXP 174
64351: PPUSH
64352: LD_INT 1
64354: PPUSH
64355: CALL_OW 3
64359: ST_TO_ADDR
// commovexy ( Heike , 21 , 18 ) ;
64360: LD_EXP 12
64364: PPUSH
64365: LD_INT 21
64367: PPUSH
64368: LD_INT 18
64370: PPUSH
64371: CALL_OW 111
// addcomexitvehicle ( Heike ) ;
64375: LD_EXP 12
64379: PPUSH
64380: CALL_OW 181
// addcommovexy ( Heike , 27 , 22 ) ;
64384: LD_EXP 12
64388: PPUSH
64389: LD_INT 27
64391: PPUSH
64392: LD_INT 22
64394: PPUSH
64395: CALL_OW 171
// addcomturnunit ( Heike , Snake ) ;
64399: LD_EXP 12
64403: PPUSH
64404: LD_EXP 26
64408: PPUSH
64409: CALL_OW 179
// addcomturnunit ( Snake , Heike ) ;
64413: LD_EXP 26
64417: PPUSH
64418: LD_EXP 12
64422: PPUSH
64423: CALL_OW 179
// repeat wait ( 0 0$1 ) ;
64427: LD_INT 35
64429: PPUSH
64430: CALL_OW 67
// centeronunits ( Snake ) ;
64434: LD_EXP 26
64438: PPUSH
64439: CALL_OW 85
// until isat ( Heike , 27 , 22 ) and isat ( Snake , 29 , 24 ) ;
64443: LD_EXP 12
64447: PPUSH
64448: LD_INT 27
64450: PPUSH
64451: LD_INT 22
64453: PPUSH
64454: CALL_OW 307
64458: PUSH
64459: LD_EXP 26
64463: PPUSH
64464: LD_INT 29
64466: PPUSH
64467: LD_INT 24
64469: PPUSH
64470: CALL_OW 307
64474: AND
64475: IFFALSE 64427
// say ( Heike , Br_He1 ) ;
64477: LD_EXP 12
64481: PPUSH
64482: LD_STRING Br_He1
64484: PPUSH
64485: CALL_OW 88
// say ( Snake , Br_Sn1 ) ;
64489: LD_EXP 26
64493: PPUSH
64494: LD_STRING Br_Sn1
64496: PPUSH
64497: CALL_OW 88
// RevealFogArea ( 2 , reveal_defences ) ;
64501: LD_INT 2
64503: PPUSH
64504: LD_INT 22
64506: PPUSH
64507: CALL_OW 332
// say ( Heike , Br_He2 ) ;
64511: LD_EXP 12
64515: PPUSH
64516: LD_STRING Br_He2
64518: PPUSH
64519: CALL_OW 88
// say ( Snake , Br_Sn2 ) ;
64523: LD_EXP 26
64527: PPUSH
64528: LD_STRING Br_Sn2
64530: PPUSH
64531: CALL_OW 88
// say ( Heike , Br_He3 ) ;
64535: LD_EXP 12
64539: PPUSH
64540: LD_STRING Br_He3
64542: PPUSH
64543: CALL_OW 88
// say ( Snake , Br_Sn3 ) ;
64547: LD_EXP 26
64551: PPUSH
64552: LD_STRING Br_Sn3
64554: PPUSH
64555: CALL_OW 88
// say ( Heike , Br_He4 ) ;
64559: LD_EXP 12
64563: PPUSH
64564: LD_STRING Br_He4
64566: PPUSH
64567: CALL_OW 88
// RevealFogArea ( 2 , reveal_buildings ) ;
64571: LD_INT 2
64573: PPUSH
64574: LD_INT 24
64576: PPUSH
64577: CALL_OW 332
// intro_centering = 1 ;
64581: LD_ADDR_EXP 175
64585: PUSH
64586: LD_INT 1
64588: ST_TO_ADDR
// say ( Snake , Br_Sn4 ) ;
64589: LD_EXP 26
64593: PPUSH
64594: LD_STRING Br_Sn4
64596: PPUSH
64597: CALL_OW 88
// say ( Heike , Br_He5 ) ;
64601: LD_EXP 12
64605: PPUSH
64606: LD_STRING Br_He5
64608: PPUSH
64609: CALL_OW 88
// intro_centering = 2 ;
64613: LD_ADDR_EXP 175
64617: PUSH
64618: LD_INT 2
64620: ST_TO_ADDR
// centeronunits ( snake ) ;
64621: LD_EXP 26
64625: PPUSH
64626: CALL_OW 85
// say ( Snake , Br_Sn5 ) ;
64630: LD_EXP 26
64634: PPUSH
64635: LD_STRING Br_Sn5
64637: PPUSH
64638: CALL_OW 88
// say ( Heike , Br_He6 ) ;
64642: LD_EXP 12
64646: PPUSH
64647: LD_STRING Br_He6
64649: PPUSH
64650: CALL_OW 88
// say ( Snake , Br_Sn6 ) ;
64654: LD_EXP 26
64658: PPUSH
64659: LD_STRING Br_Sn6
64661: PPUSH
64662: CALL_OW 88
// say ( Heike , Br_He7 ) ;
64666: LD_EXP 12
64670: PPUSH
64671: LD_STRING Br_He7
64673: PPUSH
64674: CALL_OW 88
// say ( Snake , Br_Sn7 ) ;
64678: LD_EXP 26
64682: PPUSH
64683: LD_STRING Br_Sn7
64685: PPUSH
64686: CALL_OW 88
// say ( Heike , Br_He8 ) ;
64690: LD_EXP 12
64694: PPUSH
64695: LD_STRING Br_He8
64697: PPUSH
64698: CALL_OW 88
// RevealFogArea ( 2 , reveal_main_teleport ) ;
64702: LD_INT 2
64704: PPUSH
64705: LD_INT 23
64707: PPUSH
64708: CALL_OW 332
// centeronxy ( 137 , 178 ) ;
64712: LD_INT 137
64714: PPUSH
64715: LD_INT 178
64717: PPUSH
64718: CALL_OW 84
// say ( Snake , Br_Sn8 ) ;
64722: LD_EXP 26
64726: PPUSH
64727: LD_STRING Br_Sn8
64729: PPUSH
64730: CALL_OW 88
// centeronunits ( snake ) ;
64734: LD_EXP 26
64738: PPUSH
64739: CALL_OW 85
// say ( Snake , Br_Sn9 ) ;
64743: LD_EXP 26
64747: PPUSH
64748: LD_STRING Br_Sn9
64750: PPUSH
64751: CALL_OW 88
// say ( Heike , Br_He9 ) ;
64755: LD_EXP 12
64759: PPUSH
64760: LD_STRING Br_He9
64762: PPUSH
64763: CALL_OW 88
// say ( Snake , Br_Sn10 ) ;
64767: LD_EXP 26
64771: PPUSH
64772: LD_STRING Br_Sn10
64774: PPUSH
64775: CALL_OW 88
// say ( Heike , Br_He10 ) ;
64779: LD_EXP 12
64783: PPUSH
64784: LD_STRING Br_He10
64786: PPUSH
64787: CALL_OW 88
// setside ( Snake , 5 ) ;
64791: LD_EXP 26
64795: PPUSH
64796: LD_INT 5
64798: PPUSH
64799: CALL_OW 235
// comagressivemove ( Snake , 11 , 1 ) ;
64803: LD_EXP 26
64807: PPUSH
64808: LD_INT 11
64810: PPUSH
64811: LD_INT 1
64813: PPUSH
64814: CALL_OW 114
// ingameoff ;
64818: CALL_OW 9
// base_spawn_delay = 10 ;
64822: LD_ADDR_EXP 173
64826: PUSH
64827: LD_INT 10
64829: ST_TO_ADDR
// tick = 0 ;
64830: LD_ADDR_OWVAR 1
64834: PUSH
64835: LD_INT 0
64837: ST_TO_ADDR
// wait ( 0 0$2 ) ;
64838: LD_INT 70
64840: PPUSH
64841: CALL_OW 67
// enable ( 1 ) ;
64845: LD_INT 1
64847: ENABLE_MARKED
// SaveForQuickRestart ;
64848: CALL_OW 22
// case difficulty of 1 :
64852: LD_OWVAR 67
64856: PUSH
64857: LD_INT 1
64859: DOUBLE
64860: EQUAL
64861: IFTRUE 64865
64863: GO 64875
64865: POP
// ChangeMissionObjectives ( initialgoals_easy ) ; 2 :
64866: LD_STRING initialgoals_easy
64868: PPUSH
64869: CALL_OW 337
64873: GO 64912
64875: LD_INT 2
64877: DOUBLE
64878: EQUAL
64879: IFTRUE 64883
64881: GO 64893
64883: POP
// ChangeMissionObjectives ( initialgoals_medium ) ; 3 :
64884: LD_STRING initialgoals_medium
64886: PPUSH
64887: CALL_OW 337
64891: GO 64912
64893: LD_INT 3
64895: DOUBLE
64896: EQUAL
64897: IFTRUE 64901
64899: GO 64911
64901: POP
// ChangeMissionObjectives ( initialgoals_hard ) ; end ;
64902: LD_STRING initialgoals_hard
64904: PPUSH
64905: CALL_OW 337
64909: GO 64912
64911: POP
// for i in filterunitsinarea ( area_base7 , [ f_side , 3 ] ) do
64912: LD_ADDR_VAR 0 2
64916: PUSH
64917: LD_INT 10
64919: PPUSH
64920: LD_INT 22
64922: PUSH
64923: LD_INT 3
64925: PUSH
64926: EMPTY
64927: LIST
64928: LIST
64929: PPUSH
64930: CALL_OW 70
64934: PUSH
64935: FOR_IN
64936: IFFALSE 64952
// NormalAttack ( 2 , i ) ;
64938: LD_INT 2
64940: PPUSH
64941: LD_VAR 0 2
64945: PPUSH
64946: CALL_OW 472
64950: GO 64935
64952: POP
64953: POP
// for i in [ base1_mark , base2_mark , base3_mark , base4_mark , base5_mark , base6_mark , base7_mark , base8_mark , base9_mark , base10_mark ] do
64954: LD_ADDR_VAR 0 2
64958: PUSH
64959: LD_INT 34
64961: PUSH
64962: LD_INT 35
64964: PUSH
64965: LD_INT 36
64967: PUSH
64968: LD_INT 37
64970: PUSH
64971: LD_INT 38
64973: PUSH
64974: LD_INT 39
64976: PUSH
64977: LD_INT 40
64979: PUSH
64980: LD_INT 41
64982: PUSH
64983: LD_INT 42
64985: PUSH
64986: LD_INT 43
64988: PUSH
64989: EMPTY
64990: LIST
64991: LIST
64992: LIST
64993: LIST
64994: LIST
64995: LIST
64996: LIST
64997: LIST
64998: LIST
64999: LIST
65000: PUSH
65001: FOR_IN
65002: IFFALSE 65018
// SetAreaMapShow ( i , 1 ) ;
65004: LD_VAR 0 2
65008: PPUSH
65009: LD_INT 1
65011: PPUSH
65012: CALL_OW 424
65016: GO 65001
65018: POP
65019: POP
// SetAreaMapShow ( base9_mark , 5 ) ;
65020: LD_INT 42
65022: PPUSH
65023: LD_INT 5
65025: PPUSH
65026: CALL_OW 424
// SetAreaMapShow ( base10_mark , 5 ) ;
65030: LD_INT 43
65032: PPUSH
65033: LD_INT 5
65035: PPUSH
65036: CALL_OW 424
// wait ( 0 0$0.5 ) ;
65040: LD_INT 18
65042: PPUSH
65043: CALL_OW 67
// Query ( destruction_msg ) ;
65047: LD_STRING destruction_msg
65049: PPUSH
65050: CALL_OW 97
// end ;
65054: LD_VAR 0 1
65058: RET
// every 0 0$2 do var i , temp ;
65059: GO 65061
65061: DISABLE
65062: LD_INT 0
65064: PPUSH
65065: PPUSH
// begin temp = isdrivenby ( unitfilter ( player_forces , [ f_weapon , ar_control_tower ] ) [ 1 ] ) ;
65066: LD_ADDR_VAR 0 2
65070: PUSH
65071: LD_EXP 174
65075: PPUSH
65076: LD_INT 34
65078: PUSH
65079: LD_INT 31
65081: PUSH
65082: EMPTY
65083: LIST
65084: LIST
65085: PPUSH
65086: CALL_OW 72
65090: PUSH
65091: LD_INT 1
65093: ARRAY
65094: PPUSH
65095: CALL_OW 311
65099: ST_TO_ADDR
// for i = 1 to player_forces do
65100: LD_ADDR_VAR 0 1
65104: PUSH
65105: DOUBLE
65106: LD_INT 1
65108: DEC
65109: ST_TO_ADDR
65110: LD_EXP 174
65114: PUSH
65115: FOR_TO
65116: IFFALSE 65293
// begin repeat wait ( 0 0$1 ) ;
65118: LD_INT 35
65120: PPUSH
65121: CALL_OW 67
// placeunitarea ( player_forces [ i ] , player_start_area , false ) ;
65125: LD_EXP 174
65129: PUSH
65130: LD_VAR 0 1
65134: ARRAY
65135: PPUSH
65136: LD_INT 19
65138: PPUSH
65139: LD_INT 0
65141: PPUSH
65142: CALL_OW 49
// until isplaced ( player_forces [ i ] ) ;
65146: LD_EXP 174
65150: PUSH
65151: LD_VAR 0 1
65155: ARRAY
65156: PPUSH
65157: CALL_OW 305
65161: IFFALSE 65118
// if getcontrol ( player_forces [ i ] ) = control_remote then
65163: LD_EXP 174
65167: PUSH
65168: LD_VAR 0 1
65172: ARRAY
65173: PPUSH
65174: CALL_OW 263
65178: PUSH
65179: LD_INT 2
65181: EQUAL
65182: IFFALSE 65204
// linkvehicletohuman ( player_forces [ i ] , temp ) ;
65184: LD_EXP 174
65188: PUSH
65189: LD_VAR 0 1
65193: ARRAY
65194: PPUSH
65195: LD_VAR 0 2
65199: PPUSH
65200: CALL_OW 53
// if i < 5 then
65204: LD_VAR 0 1
65208: PUSH
65209: LD_INT 5
65211: LESS
65212: IFFALSE 65237
// commovexy ( player_forces [ i ] , 21 , 18 ) else
65214: LD_EXP 174
65218: PUSH
65219: LD_VAR 0 1
65223: ARRAY
65224: PPUSH
65225: LD_INT 21
65227: PPUSH
65228: LD_INT 18
65230: PPUSH
65231: CALL_OW 111
65235: GO 65291
// if i < 10 then
65237: LD_VAR 0 1
65241: PUSH
65242: LD_INT 10
65244: LESS
65245: IFFALSE 65270
// commovexy ( player_forces [ i ] , 18 , 22 ) else
65247: LD_EXP 174
65251: PUSH
65252: LD_VAR 0 1
65256: ARRAY
65257: PPUSH
65258: LD_INT 18
65260: PPUSH
65261: LD_INT 22
65263: PPUSH
65264: CALL_OW 111
65268: GO 65291
// commovexy ( player_forces [ i ] , 20 , 8 ) ;
65270: LD_EXP 174
65274: PUSH
65275: LD_VAR 0 1
65279: ARRAY
65280: PPUSH
65281: LD_INT 20
65283: PPUSH
65284: LD_INT 8
65286: PPUSH
65287: CALL_OW 111
// end ;
65291: GO 65115
65293: POP
65294: POP
// enable ( 3 ) ;
65295: LD_INT 3
65297: ENABLE_MARKED
// end ;
65298: PPOPN 2
65300: END
// every 1 do
65301: GO 65303
65303: DISABLE
// begin if base_spawn_delay < 10 then
65304: LD_EXP 173
65308: PUSH
65309: LD_INT 10
65311: LESS
65312: IFFALSE 65322
// base_spawn_delay = 2 ;
65314: LD_ADDR_EXP 173
65318: PUSH
65319: LD_INT 2
65321: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65322: LD_INT 350
65324: PPUSH
65325: CALL_OW 67
// if base_spawn_delay < 10 then
65329: LD_EXP 173
65333: PUSH
65334: LD_INT 10
65336: LESS
65337: IFFALSE 65347
// base_spawn_delay = 3 ;
65339: LD_ADDR_EXP 173
65343: PUSH
65344: LD_INT 3
65346: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65347: LD_INT 350
65349: PPUSH
65350: CALL_OW 67
// if base_spawn_delay < 10 then
65354: LD_EXP 173
65358: PUSH
65359: LD_INT 10
65361: LESS
65362: IFFALSE 65372
// base_spawn_delay = 4 ;
65364: LD_ADDR_EXP 173
65368: PUSH
65369: LD_INT 4
65371: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65372: LD_INT 350
65374: PPUSH
65375: CALL_OW 67
// if base_spawn_delay < 10 then
65379: LD_EXP 173
65383: PUSH
65384: LD_INT 10
65386: LESS
65387: IFFALSE 65397
// base_spawn_delay = 5 ;
65389: LD_ADDR_EXP 173
65393: PUSH
65394: LD_INT 5
65396: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65397: LD_INT 350
65399: PPUSH
65400: CALL_OW 67
// if base_spawn_delay < 10 then
65404: LD_EXP 173
65408: PUSH
65409: LD_INT 10
65411: LESS
65412: IFFALSE 65422
// base_spawn_delay = 6 ;
65414: LD_ADDR_EXP 173
65418: PUSH
65419: LD_INT 6
65421: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65422: LD_INT 350
65424: PPUSH
65425: CALL_OW 67
// if base_spawn_delay < 10 then
65429: LD_EXP 173
65433: PUSH
65434: LD_INT 10
65436: LESS
65437: IFFALSE 65447
// base_spawn_delay = 7 ;
65439: LD_ADDR_EXP 173
65443: PUSH
65444: LD_INT 7
65446: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65447: LD_INT 350
65449: PPUSH
65450: CALL_OW 67
// if base_spawn_delay < 10 then
65454: LD_EXP 173
65458: PUSH
65459: LD_INT 10
65461: LESS
65462: IFFALSE 65472
// base_spawn_delay = 8 ;
65464: LD_ADDR_EXP 173
65468: PUSH
65469: LD_INT 8
65471: ST_TO_ADDR
// wait ( 0 0$10 ) ;
65472: LD_INT 350
65474: PPUSH
65475: CALL_OW 67
// if base_spawn_delay < 10 then
65479: LD_EXP 173
65483: PUSH
65484: LD_INT 10
65486: LESS
65487: IFFALSE 65497
// base_spawn_delay = 9 ;
65489: LD_ADDR_EXP 173
65493: PUSH
65494: LD_INT 9
65496: ST_TO_ADDR
// end ;
65497: END
// every 0 0$0.5 trigger intro_centering = 1 do
65498: LD_EXP 175
65502: PUSH
65503: LD_INT 1
65505: EQUAL
65506: IFFALSE 65579
65508: GO 65510
65510: DISABLE
// begin centeronxy ( 110 , 128 ) ;
65511: LD_INT 110
65513: PPUSH
65514: LD_INT 128
65516: PPUSH
65517: CALL_OW 84
// wait ( 0 0$2 ) ;
65521: LD_INT 70
65523: PPUSH
65524: CALL_OW 67
// if intro_centering = 2 then
65528: LD_EXP 175
65532: PUSH
65533: LD_INT 2
65535: EQUAL
65536: IFFALSE 65540
// exit ;
65538: GO 65579
// centeronxy ( 215 , 140 ) ;
65540: LD_INT 215
65542: PPUSH
65543: LD_INT 140
65545: PPUSH
65546: CALL_OW 84
// wait ( 0 0$2 ) ;
65550: LD_INT 70
65552: PPUSH
65553: CALL_OW 67
// if intro_centering = 2 then
65557: LD_EXP 175
65561: PUSH
65562: LD_INT 2
65564: EQUAL
65565: IFFALSE 65569
// exit ;
65567: GO 65579
// centeronxy ( 194 , 106 ) ;
65569: LD_INT 194
65571: PPUSH
65572: LD_INT 106
65574: PPUSH
65575: CALL_OW 84
// end ;
65579: END
// every 0 0$0.5 trigger getside ( snake ) = 5 do
65580: LD_EXP 26
65584: PPUSH
65585: CALL_OW 255
65589: PUSH
65590: LD_INT 5
65592: EQUAL
65593: IFFALSE 65646
65595: GO 65597
65597: DISABLE
// begin comagressivemove ( Snake , 11 , 1 ) ;
65598: LD_EXP 26
65602: PPUSH
65603: LD_INT 11
65605: PPUSH
65606: LD_INT 1
65608: PPUSH
65609: CALL_OW 114
// if getdistunitxy ( Snake , 11 , 1 ) < 3 then
65613: LD_EXP 26
65617: PPUSH
65618: LD_INT 11
65620: PPUSH
65621: LD_INT 1
65623: PPUSH
65624: CALL_OW 297
65628: PUSH
65629: LD_INT 3
65631: LESS
65632: IFFALSE 65645
// begin removeunit ( Snake ) ;
65634: LD_EXP 26
65638: PPUSH
65639: CALL_OW 64
// exit ;
65643: GO 65646
// end ; enable ;
65645: ENABLE
// end ;
65646: END
// every 0 0$1 trigger help_variant = 2 marked 1 do var i , temp ;
65647: LD_EXP 2
65651: PUSH
65652: LD_INT 2
65654: EQUAL
65655: IFFALSE 66036
65657: GO 65659
65659: DISABLE
65660: LD_INT 0
65662: PPUSH
65663: PPUSH
// begin repeat wait ( 0 0$1 ) ;
65664: LD_INT 35
65666: PPUSH
65667: CALL_OW 67
// for i in filterallunits ( [ f_side , 8 ] ) do
65671: LD_ADDR_VAR 0 1
65675: PUSH
65676: LD_INT 22
65678: PUSH
65679: LD_INT 8
65681: PUSH
65682: EMPTY
65683: LIST
65684: LIST
65685: PPUSH
65686: CALL_OW 69
65690: PUSH
65691: FOR_IN
65692: IFFALSE 65718
// if see ( 2 , i ) then
65694: LD_INT 2
65696: PPUSH
65697: LD_VAR 0 1
65701: PPUSH
65702: CALL_OW 292
65706: IFFALSE 65716
// temp = 1 ;
65708: LD_ADDR_VAR 0 2
65712: PUSH
65713: LD_INT 1
65715: ST_TO_ADDR
65716: GO 65691
65718: POP
65719: POP
// if temp > 0 then
65720: LD_VAR 0 2
65724: PUSH
65725: LD_INT 0
65727: GREATER
65728: IFFALSE 65732
// break ;
65730: GO 65742
// until tick > 5 5$0 ;
65732: LD_OWVAR 1
65736: PUSH
65737: LD_INT 10500
65739: GREATER
65740: IFFALSE 65664
// DialogueOn ;
65742: CALL_OW 6
// SayRadio ( Gordon , G_Go1 ) ;
65746: LD_EXP 27
65750: PPUSH
65751: LD_STRING G_Go1
65753: PPUSH
65754: CALL_OW 94
// if LoadVariable ( Traitors_leader_is_Gordon_10 , 0 ) = 1 or testing = true then
65758: LD_STRING Traitors_leader_is_Gordon_10
65760: PPUSH
65761: LD_INT 0
65763: PPUSH
65764: CALL_OW 30
65768: PUSH
65769: LD_INT 1
65771: EQUAL
65772: PUSH
65773: LD_EXP 1
65777: PUSH
65778: LD_INT 1
65780: EQUAL
65781: OR
65782: IFFALSE 65798
// Say ( Heike , G_He1 ) else
65784: LD_EXP 12
65788: PPUSH
65789: LD_STRING G_He1
65791: PPUSH
65792: CALL_OW 88
65796: GO 65810
// Say ( Heike , G_He1_not_Gordon ) ;
65798: LD_EXP 12
65802: PPUSH
65803: LD_STRING G_He1_not_Gordon
65805: PPUSH
65806: CALL_OW 88
// SayRadio ( Gordon , G_Go2 ) ;
65810: LD_EXP 27
65814: PPUSH
65815: LD_STRING G_Go2
65817: PPUSH
65818: CALL_OW 94
// Say ( Heike , G_He2 ) ;
65822: LD_EXP 12
65826: PPUSH
65827: LD_STRING G_He2
65829: PPUSH
65830: CALL_OW 88
// SayRadio ( Gordon , G_Go3 ) ;
65834: LD_EXP 27
65838: PPUSH
65839: LD_STRING G_Go3
65841: PPUSH
65842: CALL_OW 94
// CenterOnXy ( 97 , 66 ) ;
65846: LD_INT 97
65848: PPUSH
65849: LD_INT 66
65851: PPUSH
65852: CALL_OW 84
// viewmineatpos ( 118 , 72 , 2 ) ;
65856: LD_INT 118
65858: PPUSH
65859: LD_INT 72
65861: PPUSH
65862: LD_INT 2
65864: PPUSH
65865: CALL_OW 457
// viewmineatpos ( 118 , 73 , 2 ) ;
65869: LD_INT 118
65871: PPUSH
65872: LD_INT 73
65874: PPUSH
65875: LD_INT 2
65877: PPUSH
65878: CALL_OW 457
// viewmineatpos ( 76 , 67 , 2 ) ;
65882: LD_INT 76
65884: PPUSH
65885: LD_INT 67
65887: PPUSH
65888: LD_INT 2
65890: PPUSH
65891: CALL_OW 457
// viewmineatpos ( 79 , 67 , 2 ) ;
65895: LD_INT 79
65897: PPUSH
65898: LD_INT 67
65900: PPUSH
65901: LD_INT 2
65903: PPUSH
65904: CALL_OW 457
// viewmineatpos ( 100 , 68 , 2 ) ;
65908: LD_INT 100
65910: PPUSH
65911: LD_INT 68
65913: PPUSH
65914: LD_INT 2
65916: PPUSH
65917: CALL_OW 457
// viewmineatpos ( 81 , 53 , 2 ) ;
65921: LD_INT 81
65923: PPUSH
65924: LD_INT 53
65926: PPUSH
65927: LD_INT 2
65929: PPUSH
65930: CALL_OW 457
// viewmineatpos ( 104 , 65 , 2 ) ;
65934: LD_INT 104
65936: PPUSH
65937: LD_INT 65
65939: PPUSH
65940: LD_INT 2
65942: PPUSH
65943: CALL_OW 457
// RevealFogArea ( 2 , reveal_legion ) ;
65947: LD_INT 2
65949: PPUSH
65950: LD_INT 25
65952: PPUSH
65953: CALL_OW 332
// SayRadio ( Gordon , G_Go4 ) ;
65957: LD_EXP 27
65961: PPUSH
65962: LD_STRING G_Go4
65964: PPUSH
65965: CALL_OW 94
// setside ( filterallunits ( [ f_side , 8 ] ) , 2 ) ;
65969: LD_INT 22
65971: PUSH
65972: LD_INT 8
65974: PUSH
65975: EMPTY
65976: LIST
65977: LIST
65978: PPUSH
65979: CALL_OW 69
65983: PPUSH
65984: LD_INT 2
65986: PPUSH
65987: CALL_OW 235
// DialogueOff ;
65991: CALL_OW 7
// wait ( 0 0$0.2 ) ;
65995: LD_INT 7
65997: PPUSH
65998: CALL_OW 67
// Query ( Mines_msg ) ;
66002: LD_STRING Mines_msg
66004: PPUSH
66005: CALL_OW 97
// minesready = 1 ;
66009: LD_ADDR_EXP 176
66013: PUSH
66014: LD_INT 1
66016: ST_TO_ADDR
// wait ( 0 0$3 ) ;
66017: LD_INT 105
66019: PPUSH
66020: CALL_OW 67
// Say ( Heike , G_He3 ) ;
66024: LD_EXP 12
66028: PPUSH
66029: LD_STRING G_He3
66031: PPUSH
66032: CALL_OW 88
// end ;
66036: PPOPN 2
66038: END
// every 22 22$30 trigger all_variant = 1 marked 1 do
66039: LD_EXP 3
66043: PUSH
66044: LD_INT 1
66046: EQUAL
66047: IFFALSE 66154
66049: GO 66051
66051: DISABLE
// begin DialogueOn ;
66052: CALL_OW 6
// SayRadio ( Alliance_sol , C_Al1 ) ;
66056: LD_EXP 28
66060: PPUSH
66061: LD_STRING C_Al1
66063: PPUSH
66064: CALL_OW 94
// Say ( Heike , C_He1 ) ;
66068: LD_EXP 12
66072: PPUSH
66073: LD_STRING C_He1
66075: PPUSH
66076: CALL_OW 88
// SayRadio ( Alliance_sol , C_Al2 ) ;
66080: LD_EXP 28
66084: PPUSH
66085: LD_STRING C_Al2
66087: PPUSH
66088: CALL_OW 94
// SayRadio ( Alliance_sol , C_Al3 ) ;
66092: LD_EXP 28
66096: PPUSH
66097: LD_STRING C_Al3
66099: PPUSH
66100: CALL_OW 94
// Say ( Heike , C_He2 ) ;
66104: LD_EXP 12
66108: PPUSH
66109: LD_STRING C_He2
66111: PPUSH
66112: CALL_OW 88
// SayRadio ( Alliance_sol , C_Al4 ) ;
66116: LD_EXP 28
66120: PPUSH
66121: LD_STRING C_Al4
66123: PPUSH
66124: CALL_OW 94
// SayRadio ( Alliance_sol , C_Al5 ) ;
66128: LD_EXP 28
66132: PPUSH
66133: LD_STRING C_Al5
66135: PPUSH
66136: CALL_OW 94
// DialogueOff ;
66140: CALL_OW 7
// ConvoyTimer = tick ;
66144: LD_ADDR_EXP 159
66148: PUSH
66149: LD_OWVAR 1
66153: ST_TO_ADDR
// end ;
66154: END
// every 0 0$1 trigger deserting > 0 do
66155: LD_EXP 152
66159: PUSH
66160: LD_INT 0
66162: GREATER
66163: IFFALSE 66207
66165: GO 66167
66167: DISABLE
// begin wait ( rand ( 1 1$30 , 2 2$0 ) ) ;
66168: LD_INT 3150
66170: PPUSH
66171: LD_INT 4200
66173: PPUSH
66174: CALL_OW 12
66178: PPUSH
66179: CALL_OW 67
// SayRadio ( Snake , C_Sn1 ) ;
66183: LD_EXP 26
66187: PPUSH
66188: LD_STRING C_Sn1
66190: PPUSH
66191: CALL_OW 94
// Say ( Heike , C_He3 ) ;
66195: LD_EXP 12
66199: PPUSH
66200: LD_STRING C_He3
66202: PPUSH
66203: CALL_OW 88
// end ;
66207: END
// every 45 45$0 trigger GetSide ( ruteleprt ) = 3 and not teleporter_captured do
66208: LD_INT 10
66210: PPUSH
66211: CALL_OW 255
66215: PUSH
66216: LD_INT 3
66218: EQUAL
66219: PUSH
66220: LD_EXP 114
66224: NOT
66225: AND
66226: IFFALSE 66239
66228: GO 66230
66230: DISABLE
// begin Teleport_status = 0 ;
66231: LD_ADDR_EXP 112
66235: PUSH
66236: LD_INT 0
66238: ST_TO_ADDR
// end ;
66239: END
// every 0 0$1 trigger unitfilter ( ai_soldiers [ 5 ] , [ f_ok ] ) = 0 marked 2 do var temp , tech , i , random ;
66240: LD_EXP 30
66244: PUSH
66245: LD_INT 5
66247: ARRAY
66248: PPUSH
66249: LD_INT 50
66251: PUSH
66252: EMPTY
66253: LIST
66254: PPUSH
66255: CALL_OW 72
66259: PUSH
66260: LD_INT 0
66262: EQUAL
66263: IFFALSE 67003
66265: GO 66267
66267: DISABLE
66268: LD_INT 0
66270: PPUSH
66271: PPUSH
66272: PPUSH
66273: PPUSH
// begin temp = [ Olaf , Sonya , Khattam , Aviradze , Evelyn , Swansson , Dwayne , Makise ] diff 0 ;
66274: LD_ADDR_VAR 0 1
66278: PUSH
66279: LD_EXP 13
66283: PUSH
66284: LD_EXP 14
66288: PUSH
66289: LD_EXP 18
66293: PUSH
66294: LD_EXP 19
66298: PUSH
66299: LD_EXP 20
66303: PUSH
66304: LD_EXP 21
66308: PUSH
66309: LD_EXP 22
66313: PUSH
66314: LD_EXP 23
66318: PUSH
66319: EMPTY
66320: LIST
66321: LIST
66322: LIST
66323: LIST
66324: LIST
66325: LIST
66326: LIST
66327: LIST
66328: PUSH
66329: LD_INT 0
66331: DIFF
66332: ST_TO_ADDR
// if temp > 0 then
66333: LD_VAR 0 1
66337: PUSH
66338: LD_INT 0
66340: GREATER
66341: IFFALSE 66369
// tech = temp [ rand ( 1 , temp ) ] else
66343: LD_ADDR_VAR 0 2
66347: PUSH
66348: LD_VAR 0 1
66352: PUSH
66353: LD_INT 1
66355: PPUSH
66356: LD_VAR 0 1
66360: PPUSH
66361: CALL_OW 12
66365: ARRAY
66366: ST_TO_ADDR
66367: GO 66486
// begin tech = filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) [ 1 ] ;
66369: LD_ADDR_VAR 0 2
66373: PUSH
66374: LD_INT 22
66376: PUSH
66377: LD_INT 2
66379: PUSH
66380: EMPTY
66381: LIST
66382: LIST
66383: PUSH
66384: LD_INT 21
66386: PUSH
66387: LD_INT 1
66389: PUSH
66390: EMPTY
66391: LIST
66392: LIST
66393: PUSH
66394: EMPTY
66395: LIST
66396: LIST
66397: PPUSH
66398: CALL_OW 69
66402: PUSH
66403: LD_INT 1
66405: ARRAY
66406: ST_TO_ADDR
// for i in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
66407: LD_ADDR_VAR 0 3
66411: PUSH
66412: LD_INT 22
66414: PUSH
66415: LD_INT 2
66417: PUSH
66418: EMPTY
66419: LIST
66420: LIST
66421: PUSH
66422: LD_INT 21
66424: PUSH
66425: LD_INT 1
66427: PUSH
66428: EMPTY
66429: LIST
66430: LIST
66431: PUSH
66432: EMPTY
66433: LIST
66434: LIST
66435: PPUSH
66436: CALL_OW 69
66440: PUSH
66441: FOR_IN
66442: IFFALSE 66484
// if GetSkill ( i , skill_scientistic ) > GetSkill ( tech , skill_scientistic ) then
66444: LD_VAR 0 3
66448: PPUSH
66449: LD_INT 4
66451: PPUSH
66452: CALL_OW 259
66456: PUSH
66457: LD_VAR 0 2
66461: PPUSH
66462: LD_INT 4
66464: PPUSH
66465: CALL_OW 259
66469: GREATER
66470: IFFALSE 66482
// tech = i ;
66472: LD_ADDR_VAR 0 2
66476: PUSH
66477: LD_VAR 0 3
66481: ST_TO_ADDR
66482: GO 66441
66484: POP
66485: POP
// end ; if not tech in [ Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Khattam , Aviradze , Evelyn , Swansson , Dwayne , Makise ] then
66486: LD_VAR 0 2
66490: PUSH
66491: LD_EXP 12
66495: PUSH
66496: LD_EXP 13
66500: PUSH
66501: LD_EXP 14
66505: PUSH
66506: LD_EXP 15
66510: PUSH
66511: LD_EXP 16
66515: PUSH
66516: LD_EXP 17
66520: PUSH
66521: LD_EXP 18
66525: PUSH
66526: LD_EXP 19
66530: PUSH
66531: LD_EXP 20
66535: PUSH
66536: LD_EXP 21
66540: PUSH
66541: LD_EXP 22
66545: PUSH
66546: LD_EXP 23
66550: PUSH
66551: EMPTY
66552: LIST
66553: LIST
66554: LIST
66555: LIST
66556: LIST
66557: LIST
66558: LIST
66559: LIST
66560: LIST
66561: LIST
66562: LIST
66563: LIST
66564: IN
66565: NOT
66566: IFFALSE 66578
// random = tech ;
66568: LD_ADDR_VAR 0 4
66572: PUSH
66573: LD_VAR 0 2
66577: ST_TO_ADDR
// DialogueOn ;
66578: CALL_OW 6
// if tech = Heike then
66582: LD_VAR 0 2
66586: PUSH
66587: LD_EXP 12
66591: EQUAL
66592: IFFALSE 66608
// Say ( Heike , Tr1_Tech_He ) else
66594: LD_EXP 12
66598: PPUSH
66599: LD_STRING Tr1_Tech_He
66601: PPUSH
66602: CALL_OW 88
66606: GO 66955
// begin Say ( Heike , Tr1_He1 ) ;
66608: LD_EXP 12
66612: PPUSH
66613: LD_STRING Tr1_He1
66615: PPUSH
66616: CALL_OW 88
// case tech of Olaf :
66620: LD_VAR 0 2
66624: PUSH
66625: LD_EXP 13
66629: DOUBLE
66630: EQUAL
66631: IFTRUE 66635
66633: GO 66650
66635: POP
// Say ( Olaf , Tr1_Tech_Olaf ) ; Sonya :
66636: LD_EXP 13
66640: PPUSH
66641: LD_STRING Tr1_Tech_Olaf
66643: PPUSH
66644: CALL_OW 88
66648: GO 66955
66650: LD_EXP 14
66654: DOUBLE
66655: EQUAL
66656: IFTRUE 66660
66658: GO 66675
66660: POP
// Say ( Sonya , Tr1_Tech_So ) ; Oswald :
66661: LD_EXP 14
66665: PPUSH
66666: LD_STRING Tr1_Tech_So
66668: PPUSH
66669: CALL_OW 88
66673: GO 66955
66675: LD_EXP 15
66679: DOUBLE
66680: EQUAL
66681: IFTRUE 66685
66683: GO 66700
66685: POP
// Say ( Oswald , Tr1_Tech_Os ) ; Ralph :
66686: LD_EXP 15
66690: PPUSH
66691: LD_STRING Tr1_Tech_Os
66693: PPUSH
66694: CALL_OW 88
66698: GO 66955
66700: LD_EXP 16
66704: DOUBLE
66705: EQUAL
66706: IFTRUE 66710
66708: GO 66725
66710: POP
// Say ( Ralph , Tr1_Tech_Ra ) ; Kowalski :
66711: LD_EXP 16
66715: PPUSH
66716: LD_STRING Tr1_Tech_Ra
66718: PPUSH
66719: CALL_OW 88
66723: GO 66955
66725: LD_EXP 17
66729: DOUBLE
66730: EQUAL
66731: IFTRUE 66735
66733: GO 66750
66735: POP
// Say ( Kowalski , Tr1_Tech_Ko ) ; Khattam :
66736: LD_EXP 17
66740: PPUSH
66741: LD_STRING Tr1_Tech_Ko
66743: PPUSH
66744: CALL_OW 88
66748: GO 66955
66750: LD_EXP 18
66754: DOUBLE
66755: EQUAL
66756: IFTRUE 66760
66758: GO 66775
66760: POP
// Say ( Khattam , Tr1_Tech_Kh ) ; Aviradze :
66761: LD_EXP 18
66765: PPUSH
66766: LD_STRING Tr1_Tech_Kh
66768: PPUSH
66769: CALL_OW 88
66773: GO 66955
66775: LD_EXP 19
66779: DOUBLE
66780: EQUAL
66781: IFTRUE 66785
66783: GO 66800
66785: POP
// Say ( Aviradze , Tr1_Tech_Av ) ; Evelyn :
66786: LD_EXP 19
66790: PPUSH
66791: LD_STRING Tr1_Tech_Av
66793: PPUSH
66794: CALL_OW 88
66798: GO 66955
66800: LD_EXP 20
66804: DOUBLE
66805: EQUAL
66806: IFTRUE 66810
66808: GO 66825
66810: POP
// Say ( Evelyn , Tr1_Tech_Ev ) ; Swansson :
66811: LD_EXP 20
66815: PPUSH
66816: LD_STRING Tr1_Tech_Ev
66818: PPUSH
66819: CALL_OW 88
66823: GO 66955
66825: LD_EXP 21
66829: DOUBLE
66830: EQUAL
66831: IFTRUE 66835
66833: GO 66850
66835: POP
// Say ( Swansson , Tr1_Tech_Sw ) ; Dwayne :
66836: LD_EXP 21
66840: PPUSH
66841: LD_STRING Tr1_Tech_Sw
66843: PPUSH
66844: CALL_OW 88
66848: GO 66955
66850: LD_EXP 22
66854: DOUBLE
66855: EQUAL
66856: IFTRUE 66860
66858: GO 66875
66860: POP
// Say ( Dwayne , Tr1_Tech_Dw ) ; Makise :
66861: LD_EXP 22
66865: PPUSH
66866: LD_STRING Tr1_Tech_Dw
66868: PPUSH
66869: CALL_OW 88
66873: GO 66955
66875: LD_EXP 23
66879: DOUBLE
66880: EQUAL
66881: IFTRUE 66885
66883: GO 66900
66885: POP
// Say ( Makise , Tr1_Tech_Ma ) ; random :
66886: LD_EXP 23
66890: PPUSH
66891: LD_STRING Tr1_Tech_Ma
66893: PPUSH
66894: CALL_OW 88
66898: GO 66955
66900: LD_VAR 0 4
66904: DOUBLE
66905: EQUAL
66906: IFTRUE 66910
66908: GO 66954
66910: POP
// if getsex ( random ) = sex_male then
66911: LD_VAR 0 4
66915: PPUSH
66916: CALL_OW 258
66920: PUSH
66921: LD_INT 1
66923: EQUAL
66924: IFFALSE 66940
// Say ( random , Tr1_Tech_SomeM ) else
66926: LD_VAR 0 4
66930: PPUSH
66931: LD_STRING Tr1_Tech_SomeM
66933: PPUSH
66934: CALL_OW 88
66938: GO 66952
// Say ( random , Tr1_Tech_SomeF ) ; end ;
66940: LD_VAR 0 4
66944: PPUSH
66945: LD_STRING Tr1_Tech_SomeF
66947: PPUSH
66948: CALL_OW 88
66952: GO 66955
66954: POP
// end ; Say ( Heike , Tr1_He2 ) ;
66955: LD_EXP 12
66959: PPUSH
66960: LD_STRING Tr1_He2
66962: PPUSH
66963: CALL_OW 88
// DialogueOff ;
66967: CALL_OW 7
// wait ( 0 0$0.5 ) ;
66971: LD_INT 18
66973: PPUSH
66974: CALL_OW 67
// ChangeMissionObjectives ( teleport2 ) ;
66978: LD_STRING teleport2
66980: PPUSH
66981: CALL_OW 337
// setside ( ruteleprt , 5 ) ;
66985: LD_INT 10
66987: PPUSH
66988: LD_INT 5
66990: PPUSH
66991: CALL_OW 235
// teleporter_captured = true ;
66995: LD_ADDR_EXP 114
66999: PUSH
67000: LD_INT 1
67002: ST_TO_ADDR
// end ;
67003: PPOPN 4
67005: END
// every 0 0$1 trigger Teleportation_test = 1 do var tech , i , temp , random ;
67006: LD_EXP 113
67010: PUSH
67011: LD_INT 1
67013: EQUAL
67014: IFFALSE 67829
67016: GO 67018
67018: DISABLE
67019: LD_INT 0
67021: PPUSH
67022: PPUSH
67023: PPUSH
67024: PPUSH
// begin if Teleport_status = 0 then
67025: LD_EXP 112
67029: PUSH
67030: LD_INT 0
67032: EQUAL
67033: IFFALSE 67079
// begin wait ( 0 0$3 ) ;
67035: LD_INT 105
67037: PPUSH
67038: CALL_OW 67
// Say ( Heike , Tr2_He4 ) ;
67042: LD_EXP 12
67046: PPUSH
67047: LD_STRING Tr2_He4
67049: PPUSH
67050: CALL_OW 88
// Teleport_SaveVariable = - 3 ;
67054: LD_ADDR_EXP 115
67058: PUSH
67059: LD_INT 3
67061: NEG
67062: ST_TO_ADDR
// wait ( 0 0$0.2 ) ;
67063: LD_INT 7
67065: PPUSH
67066: CALL_OW 67
// ChangeMissionObjectives ( teleport4 ) ;
67070: LD_STRING teleport4
67072: PPUSH
67073: CALL_OW 337
// end else
67077: GO 67829
// begin wait ( 0 0$5 ) ;
67079: LD_INT 175
67081: PPUSH
67082: CALL_OW 67
// temp = filterallunits ( [ f_weapon , ar_control_tower ] ) ;
67086: LD_ADDR_VAR 0 3
67090: PUSH
67091: LD_INT 34
67093: PUSH
67094: LD_INT 31
67096: PUSH
67097: EMPTY
67098: LIST
67099: LIST
67100: PPUSH
67101: CALL_OW 69
67105: ST_TO_ADDR
// tech = isdrivenby ( temp [ 1 ] ) ;
67106: LD_ADDR_VAR 0 1
67110: PUSH
67111: LD_VAR 0 3
67115: PUSH
67116: LD_INT 1
67118: ARRAY
67119: PPUSH
67120: CALL_OW 311
67124: ST_TO_ADDR
// if tech = 0 then
67125: LD_VAR 0 1
67129: PUSH
67130: LD_INT 0
67132: EQUAL
67133: IFFALSE 67347
// begin temp = [ Olaf , Sonya , Khattam , Aviradze , Evelyn , Swansson , Dwayne , Makise ] diff 0 ;
67135: LD_ADDR_VAR 0 3
67139: PUSH
67140: LD_EXP 13
67144: PUSH
67145: LD_EXP 14
67149: PUSH
67150: LD_EXP 18
67154: PUSH
67155: LD_EXP 19
67159: PUSH
67160: LD_EXP 20
67164: PUSH
67165: LD_EXP 21
67169: PUSH
67170: LD_EXP 22
67174: PUSH
67175: LD_EXP 23
67179: PUSH
67180: EMPTY
67181: LIST
67182: LIST
67183: LIST
67184: LIST
67185: LIST
67186: LIST
67187: LIST
67188: LIST
67189: PUSH
67190: LD_INT 0
67192: DIFF
67193: ST_TO_ADDR
// if temp > 0 then
67194: LD_VAR 0 3
67198: PUSH
67199: LD_INT 0
67201: GREATER
67202: IFFALSE 67230
// tech = temp [ rand ( 1 , temp ) ] else
67204: LD_ADDR_VAR 0 1
67208: PUSH
67209: LD_VAR 0 3
67213: PUSH
67214: LD_INT 1
67216: PPUSH
67217: LD_VAR 0 3
67221: PPUSH
67222: CALL_OW 12
67226: ARRAY
67227: ST_TO_ADDR
67228: GO 67347
// begin tech = filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) [ 1 ] ;
67230: LD_ADDR_VAR 0 1
67234: PUSH
67235: LD_INT 22
67237: PUSH
67238: LD_INT 2
67240: PUSH
67241: EMPTY
67242: LIST
67243: LIST
67244: PUSH
67245: LD_INT 21
67247: PUSH
67248: LD_INT 1
67250: PUSH
67251: EMPTY
67252: LIST
67253: LIST
67254: PUSH
67255: EMPTY
67256: LIST
67257: LIST
67258: PPUSH
67259: CALL_OW 69
67263: PUSH
67264: LD_INT 1
67266: ARRAY
67267: ST_TO_ADDR
// for i in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
67268: LD_ADDR_VAR 0 2
67272: PUSH
67273: LD_INT 22
67275: PUSH
67276: LD_INT 2
67278: PUSH
67279: EMPTY
67280: LIST
67281: LIST
67282: PUSH
67283: LD_INT 21
67285: PUSH
67286: LD_INT 1
67288: PUSH
67289: EMPTY
67290: LIST
67291: LIST
67292: PUSH
67293: EMPTY
67294: LIST
67295: LIST
67296: PPUSH
67297: CALL_OW 69
67301: PUSH
67302: FOR_IN
67303: IFFALSE 67345
// if GetSkill ( i , skill_scientistic ) > GetSkill ( tech , skill_scientistic ) then
67305: LD_VAR 0 2
67309: PPUSH
67310: LD_INT 4
67312: PPUSH
67313: CALL_OW 259
67317: PUSH
67318: LD_VAR 0 1
67322: PPUSH
67323: LD_INT 4
67325: PPUSH
67326: CALL_OW 259
67330: GREATER
67331: IFFALSE 67343
// tech = i ;
67333: LD_ADDR_VAR 0 1
67337: PUSH
67338: LD_VAR 0 2
67342: ST_TO_ADDR
67343: GO 67302
67345: POP
67346: POP
// end ; end ; if not tech in [ Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Khattam , Aviradze , Evelyn , Swansson , Dwayne , Makise ] then
67347: LD_VAR 0 1
67351: PUSH
67352: LD_EXP 12
67356: PUSH
67357: LD_EXP 13
67361: PUSH
67362: LD_EXP 14
67366: PUSH
67367: LD_EXP 15
67371: PUSH
67372: LD_EXP 16
67376: PUSH
67377: LD_EXP 17
67381: PUSH
67382: LD_EXP 18
67386: PUSH
67387: LD_EXP 19
67391: PUSH
67392: LD_EXP 20
67396: PUSH
67397: LD_EXP 21
67401: PUSH
67402: LD_EXP 22
67406: PUSH
67407: LD_EXP 23
67411: PUSH
67412: EMPTY
67413: LIST
67414: LIST
67415: LIST
67416: LIST
67417: LIST
67418: LIST
67419: LIST
67420: LIST
67421: LIST
67422: LIST
67423: LIST
67424: LIST
67425: IN
67426: NOT
67427: IFFALSE 67439
// random = tech ;
67429: LD_ADDR_VAR 0 4
67433: PUSH
67434: LD_VAR 0 1
67438: ST_TO_ADDR
// Say ( Heike , Tr2_He2 ) ;
67439: LD_EXP 12
67443: PPUSH
67444: LD_STRING Tr2_He2
67446: PPUSH
67447: CALL_OW 88
// case tech of Olaf :
67451: LD_VAR 0 1
67455: PUSH
67456: LD_EXP 13
67460: DOUBLE
67461: EQUAL
67462: IFTRUE 67466
67464: GO 67481
67466: POP
// Say ( Olaf , Tr2_Tech_Olaf ) ; Sonya :
67467: LD_EXP 13
67471: PPUSH
67472: LD_STRING Tr2_Tech_Olaf
67474: PPUSH
67475: CALL_OW 88
67479: GO 67786
67481: LD_EXP 14
67485: DOUBLE
67486: EQUAL
67487: IFTRUE 67491
67489: GO 67506
67491: POP
// Say ( Sonya , Tr2_Tech_So ) ; Oswald :
67492: LD_EXP 14
67496: PPUSH
67497: LD_STRING Tr2_Tech_So
67499: PPUSH
67500: CALL_OW 88
67504: GO 67786
67506: LD_EXP 15
67510: DOUBLE
67511: EQUAL
67512: IFTRUE 67516
67514: GO 67531
67516: POP
// Say ( Oswald , Tr2_Tech_Os ) ; Ralph :
67517: LD_EXP 15
67521: PPUSH
67522: LD_STRING Tr2_Tech_Os
67524: PPUSH
67525: CALL_OW 88
67529: GO 67786
67531: LD_EXP 16
67535: DOUBLE
67536: EQUAL
67537: IFTRUE 67541
67539: GO 67556
67541: POP
// Say ( Ralph , Tr2_Tech_Ra ) ; Kowalski :
67542: LD_EXP 16
67546: PPUSH
67547: LD_STRING Tr2_Tech_Ra
67549: PPUSH
67550: CALL_OW 88
67554: GO 67786
67556: LD_EXP 17
67560: DOUBLE
67561: EQUAL
67562: IFTRUE 67566
67564: GO 67581
67566: POP
// Say ( Kowalski , Tr2_Tech_Ko ) ; Khattam :
67567: LD_EXP 17
67571: PPUSH
67572: LD_STRING Tr2_Tech_Ko
67574: PPUSH
67575: CALL_OW 88
67579: GO 67786
67581: LD_EXP 18
67585: DOUBLE
67586: EQUAL
67587: IFTRUE 67591
67589: GO 67606
67591: POP
// Say ( Khattam , Tr2_Tech_Kh ) ; Aviradze :
67592: LD_EXP 18
67596: PPUSH
67597: LD_STRING Tr2_Tech_Kh
67599: PPUSH
67600: CALL_OW 88
67604: GO 67786
67606: LD_EXP 19
67610: DOUBLE
67611: EQUAL
67612: IFTRUE 67616
67614: GO 67631
67616: POP
// Say ( Aviradze , Tr2_Tech_Av ) ; Evelyn :
67617: LD_EXP 19
67621: PPUSH
67622: LD_STRING Tr2_Tech_Av
67624: PPUSH
67625: CALL_OW 88
67629: GO 67786
67631: LD_EXP 20
67635: DOUBLE
67636: EQUAL
67637: IFTRUE 67641
67639: GO 67656
67641: POP
// Say ( Evelyn , Tr2_Tech_Ev ) ; Swansson :
67642: LD_EXP 20
67646: PPUSH
67647: LD_STRING Tr2_Tech_Ev
67649: PPUSH
67650: CALL_OW 88
67654: GO 67786
67656: LD_EXP 21
67660: DOUBLE
67661: EQUAL
67662: IFTRUE 67666
67664: GO 67681
67666: POP
// Say ( Swansson , Tr2_Tech_Sw ) ; Dwayne :
67667: LD_EXP 21
67671: PPUSH
67672: LD_STRING Tr2_Tech_Sw
67674: PPUSH
67675: CALL_OW 88
67679: GO 67786
67681: LD_EXP 22
67685: DOUBLE
67686: EQUAL
67687: IFTRUE 67691
67689: GO 67706
67691: POP
// Say ( Dwayne , Tr2_Tech_Dw ) ; Makise :
67692: LD_EXP 22
67696: PPUSH
67697: LD_STRING Tr2_Tech_Dw
67699: PPUSH
67700: CALL_OW 88
67704: GO 67786
67706: LD_EXP 23
67710: DOUBLE
67711: EQUAL
67712: IFTRUE 67716
67714: GO 67731
67716: POP
// Say ( Makise , Tr2_Tech_Ma ) ; random :
67717: LD_EXP 23
67721: PPUSH
67722: LD_STRING Tr2_Tech_Ma
67724: PPUSH
67725: CALL_OW 88
67729: GO 67786
67731: LD_VAR 0 4
67735: DOUBLE
67736: EQUAL
67737: IFTRUE 67741
67739: GO 67785
67741: POP
// if getsex ( random ) = sex_male then
67742: LD_VAR 0 4
67746: PPUSH
67747: CALL_OW 258
67751: PUSH
67752: LD_INT 1
67754: EQUAL
67755: IFFALSE 67771
// Say ( random , Tr2_Tech_SomeM ) else
67757: LD_VAR 0 4
67761: PPUSH
67762: LD_STRING Tr2_Tech_SomeM
67764: PPUSH
67765: CALL_OW 88
67769: GO 67783
// Say ( random , Tr2_Tech_SomeF ) ; end ;
67771: LD_VAR 0 4
67775: PPUSH
67776: LD_STRING Tr2_Tech_SomeF
67778: PPUSH
67779: CALL_OW 88
67783: GO 67786
67785: POP
// Say ( Heike , Tr2_He3 ) ;
67786: LD_EXP 12
67790: PPUSH
67791: LD_STRING Tr2_He3
67793: PPUSH
67794: CALL_OW 88
// wait ( 0 0$0.2 ) ;
67798: LD_INT 7
67800: PPUSH
67801: CALL_OW 67
// ChangeMissionObjectives ( teleport3 ) ;
67805: LD_STRING teleport3
67807: PPUSH
67808: CALL_OW 337
// Teleport_status = 2 ;
67812: LD_ADDR_EXP 112
67816: PUSH
67817: LD_INT 2
67819: ST_TO_ADDR
// Teleport_SaveVariable = - 1 ;
67820: LD_ADDR_EXP 115
67824: PUSH
67825: LD_INT 1
67827: NEG
67828: ST_TO_ADDR
// end ; end ;
67829: PPOPN 4
67831: END
// every 0 0$1 trigger tick > 35 35$0 and teleport_status > 0 and not 5 in ai_bases do
67832: LD_OWVAR 1
67836: PUSH
67837: LD_INT 73500
67839: GREATER
67840: PUSH
67841: LD_EXP 112
67845: PUSH
67846: LD_INT 0
67848: GREATER
67849: AND
67850: PUSH
67851: LD_INT 5
67853: PUSH
67854: LD_EXP 29
67858: IN
67859: NOT
67860: AND
67861: IFFALSE 67969
67863: GO 67865
67865: DISABLE
// begin repeat wait ( 0 0$1 ) ;
67866: LD_INT 35
67868: PPUSH
67869: CALL_OW 67
// if teleport_status = 3 then
67873: LD_EXP 112
67877: PUSH
67878: LD_INT 3
67880: EQUAL
67881: IFFALSE 67885
// exit ;
67883: GO 67969
// until GetSide ( ruteleprt ) = 3 or GetLives ( ruteleprt ) = 0 ;
67885: LD_INT 10
67887: PPUSH
67888: CALL_OW 255
67892: PUSH
67893: LD_INT 3
67895: EQUAL
67896: PUSH
67897: LD_INT 10
67899: PPUSH
67900: CALL_OW 256
67904: PUSH
67905: LD_INT 0
67907: EQUAL
67908: OR
67909: IFFALSE 67866
// centeronxy ( 137 , 178 ) ;
67911: LD_INT 137
67913: PPUSH
67914: LD_INT 178
67916: PPUSH
67917: CALL_OW 84
// placeseeing ( 137 , 178 , 2 , 4 ) ;
67921: LD_INT 137
67923: PPUSH
67924: LD_INT 178
67926: PPUSH
67927: LD_INT 2
67929: PPUSH
67930: LD_INT 4
67932: PPUSH
67933: CALL_OW 330
// Say ( Heike , Tr2_He5 ) ;
67937: LD_EXP 12
67941: PPUSH
67942: LD_STRING Tr2_He5
67944: PPUSH
67945: CALL_OW 88
// wait ( 0 0$10 ) ;
67949: LD_INT 350
67951: PPUSH
67952: CALL_OW 67
// removeseeing ( 137 , 178 , 2 ) ;
67956: LD_INT 137
67958: PPUSH
67959: LD_INT 178
67961: PPUSH
67962: LD_INT 2
67964: PPUSH
67965: CALL_OW 331
// end ;
67969: END
// every 42 42$30 do
67970: GO 67972
67972: DISABLE
// begin DialogueOn ;
67973: CALL_OW 6
// SayRadio ( Omar , Mid_Om1 ) ;
67977: LD_EXP 25
67981: PPUSH
67982: LD_STRING Mid_Om1
67984: PPUSH
67985: CALL_OW 94
// Say ( Heike , Mid_He1 ) ;
67989: LD_EXP 12
67993: PPUSH
67994: LD_STRING Mid_He1
67996: PPUSH
67997: CALL_OW 88
// SayRadio ( Omar , Mid_Om2 ) ;
68001: LD_EXP 25
68005: PPUSH
68006: LD_STRING Mid_Om2
68008: PPUSH
68009: CALL_OW 94
// Say ( Heike , Mid_He2 ) ;
68013: LD_EXP 12
68017: PPUSH
68018: LD_STRING Mid_He2
68020: PPUSH
68021: CALL_OW 88
// SayRadio ( Omar , Mid_Om3 ) ;
68025: LD_EXP 25
68029: PPUSH
68030: LD_STRING Mid_Om3
68032: PPUSH
68033: CALL_OW 94
// SayRadio ( Omar , Mid_Om4 ) ;
68037: LD_EXP 25
68041: PPUSH
68042: LD_STRING Mid_Om4
68044: PPUSH
68045: CALL_OW 94
// Say ( Heike , Mid_He3 ) ;
68049: LD_EXP 12
68053: PPUSH
68054: LD_STRING Mid_He3
68056: PPUSH
68057: CALL_OW 88
// SayRadio ( Omar , Mid_Om5 ) ;
68061: LD_EXP 25
68065: PPUSH
68066: LD_STRING Mid_Om5
68068: PPUSH
68069: CALL_OW 94
// Say ( Heike , Mid_He4 ) ;
68073: LD_EXP 12
68077: PPUSH
68078: LD_STRING Mid_He4
68080: PPUSH
68081: CALL_OW 88
// SayRadio ( Omar , Mid_Om6 ) ;
68085: LD_EXP 25
68089: PPUSH
68090: LD_STRING Mid_Om6
68092: PPUSH
68093: CALL_OW 94
// Say ( Heike , Mid_He5 ) ;
68097: LD_EXP 12
68101: PPUSH
68102: LD_STRING Mid_He5
68104: PPUSH
68105: CALL_OW 88
// SayRadio ( Omar , Mid_Om7 ) ;
68109: LD_EXP 25
68113: PPUSH
68114: LD_STRING Mid_Om7
68116: PPUSH
68117: CALL_OW 94
// SayRadio ( Omar , Mid_Om8 ) ;
68121: LD_EXP 25
68125: PPUSH
68126: LD_STRING Mid_Om8
68128: PPUSH
68129: CALL_OW 94
// DialogueOff ;
68133: CALL_OW 7
// wait ( 0 0$2 ) ;
68137: LD_INT 70
68139: PPUSH
68140: CALL_OW 67
// if help_variant = 2 then
68144: LD_EXP 2
68148: PUSH
68149: LD_INT 2
68151: EQUAL
68152: IFFALSE 68166
// Say ( Heike , Mid_He6 ) ;
68154: LD_EXP 12
68158: PPUSH
68159: LD_STRING Mid_He6
68161: PPUSH
68162: CALL_OW 88
// end ;
68166: END
// every 0 0$1 trigger tick > 42 42$30 do
68167: LD_OWVAR 1
68171: PUSH
68172: LD_INT 89250
68174: GREATER
68175: IFFALSE 68219
68177: GO 68179
68179: DISABLE
// begin wait ( rand ( 3 3$0 , 8 8$0 ) ) ;
68180: LD_INT 6300
68182: PPUSH
68183: LD_INT 16800
68185: PPUSH
68186: CALL_OW 12
68190: PPUSH
68191: CALL_OW 67
// Say ( Heike , call_He1 ) ;
68195: LD_EXP 12
68199: PPUSH
68200: LD_STRING call_He1
68202: PPUSH
68203: CALL_OW 88
// SayRadio ( Snake , call_Sn1 ) ;
68207: LD_EXP 26
68211: PPUSH
68212: LD_STRING call_Sn1
68214: PPUSH
68215: CALL_OW 94
// end ;
68219: END
// every 0 0$1 trigger tick > 90 90$0 or ( TransportAllReadyToGo and ai_bases = 0 and unitfilter ( base9_people ^ base10_people , [ f_ok ] ) = 0 and unitfilter ( MainBuildings , [ f_ok ] ) <= MainBuildings * 0.2 and unitfilter ( MinorBuildings , [ f_ok ] ) <= MinorBuildings * 0.2 and unitfilter ( RussianPeople , [ f_ok ] ) <= RussianPeople * 0.2 ) do var extratime ;
68220: LD_OWVAR 1
68224: PUSH
68225: LD_INT 189000
68227: GREATER
68228: PUSH
68229: LD_EXP 182
68233: PUSH
68234: LD_EXP 29
68238: PUSH
68239: LD_INT 0
68241: EQUAL
68242: AND
68243: PUSH
68244: LD_EXP 168
68248: PUSH
68249: LD_EXP 170
68253: ADD
68254: PPUSH
68255: LD_INT 50
68257: PUSH
68258: EMPTY
68259: LIST
68260: PPUSH
68261: CALL_OW 72
68265: PUSH
68266: LD_INT 0
68268: EQUAL
68269: AND
68270: PUSH
68271: LD_EXP 184
68275: PPUSH
68276: LD_INT 50
68278: PUSH
68279: EMPTY
68280: LIST
68281: PPUSH
68282: CALL_OW 72
68286: PUSH
68287: LD_EXP 184
68291: PUSH
68292: LD_REAL  2.00000000000000E-0001
68295: MUL
68296: LESSEQUAL
68297: AND
68298: PUSH
68299: LD_EXP 185
68303: PPUSH
68304: LD_INT 50
68306: PUSH
68307: EMPTY
68308: LIST
68309: PPUSH
68310: CALL_OW 72
68314: PUSH
68315: LD_EXP 185
68319: PUSH
68320: LD_REAL  2.00000000000000E-0001
68323: MUL
68324: LESSEQUAL
68325: AND
68326: PUSH
68327: LD_EXP 186
68331: PPUSH
68332: LD_INT 50
68334: PUSH
68335: EMPTY
68336: LIST
68337: PPUSH
68338: CALL_OW 72
68342: PUSH
68343: LD_EXP 186
68347: PUSH
68348: LD_REAL  2.00000000000000E-0001
68351: MUL
68352: LESSEQUAL
68353: AND
68354: OR
68355: IFFALSE 68691
68357: GO 68359
68359: DISABLE
68360: LD_INT 0
68362: PPUSH
// begin if ai_bases > 0 then
68363: LD_EXP 29
68367: PUSH
68368: LD_INT 0
68370: GREATER
68371: IFFALSE 68405
// begin InGameOn ;
68373: CALL_OW 8
// sayradio ( Omar , End_fail ) ;
68377: LD_EXP 25
68381: PPUSH
68382: LD_STRING End_fail
68384: PPUSH
68385: CALL_OW 94
// wait ( 0 0$0.5 ) ;
68389: LD_INT 18
68391: PPUSH
68392: CALL_OW 67
// Youlost ( NotDestroyedEgnough ) ;
68396: LD_STRING NotDestroyedEgnough
68398: PPUSH
68399: CALL_OW 104
// exit ;
68403: GO 68691
// end ; DialogueOn ;
68405: CALL_OW 6
// if tick < 90 90$0 then
68409: LD_OWVAR 1
68413: PUSH
68414: LD_INT 189000
68416: LESS
68417: IFFALSE 68493
// begin extratime = 90 90$0 - tick ;
68419: LD_ADDR_VAR 0 1
68423: PUSH
68424: LD_INT 189000
68426: PUSH
68427: LD_OWVAR 1
68431: MINUS
68432: ST_TO_ADDR
// if extratime > 5 5$0 then
68433: LD_VAR 0 1
68437: PUSH
68438: LD_INT 10500
68440: GREATER
68441: IFFALSE 68451
// extratime = 5 5$0 ;
68443: LD_ADDR_VAR 0 1
68447: PUSH
68448: LD_INT 10500
68450: ST_TO_ADDR
// FinalCountdown = FinalCountdown + extratime ;
68451: LD_ADDR_EXP 181
68455: PUSH
68456: LD_EXP 181
68460: PUSH
68461: LD_VAR 0 1
68465: PLUS
68466: ST_TO_ADDR
// Say ( Heike , End_He1 ) ;
68467: LD_EXP 12
68471: PPUSH
68472: LD_STRING End_He1
68474: PPUSH
68475: CALL_OW 88
// SayRadio ( Omar , End_Om1 ) ;
68479: LD_EXP 25
68483: PPUSH
68484: LD_STRING End_Om1
68486: PPUSH
68487: CALL_OW 94
// end else
68491: GO 68505
// SayRadio ( Omar , End_Om2 ) ;
68493: LD_EXP 25
68497: PPUSH
68498: LD_STRING End_Om2
68500: PPUSH
68501: CALL_OW 94
// SayRadio ( Omar , End_Om3 ) ;
68505: LD_EXP 25
68509: PPUSH
68510: LD_STRING End_Om3
68512: PPUSH
68513: CALL_OW 94
// Say ( Heike , End_He2 ) ;
68517: LD_EXP 12
68521: PPUSH
68522: LD_STRING End_He2
68524: PPUSH
68525: CALL_OW 88
// SayRadio ( Omar , End_Om4 ) ;
68529: LD_EXP 25
68533: PPUSH
68534: LD_STRING End_Om4
68536: PPUSH
68537: CALL_OW 94
// Say ( Heike , End_He3 ) ;
68541: LD_EXP 12
68545: PPUSH
68546: LD_STRING End_He3
68548: PPUSH
68549: CALL_OW 88
// dwait ( 0 0$0.2 ) ;
68553: LD_INT 7
68555: PPUSH
68556: CALL_OW 68
// query ( Selection_msg ) ;
68560: LD_STRING Selection_msg
68562: PPUSH
68563: CALL_OW 97
// dwait ( 0 0$0.2 ) ;
68567: LD_INT 7
68569: PPUSH
68570: CALL_OW 68
// ChangeMissionObjectives ( preparations ) ;
68574: LD_STRING preparations
68576: PPUSH
68577: CALL_OW 337
// DialogueOff ;
68581: CALL_OW 7
// MissionEnd = 1 ;
68585: LD_ADDR_EXP 188
68589: PUSH
68590: LD_INT 1
68592: ST_TO_ADDR
// wait ( 0 0$5 ) ;
68593: LD_INT 175
68595: PPUSH
68596: CALL_OW 67
// Say ( Heike , End_He5 ) ;
68600: LD_EXP 12
68604: PPUSH
68605: LD_STRING End_He5
68607: PPUSH
68608: CALL_OW 88
// if teleport_status < 2 then
68612: LD_EXP 112
68616: PUSH
68617: LD_INT 2
68619: LESS
68620: IFFALSE 68648
// begin Say ( Heike , End_He6a ) ;
68622: LD_EXP 12
68626: PPUSH
68627: LD_STRING End_He6a
68629: PPUSH
68630: CALL_OW 88
// Say ( Heike , End_He7a ) ;
68634: LD_EXP 12
68638: PPUSH
68639: LD_STRING End_He7a
68641: PPUSH
68642: CALL_OW 88
// end else
68646: GO 68672
// begin Say ( Heike , End_He6b ) ;
68648: LD_EXP 12
68652: PPUSH
68653: LD_STRING End_He6b
68655: PPUSH
68656: CALL_OW 88
// Say ( Heike , End_He7b ) ;
68660: LD_EXP 12
68664: PPUSH
68665: LD_STRING End_He7b
68667: PPUSH
68668: CALL_OW 88
// end ; wait ( 0 0$3 ) ;
68672: LD_INT 105
68674: PPUSH
68675: CALL_OW 67
// Say ( Heike , Tr3_He4 ) ;
68679: LD_EXP 12
68683: PPUSH
68684: LD_STRING Tr3_He4
68686: PPUSH
68687: CALL_OW 88
// end ; end_of_file
68691: PPOPN 1
68693: END
// every 0 0$1 trigger enable_transport = 0 marked 1 do var i ;
68694: LD_EXP 144
68698: PUSH
68699: LD_INT 0
68701: EQUAL
68702: IFFALSE 68866
68704: GO 68706
68706: DISABLE
68707: LD_INT 0
68709: PPUSH
// begin CratesPrepared = 0 ;
68710: LD_ADDR_EXP 127
68714: PUSH
68715: LD_INT 0
68717: ST_TO_ADDR
// OilPrepared = 0 ;
68718: LD_ADDR_EXP 128
68722: PUSH
68723: LD_INT 0
68725: ST_TO_ADDR
// SiberitePrepared = 0 ;
68726: LD_ADDR_EXP 129
68730: PUSH
68731: LD_INT 0
68733: ST_TO_ADDR
// for i in filterallunits ( [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , ru_cargo_bay ] ] ] ) do
68734: LD_ADDR_VAR 0 1
68738: PUSH
68739: LD_INT 22
68741: PUSH
68742: LD_INT 2
68744: PUSH
68745: EMPTY
68746: LIST
68747: LIST
68748: PUSH
68749: LD_INT 2
68751: PUSH
68752: LD_INT 34
68754: PUSH
68755: LD_INT 32
68757: PUSH
68758: EMPTY
68759: LIST
68760: LIST
68761: PUSH
68762: LD_INT 34
68764: PUSH
68765: LD_INT 51
68767: PUSH
68768: EMPTY
68769: LIST
68770: LIST
68771: PUSH
68772: EMPTY
68773: LIST
68774: LIST
68775: LIST
68776: PUSH
68777: EMPTY
68778: LIST
68779: LIST
68780: PPUSH
68781: CALL_OW 69
68785: PUSH
68786: FOR_IN
68787: IFFALSE 68863
// begin CratesPrepared = CratesPrepared + GetCargo ( i , mat_cans ) ;
68789: LD_ADDR_EXP 127
68793: PUSH
68794: LD_EXP 127
68798: PUSH
68799: LD_VAR 0 1
68803: PPUSH
68804: LD_INT 1
68806: PPUSH
68807: CALL_OW 289
68811: PLUS
68812: ST_TO_ADDR
// OilPrepared = OilPrepared + GetCargo ( i , mat_oil ) ;
68813: LD_ADDR_EXP 128
68817: PUSH
68818: LD_EXP 128
68822: PUSH
68823: LD_VAR 0 1
68827: PPUSH
68828: LD_INT 2
68830: PPUSH
68831: CALL_OW 289
68835: PLUS
68836: ST_TO_ADDR
// SiberitePrepared = SiberitePrepared + GetCargo ( i , mat_siberit ) ;
68837: LD_ADDR_EXP 129
68841: PUSH
68842: LD_EXP 129
68846: PUSH
68847: LD_VAR 0 1
68851: PPUSH
68852: LD_INT 3
68854: PPUSH
68855: CALL_OW 289
68859: PLUS
68860: ST_TO_ADDR
// end ;
68861: GO 68786
68863: POP
68864: POP
// enable ;
68865: ENABLE
// end ;
68866: PPOPN 1
68868: END
// every 0 0$1 trigger CratesPrepared >= Crates_min [ difficulty ] and OilPrepared >= Oil_min [ difficulty ] and SiberitePrepared >= Sib_min [ difficulty ] do
68869: LD_EXP 127
68873: PUSH
68874: LD_EXP 133
68878: PUSH
68879: LD_OWVAR 67
68883: ARRAY
68884: GREATEREQUAL
68885: PUSH
68886: LD_EXP 128
68890: PUSH
68891: LD_EXP 135
68895: PUSH
68896: LD_OWVAR 67
68900: ARRAY
68901: GREATEREQUAL
68902: AND
68903: PUSH
68904: LD_EXP 129
68908: PUSH
68909: LD_EXP 137
68913: PUSH
68914: LD_OWVAR 67
68918: ARRAY
68919: GREATEREQUAL
68920: AND
68921: IFFALSE 69006
68923: GO 68925
68925: DISABLE
// begin Say ( Heike , Tr3_He2 ) ;
68926: LD_EXP 12
68930: PPUSH
68931: LD_STRING Tr3_He2
68933: PPUSH
68934: CALL_OW 88
// if teleport_status = 2 then
68938: LD_EXP 112
68942: PUSH
68943: LD_INT 2
68945: EQUAL
68946: IFFALSE 68960
// SetAreaMapShow ( exit_teleport , 1 ) else
68948: LD_INT 27
68950: PPUSH
68951: LD_INT 1
68953: PPUSH
68954: CALL_OW 424
68958: GO 68970
// SetAreaMapShow ( exit_normal , 1 ) ;
68960: LD_INT 26
68962: PPUSH
68963: LD_INT 1
68965: PPUSH
68966: CALL_OW 424
// enable_transport = 1 ;
68970: LD_ADDR_EXP 144
68974: PUSH
68975: LD_INT 1
68977: ST_TO_ADDR
// wait ( 0 0$0.2 ) ;
68978: LD_INT 7
68980: PPUSH
68981: CALL_OW 67
// ChangeMissionObjectives ( resourcesgathered ) ;
68985: LD_STRING resourcesgathered
68987: PPUSH
68988: CALL_OW 337
// wait ( 0 0$0.2 ) ;
68992: LD_INT 7
68994: PPUSH
68995: CALL_OW 67
// query ( Transport_msg ) ;
68999: LD_STRING Transport_msg
69001: PPUSH
69002: CALL_OW 97
// end ;
69006: END
// every 0 0$1 trigger enable_transport = 1 do var i , area , temp , time , un_list , name_list , query_name ;
69007: LD_EXP 144
69011: PUSH
69012: LD_INT 1
69014: EQUAL
69015: IFFALSE 71404
69017: GO 69019
69019: DISABLE
69020: LD_INT 0
69022: PPUSH
69023: PPUSH
69024: PPUSH
69025: PPUSH
69026: PPUSH
69027: PPUSH
69028: PPUSH
// begin CratesPrepared = 0 ;
69029: LD_ADDR_EXP 127
69033: PUSH
69034: LD_INT 0
69036: ST_TO_ADDR
// OilPrepared = 0 ;
69037: LD_ADDR_EXP 128
69041: PUSH
69042: LD_INT 0
69044: ST_TO_ADDR
// SiberitePrepared = 0 ;
69045: LD_ADDR_EXP 129
69049: PUSH
69050: LD_INT 0
69052: ST_TO_ADDR
// CargosPrepared = [ ] ;
69053: LD_ADDR_EXP 132
69057: PUSH
69058: EMPTY
69059: ST_TO_ADDR
// if teleport_status = 2 then
69060: LD_EXP 112
69064: PUSH
69065: LD_INT 2
69067: EQUAL
69068: IFFALSE 69100
// begin area = exit_teleport ;
69070: LD_ADDR_VAR 0 2
69074: PUSH
69075: LD_INT 27
69077: ST_TO_ADDR
// SetAreaMapShow ( exit_teleport , 1 ) ;
69078: LD_INT 27
69080: PPUSH
69081: LD_INT 1
69083: PPUSH
69084: CALL_OW 424
// SetAreaMapShow ( exit_normal , 0 ) ;
69088: LD_INT 26
69090: PPUSH
69091: LD_INT 0
69093: PPUSH
69094: CALL_OW 424
// end else
69098: GO 69128
// begin area = exit_normal ;
69100: LD_ADDR_VAR 0 2
69104: PUSH
69105: LD_INT 26
69107: ST_TO_ADDR
// SetAreaMapShow ( exit_normal , 1 ) ;
69108: LD_INT 26
69110: PPUSH
69111: LD_INT 1
69113: PPUSH
69114: CALL_OW 424
// SetAreaMapShow ( exit_teleport , 0 ) ;
69118: LD_INT 27
69120: PPUSH
69121: LD_INT 0
69123: PPUSH
69124: CALL_OW 424
// end ; EscortPrepared = [ ] ;
69128: LD_ADDR_EXP 130
69132: PUSH
69133: EMPTY
69134: ST_TO_ADDR
// for i in filterunitsinarea ( area , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_control , control_manual ] ] ) ^ filterunitsinarea ( area , [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_not , [ f_driving ] ] ] ) do
69135: LD_ADDR_VAR 0 1
69139: PUSH
69140: LD_VAR 0 2
69144: PPUSH
69145: LD_INT 22
69147: PUSH
69148: LD_INT 2
69150: PUSH
69151: EMPTY
69152: LIST
69153: LIST
69154: PUSH
69155: LD_INT 21
69157: PUSH
69158: LD_INT 2
69160: PUSH
69161: EMPTY
69162: LIST
69163: LIST
69164: PUSH
69165: LD_INT 33
69167: PUSH
69168: LD_INT 1
69170: PUSH
69171: EMPTY
69172: LIST
69173: LIST
69174: PUSH
69175: EMPTY
69176: LIST
69177: LIST
69178: LIST
69179: PPUSH
69180: CALL_OW 70
69184: PUSH
69185: LD_VAR 0 2
69189: PPUSH
69190: LD_INT 22
69192: PUSH
69193: LD_INT 2
69195: PUSH
69196: EMPTY
69197: LIST
69198: LIST
69199: PUSH
69200: LD_INT 21
69202: PUSH
69203: LD_INT 1
69205: PUSH
69206: EMPTY
69207: LIST
69208: LIST
69209: PUSH
69210: LD_INT 3
69212: PUSH
69213: LD_INT 55
69215: PUSH
69216: EMPTY
69217: LIST
69218: PUSH
69219: EMPTY
69220: LIST
69221: LIST
69222: PUSH
69223: EMPTY
69224: LIST
69225: LIST
69226: LIST
69227: PPUSH
69228: CALL_OW 70
69232: ADD
69233: PUSH
69234: FOR_IN
69235: IFFALSE 69412
// if EscortPrepared < Escortmin then
69237: LD_EXP 130
69241: PUSH
69242: LD_EXP 139
69246: LESS
69247: IFFALSE 69408
// begin if GetType ( i ) = unit_human then
69249: LD_VAR 0 1
69253: PPUSH
69254: CALL_OW 247
69258: PUSH
69259: LD_INT 1
69261: EQUAL
69262: IFFALSE 69356
// begin if not i = heike then
69264: LD_VAR 0 1
69268: PUSH
69269: LD_EXP 12
69273: EQUAL
69274: NOT
69275: IFFALSE 69354
// if not ( getclass ( i ) = class_apeman or getclass ( i ) = class_apeman_soldier or getclass ( i ) = class_apeman_kamikaze or getclass ( i ) = class_apeman_engineer ) then
69277: LD_VAR 0 1
69281: PPUSH
69282: CALL_OW 257
69286: PUSH
69287: LD_INT 12
69289: EQUAL
69290: PUSH
69291: LD_VAR 0 1
69295: PPUSH
69296: CALL_OW 257
69300: PUSH
69301: LD_INT 15
69303: EQUAL
69304: OR
69305: PUSH
69306: LD_VAR 0 1
69310: PPUSH
69311: CALL_OW 257
69315: PUSH
69316: LD_INT 17
69318: EQUAL
69319: OR
69320: PUSH
69321: LD_VAR 0 1
69325: PPUSH
69326: CALL_OW 257
69330: PUSH
69331: LD_INT 16
69333: EQUAL
69334: OR
69335: NOT
69336: IFFALSE 69354
// EscortPrepared = EscortPrepared ^ i ;
69338: LD_ADDR_EXP 130
69342: PUSH
69343: LD_EXP 130
69347: PUSH
69348: LD_VAR 0 1
69352: ADD
69353: ST_TO_ADDR
// end else
69354: GO 69406
// if IsDrivenBy ( i ) and not IsDrivenBy ( i ) = Heike then
69356: LD_VAR 0 1
69360: PPUSH
69361: CALL_OW 311
69365: PUSH
69366: LD_VAR 0 1
69370: PPUSH
69371: CALL_OW 311
69375: PUSH
69376: LD_EXP 12
69380: EQUAL
69381: NOT
69382: AND
69383: IFFALSE 69406
// EscortPrepared = EscortPrepared ^ IsDrivenBy ( i ) ;
69385: LD_ADDR_EXP 130
69389: PUSH
69390: LD_EXP 130
69394: PUSH
69395: LD_VAR 0 1
69399: PPUSH
69400: CALL_OW 311
69404: ADD
69405: ST_TO_ADDR
// end else
69406: GO 69410
// break ;
69408: GO 69412
69410: GO 69234
69412: POP
69413: POP
// EscortPrepared_vehicles = [ ] ;
69414: LD_ADDR_EXP 131
69418: PUSH
69419: EMPTY
69420: ST_TO_ADDR
// for i in filterunitsinarea ( area , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_or , [ f_weapon , ar_rocket_launcher ] , [ f_weapon , ar_gun ] , [ f_weapon , ar_gatling_gun ] , [ f_weapon , ar_flame_thrower ] , [ f_weapon , ru_gun ] , [ f_weapon , ru_gatling_gun ] , [ f_weapon , ru_rocket_launcher ] ] ] ) do
69421: LD_ADDR_VAR 0 1
69425: PUSH
69426: LD_VAR 0 2
69430: PPUSH
69431: LD_INT 22
69433: PUSH
69434: LD_INT 2
69436: PUSH
69437: EMPTY
69438: LIST
69439: LIST
69440: PUSH
69441: LD_INT 21
69443: PUSH
69444: LD_INT 2
69446: PUSH
69447: EMPTY
69448: LIST
69449: LIST
69450: PUSH
69451: LD_INT 2
69453: PUSH
69454: LD_INT 34
69456: PUSH
69457: LD_INT 28
69459: PUSH
69460: EMPTY
69461: LIST
69462: LIST
69463: PUSH
69464: LD_INT 34
69466: PUSH
69467: LD_INT 27
69469: PUSH
69470: EMPTY
69471: LIST
69472: LIST
69473: PUSH
69474: LD_INT 34
69476: PUSH
69477: LD_INT 25
69479: PUSH
69480: EMPTY
69481: LIST
69482: LIST
69483: PUSH
69484: LD_INT 34
69486: PUSH
69487: LD_INT 26
69489: PUSH
69490: EMPTY
69491: LIST
69492: LIST
69493: PUSH
69494: LD_INT 34
69496: PUSH
69497: LD_INT 44
69499: PUSH
69500: EMPTY
69501: LIST
69502: LIST
69503: PUSH
69504: LD_INT 34
69506: PUSH
69507: LD_INT 43
69509: PUSH
69510: EMPTY
69511: LIST
69512: LIST
69513: PUSH
69514: LD_INT 34
69516: PUSH
69517: LD_INT 45
69519: PUSH
69520: EMPTY
69521: LIST
69522: LIST
69523: PUSH
69524: EMPTY
69525: LIST
69526: LIST
69527: LIST
69528: LIST
69529: LIST
69530: LIST
69531: LIST
69532: LIST
69533: PUSH
69534: EMPTY
69535: LIST
69536: LIST
69537: LIST
69538: PPUSH
69539: CALL_OW 70
69543: PUSH
69544: FOR_IN
69545: IFFALSE 69628
// if EscortPrepared_vehicles < 4 then
69547: LD_EXP 131
69551: PUSH
69552: LD_INT 4
69554: LESS
69555: IFFALSE 69624
// begin if ( IsDrivenBy ( i ) in EscortPrepared ) or ( IsControledBy ( i ) in EscortPrepared ) or GetControl ( i ) = control_apeman then
69557: LD_VAR 0 1
69561: PPUSH
69562: CALL_OW 311
69566: PUSH
69567: LD_EXP 130
69571: IN
69572: PUSH
69573: LD_VAR 0 1
69577: PPUSH
69578: CALL_OW 312
69582: PUSH
69583: LD_EXP 130
69587: IN
69588: OR
69589: PUSH
69590: LD_VAR 0 1
69594: PPUSH
69595: CALL_OW 263
69599: PUSH
69600: LD_INT 5
69602: EQUAL
69603: OR
69604: IFFALSE 69622
// EscortPrepared_vehicles = EscortPrepared_vehicles ^ i ;
69606: LD_ADDR_EXP 131
69610: PUSH
69611: LD_EXP 131
69615: PUSH
69616: LD_VAR 0 1
69620: ADD
69621: ST_TO_ADDR
// end else
69622: GO 69626
// break ;
69624: GO 69628
69626: GO 69544
69628: POP
69629: POP
// for i in filterunitsinarea ( area , [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , ru_cargo_bay ] ] ] ) do
69630: LD_ADDR_VAR 0 1
69634: PUSH
69635: LD_VAR 0 2
69639: PPUSH
69640: LD_INT 22
69642: PUSH
69643: LD_INT 2
69645: PUSH
69646: EMPTY
69647: LIST
69648: LIST
69649: PUSH
69650: LD_INT 2
69652: PUSH
69653: LD_INT 34
69655: PUSH
69656: LD_INT 32
69658: PUSH
69659: EMPTY
69660: LIST
69661: LIST
69662: PUSH
69663: LD_INT 34
69665: PUSH
69666: LD_INT 51
69668: PUSH
69669: EMPTY
69670: LIST
69671: LIST
69672: PUSH
69673: EMPTY
69674: LIST
69675: LIST
69676: LIST
69677: PUSH
69678: EMPTY
69679: LIST
69680: LIST
69681: PPUSH
69682: CALL_OW 70
69686: PUSH
69687: FOR_IN
69688: IFFALSE 69859
// if getcontrol ( i ) = control_apeman or ( getcontrol ( i ) = control_remote and iscontroledby ( i ) in EscortPrepared ) or ( getcontrol ( i ) = control_manual and isdrivenby ( i ) in EscortPrepared ) then
69690: LD_VAR 0 1
69694: PPUSH
69695: CALL_OW 263
69699: PUSH
69700: LD_INT 5
69702: EQUAL
69703: PUSH
69704: LD_VAR 0 1
69708: PPUSH
69709: CALL_OW 263
69713: PUSH
69714: LD_INT 2
69716: EQUAL
69717: PUSH
69718: LD_VAR 0 1
69722: PPUSH
69723: CALL_OW 312
69727: PUSH
69728: LD_EXP 130
69732: IN
69733: AND
69734: OR
69735: PUSH
69736: LD_VAR 0 1
69740: PPUSH
69741: CALL_OW 263
69745: PUSH
69746: LD_INT 1
69748: EQUAL
69749: PUSH
69750: LD_VAR 0 1
69754: PPUSH
69755: CALL_OW 311
69759: PUSH
69760: LD_EXP 130
69764: IN
69765: AND
69766: OR
69767: IFFALSE 69857
// begin CratesPrepared = CratesPrepared + GetCargo ( i , mat_cans ) ;
69769: LD_ADDR_EXP 127
69773: PUSH
69774: LD_EXP 127
69778: PUSH
69779: LD_VAR 0 1
69783: PPUSH
69784: LD_INT 1
69786: PPUSH
69787: CALL_OW 289
69791: PLUS
69792: ST_TO_ADDR
// OilPrepared = OilPrepared + GetCargo ( i , mat_oil ) ;
69793: LD_ADDR_EXP 128
69797: PUSH
69798: LD_EXP 128
69802: PUSH
69803: LD_VAR 0 1
69807: PPUSH
69808: LD_INT 2
69810: PPUSH
69811: CALL_OW 289
69815: PLUS
69816: ST_TO_ADDR
// SiberitePrepared = SiberitePrepared + GetCargo ( i , mat_siberit ) ;
69817: LD_ADDR_EXP 129
69821: PUSH
69822: LD_EXP 129
69826: PUSH
69827: LD_VAR 0 1
69831: PPUSH
69832: LD_INT 3
69834: PPUSH
69835: CALL_OW 289
69839: PLUS
69840: ST_TO_ADDR
// CargosPrepared = CargosPrepared ^ i ;
69841: LD_ADDR_EXP 132
69845: PUSH
69846: LD_EXP 132
69850: PUSH
69851: LD_VAR 0 1
69855: ADD
69856: ST_TO_ADDR
// end ;
69857: GO 69687
69859: POP
69860: POP
// if CratesPrepared >= Crates_min [ difficulty ] then
69861: LD_EXP 127
69865: PUSH
69866: LD_EXP 133
69870: PUSH
69871: LD_OWVAR 67
69875: ARRAY
69876: GREATEREQUAL
69877: IFFALSE 69889
// CrateTransportReady = 1 else
69879: LD_ADDR_EXP 140
69883: PUSH
69884: LD_INT 1
69886: ST_TO_ADDR
69887: GO 69897
// CrateTransportReady = 0 ;
69889: LD_ADDR_EXP 140
69893: PUSH
69894: LD_INT 0
69896: ST_TO_ADDR
// if OilPrepared >= Oil_min [ difficulty ] then
69897: LD_EXP 128
69901: PUSH
69902: LD_EXP 135
69906: PUSH
69907: LD_OWVAR 67
69911: ARRAY
69912: GREATEREQUAL
69913: IFFALSE 69925
// OilTransportReady = 1 else
69915: LD_ADDR_EXP 141
69919: PUSH
69920: LD_INT 1
69922: ST_TO_ADDR
69923: GO 69933
// OilTransportReady = 0 ;
69925: LD_ADDR_EXP 141
69929: PUSH
69930: LD_INT 0
69932: ST_TO_ADDR
// if SiberitePrepared >= Sib_min [ difficulty ] then
69933: LD_EXP 129
69937: PUSH
69938: LD_EXP 137
69942: PUSH
69943: LD_OWVAR 67
69947: ARRAY
69948: GREATEREQUAL
69949: IFFALSE 69961
// SibTransportReady = 1 else
69951: LD_ADDR_EXP 142
69955: PUSH
69956: LD_INT 1
69958: ST_TO_ADDR
69959: GO 69969
// SibTransportReady = 0 ;
69961: LD_ADDR_EXP 142
69965: PUSH
69966: LD_INT 0
69968: ST_TO_ADDR
// if EscortPrepared = Escortmin and EscortPrepared_vehicles = 4 then
69969: LD_EXP 130
69973: PUSH
69974: LD_EXP 139
69978: EQUAL
69979: PUSH
69980: LD_EXP 131
69984: PUSH
69985: LD_INT 4
69987: EQUAL
69988: AND
69989: IFFALSE 70001
// EscortReady = 1 else
69991: LD_ADDR_EXP 143
69995: PUSH
69996: LD_INT 1
69998: ST_TO_ADDR
69999: GO 70009
// EscortReady = 0 ;
70001: LD_ADDR_EXP 143
70005: PUSH
70006: LD_INT 0
70008: ST_TO_ADDR
// if CratesPrepared >= Crates_max [ difficulty ] and SiberitePrepared >= Sib_max [ difficulty ] then
70009: LD_EXP 127
70013: PUSH
70014: LD_EXP 134
70018: PUSH
70019: LD_OWVAR 67
70023: ARRAY
70024: GREATEREQUAL
70025: PUSH
70026: LD_EXP 129
70030: PUSH
70031: LD_EXP 138
70035: PUSH
70036: LD_OWVAR 67
70040: ARRAY
70041: GREATEREQUAL
70042: AND
70043: IFFALSE 70053
// TransportAllReadyToGo = 1 ;
70045: LD_ADDR_EXP 182
70049: PUSH
70050: LD_INT 1
70052: ST_TO_ADDR
// if CrateTransportReady = 1 and OilTransportReady = 1 and SibTransportReady = 1 and EscortReady = 1 and MissionEnd = 1 then
70053: LD_EXP 140
70057: PUSH
70058: LD_INT 1
70060: EQUAL
70061: PUSH
70062: LD_EXP 141
70066: PUSH
70067: LD_INT 1
70069: EQUAL
70070: AND
70071: PUSH
70072: LD_EXP 142
70076: PUSH
70077: LD_INT 1
70079: EQUAL
70080: AND
70081: PUSH
70082: LD_EXP 143
70086: PUSH
70087: LD_INT 1
70089: EQUAL
70090: AND
70091: PUSH
70092: LD_EXP 188
70096: PUSH
70097: LD_INT 1
70099: EQUAL
70100: AND
70101: IFFALSE 71403
// if query1_time + 0 0$10 < tick then
70103: LD_EXP 145
70107: PUSH
70108: LD_INT 350
70110: PLUS
70111: PUSH
70112: LD_OWVAR 1
70116: LESS
70117: IFFALSE 71403
// begin if CratesPrepared >= Crates_max [ difficulty ] and SiberitePrepared >= Sib_max [ difficulty ] then
70119: LD_EXP 127
70123: PUSH
70124: LD_EXP 134
70128: PUSH
70129: LD_OWVAR 67
70133: ARRAY
70134: GREATEREQUAL
70135: PUSH
70136: LD_EXP 129
70140: PUSH
70141: LD_EXP 138
70145: PUSH
70146: LD_OWVAR 67
70150: ARRAY
70151: GREATEREQUAL
70152: AND
70153: IFFALSE 70165
// query_name = Transport_query_all else
70155: LD_ADDR_VAR 0 7
70159: PUSH
70160: LD_STRING Transport_query_all
70162: ST_TO_ADDR
70163: GO 70173
// query_name = Transport_query_notall ;
70165: LD_ADDR_VAR 0 7
70169: PUSH
70170: LD_STRING Transport_query_notall
70172: ST_TO_ADDR
// case SelectiveQuery ( query_name , [ 1 , 2 ] ) of 1 :
70173: LD_VAR 0 7
70177: PPUSH
70178: LD_INT 1
70180: PUSH
70181: LD_INT 2
70183: PUSH
70184: EMPTY
70185: LIST
70186: LIST
70187: PPUSH
70188: CALL_OW 98
70192: PUSH
70193: LD_INT 1
70195: DOUBLE
70196: EQUAL
70197: IFTRUE 70201
70199: GO 71392
70201: POP
// begin enable_transport = 2 ;
70202: LD_ADDR_EXP 144
70206: PUSH
70207: LD_INT 2
70209: ST_TO_ADDR
// SetAreaMapShow ( exit_normal , 0 ) ;
70210: LD_INT 26
70212: PPUSH
70213: LD_INT 0
70215: PPUSH
70216: CALL_OW 424
// SetAreaMapShow ( exit_teleport , 0 ) ;
70220: LD_INT 27
70222: PPUSH
70223: LD_INT 0
70225: PPUSH
70226: CALL_OW 424
// SaveVariable ( [ CratesPrepared , OilPrepared , SiberitePrepared ] , Resources_gathered_14_cont ) ;
70230: LD_EXP 127
70234: PUSH
70235: LD_EXP 128
70239: PUSH
70240: LD_EXP 129
70244: PUSH
70245: EMPTY
70246: LIST
70247: LIST
70248: LIST
70249: PPUSH
70250: LD_STRING Resources_gathered_14_cont
70252: PPUSH
70253: CALL_OW 39
// un_list = [ Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
70257: LD_ADDR_VAR 0 5
70261: PUSH
70262: LD_EXP 15
70266: PUSH
70267: LD_EXP 13
70271: PUSH
70272: LD_EXP 14
70276: PUSH
70277: LD_EXP 16
70281: PUSH
70282: LD_EXP 17
70286: PUSH
70287: LD_EXP 19
70291: PUSH
70292: LD_EXP 21
70296: PUSH
70297: LD_EXP 22
70301: PUSH
70302: LD_EXP 18
70306: PUSH
70307: LD_EXP 20
70311: PUSH
70312: LD_EXP 23
70316: PUSH
70317: EMPTY
70318: LIST
70319: LIST
70320: LIST
70321: LIST
70322: LIST
70323: LIST
70324: LIST
70325: LIST
70326: LIST
70327: LIST
70328: LIST
70329: ST_TO_ADDR
// name_list = [ Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
70330: LD_ADDR_VAR 0 6
70334: PUSH
70335: LD_STRING Oswald
70337: PUSH
70338: LD_STRING Olaf
70340: PUSH
70341: LD_STRING Sonya
70343: PUSH
70344: LD_STRING Ralph
70346: PUSH
70347: LD_STRING Kowalski
70349: PUSH
70350: LD_STRING Aviradze
70352: PUSH
70353: LD_STRING Swansson
70355: PUSH
70356: LD_STRING Dwayne
70358: PUSH
70359: LD_STRING Khattam
70361: PUSH
70362: LD_STRING Evelyn
70364: PUSH
70365: LD_STRING Makise
70367: PUSH
70368: EMPTY
70369: LIST
70370: LIST
70371: LIST
70372: LIST
70373: LIST
70374: LIST
70375: LIST
70376: LIST
70377: LIST
70378: LIST
70379: LIST
70380: ST_TO_ADDR
// for i = 1 to un_list do
70381: LD_ADDR_VAR 0 1
70385: PUSH
70386: DOUBLE
70387: LD_INT 1
70389: DEC
70390: ST_TO_ADDR
70391: LD_VAR 0 5
70395: PUSH
70396: FOR_TO
70397: IFFALSE 70449
// if un_list [ i ] in EscortPrepared then
70399: LD_VAR 0 5
70403: PUSH
70404: LD_VAR 0 1
70408: ARRAY
70409: PUSH
70410: LD_EXP 130
70414: IN
70415: IFFALSE 70447
// SaveCharacters ( un_list [ i ] , name_list [ i ] & _Escort_14_cont ) ;
70417: LD_VAR 0 5
70421: PUSH
70422: LD_VAR 0 1
70426: ARRAY
70427: PPUSH
70428: LD_VAR 0 6
70432: PUSH
70433: LD_VAR 0 1
70437: ARRAY
70438: PUSH
70439: LD_STRING _Escort_14_cont
70441: STR
70442: PPUSH
70443: CALL_OW 38
70447: GO 70396
70449: POP
70450: POP
// SaveCharacters ( EscortPrepared diff ( Heike ^ un_list ) , Others_Escort_14_cont ) ;
70451: LD_EXP 130
70455: PUSH
70456: LD_EXP 12
70460: PUSH
70461: LD_VAR 0 5
70465: ADD
70466: DIFF
70467: PPUSH
70468: LD_STRING Others_Escort_14_cont
70470: PPUSH
70471: CALL_OW 38
// if teleport_status < 2 then
70475: LD_EXP 112
70479: PUSH
70480: LD_INT 2
70482: LESS
70483: IFFALSE 70623
// begin for i in CargosPrepared do
70485: LD_ADDR_VAR 0 1
70489: PUSH
70490: LD_EXP 132
70494: PUSH
70495: FOR_IN
70496: IFFALSE 70509
// removeunit ( i ) ;
70498: LD_VAR 0 1
70502: PPUSH
70503: CALL_OW 64
70507: GO 70495
70509: POP
70510: POP
// for i in EscortPrepared do
70511: LD_ADDR_VAR 0 1
70515: PUSH
70516: LD_EXP 130
70520: PUSH
70521: FOR_IN
70522: IFFALSE 70549
// begin removeunit ( i ) ;
70524: LD_VAR 0 1
70528: PPUSH
70529: CALL_OW 64
// removeunit ( isinunit ( i ) ) ;
70533: LD_VAR 0 1
70537: PPUSH
70538: CALL_OW 310
70542: PPUSH
70543: CALL_OW 64
// end ;
70547: GO 70521
70549: POP
70550: POP
// for i in EscortPrepared_vehicles do
70551: LD_ADDR_VAR 0 1
70555: PUSH
70556: LD_EXP 131
70560: PUSH
70561: FOR_IN
70562: IFFALSE 70575
// removeunit ( i ) ;
70564: LD_VAR 0 1
70568: PPUSH
70569: CALL_OW 64
70573: GO 70561
70575: POP
70576: POP
// SaveVariable ( Teleport_SaveVariable , Transport_Teleported_14_cont ) ;
70577: LD_EXP 115
70581: PPUSH
70582: LD_STRING Transport_Teleported_14_cont
70584: PPUSH
70585: CALL_OW 39
// PlayerConvoySent = 1 ;
70589: LD_ADDR_EXP 177
70593: PUSH
70594: LD_INT 1
70596: ST_TO_ADDR
// PlayerMinimumPeople = 0 ;
70597: LD_ADDR_EXP 189
70601: PUSH
70602: LD_INT 0
70604: ST_TO_ADDR
// enable_transport = 2 ;
70605: LD_ADDR_EXP 144
70609: PUSH
70610: LD_INT 2
70612: ST_TO_ADDR
// CrateTransportReady = 0 ;
70613: LD_ADDR_EXP 140
70617: PUSH
70618: LD_INT 0
70620: ST_TO_ADDR
// end else
70621: GO 71390
// begin teleport_status = 3 ;
70623: LD_ADDR_EXP 112
70627: PUSH
70628: LD_INT 3
70630: ST_TO_ADDR
// for i in ( filterallunits ( [ f_control , control_remote ] ) diff CargosPrepared ^ EscortPrepared_vehicles ) do
70631: LD_ADDR_VAR 0 1
70635: PUSH
70636: LD_INT 33
70638: PUSH
70639: LD_INT 2
70641: PUSH
70642: EMPTY
70643: LIST
70644: LIST
70645: PPUSH
70646: CALL_OW 69
70650: PUSH
70651: LD_EXP 132
70655: PUSH
70656: LD_EXP 131
70660: ADD
70661: DIFF
70662: PUSH
70663: FOR_IN
70664: IFFALSE 70694
// if IsControledBy ( i ) in EscortPrepared then
70666: LD_VAR 0 1
70670: PPUSH
70671: CALL_OW 312
70675: PUSH
70676: LD_EXP 130
70680: IN
70681: IFFALSE 70692
// comUnlink ( i ) ;
70683: LD_VAR 0 1
70687: PPUSH
70688: CALL_OW 136
70692: GO 70663
70694: POP
70695: POP
// setside ( CargosPrepared ^ EscortPrepared_vehicles ^ EscortPrepared , 5 ) ;
70696: LD_EXP 132
70700: PUSH
70701: LD_EXP 131
70705: ADD
70706: PUSH
70707: LD_EXP 130
70711: ADD
70712: PPUSH
70713: LD_INT 5
70715: PPUSH
70716: CALL_OW 235
// comstop ( CargosPrepared ^ EscortPrepared_vehicles ^ EscortPrepared ) ;
70720: LD_EXP 132
70724: PUSH
70725: LD_EXP 131
70729: ADD
70730: PUSH
70731: LD_EXP 130
70735: ADD
70736: PPUSH
70737: CALL_OW 141
// for i in EscortPrepared_vehicles do
70741: LD_ADDR_VAR 0 1
70745: PUSH
70746: LD_EXP 131
70750: PUSH
70751: FOR_IN
70752: IFFALSE 70787
// begin setside ( isdrivenby ( i ) , 5 ) ;
70754: LD_VAR 0 1
70758: PPUSH
70759: CALL_OW 311
70763: PPUSH
70764: LD_INT 5
70766: PPUSH
70767: CALL_OW 235
// comstop ( isdrivenby ( i ) ) ;
70771: LD_VAR 0 1
70775: PPUSH
70776: CALL_OW 311
70780: PPUSH
70781: CALL_OW 141
// end ;
70785: GO 70751
70787: POP
70788: POP
// for i in EscortPrepared do
70789: LD_ADDR_VAR 0 1
70793: PUSH
70794: LD_EXP 130
70798: PUSH
70799: FOR_IN
70800: IFFALSE 70835
// begin setside ( isinunit ( i ) , 5 ) ;
70802: LD_VAR 0 1
70806: PPUSH
70807: CALL_OW 310
70811: PPUSH
70812: LD_INT 5
70814: PPUSH
70815: CALL_OW 235
// comstop ( isinunit ( i ) ) ;
70819: LD_VAR 0 1
70823: PPUSH
70824: CALL_OW 310
70828: PPUSH
70829: CALL_OW 141
// end ;
70833: GO 70799
70835: POP
70836: POP
// enable_transport = 2 ;
70837: LD_ADDR_EXP 144
70841: PUSH
70842: LD_INT 2
70844: ST_TO_ADDR
// CrateTransportReady = 0 ;
70845: LD_ADDR_EXP 140
70849: PUSH
70850: LD_INT 0
70852: ST_TO_ADDR
// SaveVariable ( 1 , Transport_Teleported_14_cont ) ;
70853: LD_INT 1
70855: PPUSH
70856: LD_STRING Transport_Teleported_14_cont
70858: PPUSH
70859: CALL_OW 39
// PlayerMinimumPeople = 0 ;
70863: LD_ADDR_EXP 189
70867: PUSH
70868: LD_INT 0
70870: ST_TO_ADDR
// time = tick ;
70871: LD_ADDR_VAR 0 4
70875: PUSH
70876: LD_OWVAR 1
70880: ST_TO_ADDR
// MineTheTeleport = 1 ;
70881: LD_ADDR_EXP 183
70885: PUSH
70886: LD_INT 1
70888: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
70889: LD_INT 35
70891: PPUSH
70892: CALL_OW 67
// if CargosPrepared > 0 then
70896: LD_EXP 132
70900: PUSH
70901: LD_INT 0
70903: GREATER
70904: IFFALSE 70918
// temp = CargosPrepared else
70906: LD_ADDR_VAR 0 3
70910: PUSH
70911: LD_EXP 132
70915: ST_TO_ADDR
70916: GO 70934
// temp = EscortPrepared_vehicles ^ EscortPrepared ;
70918: LD_ADDR_VAR 0 3
70922: PUSH
70923: LD_EXP 131
70927: PUSH
70928: LD_EXP 130
70932: ADD
70933: ST_TO_ADDR
// for i in unitfilter ( temp , [ f_placed ] ) do
70934: LD_ADDR_VAR 0 1
70938: PUSH
70939: LD_VAR 0 3
70943: PPUSH
70944: LD_INT 52
70946: PUSH
70947: EMPTY
70948: LIST
70949: PPUSH
70950: CALL_OW 72
70954: PUSH
70955: FOR_IN
70956: IFFALSE 71116
// if hastask ( i ) = 0 then
70958: LD_VAR 0 1
70962: PPUSH
70963: CALL_OW 314
70967: PUSH
70968: LD_INT 0
70970: EQUAL
70971: IFFALSE 71112
// begin settasklist ( i , [ [ a , 137 , 175 , 0 , 0 , 0 , 0 ] , [ a , 137 , 176 , 0 , 0 , 0 , 0 ] , [ a , 137 , 177 , 0 , 0 , 0 , 0 ] , [ q , 0 , 0 , 10 , 0 , 0 , 0 ] ] ) ;
70973: LD_VAR 0 1
70977: PPUSH
70978: LD_STRING a
70980: PUSH
70981: LD_INT 137
70983: PUSH
70984: LD_INT 175
70986: PUSH
70987: LD_INT 0
70989: PUSH
70990: LD_INT 0
70992: PUSH
70993: LD_INT 0
70995: PUSH
70996: LD_INT 0
70998: PUSH
70999: EMPTY
71000: LIST
71001: LIST
71002: LIST
71003: LIST
71004: LIST
71005: LIST
71006: LIST
71007: PUSH
71008: LD_STRING a
71010: PUSH
71011: LD_INT 137
71013: PUSH
71014: LD_INT 176
71016: PUSH
71017: LD_INT 0
71019: PUSH
71020: LD_INT 0
71022: PUSH
71023: LD_INT 0
71025: PUSH
71026: LD_INT 0
71028: PUSH
71029: EMPTY
71030: LIST
71031: LIST
71032: LIST
71033: LIST
71034: LIST
71035: LIST
71036: LIST
71037: PUSH
71038: LD_STRING a
71040: PUSH
71041: LD_INT 137
71043: PUSH
71044: LD_INT 177
71046: PUSH
71047: LD_INT 0
71049: PUSH
71050: LD_INT 0
71052: PUSH
71053: LD_INT 0
71055: PUSH
71056: LD_INT 0
71058: PUSH
71059: EMPTY
71060: LIST
71061: LIST
71062: LIST
71063: LIST
71064: LIST
71065: LIST
71066: LIST
71067: PUSH
71068: LD_STRING q
71070: PUSH
71071: LD_INT 0
71073: PUSH
71074: LD_INT 0
71076: PUSH
71077: LD_INT 10
71079: PUSH
71080: LD_INT 0
71082: PUSH
71083: LD_INT 0
71085: PUSH
71086: LD_INT 0
71088: PUSH
71089: EMPTY
71090: LIST
71091: LIST
71092: LIST
71093: LIST
71094: LIST
71095: LIST
71096: LIST
71097: PUSH
71098: EMPTY
71099: LIST
71100: LIST
71101: LIST
71102: LIST
71103: PPUSH
71104: CALL_OW 446
// break ;
71108: GO 71116
// end else
71110: GO 71114
// break ;
71112: GO 71116
71114: GO 70955
71116: POP
71117: POP
// if PlayerConvoySent = 0 and tick > time + 0 0$15 then
71118: LD_EXP 177
71122: PUSH
71123: LD_INT 0
71125: EQUAL
71126: PUSH
71127: LD_OWVAR 1
71131: PUSH
71132: LD_VAR 0 4
71136: PUSH
71137: LD_INT 525
71139: PLUS
71140: GREATER
71141: AND
71142: IFFALSE 71152
// PlayerConvoySent = 1 ;
71144: LD_ADDR_EXP 177
71148: PUSH
71149: LD_INT 1
71151: ST_TO_ADDR
// until ( filterallunits ( [ [ f_side , 5 ] , [ f_placed ] ] ) diff ruteleprt ) = 0 ;
71152: LD_INT 22
71154: PUSH
71155: LD_INT 5
71157: PUSH
71158: EMPTY
71159: LIST
71160: LIST
71161: PUSH
71162: LD_INT 52
71164: PUSH
71165: EMPTY
71166: LIST
71167: PUSH
71168: EMPTY
71169: LIST
71170: LIST
71171: PPUSH
71172: CALL_OW 69
71176: PUSH
71177: LD_INT 10
71179: DIFF
71180: PUSH
71181: LD_INT 0
71183: EQUAL
71184: IFFALSE 70889
// teleport_status = 0 ;
71186: LD_ADDR_EXP 112
71190: PUSH
71191: LD_INT 0
71193: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
71194: LD_INT 35
71196: PPUSH
71197: CALL_OW 67
// temp = [ ] ;
71201: LD_ADDR_VAR 0 3
71205: PUSH
71206: EMPTY
71207: ST_TO_ADDR
// for i in filterallunits ( [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) do
71208: LD_ADDR_VAR 0 1
71212: PUSH
71213: LD_INT 22
71215: PUSH
71216: LD_INT 2
71218: PUSH
71219: EMPTY
71220: LIST
71221: LIST
71222: PUSH
71223: LD_INT 2
71225: PUSH
71226: LD_INT 21
71228: PUSH
71229: LD_INT 1
71231: PUSH
71232: EMPTY
71233: LIST
71234: LIST
71235: PUSH
71236: LD_INT 21
71238: PUSH
71239: LD_INT 2
71241: PUSH
71242: EMPTY
71243: LIST
71244: LIST
71245: PUSH
71246: EMPTY
71247: LIST
71248: LIST
71249: LIST
71250: PUSH
71251: EMPTY
71252: LIST
71253: LIST
71254: PPUSH
71255: CALL_OW 69
71259: PUSH
71260: FOR_IN
71261: IFFALSE 71302
// if getdistunitxy ( i , 137 , 178 ) < 6 then
71263: LD_VAR 0 1
71267: PPUSH
71268: LD_INT 137
71270: PPUSH
71271: LD_INT 178
71273: PPUSH
71274: CALL_OW 297
71278: PUSH
71279: LD_INT 6
71281: LESS
71282: IFFALSE 71300
// temp = temp ^ i ;
71284: LD_ADDR_VAR 0 3
71288: PUSH
71289: LD_VAR 0 3
71293: PUSH
71294: LD_VAR 0 1
71298: ADD
71299: ST_TO_ADDR
71300: GO 71260
71302: POP
71303: POP
// if temp > 0 then
71304: LD_VAR 0 3
71308: PUSH
71309: LD_INT 0
71311: GREATER
71312: IFFALSE 71329
// commovexy ( temp , 142 , 171 ) ;
71314: LD_VAR 0 3
71318: PPUSH
71319: LD_INT 142
71321: PPUSH
71322: LD_INT 171
71324: PPUSH
71325: CALL_OW 111
// until temp = [ ] ;
71329: LD_VAR 0 3
71333: PUSH
71334: EMPTY
71335: EQUAL
71336: IFFALSE 71194
// LaunchMineAtPos ( 136 , 176 , 2 ) ;
71338: LD_INT 136
71340: PPUSH
71341: LD_INT 176
71343: PPUSH
71344: LD_INT 2
71346: PPUSH
71347: CALL_OW 456
// LaunchMineAtPos ( 138 , 177 , 2 ) ;
71351: LD_INT 138
71353: PPUSH
71354: LD_INT 177
71356: PPUSH
71357: LD_INT 2
71359: PPUSH
71360: CALL_OW 456
// LaunchMineAtPos ( 136 , 179 , 2 ) ;
71364: LD_INT 136
71366: PPUSH
71367: LD_INT 179
71369: PPUSH
71370: LD_INT 2
71372: PPUSH
71373: CALL_OW 456
// LaunchMineAtPos ( 138 , 180 , 2 ) ;
71377: LD_INT 138
71379: PPUSH
71380: LD_INT 180
71382: PPUSH
71383: LD_INT 2
71385: PPUSH
71386: CALL_OW 456
// end ; end ; end ;
71390: GO 71393
71392: POP
// query1_time = tick ;
71393: LD_ADDR_EXP 145
71397: PUSH
71398: LD_OWVAR 1
71402: ST_TO_ADDR
// end ; enable ;
71403: ENABLE
// end ;
71404: PPOPN 7
71406: END
// every 0 0$1 trigger MineTheTeleport = 1 do var i , sol , veh , vehicles_linked , clas , hex , temp , time ;
71407: LD_EXP 183
71411: PUSH
71412: LD_INT 1
71414: EQUAL
71415: IFFALSE 72121
71417: GO 71419
71419: DISABLE
71420: LD_INT 0
71422: PPUSH
71423: PPUSH
71424: PPUSH
71425: PPUSH
71426: PPUSH
71427: PPUSH
71428: PPUSH
71429: PPUSH
// begin for i in EscortPrepared do
71430: LD_ADDR_VAR 0 1
71434: PUSH
71435: LD_EXP 130
71439: PUSH
71440: FOR_IN
71441: IFFALSE 71490
// if not GetWeapon ( IsInUnit ( i ) ) = ar_control_tower or not isinunit ( i ) then
71443: LD_VAR 0 1
71447: PPUSH
71448: CALL_OW 310
71452: PPUSH
71453: CALL_OW 264
71457: PUSH
71458: LD_INT 31
71460: EQUAL
71461: NOT
71462: PUSH
71463: LD_VAR 0 1
71467: PPUSH
71468: CALL_OW 310
71472: NOT
71473: OR
71474: IFFALSE 71488
// begin sol = i ;
71476: LD_ADDR_VAR 0 2
71480: PUSH
71481: LD_VAR 0 1
71485: ST_TO_ADDR
// break end ;
71486: GO 71490
71488: GO 71440
71490: POP
71491: POP
// vehicles_linked = [ ] ;
71492: LD_ADDR_VAR 0 4
71496: PUSH
71497: EMPTY
71498: ST_TO_ADDR
// veh = 0 ;
71499: LD_ADDR_VAR 0 3
71503: PUSH
71504: LD_INT 0
71506: ST_TO_ADDR
// if sol = 0 then
71507: LD_VAR 0 2
71511: PUSH
71512: LD_INT 0
71514: EQUAL
71515: IFFALSE 71587
// begin sol = EscortPrepared [ 1 ] ;
71517: LD_ADDR_VAR 0 2
71521: PUSH
71522: LD_EXP 130
71526: PUSH
71527: LD_INT 1
71529: ARRAY
71530: ST_TO_ADDR
// for i in EscortPrepared_vehicles ^ CargosPrepared do
71531: LD_ADDR_VAR 0 1
71535: PUSH
71536: LD_EXP 131
71540: PUSH
71541: LD_EXP 132
71545: ADD
71546: PUSH
71547: FOR_IN
71548: IFFALSE 71585
// if IsControledBy ( i ) = sol then
71550: LD_VAR 0 1
71554: PPUSH
71555: CALL_OW 312
71559: PUSH
71560: LD_VAR 0 2
71564: EQUAL
71565: IFFALSE 71583
// vehicles_linked = vehicles_linked ^ i ;
71567: LD_ADDR_VAR 0 4
71571: PUSH
71572: LD_VAR 0 4
71576: PUSH
71577: LD_VAR 0 1
71581: ADD
71582: ST_TO_ADDR
71583: GO 71547
71585: POP
71586: POP
// end ; clas = getclass ( sol ) ;
71587: LD_ADDR_VAR 0 5
71591: PUSH
71592: LD_VAR 0 2
71596: PPUSH
71597: CALL_OW 257
71601: ST_TO_ADDR
// if not getclass ( sol ) = class_soldier then
71602: LD_VAR 0 2
71606: PPUSH
71607: CALL_OW 257
71611: PUSH
71612: LD_INT 1
71614: EQUAL
71615: NOT
71616: IFFALSE 71630
// setclass ( sol , class_soldier ) ;
71618: LD_VAR 0 2
71622: PPUSH
71623: LD_INT 1
71625: PPUSH
71626: CALL_OW 336
// if isinunit ( sol ) then
71630: LD_VAR 0 2
71634: PPUSH
71635: CALL_OW 310
71639: IFFALSE 71665
// begin veh = isinunit ( sol ) ;
71641: LD_ADDR_VAR 0 3
71645: PUSH
71646: LD_VAR 0 2
71650: PPUSH
71651: CALL_OW 310
71655: ST_TO_ADDR
// comexitvehicle ( sol ) ;
71656: LD_VAR 0 2
71660: PPUSH
71661: CALL_OW 121
// end ; hex = [ [ 136 , 176 ] , [ 138 , 177 ] , [ 136 , 179 ] , [ 138 , 180 ] ] ;
71665: LD_ADDR_VAR 0 6
71669: PUSH
71670: LD_INT 136
71672: PUSH
71673: LD_INT 176
71675: PUSH
71676: EMPTY
71677: LIST
71678: LIST
71679: PUSH
71680: LD_INT 138
71682: PUSH
71683: LD_INT 177
71685: PUSH
71686: EMPTY
71687: LIST
71688: LIST
71689: PUSH
71690: LD_INT 136
71692: PUSH
71693: LD_INT 179
71695: PUSH
71696: EMPTY
71697: LIST
71698: LIST
71699: PUSH
71700: LD_INT 138
71702: PUSH
71703: LD_INT 180
71705: PUSH
71706: EMPTY
71707: LIST
71708: LIST
71709: PUSH
71710: EMPTY
71711: LIST
71712: LIST
71713: LIST
71714: LIST
71715: ST_TO_ADDR
// wait ( 0 0$0.5 ) ;
71716: LD_INT 18
71718: PPUSH
71719: CALL_OW 67
// for i = 1 to 4 do
71723: LD_ADDR_VAR 0 1
71727: PUSH
71728: DOUBLE
71729: LD_INT 1
71731: DEC
71732: ST_TO_ADDR
71733: LD_INT 4
71735: PUSH
71736: FOR_TO
71737: IFFALSE 72016
// begin temp = 0 ;
71739: LD_ADDR_VAR 0 7
71743: PUSH
71744: LD_INT 0
71746: ST_TO_ADDR
// time = 0 ;
71747: LD_ADDR_VAR 0 8
71751: PUSH
71752: LD_INT 0
71754: ST_TO_ADDR
// comagressivemove ( sol , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] ) ;
71755: LD_VAR 0 2
71759: PPUSH
71760: LD_VAR 0 6
71764: PUSH
71765: LD_VAR 0 1
71769: ARRAY
71770: PUSH
71771: LD_INT 1
71773: ARRAY
71774: PPUSH
71775: LD_VAR 0 6
71779: PUSH
71780: LD_VAR 0 1
71784: ARRAY
71785: PUSH
71786: LD_INT 2
71788: ARRAY
71789: PPUSH
71790: CALL_OW 114
// addcomplaceremotecharge ( sol , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] , 0 ) ;
71794: LD_VAR 0 2
71798: PPUSH
71799: LD_VAR 0 6
71803: PUSH
71804: LD_VAR 0 1
71808: ARRAY
71809: PUSH
71810: LD_INT 1
71812: ARRAY
71813: PPUSH
71814: LD_VAR 0 6
71818: PUSH
71819: LD_VAR 0 1
71823: ARRAY
71824: PUSH
71825: LD_INT 2
71827: ARRAY
71828: PPUSH
71829: LD_INT 0
71831: PPUSH
71832: CALL_OW 193
// repeat wait ( 1 ) ;
71836: LD_INT 1
71838: PPUSH
71839: CALL_OW 67
// if time = 0 and gettasklist ( sol ) [ 1 ] [ 1 ] = p and getdistunitxy ( sol , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] ) = 0 then
71843: LD_VAR 0 8
71847: PUSH
71848: LD_INT 0
71850: EQUAL
71851: PUSH
71852: LD_VAR 0 2
71856: PPUSH
71857: CALL_OW 437
71861: PUSH
71862: LD_INT 1
71864: ARRAY
71865: PUSH
71866: LD_INT 1
71868: ARRAY
71869: PUSH
71870: LD_STRING p
71872: EQUAL
71873: AND
71874: PUSH
71875: LD_VAR 0 2
71879: PPUSH
71880: LD_VAR 0 6
71884: PUSH
71885: LD_VAR 0 1
71889: ARRAY
71890: PUSH
71891: LD_INT 1
71893: ARRAY
71894: PPUSH
71895: LD_VAR 0 6
71899: PUSH
71900: LD_VAR 0 1
71904: ARRAY
71905: PUSH
71906: LD_INT 2
71908: ARRAY
71909: PPUSH
71910: CALL_OW 297
71914: PUSH
71915: LD_INT 0
71917: EQUAL
71918: AND
71919: IFFALSE 71931
// time = tick ;
71921: LD_ADDR_VAR 0 8
71925: PUSH
71926: LD_OWVAR 1
71930: ST_TO_ADDR
// if time > 0 then
71931: LD_VAR 0 8
71935: PUSH
71936: LD_INT 0
71938: GREATER
71939: IFFALSE 71960
// temp = [ tick - time ] ;
71941: LD_ADDR_VAR 0 7
71945: PUSH
71946: LD_OWVAR 1
71950: PUSH
71951: LD_VAR 0 8
71955: MINUS
71956: PUSH
71957: EMPTY
71958: LIST
71959: ST_TO_ADDR
// until temp [ 1 ] = 55 ;
71960: LD_VAR 0 7
71964: PUSH
71965: LD_INT 1
71967: ARRAY
71968: PUSH
71969: LD_INT 55
71971: EQUAL
71972: IFFALSE 71836
// placemine ( hex [ i ] [ 1 ] , hex [ i ] [ 2 ] , 2 , 0 ) ;
71974: LD_VAR 0 6
71978: PUSH
71979: LD_VAR 0 1
71983: ARRAY
71984: PUSH
71985: LD_INT 1
71987: ARRAY
71988: PPUSH
71989: LD_VAR 0 6
71993: PUSH
71994: LD_VAR 0 1
71998: ARRAY
71999: PUSH
72000: LD_INT 2
72002: ARRAY
72003: PPUSH
72004: LD_INT 2
72006: PPUSH
72007: LD_INT 0
72009: PPUSH
72010: CALL_OW 454
// end ;
72014: GO 71736
72016: POP
72017: POP
// comstop ( sol ) ;
72018: LD_VAR 0 2
72022: PPUSH
72023: CALL_OW 141
// if veh > 0 then
72027: LD_VAR 0 3
72031: PUSH
72032: LD_INT 0
72034: GREATER
72035: IFFALSE 72121
// begin comenterunit ( sol , veh ) ;
72037: LD_VAR 0 2
72041: PPUSH
72042: LD_VAR 0 3
72046: PPUSH
72047: CALL_OW 120
// repeat wait ( 0 0$1 ) ;
72051: LD_INT 35
72053: PPUSH
72054: CALL_OW 67
// until isinunit ( sol ) ;
72058: LD_VAR 0 2
72062: PPUSH
72063: CALL_OW 310
72067: IFFALSE 72051
// setclass ( sol , clas ) ;
72069: LD_VAR 0 2
72073: PPUSH
72074: LD_VAR 0 5
72078: PPUSH
72079: CALL_OW 336
// wait ( 0 0$1 ) ;
72083: LD_INT 35
72085: PPUSH
72086: CALL_OW 67
// for i in vehicles_linked do
72090: LD_ADDR_VAR 0 1
72094: PUSH
72095: LD_VAR 0 4
72099: PUSH
72100: FOR_IN
72101: IFFALSE 72119
// LinkVehicleToHuman ( i , sol ) ;
72103: LD_VAR 0 1
72107: PPUSH
72108: LD_VAR 0 2
72112: PPUSH
72113: CALL_OW 53
72117: GO 72100
72119: POP
72120: POP
// end ; end ;
72121: PPOPN 8
72123: END
// on unitteleported ( teleporter , teleported_unit ) do begin if teleporter = ruteleprt and not getside ( teleported_unit ) = 3 then
72124: LD_VAR 0 1
72128: PUSH
72129: LD_INT 10
72131: EQUAL
72132: PUSH
72133: LD_VAR 0 2
72137: PPUSH
72138: CALL_OW 255
72142: PUSH
72143: LD_INT 3
72145: EQUAL
72146: NOT
72147: AND
72148: IFFALSE 72302
// begin if teleported_unit in CargosPrepared then
72150: LD_VAR 0 2
72154: PUSH
72155: LD_EXP 132
72159: IN
72160: IFFALSE 72178
// CargosPrepared = CargosPrepared diff teleported_unit ;
72162: LD_ADDR_EXP 132
72166: PUSH
72167: LD_EXP 132
72171: PUSH
72172: LD_VAR 0 2
72176: DIFF
72177: ST_TO_ADDR
// if IsDrivenBy ( teleported_unit ) in EscortPrepared then
72178: LD_VAR 0 2
72182: PPUSH
72183: CALL_OW 311
72187: PUSH
72188: LD_EXP 130
72192: IN
72193: IFFALSE 72216
// EscortPrepared = EscortPrepared diff IsDrivenBy ( teleported_unit ) ;
72195: LD_ADDR_EXP 130
72199: PUSH
72200: LD_EXP 130
72204: PUSH
72205: LD_VAR 0 2
72209: PPUSH
72210: CALL_OW 311
72214: DIFF
72215: ST_TO_ADDR
// if teleported_unit in EscortPrepared_vehicles then
72216: LD_VAR 0 2
72220: PUSH
72221: LD_EXP 131
72225: IN
72226: IFFALSE 72244
// EscortPrepared_vehicles = EscortPrepared_vehicles diff teleported_unit ;
72228: LD_ADDR_EXP 131
72232: PUSH
72233: LD_EXP 131
72237: PUSH
72238: LD_VAR 0 2
72242: DIFF
72243: ST_TO_ADDR
// if not getside ( ruteleprt ) = 3 and Teleport_status > 0 then
72244: LD_INT 10
72246: PPUSH
72247: CALL_OW 255
72251: PUSH
72252: LD_INT 3
72254: EQUAL
72255: NOT
72256: PUSH
72257: LD_EXP 112
72261: PUSH
72262: LD_INT 0
72264: GREATER
72265: AND
72266: IFFALSE 72284
// begin wait ( 0 0$1 ) ;
72268: LD_INT 35
72270: PPUSH
72271: CALL_OW 67
// destroyunit ( teleported_unit ) ;
72275: LD_VAR 0 2
72279: PPUSH
72280: CALL_OW 65
// end ; if teleportation_test = 0 then
72284: LD_EXP 113
72288: PUSH
72289: LD_INT 0
72291: EQUAL
72292: IFFALSE 72302
// begin Teleportation_test = 1 ;
72294: LD_ADDR_EXP 113
72298: PUSH
72299: LD_INT 1
72301: ST_TO_ADDR
// end ; end ; end ;
72302: PPOPN 2
72304: END
// every 0 0$1 trigger MissionEnd do var i , j , temp , temp_list , un_list , name_list , TeamPeople , TeamVehicles ; var playerhumans , playerapes ;
72305: LD_EXP 188
72309: IFFALSE 73814
72311: GO 72313
72313: DISABLE
72314: LD_INT 0
72316: PPUSH
72317: PPUSH
72318: PPUSH
72319: PPUSH
72320: PPUSH
72321: PPUSH
72322: PPUSH
72323: PPUSH
72324: PPUSH
72325: PPUSH
// begin SetAreaMapShow ( exit_heike , 1 ) ;
72326: LD_INT 29
72328: PPUSH
72329: LD_INT 1
72331: PPUSH
72332: CALL_OW 424
// TeamVehicles = [ ] ;
72336: LD_ADDR_VAR 0 8
72340: PUSH
72341: EMPTY
72342: ST_TO_ADDR
// TeamPeople = [ ] ;
72343: LD_ADDR_VAR 0 7
72347: PUSH
72348: EMPTY
72349: ST_TO_ADDR
// playerapes = filterallunits ( [ [ f_placed ] , [ f_side , 2 ] , [ f_type , unit_human ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ) ;
72350: LD_ADDR_VAR 0 10
72354: PUSH
72355: LD_INT 52
72357: PUSH
72358: EMPTY
72359: LIST
72360: PUSH
72361: LD_INT 22
72363: PUSH
72364: LD_INT 2
72366: PUSH
72367: EMPTY
72368: LIST
72369: LIST
72370: PUSH
72371: LD_INT 21
72373: PUSH
72374: LD_INT 1
72376: PUSH
72377: EMPTY
72378: LIST
72379: LIST
72380: PUSH
72381: LD_INT 2
72383: PUSH
72384: LD_INT 25
72386: PUSH
72387: LD_INT 12
72389: PUSH
72390: EMPTY
72391: LIST
72392: LIST
72393: PUSH
72394: LD_INT 25
72396: PUSH
72397: LD_INT 15
72399: PUSH
72400: EMPTY
72401: LIST
72402: LIST
72403: PUSH
72404: LD_INT 25
72406: PUSH
72407: LD_INT 17
72409: PUSH
72410: EMPTY
72411: LIST
72412: LIST
72413: PUSH
72414: EMPTY
72415: LIST
72416: LIST
72417: LIST
72418: LIST
72419: PUSH
72420: EMPTY
72421: LIST
72422: LIST
72423: LIST
72424: LIST
72425: PPUSH
72426: CALL_OW 69
72430: ST_TO_ADDR
// playerhumans = filterallunits ( [ [ f_placed ] , [ f_side , 2 ] , [ f_type , unit_human ] ] ) ;
72431: LD_ADDR_VAR 0 9
72435: PUSH
72436: LD_INT 52
72438: PUSH
72439: EMPTY
72440: LIST
72441: PUSH
72442: LD_INT 22
72444: PUSH
72445: LD_INT 2
72447: PUSH
72448: EMPTY
72449: LIST
72450: LIST
72451: PUSH
72452: LD_INT 21
72454: PUSH
72455: LD_INT 1
72457: PUSH
72458: EMPTY
72459: LIST
72460: LIST
72461: PUSH
72462: EMPTY
72463: LIST
72464: LIST
72465: LIST
72466: PPUSH
72467: CALL_OW 69
72471: ST_TO_ADDR
// playerhumans = playerhumans diff playerapes ;
72472: LD_ADDR_VAR 0 9
72476: PUSH
72477: LD_VAR 0 9
72481: PUSH
72482: LD_VAR 0 10
72486: DIFF
72487: ST_TO_ADDR
// for i in filterunitsinarea ( exit_heike , [ [ f_side , 2 ] , [ f_control , control_manual ] ] ) do
72488: LD_ADDR_VAR 0 1
72492: PUSH
72493: LD_INT 29
72495: PPUSH
72496: LD_INT 22
72498: PUSH
72499: LD_INT 2
72501: PUSH
72502: EMPTY
72503: LIST
72504: LIST
72505: PUSH
72506: LD_INT 33
72508: PUSH
72509: LD_INT 1
72511: PUSH
72512: EMPTY
72513: LIST
72514: LIST
72515: PUSH
72516: EMPTY
72517: LIST
72518: LIST
72519: PPUSH
72520: CALL_OW 70
72524: PUSH
72525: FOR_IN
72526: IFFALSE 72579
// if peopleremainingcount ( TeamPeople , playerhumans ) > PlayerMinimumPeople then
72528: LD_VAR 0 7
72532: PPUSH
72533: LD_VAR 0 9
72537: PPUSH
72538: CALL 73817 0 2
72542: PUSH
72543: LD_EXP 189
72547: GREATER
72548: IFFALSE 72577
// if isdrivenby ( i ) then
72550: LD_VAR 0 1
72554: PPUSH
72555: CALL_OW 311
72559: IFFALSE 72577
// begin TeamVehicles = TeamVehicles ^ i ;
72561: LD_ADDR_VAR 0 8
72565: PUSH
72566: LD_VAR 0 8
72570: PUSH
72571: LD_VAR 0 1
72575: ADD
72576: ST_TO_ADDR
// end ;
72577: GO 72525
72579: POP
72580: POP
// for i in unitfilter ( playerhumans , [ f_inarea , exit_heike ] ) do
72581: LD_ADDR_VAR 0 1
72585: PUSH
72586: LD_VAR 0 9
72590: PPUSH
72591: LD_INT 95
72593: PUSH
72594: LD_INT 29
72596: PUSH
72597: EMPTY
72598: LIST
72599: LIST
72600: PPUSH
72601: CALL_OW 72
72605: PUSH
72606: FOR_IN
72607: IFFALSE 72649
// if peopleremainingcount ( TeamPeople , playerhumans ) > PlayerMinimumPeople then
72609: LD_VAR 0 7
72613: PPUSH
72614: LD_VAR 0 9
72618: PPUSH
72619: CALL 73817 0 2
72623: PUSH
72624: LD_EXP 189
72628: GREATER
72629: IFFALSE 72647
// TeamPeople = TeamPeople ^ i ;
72631: LD_ADDR_VAR 0 7
72635: PUSH
72636: LD_VAR 0 7
72640: PUSH
72641: LD_VAR 0 1
72645: ADD
72646: ST_TO_ADDR
72647: GO 72606
72649: POP
72650: POP
// for i in unitfilter ( playerapes , [ f_inarea , exit_heike ] ) do
72651: LD_ADDR_VAR 0 1
72655: PUSH
72656: LD_VAR 0 10
72660: PPUSH
72661: LD_INT 95
72663: PUSH
72664: LD_INT 29
72666: PUSH
72667: EMPTY
72668: LIST
72669: LIST
72670: PPUSH
72671: CALL_OW 72
72675: PUSH
72676: FOR_IN
72677: IFFALSE 72710
// if not i = Gonzo then
72679: LD_VAR 0 1
72683: PUSH
72684: LD_EXP 24
72688: EQUAL
72689: NOT
72690: IFFALSE 72708
// TeamPeople = TeamPeople ^ i ;
72692: LD_ADDR_VAR 0 7
72696: PUSH
72697: LD_VAR 0 7
72701: PUSH
72702: LD_VAR 0 1
72706: ADD
72707: ST_TO_ADDR
72708: GO 72676
72710: POP
72711: POP
// for i in filterunitsinarea ( exit_heike , [ [ f_side , 2 ] , [ f_or , [ f_control , control_apeman ] , [ f_control , control_remote ] ] ] ) do
72712: LD_ADDR_VAR 0 1
72716: PUSH
72717: LD_INT 29
72719: PPUSH
72720: LD_INT 22
72722: PUSH
72723: LD_INT 2
72725: PUSH
72726: EMPTY
72727: LIST
72728: LIST
72729: PUSH
72730: LD_INT 2
72732: PUSH
72733: LD_INT 33
72735: PUSH
72736: LD_INT 5
72738: PUSH
72739: EMPTY
72740: LIST
72741: LIST
72742: PUSH
72743: LD_INT 33
72745: PUSH
72746: LD_INT 2
72748: PUSH
72749: EMPTY
72750: LIST
72751: LIST
72752: PUSH
72753: EMPTY
72754: LIST
72755: LIST
72756: LIST
72757: PUSH
72758: EMPTY
72759: LIST
72760: LIST
72761: PPUSH
72762: CALL_OW 70
72766: PUSH
72767: FOR_IN
72768: IFFALSE 72838
// if GetControl ( i ) = control_remote then
72770: LD_VAR 0 1
72774: PPUSH
72775: CALL_OW 263
72779: PUSH
72780: LD_INT 2
72782: EQUAL
72783: IFFALSE 72820
// begin if IsControledBy ( i ) in TeamPeople then
72785: LD_VAR 0 1
72789: PPUSH
72790: CALL_OW 312
72794: PUSH
72795: LD_VAR 0 7
72799: IN
72800: IFFALSE 72818
// TeamVehicles = TeamVehicles ^ i ;
72802: LD_ADDR_VAR 0 8
72806: PUSH
72807: LD_VAR 0 8
72811: PUSH
72812: LD_VAR 0 1
72816: ADD
72817: ST_TO_ADDR
// end else
72818: GO 72836
// TeamVehicles = TeamVehicles ^ i ;
72820: LD_ADDR_VAR 0 8
72824: PUSH
72825: LD_VAR 0 8
72829: PUSH
72830: LD_VAR 0 1
72834: ADD
72835: ST_TO_ADDR
72836: GO 72767
72838: POP
72839: POP
// if isinarea ( heike , exit_heike ) and peopleremainingcount ( TeamPeople , playerhumans ) = PlayerMinimumPeople then
72840: LD_EXP 12
72844: PPUSH
72845: LD_INT 29
72847: PPUSH
72848: CALL_OW 308
72852: PUSH
72853: LD_VAR 0 7
72857: PPUSH
72858: LD_VAR 0 9
72862: PPUSH
72863: CALL 73817 0 2
72867: PUSH
72868: LD_EXP 189
72872: EQUAL
72873: AND
72874: IFFALSE 73813
// if query3_time + 0 0$10 < tick then
72876: LD_EXP 147
72880: PUSH
72881: LD_INT 350
72883: PLUS
72884: PUSH
72885: LD_OWVAR 1
72889: LESS
72890: IFFALSE 73813
// begin query3_time = tick ;
72892: LD_ADDR_EXP 147
72896: PUSH
72897: LD_OWVAR 1
72901: ST_TO_ADDR
// case SelectiveQuery ( Rescue_query , [ 1 , 2 ] ) of 1 :
72902: LD_STRING Rescue_query
72904: PPUSH
72905: LD_INT 1
72907: PUSH
72908: LD_INT 2
72910: PUSH
72911: EMPTY
72912: LIST
72913: LIST
72914: PPUSH
72915: CALL_OW 98
72919: PUSH
72920: LD_INT 1
72922: DOUBLE
72923: EQUAL
72924: IFTRUE 72928
72926: GO 73812
72928: POP
// begin Say ( Heike , Tr3_He3 ) ;
72929: LD_EXP 12
72933: PPUSH
72934: LD_STRING Tr3_He3
72936: PPUSH
72937: CALL_OW 88
// temp = [ ] ;
72941: LD_ADDR_VAR 0 3
72945: PUSH
72946: EMPTY
72947: ST_TO_ADDR
// for i in TeamVehicles do
72948: LD_ADDR_VAR 0 1
72952: PUSH
72953: LD_VAR 0 8
72957: PUSH
72958: FOR_IN
72959: IFFALSE 73034
// temp = temp ^ [ [ GetNation ( i ) , GetWeapon ( i ) , GetChassis ( i ) , GetControl ( i ) , GetEngine ( i ) ] ] ;
72961: LD_ADDR_VAR 0 3
72965: PUSH
72966: LD_VAR 0 3
72970: PUSH
72971: LD_VAR 0 1
72975: PPUSH
72976: CALL_OW 248
72980: PUSH
72981: LD_VAR 0 1
72985: PPUSH
72986: CALL_OW 264
72990: PUSH
72991: LD_VAR 0 1
72995: PPUSH
72996: CALL_OW 265
73000: PUSH
73001: LD_VAR 0 1
73005: PPUSH
73006: CALL_OW 263
73010: PUSH
73011: LD_VAR 0 1
73015: PPUSH
73016: CALL_OW 262
73020: PUSH
73021: EMPTY
73022: LIST
73023: LIST
73024: LIST
73025: LIST
73026: LIST
73027: PUSH
73028: EMPTY
73029: LIST
73030: ADD
73031: ST_TO_ADDR
73032: GO 72958
73034: POP
73035: POP
// SaveVariable ( temp , Rescue_Vehicles_14 ) ;
73036: LD_VAR 0 3
73040: PPUSH
73041: LD_STRING Rescue_Vehicles_14
73043: PPUSH
73044: CALL_OW 39
// un_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
73048: LD_ADDR_VAR 0 5
73052: PUSH
73053: LD_EXP 12
73057: PUSH
73058: LD_EXP 15
73062: PUSH
73063: LD_EXP 13
73067: PUSH
73068: LD_EXP 14
73072: PUSH
73073: LD_EXP 16
73077: PUSH
73078: LD_EXP 17
73082: PUSH
73083: LD_EXP 19
73087: PUSH
73088: LD_EXP 21
73092: PUSH
73093: LD_EXP 22
73097: PUSH
73098: LD_EXP 18
73102: PUSH
73103: LD_EXP 20
73107: PUSH
73108: LD_EXP 23
73112: PUSH
73113: EMPTY
73114: LIST
73115: LIST
73116: LIST
73117: LIST
73118: LIST
73119: LIST
73120: LIST
73121: LIST
73122: LIST
73123: LIST
73124: LIST
73125: LIST
73126: ST_TO_ADDR
// name_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
73127: LD_ADDR_VAR 0 6
73131: PUSH
73132: LD_STRING Heike
73134: PUSH
73135: LD_STRING Oswald
73137: PUSH
73138: LD_STRING Olaf
73140: PUSH
73141: LD_STRING Sonya
73143: PUSH
73144: LD_STRING Ralph
73146: PUSH
73147: LD_STRING Kowalski
73149: PUSH
73150: LD_STRING Aviradze
73152: PUSH
73153: LD_STRING Swansson
73155: PUSH
73156: LD_STRING Dwayne
73158: PUSH
73159: LD_STRING Khattam
73161: PUSH
73162: LD_STRING Evelyn
73164: PUSH
73165: LD_STRING Makise
73167: PUSH
73168: EMPTY
73169: LIST
73170: LIST
73171: LIST
73172: LIST
73173: LIST
73174: LIST
73175: LIST
73176: LIST
73177: LIST
73178: LIST
73179: LIST
73180: LIST
73181: ST_TO_ADDR
// for i = 1 to un_list do
73182: LD_ADDR_VAR 0 1
73186: PUSH
73187: DOUBLE
73188: LD_INT 1
73190: DEC
73191: ST_TO_ADDR
73192: LD_VAR 0 5
73196: PUSH
73197: FOR_TO
73198: IFFALSE 73250
// if un_list [ i ] in TeamPeople then
73200: LD_VAR 0 5
73204: PUSH
73205: LD_VAR 0 1
73209: ARRAY
73210: PUSH
73211: LD_VAR 0 7
73215: IN
73216: IFFALSE 73248
// SaveCharacters ( un_list [ i ] , name_list [ i ] & _Rescue_14_cont ) ;
73218: LD_VAR 0 5
73222: PUSH
73223: LD_VAR 0 1
73227: ARRAY
73228: PPUSH
73229: LD_VAR 0 6
73233: PUSH
73234: LD_VAR 0 1
73238: ARRAY
73239: PUSH
73240: LD_STRING _Rescue_14_cont
73242: STR
73243: PPUSH
73244: CALL_OW 38
73248: GO 73197
73250: POP
73251: POP
// SaveCharacters ( TeamPeople diff ( un_list ^ playerapes ) , Others_Rescue_14_cont ) ;
73252: LD_VAR 0 7
73256: PUSH
73257: LD_VAR 0 5
73261: PUSH
73262: LD_VAR 0 10
73266: ADD
73267: DIFF
73268: PPUSH
73269: LD_STRING Others_Rescue_14_cont
73271: PPUSH
73272: CALL_OW 38
// temp = [ ] ;
73276: LD_ADDR_VAR 0 3
73280: PUSH
73281: EMPTY
73282: ST_TO_ADDR
// for i in TeamPeople do
73283: LD_ADDR_VAR 0 1
73287: PUSH
73288: LD_VAR 0 7
73292: PUSH
73293: FOR_IN
73294: IFFALSE 73326
// if i in PlayerApes then
73296: LD_VAR 0 1
73300: PUSH
73301: LD_VAR 0 10
73305: IN
73306: IFFALSE 73324
// temp = temp ^ i ;
73308: LD_ADDR_VAR 0 3
73312: PUSH
73313: LD_VAR 0 3
73317: PUSH
73318: LD_VAR 0 1
73322: ADD
73323: ST_TO_ADDR
73324: GO 73293
73326: POP
73327: POP
// if temp > 0 then
73328: LD_VAR 0 3
73332: PUSH
73333: LD_INT 0
73335: GREATER
73336: IFFALSE 73350
// SaveCharacters ( temp , Apes_Rescue_14_cont ) ;
73338: LD_VAR 0 3
73342: PPUSH
73343: LD_STRING Apes_Rescue_14_cont
73345: PPUSH
73346: CALL_OW 38
// if GetLives ( Gonzo ) > 0 then
73350: LD_EXP 24
73354: PPUSH
73355: CALL_OW 256
73359: PUSH
73360: LD_INT 0
73362: GREATER
73363: IFFALSE 73377
// SaveCharacters ( Gonzo , Gonzo_Rescue_14_cont ) ;
73365: LD_EXP 24
73369: PPUSH
73370: LD_STRING Gonzo_Rescue_14_cont
73372: PPUSH
73373: CALL_OW 38
// temp = [ Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ^ ( TeamPeople diff ( un_list ^ playerapes ) ) ;
73377: LD_ADDR_VAR 0 3
73381: PUSH
73382: LD_EXP 12
73386: PUSH
73387: LD_EXP 13
73391: PUSH
73392: LD_EXP 14
73396: PUSH
73397: LD_EXP 15
73401: PUSH
73402: LD_EXP 16
73406: PUSH
73407: LD_EXP 17
73411: PUSH
73412: LD_EXP 19
73416: PUSH
73417: LD_EXP 21
73421: PUSH
73422: LD_EXP 22
73426: PUSH
73427: LD_EXP 18
73431: PUSH
73432: LD_EXP 20
73436: PUSH
73437: LD_EXP 23
73441: PUSH
73442: EMPTY
73443: LIST
73444: LIST
73445: LIST
73446: LIST
73447: LIST
73448: LIST
73449: LIST
73450: LIST
73451: LIST
73452: LIST
73453: LIST
73454: LIST
73455: PUSH
73456: LD_VAR 0 7
73460: PUSH
73461: LD_VAR 0 5
73465: PUSH
73466: LD_VAR 0 10
73470: ADD
73471: DIFF
73472: ADD
73473: ST_TO_ADDR
// temp_list = [ ] ;
73474: LD_ADDR_VAR 0 4
73478: PUSH
73479: EMPTY
73480: ST_TO_ADDR
// for i = 1 to TeamVehicles do
73481: LD_ADDR_VAR 0 1
73485: PUSH
73486: DOUBLE
73487: LD_INT 1
73489: DEC
73490: ST_TO_ADDR
73491: LD_VAR 0 8
73495: PUSH
73496: FOR_TO
73497: IFFALSE 73614
// for j = 1 to temp do
73499: LD_ADDR_VAR 0 2
73503: PUSH
73504: DOUBLE
73505: LD_INT 1
73507: DEC
73508: ST_TO_ADDR
73509: LD_VAR 0 3
73513: PUSH
73514: FOR_TO
73515: IFFALSE 73610
// if getcontrol ( TeamVehicles [ i ] ) = control_manual then
73517: LD_VAR 0 8
73521: PUSH
73522: LD_VAR 0 1
73526: ARRAY
73527: PPUSH
73528: CALL_OW 263
73532: PUSH
73533: LD_INT 1
73535: EQUAL
73536: IFFALSE 73608
// if IsDrivenBy ( TeamVehicles [ i ] ) = temp [ j ] then
73538: LD_VAR 0 8
73542: PUSH
73543: LD_VAR 0 1
73547: ARRAY
73548: PPUSH
73549: CALL_OW 311
73553: PUSH
73554: LD_VAR 0 3
73558: PUSH
73559: LD_VAR 0 2
73563: ARRAY
73564: EQUAL
73565: IFFALSE 73608
// begin temp = replace ( temp , j , i ) ;
73567: LD_ADDR_VAR 0 3
73571: PUSH
73572: LD_VAR 0 3
73576: PPUSH
73577: LD_VAR 0 2
73581: PPUSH
73582: LD_VAR 0 1
73586: PPUSH
73587: CALL_OW 1
73591: ST_TO_ADDR
// temp_list = temp_list ^ j ;
73592: LD_ADDR_VAR 0 4
73596: PUSH
73597: LD_VAR 0 4
73601: PUSH
73602: LD_VAR 0 2
73606: ADD
73607: ST_TO_ADDR
// end ;
73608: GO 73514
73610: POP
73611: POP
73612: GO 73496
73614: POP
73615: POP
// for i = 1 to temp do
73616: LD_ADDR_VAR 0 1
73620: PUSH
73621: DOUBLE
73622: LD_INT 1
73624: DEC
73625: ST_TO_ADDR
73626: LD_VAR 0 3
73630: PUSH
73631: FOR_TO
73632: IFFALSE 73672
// if not i in temp_list then
73634: LD_VAR 0 1
73638: PUSH
73639: LD_VAR 0 4
73643: IN
73644: NOT
73645: IFFALSE 73670
// temp = replace ( temp , i , 0 ) ;
73647: LD_ADDR_VAR 0 3
73651: PUSH
73652: LD_VAR 0 3
73656: PPUSH
73657: LD_VAR 0 1
73661: PPUSH
73662: LD_INT 0
73664: PPUSH
73665: CALL_OW 1
73669: ST_TO_ADDR
73670: GO 73631
73672: POP
73673: POP
// SaveVariable ( temp , Rescue_drivers_14 ) ;
73674: LD_VAR 0 3
73678: PPUSH
73679: LD_STRING Rescue_drivers_14
73681: PPUSH
73682: CALL_OW 39
// for i in filterallunits ( [ f_control , control_remote ] ) diff TeamVehicles do
73686: LD_ADDR_VAR 0 1
73690: PUSH
73691: LD_INT 33
73693: PUSH
73694: LD_INT 2
73696: PUSH
73697: EMPTY
73698: LIST
73699: LIST
73700: PPUSH
73701: CALL_OW 69
73705: PUSH
73706: LD_VAR 0 8
73710: DIFF
73711: PUSH
73712: FOR_IN
73713: IFFALSE 73743
// if IsControledBy ( i ) in TeamPeople then
73715: LD_VAR 0 1
73719: PPUSH
73720: CALL_OW 312
73724: PUSH
73725: LD_VAR 0 7
73729: IN
73730: IFFALSE 73741
// comUnlink ( i ) ;
73732: LD_VAR 0 1
73736: PPUSH
73737: CALL_OW 136
73741: GO 73712
73743: POP
73744: POP
// for i in TeamPeople ^ TeamVehicles do
73745: LD_ADDR_VAR 0 1
73749: PUSH
73750: LD_VAR 0 7
73754: PUSH
73755: LD_VAR 0 8
73759: ADD
73760: PUSH
73761: FOR_IN
73762: IFFALSE 73775
// removeunit ( i ) ;
73764: LD_VAR 0 1
73768: PPUSH
73769: CALL_OW 64
73773: GO 73761
73775: POP
73776: POP
// if IsInArea ( Gonzo , exit_heike ) then
73777: LD_EXP 24
73781: PPUSH
73782: LD_INT 29
73784: PPUSH
73785: CALL_OW 308
73789: IFFALSE 73800
// removeunit ( Gonzo ) ;
73791: LD_EXP 24
73795: PPUSH
73796: CALL_OW 64
// HeikeSent = 1 ;
73800: LD_ADDR_EXP 178
73804: PUSH
73805: LD_INT 1
73807: ST_TO_ADDR
// exit ;
73808: GO 73814
// end ; end ;
73810: GO 73813
73812: POP
// end ; enable ;
73813: ENABLE
// end ;
73814: PPOPN 10
73816: END
// function peopleremainingcount ( rescue , allpeople ) ; var i , count ; begin
73817: LD_INT 0
73819: PPUSH
73820: PPUSH
73821: PPUSH
// if allpeople = 0 then
73822: LD_VAR 0 2
73826: PUSH
73827: LD_INT 0
73829: EQUAL
73830: IFFALSE 73842
// begin result = 0 ;
73832: LD_ADDR_VAR 0 3
73836: PUSH
73837: LD_INT 0
73839: ST_TO_ADDR
// exit ;
73840: GO 73947
// end ; count = 0 ;
73842: LD_ADDR_VAR 0 5
73846: PUSH
73847: LD_INT 0
73849: ST_TO_ADDR
// if rescue = 0 then
73850: LD_VAR 0 1
73854: PUSH
73855: LD_INT 0
73857: EQUAL
73858: IFFALSE 73893
// begin for i in allpeople do
73860: LD_ADDR_VAR 0 4
73864: PUSH
73865: LD_VAR 0 2
73869: PUSH
73870: FOR_IN
73871: IFFALSE 73889
// count = count + 1 ;
73873: LD_ADDR_VAR 0 5
73877: PUSH
73878: LD_VAR 0 5
73882: PUSH
73883: LD_INT 1
73885: PLUS
73886: ST_TO_ADDR
73887: GO 73870
73889: POP
73890: POP
// end else
73891: GO 73937
// for i in allpeople do
73893: LD_ADDR_VAR 0 4
73897: PUSH
73898: LD_VAR 0 2
73902: PUSH
73903: FOR_IN
73904: IFFALSE 73935
// if not i in rescue then
73906: LD_VAR 0 4
73910: PUSH
73911: LD_VAR 0 1
73915: IN
73916: NOT
73917: IFFALSE 73933
// count = count + 1 ;
73919: LD_ADDR_VAR 0 5
73923: PUSH
73924: LD_VAR 0 5
73928: PUSH
73929: LD_INT 1
73931: PLUS
73932: ST_TO_ADDR
73933: GO 73903
73935: POP
73936: POP
// result = count ;
73937: LD_ADDR_VAR 0 3
73941: PUSH
73942: LD_VAR 0 5
73946: ST_TO_ADDR
// end ;
73947: LD_VAR 0 3
73951: RET
// every 1 trigger entering_teleport_unit and teleport_status > 0 do var un , i , j , temp , temp_list ;
73952: LD_EXP 167
73956: PUSH
73957: LD_EXP 112
73961: PUSH
73962: LD_INT 0
73964: GREATER
73965: AND
73966: IFFALSE 74403
73968: GO 73970
73970: DISABLE
73971: LD_INT 0
73973: PPUSH
73974: PPUSH
73975: PPUSH
73976: PPUSH
73977: PPUSH
// begin temp_list = [ ] ;
73978: LD_ADDR_VAR 0 5
73982: PUSH
73983: EMPTY
73984: ST_TO_ADDR
// for i in entering_teleport_unit do
73985: LD_ADDR_VAR 0 2
73989: PUSH
73990: LD_EXP 167
73994: PUSH
73995: FOR_IN
73996: IFFALSE 74189
// begin if getdistunitxy ( i , 137 , 177 ) < 5 or getdistunitxy ( i , 137 , 179 ) < 5 then
73998: LD_VAR 0 2
74002: PPUSH
74003: LD_INT 137
74005: PPUSH
74006: LD_INT 177
74008: PPUSH
74009: CALL_OW 297
74013: PUSH
74014: LD_INT 5
74016: LESS
74017: PUSH
74018: LD_VAR 0 2
74022: PPUSH
74023: LD_INT 137
74025: PPUSH
74026: LD_INT 179
74028: PPUSH
74029: CALL_OW 297
74033: PUSH
74034: LD_INT 5
74036: LESS
74037: OR
74038: IFFALSE 74061
// begin setside ( i , 5 ) ;
74040: LD_VAR 0 2
74044: PPUSH
74045: LD_INT 5
74047: PPUSH
74048: CALL_OW 235
// comstop ( i ) ;
74052: LD_VAR 0 2
74056: PPUSH
74057: CALL_OW 141
// end ; if hastask ( i ) = 0 and getside ( i ) = 2 then
74061: LD_VAR 0 2
74065: PPUSH
74066: CALL_OW 314
74070: PUSH
74071: LD_INT 0
74073: EQUAL
74074: PUSH
74075: LD_VAR 0 2
74079: PPUSH
74080: CALL_OW 255
74084: PUSH
74085: LD_INT 2
74087: EQUAL
74088: AND
74089: IFFALSE 74109
// temp_list = temp_list ^ i else
74091: LD_ADDR_VAR 0 5
74095: PUSH
74096: LD_VAR 0 5
74100: PUSH
74101: LD_VAR 0 2
74105: ADD
74106: ST_TO_ADDR
74107: GO 74187
// begin temp = 0 ;
74109: LD_ADDR_VAR 0 4
74113: PUSH
74114: LD_INT 0
74116: ST_TO_ADDR
// for j in Gettasklist ( i ) do
74117: LD_ADDR_VAR 0 3
74121: PUSH
74122: LD_VAR 0 2
74126: PPUSH
74127: CALL_OW 437
74131: PUSH
74132: FOR_IN
74133: IFFALSE 74159
// if j [ 1 ] = q then
74135: LD_VAR 0 3
74139: PUSH
74140: LD_INT 1
74142: ARRAY
74143: PUSH
74144: LD_STRING q
74146: EQUAL
74147: IFFALSE 74157
// temp = 1 ;
74149: LD_ADDR_VAR 0 4
74153: PUSH
74154: LD_INT 1
74156: ST_TO_ADDR
74157: GO 74132
74159: POP
74160: POP
// if temp = 0 then
74161: LD_VAR 0 4
74165: PUSH
74166: LD_INT 0
74168: EQUAL
74169: IFFALSE 74187
// temp_list = temp_list ^ i ;
74171: LD_ADDR_VAR 0 5
74175: PUSH
74176: LD_VAR 0 5
74180: PUSH
74181: LD_VAR 0 2
74185: ADD
74186: ST_TO_ADDR
// end ; end ;
74187: GO 73995
74189: POP
74190: POP
// entering_teleport_unit = entering_teleport_unit diff temp_list ;
74191: LD_ADDR_EXP 167
74195: PUSH
74196: LD_EXP 167
74200: PUSH
74201: LD_VAR 0 5
74205: DIFF
74206: ST_TO_ADDR
// temp_list = unitfilter ( entering_teleport_unit , [ f_side , 5 ] ) ;
74207: LD_ADDR_VAR 0 5
74211: PUSH
74212: LD_EXP 167
74216: PPUSH
74217: LD_INT 22
74219: PUSH
74220: LD_INT 5
74222: PUSH
74223: EMPTY
74224: LIST
74225: LIST
74226: PPUSH
74227: CALL_OW 72
74231: ST_TO_ADDR
// if temp_list > 0 then
74232: LD_VAR 0 5
74236: PUSH
74237: LD_INT 0
74239: GREATER
74240: IFFALSE 74402
// begin repeat settasklist ( nearestunittounit ( temp_list , 10 ) , [ [ a , 137 , 175 , 0 , 0 , 0 , 0 ] , [ a , 137 , 176 , 0 , 0 , 0 , 0 ] , [ a , 137 , 177 , 0 , 0 , 0 , 0 ] , [ q , 0 , 0 , 10 , 0 , 0 , 0 ] ] ) ;
74242: LD_VAR 0 5
74246: PPUSH
74247: LD_INT 10
74249: PPUSH
74250: CALL_OW 74
74254: PPUSH
74255: LD_STRING a
74257: PUSH
74258: LD_INT 137
74260: PUSH
74261: LD_INT 175
74263: PUSH
74264: LD_INT 0
74266: PUSH
74267: LD_INT 0
74269: PUSH
74270: LD_INT 0
74272: PUSH
74273: LD_INT 0
74275: PUSH
74276: EMPTY
74277: LIST
74278: LIST
74279: LIST
74280: LIST
74281: LIST
74282: LIST
74283: LIST
74284: PUSH
74285: LD_STRING a
74287: PUSH
74288: LD_INT 137
74290: PUSH
74291: LD_INT 176
74293: PUSH
74294: LD_INT 0
74296: PUSH
74297: LD_INT 0
74299: PUSH
74300: LD_INT 0
74302: PUSH
74303: LD_INT 0
74305: PUSH
74306: EMPTY
74307: LIST
74308: LIST
74309: LIST
74310: LIST
74311: LIST
74312: LIST
74313: LIST
74314: PUSH
74315: LD_STRING a
74317: PUSH
74318: LD_INT 137
74320: PUSH
74321: LD_INT 177
74323: PUSH
74324: LD_INT 0
74326: PUSH
74327: LD_INT 0
74329: PUSH
74330: LD_INT 0
74332: PUSH
74333: LD_INT 0
74335: PUSH
74336: EMPTY
74337: LIST
74338: LIST
74339: LIST
74340: LIST
74341: LIST
74342: LIST
74343: LIST
74344: PUSH
74345: LD_STRING q
74347: PUSH
74348: LD_INT 0
74350: PUSH
74351: LD_INT 0
74353: PUSH
74354: LD_INT 10
74356: PUSH
74357: LD_INT 0
74359: PUSH
74360: LD_INT 0
74362: PUSH
74363: LD_INT 0
74365: PUSH
74366: EMPTY
74367: LIST
74368: LIST
74369: LIST
74370: LIST
74371: LIST
74372: LIST
74373: LIST
74374: PUSH
74375: EMPTY
74376: LIST
74377: LIST
74378: LIST
74379: LIST
74380: PPUSH
74381: CALL_OW 446
// wait ( 0 0$2 ) ;
74385: LD_INT 70
74387: PPUSH
74388: CALL_OW 67
// until temp_list = 0 ;
74392: LD_VAR 0 5
74396: PUSH
74397: LD_INT 0
74399: EQUAL
74400: IFFALSE 74242
// end ; enable ;
74402: ENABLE
// end ;
74403: PPOPN 5
74405: END
// export function detonate ; var i ; begin
74406: LD_INT 0
74408: PPUSH
74409: PPUSH
// launchmineatpos ( 118 , 72 , 8 ) ;
74410: LD_INT 118
74412: PPUSH
74413: LD_INT 72
74415: PPUSH
74416: LD_INT 8
74418: PPUSH
74419: CALL_OW 456
// launchmineatpos ( 118 , 73 , 8 ) ;
74423: LD_INT 118
74425: PPUSH
74426: LD_INT 73
74428: PPUSH
74429: LD_INT 8
74431: PPUSH
74432: CALL_OW 456
// launchmineatpos ( 76 , 67 , 8 ) ;
74436: LD_INT 76
74438: PPUSH
74439: LD_INT 67
74441: PPUSH
74442: LD_INT 8
74444: PPUSH
74445: CALL_OW 456
// launchmineatpos ( 79 , 67 , 8 ) ;
74449: LD_INT 79
74451: PPUSH
74452: LD_INT 67
74454: PPUSH
74455: LD_INT 8
74457: PPUSH
74458: CALL_OW 456
// launchmineatpos ( 100 , 68 , 8 ) ;
74462: LD_INT 100
74464: PPUSH
74465: LD_INT 68
74467: PPUSH
74468: LD_INT 8
74470: PPUSH
74471: CALL_OW 456
// launchmineatpos ( 81 , 53 , 8 ) ;
74475: LD_INT 81
74477: PPUSH
74478: LD_INT 53
74480: PPUSH
74481: LD_INT 8
74483: PPUSH
74484: CALL_OW 456
// launchmineatpos ( 104 , 65 , 8 ) ;
74488: LD_INT 104
74490: PPUSH
74491: LD_INT 65
74493: PPUSH
74494: LD_INT 8
74496: PPUSH
74497: CALL_OW 456
// if ai_vehicles_defend [ 1 ] > 0 or ai_crane [ 1 ] > 0 then
74501: LD_EXP 57
74505: PUSH
74506: LD_INT 1
74508: ARRAY
74509: PUSH
74510: LD_INT 0
74512: GREATER
74513: PUSH
74514: LD_EXP 78
74518: PUSH
74519: LD_INT 1
74521: ARRAY
74522: PUSH
74523: LD_INT 0
74525: GREATER
74526: OR
74527: IFFALSE 74599
// for i in ai_vehicles_defend [ 1 ] ^ ai_crane [ 1 ] do
74529: LD_ADDR_VAR 0 2
74533: PUSH
74534: LD_EXP 57
74538: PUSH
74539: LD_INT 1
74541: ARRAY
74542: PUSH
74543: LD_EXP 78
74547: PUSH
74548: LD_INT 1
74550: ARRAY
74551: ADD
74552: PUSH
74553: FOR_IN
74554: IFFALSE 74597
// begin mineexplosion ( getx ( i ) , gety ( i ) , 0 ) ;
74556: LD_VAR 0 2
74560: PPUSH
74561: CALL_OW 250
74565: PPUSH
74566: LD_VAR 0 2
74570: PPUSH
74571: CALL_OW 251
74575: PPUSH
74576: LD_INT 0
74578: PPUSH
74579: CALL_OW 453
// setlives ( i , 0 ) ;
74583: LD_VAR 0 2
74587: PPUSH
74588: LD_INT 0
74590: PPUSH
74591: CALL_OW 234
// end ;
74595: GO 74553
74597: POP
74598: POP
// minesready = 0 ;
74599: LD_ADDR_EXP 176
74603: PUSH
74604: LD_INT 0
74606: ST_TO_ADDR
// wait ( 0 0$2 ) ;
74607: LD_INT 70
74609: PPUSH
74610: CALL_OW 67
// if islive ( hexinfo ( 97 , 66 ) ) and getlives ( hexinfo ( 97 , 66 ) ) > 120 then
74614: LD_INT 97
74616: PPUSH
74617: LD_INT 66
74619: PPUSH
74620: CALL_OW 428
74624: PPUSH
74625: CALL_OW 300
74629: PUSH
74630: LD_INT 97
74632: PPUSH
74633: LD_INT 66
74635: PPUSH
74636: CALL_OW 428
74640: PPUSH
74641: CALL_OW 256
74645: PUSH
74646: LD_INT 120
74648: GREATER
74649: AND
74650: IFFALSE 74683
// begin mineexplosion ( 97 , 66 , 0 ) ;
74652: LD_INT 97
74654: PPUSH
74655: LD_INT 66
74657: PPUSH
74658: LD_INT 0
74660: PPUSH
74661: CALL_OW 453
// setlives ( hexinfo ( 97 , 66 ) , 100 ) ;
74665: LD_INT 97
74667: PPUSH
74668: LD_INT 66
74670: PPUSH
74671: CALL_OW 428
74675: PPUSH
74676: LD_INT 100
74678: PPUSH
74679: CALL_OW 234
// end ; if islive ( hexinfo ( 97 , 66 ) ) and getlives ( hexinfo ( 97 , 66 ) ) < 80 then
74683: LD_INT 97
74685: PPUSH
74686: LD_INT 66
74688: PPUSH
74689: CALL_OW 428
74693: PPUSH
74694: CALL_OW 300
74698: PUSH
74699: LD_INT 97
74701: PPUSH
74702: LD_INT 66
74704: PPUSH
74705: CALL_OW 428
74709: PPUSH
74710: CALL_OW 256
74714: PUSH
74715: LD_INT 80
74717: LESS
74718: AND
74719: IFFALSE 74739
// setlives ( hexinfo ( 97 , 66 ) , 100 ) ;
74721: LD_INT 97
74723: PPUSH
74724: LD_INT 66
74726: PPUSH
74727: CALL_OW 428
74731: PPUSH
74732: LD_INT 100
74734: PPUSH
74735: CALL_OW 234
// end ;
74739: LD_VAR 0 1
74743: RET
// every 0 0$1 trigger tick > 27 27$30 and all_variant = 1 do var i , list ;
74744: LD_OWVAR 1
74748: PUSH
74749: LD_INT 57750
74751: GREATER
74752: PUSH
74753: LD_EXP 3
74757: PUSH
74758: LD_INT 1
74760: EQUAL
74761: AND
74762: IFFALSE 75279
74764: GO 74766
74766: DISABLE
74767: LD_INT 0
74769: PPUSH
74770: PPUSH
// begin Randomize ;
74771: CALL_OW 10
// list = [ ] ;
74775: LD_ADDR_VAR 0 2
74779: PUSH
74780: EMPTY
74781: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
74782: LD_INT 1
74784: PPUSH
74785: LD_INT 2
74787: PPUSH
74788: CALL_OW 12
74792: PUSH
74793: LD_INT 1
74795: EQUAL
74796: IFFALSE 74830
// list = list ^ ConvoyRussians [ 2 ] ^ ConvoyAlliance [ 2 ] else
74798: LD_ADDR_VAR 0 2
74802: PUSH
74803: LD_VAR 0 2
74807: PUSH
74808: LD_EXP 149
74812: PUSH
74813: LD_INT 2
74815: ARRAY
74816: ADD
74817: PUSH
74818: LD_EXP 150
74822: PUSH
74823: LD_INT 2
74825: ARRAY
74826: ADD
74827: ST_TO_ADDR
74828: GO 74860
// list = list ^ ConvoyAlliance [ 2 ] ^ ConvoyRussians [ 2 ] ;
74830: LD_ADDR_VAR 0 2
74834: PUSH
74835: LD_VAR 0 2
74839: PUSH
74840: LD_EXP 150
74844: PUSH
74845: LD_INT 2
74847: ARRAY
74848: ADD
74849: PUSH
74850: LD_EXP 149
74854: PUSH
74855: LD_INT 2
74857: ARRAY
74858: ADD
74859: ST_TO_ADDR
// list = list ^ ConvoyCargos [ 1 ] ^ ConvoyCargos [ 2 ] ;
74860: LD_ADDR_VAR 0 2
74864: PUSH
74865: LD_VAR 0 2
74869: PUSH
74870: LD_EXP 148
74874: PUSH
74875: LD_INT 1
74877: ARRAY
74878: ADD
74879: PUSH
74880: LD_EXP 148
74884: PUSH
74885: LD_INT 2
74887: ARRAY
74888: ADD
74889: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
74890: LD_INT 1
74892: PPUSH
74893: LD_INT 2
74895: PPUSH
74896: CALL_OW 12
74900: PUSH
74901: LD_INT 1
74903: EQUAL
74904: IFFALSE 74938
// list = list ^ ConvoyRussians [ 1 ] ^ ConvoyAlliance [ 1 ] else
74906: LD_ADDR_VAR 0 2
74910: PUSH
74911: LD_VAR 0 2
74915: PUSH
74916: LD_EXP 149
74920: PUSH
74921: LD_INT 1
74923: ARRAY
74924: ADD
74925: PUSH
74926: LD_EXP 150
74930: PUSH
74931: LD_INT 1
74933: ARRAY
74934: ADD
74935: ST_TO_ADDR
74936: GO 74968
// list = list ^ ConvoyAlliance [ 1 ] ^ ConvoyRussians [ 1 ] ;
74938: LD_ADDR_VAR 0 2
74942: PUSH
74943: LD_VAR 0 2
74947: PUSH
74948: LD_EXP 150
74952: PUSH
74953: LD_INT 1
74955: ARRAY
74956: ADD
74957: PUSH
74958: LD_EXP 149
74962: PUSH
74963: LD_INT 1
74965: ARRAY
74966: ADD
74967: ST_TO_ADDR
// list = list ^ ConvoyCargos [ 3 ] ^ ConvoyCargos [ 4 ] ;
74968: LD_ADDR_VAR 0 2
74972: PUSH
74973: LD_VAR 0 2
74977: PUSH
74978: LD_EXP 148
74982: PUSH
74983: LD_INT 3
74985: ARRAY
74986: ADD
74987: PUSH
74988: LD_EXP 148
74992: PUSH
74993: LD_INT 4
74995: ARRAY
74996: ADD
74997: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
74998: LD_INT 1
75000: PPUSH
75001: LD_INT 2
75003: PPUSH
75004: CALL_OW 12
75008: PUSH
75009: LD_INT 1
75011: EQUAL
75012: IFFALSE 75046
// list = list ^ ConvoyRussians [ 3 ] ^ ConvoyAlliance [ 3 ] else
75014: LD_ADDR_VAR 0 2
75018: PUSH
75019: LD_VAR 0 2
75023: PUSH
75024: LD_EXP 149
75028: PUSH
75029: LD_INT 3
75031: ARRAY
75032: ADD
75033: PUSH
75034: LD_EXP 150
75038: PUSH
75039: LD_INT 3
75041: ARRAY
75042: ADD
75043: ST_TO_ADDR
75044: GO 75076
// list = list ^ ConvoyAlliance [ 3 ] ^ ConvoyRussians [ 3 ] ;
75046: LD_ADDR_VAR 0 2
75050: PUSH
75051: LD_VAR 0 2
75055: PUSH
75056: LD_EXP 150
75060: PUSH
75061: LD_INT 3
75063: ARRAY
75064: ADD
75065: PUSH
75066: LD_EXP 149
75070: PUSH
75071: LD_INT 3
75073: ARRAY
75074: ADD
75075: ST_TO_ADDR
// list = list ^ ConvoyCargos [ 5 ] ^ ConvoyCargos [ 6 ] ;
75076: LD_ADDR_VAR 0 2
75080: PUSH
75081: LD_VAR 0 2
75085: PUSH
75086: LD_EXP 148
75090: PUSH
75091: LD_INT 5
75093: ARRAY
75094: ADD
75095: PUSH
75096: LD_EXP 148
75100: PUSH
75101: LD_INT 6
75103: ARRAY
75104: ADD
75105: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
75106: LD_INT 1
75108: PPUSH
75109: LD_INT 2
75111: PPUSH
75112: CALL_OW 12
75116: PUSH
75117: LD_INT 1
75119: EQUAL
75120: IFFALSE 75154
// list = list ^ ConvoyRussians [ 4 ] ^ ConvoyAlliance [ 4 ] else
75122: LD_ADDR_VAR 0 2
75126: PUSH
75127: LD_VAR 0 2
75131: PUSH
75132: LD_EXP 149
75136: PUSH
75137: LD_INT 4
75139: ARRAY
75140: ADD
75141: PUSH
75142: LD_EXP 150
75146: PUSH
75147: LD_INT 4
75149: ARRAY
75150: ADD
75151: ST_TO_ADDR
75152: GO 75184
// list = list ^ ConvoyAlliance [ 4 ] ^ ConvoyRussians [ 4 ] ;
75154: LD_ADDR_VAR 0 2
75158: PUSH
75159: LD_VAR 0 2
75163: PUSH
75164: LD_EXP 150
75168: PUSH
75169: LD_INT 4
75171: ARRAY
75172: ADD
75173: PUSH
75174: LD_EXP 149
75178: PUSH
75179: LD_INT 4
75181: ARRAY
75182: ADD
75183: ST_TO_ADDR
// ConvoyAll = list ;
75184: LD_ADDR_EXP 151
75188: PUSH
75189: LD_VAR 0 2
75193: ST_TO_ADDR
// for i in list do
75194: LD_ADDR_VAR 0 1
75198: PUSH
75199: LD_VAR 0 2
75203: PUSH
75204: FOR_IN
75205: IFFALSE 75269
// begin repeat wait ( 0 0$1 ) ;
75207: LD_INT 35
75209: PPUSH
75210: CALL_OW 67
// placeunitarea ( i , convoy_enter , false ) ;
75214: LD_VAR 0 1
75218: PPUSH
75219: LD_INT 28
75221: PPUSH
75222: LD_INT 0
75224: PPUSH
75225: CALL_OW 49
// until isplaced ( i ) ;
75229: LD_VAR 0 1
75233: PPUSH
75234: CALL_OW 305
75238: IFFALSE 75207
// if getweapon ( i ) = ru_cargo_bay then
75240: LD_VAR 0 1
75244: PPUSH
75245: CALL_OW 264
75249: PUSH
75250: LD_INT 51
75252: EQUAL
75253: IFFALSE 75267
// DoNotAttack ( 2 , i ) ;
75255: LD_INT 2
75257: PPUSH
75258: LD_VAR 0 1
75262: PPUSH
75263: CALL_OW 471
// end ;
75267: GO 75204
75269: POP
75270: POP
// Convoy_CargosPlaced = 1 ;
75271: LD_ADDR_EXP 160
75275: PUSH
75276: LD_INT 1
75278: ST_TO_ADDR
// end ;
75279: PPOPN 2
75281: END
// every 0 0$1 trigger isplaced ( convoyrussians [ 2 ] ) or isplaced ( convoyalliance [ 2 ] ) do var i , temp , temp_list , move , un , un_list , ru_drivers , al_drivers , free_drivers , cargo , time ;
75282: LD_EXP 149
75286: PUSH
75287: LD_INT 2
75289: ARRAY
75290: PPUSH
75291: CALL_OW 305
75295: PUSH
75296: LD_EXP 150
75300: PUSH
75301: LD_INT 2
75303: ARRAY
75304: PPUSH
75305: CALL_OW 305
75309: OR
75310: IFFALSE 77933
75312: GO 75314
75314: DISABLE
75315: LD_INT 0
75317: PPUSH
75318: PPUSH
75319: PPUSH
75320: PPUSH
75321: PPUSH
75322: PPUSH
75323: PPUSH
75324: PPUSH
75325: PPUSH
75326: PPUSH
75327: PPUSH
// begin time = 0 0$20 ;
75328: LD_ADDR_VAR 0 11
75332: PUSH
75333: LD_INT 700
75335: ST_TO_ADDR
// ru_drivers = [ ] ;
75336: LD_ADDR_VAR 0 7
75340: PUSH
75341: EMPTY
75342: ST_TO_ADDR
// for i in convoyrussians do
75343: LD_ADDR_VAR 0 1
75347: PUSH
75348: LD_EXP 149
75352: PUSH
75353: FOR_IN
75354: IFFALSE 75379
// ru_drivers = ru_drivers ^ isdrivenby ( i ) ;
75356: LD_ADDR_VAR 0 7
75360: PUSH
75361: LD_VAR 0 7
75365: PUSH
75366: LD_VAR 0 1
75370: PPUSH
75371: CALL_OW 311
75375: ADD
75376: ST_TO_ADDR
75377: GO 75353
75379: POP
75380: POP
// al_drivers = [ ] ;
75381: LD_ADDR_VAR 0 8
75385: PUSH
75386: EMPTY
75387: ST_TO_ADDR
// for i in convoyalliance do
75388: LD_ADDR_VAR 0 1
75392: PUSH
75393: LD_EXP 150
75397: PUSH
75398: FOR_IN
75399: IFFALSE 75424
// al_drivers = al_drivers ^ isdrivenby ( i ) ;
75401: LD_ADDR_VAR 0 8
75405: PUSH
75406: LD_VAR 0 8
75410: PUSH
75411: LD_VAR 0 1
75415: PPUSH
75416: CALL_OW 311
75420: ADD
75421: ST_TO_ADDR
75422: GO 75398
75424: POP
75425: POP
// free_drivers = [ ] ;
75426: LD_ADDR_VAR 0 9
75430: PUSH
75431: EMPTY
75432: ST_TO_ADDR
// repeat wait ( 0 0$0.5 ) ;
75433: LD_INT 18
75435: PPUSH
75436: CALL_OW 67
// for i = 1 to ru_drivers do
75440: LD_ADDR_VAR 0 1
75444: PUSH
75445: DOUBLE
75446: LD_INT 1
75448: DEC
75449: ST_TO_ADDR
75450: LD_VAR 0 7
75454: PUSH
75455: FOR_TO
75456: IFFALSE 75637
// if not isdead ( convoyrussians [ i ] ) then
75458: LD_EXP 149
75462: PUSH
75463: LD_VAR 0 1
75467: ARRAY
75468: PPUSH
75469: CALL_OW 301
75473: NOT
75474: IFFALSE 75571
// begin if not isinunit ( ru_drivers [ i ] ) then
75476: LD_VAR 0 7
75480: PUSH
75481: LD_VAR 0 1
75485: ARRAY
75486: PPUSH
75487: CALL_OW 310
75491: NOT
75492: IFFALSE 75569
// if getlives ( convoyrussians [ i ] ) < 450 then
75494: LD_EXP 149
75498: PUSH
75499: LD_VAR 0 1
75503: ARRAY
75504: PPUSH
75505: CALL_OW 256
75509: PUSH
75510: LD_INT 450
75512: LESS
75513: IFFALSE 75543
// comrepairvehicle ( ru_drivers [ i ] , convoyrussians [ i ] ) else
75515: LD_VAR 0 7
75519: PUSH
75520: LD_VAR 0 1
75524: ARRAY
75525: PPUSH
75526: LD_EXP 149
75530: PUSH
75531: LD_VAR 0 1
75535: ARRAY
75536: PPUSH
75537: CALL_OW 129
75541: GO 75569
// comenterunit ( ru_drivers [ i ] , convoyrussians [ i ] ) ;
75543: LD_VAR 0 7
75547: PUSH
75548: LD_VAR 0 1
75552: ARRAY
75553: PPUSH
75554: LD_EXP 149
75558: PUSH
75559: LD_VAR 0 1
75563: ARRAY
75564: PPUSH
75565: CALL_OW 120
// end else
75569: GO 75635
// begin convoyrussians = delete ( convoyrussians , i ) ;
75571: LD_ADDR_EXP 149
75575: PUSH
75576: LD_EXP 149
75580: PPUSH
75581: LD_VAR 0 1
75585: PPUSH
75586: CALL_OW 3
75590: ST_TO_ADDR
// free_drivers = free_drivers ^ ru_drivers [ i ] ;
75591: LD_ADDR_VAR 0 9
75595: PUSH
75596: LD_VAR 0 9
75600: PUSH
75601: LD_VAR 0 7
75605: PUSH
75606: LD_VAR 0 1
75610: ARRAY
75611: ADD
75612: ST_TO_ADDR
// ru_drivers = delete ( ru_drivers , i ) ;
75613: LD_ADDR_VAR 0 7
75617: PUSH
75618: LD_VAR 0 7
75622: PPUSH
75623: LD_VAR 0 1
75627: PPUSH
75628: CALL_OW 3
75632: ST_TO_ADDR
// break ;
75633: GO 75637
// end ;
75635: GO 75455
75637: POP
75638: POP
// temp_list = [ ] ;
75639: LD_ADDR_VAR 0 3
75643: PUSH
75644: EMPTY
75645: ST_TO_ADDR
// for i = 1 to convoyrussians do
75646: LD_ADDR_VAR 0 1
75650: PUSH
75651: DOUBLE
75652: LD_INT 1
75654: DEC
75655: ST_TO_ADDR
75656: LD_EXP 149
75660: PUSH
75661: FOR_TO
75662: IFFALSE 75742
// if isdead ( convoyrussians [ i ] ) or getlives ( ru_drivers [ i ] ) < 250 or not getside ( convoyrussians [ i ] ) = 3 then
75664: LD_EXP 149
75668: PUSH
75669: LD_VAR 0 1
75673: ARRAY
75674: PPUSH
75675: CALL_OW 301
75679: PUSH
75680: LD_VAR 0 7
75684: PUSH
75685: LD_VAR 0 1
75689: ARRAY
75690: PPUSH
75691: CALL_OW 256
75695: PUSH
75696: LD_INT 250
75698: LESS
75699: OR
75700: PUSH
75701: LD_EXP 149
75705: PUSH
75706: LD_VAR 0 1
75710: ARRAY
75711: PPUSH
75712: CALL_OW 255
75716: PUSH
75717: LD_INT 3
75719: EQUAL
75720: NOT
75721: OR
75722: IFFALSE 75740
// temp_list = temp_list ^ i ;
75724: LD_ADDR_VAR 0 3
75728: PUSH
75729: LD_VAR 0 3
75733: PUSH
75734: LD_VAR 0 1
75738: ADD
75739: ST_TO_ADDR
75740: GO 75661
75742: POP
75743: POP
// for i in temp_list do
75744: LD_ADDR_VAR 0 1
75748: PUSH
75749: LD_VAR 0 3
75753: PUSH
75754: FOR_IN
75755: IFFALSE 75799
// begin convoyrussians = delete ( convoyrussians , i ) ;
75757: LD_ADDR_EXP 149
75761: PUSH
75762: LD_EXP 149
75766: PPUSH
75767: LD_VAR 0 1
75771: PPUSH
75772: CALL_OW 3
75776: ST_TO_ADDR
// ru_drivers = delete ( ru_drivers , i ) ;
75777: LD_ADDR_VAR 0 7
75781: PUSH
75782: LD_VAR 0 7
75786: PPUSH
75787: LD_VAR 0 1
75791: PPUSH
75792: CALL_OW 3
75796: ST_TO_ADDR
// end ;
75797: GO 75754
75799: POP
75800: POP
// if convoyrussians = 0 then
75801: LD_EXP 149
75805: PUSH
75806: LD_INT 0
75808: EQUAL
75809: IFFALSE 75822
// begin comunload ( convoycargos ) ;
75811: LD_EXP 148
75815: PPUSH
75816: CALL_OW 159
// exit ;
75820: GO 77933
// end ; if free_drivers > 0 then
75822: LD_VAR 0 9
75826: PUSH
75827: LD_INT 0
75829: GREATER
75830: IFFALSE 76020
// for i in free_drivers do
75832: LD_ADDR_VAR 0 1
75836: PUSH
75837: LD_VAR 0 9
75841: PUSH
75842: FOR_IN
75843: IFFALSE 76018
// if con_waypoint_counter > 5 or convoyrussians = 0 then
75845: LD_EXP 158
75849: PUSH
75850: LD_INT 5
75852: GREATER
75853: PUSH
75854: LD_EXP 149
75858: PUSH
75859: LD_INT 0
75861: EQUAL
75862: OR
75863: IFFALSE 75916
// begin ai_mechanics_defend = replace ( ai_mechanics_defend , 2 , ai_mechanics_defend [ 2 ] ^ i ) ;
75865: LD_ADDR_EXP 33
75869: PUSH
75870: LD_EXP 33
75874: PPUSH
75875: LD_INT 2
75877: PPUSH
75878: LD_EXP 33
75882: PUSH
75883: LD_INT 2
75885: ARRAY
75886: PUSH
75887: LD_VAR 0 1
75891: ADD
75892: PPUSH
75893: CALL_OW 1
75897: ST_TO_ADDR
// free_drivers = free_drivers diff i ;
75898: LD_ADDR_VAR 0 9
75902: PUSH
75903: LD_VAR 0 9
75907: PUSH
75908: LD_VAR 0 1
75912: DIFF
75913: ST_TO_ADDR
// end else
75914: GO 76016
// if getdistunitxy ( i , con_way_cargos [ con_waypoint_counter ] [ 6 ] [ 1 ] , con_way_cargos [ con_waypoint_counter ] [ 6 ] [ 2 ] ) > 5 then
75916: LD_VAR 0 1
75920: PPUSH
75921: LD_EXP 157
75925: PUSH
75926: LD_EXP 158
75930: ARRAY
75931: PUSH
75932: LD_INT 6
75934: ARRAY
75935: PUSH
75936: LD_INT 1
75938: ARRAY
75939: PPUSH
75940: LD_EXP 157
75944: PUSH
75945: LD_EXP 158
75949: ARRAY
75950: PUSH
75951: LD_INT 6
75953: ARRAY
75954: PUSH
75955: LD_INT 2
75957: ARRAY
75958: PPUSH
75959: CALL_OW 297
75963: PUSH
75964: LD_INT 5
75966: GREATER
75967: IFFALSE 76016
// commovexy ( i , con_way_cargos [ con_waypoint_counter ] [ 6 ] [ 1 ] , con_way_cargos [ con_waypoint_counter ] [ 6 ] [ 2 ] ) ;
75969: LD_VAR 0 1
75973: PPUSH
75974: LD_EXP 157
75978: PUSH
75979: LD_EXP 158
75983: ARRAY
75984: PUSH
75985: LD_INT 6
75987: ARRAY
75988: PUSH
75989: LD_INT 1
75991: ARRAY
75992: PPUSH
75993: LD_EXP 157
75997: PUSH
75998: LD_EXP 158
76002: ARRAY
76003: PUSH
76004: LD_INT 6
76006: ARRAY
76007: PUSH
76008: LD_INT 2
76010: ARRAY
76011: PPUSH
76012: CALL_OW 111
76016: GO 75842
76018: POP
76019: POP
// if temp_list > 0 then
76020: LD_VAR 0 3
76024: PUSH
76025: LD_INT 0
76027: GREATER
76028: IFFALSE 76182
// for i in temp_list do
76030: LD_ADDR_VAR 0 1
76034: PUSH
76035: LD_VAR 0 3
76039: PUSH
76040: FOR_IN
76041: IFFALSE 76180
// if unitfilter ( convoyrussians , [ [ f_empty ] , [ f_lives , 450 ] ] ) > 0 then
76043: LD_EXP 149
76047: PPUSH
76048: LD_INT 58
76050: PUSH
76051: EMPTY
76052: LIST
76053: PUSH
76054: LD_INT 24
76056: PUSH
76057: LD_INT 450
76059: PUSH
76060: EMPTY
76061: LIST
76062: LIST
76063: PUSH
76064: EMPTY
76065: LIST
76066: LIST
76067: PPUSH
76068: CALL_OW 72
76072: PUSH
76073: LD_INT 0
76075: GREATER
76076: IFFALSE 76129
// comenterunit ( i , nearestunittounit ( unitfilter ( convoyrussians , [ [ f_empty ] , [ f_lives , 450 ] ] ) , i ) ) else
76078: LD_VAR 0 1
76082: PPUSH
76083: LD_EXP 149
76087: PPUSH
76088: LD_INT 58
76090: PUSH
76091: EMPTY
76092: LIST
76093: PUSH
76094: LD_INT 24
76096: PUSH
76097: LD_INT 450
76099: PUSH
76100: EMPTY
76101: LIST
76102: LIST
76103: PUSH
76104: EMPTY
76105: LIST
76106: LIST
76107: PPUSH
76108: CALL_OW 72
76112: PPUSH
76113: LD_VAR 0 1
76117: PPUSH
76118: CALL_OW 74
76122: PPUSH
76123: CALL_OW 120
76127: GO 76178
// comenterunit ( i , nearestunittounit ( unitfilter ( convoyrussians , [ [ f_empty ] , [ f_lives , 450 ] ] ) , i ) ) ;
76129: LD_VAR 0 1
76133: PPUSH
76134: LD_EXP 149
76138: PPUSH
76139: LD_INT 58
76141: PUSH
76142: EMPTY
76143: LIST
76144: PUSH
76145: LD_INT 24
76147: PUSH
76148: LD_INT 450
76150: PUSH
76151: EMPTY
76152: LIST
76153: LIST
76154: PUSH
76155: EMPTY
76156: LIST
76157: LIST
76158: PPUSH
76159: CALL_OW 72
76163: PPUSH
76164: LD_VAR 0 1
76168: PPUSH
76169: CALL_OW 74
76173: PPUSH
76174: CALL_OW 120
76178: GO 76040
76180: POP
76181: POP
// move = 1 ;
76182: LD_ADDR_VAR 0 4
76186: PUSH
76187: LD_INT 1
76189: ST_TO_ADDR
// temp_list = [ ] ;
76190: LD_ADDR_VAR 0 3
76194: PUSH
76195: EMPTY
76196: ST_TO_ADDR
// for i in filterallunits ( [ [ f_side , 2 ] , [ f_ok ] , [ f_not , [ f_empty ] ] ] ) do
76197: LD_ADDR_VAR 0 1
76201: PUSH
76202: LD_INT 22
76204: PUSH
76205: LD_INT 2
76207: PUSH
76208: EMPTY
76209: LIST
76210: LIST
76211: PUSH
76212: LD_INT 50
76214: PUSH
76215: EMPTY
76216: LIST
76217: PUSH
76218: LD_INT 3
76220: PUSH
76221: LD_INT 58
76223: PUSH
76224: EMPTY
76225: LIST
76226: PUSH
76227: EMPTY
76228: LIST
76229: LIST
76230: PUSH
76231: EMPTY
76232: LIST
76233: LIST
76234: LIST
76235: PPUSH
76236: CALL_OW 69
76240: PUSH
76241: FOR_IN
76242: IFFALSE 76393
// if see ( 3 , i ) and GetDistUnits ( nearestunittounit ( convoyrussians ^ convoyalliance , i ) , i ) < 18 then
76244: LD_INT 3
76246: PPUSH
76247: LD_VAR 0 1
76251: PPUSH
76252: CALL_OW 292
76256: PUSH
76257: LD_EXP 149
76261: PUSH
76262: LD_EXP 150
76266: ADD
76267: PPUSH
76268: LD_VAR 0 1
76272: PPUSH
76273: CALL_OW 74
76277: PPUSH
76278: LD_VAR 0 1
76282: PPUSH
76283: CALL_OW 296
76287: PUSH
76288: LD_INT 18
76290: LESS
76291: AND
76292: IFFALSE 76391
// begin if con_waypoint_counter > 1 then
76294: LD_EXP 158
76298: PUSH
76299: LD_INT 1
76301: GREATER
76302: IFFALSE 76328
// begin move = 0 ;
76304: LD_ADDR_VAR 0 4
76308: PUSH
76309: LD_INT 0
76311: ST_TO_ADDR
// temp_list = temp_list ^ i ;
76312: LD_ADDR_VAR 0 3
76316: PUSH
76317: LD_VAR 0 3
76321: PUSH
76322: LD_VAR 0 1
76326: ADD
76327: ST_TO_ADDR
// end ; if not deserting then
76328: LD_EXP 152
76332: NOT
76333: IFFALSE 76391
// for i in convoyalliance do
76335: LD_ADDR_VAR 0 1
76339: PUSH
76340: LD_EXP 150
76344: PUSH
76345: FOR_IN
76346: IFFALSE 76389
// if getside ( i ) = 3 then
76348: LD_VAR 0 1
76352: PPUSH
76353: CALL_OW 255
76357: PUSH
76358: LD_INT 3
76360: EQUAL
76361: IFFALSE 76387
// begin deserting = 1 ;
76363: LD_ADDR_EXP 152
76367: PUSH
76368: LD_INT 1
76370: ST_TO_ADDR
// ConvoyAll = ConvoyAll diff i ;
76371: LD_ADDR_EXP 151
76375: PUSH
76376: LD_EXP 151
76380: PUSH
76381: LD_VAR 0 1
76385: DIFF
76386: ST_TO_ADDR
// end ;
76387: GO 76345
76389: POP
76390: POP
// end ;
76391: GO 76241
76393: POP
76394: POP
// for i in convoycargos do
76395: LD_ADDR_VAR 0 1
76399: PUSH
76400: LD_EXP 148
76404: PUSH
76405: FOR_IN
76406: IFFALSE 76431
// if not isok ( i ) then
76408: LD_VAR 0 1
76412: PPUSH
76413: CALL_OW 302
76417: NOT
76418: IFFALSE 76429
// comunload ( i ) ;
76420: LD_VAR 0 1
76424: PPUSH
76425: CALL_OW 159
76429: GO 76405
76431: POP
76432: POP
// if move = 1 then
76433: LD_VAR 0 4
76437: PUSH
76438: LD_INT 1
76440: EQUAL
76441: IFFALSE 77685
// begin if con_waypoint_counter < 6 then
76443: LD_EXP 158
76447: PUSH
76448: LD_INT 6
76450: LESS
76451: IFFALSE 77219
// begin temp = 0 ;
76453: LD_ADDR_VAR 0 2
76457: PUSH
76458: LD_INT 0
76460: ST_TO_ADDR
// un_list = unitfilter ( ConvoyAll , [ f_not , [ f_or , [ f_weapon , ru_heavy_gun ] , [ f_weapon , ru_cargo_bay ] ] ] ) ;
76461: LD_ADDR_VAR 0 6
76465: PUSH
76466: LD_EXP 151
76470: PPUSH
76471: LD_INT 3
76473: PUSH
76474: LD_INT 2
76476: PUSH
76477: LD_INT 34
76479: PUSH
76480: LD_INT 46
76482: PUSH
76483: EMPTY
76484: LIST
76485: LIST
76486: PUSH
76487: LD_INT 34
76489: PUSH
76490: LD_INT 51
76492: PUSH
76493: EMPTY
76494: LIST
76495: LIST
76496: PUSH
76497: EMPTY
76498: LIST
76499: LIST
76500: LIST
76501: PUSH
76502: EMPTY
76503: LIST
76504: LIST
76505: PPUSH
76506: CALL_OW 72
76510: ST_TO_ADDR
// for i = 1 to un_list do
76511: LD_ADDR_VAR 0 1
76515: PUSH
76516: DOUBLE
76517: LD_INT 1
76519: DEC
76520: ST_TO_ADDR
76521: LD_VAR 0 6
76525: PUSH
76526: FOR_TO
76527: IFFALSE 76728
// if getdistunitxy ( un_list [ i ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 2 ] ) > 3 then
76529: LD_VAR 0 6
76533: PUSH
76534: LD_VAR 0 1
76538: ARRAY
76539: PPUSH
76540: LD_EXP 156
76544: PUSH
76545: LD_EXP 158
76549: ARRAY
76550: PUSH
76551: LD_VAR 0 1
76555: ARRAY
76556: PUSH
76557: LD_INT 1
76559: ARRAY
76560: PPUSH
76561: LD_EXP 156
76565: PUSH
76566: LD_EXP 158
76570: ARRAY
76571: PUSH
76572: LD_VAR 0 1
76576: ARRAY
76577: PUSH
76578: LD_INT 2
76580: ARRAY
76581: PPUSH
76582: CALL_OW 297
76586: PUSH
76587: LD_INT 3
76589: GREATER
76590: IFFALSE 76726
// begin if con_waypoint_counter > 1 then
76592: LD_EXP 158
76596: PUSH
76597: LD_INT 1
76599: GREATER
76600: IFFALSE 76661
// comagressivemove ( un_list [ i ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 2 ] ) else
76602: LD_VAR 0 6
76606: PUSH
76607: LD_VAR 0 1
76611: ARRAY
76612: PPUSH
76613: LD_EXP 156
76617: PUSH
76618: LD_EXP 158
76622: ARRAY
76623: PUSH
76624: LD_VAR 0 1
76628: ARRAY
76629: PUSH
76630: LD_INT 1
76632: ARRAY
76633: PPUSH
76634: LD_EXP 156
76638: PUSH
76639: LD_EXP 158
76643: ARRAY
76644: PUSH
76645: LD_VAR 0 1
76649: ARRAY
76650: PUSH
76651: LD_INT 2
76653: ARRAY
76654: PPUSH
76655: CALL_OW 114
76659: GO 76718
// commovexy ( un_list [ i ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_vehs [ con_waypoint_counter ] [ i ] [ 2 ] ) ;
76661: LD_VAR 0 6
76665: PUSH
76666: LD_VAR 0 1
76670: ARRAY
76671: PPUSH
76672: LD_EXP 156
76676: PUSH
76677: LD_EXP 158
76681: ARRAY
76682: PUSH
76683: LD_VAR 0 1
76687: ARRAY
76688: PUSH
76689: LD_INT 1
76691: ARRAY
76692: PPUSH
76693: LD_EXP 156
76697: PUSH
76698: LD_EXP 158
76702: ARRAY
76703: PUSH
76704: LD_VAR 0 1
76708: ARRAY
76709: PUSH
76710: LD_INT 2
76712: ARRAY
76713: PPUSH
76714: CALL_OW 111
// temp = 1 ;
76718: LD_ADDR_VAR 0 2
76722: PUSH
76723: LD_INT 1
76725: ST_TO_ADDR
// end ;
76726: GO 76526
76728: POP
76729: POP
// un_list = unitfilter ( ConvoyAll , [ f_weapon , ru_heavy_gun ] ) ;
76730: LD_ADDR_VAR 0 6
76734: PUSH
76735: LD_EXP 151
76739: PPUSH
76740: LD_INT 34
76742: PUSH
76743: LD_INT 46
76745: PUSH
76746: EMPTY
76747: LIST
76748: LIST
76749: PPUSH
76750: CALL_OW 72
76754: ST_TO_ADDR
// for i = 1 to un_list do
76755: LD_ADDR_VAR 0 1
76759: PUSH
76760: DOUBLE
76761: LD_INT 1
76763: DEC
76764: ST_TO_ADDR
76765: LD_VAR 0 6
76769: PUSH
76770: FOR_TO
76771: IFFALSE 76972
// if getdistunitxy ( un_list [ i ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 2 ] ) > 3 then
76773: LD_VAR 0 6
76777: PUSH
76778: LD_VAR 0 1
76782: ARRAY
76783: PPUSH
76784: LD_EXP 155
76788: PUSH
76789: LD_EXP 158
76793: ARRAY
76794: PUSH
76795: LD_VAR 0 1
76799: ARRAY
76800: PUSH
76801: LD_INT 1
76803: ARRAY
76804: PPUSH
76805: LD_EXP 155
76809: PUSH
76810: LD_EXP 158
76814: ARRAY
76815: PUSH
76816: LD_VAR 0 1
76820: ARRAY
76821: PUSH
76822: LD_INT 2
76824: ARRAY
76825: PPUSH
76826: CALL_OW 297
76830: PUSH
76831: LD_INT 3
76833: GREATER
76834: IFFALSE 76970
// begin if con_waypoint_counter > 1 then
76836: LD_EXP 158
76840: PUSH
76841: LD_INT 1
76843: GREATER
76844: IFFALSE 76905
// comagressivemove ( un_list [ i ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 2 ] ) else
76846: LD_VAR 0 6
76850: PUSH
76851: LD_VAR 0 1
76855: ARRAY
76856: PPUSH
76857: LD_EXP 155
76861: PUSH
76862: LD_EXP 158
76866: ARRAY
76867: PUSH
76868: LD_VAR 0 1
76872: ARRAY
76873: PUSH
76874: LD_INT 1
76876: ARRAY
76877: PPUSH
76878: LD_EXP 155
76882: PUSH
76883: LD_EXP 158
76887: ARRAY
76888: PUSH
76889: LD_VAR 0 1
76893: ARRAY
76894: PUSH
76895: LD_INT 2
76897: ARRAY
76898: PPUSH
76899: CALL_OW 114
76903: GO 76962
// commovexy ( un_list [ i ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_heavy [ con_waypoint_counter ] [ i ] [ 2 ] ) ;
76905: LD_VAR 0 6
76909: PUSH
76910: LD_VAR 0 1
76914: ARRAY
76915: PPUSH
76916: LD_EXP 155
76920: PUSH
76921: LD_EXP 158
76925: ARRAY
76926: PUSH
76927: LD_VAR 0 1
76931: ARRAY
76932: PUSH
76933: LD_INT 1
76935: ARRAY
76936: PPUSH
76937: LD_EXP 155
76941: PUSH
76942: LD_EXP 158
76946: ARRAY
76947: PUSH
76948: LD_VAR 0 1
76952: ARRAY
76953: PUSH
76954: LD_INT 2
76956: ARRAY
76957: PPUSH
76958: CALL_OW 111
// temp = 1 ;
76962: LD_ADDR_VAR 0 2
76966: PUSH
76967: LD_INT 1
76969: ST_TO_ADDR
// end ;
76970: GO 76770
76972: POP
76973: POP
// for i = 1 to ConvoyCargos do
76974: LD_ADDR_VAR 0 1
76978: PUSH
76979: DOUBLE
76980: LD_INT 1
76982: DEC
76983: ST_TO_ADDR
76984: LD_EXP 148
76988: PUSH
76989: FOR_TO
76990: IFFALSE 77191
// if getdistunitxy ( ConvoyCargos [ i ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 2 ] ) > 3 then
76992: LD_EXP 148
76996: PUSH
76997: LD_VAR 0 1
77001: ARRAY
77002: PPUSH
77003: LD_EXP 157
77007: PUSH
77008: LD_EXP 158
77012: ARRAY
77013: PUSH
77014: LD_VAR 0 1
77018: ARRAY
77019: PUSH
77020: LD_INT 1
77022: ARRAY
77023: PPUSH
77024: LD_EXP 157
77028: PUSH
77029: LD_EXP 158
77033: ARRAY
77034: PUSH
77035: LD_VAR 0 1
77039: ARRAY
77040: PUSH
77041: LD_INT 2
77043: ARRAY
77044: PPUSH
77045: CALL_OW 297
77049: PUSH
77050: LD_INT 3
77052: GREATER
77053: IFFALSE 77189
// begin if con_waypoint_counter > 1 then
77055: LD_EXP 158
77059: PUSH
77060: LD_INT 1
77062: GREATER
77063: IFFALSE 77124
// comagressivemove ( ConvoyCargos [ i ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 2 ] ) else
77065: LD_EXP 148
77069: PUSH
77070: LD_VAR 0 1
77074: ARRAY
77075: PPUSH
77076: LD_EXP 157
77080: PUSH
77081: LD_EXP 158
77085: ARRAY
77086: PUSH
77087: LD_VAR 0 1
77091: ARRAY
77092: PUSH
77093: LD_INT 1
77095: ARRAY
77096: PPUSH
77097: LD_EXP 157
77101: PUSH
77102: LD_EXP 158
77106: ARRAY
77107: PUSH
77108: LD_VAR 0 1
77112: ARRAY
77113: PUSH
77114: LD_INT 2
77116: ARRAY
77117: PPUSH
77118: CALL_OW 114
77122: GO 77181
// commovexy ( ConvoyCargos [ i ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 1 ] , con_way_cargos [ con_waypoint_counter ] [ i ] [ 2 ] ) ;
77124: LD_EXP 148
77128: PUSH
77129: LD_VAR 0 1
77133: ARRAY
77134: PPUSH
77135: LD_EXP 157
77139: PUSH
77140: LD_EXP 158
77144: ARRAY
77145: PUSH
77146: LD_VAR 0 1
77150: ARRAY
77151: PUSH
77152: LD_INT 1
77154: ARRAY
77155: PPUSH
77156: LD_EXP 157
77160: PUSH
77161: LD_EXP 158
77165: ARRAY
77166: PUSH
77167: LD_VAR 0 1
77171: ARRAY
77172: PUSH
77173: LD_INT 2
77175: ARRAY
77176: PPUSH
77177: CALL_OW 111
// temp = 1 ;
77181: LD_ADDR_VAR 0 2
77185: PUSH
77186: LD_INT 1
77188: ST_TO_ADDR
// end ;
77189: GO 76989
77191: POP
77192: POP
// if temp = 0 then
77193: LD_VAR 0 2
77197: PUSH
77198: LD_INT 0
77200: EQUAL
77201: IFFALSE 77217
// con_waypoint_counter = con_waypoint_counter + 1 ;
77203: LD_ADDR_EXP 158
77207: PUSH
77208: LD_EXP 158
77212: PUSH
77213: LD_INT 1
77215: PLUS
77216: ST_TO_ADDR
// end else
77217: GO 77683
// begin temp_list = convoyrussians ^ convoycargos ^ unitfilter ( convoyalliance , [ f_side , 3 ] ) ;
77219: LD_ADDR_VAR 0 3
77223: PUSH
77224: LD_EXP 149
77228: PUSH
77229: LD_EXP 148
77233: ADD
77234: PUSH
77235: LD_EXP 150
77239: PPUSH
77240: LD_INT 22
77242: PUSH
77243: LD_INT 3
77245: PUSH
77246: EMPTY
77247: LIST
77248: LIST
77249: PPUSH
77250: CALL_OW 72
77254: ADD
77255: ST_TO_ADDR
// for i in temp_list do
77256: LD_ADDR_VAR 0 1
77260: PUSH
77261: LD_VAR 0 3
77265: PUSH
77266: FOR_IN
77267: IFFALSE 77331
// if not IsInArea ( i , area_base2 ) and not IsInArea ( i , base2_vehicle_defend ) then
77269: LD_VAR 0 1
77273: PPUSH
77274: LD_INT 2
77276: PPUSH
77277: CALL_OW 308
77281: NOT
77282: PUSH
77283: LD_VAR 0 1
77287: PPUSH
77288: LD_INT 6
77290: PPUSH
77291: CALL_OW 308
77295: NOT
77296: AND
77297: IFFALSE 77329
// begin commovexy ( i , 154 , 54 ) ;
77299: LD_VAR 0 1
77303: PPUSH
77304: LD_INT 154
77306: PPUSH
77307: LD_INT 54
77309: PPUSH
77310: CALL_OW 111
// addcommovexy ( i , 175 , 75 ) ;
77314: LD_VAR 0 1
77318: PPUSH
77319: LD_INT 175
77321: PPUSH
77322: LD_INT 75
77324: PPUSH
77325: CALL_OW 171
// end ;
77329: GO 77266
77331: POP
77332: POP
// if 2 in ai_bases then
77333: LD_INT 2
77335: PUSH
77336: LD_EXP 29
77340: IN
77341: IFFALSE 77573
// begin repeat wait ( 0 0$0.5 ) ;
77343: LD_INT 18
77345: PPUSH
77346: CALL_OW 67
// for i in temp_list do
77350: LD_ADDR_VAR 0 1
77354: PUSH
77355: LD_VAR 0 3
77359: PUSH
77360: FOR_IN
77361: IFFALSE 77557
// if getdistunitxy ( i , 175 , 75 ) < 5 then
77363: LD_VAR 0 1
77367: PPUSH
77368: LD_INT 175
77370: PPUSH
77371: LD_INT 75
77373: PPUSH
77374: CALL_OW 297
77378: PUSH
77379: LD_INT 5
77381: LESS
77382: IFFALSE 77555
// if getweapon ( i ) = ru_cargo_bay then
77384: LD_VAR 0 1
77388: PPUSH
77389: CALL_OW 264
77393: PUSH
77394: LD_INT 51
77396: EQUAL
77397: IFFALSE 77452
// begin comgive ( i , hexinfo ( 175 , 88 ) ) ;
77399: LD_VAR 0 1
77403: PPUSH
77404: LD_INT 175
77406: PPUSH
77407: LD_INT 88
77409: PPUSH
77410: CALL_OW 428
77414: PPUSH
77415: CALL_OW 161
// addcommovexy ( i , 210 , 122 ) ;
77419: LD_VAR 0 1
77423: PPUSH
77424: LD_INT 210
77426: PPUSH
77427: LD_INT 122
77429: PPUSH
77430: CALL_OW 171
// temp_list = temp_list diff i ;
77434: LD_ADDR_VAR 0 3
77438: PUSH
77439: LD_VAR 0 3
77443: PUSH
77444: LD_VAR 0 1
77448: DIFF
77449: ST_TO_ADDR
// end else
77450: GO 77555
// begin ai_vehicles_defend = replace ( ai_vehicles_defend , 2 , ai_vehicles_defend [ 2 ] ^ i ) ;
77452: LD_ADDR_EXP 57
77456: PUSH
77457: LD_EXP 57
77461: PPUSH
77462: LD_INT 2
77464: PPUSH
77465: LD_EXP 57
77469: PUSH
77470: LD_INT 2
77472: ARRAY
77473: PUSH
77474: LD_VAR 0 1
77478: ADD
77479: PPUSH
77480: CALL_OW 1
77484: ST_TO_ADDR
// ai_mechanics_defend = replace ( ai_mechanics_defend , 2 , ai_mechanics_defend [ 2 ] ^ isdrivenby ( i ) ) ;
77485: LD_ADDR_EXP 33
77489: PUSH
77490: LD_EXP 33
77494: PPUSH
77495: LD_INT 2
77497: PPUSH
77498: LD_EXP 33
77502: PUSH
77503: LD_INT 2
77505: ARRAY
77506: PUSH
77507: LD_VAR 0 1
77511: PPUSH
77512: CALL_OW 311
77516: ADD
77517: PPUSH
77518: CALL_OW 1
77522: ST_TO_ADDR
// ConvoyRussians = ConvoyRussians diff i ;
77523: LD_ADDR_EXP 149
77527: PUSH
77528: LD_EXP 149
77532: PUSH
77533: LD_VAR 0 1
77537: DIFF
77538: ST_TO_ADDR
// temp_list = temp_list diff i ;
77539: LD_ADDR_VAR 0 3
77543: PUSH
77544: LD_VAR 0 3
77548: PUSH
77549: LD_VAR 0 1
77553: DIFF
77554: ST_TO_ADDR
// end ;
77555: GO 77360
77557: POP
77558: POP
// until temp_list = 0 ;
77559: LD_VAR 0 3
77563: PUSH
77564: LD_INT 0
77566: EQUAL
77567: IFFALSE 77343
// exit ;
77569: GO 77933
// end else
77571: GO 77683
// begin if time > 0 then
77573: LD_VAR 0 11
77577: PUSH
77578: LD_INT 0
77580: GREATER
77581: IFFALSE 77621
// begin addcommovexy ( temp_list , 186 , 94 ) ;
77583: LD_VAR 0 3
77587: PPUSH
77588: LD_INT 186
77590: PPUSH
77591: LD_INT 94
77593: PPUSH
77594: CALL_OW 171
// wait ( 0 0$1 ) ;
77598: LD_INT 35
77600: PPUSH
77601: CALL_OW 67
// time = time - 0 0$1 ;
77605: LD_ADDR_VAR 0 11
77609: PUSH
77610: LD_VAR 0 11
77614: PUSH
77615: LD_INT 35
77617: MINUS
77618: ST_TO_ADDR
// end else
77619: GO 77683
// begin commovexy ( temp_list , 201 , 86 ) ;
77621: LD_VAR 0 3
77625: PPUSH
77626: LD_INT 201
77628: PPUSH
77629: LD_INT 86
77631: PPUSH
77632: CALL_OW 111
// for i in temp_list do
77636: LD_ADDR_VAR 0 1
77640: PUSH
77641: LD_VAR 0 3
77645: PUSH
77646: FOR_IN
77647: IFFALSE 77681
// if getdistunitxy ( i , 201 , 86 ) < 4 then
77649: LD_VAR 0 1
77653: PPUSH
77654: LD_INT 201
77656: PPUSH
77657: LD_INT 86
77659: PPUSH
77660: CALL_OW 297
77664: PUSH
77665: LD_INT 4
77667: LESS
77668: IFFALSE 77679
// removeunit ( i ) ;
77670: LD_VAR 0 1
77674: PPUSH
77675: CALL_OW 64
77679: GO 77646
77681: POP
77682: POP
// end ; end ; end ; end else
77683: GO 77824
// begin for i in convoyrussians do
77685: LD_ADDR_VAR 0 1
77689: PUSH
77690: LD_EXP 149
77694: PUSH
77695: FOR_IN
77696: IFFALSE 77775
// begin un = nearestunittounit ( temp_list , i ) ;
77698: LD_ADDR_VAR 0 5
77702: PUSH
77703: LD_VAR 0 3
77707: PPUSH
77708: LD_VAR 0 1
77712: PPUSH
77713: CALL_OW 74
77717: ST_TO_ADDR
// if validhex ( getx ( un ) , gety ( un ) ) then
77718: LD_VAR 0 5
77722: PPUSH
77723: CALL_OW 250
77727: PPUSH
77728: LD_VAR 0 5
77732: PPUSH
77733: CALL_OW 251
77737: PPUSH
77738: CALL_OW 488
77742: IFFALSE 77773
// comagressivemove ( i , getx ( un ) , gety ( un ) ) ;
77744: LD_VAR 0 1
77748: PPUSH
77749: LD_VAR 0 5
77753: PPUSH
77754: CALL_OW 250
77758: PPUSH
77759: LD_VAR 0 5
77763: PPUSH
77764: CALL_OW 251
77768: PPUSH
77769: CALL_OW 114
// end ;
77773: GO 77695
77775: POP
77776: POP
// if con_waypoint_counter > 1 then
77777: LD_EXP 158
77781: PUSH
77782: LD_INT 1
77784: GREATER
77785: IFFALSE 77824
// for i in convoycargos do
77787: LD_ADDR_VAR 0 1
77791: PUSH
77792: LD_EXP 148
77796: PUSH
77797: FOR_IN
77798: IFFALSE 77822
// if hastask ( i ) then
77800: LD_VAR 0 1
77804: PPUSH
77805: CALL_OW 314
77809: IFFALSE 77820
// comstop ( i ) ;
77811: LD_VAR 0 1
77815: PPUSH
77816: CALL_OW 141
77820: GO 77797
77822: POP
77823: POP
// end ; temp_list = unitfilter ( al_drivers , [ f_not , [ f_driving ] ] ) ;
77824: LD_ADDR_VAR 0 3
77828: PUSH
77829: LD_VAR 0 8
77833: PPUSH
77834: LD_INT 3
77836: PUSH
77837: LD_INT 55
77839: PUSH
77840: EMPTY
77841: LIST
77842: PUSH
77843: EMPTY
77844: LIST
77845: LIST
77846: PPUSH
77847: CALL_OW 72
77851: ST_TO_ADDR
// if temp_list > 0 then
77852: LD_VAR 0 3
77856: PUSH
77857: LD_INT 0
77859: GREATER
77860: IFFALSE 77877
// commovexy ( temp_list , 48 , 94 ) ;
77862: LD_VAR 0 3
77866: PPUSH
77867: LD_INT 48
77869: PPUSH
77870: LD_INT 94
77872: PPUSH
77873: CALL_OW 111
// cargo = 0 ;
77877: LD_ADDR_VAR 0 10
77881: PUSH
77882: LD_INT 0
77884: ST_TO_ADDR
// for i in convoycargos do
77885: LD_ADDR_VAR 0 1
77889: PUSH
77890: LD_EXP 148
77894: PUSH
77895: FOR_IN
77896: IFFALSE 77919
// if Carry ( i ) then
77898: LD_VAR 0 1
77902: PPUSH
77903: CALL_OW 281
77907: IFFALSE 77917
// cargo = 1 ;
77909: LD_ADDR_VAR 0 10
77913: PUSH
77914: LD_INT 1
77916: ST_TO_ADDR
77917: GO 77895
77919: POP
77920: POP
// until 1 + 1 = 3 ;
77921: LD_INT 1
77923: PUSH
77924: LD_INT 1
77926: PLUS
77927: PUSH
77928: LD_INT 3
77930: EQUAL
77931: IFFALSE 75433
// end ;
77933: PPOPN 11
77935: END
// every 0 0$1 trigger filterallunits ( [ [ f_or , [ f_side , 3 ] , [ f_side , 7 ] ] , [ f_weapon , ru_cargo_bay ] ] ) and convoyrussians = 0 do var i ;
77936: LD_INT 2
77938: PUSH
77939: LD_INT 22
77941: PUSH
77942: LD_INT 3
77944: PUSH
77945: EMPTY
77946: LIST
77947: LIST
77948: PUSH
77949: LD_INT 22
77951: PUSH
77952: LD_INT 7
77954: PUSH
77955: EMPTY
77956: LIST
77957: LIST
77958: PUSH
77959: EMPTY
77960: LIST
77961: LIST
77962: LIST
77963: PUSH
77964: LD_INT 34
77966: PUSH
77967: LD_INT 51
77969: PUSH
77970: EMPTY
77971: LIST
77972: LIST
77973: PUSH
77974: EMPTY
77975: LIST
77976: LIST
77977: PPUSH
77978: CALL_OW 69
77982: PUSH
77983: LD_EXP 149
77987: PUSH
77988: LD_INT 0
77990: EQUAL
77991: AND
77992: IFFALSE 78236
77994: GO 77996
77996: DISABLE
77997: LD_INT 0
77999: PPUSH
// begin if Convoy_CargosPlaced = 0 then
78000: LD_EXP 160
78004: PUSH
78005: LD_INT 0
78007: EQUAL
78008: IFFALSE 78069
// commovexy ( filterallunits ( [ [ f_or , [ f_side , 3 ] , [ f_side , 7 ] ] , [ f_weapon , ru_cargo_bay ] ] ) , 67 , 87 ) else
78010: LD_INT 2
78012: PUSH
78013: LD_INT 22
78015: PUSH
78016: LD_INT 3
78018: PUSH
78019: EMPTY
78020: LIST
78021: LIST
78022: PUSH
78023: LD_INT 22
78025: PUSH
78026: LD_INT 7
78028: PUSH
78029: EMPTY
78030: LIST
78031: LIST
78032: PUSH
78033: EMPTY
78034: LIST
78035: LIST
78036: LIST
78037: PUSH
78038: LD_INT 34
78040: PUSH
78041: LD_INT 51
78043: PUSH
78044: EMPTY
78045: LIST
78046: LIST
78047: PUSH
78048: EMPTY
78049: LIST
78050: LIST
78051: PPUSH
78052: CALL_OW 69
78056: PPUSH
78057: LD_INT 67
78059: PPUSH
78060: LD_INT 87
78062: PPUSH
78063: CALL_OW 111
78067: GO 78235
// for i in filterallunits ( [ [ f_or , [ f_side , 3 ] , [ f_side , 7 ] ] , [ f_weapon , ru_cargo_bay ] ] ) do
78069: LD_ADDR_VAR 0 1
78073: PUSH
78074: LD_INT 2
78076: PUSH
78077: LD_INT 22
78079: PUSH
78080: LD_INT 3
78082: PUSH
78083: EMPTY
78084: LIST
78085: LIST
78086: PUSH
78087: LD_INT 22
78089: PUSH
78090: LD_INT 7
78092: PUSH
78093: EMPTY
78094: LIST
78095: LIST
78096: PUSH
78097: EMPTY
78098: LIST
78099: LIST
78100: LIST
78101: PUSH
78102: LD_INT 34
78104: PUSH
78105: LD_INT 51
78107: PUSH
78108: EMPTY
78109: LIST
78110: LIST
78111: PUSH
78112: EMPTY
78113: LIST
78114: LIST
78115: PPUSH
78116: CALL_OW 69
78120: PUSH
78121: FOR_IN
78122: IFFALSE 78233
// begin if getside ( i ) = 3 then
78124: LD_VAR 0 1
78128: PPUSH
78129: CALL_OW 255
78133: PUSH
78134: LD_INT 3
78136: EQUAL
78137: IFFALSE 78151
// setside ( i , 7 ) ;
78139: LD_VAR 0 1
78143: PPUSH
78144: LD_INT 7
78146: PPUSH
78147: CALL_OW 235
// commovexy ( i , 48 , 94 ) ;
78151: LD_VAR 0 1
78155: PPUSH
78156: LD_INT 48
78158: PPUSH
78159: LD_INT 94
78161: PPUSH
78162: CALL_OW 111
// if carry ( i ) then
78166: LD_VAR 0 1
78170: PPUSH
78171: CALL_OW 281
78175: IFFALSE 78201
// begin comunload ( i ) ;
78177: LD_VAR 0 1
78181: PPUSH
78182: CALL_OW 159
// addcommovexy ( i , 48 , 94 ) ;
78186: LD_VAR 0 1
78190: PPUSH
78191: LD_INT 48
78193: PPUSH
78194: LD_INT 94
78196: PPUSH
78197: CALL_OW 171
// end ; if getdistunitxy ( i , 48 , 94 ) < 5 then
78201: LD_VAR 0 1
78205: PPUSH
78206: LD_INT 48
78208: PPUSH
78209: LD_INT 94
78211: PPUSH
78212: CALL_OW 297
78216: PUSH
78217: LD_INT 5
78219: LESS
78220: IFFALSE 78231
// removeunit ( i ) ;
78222: LD_VAR 0 1
78226: PPUSH
78227: CALL_OW 64
// end ;
78231: GO 78121
78233: POP
78234: POP
// enable ;
78235: ENABLE
// end ;
78236: PPOPN 1
78238: END
// every 0 0$1 trigger deserting > 0 and convoyalliance > 0 do var i , j , temp ;
78239: LD_EXP 152
78243: PUSH
78244: LD_INT 0
78246: GREATER
78247: PUSH
78248: LD_EXP 150
78252: PUSH
78253: LD_INT 0
78255: GREATER
78256: AND
78257: IFFALSE 78574
78259: GO 78261
78261: DISABLE
78262: LD_INT 0
78264: PPUSH
78265: PPUSH
78266: PPUSH
// begin for i in unitfilter ( convoyalliance , [ [ f_placed ] , [ f_ok ] ] ) do
78267: LD_ADDR_VAR 0 1
78271: PUSH
78272: LD_EXP 150
78276: PPUSH
78277: LD_INT 52
78279: PUSH
78280: EMPTY
78281: LIST
78282: PUSH
78283: LD_INT 50
78285: PUSH
78286: EMPTY
78287: LIST
78288: PUSH
78289: EMPTY
78290: LIST
78291: LIST
78292: PPUSH
78293: CALL_OW 72
78297: PUSH
78298: FOR_IN
78299: IFFALSE 78419
// for j in all_waypoints do
78301: LD_ADDR_VAR 0 2
78305: PUSH
78306: LD_EXP 153
78310: PUSH
78311: FOR_IN
78312: IFFALSE 78415
// if getdistxy ( getx ( i ) - 5 , gety ( i ) , 48 , 94 ) - getdistxy ( 48 , 94 , j [ 1 ] , j [ 2 ] ) > 0 then
78314: LD_VAR 0 1
78318: PPUSH
78319: CALL_OW 250
78323: PUSH
78324: LD_INT 5
78326: MINUS
78327: PPUSH
78328: LD_VAR 0 1
78332: PPUSH
78333: CALL_OW 251
78337: PPUSH
78338: LD_INT 48
78340: PPUSH
78341: LD_INT 94
78343: PPUSH
78344: CALL_OW 298
78348: PUSH
78349: LD_INT 48
78351: PPUSH
78352: LD_INT 94
78354: PPUSH
78355: LD_VAR 0 2
78359: PUSH
78360: LD_INT 1
78362: ARRAY
78363: PPUSH
78364: LD_VAR 0 2
78368: PUSH
78369: LD_INT 2
78371: ARRAY
78372: PPUSH
78373: CALL_OW 298
78377: MINUS
78378: PUSH
78379: LD_INT 0
78381: GREATER
78382: IFFALSE 78413
// begin commovexy ( i , j [ 1 ] , j [ 2 ] ) ;
78384: LD_VAR 0 1
78388: PPUSH
78389: LD_VAR 0 2
78393: PUSH
78394: LD_INT 1
78396: ARRAY
78397: PPUSH
78398: LD_VAR 0 2
78402: PUSH
78403: LD_INT 2
78405: ARRAY
78406: PPUSH
78407: CALL_OW 111
// break ;
78411: GO 78415
// end ;
78413: GO 78311
78415: POP
78416: POP
78417: GO 78298
78419: POP
78420: POP
// if unitfilter ( convoyalliance , [ f_side , 3 ] ) > 0 then
78421: LD_EXP 150
78425: PPUSH
78426: LD_INT 22
78428: PUSH
78429: LD_INT 3
78431: PUSH
78432: EMPTY
78433: LIST
78434: LIST
78435: PPUSH
78436: CALL_OW 72
78440: PUSH
78441: LD_INT 0
78443: GREATER
78444: IFFALSE 78499
// begin wait ( 0 0$5 ) ;
78446: LD_INT 175
78448: PPUSH
78449: CALL_OW 67
// setside ( convoyalliance , 7 ) ;
78453: LD_EXP 150
78457: PPUSH
78458: LD_INT 7
78460: PPUSH
78461: CALL_OW 235
// for i in convoyalliance do
78465: LD_ADDR_VAR 0 1
78469: PUSH
78470: LD_EXP 150
78474: PUSH
78475: FOR_IN
78476: IFFALSE 78497
// setside ( isdrivenby ( i ) , 7 ) ;
78478: LD_VAR 0 1
78482: PPUSH
78483: CALL_OW 311
78487: PPUSH
78488: LD_INT 7
78490: PPUSH
78491: CALL_OW 235
78495: GO 78475
78497: POP
78498: POP
// end ; for i in filterallunits ( [ [ f_placed ] , [ f_ok ] , [ f_side , 7 ] ] ) do
78499: LD_ADDR_VAR 0 1
78503: PUSH
78504: LD_INT 52
78506: PUSH
78507: EMPTY
78508: LIST
78509: PUSH
78510: LD_INT 50
78512: PUSH
78513: EMPTY
78514: LIST
78515: PUSH
78516: LD_INT 22
78518: PUSH
78519: LD_INT 7
78521: PUSH
78522: EMPTY
78523: LIST
78524: LIST
78525: PUSH
78526: EMPTY
78527: LIST
78528: LIST
78529: LIST
78530: PPUSH
78531: CALL_OW 69
78535: PUSH
78536: FOR_IN
78537: IFFALSE 78571
// if getdistunitxy ( i , 48 , 94 ) < 5 then
78539: LD_VAR 0 1
78543: PPUSH
78544: LD_INT 48
78546: PPUSH
78547: LD_INT 94
78549: PPUSH
78550: CALL_OW 297
78554: PUSH
78555: LD_INT 5
78557: LESS
78558: IFFALSE 78569
// removeunit ( i ) ;
78560: LD_VAR 0 1
78564: PPUSH
78565: CALL_OW 64
78569: GO 78536
78571: POP
78572: POP
// enable ;
78573: ENABLE
// end ;
78574: PPOPN 3
78576: END
// every 1 trigger deserting > 0 and convoyalliance > 0 do var time ;
78577: LD_EXP 152
78581: PUSH
78582: LD_INT 0
78584: GREATER
78585: PUSH
78586: LD_EXP 150
78590: PUSH
78591: LD_INT 0
78593: GREATER
78594: AND
78595: IFFALSE 78709
78597: GO 78599
78599: DISABLE
78600: LD_INT 0
78602: PPUSH
// begin if getattitude ( 7 , 2 ) = att_enemy and all_attitude_counter < 15 then
78603: LD_INT 7
78605: PPUSH
78606: LD_INT 2
78608: PPUSH
78609: CALL_OW 81
78613: PUSH
78614: LD_INT 2
78616: EQUAL
78617: PUSH
78618: LD_EXP 154
78622: PUSH
78623: LD_INT 15
78625: LESS
78626: AND
78627: IFFALSE 78708
// begin all_attitude_counter = all_attitude_counter + 1 ;
78629: LD_ADDR_EXP 154
78633: PUSH
78634: LD_EXP 154
78638: PUSH
78639: LD_INT 1
78641: PLUS
78642: ST_TO_ADDR
// setattitude ( 7 , 2 , att_neutral , true ) ;
78643: LD_INT 7
78645: PPUSH
78646: LD_INT 2
78648: PPUSH
78649: LD_INT 0
78651: PPUSH
78652: LD_INT 1
78654: PPUSH
78655: CALL_OW 80
// time = tick ;
78659: LD_ADDR_VAR 0 1
78663: PUSH
78664: LD_OWVAR 1
78668: ST_TO_ADDR
// repeat wait ( 1 ) ;
78669: LD_INT 1
78671: PPUSH
78672: CALL_OW 67
// setattitude ( 7 , 2 , att_neutral , true ) ;
78676: LD_INT 7
78678: PPUSH
78679: LD_INT 2
78681: PPUSH
78682: LD_INT 0
78684: PPUSH
78685: LD_INT 1
78687: PPUSH
78688: CALL_OW 80
// until tick > time + 0 0$0.3 ;
78692: LD_OWVAR 1
78696: PUSH
78697: LD_VAR 0 1
78701: PUSH
78702: LD_INT 10
78704: PLUS
78705: GREATER
78706: IFFALSE 78669
// end ; enable ;
78708: ENABLE
// end ;
78709: PPOPN 1
78711: END
// every 0 0$1 trigger tick > 37 37$30 and GetSide ( ruteleprt ) = 5 and 2 in ai_bases and teleport_status > 0 do var i , temp_list , weapon , chassis , un ;
78712: LD_OWVAR 1
78716: PUSH
78717: LD_INT 78750
78719: GREATER
78720: PUSH
78721: LD_INT 10
78723: PPUSH
78724: CALL_OW 255
78728: PUSH
78729: LD_INT 5
78731: EQUAL
78732: AND
78733: PUSH
78734: LD_INT 2
78736: PUSH
78737: LD_EXP 29
78741: IN
78742: AND
78743: PUSH
78744: LD_EXP 112
78748: PUSH
78749: LD_INT 0
78751: GREATER
78752: AND
78753: IFFALSE 80167
78755: GO 78757
78757: DISABLE
78758: LD_INT 0
78760: PPUSH
78761: PPUSH
78762: PPUSH
78763: PPUSH
78764: PPUSH
// begin producing_the_attack = 1 ;
78765: LD_ADDR_EXP 118
78769: PUSH
78770: LD_INT 1
78772: ST_TO_ADDR
// for i = 1 to 5 do
78773: LD_ADDR_VAR 0 1
78777: PUSH
78778: DOUBLE
78779: LD_INT 1
78781: DEC
78782: ST_TO_ADDR
78783: LD_INT 5
78785: PUSH
78786: FOR_TO
78787: IFFALSE 79024
// begin temp_list = [ ru_gun , ru_heavy_gun , ru_rocket_launcher , ru_rocket , ru_gatling_gun ] ;
78789: LD_ADDR_VAR 0 2
78793: PUSH
78794: LD_INT 44
78796: PUSH
78797: LD_INT 46
78799: PUSH
78800: LD_INT 45
78802: PUSH
78803: LD_INT 47
78805: PUSH
78806: LD_INT 43
78808: PUSH
78809: EMPTY
78810: LIST
78811: LIST
78812: LIST
78813: LIST
78814: LIST
78815: ST_TO_ADDR
// if difficulty = 2 then
78816: LD_OWVAR 67
78820: PUSH
78821: LD_INT 2
78823: EQUAL
78824: IFFALSE 78840
// temp_list = temp_list ^ ru_heavy_gun ;
78826: LD_ADDR_VAR 0 2
78830: PUSH
78831: LD_VAR 0 2
78835: PUSH
78836: LD_INT 46
78838: ADD
78839: ST_TO_ADDR
// if difficulty = 3 then
78840: LD_OWVAR 67
78844: PUSH
78845: LD_INT 3
78847: EQUAL
78848: IFFALSE 78889
// begin temp_list = Replace ( temp_list , 1 , ru_heavy_gun ) ;
78850: LD_ADDR_VAR 0 2
78854: PUSH
78855: LD_VAR 0 2
78859: PPUSH
78860: LD_INT 1
78862: PPUSH
78863: LD_INT 46
78865: PPUSH
78866: CALL_OW 1
78870: ST_TO_ADDR
// temp_list = Delete ( temp_list , 3 ) ;
78871: LD_ADDR_VAR 0 2
78875: PUSH
78876: LD_VAR 0 2
78880: PPUSH
78881: LD_INT 3
78883: PPUSH
78884: CALL_OW 3
78888: ST_TO_ADDR
// end ; weapon = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
78889: LD_ADDR_VAR 0 3
78893: PUSH
78894: LD_VAR 0 2
78898: PUSH
78899: LD_INT 1
78901: PPUSH
78902: LD_VAR 0 2
78906: PUSH
78907: LD_INT 0
78909: PLUS
78910: PPUSH
78911: CALL_OW 12
78915: ARRAY
78916: ST_TO_ADDR
// if Rand ( 1 , [ 2 , 3 , 4 ] [ difficulty ] ) = 1 and not weapon in [ ru_heavy_gun , ru_rocket ] then
78917: LD_INT 1
78919: PPUSH
78920: LD_INT 2
78922: PUSH
78923: LD_INT 3
78925: PUSH
78926: LD_INT 4
78928: PUSH
78929: EMPTY
78930: LIST
78931: LIST
78932: LIST
78933: PUSH
78934: LD_OWVAR 67
78938: ARRAY
78939: PPUSH
78940: CALL_OW 12
78944: PUSH
78945: LD_INT 1
78947: EQUAL
78948: PUSH
78949: LD_VAR 0 3
78953: PUSH
78954: LD_INT 46
78956: PUSH
78957: LD_INT 47
78959: PUSH
78960: EMPTY
78961: LIST
78962: LIST
78963: IN
78964: NOT
78965: AND
78966: IFFALSE 78978
// chassis = ru_medium_tracked else
78968: LD_ADDR_VAR 0 4
78972: PUSH
78973: LD_INT 22
78975: ST_TO_ADDR
78976: GO 78986
// chassis = ru_heavy_tracked ;
78978: LD_ADDR_VAR 0 4
78982: PUSH
78983: LD_INT 24
78985: ST_TO_ADDR
// teleport_attack_list = teleport_attack_list ^ [ [ chassis , engine_combustion , control_computer , weapon ] ] ;
78986: LD_ADDR_EXP 116
78990: PUSH
78991: LD_EXP 116
78995: PUSH
78996: LD_VAR 0 4
79000: PUSH
79001: LD_INT 1
79003: PUSH
79004: LD_INT 3
79006: PUSH
79007: LD_VAR 0 3
79011: PUSH
79012: EMPTY
79013: LIST
79014: LIST
79015: LIST
79016: LIST
79017: PUSH
79018: EMPTY
79019: LIST
79020: ADD
79021: ST_TO_ADDR
// end ;
79022: GO 78786
79024: POP
79025: POP
// for i = 1 to 3 do
79026: LD_ADDR_VAR 0 1
79030: PUSH
79031: DOUBLE
79032: LD_INT 1
79034: DEC
79035: ST_TO_ADDR
79036: LD_INT 3
79038: PUSH
79039: FOR_TO
79040: IFFALSE 79076
// teleport_attack_list = teleport_attack_list ^ [ [ ru_medium_wheeled , engine_siberite , control_manual , ru_rocket_launcher ] ] ;
79042: LD_ADDR_EXP 116
79046: PUSH
79047: LD_EXP 116
79051: PUSH
79052: LD_INT 21
79054: PUSH
79055: LD_INT 3
79057: PUSH
79058: LD_INT 1
79060: PUSH
79061: LD_INT 45
79063: PUSH
79064: EMPTY
79065: LIST
79066: LIST
79067: LIST
79068: LIST
79069: PUSH
79070: EMPTY
79071: LIST
79072: ADD
79073: ST_TO_ADDR
79074: GO 79039
79076: POP
79077: POP
// if difficulty = 3 then
79078: LD_OWVAR 67
79082: PUSH
79083: LD_INT 3
79085: EQUAL
79086: IFFALSE 79140
// un = BestSkillOfClass ( unitfilter ( ai_mechanics_defend [ 2 ] diff ai_crane_driver [ 2 ] , [ f_not , [ f_driving ] ] ) , skill_mechanical ) else
79088: LD_ADDR_VAR 0 5
79092: PUSH
79093: LD_EXP 33
79097: PUSH
79098: LD_INT 2
79100: ARRAY
79101: PUSH
79102: LD_EXP 82
79106: PUSH
79107: LD_INT 2
79109: ARRAY
79110: DIFF
79111: PPUSH
79112: LD_INT 3
79114: PUSH
79115: LD_INT 55
79117: PUSH
79118: EMPTY
79119: LIST
79120: PUSH
79121: EMPTY
79122: LIST
79123: LIST
79124: PPUSH
79125: CALL_OW 72
79129: PPUSH
79130: LD_INT 3
79132: PPUSH
79133: CALL 80170 0 2
79137: ST_TO_ADDR
79138: GO 79190
// un = WorstSkillOfClass ( unitfilter ( ai_mechanics_defend [ 2 ] diff ai_crane_driver [ 2 ] , [ f_not , [ f_driving ] ] ) , skill_mechanical ) ;
79140: LD_ADDR_VAR 0 5
79144: PUSH
79145: LD_EXP 33
79149: PUSH
79150: LD_INT 2
79152: ARRAY
79153: PUSH
79154: LD_EXP 82
79158: PUSH
79159: LD_INT 2
79161: ARRAY
79162: DIFF
79163: PPUSH
79164: LD_INT 3
79166: PUSH
79167: LD_INT 55
79169: PUSH
79170: EMPTY
79171: LIST
79172: PUSH
79173: EMPTY
79174: LIST
79175: LIST
79176: PPUSH
79177: CALL_OW 72
79181: PPUSH
79182: LD_INT 3
79184: PPUSH
79185: CALL 80326 0 2
79189: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , 2 , ai_mechanics_defend [ 2 ] diff un ) ;
79190: LD_ADDR_EXP 33
79194: PUSH
79195: LD_EXP 33
79199: PPUSH
79200: LD_INT 2
79202: PPUSH
79203: LD_EXP 33
79207: PUSH
79208: LD_INT 2
79210: ARRAY
79211: PUSH
79212: LD_VAR 0 5
79216: DIFF
79217: PPUSH
79218: CALL_OW 1
79222: ST_TO_ADDR
// teleport_attack_people = teleport_attack_people ^ un ;
79223: LD_ADDR_EXP 117
79227: PUSH
79228: LD_EXP 117
79232: PUSH
79233: LD_VAR 0 5
79237: ADD
79238: ST_TO_ADDR
// if difficulty = 3 then
79239: LD_OWVAR 67
79243: PUSH
79244: LD_INT 3
79246: EQUAL
79247: IFFALSE 79301
// un = BestSkillOfClass ( unitfilter ( ai_mechanics_defend [ 2 ] diff ai_crane_driver [ 2 ] , [ f_not , [ f_driving ] ] ) , skill_mechanical ) else
79249: LD_ADDR_VAR 0 5
79253: PUSH
79254: LD_EXP 33
79258: PUSH
79259: LD_INT 2
79261: ARRAY
79262: PUSH
79263: LD_EXP 82
79267: PUSH
79268: LD_INT 2
79270: ARRAY
79271: DIFF
79272: PPUSH
79273: LD_INT 3
79275: PUSH
79276: LD_INT 55
79278: PUSH
79279: EMPTY
79280: LIST
79281: PUSH
79282: EMPTY
79283: LIST
79284: LIST
79285: PPUSH
79286: CALL_OW 72
79290: PPUSH
79291: LD_INT 3
79293: PPUSH
79294: CALL 80170 0 2
79298: ST_TO_ADDR
79299: GO 79351
// un = WorstSkillOfClass ( unitfilter ( ai_mechanics_defend [ 2 ] diff ai_crane_driver [ 2 ] , [ f_not , [ f_driving ] ] ) , skill_mechanical ) ;
79301: LD_ADDR_VAR 0 5
79305: PUSH
79306: LD_EXP 33
79310: PUSH
79311: LD_INT 2
79313: ARRAY
79314: PUSH
79315: LD_EXP 82
79319: PUSH
79320: LD_INT 2
79322: ARRAY
79323: DIFF
79324: PPUSH
79325: LD_INT 3
79327: PUSH
79328: LD_INT 55
79330: PUSH
79331: EMPTY
79332: LIST
79333: PUSH
79334: EMPTY
79335: LIST
79336: LIST
79337: PPUSH
79338: CALL_OW 72
79342: PPUSH
79343: LD_INT 3
79345: PPUSH
79346: CALL 80326 0 2
79350: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , 2 , ai_mechanics_defend [ 2 ] diff un ) ;
79351: LD_ADDR_EXP 33
79355: PUSH
79356: LD_EXP 33
79360: PPUSH
79361: LD_INT 2
79363: PPUSH
79364: LD_EXP 33
79368: PUSH
79369: LD_INT 2
79371: ARRAY
79372: PUSH
79373: LD_VAR 0 5
79377: DIFF
79378: PPUSH
79379: CALL_OW 1
79383: ST_TO_ADDR
// teleport_attack_people = teleport_attack_people ^ un ;
79384: LD_ADDR_EXP 117
79388: PUSH
79389: LD_EXP 117
79393: PUSH
79394: LD_VAR 0 5
79398: ADD
79399: ST_TO_ADDR
// un = BestSkillOfClass ( ai_engineers [ 2 ] , skill_engineering ) ;
79400: LD_ADDR_VAR 0 5
79404: PUSH
79405: LD_EXP 32
79409: PUSH
79410: LD_INT 2
79412: ARRAY
79413: PPUSH
79414: LD_INT 2
79416: PPUSH
79417: CALL 80170 0 2
79421: ST_TO_ADDR
// ai_engineers = Replace ( ai_engineers , 2 , ai_engineers [ 2 ] diff un ) ;
79422: LD_ADDR_EXP 32
79426: PUSH
79427: LD_EXP 32
79431: PPUSH
79432: LD_INT 2
79434: PPUSH
79435: LD_EXP 32
79439: PUSH
79440: LD_INT 2
79442: ARRAY
79443: PUSH
79444: LD_VAR 0 5
79448: DIFF
79449: PPUSH
79450: CALL_OW 1
79454: ST_TO_ADDR
// teleport_attack_people = teleport_attack_people ^ un ;
79455: LD_ADDR_EXP 117
79459: PUSH
79460: LD_EXP 117
79464: PUSH
79465: LD_VAR 0 5
79469: ADD
79470: ST_TO_ADDR
// un = BestSkillOfClass ( ai_scientists [ 2 ] , skill_scientistic ) ;
79471: LD_ADDR_VAR 0 5
79475: PUSH
79476: LD_EXP 35
79480: PUSH
79481: LD_INT 2
79483: ARRAY
79484: PPUSH
79485: LD_INT 4
79487: PPUSH
79488: CALL 80170 0 2
79492: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , 2 , ai_scientists [ 2 ] diff un ) ;
79493: LD_ADDR_EXP 35
79497: PUSH
79498: LD_EXP 35
79502: PPUSH
79503: LD_INT 2
79505: PPUSH
79506: LD_EXP 35
79510: PUSH
79511: LD_INT 2
79513: ARRAY
79514: PUSH
79515: LD_VAR 0 5
79519: DIFF
79520: PPUSH
79521: CALL_OW 1
79525: ST_TO_ADDR
// teleport_attack_people = teleport_attack_people ^ un ;
79526: LD_ADDR_EXP 117
79530: PUSH
79531: LD_EXP 117
79535: PUSH
79536: LD_VAR 0 5
79540: ADD
79541: ST_TO_ADDR
// comcancel ( ai_facts [ 2 ] [ 1 ] ) ;
79542: LD_EXP 41
79546: PUSH
79547: LD_INT 2
79549: ARRAY
79550: PUSH
79551: LD_INT 1
79553: ARRAY
79554: PPUSH
79555: CALL_OW 127
// wait ( 0 0$1 ) ;
79559: LD_INT 35
79561: PPUSH
79562: CALL_OW 67
// for i in teleport_attack_list do
79566: LD_ADDR_VAR 0 1
79570: PUSH
79571: LD_EXP 116
79575: PUSH
79576: FOR_IN
79577: IFFALSE 79634
// addcomconstruct ( ai_facts [ 2 ] [ 1 ] , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] ) ;
79579: LD_EXP 41
79583: PUSH
79584: LD_INT 2
79586: ARRAY
79587: PUSH
79588: LD_INT 1
79590: ARRAY
79591: PPUSH
79592: LD_VAR 0 1
79596: PUSH
79597: LD_INT 1
79599: ARRAY
79600: PPUSH
79601: LD_VAR 0 1
79605: PUSH
79606: LD_INT 2
79608: ARRAY
79609: PPUSH
79610: LD_VAR 0 1
79614: PUSH
79615: LD_INT 3
79617: ARRAY
79618: PPUSH
79619: LD_VAR 0 1
79623: PUSH
79624: LD_INT 4
79626: ARRAY
79627: PPUSH
79628: CALL_OW 185
79632: GO 79576
79634: POP
79635: POP
// comexitbuilding ( teleport_attack_people ) ;
79636: LD_EXP 117
79640: PPUSH
79641: CALL_OW 122
// comexitvehicle ( teleport_attack_people ) ;
79645: LD_EXP 117
79649: PPUSH
79650: CALL_OW 121
// commovexy ( ai_vehicles_defend [ 2 ] , 190 , 81 ) ;
79654: LD_EXP 57
79658: PUSH
79659: LD_INT 2
79661: ARRAY
79662: PPUSH
79663: LD_INT 190
79665: PPUSH
79666: LD_INT 81
79668: PPUSH
79669: CALL_OW 111
// temp_list = [ ] ;
79673: LD_ADDR_VAR 0 2
79677: PUSH
79678: EMPTY
79679: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
79680: LD_INT 35
79682: PPUSH
79683: CALL_OW 67
// temp_list = filterunitsinarea ( area_base2 , [ [ f_side , 3 ] , [ f_type , unit_vehicle ] ] ) diff ai_vehicles_defend [ 2 ] ^ ai_crane [ 2 ] ;
79687: LD_ADDR_VAR 0 2
79691: PUSH
79692: LD_INT 2
79694: PPUSH
79695: LD_INT 22
79697: PUSH
79698: LD_INT 3
79700: PUSH
79701: EMPTY
79702: LIST
79703: LIST
79704: PUSH
79705: LD_INT 21
79707: PUSH
79708: LD_INT 2
79710: PUSH
79711: EMPTY
79712: LIST
79713: LIST
79714: PUSH
79715: EMPTY
79716: LIST
79717: LIST
79718: PPUSH
79719: CALL_OW 70
79723: PUSH
79724: LD_EXP 57
79728: PUSH
79729: LD_INT 2
79731: ARRAY
79732: PUSH
79733: LD_EXP 78
79737: PUSH
79738: LD_INT 2
79740: ARRAY
79741: ADD
79742: DIFF
79743: ST_TO_ADDR
// un = unitfilter ( temp_list , [ [ f_control , control_manual ] , [ f_not , [ f_empty ] ] ] ) ;
79744: LD_ADDR_VAR 0 5
79748: PUSH
79749: LD_VAR 0 2
79753: PPUSH
79754: LD_INT 33
79756: PUSH
79757: LD_INT 1
79759: PUSH
79760: EMPTY
79761: LIST
79762: LIST
79763: PUSH
79764: LD_INT 3
79766: PUSH
79767: LD_INT 58
79769: PUSH
79770: EMPTY
79771: LIST
79772: PUSH
79773: EMPTY
79774: LIST
79775: LIST
79776: PUSH
79777: EMPTY
79778: LIST
79779: LIST
79780: PPUSH
79781: CALL_OW 72
79785: ST_TO_ADDR
// if un > 0 then
79786: LD_VAR 0 5
79790: PUSH
79791: LD_INT 0
79793: GREATER
79794: IFFALSE 79860
// if getdistunitxy ( un [ 1 ] , 200 , 118 ) > 6 then
79796: LD_VAR 0 5
79800: PUSH
79801: LD_INT 1
79803: ARRAY
79804: PPUSH
79805: LD_INT 200
79807: PPUSH
79808: LD_INT 118
79810: PPUSH
79811: CALL_OW 297
79815: PUSH
79816: LD_INT 6
79818: GREATER
79819: IFFALSE 79842
// commovexy ( un [ 1 ] , 200 , 118 ) else
79821: LD_VAR 0 5
79825: PUSH
79826: LD_INT 1
79828: ARRAY
79829: PPUSH
79830: LD_INT 200
79832: PPUSH
79833: LD_INT 118
79835: PPUSH
79836: CALL_OW 111
79840: GO 79860
// comexitvehicle ( isdrivenby ( un [ 1 ] ) ) ;
79842: LD_VAR 0 5
79846: PUSH
79847: LD_INT 1
79849: ARRAY
79850: PPUSH
79851: CALL_OW 311
79855: PPUSH
79856: CALL_OW 121
// for i in unitfilter ( temp_list , [ f_control , control_computer ] ) do
79860: LD_ADDR_VAR 0 1
79864: PUSH
79865: LD_VAR 0 2
79869: PPUSH
79870: LD_INT 33
79872: PUSH
79873: LD_INT 3
79875: PUSH
79876: EMPTY
79877: LIST
79878: LIST
79879: PPUSH
79880: CALL_OW 72
79884: PUSH
79885: FOR_IN
79886: IFFALSE 79926
// if getdistunitxy ( i , 185 , 88 ) > 7 then
79888: LD_VAR 0 1
79892: PPUSH
79893: LD_INT 185
79895: PPUSH
79896: LD_INT 88
79898: PPUSH
79899: CALL_OW 297
79903: PUSH
79904: LD_INT 7
79906: GREATER
79907: IFFALSE 79924
// commovexy ( i , 185 , 88 ) ;
79909: LD_VAR 0 1
79913: PPUSH
79914: LD_INT 185
79916: PPUSH
79917: LD_INT 88
79919: PPUSH
79920: CALL_OW 111
79924: GO 79885
79926: POP
79927: POP
// until unitfilter ( temp_list , [ f_empty ] ) = 3 ;
79928: LD_VAR 0 2
79932: PPUSH
79933: LD_INT 58
79935: PUSH
79936: EMPTY
79937: LIST
79938: PPUSH
79939: CALL_OW 72
79943: PUSH
79944: LD_INT 3
79946: EQUAL
79947: IFFALSE 79680
// teleport_attack_list = [ [ temp_list [ 1 ] , temp_list [ 2 ] , temp_list [ 3 ] , temp_list [ 4 ] , temp_list [ 5 ] ] , [ temp_list [ 6 ] , temp_list [ 7 ] , temp_list [ 8 ] ] ] ;
79949: LD_ADDR_EXP 116
79953: PUSH
79954: LD_VAR 0 2
79958: PUSH
79959: LD_INT 1
79961: ARRAY
79962: PUSH
79963: LD_VAR 0 2
79967: PUSH
79968: LD_INT 2
79970: ARRAY
79971: PUSH
79972: LD_VAR 0 2
79976: PUSH
79977: LD_INT 3
79979: ARRAY
79980: PUSH
79981: LD_VAR 0 2
79985: PUSH
79986: LD_INT 4
79988: ARRAY
79989: PUSH
79990: LD_VAR 0 2
79994: PUSH
79995: LD_INT 5
79997: ARRAY
79998: PUSH
79999: EMPTY
80000: LIST
80001: LIST
80002: LIST
80003: LIST
80004: LIST
80005: PUSH
80006: LD_VAR 0 2
80010: PUSH
80011: LD_INT 6
80013: ARRAY
80014: PUSH
80015: LD_VAR 0 2
80019: PUSH
80020: LD_INT 7
80022: ARRAY
80023: PUSH
80024: LD_VAR 0 2
80028: PUSH
80029: LD_INT 8
80031: ARRAY
80032: PUSH
80033: EMPTY
80034: LIST
80035: LIST
80036: LIST
80037: PUSH
80038: EMPTY
80039: LIST
80040: LIST
80041: ST_TO_ADDR
// producing_the_attack = 0 ;
80042: LD_ADDR_EXP 118
80046: PUSH
80047: LD_INT 0
80049: ST_TO_ADDR
// wait ( 0 0$0.5 ) ;
80050: LD_INT 18
80052: PPUSH
80053: CALL_OW 67
// comenterunit ( teleport_attack_people [ 1 ] , teleport_attack_list [ 2 ] [ 1 ] ) ;
80057: LD_EXP 117
80061: PUSH
80062: LD_INT 1
80064: ARRAY
80065: PPUSH
80066: LD_EXP 116
80070: PUSH
80071: LD_INT 2
80073: ARRAY
80074: PUSH
80075: LD_INT 1
80077: ARRAY
80078: PPUSH
80079: CALL_OW 120
// comenterunit ( teleport_attack_people [ 2 ] , teleport_attack_list [ 2 ] [ 2 ] ) ;
80083: LD_EXP 117
80087: PUSH
80088: LD_INT 2
80090: ARRAY
80091: PPUSH
80092: LD_EXP 116
80096: PUSH
80097: LD_INT 2
80099: ARRAY
80100: PUSH
80101: LD_INT 2
80103: ARRAY
80104: PPUSH
80105: CALL_OW 120
// comenterunit ( teleport_attack_people [ 3 ] , teleport_attack_list [ 2 ] [ 3 ] ) ;
80109: LD_EXP 117
80113: PUSH
80114: LD_INT 3
80116: ARRAY
80117: PPUSH
80118: LD_EXP 116
80122: PUSH
80123: LD_INT 2
80125: ARRAY
80126: PUSH
80127: LD_INT 3
80129: ARRAY
80130: PPUSH
80131: CALL_OW 120
// commovexy ( teleport_attack_people [ 4 ] , 162 , 102 ) ;
80135: LD_EXP 117
80139: PUSH
80140: LD_INT 4
80142: ARRAY
80143: PPUSH
80144: LD_INT 162
80146: PPUSH
80147: LD_INT 102
80149: PPUSH
80150: CALL_OW 111
// addcomhold ( teleport_attack_people [ 4 ] ) ;
80154: LD_EXP 117
80158: PUSH
80159: LD_INT 4
80161: ARRAY
80162: PPUSH
80163: CALL_OW 200
// end ;
80167: PPOPN 5
80169: END
// function BestSkillOfClass ( list , skill ) ; var i , temp , un ; begin
80170: LD_INT 0
80172: PPUSH
80173: PPUSH
80174: PPUSH
80175: PPUSH
// if list = 0 or not skill in [ 1 , 2 , 3 , 4 ] then
80176: LD_VAR 0 1
80180: PUSH
80181: LD_INT 0
80183: EQUAL
80184: PUSH
80185: LD_VAR 0 2
80189: PUSH
80190: LD_INT 1
80192: PUSH
80193: LD_INT 2
80195: PUSH
80196: LD_INT 3
80198: PUSH
80199: LD_INT 4
80201: PUSH
80202: EMPTY
80203: LIST
80204: LIST
80205: LIST
80206: LIST
80207: IN
80208: NOT
80209: OR
80210: IFFALSE 80222
// begin result = 0 ;
80212: LD_ADDR_VAR 0 3
80216: PUSH
80217: LD_INT 0
80219: ST_TO_ADDR
// exit ;
80220: GO 80321
// end ; for i in list do
80222: LD_ADDR_VAR 0 4
80226: PUSH
80227: LD_VAR 0 1
80231: PUSH
80232: FOR_IN
80233: IFFALSE 80289
// if GetSkill ( i , skill ) > temp then
80235: LD_VAR 0 4
80239: PPUSH
80240: LD_VAR 0 2
80244: PPUSH
80245: CALL_OW 259
80249: PUSH
80250: LD_VAR 0 5
80254: GREATER
80255: IFFALSE 80287
// begin temp = GetSkill ( i , skill ) ;
80257: LD_ADDR_VAR 0 5
80261: PUSH
80262: LD_VAR 0 4
80266: PPUSH
80267: LD_VAR 0 2
80271: PPUSH
80272: CALL_OW 259
80276: ST_TO_ADDR
// un = i ;
80277: LD_ADDR_VAR 0 6
80281: PUSH
80282: LD_VAR 0 4
80286: ST_TO_ADDR
// end ;
80287: GO 80232
80289: POP
80290: POP
// if un > 0 then
80291: LD_VAR 0 6
80295: PUSH
80296: LD_INT 0
80298: GREATER
80299: IFFALSE 80313
// result = un else
80301: LD_ADDR_VAR 0 3
80305: PUSH
80306: LD_VAR 0 6
80310: ST_TO_ADDR
80311: GO 80321
// result = 0 ;
80313: LD_ADDR_VAR 0 3
80317: PUSH
80318: LD_INT 0
80320: ST_TO_ADDR
// end ;
80321: LD_VAR 0 3
80325: RET
// function WorstSkillOfClass ( list , skill ) ; var i , temp , un ; begin
80326: LD_INT 0
80328: PPUSH
80329: PPUSH
80330: PPUSH
80331: PPUSH
// if list = 0 or not skill in [ 1 , 2 , 3 , 4 ] then
80332: LD_VAR 0 1
80336: PUSH
80337: LD_INT 0
80339: EQUAL
80340: PUSH
80341: LD_VAR 0 2
80345: PUSH
80346: LD_INT 1
80348: PUSH
80349: LD_INT 2
80351: PUSH
80352: LD_INT 3
80354: PUSH
80355: LD_INT 4
80357: PUSH
80358: EMPTY
80359: LIST
80360: LIST
80361: LIST
80362: LIST
80363: IN
80364: NOT
80365: OR
80366: IFFALSE 80378
// begin result = 0 ;
80368: LD_ADDR_VAR 0 3
80372: PUSH
80373: LD_INT 0
80375: ST_TO_ADDR
// exit ;
80376: GO 80481
// end ; un = list [ 1 ] ;
80378: LD_ADDR_VAR 0 6
80382: PUSH
80383: LD_VAR 0 1
80387: PUSH
80388: LD_INT 1
80390: ARRAY
80391: ST_TO_ADDR
// for i in list do
80392: LD_ADDR_VAR 0 4
80396: PUSH
80397: LD_VAR 0 1
80401: PUSH
80402: FOR_IN
80403: IFFALSE 80449
// if GetSkill ( i , skill ) < GetSkill ( un , skill ) then
80405: LD_VAR 0 4
80409: PPUSH
80410: LD_VAR 0 2
80414: PPUSH
80415: CALL_OW 259
80419: PUSH
80420: LD_VAR 0 6
80424: PPUSH
80425: LD_VAR 0 2
80429: PPUSH
80430: CALL_OW 259
80434: LESS
80435: IFFALSE 80447
// un = i ;
80437: LD_ADDR_VAR 0 6
80441: PUSH
80442: LD_VAR 0 4
80446: ST_TO_ADDR
80447: GO 80402
80449: POP
80450: POP
// if un > 0 then
80451: LD_VAR 0 6
80455: PUSH
80456: LD_INT 0
80458: GREATER
80459: IFFALSE 80473
// result = un else
80461: LD_ADDR_VAR 0 3
80465: PUSH
80466: LD_VAR 0 6
80470: ST_TO_ADDR
80471: GO 80481
// result = 0 ;
80473: LD_ADDR_VAR 0 3
80477: PUSH
80478: LD_INT 0
80480: ST_TO_ADDR
// end ;
80481: LD_VAR 0 3
80485: RET
// function DetermineAttackPath ; var i , temp , gate , path ; begin
80486: LD_INT 0
80488: PPUSH
80489: PPUSH
80490: PPUSH
80491: PPUSH
80492: PPUSH
// Randomize ;
80493: CALL_OW 10
// path = [ ] ;
80497: LD_ADDR_VAR 0 5
80501: PUSH
80502: EMPTY
80503: ST_TO_ADDR
// if base10_people > 0 and filterunitsinarea ( area_base10 , [ f_side , 2 ] ) = 0 and rand ( 1 , 2 ) = 1 then
80504: LD_EXP 170
80508: PUSH
80509: LD_INT 0
80511: GREATER
80512: PUSH
80513: LD_INT 18
80515: PPUSH
80516: LD_INT 22
80518: PUSH
80519: LD_INT 2
80521: PUSH
80522: EMPTY
80523: LIST
80524: LIST
80525: PPUSH
80526: CALL_OW 70
80530: PUSH
80531: LD_INT 0
80533: EQUAL
80534: AND
80535: PUSH
80536: LD_INT 1
80538: PPUSH
80539: LD_INT 2
80541: PPUSH
80542: CALL_OW 12
80546: PUSH
80547: LD_INT 1
80549: EQUAL
80550: AND
80551: IFFALSE 80563
// gate = 1 else
80553: LD_ADDR_VAR 0 4
80557: PUSH
80558: LD_INT 1
80560: ST_TO_ADDR
80561: GO 80571
// gate = 0 ;
80563: LD_ADDR_VAR 0 4
80567: PUSH
80568: LD_INT 0
80570: ST_TO_ADDR
// if gate = 0 then
80571: LD_VAR 0 4
80575: PUSH
80576: LD_INT 0
80578: EQUAL
80579: IFFALSE 80649
// path = path ^ [ [ 179 , 79 ] , [ 166 , 63 ] , [ 148 , 57 ] , [ 138 , 67 ] , [ 131 , 77 ] ] ;
80581: LD_ADDR_VAR 0 5
80585: PUSH
80586: LD_VAR 0 5
80590: PUSH
80591: LD_INT 179
80593: PUSH
80594: LD_INT 79
80596: PUSH
80597: EMPTY
80598: LIST
80599: LIST
80600: PUSH
80601: LD_INT 166
80603: PUSH
80604: LD_INT 63
80606: PUSH
80607: EMPTY
80608: LIST
80609: LIST
80610: PUSH
80611: LD_INT 148
80613: PUSH
80614: LD_INT 57
80616: PUSH
80617: EMPTY
80618: LIST
80619: LIST
80620: PUSH
80621: LD_INT 138
80623: PUSH
80624: LD_INT 67
80626: PUSH
80627: EMPTY
80628: LIST
80629: LIST
80630: PUSH
80631: LD_INT 131
80633: PUSH
80634: LD_INT 77
80636: PUSH
80637: EMPTY
80638: LIST
80639: LIST
80640: PUSH
80641: EMPTY
80642: LIST
80643: LIST
80644: LIST
80645: LIST
80646: LIST
80647: ADD
80648: ST_TO_ADDR
// case rand ( 1 , 3 ) of 1 :
80649: LD_INT 1
80651: PPUSH
80652: LD_INT 3
80654: PPUSH
80655: CALL_OW 12
80659: PUSH
80660: LD_INT 1
80662: DOUBLE
80663: EQUAL
80664: IFTRUE 80668
80666: GO 80772
80668: POP
// path = path ^ [ [ 135 , 86 ] , [ 148 , 100 ] , [ 158 , 115 ] , [ 154 , 127 ] , [ 145 , 130 ] , [ 137 , 133 ] , [ 131 , 140 ] , [ 128 , 150 ] ] ; 2 :
80669: LD_ADDR_VAR 0 5
80673: PUSH
80674: LD_VAR 0 5
80678: PUSH
80679: LD_INT 135
80681: PUSH
80682: LD_INT 86
80684: PUSH
80685: EMPTY
80686: LIST
80687: LIST
80688: PUSH
80689: LD_INT 148
80691: PUSH
80692: LD_INT 100
80694: PUSH
80695: EMPTY
80696: LIST
80697: LIST
80698: PUSH
80699: LD_INT 158
80701: PUSH
80702: LD_INT 115
80704: PUSH
80705: EMPTY
80706: LIST
80707: LIST
80708: PUSH
80709: LD_INT 154
80711: PUSH
80712: LD_INT 127
80714: PUSH
80715: EMPTY
80716: LIST
80717: LIST
80718: PUSH
80719: LD_INT 145
80721: PUSH
80722: LD_INT 130
80724: PUSH
80725: EMPTY
80726: LIST
80727: LIST
80728: PUSH
80729: LD_INT 137
80731: PUSH
80732: LD_INT 133
80734: PUSH
80735: EMPTY
80736: LIST
80737: LIST
80738: PUSH
80739: LD_INT 131
80741: PUSH
80742: LD_INT 140
80744: PUSH
80745: EMPTY
80746: LIST
80747: LIST
80748: PUSH
80749: LD_INT 128
80751: PUSH
80752: LD_INT 150
80754: PUSH
80755: EMPTY
80756: LIST
80757: LIST
80758: PUSH
80759: EMPTY
80760: LIST
80761: LIST
80762: LIST
80763: LIST
80764: LIST
80765: LIST
80766: LIST
80767: LIST
80768: ADD
80769: ST_TO_ADDR
80770: GO 80997
80772: LD_INT 2
80774: DOUBLE
80775: EQUAL
80776: IFTRUE 80780
80778: GO 80873
80780: POP
// path = path ^ [ [ 127 , 81 ] , [ 119 , 89 ] , [ 119 , 100 ] , [ 123 , 111 ] , [ 128 , 126 ] , [ 127 , 135 ] , [ 128 , 150 ] ] ; 3 :
80781: LD_ADDR_VAR 0 5
80785: PUSH
80786: LD_VAR 0 5
80790: PUSH
80791: LD_INT 127
80793: PUSH
80794: LD_INT 81
80796: PUSH
80797: EMPTY
80798: LIST
80799: LIST
80800: PUSH
80801: LD_INT 119
80803: PUSH
80804: LD_INT 89
80806: PUSH
80807: EMPTY
80808: LIST
80809: LIST
80810: PUSH
80811: LD_INT 119
80813: PUSH
80814: LD_INT 100
80816: PUSH
80817: EMPTY
80818: LIST
80819: LIST
80820: PUSH
80821: LD_INT 123
80823: PUSH
80824: LD_INT 111
80826: PUSH
80827: EMPTY
80828: LIST
80829: LIST
80830: PUSH
80831: LD_INT 128
80833: PUSH
80834: LD_INT 126
80836: PUSH
80837: EMPTY
80838: LIST
80839: LIST
80840: PUSH
80841: LD_INT 127
80843: PUSH
80844: LD_INT 135
80846: PUSH
80847: EMPTY
80848: LIST
80849: LIST
80850: PUSH
80851: LD_INT 128
80853: PUSH
80854: LD_INT 150
80856: PUSH
80857: EMPTY
80858: LIST
80859: LIST
80860: PUSH
80861: EMPTY
80862: LIST
80863: LIST
80864: LIST
80865: LIST
80866: LIST
80867: LIST
80868: LIST
80869: ADD
80870: ST_TO_ADDR
80871: GO 80997
80873: LD_INT 3
80875: DOUBLE
80876: EQUAL
80877: IFTRUE 80881
80879: GO 80996
80881: POP
// path = path ^ [ [ 108 , 75 ] , [ 93 , 72 ] , [ 79 , 76 ] , [ 69 , 84 ] , [ 65 , 95 ] , [ 66 , 108 ] , [ 75 , 119 ] , [ 91 , 134 ] , [ 106 , 150 ] ] ; end ;
80882: LD_ADDR_VAR 0 5
80886: PUSH
80887: LD_VAR 0 5
80891: PUSH
80892: LD_INT 108
80894: PUSH
80895: LD_INT 75
80897: PUSH
80898: EMPTY
80899: LIST
80900: LIST
80901: PUSH
80902: LD_INT 93
80904: PUSH
80905: LD_INT 72
80907: PUSH
80908: EMPTY
80909: LIST
80910: LIST
80911: PUSH
80912: LD_INT 79
80914: PUSH
80915: LD_INT 76
80917: PUSH
80918: EMPTY
80919: LIST
80920: LIST
80921: PUSH
80922: LD_INT 69
80924: PUSH
80925: LD_INT 84
80927: PUSH
80928: EMPTY
80929: LIST
80930: LIST
80931: PUSH
80932: LD_INT 65
80934: PUSH
80935: LD_INT 95
80937: PUSH
80938: EMPTY
80939: LIST
80940: LIST
80941: PUSH
80942: LD_INT 66
80944: PUSH
80945: LD_INT 108
80947: PUSH
80948: EMPTY
80949: LIST
80950: LIST
80951: PUSH
80952: LD_INT 75
80954: PUSH
80955: LD_INT 119
80957: PUSH
80958: EMPTY
80959: LIST
80960: LIST
80961: PUSH
80962: LD_INT 91
80964: PUSH
80965: LD_INT 134
80967: PUSH
80968: EMPTY
80969: LIST
80970: LIST
80971: PUSH
80972: LD_INT 106
80974: PUSH
80975: LD_INT 150
80977: PUSH
80978: EMPTY
80979: LIST
80980: LIST
80981: PUSH
80982: EMPTY
80983: LIST
80984: LIST
80985: LIST
80986: LIST
80987: LIST
80988: LIST
80989: LIST
80990: LIST
80991: LIST
80992: ADD
80993: ST_TO_ADDR
80994: GO 80997
80996: POP
// result = [ [ gate ] , path ] ;
80997: LD_ADDR_VAR 0 1
81001: PUSH
81002: LD_VAR 0 4
81006: PUSH
81007: EMPTY
81008: LIST
81009: PUSH
81010: LD_VAR 0 5
81014: PUSH
81015: EMPTY
81016: LIST
81017: LIST
81018: ST_TO_ADDR
// end ;
81019: LD_VAR 0 1
81023: RET
// every 0 0$1 trigger producing_the_attack = 1 do var i , j , temp , AttackPath , Vehicles , engineer ;
81024: LD_EXP 118
81028: PUSH
81029: LD_INT 1
81031: EQUAL
81032: IFFALSE 82457
81034: GO 81036
81036: DISABLE
81037: LD_INT 0
81039: PPUSH
81040: PPUSH
81041: PPUSH
81042: PPUSH
81043: PPUSH
81044: PPUSH
// begin repeat wait ( 0 0$1 ) ;
81045: LD_INT 35
81047: PPUSH
81048: CALL_OW 67
// until producing_the_attack = 0 ;
81052: LD_EXP 118
81056: PUSH
81057: LD_INT 0
81059: EQUAL
81060: IFFALSE 81045
// AttackPath = DetermineAttackPath ;
81062: LD_ADDR_VAR 0 4
81066: PUSH
81067: CALL 80486 0 0
81071: ST_TO_ADDR
// if AttackPath [ 1 ] [ 1 ] then
81072: LD_VAR 0 4
81076: PUSH
81077: LD_INT 1
81079: ARRAY
81080: PUSH
81081: LD_INT 1
81083: ARRAY
81084: IFFALSE 81296
// repeat wait ( 0 0$1 ) ;
81086: LD_INT 35
81088: PPUSH
81089: CALL_OW 67
// for i in teleport_attack_list [ 1 ] do
81093: LD_ADDR_VAR 0 1
81097: PUSH
81098: LD_EXP 116
81102: PUSH
81103: LD_INT 1
81105: ARRAY
81106: PUSH
81107: FOR_IN
81108: IFFALSE 81251
// begin if IsInArea ( i , area_base2 ) then
81110: LD_VAR 0 1
81114: PPUSH
81115: LD_INT 2
81117: PPUSH
81118: CALL_OW 308
81122: IFFALSE 81142
// commoveunit ( i , ai_teleporter [ 2 ] ) ;
81124: LD_VAR 0 1
81128: PPUSH
81129: LD_EXP 50
81133: PUSH
81134: LD_INT 2
81136: ARRAY
81137: PPUSH
81138: CALL_OW 112
// if IsInArea ( i , area_base10 ) then
81142: LD_VAR 0 1
81146: PPUSH
81147: LD_INT 18
81149: PPUSH
81150: CALL_OW 308
81154: IFFALSE 81176
// commoveunit ( i , Hexinfo ( 74 , 141 ) ) ;
81156: LD_VAR 0 1
81160: PPUSH
81161: LD_INT 74
81163: PPUSH
81164: LD_INT 141
81166: PPUSH
81167: CALL_OW 428
81171: PPUSH
81172: CALL_OW 112
// if IsInArea ( i , area_base1 ) then
81176: LD_VAR 0 1
81180: PPUSH
81181: LD_INT 1
81183: PPUSH
81184: CALL_OW 308
81188: IFFALSE 81205
// commovexy ( i , 124 , 77 ) ;
81190: LD_VAR 0 1
81194: PPUSH
81195: LD_INT 124
81197: PPUSH
81198: LD_INT 77
81200: PPUSH
81201: CALL_OW 111
// if isdead ( i ) then
81205: LD_VAR 0 1
81209: PPUSH
81210: CALL_OW 301
81214: IFFALSE 81249
// teleport_attack_list = replace ( teleport_attack_list , 1 , teleport_attack_list [ 1 ] diff i ) ;
81216: LD_ADDR_EXP 116
81220: PUSH
81221: LD_EXP 116
81225: PPUSH
81226: LD_INT 1
81228: PPUSH
81229: LD_EXP 116
81233: PUSH
81234: LD_INT 1
81236: ARRAY
81237: PUSH
81238: LD_VAR 0 1
81242: DIFF
81243: PPUSH
81244: CALL_OW 1
81248: ST_TO_ADDR
// end ;
81249: GO 81107
81251: POP
81252: POP
// until unitfilter ( teleport_attack_list [ 1 ] , [ f_distxy , 124 , 77 , 20 ] ) = teleport_attack_list [ 1 ] ;
81253: LD_EXP 116
81257: PUSH
81258: LD_INT 1
81260: ARRAY
81261: PPUSH
81262: LD_INT 92
81264: PUSH
81265: LD_INT 124
81267: PUSH
81268: LD_INT 77
81270: PUSH
81271: LD_INT 20
81273: PUSH
81274: EMPTY
81275: LIST
81276: LIST
81277: LIST
81278: LIST
81279: PPUSH
81280: CALL_OW 72
81284: PUSH
81285: LD_EXP 116
81289: PUSH
81290: LD_INT 1
81292: ARRAY
81293: EQUAL
81294: IFFALSE 81086
// Vehicles = teleport_attack_list [ 1 ] ;
81296: LD_ADDR_VAR 0 5
81300: PUSH
81301: LD_EXP 116
81305: PUSH
81306: LD_INT 1
81308: ARRAY
81309: ST_TO_ADDR
// engineer = teleport_attack_people [ 3 ] ;
81310: LD_ADDR_VAR 0 6
81314: PUSH
81315: LD_EXP 117
81319: PUSH
81320: LD_INT 3
81322: ARRAY
81323: ST_TO_ADDR
// repeat wait ( 0 0$0.2 ) ;
81324: LD_INT 7
81326: PPUSH
81327: CALL_OW 67
// if unitfilter ( vehicles , [ f_alive ] ) = 0 then
81331: LD_VAR 0 5
81335: PPUSH
81336: LD_INT 51
81338: PUSH
81339: EMPTY
81340: LIST
81341: PPUSH
81342: CALL_OW 72
81346: PUSH
81347: LD_INT 0
81349: EQUAL
81350: IFFALSE 81354
// exit ;
81352: GO 82457
// temp = filterallunits ( [ [ f_side , 2 ] , [ f_not , [ f_empty ] ] ] ) ;
81354: LD_ADDR_VAR 0 3
81358: PUSH
81359: LD_INT 22
81361: PUSH
81362: LD_INT 2
81364: PUSH
81365: EMPTY
81366: LIST
81367: LIST
81368: PUSH
81369: LD_INT 3
81371: PUSH
81372: LD_INT 58
81374: PUSH
81375: EMPTY
81376: LIST
81377: PUSH
81378: EMPTY
81379: LIST
81380: LIST
81381: PUSH
81382: EMPTY
81383: LIST
81384: LIST
81385: PPUSH
81386: CALL_OW 69
81390: ST_TO_ADDR
// if temp > 0 then
81391: LD_VAR 0 3
81395: PUSH
81396: LD_INT 0
81398: GREATER
81399: IFFALSE 81461
// for i in temp do
81401: LD_ADDR_VAR 0 1
81405: PUSH
81406: LD_VAR 0 3
81410: PUSH
81411: FOR_IN
81412: IFFALSE 81459
// if see ( 3 , i ) then
81414: LD_INT 3
81416: PPUSH
81417: LD_VAR 0 1
81421: PPUSH
81422: CALL_OW 292
81426: IFFALSE 81457
// if not i in att_detected_units then
81428: LD_VAR 0 1
81432: PUSH
81433: LD_EXP 121
81437: IN
81438: NOT
81439: IFFALSE 81457
// att_detected_units = att_detected_units ^ i ;
81441: LD_ADDR_EXP 121
81445: PUSH
81446: LD_EXP 121
81450: PUSH
81451: LD_VAR 0 1
81455: ADD
81456: ST_TO_ADDR
81457: GO 81411
81459: POP
81460: POP
// if att_detected_units > 0 then
81461: LD_EXP 121
81465: PUSH
81466: LD_INT 0
81468: GREATER
81469: IFFALSE 81538
// for i in att_detected_units do
81471: LD_ADDR_VAR 0 1
81475: PUSH
81476: LD_EXP 121
81480: PUSH
81481: FOR_IN
81482: IFFALSE 81536
// if getdistunits ( i , nearestunittounit ( teleport_attack_list [ 1 ] , i ) ) > 11 then
81484: LD_VAR 0 1
81488: PPUSH
81489: LD_EXP 116
81493: PUSH
81494: LD_INT 1
81496: ARRAY
81497: PPUSH
81498: LD_VAR 0 1
81502: PPUSH
81503: CALL_OW 74
81507: PPUSH
81508: CALL_OW 296
81512: PUSH
81513: LD_INT 11
81515: GREATER
81516: IFFALSE 81534
// att_detected_units = att_detected_units diff i ;
81518: LD_ADDR_EXP 121
81522: PUSH
81523: LD_EXP 121
81527: PUSH
81528: LD_VAR 0 1
81532: DIFF
81533: ST_TO_ADDR
81534: GO 81481
81536: POP
81537: POP
// if att_detected_units > 0 then
81538: LD_EXP 121
81542: PUSH
81543: LD_INT 0
81545: GREATER
81546: IFFALSE 81572
// comattackunit ( teleport_attack_list [ 1 ] , att_detected_units [ 1 ] ) else
81548: LD_EXP 116
81552: PUSH
81553: LD_INT 1
81555: ARRAY
81556: PPUSH
81557: LD_EXP 121
81561: PUSH
81562: LD_INT 1
81564: ARRAY
81565: PPUSH
81566: CALL_OW 115
81570: GO 81787
// if unitfilter ( teleport_attack_list [ 1 ] , [ [ f_ok ] , [ f_not , [ f_distxy , AttackPath [ 2 ] [ att_count ] [ 1 ] , AttackPath [ 2 ] [ att_count ] [ 2 ] , 8 ] ] ] ) = 0 then
81572: LD_EXP 116
81576: PUSH
81577: LD_INT 1
81579: ARRAY
81580: PPUSH
81581: LD_INT 50
81583: PUSH
81584: EMPTY
81585: LIST
81586: PUSH
81587: LD_INT 3
81589: PUSH
81590: LD_INT 92
81592: PUSH
81593: LD_VAR 0 4
81597: PUSH
81598: LD_INT 2
81600: ARRAY
81601: PUSH
81602: LD_EXP 119
81606: ARRAY
81607: PUSH
81608: LD_INT 1
81610: ARRAY
81611: PUSH
81612: LD_VAR 0 4
81616: PUSH
81617: LD_INT 2
81619: ARRAY
81620: PUSH
81621: LD_EXP 119
81625: ARRAY
81626: PUSH
81627: LD_INT 2
81629: ARRAY
81630: PUSH
81631: LD_INT 8
81633: PUSH
81634: EMPTY
81635: LIST
81636: LIST
81637: LIST
81638: LIST
81639: PUSH
81640: EMPTY
81641: LIST
81642: LIST
81643: PUSH
81644: EMPTY
81645: LIST
81646: LIST
81647: PPUSH
81648: CALL_OW 72
81652: PUSH
81653: LD_INT 0
81655: EQUAL
81656: IFFALSE 81674
// att_count = att_count + 1 else
81658: LD_ADDR_EXP 119
81662: PUSH
81663: LD_EXP 119
81667: PUSH
81668: LD_INT 1
81670: PLUS
81671: ST_TO_ADDR
81672: GO 81787
// commovexy ( unitfilter ( teleport_attack_list [ 1 ] , [ f_not , [ f_distxy , AttackPath [ 2 ] [ att_count ] [ 1 ] , AttackPath [ 2 ] [ att_count ] [ 2 ] , 8 ] ] ) , AttackPath [ 2 ] [ att_count ] [ 1 ] , AttackPath [ 2 ] [ att_count ] [ 2 ] ) ;
81674: LD_EXP 116
81678: PUSH
81679: LD_INT 1
81681: ARRAY
81682: PPUSH
81683: LD_INT 3
81685: PUSH
81686: LD_INT 92
81688: PUSH
81689: LD_VAR 0 4
81693: PUSH
81694: LD_INT 2
81696: ARRAY
81697: PUSH
81698: LD_EXP 119
81702: ARRAY
81703: PUSH
81704: LD_INT 1
81706: ARRAY
81707: PUSH
81708: LD_VAR 0 4
81712: PUSH
81713: LD_INT 2
81715: ARRAY
81716: PUSH
81717: LD_EXP 119
81721: ARRAY
81722: PUSH
81723: LD_INT 2
81725: ARRAY
81726: PUSH
81727: LD_INT 8
81729: PUSH
81730: EMPTY
81731: LIST
81732: LIST
81733: LIST
81734: LIST
81735: PUSH
81736: EMPTY
81737: LIST
81738: LIST
81739: PPUSH
81740: CALL_OW 72
81744: PPUSH
81745: LD_VAR 0 4
81749: PUSH
81750: LD_INT 2
81752: ARRAY
81753: PUSH
81754: LD_EXP 119
81758: ARRAY
81759: PUSH
81760: LD_INT 1
81762: ARRAY
81763: PPUSH
81764: LD_VAR 0 4
81768: PUSH
81769: LD_INT 2
81771: ARRAY
81772: PUSH
81773: LD_EXP 119
81777: ARRAY
81778: PUSH
81779: LD_INT 2
81781: ARRAY
81782: PPUSH
81783: CALL_OW 111
// temp = 0 ;
81787: LD_ADDR_VAR 0 3
81791: PUSH
81792: LD_INT 0
81794: ST_TO_ADDR
// for i in att_detected_units do
81795: LD_ADDR_VAR 0 1
81799: PUSH
81800: LD_EXP 121
81804: PUSH
81805: FOR_IN
81806: IFFALSE 81928
// if GetBType ( i ) = b_armoury or GetBType ( i ) = b_barracks then
81808: LD_VAR 0 1
81812: PPUSH
81813: CALL_OW 266
81817: PUSH
81818: LD_INT 4
81820: EQUAL
81821: PUSH
81822: LD_VAR 0 1
81826: PPUSH
81827: CALL_OW 266
81831: PUSH
81832: LD_INT 5
81834: EQUAL
81835: OR
81836: IFFALSE 81912
// begin for j in filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
81838: LD_ADDR_VAR 0 2
81842: PUSH
81843: LD_INT 22
81845: PUSH
81846: LD_INT 2
81848: PUSH
81849: EMPTY
81850: LIST
81851: LIST
81852: PUSH
81853: LD_INT 21
81855: PUSH
81856: LD_INT 1
81858: PUSH
81859: EMPTY
81860: LIST
81861: LIST
81862: PUSH
81863: EMPTY
81864: LIST
81865: LIST
81866: PPUSH
81867: CALL_OW 69
81871: PUSH
81872: FOR_IN
81873: IFFALSE 81908
// if isinunit ( j ) = i then
81875: LD_VAR 0 2
81879: PPUSH
81880: CALL_OW 310
81884: PUSH
81885: LD_VAR 0 1
81889: EQUAL
81890: IFFALSE 81906
// temp = temp + 1 ;
81892: LD_ADDR_VAR 0 3
81896: PUSH
81897: LD_VAR 0 3
81901: PUSH
81902: LD_INT 1
81904: PLUS
81905: ST_TO_ADDR
81906: GO 81872
81908: POP
81909: POP
// end else
81910: GO 81926
// temp = temp + 1 ;
81912: LD_ADDR_VAR 0 3
81916: PUSH
81917: LD_VAR 0 3
81921: PUSH
81922: LD_INT 1
81924: PLUS
81925: ST_TO_ADDR
81926: GO 81805
81928: POP
81929: POP
// if temp > 3 or att_count = AttackPath [ 2 ] - 2 then
81930: LD_VAR 0 3
81934: PUSH
81935: LD_INT 3
81937: GREATER
81938: PUSH
81939: LD_EXP 119
81943: PUSH
81944: LD_VAR 0 4
81948: PUSH
81949: LD_INT 2
81951: ARRAY
81952: PUSH
81953: LD_INT 2
81955: MINUS
81956: EQUAL
81957: OR
81958: IFFALSE 81968
// att_backstab = 1 ;
81960: LD_ADDR_EXP 122
81964: PUSH
81965: LD_INT 1
81967: ST_TO_ADDR
// until att_count = AttackPath [ 2 ] ;
81968: LD_EXP 119
81972: PUSH
81973: LD_VAR 0 4
81977: PUSH
81978: LD_INT 2
81980: ARRAY
81981: EQUAL
81982: IFFALSE 81324
// repeat wait ( 0 0$1 ) ;
81984: LD_INT 35
81986: PPUSH
81987: CALL_OW 67
// if vehicles > 0 then
81991: LD_VAR 0 5
81995: PUSH
81996: LD_INT 0
81998: GREATER
81999: IFFALSE 82065
// if isok ( engineer ) and isinarea ( engineer , area_base5 ) then
82001: LD_VAR 0 6
82005: PPUSH
82006: CALL_OW 302
82010: PUSH
82011: LD_VAR 0 6
82015: PPUSH
82016: LD_INT 8
82018: PPUSH
82019: CALL_OW 308
82023: AND
82024: IFFALSE 82053
// comagressivemove ( vehicles , getx ( ruteleprt ) , gety ( ruteleprt ) ) else
82026: LD_VAR 0 5
82030: PPUSH
82031: LD_INT 10
82033: PPUSH
82034: CALL_OW 250
82038: PPUSH
82039: LD_INT 10
82041: PPUSH
82042: CALL_OW 251
82046: PPUSH
82047: CALL_OW 114
82051: GO 82065
// comattackunit ( vehicles , 10 ) ;
82053: LD_VAR 0 5
82057: PPUSH
82058: LD_INT 10
82060: PPUSH
82061: CALL_OW 115
// if unitfilter ( vehicles , [ f_alive ] ) = 0 then
82065: LD_VAR 0 5
82069: PPUSH
82070: LD_INT 51
82072: PUSH
82073: EMPTY
82074: LIST
82075: PPUSH
82076: CALL_OW 72
82080: PUSH
82081: LD_INT 0
82083: EQUAL
82084: IFFALSE 82088
// exit ;
82086: GO 82457
// until isdead ( ruteleprt ) or getside ( ruteleprt ) = 3 ;
82088: LD_INT 10
82090: PPUSH
82091: CALL_OW 301
82095: PUSH
82096: LD_INT 10
82098: PPUSH
82099: CALL_OW 255
82103: PUSH
82104: LD_INT 3
82106: EQUAL
82107: OR
82108: IFFALSE 81984
// repeat wait ( 0 0$1 ) ;
82110: LD_INT 35
82112: PPUSH
82113: CALL_OW 67
// if unitfilter ( vehicles , [ f_alive ] ) = 0 then
82117: LD_VAR 0 5
82121: PPUSH
82122: LD_INT 51
82124: PUSH
82125: EMPTY
82126: LIST
82127: PPUSH
82128: CALL_OW 72
82132: PUSH
82133: LD_INT 0
82135: EQUAL
82136: IFFALSE 82140
// exit ;
82138: GO 82457
// if not isok ( ruteleprt ) then
82140: LD_INT 10
82142: PPUSH
82143: CALL_OW 302
82147: NOT
82148: IFFALSE 82287
// begin if unitfilter ( vehicles , [ f_not , [ f_distxy , AttackPath [ 2 ] [ att_count ] [ 1 ] , AttackPath [ 2 ] [ att_count ] [ 2 ] , 8 ] ] ) = 0 then
82150: LD_VAR 0 5
82154: PPUSH
82155: LD_INT 3
82157: PUSH
82158: LD_INT 92
82160: PUSH
82161: LD_VAR 0 4
82165: PUSH
82166: LD_INT 2
82168: ARRAY
82169: PUSH
82170: LD_EXP 119
82174: ARRAY
82175: PUSH
82176: LD_INT 1
82178: ARRAY
82179: PUSH
82180: LD_VAR 0 4
82184: PUSH
82185: LD_INT 2
82187: ARRAY
82188: PUSH
82189: LD_EXP 119
82193: ARRAY
82194: PUSH
82195: LD_INT 2
82197: ARRAY
82198: PUSH
82199: LD_INT 8
82201: PUSH
82202: EMPTY
82203: LIST
82204: LIST
82205: LIST
82206: LIST
82207: PUSH
82208: EMPTY
82209: LIST
82210: LIST
82211: PPUSH
82212: CALL_OW 72
82216: PUSH
82217: LD_INT 0
82219: EQUAL
82220: IFFALSE 82238
// att_count = att_count - 1 else
82222: LD_ADDR_EXP 119
82226: PUSH
82227: LD_EXP 119
82231: PUSH
82232: LD_INT 1
82234: MINUS
82235: ST_TO_ADDR
82236: GO 82285
// commovexy ( vehicles , AttackPath [ 2 ] [ att_count ] [ 1 ] , AttackPath [ 2 ] [ att_count ] [ 2 ] ) ;
82238: LD_VAR 0 5
82242: PPUSH
82243: LD_VAR 0 4
82247: PUSH
82248: LD_INT 2
82250: ARRAY
82251: PUSH
82252: LD_EXP 119
82256: ARRAY
82257: PUSH
82258: LD_INT 1
82260: ARRAY
82261: PPUSH
82262: LD_VAR 0 4
82266: PUSH
82267: LD_INT 2
82269: ARRAY
82270: PUSH
82271: LD_EXP 119
82275: ARRAY
82276: PUSH
82277: LD_INT 2
82279: ARRAY
82280: PPUSH
82281: CALL_OW 111
// end else
82285: GO 82299
// comenterunit ( vehicles , 10 ) ;
82287: LD_VAR 0 5
82291: PPUSH
82292: LD_INT 10
82294: PPUSH
82295: CALL_OW 120
// for i in vehicles do
82299: LD_ADDR_VAR 0 1
82303: PUSH
82304: LD_VAR 0 5
82308: PUSH
82309: FOR_IN
82310: IFFALSE 82377
// if isinarea ( i , area_base2 ) then
82312: LD_VAR 0 1
82316: PPUSH
82317: LD_INT 2
82319: PPUSH
82320: CALL_OW 308
82324: IFFALSE 82375
// begin ai_vehicles_defend = replace ( ai_vehicles_defend , 2 , ai_vehicles_defend [ 2 ] ^ i ) ;
82326: LD_ADDR_EXP 57
82330: PUSH
82331: LD_EXP 57
82335: PPUSH
82336: LD_INT 2
82338: PPUSH
82339: LD_EXP 57
82343: PUSH
82344: LD_INT 2
82346: ARRAY
82347: PUSH
82348: LD_VAR 0 1
82352: ADD
82353: PPUSH
82354: CALL_OW 1
82358: ST_TO_ADDR
// vehicles = vehicles diff i ;
82359: LD_ADDR_VAR 0 5
82363: PUSH
82364: LD_VAR 0 5
82368: PUSH
82369: LD_VAR 0 1
82373: DIFF
82374: ST_TO_ADDR
// end ;
82375: GO 82309
82377: POP
82378: POP
// until att_count = 1 or vehicles = 0 ;
82379: LD_EXP 119
82383: PUSH
82384: LD_INT 1
82386: EQUAL
82387: PUSH
82388: LD_VAR 0 5
82392: PUSH
82393: LD_INT 0
82395: EQUAL
82396: OR
82397: IFFALSE 82110
// if vehicles > 0 then
82399: LD_VAR 0 5
82403: PUSH
82404: LD_INT 0
82406: GREATER
82407: IFFALSE 82457
// begin ai_vehicles_defend = Replace ( ai_vehicles_defend , 2 , ai_vehicles_defend [ 2 ] ^ vehicles ) ;
82409: LD_ADDR_EXP 57
82413: PUSH
82414: LD_EXP 57
82418: PPUSH
82419: LD_INT 2
82421: PPUSH
82422: LD_EXP 57
82426: PUSH
82427: LD_INT 2
82429: ARRAY
82430: PUSH
82431: LD_VAR 0 5
82435: ADD
82436: PPUSH
82437: CALL_OW 1
82441: ST_TO_ADDR
// commovexy ( vehicles , 188 , 102 ) ;
82442: LD_VAR 0 5
82446: PPUSH
82447: LD_INT 188
82449: PPUSH
82450: LD_INT 102
82452: PPUSH
82453: CALL_OW 111
// end ; end ;
82457: PPOPN 6
82459: END
// every 0 0$1 trigger att_backstab do var i , path , temp , hex_count , engineer , mechanics , en_veh , mech1_veh , mech2_veh , scientist ;
82460: LD_EXP 122
82464: IFFALSE 84086
82466: GO 82468
82468: DISABLE
82469: LD_INT 0
82471: PPUSH
82472: PPUSH
82473: PPUSH
82474: PPUSH
82475: PPUSH
82476: PPUSH
82477: PPUSH
82478: PPUSH
82479: PPUSH
82480: PPUSH
// begin path = [ [ 185 , 121 ] , [ 183 , 127 ] , [ 190 , 135 ] , [ 197 , 143 ] , [ 203 , 150 ] , [ 205 , 162 ] , [ 209 , 172 ] , [ 213 , 183 ] , [ 211 , 191 ] , [ 203 , 193 ] , [ 192 , 194 ] , [ 183 , 197 ] , [ 172 , 195 ] , [ 162 , 190 ] , [ 153 , 183 ] , [ 142 , 177 ] ] ;
82481: LD_ADDR_VAR 0 2
82485: PUSH
82486: LD_INT 185
82488: PUSH
82489: LD_INT 121
82491: PUSH
82492: EMPTY
82493: LIST
82494: LIST
82495: PUSH
82496: LD_INT 183
82498: PUSH
82499: LD_INT 127
82501: PUSH
82502: EMPTY
82503: LIST
82504: LIST
82505: PUSH
82506: LD_INT 190
82508: PUSH
82509: LD_INT 135
82511: PUSH
82512: EMPTY
82513: LIST
82514: LIST
82515: PUSH
82516: LD_INT 197
82518: PUSH
82519: LD_INT 143
82521: PUSH
82522: EMPTY
82523: LIST
82524: LIST
82525: PUSH
82526: LD_INT 203
82528: PUSH
82529: LD_INT 150
82531: PUSH
82532: EMPTY
82533: LIST
82534: LIST
82535: PUSH
82536: LD_INT 205
82538: PUSH
82539: LD_INT 162
82541: PUSH
82542: EMPTY
82543: LIST
82544: LIST
82545: PUSH
82546: LD_INT 209
82548: PUSH
82549: LD_INT 172
82551: PUSH
82552: EMPTY
82553: LIST
82554: LIST
82555: PUSH
82556: LD_INT 213
82558: PUSH
82559: LD_INT 183
82561: PUSH
82562: EMPTY
82563: LIST
82564: LIST
82565: PUSH
82566: LD_INT 211
82568: PUSH
82569: LD_INT 191
82571: PUSH
82572: EMPTY
82573: LIST
82574: LIST
82575: PUSH
82576: LD_INT 203
82578: PUSH
82579: LD_INT 193
82581: PUSH
82582: EMPTY
82583: LIST
82584: LIST
82585: PUSH
82586: LD_INT 192
82588: PUSH
82589: LD_INT 194
82591: PUSH
82592: EMPTY
82593: LIST
82594: LIST
82595: PUSH
82596: LD_INT 183
82598: PUSH
82599: LD_INT 197
82601: PUSH
82602: EMPTY
82603: LIST
82604: LIST
82605: PUSH
82606: LD_INT 172
82608: PUSH
82609: LD_INT 195
82611: PUSH
82612: EMPTY
82613: LIST
82614: LIST
82615: PUSH
82616: LD_INT 162
82618: PUSH
82619: LD_INT 190
82621: PUSH
82622: EMPTY
82623: LIST
82624: LIST
82625: PUSH
82626: LD_INT 153
82628: PUSH
82629: LD_INT 183
82631: PUSH
82632: EMPTY
82633: LIST
82634: LIST
82635: PUSH
82636: LD_INT 142
82638: PUSH
82639: LD_INT 177
82641: PUSH
82642: EMPTY
82643: LIST
82644: LIST
82645: PUSH
82646: EMPTY
82647: LIST
82648: LIST
82649: LIST
82650: LIST
82651: LIST
82652: LIST
82653: LIST
82654: LIST
82655: LIST
82656: LIST
82657: LIST
82658: LIST
82659: LIST
82660: LIST
82661: LIST
82662: LIST
82663: ST_TO_ADDR
// hex_count = 1 ;
82664: LD_ADDR_VAR 0 4
82668: PUSH
82669: LD_INT 1
82671: ST_TO_ADDR
// engineer = teleport_attack_people [ 3 ] ;
82672: LD_ADDR_VAR 0 5
82676: PUSH
82677: LD_EXP 117
82681: PUSH
82682: LD_INT 3
82684: ARRAY
82685: ST_TO_ADDR
// mechanics = teleport_attack_people [ 1 ] ^ teleport_attack_people [ 2 ] ;
82686: LD_ADDR_VAR 0 6
82690: PUSH
82691: LD_EXP 117
82695: PUSH
82696: LD_INT 1
82698: ARRAY
82699: PUSH
82700: LD_EXP 117
82704: PUSH
82705: LD_INT 2
82707: ARRAY
82708: ADD
82709: ST_TO_ADDR
// en_veh = teleport_attack_list [ 2 ] [ 3 ] ;
82710: LD_ADDR_VAR 0 7
82714: PUSH
82715: LD_EXP 116
82719: PUSH
82720: LD_INT 2
82722: ARRAY
82723: PUSH
82724: LD_INT 3
82726: ARRAY
82727: ST_TO_ADDR
// mech1_veh = teleport_attack_list [ 2 ] [ 1 ] ;
82728: LD_ADDR_VAR 0 8
82732: PUSH
82733: LD_EXP 116
82737: PUSH
82738: LD_INT 2
82740: ARRAY
82741: PUSH
82742: LD_INT 1
82744: ARRAY
82745: ST_TO_ADDR
// mech2_veh = teleport_attack_list [ 2 ] [ 2 ] ;
82746: LD_ADDR_VAR 0 9
82750: PUSH
82751: LD_EXP 116
82755: PUSH
82756: LD_INT 2
82758: ARRAY
82759: PUSH
82760: LD_INT 2
82762: ARRAY
82763: ST_TO_ADDR
// scientist = teleport_attack_people [ 4 ] ;
82764: LD_ADDR_VAR 0 10
82768: PUSH
82769: LD_EXP 117
82773: PUSH
82774: LD_INT 4
82776: ARRAY
82777: ST_TO_ADDR
// repeat wait ( 0 0$0.2 ) ;
82778: LD_INT 7
82780: PPUSH
82781: CALL_OW 67
// if isinarea ( engineer , area_base2 ) and ( getlives ( engineer ) < 600 or getlives ( en_veh ) < 600 or isdead ( en_veh ) or isdead ( ruteleprt ) or getside ( ruteleprt ) = 3 ) then
82785: LD_VAR 0 5
82789: PPUSH
82790: LD_INT 2
82792: PPUSH
82793: CALL_OW 308
82797: PUSH
82798: LD_VAR 0 5
82802: PPUSH
82803: CALL_OW 256
82807: PUSH
82808: LD_INT 600
82810: LESS
82811: PUSH
82812: LD_VAR 0 7
82816: PPUSH
82817: CALL_OW 256
82821: PUSH
82822: LD_INT 600
82824: LESS
82825: OR
82826: PUSH
82827: LD_VAR 0 7
82831: PPUSH
82832: CALL_OW 301
82836: OR
82837: PUSH
82838: LD_INT 10
82840: PPUSH
82841: CALL_OW 301
82845: OR
82846: PUSH
82847: LD_INT 10
82849: PPUSH
82850: CALL_OW 255
82854: PUSH
82855: LD_INT 3
82857: EQUAL
82858: OR
82859: AND
82860: IFFALSE 82953
// begin ai_engineers = replace ( ai_engineers , 2 , ai_engineers [ 2 ] ^ engineer ) ;
82862: LD_ADDR_EXP 32
82866: PUSH
82867: LD_EXP 32
82871: PPUSH
82872: LD_INT 2
82874: PPUSH
82875: LD_EXP 32
82879: PUSH
82880: LD_INT 2
82882: ARRAY
82883: PUSH
82884: LD_VAR 0 5
82888: ADD
82889: PPUSH
82890: CALL_OW 1
82894: ST_TO_ADDR
// if isinunit ( engineer ) = en_veh then
82895: LD_VAR 0 5
82899: PPUSH
82900: CALL_OW 310
82904: PUSH
82905: LD_VAR 0 7
82909: EQUAL
82910: IFFALSE 82945
// ai_vehicles_defend = replace ( ai_vehicles_defend , 2 , ai_vehicles_defend [ 2 ] ^ en_veh ) ;
82912: LD_ADDR_EXP 57
82916: PUSH
82917: LD_EXP 57
82921: PPUSH
82922: LD_INT 2
82924: PPUSH
82925: LD_EXP 57
82929: PUSH
82930: LD_INT 2
82932: ARRAY
82933: PUSH
82934: LD_VAR 0 7
82938: ADD
82939: PPUSH
82940: CALL_OW 1
82944: ST_TO_ADDR
// engineer = 0 ;
82945: LD_ADDR_VAR 0 5
82949: PUSH
82950: LD_INT 0
82952: ST_TO_ADDR
// end ; for i = 1 to mechanics do
82953: LD_ADDR_VAR 0 1
82957: PUSH
82958: DOUBLE
82959: LD_INT 1
82961: DEC
82962: ST_TO_ADDR
82963: LD_VAR 0 6
82967: PUSH
82968: FOR_TO
82969: IFFALSE 83216
// if isinarea ( mechanics [ i ] , area_base2 ) and ( getlives ( mechanics [ i ] ) < 600 or getlives ( [ mech1_veh , mech2_veh ] [ i ] ) < 600 or isdead ( [ mech1_veh , mech2_veh ] [ i ] ) or isdead ( ruteleprt ) or getside ( ruteleprt ) = 3 ) then
82971: LD_VAR 0 6
82975: PUSH
82976: LD_VAR 0 1
82980: ARRAY
82981: PPUSH
82982: LD_INT 2
82984: PPUSH
82985: CALL_OW 308
82989: PUSH
82990: LD_VAR 0 6
82994: PUSH
82995: LD_VAR 0 1
82999: ARRAY
83000: PPUSH
83001: CALL_OW 256
83005: PUSH
83006: LD_INT 600
83008: LESS
83009: PUSH
83010: LD_VAR 0 8
83014: PUSH
83015: LD_VAR 0 9
83019: PUSH
83020: EMPTY
83021: LIST
83022: LIST
83023: PUSH
83024: LD_VAR 0 1
83028: ARRAY
83029: PPUSH
83030: CALL_OW 256
83034: PUSH
83035: LD_INT 600
83037: LESS
83038: OR
83039: PUSH
83040: LD_VAR 0 8
83044: PUSH
83045: LD_VAR 0 9
83049: PUSH
83050: EMPTY
83051: LIST
83052: LIST
83053: PUSH
83054: LD_VAR 0 1
83058: ARRAY
83059: PPUSH
83060: CALL_OW 301
83064: OR
83065: PUSH
83066: LD_INT 10
83068: PPUSH
83069: CALL_OW 301
83073: OR
83074: PUSH
83075: LD_INT 10
83077: PPUSH
83078: CALL_OW 255
83082: PUSH
83083: LD_INT 3
83085: EQUAL
83086: OR
83087: AND
83088: IFFALSE 83214
// begin ai_mechanics_defend = replace ( ai_mechanics_defend , 2 , ai_mechanics_defend [ 2 ] ^ mechanics [ i ] ) ;
83090: LD_ADDR_EXP 33
83094: PUSH
83095: LD_EXP 33
83099: PPUSH
83100: LD_INT 2
83102: PPUSH
83103: LD_EXP 33
83107: PUSH
83108: LD_INT 2
83110: ARRAY
83111: PUSH
83112: LD_VAR 0 6
83116: PUSH
83117: LD_VAR 0 1
83121: ARRAY
83122: ADD
83123: PPUSH
83124: CALL_OW 1
83128: ST_TO_ADDR
// if isinunit ( mechanics [ i ] ) then
83129: LD_VAR 0 6
83133: PUSH
83134: LD_VAR 0 1
83138: ARRAY
83139: PPUSH
83140: CALL_OW 310
83144: IFFALSE 83190
// ai_vehicles_defend = replace ( ai_vehicles_defend , 2 , ai_vehicles_defend [ 2 ] ^ isinunit ( mechanics [ i ] ) ) ;
83146: LD_ADDR_EXP 57
83150: PUSH
83151: LD_EXP 57
83155: PPUSH
83156: LD_INT 2
83158: PPUSH
83159: LD_EXP 57
83163: PUSH
83164: LD_INT 2
83166: ARRAY
83167: PUSH
83168: LD_VAR 0 6
83172: PUSH
83173: LD_VAR 0 1
83177: ARRAY
83178: PPUSH
83179: CALL_OW 310
83183: ADD
83184: PPUSH
83185: CALL_OW 1
83189: ST_TO_ADDR
// mechanics = mechanics diff mechanics [ i ] ;
83190: LD_ADDR_VAR 0 6
83194: PUSH
83195: LD_VAR 0 6
83199: PUSH
83200: LD_VAR 0 6
83204: PUSH
83205: LD_VAR 0 1
83209: ARRAY
83210: DIFF
83211: ST_TO_ADDR
// break ;
83212: GO 83216
// end ;
83214: GO 82968
83216: POP
83217: POP
// for i in mechanics do
83218: LD_ADDR_VAR 0 1
83222: PUSH
83223: LD_VAR 0 6
83227: PUSH
83228: FOR_IN
83229: IFFALSE 83260
// if isdead ( i ) then
83231: LD_VAR 0 1
83235: PPUSH
83236: CALL_OW 301
83240: IFFALSE 83258
// mechanics = mechanics diff i ;
83242: LD_ADDR_VAR 0 6
83246: PUSH
83247: LD_VAR 0 6
83251: PUSH
83252: LD_VAR 0 1
83256: DIFF
83257: ST_TO_ADDR
83258: GO 83228
83260: POP
83261: POP
// if isdead ( engineer ) then
83262: LD_VAR 0 5
83266: PPUSH
83267: CALL_OW 301
83271: IFFALSE 83281
// engineer = 0 ;
83273: LD_ADDR_VAR 0 5
83277: PUSH
83278: LD_INT 0
83280: ST_TO_ADDR
// for i in Mechanics ^ Engineer do
83281: LD_ADDR_VAR 0 1
83285: PUSH
83286: LD_VAR 0 6
83290: PUSH
83291: LD_VAR 0 5
83295: ADD
83296: PUSH
83297: FOR_IN
83298: IFFALSE 84064
// if islive ( ruteleprt ) then
83300: LD_INT 10
83302: PPUSH
83303: CALL_OW 300
83307: IFFALSE 84041
// begin if not isinarea ( i , area_base5 ) then
83309: LD_VAR 0 1
83313: PPUSH
83314: LD_INT 8
83316: PPUSH
83317: CALL_OW 308
83321: NOT
83322: IFFALSE 83670
// begin if getlives ( i ) < 600 or getlives ( isinunit ( i ) ) < 600 or getlives ( en_veh ) < 600 then
83324: LD_VAR 0 1
83328: PPUSH
83329: CALL_OW 256
83333: PUSH
83334: LD_INT 600
83336: LESS
83337: PUSH
83338: LD_VAR 0 1
83342: PPUSH
83343: CALL_OW 310
83347: PPUSH
83348: CALL_OW 256
83352: PUSH
83353: LD_INT 600
83355: LESS
83356: OR
83357: PUSH
83358: LD_VAR 0 7
83362: PPUSH
83363: CALL_OW 256
83367: PUSH
83368: LD_INT 600
83370: LESS
83371: OR
83372: IFFALSE 83434
// begin commovexy ( i , 180 , 103 ) ;
83374: LD_VAR 0 1
83378: PPUSH
83379: LD_INT 180
83381: PPUSH
83382: LD_INT 103
83384: PPUSH
83385: CALL_OW 111
// if scientist > 0 then
83389: LD_VAR 0 10
83393: PUSH
83394: LD_INT 0
83396: GREATER
83397: IFFALSE 83432
// ai_scientists = replace ( ai_scientists , 2 , ai_scientists [ 2 ] ^ scientist ) ;
83399: LD_ADDR_EXP 35
83403: PUSH
83404: LD_EXP 35
83408: PPUSH
83409: LD_INT 2
83411: PPUSH
83412: LD_EXP 35
83416: PUSH
83417: LD_INT 2
83419: ARRAY
83420: PUSH
83421: LD_VAR 0 10
83425: ADD
83426: PPUSH
83427: CALL_OW 1
83431: ST_TO_ADDR
// end else
83432: GO 83668
// if getdistunitxy ( isinunit ( engineer ) , path [ hex_count ] [ 1 ] , path [ hex_count ] [ 2 ] ) < 6 then
83434: LD_VAR 0 5
83438: PPUSH
83439: CALL_OW 310
83443: PPUSH
83444: LD_VAR 0 2
83448: PUSH
83449: LD_VAR 0 4
83453: ARRAY
83454: PUSH
83455: LD_INT 1
83457: ARRAY
83458: PPUSH
83459: LD_VAR 0 2
83463: PUSH
83464: LD_VAR 0 4
83468: ARRAY
83469: PUSH
83470: LD_INT 2
83472: ARRAY
83473: PPUSH
83474: CALL_OW 297
83478: PUSH
83479: LD_INT 6
83481: LESS
83482: IFFALSE 83500
// hex_count = hex_count + 1 else
83484: LD_ADDR_VAR 0 4
83488: PUSH
83489: LD_VAR 0 4
83493: PUSH
83494: LD_INT 1
83496: PLUS
83497: ST_TO_ADDR
83498: GO 83668
// case i of teleport_attack_people [ 1 ] :
83500: LD_VAR 0 1
83504: PUSH
83505: LD_EXP 117
83509: PUSH
83510: LD_INT 1
83512: ARRAY
83513: DOUBLE
83514: EQUAL
83515: IFTRUE 83519
83517: GO 83565
83519: POP
// commovexy ( teleport_attack_people [ 1 ] , path [ hex_count ] [ 1 ] , path [ hex_count ] [ 2 ] ) ; teleport_attack_people [ 2 ] :
83520: LD_EXP 117
83524: PUSH
83525: LD_INT 1
83527: ARRAY
83528: PPUSH
83529: LD_VAR 0 2
83533: PUSH
83534: LD_VAR 0 4
83538: ARRAY
83539: PUSH
83540: LD_INT 1
83542: ARRAY
83543: PPUSH
83544: LD_VAR 0 2
83548: PUSH
83549: LD_VAR 0 4
83553: ARRAY
83554: PUSH
83555: LD_INT 2
83557: ARRAY
83558: PPUSH
83559: CALL_OW 111
83563: GO 83668
83565: LD_EXP 117
83569: PUSH
83570: LD_INT 2
83572: ARRAY
83573: DOUBLE
83574: EQUAL
83575: IFTRUE 83579
83577: GO 83615
83579: POP
// commovexy ( teleport_attack_people [ 2 ] , GetX ( Engineer ) , GetY ( Engineer ) ) ; Engineer :
83580: LD_EXP 117
83584: PUSH
83585: LD_INT 2
83587: ARRAY
83588: PPUSH
83589: LD_VAR 0 5
83593: PPUSH
83594: CALL_OW 250
83598: PPUSH
83599: LD_VAR 0 5
83603: PPUSH
83604: CALL_OW 251
83608: PPUSH
83609: CALL_OW 111
83613: GO 83668
83615: LD_VAR 0 5
83619: DOUBLE
83620: EQUAL
83621: IFTRUE 83625
83623: GO 83667
83625: POP
// commovexy ( Engineer , path [ hex_count ] [ 1 ] , path [ hex_count ] [ 2 ] ) ; end ;
83626: LD_VAR 0 5
83630: PPUSH
83631: LD_VAR 0 2
83635: PUSH
83636: LD_VAR 0 4
83640: ARRAY
83641: PUSH
83642: LD_INT 1
83644: ARRAY
83645: PPUSH
83646: LD_VAR 0 2
83650: PUSH
83651: LD_VAR 0 4
83655: ARRAY
83656: PUSH
83657: LD_INT 2
83659: ARRAY
83660: PPUSH
83661: CALL_OW 111
83665: GO 83668
83667: POP
// end else
83668: GO 84039
// if not getside ( ruteleprt ) = 3 then
83670: LD_INT 10
83672: PPUSH
83673: CALL_OW 255
83677: PUSH
83678: LD_INT 3
83680: EQUAL
83681: NOT
83682: IFFALSE 83858
// begin if getdistunits ( Engineer , 10 ) > 4 then
83684: LD_VAR 0 5
83688: PPUSH
83689: LD_INT 10
83691: PPUSH
83692: CALL_OW 296
83696: PUSH
83697: LD_INT 4
83699: GREATER
83700: IFFALSE 83719
// commovexy ( Engineer , 138 , 175 ) else
83702: LD_VAR 0 5
83706: PPUSH
83707: LD_INT 138
83709: PPUSH
83710: LD_INT 175
83712: PPUSH
83713: CALL_OW 111
83717: GO 83783
// if isinunit ( Engineer ) then
83719: LD_VAR 0 5
83723: PPUSH
83724: CALL_OW 310
83728: IFFALSE 83741
// comexitvehicle ( Engineer ) else
83730: LD_VAR 0 5
83734: PPUSH
83735: CALL_OW 121
83739: GO 83783
// SetTaskList ( Engineer , [ [ e , 137 , 178 , 10 , 0 , 0 , 0 ] ] ) ;
83741: LD_VAR 0 5
83745: PPUSH
83746: LD_STRING e
83748: PUSH
83749: LD_INT 137
83751: PUSH
83752: LD_INT 178
83754: PUSH
83755: LD_INT 10
83757: PUSH
83758: LD_INT 0
83760: PUSH
83761: LD_INT 0
83763: PUSH
83764: LD_INT 0
83766: PUSH
83767: EMPTY
83768: LIST
83769: LIST
83770: LIST
83771: LIST
83772: LIST
83773: LIST
83774: LIST
83775: PUSH
83776: EMPTY
83777: LIST
83778: PPUSH
83779: CALL_OW 446
// if engineer = 0 then
83783: LD_VAR 0 5
83787: PUSH
83788: LD_INT 0
83790: EQUAL
83791: IFFALSE 83807
// comattackunit ( i , 10 ) else
83793: LD_VAR 0 1
83797: PPUSH
83798: LD_INT 10
83800: PPUSH
83801: CALL_OW 115
83805: GO 83856
// if not i = engineer and getdistunitxy ( i , 138 , 173 ) > 6 then
83807: LD_VAR 0 1
83811: PUSH
83812: LD_VAR 0 5
83816: EQUAL
83817: NOT
83818: PUSH
83819: LD_VAR 0 1
83823: PPUSH
83824: LD_INT 138
83826: PPUSH
83827: LD_INT 173
83829: PPUSH
83830: CALL_OW 297
83834: PUSH
83835: LD_INT 6
83837: GREATER
83838: AND
83839: IFFALSE 83856
// commovexy ( i , 138 , 172 ) ;
83841: LD_VAR 0 1
83845: PPUSH
83846: LD_INT 138
83848: PPUSH
83849: LD_INT 172
83851: PPUSH
83852: CALL_OW 111
// end else
83856: GO 84039
// begin Teleport_status = 0 ;
83858: LD_ADDR_EXP 112
83862: PUSH
83863: LD_INT 0
83865: ST_TO_ADDR
// if scientist in teleport_attack_people then
83866: LD_VAR 0 10
83870: PUSH
83871: LD_EXP 117
83875: IN
83876: IFFALSE 83976
// begin settasklist ( scientist , [ [ L , 162 , 102 , 0 , 10 , 0 , 0 ] ] ) ;
83878: LD_VAR 0 10
83882: PPUSH
83883: LD_STRING L
83885: PUSH
83886: LD_INT 162
83888: PUSH
83889: LD_INT 102
83891: PUSH
83892: LD_INT 0
83894: PUSH
83895: LD_INT 10
83897: PUSH
83898: LD_INT 0
83900: PUSH
83901: LD_INT 0
83903: PUSH
83904: EMPTY
83905: LIST
83906: LIST
83907: LIST
83908: LIST
83909: LIST
83910: LIST
83911: LIST
83912: PUSH
83913: EMPTY
83914: LIST
83915: PPUSH
83916: CALL_OW 446
// wait ( 0 0$1 ) ;
83920: LD_INT 35
83922: PPUSH
83923: CALL_OW 67
// ai_scientists = replace ( ai_scientists , 2 , ai_scientists [ 2 ] ^ scientist ) ;
83927: LD_ADDR_EXP 35
83931: PUSH
83932: LD_EXP 35
83936: PPUSH
83937: LD_INT 2
83939: PPUSH
83940: LD_EXP 35
83944: PUSH
83945: LD_INT 2
83947: ARRAY
83948: PUSH
83949: LD_VAR 0 10
83953: ADD
83954: PPUSH
83955: CALL_OW 1
83959: ST_TO_ADDR
// teleport_attack_people = teleport_attack_people diff scientist ;
83960: LD_ADDR_EXP 117
83964: PUSH
83965: LD_EXP 117
83969: PUSH
83970: LD_VAR 0 10
83974: DIFF
83975: ST_TO_ADDR
// end ; comenterunit ( Mechanics , 10 ) ;
83976: LD_VAR 0 6
83980: PPUSH
83981: LD_INT 10
83983: PPUSH
83984: CALL_OW 120
// if isok ( en_veh ) then
83988: LD_VAR 0 7
83992: PPUSH
83993: CALL_OW 302
83997: IFFALSE 84027
// begin comenterunit ( Engineer , en_veh ) ;
83999: LD_VAR 0 5
84003: PPUSH
84004: LD_VAR 0 7
84008: PPUSH
84009: CALL_OW 120
// addcomenterunit ( Engineer , 10 ) ;
84013: LD_VAR 0 5
84017: PPUSH
84018: LD_INT 10
84020: PPUSH
84021: CALL_OW 180
// end else
84025: GO 84039
// comenterunit ( Engineer , 10 ) ;
84027: LD_VAR 0 5
84031: PPUSH
84032: LD_INT 10
84034: PPUSH
84035: CALL_OW 120
// end ; end else
84039: GO 84062
// commovexy ( Mechanics ^ Engineer , 180 , 103 ) ;
84041: LD_VAR 0 6
84045: PUSH
84046: LD_VAR 0 5
84050: ADD
84051: PPUSH
84052: LD_INT 180
84054: PPUSH
84055: LD_INT 103
84057: PPUSH
84058: CALL_OW 111
84062: GO 83297
84064: POP
84065: POP
// until Mechanics = 0 and Engineer = 0 ;
84066: LD_VAR 0 6
84070: PUSH
84071: LD_INT 0
84073: EQUAL
84074: PUSH
84075: LD_VAR 0 5
84079: PUSH
84080: LD_INT 0
84082: EQUAL
84083: AND
84084: IFFALSE 82778
// end ; end_of_file
84086: PPOPN 10
84088: END
// every 0 0$1 trigger ( filterallunits ( [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_engineer ] , [ f_class , class_mechanic ] , [ f_class , class_scientistic ] , [ f_class , class_mortar ] , [ f_class , class_bazooker ] ] ] ) diff Heike ) < PlayerMinimumPeople marked 3 do
84089: LD_INT 22
84091: PUSH
84092: LD_INT 2
84094: PUSH
84095: EMPTY
84096: LIST
84097: LIST
84098: PUSH
84099: LD_INT 21
84101: PUSH
84102: LD_INT 1
84104: PUSH
84105: EMPTY
84106: LIST
84107: LIST
84108: PUSH
84109: LD_INT 2
84111: PUSH
84112: LD_INT 25
84114: PUSH
84115: LD_INT 1
84117: PUSH
84118: EMPTY
84119: LIST
84120: LIST
84121: PUSH
84122: LD_INT 25
84124: PUSH
84125: LD_INT 2
84127: PUSH
84128: EMPTY
84129: LIST
84130: LIST
84131: PUSH
84132: LD_INT 25
84134: PUSH
84135: LD_INT 3
84137: PUSH
84138: EMPTY
84139: LIST
84140: LIST
84141: PUSH
84142: LD_INT 25
84144: PUSH
84145: LD_INT 4
84147: PUSH
84148: EMPTY
84149: LIST
84150: LIST
84151: PUSH
84152: LD_INT 25
84154: PUSH
84155: LD_INT 8
84157: PUSH
84158: EMPTY
84159: LIST
84160: LIST
84161: PUSH
84162: LD_INT 25
84164: PUSH
84165: LD_INT 9
84167: PUSH
84168: EMPTY
84169: LIST
84170: LIST
84171: PUSH
84172: EMPTY
84173: LIST
84174: LIST
84175: LIST
84176: LIST
84177: LIST
84178: LIST
84179: LIST
84180: PUSH
84181: EMPTY
84182: LIST
84183: LIST
84184: LIST
84185: PPUSH
84186: CALL_OW 69
84190: PUSH
84191: LD_EXP 12
84195: DIFF
84196: PUSH
84197: LD_EXP 189
84201: LESS
84202: IFFALSE 84214
84204: GO 84206
84206: DISABLE
// YouLost ( TooManyCasualties ) ;
84207: LD_STRING TooManyCasualties
84209: PPUSH
84210: CALL_OW 104
84214: END
// every 0 0$1 trigger MissionEnd do var i , destruction , un_list , name_list ;
84215: LD_EXP 188
84219: IFFALSE 84486
84221: GO 84223
84223: DISABLE
84224: LD_INT 0
84226: PPUSH
84227: PPUSH
84228: PPUSH
84229: PPUSH
// begin repeat wait ( 0 0$1 ) ;
84230: LD_INT 35
84232: PPUSH
84233: CALL_OW 67
// if not HeikeSent or enable_transport < 2 then
84237: LD_EXP 178
84241: NOT
84242: PUSH
84243: LD_EXP 144
84247: PUSH
84248: LD_INT 2
84250: LESS
84251: OR
84252: IFFALSE 84268
// FinalCountdown = FinalCountdown - 0 0$1 ;
84254: LD_ADDR_EXP 181
84258: PUSH
84259: LD_EXP 181
84263: PUSH
84264: LD_INT 35
84266: MINUS
84267: ST_TO_ADDR
// if FinalCountdown < 0 0$1 then
84268: LD_EXP 181
84272: PUSH
84273: LD_INT 35
84275: LESS
84276: IFFALSE 84315
// if PlayerConvoySent = 0 then
84278: LD_EXP 177
84282: PUSH
84283: LD_INT 0
84285: EQUAL
84286: IFFALSE 84297
// YouLost ( NotGatheredResources ) else
84288: LD_STRING NotGatheredResources
84290: PPUSH
84291: CALL_OW 104
84295: GO 84315
// begin Say ( Heike , End_He4 ) ;
84297: LD_EXP 12
84301: PPUSH
84302: LD_STRING End_He4
84304: PPUSH
84305: CALL_OW 88
// SavePlayerAnyway ;
84309: CALL 84489 0 0
// break ;
84313: GO 84327
// end ; until PlayerConvoySent and HeikeSent ;
84315: LD_EXP 177
84319: PUSH
84320: LD_EXP 178
84324: AND
84325: IFFALSE 84230
// Savevariable ( FinalCountdown , extra_time_14_cont ) ;
84327: LD_EXP 181
84331: PPUSH
84332: LD_STRING extra_time_14_cont
84334: PPUSH
84335: CALL_OW 39
// if unitfilter ( RussianPeople , [ f_lives , 250 ] ) <= RussianPeople * 0.2 and destruction_status = 1 then
84339: LD_EXP 186
84343: PPUSH
84344: LD_INT 24
84346: PUSH
84347: LD_INT 250
84349: PUSH
84350: EMPTY
84351: LIST
84352: LIST
84353: PPUSH
84354: CALL_OW 72
84358: PUSH
84359: LD_EXP 186
84363: PUSH
84364: LD_REAL  2.00000000000000E-0001
84367: MUL
84368: LESSEQUAL
84369: PUSH
84370: LD_EXP 161
84374: PUSH
84375: LD_INT 1
84377: EQUAL
84378: AND
84379: IFFALSE 84391
// destruction = 1 else
84381: LD_ADDR_VAR 0 2
84385: PUSH
84386: LD_INT 1
84388: ST_TO_ADDR
84389: GO 84464
// if destruction_status = 1 then
84391: LD_EXP 161
84395: PUSH
84396: LD_INT 1
84398: EQUAL
84399: IFFALSE 84412
// destruction = - 1 else
84401: LD_ADDR_VAR 0 2
84405: PUSH
84406: LD_INT 1
84408: NEG
84409: ST_TO_ADDR
84410: GO 84464
// if unitfilter ( RussianPeople , [ f_lives , 250 ] ) <= RussianPeople * 0.2 then
84412: LD_EXP 186
84416: PPUSH
84417: LD_INT 24
84419: PUSH
84420: LD_INT 250
84422: PUSH
84423: EMPTY
84424: LIST
84425: LIST
84426: PPUSH
84427: CALL_OW 72
84431: PUSH
84432: LD_EXP 186
84436: PUSH
84437: LD_REAL  2.00000000000000E-0001
84440: MUL
84441: LESSEQUAL
84442: IFFALSE 84455
// destruction = - 2 else
84444: LD_ADDR_VAR 0 2
84448: PUSH
84449: LD_INT 2
84451: NEG
84452: ST_TO_ADDR
84453: GO 84464
// destruction = - 3 ;
84455: LD_ADDR_VAR 0 2
84459: PUSH
84460: LD_INT 3
84462: NEG
84463: ST_TO_ADDR
// SaveVariable ( Destruction , Destruction_14_cont ) ;
84464: LD_VAR 0 2
84468: PPUSH
84469: LD_STRING Destruction_14_cont
84471: PPUSH
84472: CALL_OW 39
// ChangeMap ( %2 , %2 ) ;
84476: LD_STRING %2
84478: PPUSH
84479: LD_STRING %2
84481: PPUSH
84482: CALL_OW 340
// end ;
84486: PPOPN 4
84488: END
// function SavePlayerAnyway ; var i , j , temp , temp_list , playerhumans , playerapes , vehicles , un_list , name_list ; begin
84489: LD_INT 0
84491: PPUSH
84492: PPUSH
84493: PPUSH
84494: PPUSH
84495: PPUSH
84496: PPUSH
84497: PPUSH
84498: PPUSH
84499: PPUSH
84500: PPUSH
// vehicles = [ ] ;
84501: LD_ADDR_VAR 0 8
84505: PUSH
84506: EMPTY
84507: ST_TO_ADDR
// playerapes = filterallunits ( [ [ f_placed ] , [ f_side , 2 ] , [ f_type , unit_human ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ) ;
84508: LD_ADDR_VAR 0 7
84512: PUSH
84513: LD_INT 52
84515: PUSH
84516: EMPTY
84517: LIST
84518: PUSH
84519: LD_INT 22
84521: PUSH
84522: LD_INT 2
84524: PUSH
84525: EMPTY
84526: LIST
84527: LIST
84528: PUSH
84529: LD_INT 21
84531: PUSH
84532: LD_INT 1
84534: PUSH
84535: EMPTY
84536: LIST
84537: LIST
84538: PUSH
84539: LD_INT 2
84541: PUSH
84542: LD_INT 25
84544: PUSH
84545: LD_INT 12
84547: PUSH
84548: EMPTY
84549: LIST
84550: LIST
84551: PUSH
84552: LD_INT 25
84554: PUSH
84555: LD_INT 15
84557: PUSH
84558: EMPTY
84559: LIST
84560: LIST
84561: PUSH
84562: LD_INT 25
84564: PUSH
84565: LD_INT 17
84567: PUSH
84568: EMPTY
84569: LIST
84570: LIST
84571: PUSH
84572: EMPTY
84573: LIST
84574: LIST
84575: LIST
84576: LIST
84577: PUSH
84578: EMPTY
84579: LIST
84580: LIST
84581: LIST
84582: LIST
84583: PPUSH
84584: CALL_OW 69
84588: ST_TO_ADDR
// playerhumans = filterallunits ( [ [ f_placed ] , [ f_side , 2 ] , [ f_type , unit_human ] ] ) ;
84589: LD_ADDR_VAR 0 6
84593: PUSH
84594: LD_INT 52
84596: PUSH
84597: EMPTY
84598: LIST
84599: PUSH
84600: LD_INT 22
84602: PUSH
84603: LD_INT 2
84605: PUSH
84606: EMPTY
84607: LIST
84608: LIST
84609: PUSH
84610: LD_INT 21
84612: PUSH
84613: LD_INT 1
84615: PUSH
84616: EMPTY
84617: LIST
84618: LIST
84619: PUSH
84620: EMPTY
84621: LIST
84622: LIST
84623: LIST
84624: PPUSH
84625: CALL_OW 69
84629: ST_TO_ADDR
// playerhumans = playerhumans diff playerapes ;
84630: LD_ADDR_VAR 0 6
84634: PUSH
84635: LD_VAR 0 6
84639: PUSH
84640: LD_VAR 0 7
84644: DIFF
84645: ST_TO_ADDR
// for i in playerhumans do
84646: LD_ADDR_VAR 0 2
84650: PUSH
84651: LD_VAR 0 6
84655: PUSH
84656: FOR_IN
84657: IFFALSE 84702
// if GetType ( isinunit ( i ) ) = unit_vehicle then
84659: LD_VAR 0 2
84663: PPUSH
84664: CALL_OW 310
84668: PPUSH
84669: CALL_OW 247
84673: PUSH
84674: LD_INT 2
84676: EQUAL
84677: IFFALSE 84700
// vehicles = vehicles ^ isinunit ( i ) ;
84679: LD_ADDR_VAR 0 8
84683: PUSH
84684: LD_VAR 0 8
84688: PUSH
84689: LD_VAR 0 2
84693: PPUSH
84694: CALL_OW 310
84698: ADD
84699: ST_TO_ADDR
84700: GO 84656
84702: POP
84703: POP
// for i in filterunitsinarea ( exit_heike , [ [ f_side , 2 ] , [ f_or , [ f_control , control_remote ] , [ f_control , control_apeman ] ] ] ) do
84704: LD_ADDR_VAR 0 2
84708: PUSH
84709: LD_INT 29
84711: PPUSH
84712: LD_INT 22
84714: PUSH
84715: LD_INT 2
84717: PUSH
84718: EMPTY
84719: LIST
84720: LIST
84721: PUSH
84722: LD_INT 2
84724: PUSH
84725: LD_INT 33
84727: PUSH
84728: LD_INT 2
84730: PUSH
84731: EMPTY
84732: LIST
84733: LIST
84734: PUSH
84735: LD_INT 33
84737: PUSH
84738: LD_INT 5
84740: PUSH
84741: EMPTY
84742: LIST
84743: LIST
84744: PUSH
84745: EMPTY
84746: LIST
84747: LIST
84748: LIST
84749: PUSH
84750: EMPTY
84751: LIST
84752: LIST
84753: PPUSH
84754: CALL_OW 70
84758: PUSH
84759: FOR_IN
84760: IFFALSE 84830
// if getcontrol ( i ) = control_apeman then
84762: LD_VAR 0 2
84766: PPUSH
84767: CALL_OW 263
84771: PUSH
84772: LD_INT 5
84774: EQUAL
84775: IFFALSE 84795
// vehicles = vehicles ^ i else
84777: LD_ADDR_VAR 0 8
84781: PUSH
84782: LD_VAR 0 8
84786: PUSH
84787: LD_VAR 0 2
84791: ADD
84792: ST_TO_ADDR
84793: GO 84828
// if IsControledBy ( i ) in playerhumans then
84795: LD_VAR 0 2
84799: PPUSH
84800: CALL_OW 312
84804: PUSH
84805: LD_VAR 0 6
84809: IN
84810: IFFALSE 84828
// vehicles = vehicles ^ i ;
84812: LD_ADDR_VAR 0 8
84816: PUSH
84817: LD_VAR 0 8
84821: PUSH
84822: LD_VAR 0 2
84826: ADD
84827: ST_TO_ADDR
84828: GO 84759
84830: POP
84831: POP
// temp = [ ] ;
84832: LD_ADDR_VAR 0 4
84836: PUSH
84837: EMPTY
84838: ST_TO_ADDR
// for i in Vehicles do
84839: LD_ADDR_VAR 0 2
84843: PUSH
84844: LD_VAR 0 8
84848: PUSH
84849: FOR_IN
84850: IFFALSE 84925
// temp = temp ^ [ [ GetNation ( i ) , GetWeapon ( i ) , GetChassis ( i ) , GetControl ( i ) , GetEngine ( i ) ] ] ;
84852: LD_ADDR_VAR 0 4
84856: PUSH
84857: LD_VAR 0 4
84861: PUSH
84862: LD_VAR 0 2
84866: PPUSH
84867: CALL_OW 248
84871: PUSH
84872: LD_VAR 0 2
84876: PPUSH
84877: CALL_OW 264
84881: PUSH
84882: LD_VAR 0 2
84886: PPUSH
84887: CALL_OW 265
84891: PUSH
84892: LD_VAR 0 2
84896: PPUSH
84897: CALL_OW 263
84901: PUSH
84902: LD_VAR 0 2
84906: PPUSH
84907: CALL_OW 262
84911: PUSH
84912: EMPTY
84913: LIST
84914: LIST
84915: LIST
84916: LIST
84917: LIST
84918: PUSH
84919: EMPTY
84920: LIST
84921: ADD
84922: ST_TO_ADDR
84923: GO 84849
84925: POP
84926: POP
// SaveVariable ( temp , Rescue_Vehicles_14 ) ;
84927: LD_VAR 0 4
84931: PPUSH
84932: LD_STRING Rescue_Vehicles_14
84934: PPUSH
84935: CALL_OW 39
// un_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
84939: LD_ADDR_VAR 0 9
84943: PUSH
84944: LD_EXP 12
84948: PUSH
84949: LD_EXP 15
84953: PUSH
84954: LD_EXP 13
84958: PUSH
84959: LD_EXP 14
84963: PUSH
84964: LD_EXP 16
84968: PUSH
84969: LD_EXP 17
84973: PUSH
84974: LD_EXP 19
84978: PUSH
84979: LD_EXP 21
84983: PUSH
84984: LD_EXP 22
84988: PUSH
84989: LD_EXP 18
84993: PUSH
84994: LD_EXP 20
84998: PUSH
84999: LD_EXP 23
85003: PUSH
85004: EMPTY
85005: LIST
85006: LIST
85007: LIST
85008: LIST
85009: LIST
85010: LIST
85011: LIST
85012: LIST
85013: LIST
85014: LIST
85015: LIST
85016: LIST
85017: ST_TO_ADDR
// name_list = [ Heike , Oswald , Olaf , Sonya , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ;
85018: LD_ADDR_VAR 0 10
85022: PUSH
85023: LD_STRING Heike
85025: PUSH
85026: LD_STRING Oswald
85028: PUSH
85029: LD_STRING Olaf
85031: PUSH
85032: LD_STRING Sonya
85034: PUSH
85035: LD_STRING Ralph
85037: PUSH
85038: LD_STRING Kowalski
85040: PUSH
85041: LD_STRING Aviradze
85043: PUSH
85044: LD_STRING Swansson
85046: PUSH
85047: LD_STRING Dwayne
85049: PUSH
85050: LD_STRING Khattam
85052: PUSH
85053: LD_STRING Evelyn
85055: PUSH
85056: LD_STRING Makise
85058: PUSH
85059: EMPTY
85060: LIST
85061: LIST
85062: LIST
85063: LIST
85064: LIST
85065: LIST
85066: LIST
85067: LIST
85068: LIST
85069: LIST
85070: LIST
85071: LIST
85072: ST_TO_ADDR
// for i = 1 to un_list do
85073: LD_ADDR_VAR 0 2
85077: PUSH
85078: DOUBLE
85079: LD_INT 1
85081: DEC
85082: ST_TO_ADDR
85083: LD_VAR 0 9
85087: PUSH
85088: FOR_TO
85089: IFFALSE 85162
// if IsPlaced ( un_list [ i ] ) or IsPlaced ( isinunit ( un_list [ i ] ) ) then
85091: LD_VAR 0 9
85095: PUSH
85096: LD_VAR 0 2
85100: ARRAY
85101: PPUSH
85102: CALL_OW 305
85106: PUSH
85107: LD_VAR 0 9
85111: PUSH
85112: LD_VAR 0 2
85116: ARRAY
85117: PPUSH
85118: CALL_OW 310
85122: PPUSH
85123: CALL_OW 305
85127: OR
85128: IFFALSE 85160
// SaveCharacters ( un_list [ i ] , name_list [ i ] & _Rescue_14_cont ) ;
85130: LD_VAR 0 9
85134: PUSH
85135: LD_VAR 0 2
85139: ARRAY
85140: PPUSH
85141: LD_VAR 0 10
85145: PUSH
85146: LD_VAR 0 2
85150: ARRAY
85151: PUSH
85152: LD_STRING _Rescue_14_cont
85154: STR
85155: PPUSH
85156: CALL_OW 38
85160: GO 85088
85162: POP
85163: POP
// SaveCharacters ( playerhumans diff un_list , Others_Rescue_14_cont ) ;
85164: LD_VAR 0 6
85168: PUSH
85169: LD_VAR 0 9
85173: DIFF
85174: PPUSH
85175: LD_STRING Others_Rescue_14_cont
85177: PPUSH
85178: CALL_OW 38
// if GetLives ( Gonzo ) > 0 then
85182: LD_EXP 24
85186: PPUSH
85187: CALL_OW 256
85191: PUSH
85192: LD_INT 0
85194: GREATER
85195: IFFALSE 85209
// SaveCharacters ( Gonzo , Gonzo_Rescue_14_cont ) ;
85197: LD_EXP 24
85201: PPUSH
85202: LD_STRING Gonzo_Rescue_14_cont
85204: PPUSH
85205: CALL_OW 38
// temp = [ ] ;
85209: LD_ADDR_VAR 0 4
85213: PUSH
85214: EMPTY
85215: ST_TO_ADDR
// for i in unitfilter ( playerapes , [ f_inarea , exit_heike ] ) do
85216: LD_ADDR_VAR 0 2
85220: PUSH
85221: LD_VAR 0 7
85225: PPUSH
85226: LD_INT 95
85228: PUSH
85229: LD_INT 29
85231: PUSH
85232: EMPTY
85233: LIST
85234: LIST
85235: PPUSH
85236: CALL_OW 72
85240: PUSH
85241: FOR_IN
85242: IFFALSE 85275
// if not i = Gonzo then
85244: LD_VAR 0 2
85248: PUSH
85249: LD_EXP 24
85253: EQUAL
85254: NOT
85255: IFFALSE 85273
// temp = temp ^ i ;
85257: LD_ADDR_VAR 0 4
85261: PUSH
85262: LD_VAR 0 4
85266: PUSH
85267: LD_VAR 0 2
85271: ADD
85272: ST_TO_ADDR
85273: GO 85241
85275: POP
85276: POP
// if temp > 0 then
85277: LD_VAR 0 4
85281: PUSH
85282: LD_INT 0
85284: GREATER
85285: IFFALSE 85299
// SaveCharacters ( temp , Apes_Rescue_14_cont ) ;
85287: LD_VAR 0 4
85291: PPUSH
85292: LD_STRING Apes_Rescue_14_cont
85294: PPUSH
85295: CALL_OW 38
// temp = [ Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise ] ^ ( playerhumans diff un_list ) ;
85299: LD_ADDR_VAR 0 4
85303: PUSH
85304: LD_EXP 12
85308: PUSH
85309: LD_EXP 13
85313: PUSH
85314: LD_EXP 14
85318: PUSH
85319: LD_EXP 15
85323: PUSH
85324: LD_EXP 16
85328: PUSH
85329: LD_EXP 17
85333: PUSH
85334: LD_EXP 19
85338: PUSH
85339: LD_EXP 21
85343: PUSH
85344: LD_EXP 22
85348: PUSH
85349: LD_EXP 18
85353: PUSH
85354: LD_EXP 20
85358: PUSH
85359: LD_EXP 23
85363: PUSH
85364: EMPTY
85365: LIST
85366: LIST
85367: LIST
85368: LIST
85369: LIST
85370: LIST
85371: LIST
85372: LIST
85373: LIST
85374: LIST
85375: LIST
85376: LIST
85377: PUSH
85378: LD_VAR 0 6
85382: PUSH
85383: LD_VAR 0 9
85387: DIFF
85388: ADD
85389: ST_TO_ADDR
// temp_list = [ ] ;
85390: LD_ADDR_VAR 0 5
85394: PUSH
85395: EMPTY
85396: ST_TO_ADDR
// for i = 1 to Vehicles do
85397: LD_ADDR_VAR 0 2
85401: PUSH
85402: DOUBLE
85403: LD_INT 1
85405: DEC
85406: ST_TO_ADDR
85407: LD_VAR 0 8
85411: PUSH
85412: FOR_TO
85413: IFFALSE 85530
// for j = 1 to temp do
85415: LD_ADDR_VAR 0 3
85419: PUSH
85420: DOUBLE
85421: LD_INT 1
85423: DEC
85424: ST_TO_ADDR
85425: LD_VAR 0 4
85429: PUSH
85430: FOR_TO
85431: IFFALSE 85526
// if getcontrol ( Vehicles [ i ] ) = control_manual then
85433: LD_VAR 0 8
85437: PUSH
85438: LD_VAR 0 2
85442: ARRAY
85443: PPUSH
85444: CALL_OW 263
85448: PUSH
85449: LD_INT 1
85451: EQUAL
85452: IFFALSE 85524
// if IsDrivenBy ( Vehicles [ i ] ) = temp [ j ] then
85454: LD_VAR 0 8
85458: PUSH
85459: LD_VAR 0 2
85463: ARRAY
85464: PPUSH
85465: CALL_OW 311
85469: PUSH
85470: LD_VAR 0 4
85474: PUSH
85475: LD_VAR 0 3
85479: ARRAY
85480: EQUAL
85481: IFFALSE 85524
// begin temp = replace ( temp , j , i ) ;
85483: LD_ADDR_VAR 0 4
85487: PUSH
85488: LD_VAR 0 4
85492: PPUSH
85493: LD_VAR 0 3
85497: PPUSH
85498: LD_VAR 0 2
85502: PPUSH
85503: CALL_OW 1
85507: ST_TO_ADDR
// temp_list = temp_list ^ j ;
85508: LD_ADDR_VAR 0 5
85512: PUSH
85513: LD_VAR 0 5
85517: PUSH
85518: LD_VAR 0 3
85522: ADD
85523: ST_TO_ADDR
// end ;
85524: GO 85430
85526: POP
85527: POP
85528: GO 85412
85530: POP
85531: POP
// for i = 1 to temp do
85532: LD_ADDR_VAR 0 2
85536: PUSH
85537: DOUBLE
85538: LD_INT 1
85540: DEC
85541: ST_TO_ADDR
85542: LD_VAR 0 4
85546: PUSH
85547: FOR_TO
85548: IFFALSE 85588
// if not i in temp_list then
85550: LD_VAR 0 2
85554: PUSH
85555: LD_VAR 0 5
85559: IN
85560: NOT
85561: IFFALSE 85586
// temp = replace ( temp , i , 0 ) ;
85563: LD_ADDR_VAR 0 4
85567: PUSH
85568: LD_VAR 0 4
85572: PPUSH
85573: LD_VAR 0 2
85577: PPUSH
85578: LD_INT 0
85580: PPUSH
85581: CALL_OW 1
85585: ST_TO_ADDR
85586: GO 85547
85588: POP
85589: POP
// SaveVariable ( temp , Rescue_drivers_14 ) ;
85590: LD_VAR 0 4
85594: PPUSH
85595: LD_STRING Rescue_drivers_14
85597: PPUSH
85598: CALL_OW 39
// end ;
85602: LD_VAR 0 1
85606: RET
