// export Antoine , Oates , Mahmoud ; export Ende , Tarpan ; export function PrepareOurs ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// uc_side = 8 ;
   4: LD_ADDR_OWVAR 20
   8: PUSH
   9: LD_INT 8
  11: ST_TO_ADDR
// uc_nation = nation_arabian ;
  12: LD_ADDR_OWVAR 21
  16: PUSH
  17: LD_INT 2
  19: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 3 , 0 ) ;
  20: LD_ADDR_EXP 1
  24: PUSH
  25: LD_STRING Antoine
  27: PPUSH
  28: LD_INT 3
  30: PPUSH
  31: LD_INT 0
  33: PPUSH
  34: CALL_OW 527
  38: ST_TO_ADDR
// PlaceUnitArea ( Antoine , AntoinePos , false ) ;
  39: LD_EXP 1
  43: PPUSH
  44: LD_INT 2
  46: PPUSH
  47: LD_INT 0
  49: PPUSH
  50: CALL_OW 49
// uc_side = 5 ;
  54: LD_ADDR_OWVAR 20
  58: PUSH
  59: LD_INT 5
  61: ST_TO_ADDR
// Oates = NewCharacter ( Oates ) ;
  62: LD_ADDR_EXP 2
  66: PUSH
  67: LD_STRING Oates
  69: PPUSH
  70: CALL_OW 25
  74: ST_TO_ADDR
// PlaceUnitXY ( Oates , 27 , 22 , false ) ;
  75: LD_EXP 2
  79: PPUSH
  80: LD_INT 27
  82: PPUSH
  83: LD_INT 22
  85: PPUSH
  86: LD_INT 0
  88: PPUSH
  89: CALL_OW 48
// if CheckCharacterSet ( Ende ) then
  93: LD_STRING Ende
  95: PPUSH
  96: CALL_OW 29
 100: IFFALSE 139
// begin Ende = LoadCharacter ( Ende , 1 , 0 ) ;
 102: LD_ADDR_EXP 4
 106: PUSH
 107: LD_STRING Ende
 109: PPUSH
 110: LD_INT 1
 112: PPUSH
 113: LD_INT 0
 115: PPUSH
 116: CALL_OW 527
 120: ST_TO_ADDR
// PlaceUnitXY ( Ende , 27 , 19 , false ) ;
 121: LD_EXP 4
 125: PPUSH
 126: LD_INT 27
 128: PPUSH
 129: LD_INT 19
 131: PPUSH
 132: LD_INT 0
 134: PPUSH
 135: CALL_OW 48
// end ; if CheckCharacterSet ( Tarpan ) then
 139: LD_STRING Tarpan
 141: PPUSH
 142: CALL_OW 29
 146: IFFALSE 181
// begin Tarpan = LoadCharacter ( Tarpan , 2 , 0 ) ;
 148: LD_ADDR_EXP 5
 152: PUSH
 153: LD_STRING Tarpan
 155: PPUSH
 156: LD_INT 2
 158: PPUSH
 159: LD_INT 0
 161: PPUSH
 162: CALL_OW 527
 166: ST_TO_ADDR
// PlaceHumanInUnit ( Tarpan , ocr ) ;
 167: LD_EXP 5
 171: PPUSH
 172: LD_INT 270
 174: PPUSH
 175: CALL_OW 52
// end else
 179: GO 219
// begin PrepareEngineer ( Rand ( 1 , 2 ) , Rand ( 4 , 6 ) ) ;
 181: LD_INT 1
 183: PPUSH
 184: LD_INT 2
 186: PPUSH
 187: CALL_OW 12
 191: PPUSH
 192: LD_INT 4
 194: PPUSH
 195: LD_INT 6
 197: PPUSH
 198: CALL_OW 12
 202: PPUSH
 203: CALL_OW 382
// PlaceHumanInUnit ( CreateHuman , ocr ) ;
 207: CALL_OW 44
 211: PPUSH
 212: LD_INT 270
 214: PPUSH
 215: CALL_OW 52
// end ; InitHc ;
 219: CALL_OW 19
// for i = 1 to [ oc1 , oc2 ] do
 223: LD_ADDR_VAR 0 2
 227: PUSH
 228: DOUBLE
 229: LD_INT 1
 231: DEC
 232: ST_TO_ADDR
 233: LD_INT 263
 235: PUSH
 236: LD_INT 264
 238: PUSH
 239: EMPTY
 240: LIST
 241: LIST
 242: PUSH
 243: FOR_TO
 244: IFFALSE 342
// begin uc_nation = i ;
 246: LD_ADDR_OWVAR 21
 250: PUSH
 251: LD_VAR 0 2
 255: ST_TO_ADDR
// PrepareScientist ( Rand ( 1 , 2 ) , [ Rand ( 4 , 5 ) , Rand ( 3 , 5 ) , Rand ( 3 , 4 ) ] [ difficulty ] ) ;
 256: LD_INT 1
 258: PPUSH
 259: LD_INT 2
 261: PPUSH
 262: CALL_OW 12
 266: PPUSH
 267: LD_INT 4
 269: PPUSH
 270: LD_INT 5
 272: PPUSH
 273: CALL_OW 12
 277: PUSH
 278: LD_INT 3
 280: PPUSH
 281: LD_INT 5
 283: PPUSH
 284: CALL_OW 12
 288: PUSH
 289: LD_INT 3
 291: PPUSH
 292: LD_INT 4
 294: PPUSH
 295: CALL_OW 12
 299: PUSH
 300: EMPTY
 301: LIST
 302: LIST
 303: LIST
 304: PUSH
 305: LD_OWVAR 67
 309: ARRAY
 310: PPUSH
 311: CALL_OW 384
// PlaceHumanInUnit ( CreateHuman , [ oc1 , oc2 ] [ i ] ) ;
 315: CALL_OW 44
 319: PPUSH
 320: LD_INT 263
 322: PUSH
 323: LD_INT 264
 325: PUSH
 326: EMPTY
 327: LIST
 328: LIST
 329: PUSH
 330: LD_VAR 0 2
 334: ARRAY
 335: PPUSH
 336: CALL_OW 52
// end ;
 340: GO 243
 342: POP
 343: POP
// SetCargo ( oc1 , mat_siberit , 100 ) ;
 344: LD_INT 263
 346: PPUSH
 347: LD_INT 3
 349: PPUSH
 350: LD_INT 100
 352: PPUSH
 353: CALL_OW 290
// SetCargo ( oc2 , mat_cans , [ 100 , 80 , 60 ] [ difficulty ] ) ;
 357: LD_INT 264
 359: PPUSH
 360: LD_INT 1
 362: PPUSH
 363: LD_INT 100
 365: PUSH
 366: LD_INT 80
 368: PUSH
 369: LD_INT 60
 371: PUSH
 372: EMPTY
 373: LIST
 374: LIST
 375: LIST
 376: PUSH
 377: LD_OWVAR 67
 381: ARRAY
 382: PPUSH
 383: CALL_OW 290
// end ;
 387: LD_VAR 0 1
 391: RET
// starting begin InGameOn ;
 392: CALL_OW 8
// RandomizeAll ;
 396: CALL_OW 11
// RevealFogArea ( 8 , RevealArea ) ;
 400: LD_INT 8
 402: PPUSH
 403: LD_INT 1
 405: PPUSH
 406: CALL_OW 332
// RevealFogArea ( 5 , RevealArea ) ;
 410: LD_INT 5
 412: PPUSH
 413: LD_INT 1
 415: PPUSH
 416: CALL_OW 332
// PrepareOurs ;
 420: CALL 0 0 0
// PrepareAlhambra ;
 424: CALL 496 0 0
// InitAlhambraMacros ;
 428: CALL 1547 0 0
// CenterNowOnUnits ( Antoine ) ;
 432: LD_EXP 1
 436: PPUSH
 437: CALL_OW 87
// DialogueOn ;
 441: CALL_OW 6
// DWait ( 0 0$1 ) ;
 445: LD_INT 35
 447: PPUSH
 448: CALL_OW 68
// SayRadio ( Oates , di-o-1 ) ;
 452: LD_EXP 2
 456: PPUSH
 457: LD_STRING di-o-1
 459: PPUSH
 460: CALL_OW 94
// Say ( Antoine , di-a-1 ) ;
 464: LD_EXP 1
 468: PPUSH
 469: LD_STRING di-a-1
 471: PPUSH
 472: CALL_OW 88
// DialogueOff ;
 476: CALL_OW 7
// InGameOff ;
 480: CALL_OW 9
// SaveForQuickRestart ;
 484: CALL_OW 22
// ChangeMissionObjectives ( OGo ) ;
 488: LD_STRING OGo
 490: PPUSH
 491: CALL_OW 337
// end ; end_of_file
 495: END
// export Patrols ; export function PrepareAlhambra ; var i ; begin
 496: LD_INT 0
 498: PPUSH
 499: PPUSH
// uc_side = 2 ;
 500: LD_ADDR_OWVAR 20
 504: PUSH
 505: LD_INT 2
 507: ST_TO_ADDR
// uc_nation = 2 ;
 508: LD_ADDR_OWVAR 21
 512: PUSH
 513: LD_INT 2
 515: ST_TO_ADDR
// PrepareBase ( 2 , AlhambraArea , [ Rand ( 4 , 5 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] , 4 , 2 , 0 , 4 ) ;
 516: LD_INT 2
 518: PPUSH
 519: LD_INT 6
 521: PPUSH
 522: LD_INT 4
 524: PPUSH
 525: LD_INT 5
 527: PPUSH
 528: CALL_OW 12
 532: PUSH
 533: LD_INT 4
 535: PPUSH
 536: LD_INT 6
 538: PPUSH
 539: CALL_OW 12
 543: PUSH
 544: LD_INT 5
 546: PPUSH
 547: LD_INT 6
 549: PPUSH
 550: CALL_OW 12
 554: PUSH
 555: EMPTY
 556: LIST
 557: LIST
 558: LIST
 559: PUSH
 560: LD_OWVAR 67
 564: ARRAY
 565: PPUSH
 566: LD_INT 4
 568: PPUSH
 569: LD_INT 2
 571: PPUSH
 572: LD_INT 0
 574: PPUSH
 575: LD_INT 4
 577: PPUSH
 578: CALL 8469 0 7
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
 582: LD_ADDR_VAR 0 2
 586: PUSH
 587: LD_INT 22
 589: PUSH
 590: LD_INT 2
 592: PUSH
 593: EMPTY
 594: LIST
 595: LIST
 596: PUSH
 597: LD_INT 21
 599: PUSH
 600: LD_INT 1
 602: PUSH
 603: EMPTY
 604: LIST
 605: LIST
 606: PUSH
 607: EMPTY
 608: LIST
 609: LIST
 610: PPUSH
 611: CALL_OW 69
 615: PUSH
 616: FOR_IN
 617: IFFALSE 653
// if GetBType ( IsInUnit ( i ) ) = b_breastwork then
 619: LD_VAR 0 2
 623: PPUSH
 624: CALL_OW 310
 628: PPUSH
 629: CALL_OW 266
 633: PUSH
 634: LD_INT 31
 636: EQUAL
 637: IFFALSE 651
// SetClass ( i , class_mortar ) ;
 639: LD_VAR 0 2
 643: PPUSH
 644: LD_INT 8
 646: PPUSH
 647: CALL_OW 336
 651: GO 616
 653: POP
 654: POP
// Mahmoud = NewCharacter ( Mahmoud ) ;
 655: LD_ADDR_EXP 3
 659: PUSH
 660: LD_STRING Mahmoud
 662: PPUSH
 663: CALL_OW 25
 667: ST_TO_ADDR
// SetBName ( ad , alhambra ) ;
 668: LD_INT 2
 670: PPUSH
 671: LD_STRING alhambra
 673: PPUSH
 674: CALL_OW 500
// end ;
 678: LD_VAR 0 1
 682: RET
// export patrolA , patrolB ; every 0 0$1 do var i ;
 683: GO 685
 685: DISABLE
 686: LD_INT 0
 688: PPUSH
// begin uc_side = 2 ;
 689: LD_ADDR_OWVAR 20
 693: PUSH
 694: LD_INT 2
 696: ST_TO_ADDR
// for i = 1 to [ 2 , 3 , 3 ] do
 697: LD_ADDR_VAR 0 1
 701: PUSH
 702: DOUBLE
 703: LD_INT 1
 705: DEC
 706: ST_TO_ADDR
 707: LD_INT 2
 709: PUSH
 710: LD_INT 3
 712: PUSH
 713: LD_INT 3
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: LIST
 720: PUSH
 721: FOR_TO
 722: IFFALSE 893
// begin uc_nation = Rand ( 1 , 2 ) ;
 724: LD_ADDR_OWVAR 21
 728: PUSH
 729: LD_INT 1
 731: PPUSH
 732: LD_INT 2
 734: PPUSH
 735: CALL_OW 12
 739: ST_TO_ADDR
// if i = 3 then
 740: LD_VAR 0 1
 744: PUSH
 745: LD_INT 3
 747: EQUAL
 748: IFFALSE 806
// PrepareHuman ( false , class_sniper , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] ) else
 750: LD_INT 0
 752: PPUSH
 753: LD_INT 5
 755: PPUSH
 756: LD_INT 3
 758: PPUSH
 759: LD_INT 6
 761: PPUSH
 762: CALL_OW 12
 766: PUSH
 767: LD_INT 4
 769: PPUSH
 770: LD_INT 6
 772: PPUSH
 773: CALL_OW 12
 777: PUSH
 778: LD_INT 5
 780: PPUSH
 781: LD_INT 6
 783: PPUSH
 784: CALL_OW 12
 788: PUSH
 789: EMPTY
 790: LIST
 791: LIST
 792: LIST
 793: PUSH
 794: LD_OWVAR 67
 798: ARRAY
 799: PPUSH
 800: CALL_OW 380
 804: GO 860
// PrepareHuman ( false , class_soldier , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] ) ;
 806: LD_INT 0
 808: PPUSH
 809: LD_INT 1
 811: PPUSH
 812: LD_INT 3
 814: PPUSH
 815: LD_INT 6
 817: PPUSH
 818: CALL_OW 12
 822: PUSH
 823: LD_INT 4
 825: PPUSH
 826: LD_INT 6
 828: PPUSH
 829: CALL_OW 12
 833: PUSH
 834: LD_INT 5
 836: PPUSH
 837: LD_INT 6
 839: PPUSH
 840: CALL_OW 12
 844: PUSH
 845: EMPTY
 846: LIST
 847: LIST
 848: LIST
 849: PUSH
 850: LD_OWVAR 67
 854: ARRAY
 855: PPUSH
 856: CALL_OW 380
// hc_attr = [ 10 , 11 ] ;
 860: LD_ADDR_OWVAR 29
 864: PUSH
 865: LD_INT 10
 867: PUSH
 868: LD_INT 11
 870: PUSH
 871: EMPTY
 872: LIST
 873: LIST
 874: ST_TO_ADDR
// patrolA = patrolA ^ CreateHuman ;
 875: LD_ADDR_EXP 7
 879: PUSH
 880: LD_EXP 7
 884: PUSH
 885: CALL_OW 44
 889: ADD
 890: ST_TO_ADDR
// end ;
 891: GO 721
 893: POP
 894: POP
// for i in patrolA do
 895: LD_ADDR_VAR 0 1
 899: PUSH
 900: LD_EXP 7
 904: PUSH
 905: FOR_IN
 906: IFFALSE 931
// PlaceUnitXYR ( i , 74 , 31 , 2 , false ) ;
 908: LD_VAR 0 1
 912: PPUSH
 913: LD_INT 74
 915: PPUSH
 916: LD_INT 31
 918: PPUSH
 919: LD_INT 2
 921: PPUSH
 922: LD_INT 0
 924: PPUSH
 925: CALL_OW 50
 929: GO 905
 931: POP
 932: POP
// for i = 1 to [ 1 , 2 , 2 ] do
 933: LD_ADDR_VAR 0 1
 937: PUSH
 938: DOUBLE
 939: LD_INT 1
 941: DEC
 942: ST_TO_ADDR
 943: LD_INT 1
 945: PUSH
 946: LD_INT 2
 948: PUSH
 949: LD_INT 2
 951: PUSH
 952: EMPTY
 953: LIST
 954: LIST
 955: LIST
 956: PUSH
 957: FOR_TO
 958: IFFALSE 1129
// begin uc_nation = Rand ( 1 , 2 ) ;
 960: LD_ADDR_OWVAR 21
 964: PUSH
 965: LD_INT 1
 967: PPUSH
 968: LD_INT 2
 970: PPUSH
 971: CALL_OW 12
 975: ST_TO_ADDR
// if i = 2 then
 976: LD_VAR 0 1
 980: PUSH
 981: LD_INT 2
 983: EQUAL
 984: IFFALSE 1042
// PrepareHuman ( false , class_sniper , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] ) else
 986: LD_INT 0
 988: PPUSH
 989: LD_INT 5
 991: PPUSH
 992: LD_INT 3
 994: PPUSH
 995: LD_INT 6
 997: PPUSH
 998: CALL_OW 12
1002: PUSH
1003: LD_INT 4
1005: PPUSH
1006: LD_INT 6
1008: PPUSH
1009: CALL_OW 12
1013: PUSH
1014: LD_INT 5
1016: PPUSH
1017: LD_INT 6
1019: PPUSH
1020: CALL_OW 12
1024: PUSH
1025: EMPTY
1026: LIST
1027: LIST
1028: LIST
1029: PUSH
1030: LD_OWVAR 67
1034: ARRAY
1035: PPUSH
1036: CALL_OW 380
1040: GO 1096
// PrepareHuman ( false , class_soldier , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] ) ;
1042: LD_INT 0
1044: PPUSH
1045: LD_INT 1
1047: PPUSH
1048: LD_INT 3
1050: PPUSH
1051: LD_INT 6
1053: PPUSH
1054: CALL_OW 12
1058: PUSH
1059: LD_INT 4
1061: PPUSH
1062: LD_INT 6
1064: PPUSH
1065: CALL_OW 12
1069: PUSH
1070: LD_INT 5
1072: PPUSH
1073: LD_INT 6
1075: PPUSH
1076: CALL_OW 12
1080: PUSH
1081: EMPTY
1082: LIST
1083: LIST
1084: LIST
1085: PUSH
1086: LD_OWVAR 67
1090: ARRAY
1091: PPUSH
1092: CALL_OW 380
// hc_attr = [ 10 , 11 ] ;
1096: LD_ADDR_OWVAR 29
1100: PUSH
1101: LD_INT 10
1103: PUSH
1104: LD_INT 11
1106: PUSH
1107: EMPTY
1108: LIST
1109: LIST
1110: ST_TO_ADDR
// patrolB = patrolB ^ CreateHuman ;
1111: LD_ADDR_EXP 8
1115: PUSH
1116: LD_EXP 8
1120: PUSH
1121: CALL_OW 44
1125: ADD
1126: ST_TO_ADDR
// end ;
1127: GO 957
1129: POP
1130: POP
// for i in patrolB do
1131: LD_ADDR_VAR 0 1
1135: PUSH
1136: LD_EXP 8
1140: PUSH
1141: FOR_IN
1142: IFFALSE 1167
// PlaceUnitXYR ( i , 77 , 77 , 2 , false ) ;
1144: LD_VAR 0 1
1148: PPUSH
1149: LD_INT 77
1151: PPUSH
1152: LD_INT 77
1154: PPUSH
1155: LD_INT 2
1157: PPUSH
1158: LD_INT 0
1160: PPUSH
1161: CALL_OW 50
1165: GO 1141
1167: POP
1168: POP
// PrepareMechanic ( false , 5 ) ;
1169: LD_INT 0
1171: PPUSH
1172: LD_INT 5
1174: PPUSH
1175: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , pv ) ;
1179: CALL_OW 44
1183: PPUSH
1184: LD_INT 258
1186: PPUSH
1187: CALL_OW 52
// patrolB = patrolB ^ pv ;
1191: LD_ADDR_EXP 8
1195: PUSH
1196: LD_EXP 8
1200: PUSH
1201: LD_INT 258
1203: ADD
1204: ST_TO_ADDR
// end ;
1205: PPOPN 1
1207: END
// every 0 0$1 trigger patrolA do var i , j ;
1208: LD_EXP 7
1212: IFFALSE 1361
1214: GO 1216
1216: DISABLE
1217: LD_INT 0
1219: PPUSH
1220: PPUSH
// begin while patrolA do
1221: LD_EXP 7
1225: IFFALSE 1361
// begin Wait ( 0 0$1 ) ;
1227: LD_INT 35
1229: PPUSH
1230: CALL_OW 67
// for i in patrolA do
1234: LD_ADDR_VAR 0 1
1238: PUSH
1239: LD_EXP 7
1243: PUSH
1244: FOR_IN
1245: IFFALSE 1357
// if not HasTask ( i ) then
1247: LD_VAR 0 1
1251: PPUSH
1252: CALL_OW 314
1256: NOT
1257: IFFALSE 1355
// for j in [ [ 70 , 14 ] , [ 86 , 12 ] , [ 70 , 38 ] , [ 52 , 45 ] , [ 73 , 38 ] ] do
1259: LD_ADDR_VAR 0 2
1263: PUSH
1264: LD_INT 70
1266: PUSH
1267: LD_INT 14
1269: PUSH
1270: EMPTY
1271: LIST
1272: LIST
1273: PUSH
1274: LD_INT 86
1276: PUSH
1277: LD_INT 12
1279: PUSH
1280: EMPTY
1281: LIST
1282: LIST
1283: PUSH
1284: LD_INT 70
1286: PUSH
1287: LD_INT 38
1289: PUSH
1290: EMPTY
1291: LIST
1292: LIST
1293: PUSH
1294: LD_INT 52
1296: PUSH
1297: LD_INT 45
1299: PUSH
1300: EMPTY
1301: LIST
1302: LIST
1303: PUSH
1304: LD_INT 73
1306: PUSH
1307: LD_INT 38
1309: PUSH
1310: EMPTY
1311: LIST
1312: LIST
1313: PUSH
1314: EMPTY
1315: LIST
1316: LIST
1317: LIST
1318: LIST
1319: LIST
1320: PUSH
1321: FOR_IN
1322: IFFALSE 1353
// AddComAgressiveMove ( i , j [ 1 ] , j [ 2 ] ) ;
1324: LD_VAR 0 1
1328: PPUSH
1329: LD_VAR 0 2
1333: PUSH
1334: LD_INT 1
1336: ARRAY
1337: PPUSH
1338: LD_VAR 0 2
1342: PUSH
1343: LD_INT 2
1345: ARRAY
1346: PPUSH
1347: CALL_OW 174
1351: GO 1321
1353: POP
1354: POP
1355: GO 1244
1357: POP
1358: POP
// end ;
1359: GO 1221
// end ;
1361: PPOPN 2
1363: END
// every 0 0$1 trigger patrolB do var i , j ;
1364: LD_EXP 8
1368: IFFALSE 1544
1370: GO 1372
1372: DISABLE
1373: LD_INT 0
1375: PPUSH
1376: PPUSH
// begin while patrolB do
1377: LD_EXP 8
1381: IFFALSE 1544
// begin Wait ( 0 0$1 ) ;
1383: LD_INT 35
1385: PPUSH
1386: CALL_OW 67
// for i in patrolB do
1390: LD_ADDR_VAR 0 1
1394: PUSH
1395: LD_EXP 8
1399: PUSH
1400: FOR_IN
1401: IFFALSE 1540
// if not HasTask ( i ) then
1403: LD_VAR 0 1
1407: PPUSH
1408: CALL_OW 314
1412: NOT
1413: IFFALSE 1538
// for j in [ [ 99 , 99 ] , [ 73 , 101 ] , [ 66 , 117 ] , [ 68 , 84 ] , [ 77 , 69 ] ] do
1415: LD_ADDR_VAR 0 2
1419: PUSH
1420: LD_INT 99
1422: PUSH
1423: LD_INT 99
1425: PUSH
1426: EMPTY
1427: LIST
1428: LIST
1429: PUSH
1430: LD_INT 73
1432: PUSH
1433: LD_INT 101
1435: PUSH
1436: EMPTY
1437: LIST
1438: LIST
1439: PUSH
1440: LD_INT 66
1442: PUSH
1443: LD_INT 117
1445: PUSH
1446: EMPTY
1447: LIST
1448: LIST
1449: PUSH
1450: LD_INT 68
1452: PUSH
1453: LD_INT 84
1455: PUSH
1456: EMPTY
1457: LIST
1458: LIST
1459: PUSH
1460: LD_INT 77
1462: PUSH
1463: LD_INT 69
1465: PUSH
1466: EMPTY
1467: LIST
1468: LIST
1469: PUSH
1470: EMPTY
1471: LIST
1472: LIST
1473: LIST
1474: LIST
1475: LIST
1476: PUSH
1477: FOR_IN
1478: IFFALSE 1536
// begin AddComAgressiveMove ( i , j [ 1 ] , j [ 2 ] ) ;
1480: LD_VAR 0 1
1484: PPUSH
1485: LD_VAR 0 2
1489: PUSH
1490: LD_INT 1
1492: ARRAY
1493: PPUSH
1494: LD_VAR 0 2
1498: PUSH
1499: LD_INT 2
1501: ARRAY
1502: PPUSH
1503: CALL_OW 174
// if GetType ( i ) = unit_vehicle then
1507: LD_VAR 0 1
1511: PPUSH
1512: CALL_OW 247
1516: PUSH
1517: LD_INT 2
1519: EQUAL
1520: IFFALSE 1534
// AddComWait ( i , 0 0$20 ) ;
1522: LD_VAR 0 1
1526: PPUSH
1527: LD_INT 700
1529: PPUSH
1530: CALL_OW 202
// end ;
1534: GO 1477
1536: POP
1537: POP
1538: GO 1400
1540: POP
1541: POP
// end ;
1542: GO 1377
// end ;
1544: PPOPN 2
1546: END
// export AlhambraEngineers , AlhambraBaseStrategy , AlhambraRepairStrategy ; export AlhambraTargets , AlhambraVehicles , AlhambraEnemies , AlhambraDefenceStrategy , AlhambraApemenStrategy ; export function InitAlhambraMacros ; begin
1547: LD_INT 0
1549: PPUSH
// AlhambraEngineers = FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) ;
1550: LD_ADDR_EXP 9
1554: PUSH
1555: LD_INT 22
1557: PUSH
1558: LD_INT 2
1560: PUSH
1561: EMPTY
1562: LIST
1563: LIST
1564: PUSH
1565: LD_INT 25
1567: PUSH
1568: LD_INT 2
1570: PUSH
1571: EMPTY
1572: LIST
1573: LIST
1574: PUSH
1575: EMPTY
1576: LIST
1577: LIST
1578: PPUSH
1579: CALL_OW 69
1583: ST_TO_ADDR
// AlhambraBaseStrategy = McBase ( 1 , AlhambraEngineers , GetBuildList ( GetBase ( ad ) ) diff af , [ ] , [ ] , [ mc_base_cont ] ) ;
1584: LD_ADDR_EXP 10
1588: PUSH
1589: LD_INT 1
1591: PPUSH
1592: LD_EXP 9
1596: PPUSH
1597: LD_INT 2
1599: PPUSH
1600: CALL_OW 274
1604: PPUSH
1605: CALL_OW 417
1609: PUSH
1610: LD_INT 3
1612: DIFF
1613: PPUSH
1614: EMPTY
1615: PPUSH
1616: EMPTY
1617: PPUSH
1618: LD_INT 1
1620: PUSH
1621: EMPTY
1622: LIST
1623: PPUSH
1624: CALL_OW 397
1628: ST_TO_ADDR
// AlhambraRepairStrategy = McRepair ( 2 , AlhambraEngineers , GetBuildList ( GetBase ( ad ) ) , [ [ mcr_bui_limit , 1000 ] ] ) ;
1629: LD_ADDR_EXP 11
1633: PUSH
1634: LD_INT 2
1636: PPUSH
1637: LD_EXP 9
1641: PPUSH
1642: LD_INT 2
1644: PPUSH
1645: CALL_OW 274
1649: PPUSH
1650: CALL_OW 417
1654: PPUSH
1655: LD_INT 6
1657: PUSH
1658: LD_INT 1000
1660: PUSH
1661: EMPTY
1662: LIST
1663: LIST
1664: PUSH
1665: EMPTY
1666: LIST
1667: PPUSH
1668: CALL_OW 414
1672: ST_TO_ADDR
// AlhambraTargets = McRegistry ( 2 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , OatesArea ] , mc_reg_ignore_fog ] ) ;
1673: LD_ADDR_EXP 12
1677: PUSH
1678: LD_INT 2
1680: PPUSH
1681: LD_INT 1
1683: PUSH
1684: LD_INT 105
1686: PUSH
1687: EMPTY
1688: LIST
1689: LIST
1690: PUSH
1691: LD_INT 2
1693: PUSH
1694: LD_INT 7
1696: PUSH
1697: EMPTY
1698: LIST
1699: LIST
1700: PUSH
1701: LD_INT 7
1703: PUSH
1704: EMPTY
1705: LIST
1706: LIST
1707: LIST
1708: PPUSH
1709: CALL_OW 399
1713: ST_TO_ADDR
// AlhambraEnemies = McRegistry ( 2 , [ [ mc_reg_area_to_protect , AlhambraArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
1714: LD_ADDR_EXP 14
1718: PUSH
1719: LD_INT 2
1721: PPUSH
1722: LD_INT 3
1724: PUSH
1725: LD_INT 6
1727: PUSH
1728: EMPTY
1729: LIST
1730: LIST
1731: PUSH
1732: LD_INT 1
1734: PUSH
1735: LD_INT 35
1737: PUSH
1738: EMPTY
1739: LIST
1740: LIST
1741: PUSH
1742: EMPTY
1743: LIST
1744: LIST
1745: PPUSH
1746: CALL_OW 399
1750: ST_TO_ADDR
// end ;
1751: LD_VAR 0 1
1755: RET
// every 0 0$1 do var i , m ;
1756: GO 1758
1758: DISABLE
1759: LD_INT 0
1761: PPUSH
1762: PPUSH
// begin enable ;
1763: ENABLE
// for i in AlhambraEngineers do
1764: LD_ADDR_VAR 0 1
1768: PUSH
1769: LD_EXP 9
1773: PUSH
1774: FOR_IN
1775: IFFALSE 1958
// begin if GetLives ( i ) < 800 and See ( 8 , i ) then
1777: LD_VAR 0 1
1781: PPUSH
1782: CALL_OW 256
1786: PUSH
1787: LD_INT 800
1789: LESS
1790: PUSH
1791: LD_INT 8
1793: PPUSH
1794: LD_VAR 0 1
1798: PPUSH
1799: CALL_OW 292
1803: AND
1804: IFFALSE 1834
// begin RemoveMcUnits ( AlhambraRepairStrategy , i ) ;
1806: LD_EXP 11
1810: PPUSH
1811: LD_VAR 0 1
1815: PPUSH
1816: CALL_OW 391
// ComEnterUnit ( i , ad ) ;
1820: LD_VAR 0 1
1824: PPUSH
1825: LD_INT 2
1827: PPUSH
1828: CALL_OW 120
// end else
1832: GO 1890
// if not See ( 8 , i ) and not GetUnitMc ( i ) = AlhambraRepairStrategy then
1834: LD_INT 8
1836: PPUSH
1837: LD_VAR 0 1
1841: PPUSH
1842: CALL_OW 292
1846: NOT
1847: PUSH
1848: LD_VAR 0 1
1852: PPUSH
1853: CALL_OW 388
1857: PUSH
1858: LD_EXP 11
1862: EQUAL
1863: NOT
1864: AND
1865: IFFALSE 1890
// begin ComExitBuilding ( i ) ;
1867: LD_VAR 0 1
1871: PPUSH
1872: CALL_OW 122
// AddMcUnits ( AlhambraRepairStrategy , i ) ;
1876: LD_EXP 11
1880: PPUSH
1881: LD_VAR 0 1
1885: PPUSH
1886: CALL_OW 390
// end ; if GetListOfCratesInArea ( AlhambraArea ) then
1890: LD_INT 6
1892: PPUSH
1893: CALL_OW 435
1897: IFFALSE 1956
// if not IsBusy ( i ) or not IsInUnit ( i ) then
1899: LD_VAR 0 1
1903: PPUSH
1904: CALL_OW 315
1908: NOT
1909: PUSH
1910: LD_VAR 0 1
1914: PPUSH
1915: CALL_OW 310
1919: NOT
1920: OR
1921: IFFALSE 1956
// ComCollect ( i , GetListOfCratesInArea ( AlhambraArea ) [ 1 ] , GetListOfCratesInArea ( AlhambraArea ) [ 2 ] ) ;
1923: LD_VAR 0 1
1927: PPUSH
1928: LD_INT 6
1930: PPUSH
1931: CALL_OW 435
1935: PUSH
1936: LD_INT 1
1938: ARRAY
1939: PPUSH
1940: LD_INT 6
1942: PPUSH
1943: CALL_OW 435
1947: PUSH
1948: LD_INT 2
1950: ARRAY
1951: PPUSH
1952: CALL_OW 117
// end ;
1956: GO 1774
1958: POP
1959: POP
// for i in FilterUnitsInArea ( AlhambraRepairs , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
1960: LD_ADDR_VAR 0 1
1964: PUSH
1965: LD_INT 11
1967: PPUSH
1968: LD_INT 22
1970: PUSH
1971: LD_INT 2
1973: PUSH
1974: EMPTY
1975: LIST
1976: LIST
1977: PUSH
1978: LD_INT 21
1980: PUSH
1981: LD_INT 2
1983: PUSH
1984: EMPTY
1985: LIST
1986: LIST
1987: PUSH
1988: EMPTY
1989: LIST
1990: LIST
1991: PPUSH
1992: CALL_OW 70
1996: PUSH
1997: FOR_IN
1998: IFFALSE 2125
// begin if GetLives ( i ) < 1000 then
2000: LD_VAR 0 1
2004: PPUSH
2005: CALL_OW 256
2009: PUSH
2010: LD_INT 1000
2012: LESS
2013: IFFALSE 2053
// begin m = IsDrivenBy ( i ) ;
2015: LD_ADDR_VAR 0 2
2019: PUSH
2020: LD_VAR 0 1
2024: PPUSH
2025: CALL_OW 311
2029: ST_TO_ADDR
// ComExitVehicle ( m ) ;
2030: LD_VAR 0 2
2034: PPUSH
2035: CALL_OW 121
// AddComRepairVehicle ( m , i ) ;
2039: LD_VAR 0 2
2043: PPUSH
2044: LD_VAR 0 1
2048: PPUSH
2049: CALL_OW 189
// end ; if GetLives ( i ) = 1000 and not IsDrivenBy ( i ) then
2053: LD_VAR 0 1
2057: PPUSH
2058: CALL_OW 256
2062: PUSH
2063: LD_INT 1000
2065: EQUAL
2066: PUSH
2067: LD_VAR 0 1
2071: PPUSH
2072: CALL_OW 311
2076: NOT
2077: AND
2078: IFFALSE 2123
// ComEnterUnit ( NearestUnitToUnit ( [ [ f_side , 2 ] , [ f_class , class_mechanic ] ] , i ) , i ) ;
2080: LD_INT 22
2082: PUSH
2083: LD_INT 2
2085: PUSH
2086: EMPTY
2087: LIST
2088: LIST
2089: PUSH
2090: LD_INT 25
2092: PUSH
2093: LD_INT 3
2095: PUSH
2096: EMPTY
2097: LIST
2098: LIST
2099: PUSH
2100: EMPTY
2101: LIST
2102: LIST
2103: PPUSH
2104: LD_VAR 0 1
2108: PPUSH
2109: CALL_OW 74
2113: PPUSH
2114: LD_VAR 0 1
2118: PPUSH
2119: CALL_OW 120
// end ;
2123: GO 1997
2125: POP
2126: POP
// end ;
2127: PPOPN 2
2129: END
// every 0 0$15 trigger FilterUnitsInArea ( AlhambraArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var a , i , u ;
2130: LD_INT 6
2132: PPUSH
2133: LD_INT 22
2135: PUSH
2136: LD_INT 2
2138: PUSH
2139: EMPTY
2140: LIST
2141: LIST
2142: PUSH
2143: LD_INT 58
2145: PUSH
2146: EMPTY
2147: LIST
2148: PUSH
2149: LD_INT 24
2151: PUSH
2152: LD_INT 1000
2154: PUSH
2155: EMPTY
2156: LIST
2157: LIST
2158: PUSH
2159: LD_INT 2
2161: PUSH
2162: LD_INT 30
2164: PUSH
2165: LD_INT 32
2167: PUSH
2168: EMPTY
2169: LIST
2170: LIST
2171: PUSH
2172: LD_INT 30
2174: PUSH
2175: LD_INT 31
2177: PUSH
2178: EMPTY
2179: LIST
2180: LIST
2181: PUSH
2182: EMPTY
2183: LIST
2184: LIST
2185: LIST
2186: PUSH
2187: EMPTY
2188: LIST
2189: LIST
2190: LIST
2191: LIST
2192: PPUSH
2193: CALL_OW 70
2197: IFFALSE 2337
2199: GO 2201
2201: DISABLE
2202: LD_INT 0
2204: PPUSH
2205: PPUSH
2206: PPUSH
// begin a = FilterUnitsInArea ( AlhambraArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
2207: LD_ADDR_VAR 0 1
2211: PUSH
2212: LD_INT 6
2214: PPUSH
2215: LD_INT 22
2217: PUSH
2218: LD_INT 2
2220: PUSH
2221: EMPTY
2222: LIST
2223: LIST
2224: PUSH
2225: LD_INT 58
2227: PUSH
2228: EMPTY
2229: LIST
2230: PUSH
2231: LD_INT 24
2233: PUSH
2234: LD_INT 1000
2236: PUSH
2237: EMPTY
2238: LIST
2239: LIST
2240: PUSH
2241: LD_INT 2
2243: PUSH
2244: LD_INT 30
2246: PUSH
2247: LD_INT 32
2249: PUSH
2250: EMPTY
2251: LIST
2252: LIST
2253: PUSH
2254: LD_INT 30
2256: PUSH
2257: LD_INT 31
2259: PUSH
2260: EMPTY
2261: LIST
2262: LIST
2263: PUSH
2264: EMPTY
2265: LIST
2266: LIST
2267: LIST
2268: PUSH
2269: EMPTY
2270: LIST
2271: LIST
2272: LIST
2273: LIST
2274: PPUSH
2275: CALL_OW 70
2279: ST_TO_ADDR
// for i in a do
2280: LD_ADDR_VAR 0 2
2284: PUSH
2285: LD_VAR 0 1
2289: PUSH
2290: FOR_IN
2291: IFFALSE 2335
// begin u = UnitsInside ( aa2 ) [ 1 ] ;
2293: LD_ADDR_VAR 0 3
2297: PUSH
2298: LD_INT 13
2300: PPUSH
2301: CALL_OW 313
2305: PUSH
2306: LD_INT 1
2308: ARRAY
2309: ST_TO_ADDR
// ComExitBuilding ( u ) ;
2310: LD_VAR 0 3
2314: PPUSH
2315: CALL_OW 122
// ComEnterUnit ( u , i ) ;
2319: LD_VAR 0 3
2323: PPUSH
2324: LD_VAR 0 2
2328: PPUSH
2329: CALL_OW 120
// end ;
2333: GO 2290
2335: POP
2336: POP
// end ;
2337: PPOPN 3
2339: END
// on BuildingComplete ( b ) do begin if GetSide ( b ) = 2 and GetBType ( b ) = b_bunker then
2340: LD_VAR 0 1
2344: PPUSH
2345: CALL_OW 255
2349: PUSH
2350: LD_INT 2
2352: EQUAL
2353: PUSH
2354: LD_VAR 0 1
2358: PPUSH
2359: CALL_OW 266
2363: PUSH
2364: LD_INT 32
2366: EQUAL
2367: AND
2368: IFFALSE 2449
// begin case Rand ( 1 , 2 ) of 1 :
2370: LD_INT 1
2372: PPUSH
2373: LD_INT 2
2375: PPUSH
2376: CALL_OW 12
2380: PUSH
2381: LD_INT 1
2383: DOUBLE
2384: EQUAL
2385: IFTRUE 2389
2387: GO 2404
2389: POP
// ComPlaceWeapon ( b , ar_gun ) ; 2 :
2390: LD_VAR 0 1
2394: PPUSH
2395: LD_INT 27
2397: PPUSH
2398: CALL_OW 148
2402: GO 2428
2404: LD_INT 2
2406: DOUBLE
2407: EQUAL
2408: IFTRUE 2412
2410: GO 2427
2412: POP
// ComPlaceWeapon ( b , ar_gatling_gun ) ; end ;
2413: LD_VAR 0 1
2417: PPUSH
2418: LD_INT 25
2420: PPUSH
2421: CALL_OW 148
2425: GO 2428
2427: POP
// ComEnterUnit ( UnitsInside ( aa2 ) [ 1 ] , b ) ;
2428: LD_INT 13
2430: PPUSH
2431: CALL_OW 313
2435: PUSH
2436: LD_INT 1
2438: ARRAY
2439: PPUSH
2440: LD_VAR 0 1
2444: PPUSH
2445: CALL_OW 120
// end ; end ;
2449: PPOPN 1
2451: END
// on LeaveBuilding ( b , u ) do var n ;
2452: LD_INT 0
2454: PPUSH
// begin if GetSide ( u ) = 2 and GetLives ( b ) < 250 then
2455: LD_VAR 0 2
2459: PPUSH
2460: CALL_OW 255
2464: PUSH
2465: LD_INT 2
2467: EQUAL
2468: PUSH
2469: LD_VAR 0 1
2473: PPUSH
2474: CALL_OW 256
2478: PUSH
2479: LD_INT 250
2481: LESS
2482: AND
2483: IFFALSE 2602
// begin n = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) , u ) ;
2485: LD_ADDR_VAR 0 3
2489: PUSH
2490: LD_INT 22
2492: PUSH
2493: LD_INT 2
2495: PUSH
2496: EMPTY
2497: LIST
2498: LIST
2499: PUSH
2500: LD_INT 2
2502: PUSH
2503: LD_INT 30
2505: PUSH
2506: LD_INT 4
2508: PUSH
2509: EMPTY
2510: LIST
2511: LIST
2512: PUSH
2513: LD_INT 30
2515: PUSH
2516: LD_INT 5
2518: PUSH
2519: EMPTY
2520: LIST
2521: LIST
2522: PUSH
2523: EMPTY
2524: LIST
2525: LIST
2526: LIST
2527: PUSH
2528: EMPTY
2529: LIST
2530: LIST
2531: PPUSH
2532: CALL_OW 69
2536: PPUSH
2537: LD_VAR 0 2
2541: PPUSH
2542: CALL_OW 74
2546: ST_TO_ADDR
// ComEnterUnit ( u , n ) ;
2547: LD_VAR 0 2
2551: PPUSH
2552: LD_VAR 0 3
2556: PPUSH
2557: CALL_OW 120
// if GetNation ( n ) = nation_american then
2561: LD_VAR 0 3
2565: PPUSH
2566: CALL_OW 248
2570: PUSH
2571: LD_INT 1
2573: EQUAL
2574: IFFALSE 2590
// AddComChangeProfession ( u , class_sniper ) else
2576: LD_VAR 0 2
2580: PPUSH
2581: LD_INT 5
2583: PPUSH
2584: CALL_OW 183
2588: GO 2602
// AddComChangeProfession ( u , class_soldier ) ;
2590: LD_VAR 0 2
2594: PPUSH
2595: LD_INT 1
2597: PPUSH
2598: CALL_OW 183
// end ; end ;
2602: PPOPN 3
2604: END
// every 0 0$1 trigger tick = 5 5$0 do var i ;
2605: LD_OWVAR 1
2609: PUSH
2610: LD_INT 10500
2612: EQUAL
2613: IFFALSE 2677
2615: GO 2617
2617: DISABLE
2618: LD_INT 0
2620: PPUSH
// begin for i = 1 to [ 2 , 3 , 3 ] [ difficulty ] do
2621: LD_ADDR_VAR 0 1
2625: PUSH
2626: DOUBLE
2627: LD_INT 1
2629: DEC
2630: ST_TO_ADDR
2631: LD_INT 2
2633: PUSH
2634: LD_INT 3
2636: PUSH
2637: LD_INT 3
2639: PUSH
2640: EMPTY
2641: LIST
2642: LIST
2643: LIST
2644: PUSH
2645: LD_OWVAR 67
2649: ARRAY
2650: PUSH
2651: FOR_TO
2652: IFFALSE 2675
// AddComConstruct ( af , ar_half_tracked , engine_siberite , control_manual , ar_gun ) ;
2654: LD_INT 3
2656: PPUSH
2657: LD_INT 14
2659: PPUSH
2660: LD_INT 3
2662: PPUSH
2663: LD_INT 1
2665: PPUSH
2666: LD_INT 27
2668: PPUSH
2669: CALL_OW 185
2673: GO 2651
2675: POP
2676: POP
// end ;
2677: PPOPN 1
2679: END
// every 0 0$1 trigger FilterUnitsInArea ( AlhambraPerimeter , [ [ f_side , 8 ] , [ f_see , 2 ] ] ) do var i ;
2680: LD_INT 12
2682: PPUSH
2683: LD_INT 22
2685: PUSH
2686: LD_INT 8
2688: PUSH
2689: EMPTY
2690: LIST
2691: LIST
2692: PUSH
2693: LD_INT 101
2695: PUSH
2696: LD_INT 2
2698: PUSH
2699: EMPTY
2700: LIST
2701: LIST
2702: PUSH
2703: EMPTY
2704: LIST
2705: LIST
2706: PPUSH
2707: CALL_OW 70
2711: IFFALSE 2854
2713: GO 2715
2715: DISABLE
2716: LD_INT 0
2718: PPUSH
// begin enable ;
2719: ENABLE
// if not ExistMc ( AlhambraDefenceStrategy ) then
2720: LD_EXP 15
2724: PPUSH
2725: CALL_OW 386
2729: NOT
2730: IFFALSE 2764
// AlhambraDefenceStrategy = McDefend ( 1 , AlhambraEnemies , AlhambraVehicles , [ [ mc_area_dont_leave ] ] ) ;
2732: LD_ADDR_EXP 15
2736: PUSH
2737: LD_INT 1
2739: PPUSH
2740: LD_EXP 14
2744: PPUSH
2745: LD_EXP 13
2749: PPUSH
2750: LD_INT 2
2752: PUSH
2753: EMPTY
2754: LIST
2755: PUSH
2756: EMPTY
2757: LIST
2758: PPUSH
2759: CALL_OW 401
2763: ST_TO_ADDR
// for i in AlhambraVehicles do
2764: LD_ADDR_VAR 0 1
2768: PUSH
2769: LD_EXP 13
2773: PUSH
2774: FOR_IN
2775: IFFALSE 2852
// begin if GetLives ( i ) < 600 then
2777: LD_VAR 0 1
2781: PPUSH
2782: CALL_OW 256
2786: PUSH
2787: LD_INT 600
2789: LESS
2790: IFFALSE 2821
// begin RemoveMcUnits ( AlhambraDefenceStrategy , i ) ;
2792: LD_EXP 15
2796: PPUSH
2797: LD_VAR 0 1
2801: PPUSH
2802: CALL_OW 391
// ComMoveXY ( i , 127 , 84 ) ;
2806: LD_VAR 0 1
2810: PPUSH
2811: LD_INT 127
2813: PPUSH
2814: LD_INT 84
2816: PPUSH
2817: CALL_OW 111
// end ; if GetLives ( i ) = 1000 then
2821: LD_VAR 0 1
2825: PPUSH
2826: CALL_OW 256
2830: PUSH
2831: LD_INT 1000
2833: EQUAL
2834: IFFALSE 2850
// AddMcUnits ( AlhambraDefenceStrategy , i ) ;
2836: LD_EXP 15
2840: PPUSH
2841: LD_VAR 0 1
2845: PPUSH
2846: CALL_OW 390
// end ;
2850: GO 2774
2852: POP
2853: POP
// end ;
2854: PPOPN 1
2856: END
// every 0 0$1 trigger FilterUnitsInArea ( AlhambraPerimeter , [ [ f_side , 8 ] , [ f_see , 2 ] ] ) = 0 do
2857: LD_INT 12
2859: PPUSH
2860: LD_INT 22
2862: PUSH
2863: LD_INT 8
2865: PUSH
2866: EMPTY
2867: LIST
2868: LIST
2869: PUSH
2870: LD_INT 101
2872: PUSH
2873: LD_INT 2
2875: PUSH
2876: EMPTY
2877: LIST
2878: LIST
2879: PUSH
2880: EMPTY
2881: LIST
2882: LIST
2883: PPUSH
2884: CALL_OW 70
2888: PUSH
2889: LD_INT 0
2891: EQUAL
2892: IFFALSE 2906
2894: GO 2896
2896: DISABLE
// KillMc ( AlhambraDefenceStrategy ) ;
2897: LD_EXP 15
2901: PPUSH
2902: CALL_OW 387
2906: END
// on VehicleConstructed ( v , f ) do if GetSide ( v ) = 2 and GetControl ( v ) = control_manual then
2907: LD_VAR 0 1
2911: PPUSH
2912: CALL_OW 255
2916: PUSH
2917: LD_INT 2
2919: EQUAL
2920: PUSH
2921: LD_VAR 0 1
2925: PPUSH
2926: CALL_OW 263
2930: PUSH
2931: LD_INT 1
2933: EQUAL
2934: AND
2935: IFFALSE 2953
// AlhambraVehicles = AlhambraVehicles ^ v ;
2937: LD_ADDR_EXP 13
2941: PUSH
2942: LD_EXP 13
2946: PUSH
2947: LD_VAR 0 1
2951: ADD
2952: ST_TO_ADDR
2953: PPOPN 2
2955: END
// export BigAttack ; every 25 25$0 do var i ; var a , h , v , vl ; var path ;
2956: GO 2958
2958: DISABLE
2959: LD_INT 0
2961: PPUSH
2962: PPUSH
2963: PPUSH
2964: PPUSH
2965: PPUSH
2966: PPUSH
// begin uc_side = 2 ;
2967: LD_ADDR_OWVAR 20
2971: PUSH
2972: LD_INT 2
2974: ST_TO_ADDR
// uc_nation = nation_arabian ;
2975: LD_ADDR_OWVAR 21
2979: PUSH
2980: LD_INT 2
2982: ST_TO_ADDR
// InitHc ;
2983: CALL_OW 19
// for i = 1 to [ 2 , 3 , 3 ] [ difficulty ] do
2987: LD_ADDR_VAR 0 1
2991: PUSH
2992: DOUBLE
2993: LD_INT 1
2995: DEC
2996: ST_TO_ADDR
2997: LD_INT 2
2999: PUSH
3000: LD_INT 3
3002: PUSH
3003: LD_INT 3
3005: PUSH
3006: EMPTY
3007: LIST
3008: LIST
3009: LIST
3010: PUSH
3011: LD_OWVAR 67
3015: ARRAY
3016: PUSH
3017: FOR_TO
3018: IFFALSE 3117
// begin PrepareHuman ( false , class_soldier , [ Rand ( 2 , 5 ) , Rand ( 3 , 6 ) , Rand ( 4 , 6 ) ] [ difficulty ] ) ;
3020: LD_INT 0
3022: PPUSH
3023: LD_INT 1
3025: PPUSH
3026: LD_INT 2
3028: PPUSH
3029: LD_INT 5
3031: PPUSH
3032: CALL_OW 12
3036: PUSH
3037: LD_INT 3
3039: PPUSH
3040: LD_INT 6
3042: PPUSH
3043: CALL_OW 12
3047: PUSH
3048: LD_INT 4
3050: PPUSH
3051: LD_INT 6
3053: PPUSH
3054: CALL_OW 12
3058: PUSH
3059: EMPTY
3060: LIST
3061: LIST
3062: LIST
3063: PUSH
3064: LD_OWVAR 67
3068: ARRAY
3069: PPUSH
3070: CALL_OW 380
// h = CreateHuman ;
3074: LD_ADDR_VAR 0 3
3078: PUSH
3079: CALL_OW 44
3083: ST_TO_ADDR
// PlaceUnitArea ( h , NorthExit , false ) ;
3084: LD_VAR 0 3
3088: PPUSH
3089: LD_INT 10
3091: PPUSH
3092: LD_INT 0
3094: PPUSH
3095: CALL_OW 49
// a = a ^ h ;
3099: LD_ADDR_VAR 0 2
3103: PUSH
3104: LD_VAR 0 2
3108: PUSH
3109: LD_VAR 0 3
3113: ADD
3114: ST_TO_ADDR
// end ;
3115: GO 3017
3117: POP
3118: POP
// for i = 1 to [ 2 , 2 , 3 ] [ difficulty ] do
3119: LD_ADDR_VAR 0 1
3123: PUSH
3124: DOUBLE
3125: LD_INT 1
3127: DEC
3128: ST_TO_ADDR
3129: LD_INT 2
3131: PUSH
3132: LD_INT 2
3134: PUSH
3135: LD_INT 3
3137: PUSH
3138: EMPTY
3139: LIST
3140: LIST
3141: LIST
3142: PUSH
3143: LD_OWVAR 67
3147: ARRAY
3148: PUSH
3149: FOR_TO
3150: IFFALSE 3249
// begin PrepareHuman ( false , class_mortar , [ Rand ( 3 , 5 ) , Rand ( 4 , 5 ) , Rand ( 4 , 6 ) ] [ difficulty ] ) ;
3152: LD_INT 0
3154: PPUSH
3155: LD_INT 8
3157: PPUSH
3158: LD_INT 3
3160: PPUSH
3161: LD_INT 5
3163: PPUSH
3164: CALL_OW 12
3168: PUSH
3169: LD_INT 4
3171: PPUSH
3172: LD_INT 5
3174: PPUSH
3175: CALL_OW 12
3179: PUSH
3180: LD_INT 4
3182: PPUSH
3183: LD_INT 6
3185: PPUSH
3186: CALL_OW 12
3190: PUSH
3191: EMPTY
3192: LIST
3193: LIST
3194: LIST
3195: PUSH
3196: LD_OWVAR 67
3200: ARRAY
3201: PPUSH
3202: CALL_OW 380
// h = CreateHuman ;
3206: LD_ADDR_VAR 0 3
3210: PUSH
3211: CALL_OW 44
3215: ST_TO_ADDR
// PlaceUnitArea ( h , NorthExit , false ) ;
3216: LD_VAR 0 3
3220: PPUSH
3221: LD_INT 10
3223: PPUSH
3224: LD_INT 0
3226: PPUSH
3227: CALL_OW 49
// a = a ^ h ;
3231: LD_ADDR_VAR 0 2
3235: PUSH
3236: LD_VAR 0 2
3240: PUSH
3241: LD_VAR 0 3
3245: ADD
3246: ST_TO_ADDR
// end ;
3247: GO 3149
3249: POP
3250: POP
// vl = [ [ ar_medium_trike , ar_gun ] , [ ar_half_tracked , ar_flame_thrower ] , [ ar_half_tracked , ar_flame_thrower ] , [ ar_half_tracked , ar_gun ] ] ;
3251: LD_ADDR_VAR 0 5
3255: PUSH
3256: LD_INT 13
3258: PUSH
3259: LD_INT 27
3261: PUSH
3262: EMPTY
3263: LIST
3264: LIST
3265: PUSH
3266: LD_INT 14
3268: PUSH
3269: LD_INT 26
3271: PUSH
3272: EMPTY
3273: LIST
3274: LIST
3275: PUSH
3276: LD_INT 14
3278: PUSH
3279: LD_INT 26
3281: PUSH
3282: EMPTY
3283: LIST
3284: LIST
3285: PUSH
3286: LD_INT 14
3288: PUSH
3289: LD_INT 27
3291: PUSH
3292: EMPTY
3293: LIST
3294: LIST
3295: PUSH
3296: EMPTY
3297: LIST
3298: LIST
3299: LIST
3300: LIST
3301: ST_TO_ADDR
// vc_engine = engine_combustion ;
3302: LD_ADDR_OWVAR 39
3306: PUSH
3307: LD_INT 1
3309: ST_TO_ADDR
// vc_control = control_manual ;
3310: LD_ADDR_OWVAR 38
3314: PUSH
3315: LD_INT 1
3317: ST_TO_ADDR
// for i = 1 to [ 2 , 3 , 4 ] [ difficulty ] do
3318: LD_ADDR_VAR 0 1
3322: PUSH
3323: DOUBLE
3324: LD_INT 1
3326: DEC
3327: ST_TO_ADDR
3328: LD_INT 2
3330: PUSH
3331: LD_INT 3
3333: PUSH
3334: LD_INT 4
3336: PUSH
3337: EMPTY
3338: LIST
3339: LIST
3340: LIST
3341: PUSH
3342: LD_OWVAR 67
3346: ARRAY
3347: PUSH
3348: FOR_TO
3349: IFFALSE 3474
// begin vc_chassis = vl [ i ] [ 1 ] ;
3351: LD_ADDR_OWVAR 37
3355: PUSH
3356: LD_VAR 0 5
3360: PUSH
3361: LD_VAR 0 1
3365: ARRAY
3366: PUSH
3367: LD_INT 1
3369: ARRAY
3370: ST_TO_ADDR
// vc_weapon = vl [ i ] [ 2 ] ;
3371: LD_ADDR_OWVAR 40
3375: PUSH
3376: LD_VAR 0 5
3380: PUSH
3381: LD_VAR 0 1
3385: ARRAY
3386: PUSH
3387: LD_INT 2
3389: ARRAY
3390: ST_TO_ADDR
// v = CreateVehicle ;
3391: LD_ADDR_VAR 0 4
3395: PUSH
3396: CALL_OW 45
3400: ST_TO_ADDR
// PlaceUnitArea ( v , NorthExit , false ) ;
3401: LD_VAR 0 4
3405: PPUSH
3406: LD_INT 10
3408: PPUSH
3409: LD_INT 0
3411: PPUSH
3412: CALL_OW 49
// PrepareMechanic ( Rand ( 1 , 2 ) , Rand ( 4 , 5 ) ) ;
3416: LD_INT 1
3418: PPUSH
3419: LD_INT 2
3421: PPUSH
3422: CALL_OW 12
3426: PPUSH
3427: LD_INT 4
3429: PPUSH
3430: LD_INT 5
3432: PPUSH
3433: CALL_OW 12
3437: PPUSH
3438: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , v ) ;
3442: CALL_OW 44
3446: PPUSH
3447: LD_VAR 0 4
3451: PPUSH
3452: CALL_OW 52
// a = a ^ v ;
3456: LD_ADDR_VAR 0 2
3460: PUSH
3461: LD_VAR 0 2
3465: PUSH
3466: LD_VAR 0 4
3470: ADD
3471: ST_TO_ADDR
// end ;
3472: GO 3348
3474: POP
3475: POP
// path = [ [ 67 , 14 ] , [ 55 , 20 ] , [ 36 , 15 ] , [ 32 , 27 ] , [ 47 , 45 ] , [ 98 , 148 ] ] ;
3476: LD_ADDR_VAR 0 6
3480: PUSH
3481: LD_INT 67
3483: PUSH
3484: LD_INT 14
3486: PUSH
3487: EMPTY
3488: LIST
3489: LIST
3490: PUSH
3491: LD_INT 55
3493: PUSH
3494: LD_INT 20
3496: PUSH
3497: EMPTY
3498: LIST
3499: LIST
3500: PUSH
3501: LD_INT 36
3503: PUSH
3504: LD_INT 15
3506: PUSH
3507: EMPTY
3508: LIST
3509: LIST
3510: PUSH
3511: LD_INT 32
3513: PUSH
3514: LD_INT 27
3516: PUSH
3517: EMPTY
3518: LIST
3519: LIST
3520: PUSH
3521: LD_INT 47
3523: PUSH
3524: LD_INT 45
3526: PUSH
3527: EMPTY
3528: LIST
3529: LIST
3530: PUSH
3531: LD_INT 98
3533: PUSH
3534: LD_INT 148
3536: PUSH
3537: EMPTY
3538: LIST
3539: LIST
3540: PUSH
3541: EMPTY
3542: LIST
3543: LIST
3544: LIST
3545: LIST
3546: LIST
3547: LIST
3548: ST_TO_ADDR
// BigAttack = McMove ( 1 , a , path , [ [ mc_move_agressive ] ] ) ;
3549: LD_ADDR_EXP 17
3553: PUSH
3554: LD_INT 1
3556: PPUSH
3557: LD_VAR 0 2
3561: PPUSH
3562: LD_VAR 0 6
3566: PPUSH
3567: LD_INT 6
3569: PUSH
3570: EMPTY
3571: LIST
3572: PUSH
3573: EMPTY
3574: LIST
3575: PPUSH
3576: CALL_OW 398
3580: ST_TO_ADDR
// end ;
3581: PPOPN 6
3583: END
// every 0 0$1 trigger FilterUnitsInArea ( BigExit , [ f_side , 2 ] ) do var i ;
3584: LD_INT 13
3586: PPUSH
3587: LD_INT 22
3589: PUSH
3590: LD_INT 2
3592: PUSH
3593: EMPTY
3594: LIST
3595: LIST
3596: PPUSH
3597: CALL_OW 70
3601: IFFALSE 3649
3603: GO 3605
3605: DISABLE
3606: LD_INT 0
3608: PPUSH
// begin enable ;
3609: ENABLE
// for i in FilterUnitsInArea ( BigExit , [ f_side , 2 ] ) do
3610: LD_ADDR_VAR 0 1
3614: PUSH
3615: LD_INT 13
3617: PPUSH
3618: LD_INT 22
3620: PUSH
3621: LD_INT 2
3623: PUSH
3624: EMPTY
3625: LIST
3626: LIST
3627: PPUSH
3628: CALL_OW 70
3632: PUSH
3633: FOR_IN
3634: IFFALSE 3647
// RemoveUnit ( i ) ;
3636: LD_VAR 0 1
3640: PPUSH
3641: CALL_OW 64
3645: GO 3633
3647: POP
3648: POP
// end ; end_of_file
3649: PPOPN 1
3651: END
// export AlhambraApemen ; every 0 0$1 trigger tick > [ 15 15$0 , 12 12$0 , 10 10$0 ] [ difficulty ] and FilterAllUnits ( [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) do var u , i , j ;
3652: LD_OWVAR 1
3656: PUSH
3657: LD_INT 31500
3659: PUSH
3660: LD_INT 25200
3662: PUSH
3663: LD_INT 21000
3665: PUSH
3666: EMPTY
3667: LIST
3668: LIST
3669: LIST
3670: PUSH
3671: LD_OWVAR 67
3675: ARRAY
3676: GREATER
3677: PUSH
3678: LD_INT 22
3680: PUSH
3681: LD_INT 0
3683: PUSH
3684: EMPTY
3685: LIST
3686: LIST
3687: PUSH
3688: LD_INT 25
3690: PUSH
3691: LD_INT 12
3693: PUSH
3694: EMPTY
3695: LIST
3696: LIST
3697: PUSH
3698: EMPTY
3699: LIST
3700: LIST
3701: PPUSH
3702: CALL_OW 69
3706: AND
3707: IFFALSE 3750
3709: GO 3711
3711: DISABLE
3712: LD_INT 0
3714: PPUSH
3715: PPUSH
3716: PPUSH
// begin enable ;
3717: ENABLE
// if not FilterUnitsInArea ( AlhambraArea , [ f_side , 8 ] ) then
3718: LD_INT 6
3720: PPUSH
3721: LD_INT 22
3723: PUSH
3724: LD_INT 8
3726: PUSH
3727: EMPTY
3728: LIST
3729: LIST
3730: PPUSH
3731: CALL_OW 70
3735: NOT
3736: IFFALSE 3750
// ComExitBuilding ( UnitsInside ( al ) ) ;
3738: LD_INT 150
3740: PPUSH
3741: CALL_OW 313
3745: PPUSH
3746: CALL_OW 122
// end ;
3750: PPOPN 3
3752: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_outside ] ] ) do var u , i , j ;
3753: LD_INT 22
3755: PUSH
3756: LD_INT 2
3758: PUSH
3759: EMPTY
3760: LIST
3761: LIST
3762: PUSH
3763: LD_INT 25
3765: PUSH
3766: LD_INT 4
3768: PUSH
3769: EMPTY
3770: LIST
3771: LIST
3772: PUSH
3773: LD_INT 56
3775: PUSH
3776: EMPTY
3777: LIST
3778: PUSH
3779: EMPTY
3780: LIST
3781: LIST
3782: LIST
3783: PPUSH
3784: CALL_OW 69
3788: IFFALSE 4033
3790: GO 3792
3792: DISABLE
3793: LD_INT 0
3795: PPUSH
3796: PPUSH
3797: PPUSH
// begin enable ;
3798: ENABLE
// u = FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_outside ] ] ) ;
3799: LD_ADDR_VAR 0 1
3803: PUSH
3804: LD_INT 22
3806: PUSH
3807: LD_INT 2
3809: PUSH
3810: EMPTY
3811: LIST
3812: LIST
3813: PUSH
3814: LD_INT 25
3816: PUSH
3817: LD_INT 4
3819: PUSH
3820: EMPTY
3821: LIST
3822: LIST
3823: PUSH
3824: LD_INT 56
3826: PUSH
3827: EMPTY
3828: LIST
3829: PUSH
3830: EMPTY
3831: LIST
3832: LIST
3833: LIST
3834: PPUSH
3835: CALL_OW 69
3839: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) do
3840: LD_ADDR_VAR 0 2
3844: PUSH
3845: LD_INT 22
3847: PUSH
3848: LD_INT 0
3850: PUSH
3851: EMPTY
3852: LIST
3853: LIST
3854: PUSH
3855: LD_INT 25
3857: PUSH
3858: LD_INT 12
3860: PUSH
3861: EMPTY
3862: LIST
3863: LIST
3864: PUSH
3865: EMPTY
3866: LIST
3867: LIST
3868: PPUSH
3869: CALL_OW 69
3873: PUSH
3874: FOR_IN
3875: IFFALSE 3925
// for j in u do
3877: LD_ADDR_VAR 0 3
3881: PUSH
3882: LD_VAR 0 1
3886: PUSH
3887: FOR_IN
3888: IFFALSE 3921
// AddComTameXY ( j , GetX ( i ) , GetY ( i ) ) ;
3890: LD_VAR 0 3
3894: PPUSH
3895: LD_VAR 0 2
3899: PPUSH
3900: CALL_OW 250
3904: PPUSH
3905: LD_VAR 0 2
3909: PPUSH
3910: CALL_OW 251
3914: PPUSH
3915: CALL_OW 191
3919: GO 3887
3921: POP
3922: POP
3923: GO 3874
3925: POP
3926: POP
// if FilterAllUnits ( [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) = 0 then
3927: LD_INT 22
3929: PUSH
3930: LD_INT 0
3932: PUSH
3933: EMPTY
3934: LIST
3935: LIST
3936: PUSH
3937: LD_INT 25
3939: PUSH
3940: LD_INT 12
3942: PUSH
3943: EMPTY
3944: LIST
3945: LIST
3946: PUSH
3947: EMPTY
3948: LIST
3949: LIST
3950: PPUSH
3951: CALL_OW 69
3955: PUSH
3956: LD_INT 0
3958: EQUAL
3959: IFFALSE 3990
// for i in u do
3961: LD_ADDR_VAR 0 2
3965: PUSH
3966: LD_VAR 0 1
3970: PUSH
3971: FOR_IN
3972: IFFALSE 3988
// ComEnterUnit ( i , al ) ;
3974: LD_VAR 0 2
3978: PPUSH
3979: LD_INT 150
3981: PPUSH
3982: CALL_OW 120
3986: GO 3971
3988: POP
3989: POP
// for i in u do
3990: LD_ADDR_VAR 0 2
3994: PUSH
3995: LD_VAR 0 1
3999: PUSH
4000: FOR_IN
4001: IFFALSE 4031
// if See ( 8 , i ) then
4003: LD_INT 8
4005: PPUSH
4006: LD_VAR 0 2
4010: PPUSH
4011: CALL_OW 292
4015: IFFALSE 4029
// ComEnterUnit ( i , al ) ;
4017: LD_VAR 0 2
4021: PPUSH
4022: LD_INT 150
4024: PPUSH
4025: CALL_OW 120
4029: GO 4000
4031: POP
4032: POP
// end ;
4033: PPOPN 3
4035: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman ] ] ) do var i ;
4036: LD_INT 22
4038: PUSH
4039: LD_INT 2
4041: PUSH
4042: EMPTY
4043: LIST
4044: LIST
4045: PUSH
4046: LD_INT 25
4048: PUSH
4049: LD_INT 12
4051: PUSH
4052: EMPTY
4053: LIST
4054: LIST
4055: PUSH
4056: EMPTY
4057: LIST
4058: LIST
4059: PPUSH
4060: CALL_OW 69
4064: IFFALSE 4326
4066: GO 4068
4068: DISABLE
4069: LD_INT 0
4071: PPUSH
// begin enable ;
4072: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman ] ] ) do
4073: LD_ADDR_VAR 0 1
4077: PUSH
4078: LD_INT 22
4080: PUSH
4081: LD_INT 2
4083: PUSH
4084: EMPTY
4085: LIST
4086: LIST
4087: PUSH
4088: LD_INT 25
4090: PUSH
4091: LD_INT 12
4093: PUSH
4094: EMPTY
4095: LIST
4096: LIST
4097: PUSH
4098: EMPTY
4099: LIST
4100: LIST
4101: PPUSH
4102: CALL_OW 69
4106: PUSH
4107: FOR_IN
4108: IFFALSE 4324
// begin if not IsInUnit ( i ) and not HasTask ( i ) then
4110: LD_VAR 0 1
4114: PPUSH
4115: CALL_OW 310
4119: NOT
4120: PUSH
4121: LD_VAR 0 1
4125: PPUSH
4126: CALL_OW 314
4130: NOT
4131: AND
4132: IFFALSE 4198
// case Rand ( 1 , 3 ) of 1 , 2 :
4134: LD_INT 1
4136: PPUSH
4137: LD_INT 3
4139: PPUSH
4140: CALL_OW 12
4144: PUSH
4145: LD_INT 1
4147: DOUBLE
4148: EQUAL
4149: IFTRUE 4159
4151: LD_INT 2
4153: DOUBLE
4154: EQUAL
4155: IFTRUE 4159
4157: GO 4174
4159: POP
// ComEnterUnit ( i , af ) ; 3 :
4160: LD_VAR 0 1
4164: PPUSH
4165: LD_INT 3
4167: PPUSH
4168: CALL_OW 120
4172: GO 4198
4174: LD_INT 3
4176: DOUBLE
4177: EQUAL
4178: IFTRUE 4182
4180: GO 4197
4182: POP
// ComEnterUnit ( i , aa ) ; end ;
4183: LD_VAR 0 1
4187: PPUSH
4188: LD_INT 128
4190: PPUSH
4191: CALL_OW 120
4195: GO 4198
4197: POP
// if IsInUnit ( i ) = af and not IsBusy ( af ) then
4198: LD_VAR 0 1
4202: PPUSH
4203: CALL_OW 310
4207: PUSH
4208: LD_INT 3
4210: EQUAL
4211: PUSH
4212: LD_INT 3
4214: PPUSH
4215: CALL_OW 315
4219: NOT
4220: AND
4221: IFFALSE 4295
// case Rand ( 1 , 2 ) of 1 :
4223: LD_INT 1
4225: PPUSH
4226: LD_INT 2
4228: PPUSH
4229: CALL_OW 12
4233: PUSH
4234: LD_INT 1
4236: DOUBLE
4237: EQUAL
4238: IFTRUE 4242
4240: GO 4264
4242: POP
// AddComConstruct ( af , ar_hovercraft , engine_solar , control_apeman , ar_double_machine_gun ) ; 2 :
4243: LD_INT 3
4245: PPUSH
4246: LD_INT 11
4248: PPUSH
4249: LD_INT 2
4251: PPUSH
4252: LD_INT 5
4254: PPUSH
4255: LD_INT 24
4257: PPUSH
4258: CALL_OW 185
4262: GO 4295
4264: LD_INT 2
4266: DOUBLE
4267: EQUAL
4268: IFTRUE 4272
4270: GO 4294
4272: POP
// AddComConstruct ( af , ar_light_trike , engine_solar , control_apeman , ar_light_gun ) ; end ;
4273: LD_INT 3
4275: PPUSH
4276: LD_INT 12
4278: PPUSH
4279: LD_INT 2
4281: PPUSH
4282: LD_INT 5
4284: PPUSH
4285: LD_INT 23
4287: PPUSH
4288: CALL_OW 185
4292: GO 4295
4294: POP
// if IsInUnit ( i ) = aa then
4295: LD_VAR 0 1
4299: PPUSH
4300: CALL_OW 310
4304: PUSH
4305: LD_INT 128
4307: EQUAL
4308: IFFALSE 4322
// ComChangeProfession ( i , class_apeman_kamikaze ) ;
4310: LD_VAR 0 1
4314: PPUSH
4315: LD_INT 17
4317: PPUSH
4318: CALL_OW 123
// end ;
4322: GO 4107
4324: POP
4325: POP
// end ;
4326: PPOPN 1
4328: END
// export function ApeTarget ( u ) ; begin
4329: LD_INT 0
4331: PPUSH
// result = NearestUnitToUnit ( FilterAllUnits ( [ [ f_enemy , GetSide ( u ) ] , [ f_not , [ f_type , unit_building ] ] , [ f_dist , u , 18 ] ] ) , u ) ;
4332: LD_ADDR_VAR 0 2
4336: PUSH
4337: LD_INT 81
4339: PUSH
4340: LD_VAR 0 1
4344: PPUSH
4345: CALL_OW 255
4349: PUSH
4350: EMPTY
4351: LIST
4352: LIST
4353: PUSH
4354: LD_INT 3
4356: PUSH
4357: LD_INT 21
4359: PUSH
4360: LD_INT 3
4362: PUSH
4363: EMPTY
4364: LIST
4365: LIST
4366: PUSH
4367: EMPTY
4368: LIST
4369: LIST
4370: PUSH
4371: LD_INT 91
4373: PUSH
4374: LD_VAR 0 1
4378: PUSH
4379: LD_INT 18
4381: PUSH
4382: EMPTY
4383: LIST
4384: LIST
4385: LIST
4386: PUSH
4387: EMPTY
4388: LIST
4389: LIST
4390: LIST
4391: PPUSH
4392: CALL_OW 69
4396: PPUSH
4397: LD_VAR 0 1
4401: PPUSH
4402: CALL_OW 74
4406: ST_TO_ADDR
// end ;
4407: LD_VAR 0 2
4411: RET
// every 0 0$1 do var i ;
4412: GO 4414
4414: DISABLE
4415: LD_INT 0
4417: PPUSH
// begin enable ;
4418: ENABLE
// AlhambraApemen = FilterAllUnits ( [ [ f_side , 2 ] , [ f_control , control_apeman ] ] ) ^ FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman_kamikaze ] ] ) ;
4419: LD_ADDR_EXP 18
4423: PUSH
4424: LD_INT 22
4426: PUSH
4427: LD_INT 2
4429: PUSH
4430: EMPTY
4431: LIST
4432: LIST
4433: PUSH
4434: LD_INT 33
4436: PUSH
4437: LD_INT 5
4439: PUSH
4440: EMPTY
4441: LIST
4442: LIST
4443: PUSH
4444: EMPTY
4445: LIST
4446: LIST
4447: PPUSH
4448: CALL_OW 69
4452: PUSH
4453: LD_INT 22
4455: PUSH
4456: LD_INT 2
4458: PUSH
4459: EMPTY
4460: LIST
4461: LIST
4462: PUSH
4463: LD_INT 25
4465: PUSH
4466: LD_INT 17
4468: PUSH
4469: EMPTY
4470: LIST
4471: LIST
4472: PUSH
4473: EMPTY
4474: LIST
4475: LIST
4476: PPUSH
4477: CALL_OW 69
4481: ADD
4482: ST_TO_ADDR
// for i in AlhambraApemen do
4483: LD_ADDR_VAR 0 1
4487: PUSH
4488: LD_EXP 18
4492: PUSH
4493: FOR_IN
4494: IFFALSE 4723
// begin if ExistMc ( AlhambraApemenStrategy ) and not GetUnitMc ( i ) = AlhambraApemenStrategy then
4496: LD_EXP 16
4500: PPUSH
4501: CALL_OW 386
4505: PUSH
4506: LD_VAR 0 1
4510: PPUSH
4511: CALL_OW 388
4515: PUSH
4516: LD_EXP 16
4520: EQUAL
4521: NOT
4522: AND
4523: IFFALSE 4541
// AddMcUnits ( AlhambraApemenStrategy , i ) else
4525: LD_EXP 16
4529: PPUSH
4530: LD_VAR 0 1
4534: PPUSH
4535: CALL_OW 390
4539: GO 4570
// AlhambraApemenStrategy = McAttack ( 1 , AlhambraTargets , i , [ mc_murder ] ) ;
4541: LD_ADDR_EXP 16
4545: PUSH
4546: LD_INT 1
4548: PPUSH
4549: LD_EXP 12
4553: PPUSH
4554: LD_VAR 0 1
4558: PPUSH
4559: LD_INT 12
4561: PUSH
4562: EMPTY
4563: LIST
4564: PPUSH
4565: CALL_OW 402
4569: ST_TO_ADDR
// if ApeTarget ( i ) then
4570: LD_VAR 0 1
4574: PPUSH
4575: CALL 4329 0 1
4579: IFFALSE 4636
// if GetType ( i ) = unit_human then
4581: LD_VAR 0 1
4585: PPUSH
4586: CALL_OW 247
4590: PUSH
4591: LD_INT 1
4593: EQUAL
4594: IFFALSE 4617
// ComAttackUnit ( i , ApeTarget ( i ) ) else
4596: LD_VAR 0 1
4600: PPUSH
4601: LD_VAR 0 1
4605: PPUSH
4606: CALL 4329 0 1
4610: PPUSH
4611: CALL_OW 115
4615: GO 4636
// ComMoveUnit ( i , ApeTarget ( i ) ) ;
4617: LD_VAR 0 1
4621: PPUSH
4622: LD_VAR 0 1
4626: PPUSH
4627: CALL 4329 0 1
4631: PPUSH
4632: CALL_OW 112
// if FilterAllUnits ( [ [ f_enemy , GetSide ( i ) ] , [ f_not , [ f_type , unit_building ] ] , [ f_dist , i , 5 ] ] ) and GetType ( i ) = unit_vehicle then
4636: LD_INT 81
4638: PUSH
4639: LD_VAR 0 1
4643: PPUSH
4644: CALL_OW 255
4648: PUSH
4649: EMPTY
4650: LIST
4651: LIST
4652: PUSH
4653: LD_INT 3
4655: PUSH
4656: LD_INT 21
4658: PUSH
4659: LD_INT 3
4661: PUSH
4662: EMPTY
4663: LIST
4664: LIST
4665: PUSH
4666: EMPTY
4667: LIST
4668: LIST
4669: PUSH
4670: LD_INT 91
4672: PUSH
4673: LD_VAR 0 1
4677: PUSH
4678: LD_INT 5
4680: PUSH
4681: EMPTY
4682: LIST
4683: LIST
4684: LIST
4685: PUSH
4686: EMPTY
4687: LIST
4688: LIST
4689: LIST
4690: PPUSH
4691: CALL_OW 69
4695: PUSH
4696: LD_VAR 0 1
4700: PPUSH
4701: CALL_OW 247
4705: PUSH
4706: LD_INT 2
4708: EQUAL
4709: AND
4710: IFFALSE 4721
// ComSelfDestruction ( i ) ;
4712: LD_VAR 0 1
4716: PPUSH
4717: CALL_OW 577
// end ;
4721: GO 4493
4723: POP
4724: POP
// end ; end_of_file
4725: PPOPN 1
4727: END
// export SniperDone , VehiclesDone ; every 0 0$1 trigger IsInUnit ( Antoine ) or not IsInArea ( Antoine , AlhambraArea ) or GetAttitude ( 2 , 8 ) = att_enemy do var u ;
4728: LD_EXP 1
4732: PPUSH
4733: CALL_OW 310
4737: PUSH
4738: LD_EXP 1
4742: PPUSH
4743: LD_INT 6
4745: PPUSH
4746: CALL_OW 308
4750: NOT
4751: OR
4752: PUSH
4753: LD_INT 2
4755: PPUSH
4756: LD_INT 8
4758: PPUSH
4759: CALL_OW 81
4763: PUSH
4764: LD_INT 2
4766: EQUAL
4767: OR
4768: IFFALSE 4854
4770: GO 4772
4772: DISABLE
4773: LD_INT 0
4775: PPUSH
// begin DialogueOn ;
4776: CALL_OW 6
// u = WhoDiscovered ( 2 , Antoine ) ;
4780: LD_ADDR_VAR 0 1
4784: PUSH
4785: LD_INT 2
4787: PPUSH
4788: LD_EXP 1
4792: PPUSH
4793: CALL 9015 0 2
4797: ST_TO_ADDR
// Say ( u , di-s-1 ) ;
4798: LD_VAR 0 1
4802: PPUSH
4803: LD_STRING di-s-1
4805: PPUSH
4806: CALL_OW 88
// SayRadio ( Mahmoud , di-m-1 ) ;
4810: LD_EXP 3
4814: PPUSH
4815: LD_STRING di-m-1
4817: PPUSH
4818: CALL_OW 94
// Say ( Antoine , di-a-2 ) ;
4822: LD_EXP 1
4826: PPUSH
4827: LD_STRING di-a-2
4829: PPUSH
4830: CALL_OW 88
// DialogueOff ;
4834: CALL_OW 7
// SetAttitude ( 2 , 5 , att_enemy , true ) ;
4838: LD_INT 2
4840: PPUSH
4841: LD_INT 5
4843: PPUSH
4844: LD_INT 2
4846: PPUSH
4847: LD_INT 1
4849: PPUSH
4850: CALL_OW 80
// end ;
4854: PPOPN 1
4856: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 5 ] , [ f_see , 8 ] ] ) do
4857: LD_INT 22
4859: PUSH
4860: LD_INT 5
4862: PUSH
4863: EMPTY
4864: LIST
4865: LIST
4866: PUSH
4867: LD_INT 101
4869: PUSH
4870: LD_INT 8
4872: PUSH
4873: EMPTY
4874: LIST
4875: LIST
4876: PUSH
4877: EMPTY
4878: LIST
4879: LIST
4880: PPUSH
4881: CALL_OW 69
4885: IFFALSE 5134
4887: GO 4889
4889: DISABLE
// begin InGameOn ;
4890: CALL_OW 8
// CenterOnXY ( 30 , 26 ) ;
4894: LD_INT 30
4896: PPUSH
4897: LD_INT 26
4899: PPUSH
4900: CALL_OW 84
// Say ( Oates , dm-o-1 ) ;
4904: LD_EXP 2
4908: PPUSH
4909: LD_STRING dm-o-1
4911: PPUSH
4912: CALL_OW 88
// ComMoveXY ( Antoine , 30 , 26 ) ;
4916: LD_EXP 1
4920: PPUSH
4921: LD_INT 30
4923: PPUSH
4924: LD_INT 26
4926: PPUSH
4927: CALL_OW 111
// SetSide ( FilterAllUnits ( [ f_side , 5 ] ) , 8 ) ;
4931: LD_INT 22
4933: PUSH
4934: LD_INT 5
4936: PUSH
4937: EMPTY
4938: LIST
4939: LIST
4940: PPUSH
4941: CALL_OW 69
4945: PPUSH
4946: LD_INT 8
4948: PPUSH
4949: CALL_OW 235
// Wait ( 0 0$2 ) ;
4953: LD_INT 70
4955: PPUSH
4956: CALL_OW 67
// DialogueOn ;
4960: CALL_OW 6
// Say ( Antoine , dm-a-1 ) ;
4964: LD_EXP 1
4968: PPUSH
4969: LD_STRING dm-a-1
4971: PPUSH
4972: CALL_OW 88
// if Ende then
4976: LD_EXP 4
4980: IFFALSE 4994
// Say ( Ende , dm-e-1 ) ;
4982: LD_EXP 4
4986: PPUSH
4987: LD_STRING dm-e-1
4989: PPUSH
4990: CALL_OW 88
// if TestVariable ( EddingsKilled ) = false then
4994: LD_STRING EddingsKilled
4996: PPUSH
4997: CALL_OW 27
5001: PUSH
5002: LD_INT 0
5004: EQUAL
5005: IFFALSE 5073
// begin Say ( Oates , dm-o-2 ) ;
5007: LD_EXP 2
5011: PPUSH
5012: LD_STRING dm-o-2
5014: PPUSH
5015: CALL_OW 88
// SetTech ( tech_RemCont , 8 , state_enabled ) ;
5019: LD_INT 15
5021: PPUSH
5022: LD_INT 8
5024: PPUSH
5025: LD_INT 1
5027: PPUSH
5028: CALL_OW 322
// SetTech ( tech_RemCharge , 8 , state_enabled ) ;
5032: LD_INT 18
5034: PPUSH
5035: LD_INT 8
5037: PPUSH
5038: LD_INT 1
5040: PPUSH
5041: CALL_OW 322
// SetTech ( tech_HidCam , 8 , state_enabled ) ;
5045: LD_INT 17
5047: PPUSH
5048: LD_INT 8
5050: PPUSH
5051: LD_INT 1
5053: PPUSH
5054: CALL_OW 322
// SetRestrict ( b_control_tower , 8 , true ) ;
5058: LD_INT 36
5060: PPUSH
5061: LD_INT 8
5063: PPUSH
5064: LD_INT 1
5066: PPUSH
5067: CALL_OW 324
// end else
5071: GO 5085
// Say ( Oates , dm-o-2a ) ;
5073: LD_EXP 2
5077: PPUSH
5078: LD_STRING dm-o-2a
5080: PPUSH
5081: CALL_OW 88
// Say ( Antoine , dm-a-2 ) ;
5085: LD_EXP 1
5089: PPUSH
5090: LD_STRING dm-a-2
5092: PPUSH
5093: CALL_OW 88
// DialogueOff ;
5097: CALL_OW 7
// InGameOff ;
5101: CALL_OW 9
// if TestVariable ( EddingsKilled ) = false then
5105: LD_STRING EddingsKilled
5107: PPUSH
5108: CALL_OW 27
5112: PUSH
5113: LD_INT 0
5115: EQUAL
5116: IFFALSE 5127
// ChangeMissionObjectives ( OTech ) else
5118: LD_STRING OTech
5120: PPUSH
5121: CALL_OW 337
5125: GO 5134
// ChangeMissionObjectives ( OTechA ) ;
5127: LD_STRING OTechA
5129: PPUSH
5130: CALL_OW 337
// end ;
5134: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_class , class_sniper ] ] ) do
5135: LD_INT 22
5137: PUSH
5138: LD_INT 8
5140: PUSH
5141: EMPTY
5142: LIST
5143: LIST
5144: PUSH
5145: LD_INT 25
5147: PUSH
5148: LD_INT 5
5150: PUSH
5151: EMPTY
5152: LIST
5153: LIST
5154: PUSH
5155: EMPTY
5156: LIST
5157: LIST
5158: PPUSH
5159: CALL_OW 69
5163: IFFALSE 5183
5165: GO 5167
5167: DISABLE
// begin SniperDone = true ;
5168: LD_ADDR_EXP 19
5172: PUSH
5173: LD_INT 1
5175: ST_TO_ADDR
// ChangeMissionObjectives ( OSniperOut ) ;
5176: LD_STRING OSniperOut
5178: PPUSH
5179: CALL_OW 337
// end ;
5183: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , control_remote ] ] ) do
5184: LD_INT 22
5186: PUSH
5187: LD_INT 8
5189: PUSH
5190: EMPTY
5191: LIST
5192: LIST
5193: PUSH
5194: LD_INT 33
5196: PUSH
5197: LD_INT 2
5199: PUSH
5200: EMPTY
5201: LIST
5202: LIST
5203: PUSH
5204: EMPTY
5205: LIST
5206: LIST
5207: PPUSH
5208: CALL_OW 69
5212: IFFALSE 5224
5214: GO 5216
5216: DISABLE
// ChangeMissionObjectives ( ORemoteOut ) ;
5217: LD_STRING ORemoteOut
5219: PPUSH
5220: CALL_OW 337
5224: END
// every 0 0$1 trigger Researched ( 8 , tech_RemCont ) and IsOK ( Tarpan ) do
5225: LD_INT 8
5227: PPUSH
5228: LD_INT 15
5230: PPUSH
5231: CALL_OW 325
5235: PUSH
5236: LD_EXP 5
5240: PPUSH
5241: CALL_OW 302
5245: AND
5246: IFFALSE 5283
5248: GO 5250
5250: DISABLE
// begin DialogueOn ;
5251: CALL_OW 6
// Say ( Tarpan , dr-t-1 ) ;
5255: LD_EXP 5
5259: PPUSH
5260: LD_STRING dr-t-1
5262: PPUSH
5263: CALL_OW 88
// Say ( Antoine , dr-a-1 ) ;
5267: LD_EXP 1
5271: PPUSH
5272: LD_STRING dr-a-1
5274: PPUSH
5275: CALL_OW 88
// DialogueOff ;
5279: CALL_OW 7
// end ;
5283: END
// every 0 0$1 trigger Researched ( 8 , tech_PartInvis ) do var u ;
5284: LD_INT 8
5286: PPUSH
5287: LD_INT 16
5289: PPUSH
5290: CALL_OW 325
5294: IFFALSE 5602
5296: GO 5298
5298: DISABLE
5299: LD_INT 0
5301: PPUSH
// begin u = FilterAllUnits ( [ [ f_side , 8 ] , [ f_class , class_scientistic ] ] ) diff [ Antoine ] ;
5302: LD_ADDR_VAR 0 1
5306: PUSH
5307: LD_INT 22
5309: PUSH
5310: LD_INT 8
5312: PUSH
5313: EMPTY
5314: LIST
5315: LIST
5316: PUSH
5317: LD_INT 25
5319: PUSH
5320: LD_INT 4
5322: PUSH
5323: EMPTY
5324: LIST
5325: LIST
5326: PUSH
5327: EMPTY
5328: LIST
5329: LIST
5330: PPUSH
5331: CALL_OW 69
5335: PUSH
5336: LD_EXP 1
5340: PUSH
5341: EMPTY
5342: LIST
5343: DIFF
5344: ST_TO_ADDR
// if not u then
5345: LD_VAR 0 1
5349: NOT
5350: IFFALSE 5425
// u = FilterAllUnits ( [ [ f_side , 8 ] , [ f_not , [ f_nation , nation_nature ] ] , [ f_type , unit_human ] ] ) diff [ Antoine , Oates , Ende ] ;
5352: LD_ADDR_VAR 0 1
5356: PUSH
5357: LD_INT 22
5359: PUSH
5360: LD_INT 8
5362: PUSH
5363: EMPTY
5364: LIST
5365: LIST
5366: PUSH
5367: LD_INT 3
5369: PUSH
5370: LD_INT 23
5372: PUSH
5373: LD_INT 0
5375: PUSH
5376: EMPTY
5377: LIST
5378: LIST
5379: PUSH
5380: EMPTY
5381: LIST
5382: LIST
5383: PUSH
5384: LD_INT 21
5386: PUSH
5387: LD_INT 1
5389: PUSH
5390: EMPTY
5391: LIST
5392: LIST
5393: PUSH
5394: EMPTY
5395: LIST
5396: LIST
5397: LIST
5398: PPUSH
5399: CALL_OW 69
5403: PUSH
5404: LD_EXP 1
5408: PUSH
5409: LD_EXP 2
5413: PUSH
5414: LD_EXP 4
5418: PUSH
5419: EMPTY
5420: LIST
5421: LIST
5422: LIST
5423: DIFF
5424: ST_TO_ADDR
// DialogueOn ;
5425: CALL_OW 6
// Say ( u [ 1 ] , ds-n-1 ) ;
5429: LD_VAR 0 1
5433: PUSH
5434: LD_INT 1
5436: ARRAY
5437: PPUSH
5438: LD_STRING ds-n-1
5440: PPUSH
5441: CALL_OW 88
// Say ( Antoine , ds-a-1 ) ;
5445: LD_EXP 1
5449: PPUSH
5450: LD_STRING ds-a-1
5452: PPUSH
5453: CALL_OW 88
// Say ( u [ 1 ] , ds-n-2 ) ;
5457: LD_VAR 0 1
5461: PUSH
5462: LD_INT 1
5464: ARRAY
5465: PPUSH
5466: LD_STRING ds-n-2
5468: PPUSH
5469: CALL_OW 88
// Say ( Antoine , ds-a-2 ) ;
5473: LD_EXP 1
5477: PPUSH
5478: LD_STRING ds-a-2
5480: PPUSH
5481: CALL_OW 88
// if IsOK ( Oates ) then
5485: LD_EXP 2
5489: PPUSH
5490: CALL_OW 302
5494: IFFALSE 5510
// Say ( Oates , ds-o-1 ) else
5496: LD_EXP 2
5500: PPUSH
5501: LD_STRING ds-o-1
5503: PPUSH
5504: CALL_OW 88
5508: GO 5526
// Say ( u [ 1 ] , ds-o-1 ) ;
5510: LD_VAR 0 1
5514: PUSH
5515: LD_INT 1
5517: ARRAY
5518: PPUSH
5519: LD_STRING ds-o-1
5521: PPUSH
5522: CALL_OW 88
// Say ( Antoine , ds-a-3 ) ;
5526: LD_EXP 1
5530: PPUSH
5531: LD_STRING ds-a-3
5533: PPUSH
5534: CALL_OW 88
// Say ( Antoine , ds-a-4 ) ;
5538: LD_EXP 1
5542: PPUSH
5543: LD_STRING ds-a-4
5545: PPUSH
5546: CALL_OW 88
// if IsOK ( Oates ) then
5550: LD_EXP 2
5554: PPUSH
5555: CALL_OW 302
5559: IFFALSE 5575
// Say ( Oates , ds-o-2 ) else
5561: LD_EXP 2
5565: PPUSH
5566: LD_STRING ds-o-2
5568: PPUSH
5569: CALL_OW 88
5573: GO 5591
// Say ( u [ 1 ] , ds-o-2 ) ;
5575: LD_VAR 0 1
5579: PUSH
5580: LD_INT 1
5582: ARRAY
5583: PPUSH
5584: LD_STRING ds-o-2
5586: PPUSH
5587: CALL_OW 88
// DialogueOff ;
5591: CALL_OW 7
// ChangeMissionObjectives ( OSabotage ) ;
5595: LD_STRING OSabotage
5597: PPUSH
5598: CALL_OW 337
// end ;
5602: PPOPN 1
5604: END
// every 0 0$1 trigger GetClass ( Ende ) = class_sniper do
5605: LD_EXP 4
5609: PPUSH
5610: CALL_OW 257
5614: PUSH
5615: LD_INT 5
5617: EQUAL
5618: IFFALSE 5635
5620: GO 5622
5622: DISABLE
// Say ( Ende , dl-e-1 ) ;
5623: LD_EXP 4
5627: PPUSH
5628: LD_STRING dl-e-1
5630: PPUSH
5631: CALL_OW 88
5635: END
// every 0 0$1 trigger IsInvisible ( Ende ) do
5636: LD_EXP 4
5640: PPUSH
5641: CALL_OW 571
5645: IFFALSE 5731
5647: GO 5649
5649: DISABLE
// begin DialogueOn ;
5650: CALL_OW 6
// Say ( Ende , dv-e-1 ) ;
5654: LD_EXP 4
5658: PPUSH
5659: LD_STRING dv-e-1
5661: PPUSH
5662: CALL_OW 88
// if IsOK ( Oates ) then
5666: LD_EXP 2
5670: PPUSH
5671: CALL_OW 302
5675: IFFALSE 5703
// begin Say ( Antoine , dv-a-1 ) ;
5677: LD_EXP 1
5681: PPUSH
5682: LD_STRING dv-a-1
5684: PPUSH
5685: CALL_OW 88
// Say ( Oates , dv-o-1 ) ;
5689: LD_EXP 2
5693: PPUSH
5694: LD_STRING dv-o-1
5696: PPUSH
5697: CALL_OW 88
// end else
5701: GO 5727
// begin Say ( Antoine , dv-a-1a ) ;
5703: LD_EXP 1
5707: PPUSH
5708: LD_STRING dv-a-1a
5710: PPUSH
5711: CALL_OW 88
// Say ( Ende , dv-a-2 ) ;
5715: LD_EXP 4
5719: PPUSH
5720: LD_STRING dv-a-2
5722: PPUSH
5723: CALL_OW 88
// end ; DialogueOff ;
5727: CALL_OW 7
// end ;
5731: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_control , control_apeman ] , [ f_see , 8 ] ] ) do var a , u ;
5732: LD_INT 22
5734: PUSH
5735: LD_INT 2
5737: PUSH
5738: EMPTY
5739: LIST
5740: LIST
5741: PUSH
5742: LD_INT 33
5744: PUSH
5745: LD_INT 5
5747: PUSH
5748: EMPTY
5749: LIST
5750: LIST
5751: PUSH
5752: LD_INT 101
5754: PUSH
5755: LD_INT 8
5757: PUSH
5758: EMPTY
5759: LIST
5760: LIST
5761: PUSH
5762: EMPTY
5763: LIST
5764: LIST
5765: LIST
5766: PPUSH
5767: CALL_OW 69
5771: IFFALSE 5978
5773: GO 5775
5775: DISABLE
5776: LD_INT 0
5778: PPUSH
5779: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 2 ] , [ f_control , control_apeman ] , [ f_see , 8 ] ] ) ;
5780: LD_ADDR_VAR 0 1
5784: PUSH
5785: LD_INT 22
5787: PUSH
5788: LD_INT 2
5790: PUSH
5791: EMPTY
5792: LIST
5793: LIST
5794: PUSH
5795: LD_INT 33
5797: PUSH
5798: LD_INT 5
5800: PUSH
5801: EMPTY
5802: LIST
5803: LIST
5804: PUSH
5805: LD_INT 101
5807: PUSH
5808: LD_INT 8
5810: PUSH
5811: EMPTY
5812: LIST
5813: LIST
5814: PUSH
5815: EMPTY
5816: LIST
5817: LIST
5818: LIST
5819: PPUSH
5820: CALL_OW 69
5824: ST_TO_ADDR
// CenterOnUnits ( a ) ;
5825: LD_VAR 0 1
5829: PPUSH
5830: CALL_OW 85
// u = WhoDiscovered ( 8 , a ) ;
5834: LD_ADDR_VAR 0 2
5838: PUSH
5839: LD_INT 8
5841: PPUSH
5842: LD_VAR 0 1
5846: PPUSH
5847: CALL 9015 0 2
5851: ST_TO_ADDR
// if u = Antoine then
5852: LD_VAR 0 2
5856: PUSH
5857: LD_EXP 1
5861: EQUAL
5862: IFFALSE 5946
// begin u = FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_human ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) diff [ Antoine ] ;
5864: LD_ADDR_VAR 0 2
5868: PUSH
5869: LD_INT 22
5871: PUSH
5872: LD_INT 8
5874: PUSH
5875: EMPTY
5876: LIST
5877: LIST
5878: PUSH
5879: LD_INT 21
5881: PUSH
5882: LD_INT 1
5884: PUSH
5885: EMPTY
5886: LIST
5887: LIST
5888: PUSH
5889: LD_INT 50
5891: PUSH
5892: EMPTY
5893: LIST
5894: PUSH
5895: LD_INT 3
5897: PUSH
5898: LD_INT 23
5900: PUSH
5901: LD_INT 0
5903: PUSH
5904: EMPTY
5905: LIST
5906: LIST
5907: PUSH
5908: EMPTY
5909: LIST
5910: LIST
5911: PUSH
5912: EMPTY
5913: LIST
5914: LIST
5915: LIST
5916: LIST
5917: PPUSH
5918: CALL_OW 69
5922: PUSH
5923: LD_EXP 1
5927: PUSH
5928: EMPTY
5929: LIST
5930: DIFF
5931: ST_TO_ADDR
// u = u [ 1 ] ;
5932: LD_ADDR_VAR 0 2
5936: PUSH
5937: LD_VAR 0 2
5941: PUSH
5942: LD_INT 1
5944: ARRAY
5945: ST_TO_ADDR
// end ; DialogueOn ;
5946: CALL_OW 6
// Say ( u , da-s-1 ) ;
5950: LD_VAR 0 2
5954: PPUSH
5955: LD_STRING da-s-1
5957: PPUSH
5958: CALL_OW 88
// Say ( Antoine , da-a-1 ) ;
5962: LD_EXP 1
5966: PPUSH
5967: LD_STRING da-a-1
5969: PPUSH
5970: CALL_OW 88
// DialogueOff ;
5974: CALL_OW 7
// end ;
5978: PPOPN 2
5980: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman_kamikaze ] , [ f_see , 8 ] ] ) do var a , u ;
5981: LD_INT 22
5983: PUSH
5984: LD_INT 2
5986: PUSH
5987: EMPTY
5988: LIST
5989: LIST
5990: PUSH
5991: LD_INT 25
5993: PUSH
5994: LD_INT 17
5996: PUSH
5997: EMPTY
5998: LIST
5999: LIST
6000: PUSH
6001: LD_INT 101
6003: PUSH
6004: LD_INT 8
6006: PUSH
6007: EMPTY
6008: LIST
6009: LIST
6010: PUSH
6011: EMPTY
6012: LIST
6013: LIST
6014: LIST
6015: PPUSH
6016: CALL_OW 69
6020: IFFALSE 6250
6022: GO 6024
6024: DISABLE
6025: LD_INT 0
6027: PPUSH
6028: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman_kamikaze ] , [ f_see , 8 ] ] ) ;
6029: LD_ADDR_VAR 0 1
6033: PUSH
6034: LD_INT 22
6036: PUSH
6037: LD_INT 2
6039: PUSH
6040: EMPTY
6041: LIST
6042: LIST
6043: PUSH
6044: LD_INT 25
6046: PUSH
6047: LD_INT 17
6049: PUSH
6050: EMPTY
6051: LIST
6052: LIST
6053: PUSH
6054: LD_INT 101
6056: PUSH
6057: LD_INT 8
6059: PUSH
6060: EMPTY
6061: LIST
6062: LIST
6063: PUSH
6064: EMPTY
6065: LIST
6066: LIST
6067: LIST
6068: PPUSH
6069: CALL_OW 69
6073: ST_TO_ADDR
// CenterOnUnits ( a ) ;
6074: LD_VAR 0 1
6078: PPUSH
6079: CALL_OW 85
// u = WhoDiscovered ( 8 , a ) ;
6083: LD_ADDR_VAR 0 2
6087: PUSH
6088: LD_INT 8
6090: PPUSH
6091: LD_VAR 0 1
6095: PPUSH
6096: CALL 9015 0 2
6100: ST_TO_ADDR
// if u = Antoine then
6101: LD_VAR 0 2
6105: PUSH
6106: LD_EXP 1
6110: EQUAL
6111: IFFALSE 6195
// begin u = FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_human ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) diff [ Antoine ] ;
6113: LD_ADDR_VAR 0 2
6117: PUSH
6118: LD_INT 22
6120: PUSH
6121: LD_INT 8
6123: PUSH
6124: EMPTY
6125: LIST
6126: LIST
6127: PUSH
6128: LD_INT 21
6130: PUSH
6131: LD_INT 1
6133: PUSH
6134: EMPTY
6135: LIST
6136: LIST
6137: PUSH
6138: LD_INT 50
6140: PUSH
6141: EMPTY
6142: LIST
6143: PUSH
6144: LD_INT 3
6146: PUSH
6147: LD_INT 23
6149: PUSH
6150: LD_INT 0
6152: PUSH
6153: EMPTY
6154: LIST
6155: LIST
6156: PUSH
6157: EMPTY
6158: LIST
6159: LIST
6160: PUSH
6161: EMPTY
6162: LIST
6163: LIST
6164: LIST
6165: LIST
6166: PPUSH
6167: CALL_OW 69
6171: PUSH
6172: LD_EXP 1
6176: PUSH
6177: EMPTY
6178: LIST
6179: DIFF
6180: ST_TO_ADDR
// u = u [ 1 ] ;
6181: LD_ADDR_VAR 0 2
6185: PUSH
6186: LD_VAR 0 2
6190: PUSH
6191: LD_INT 1
6193: ARRAY
6194: ST_TO_ADDR
// end ; DialogueOn ;
6195: CALL_OW 6
// Say ( u , dk-s-1 ) ;
6199: LD_VAR 0 2
6203: PPUSH
6204: LD_STRING dk-s-1
6206: PPUSH
6207: CALL_OW 88
// if IsOK ( Tarpan ) then
6211: LD_EXP 5
6215: PPUSH
6216: CALL_OW 302
6220: IFFALSE 6234
// Say ( Tarpan , dk-t-1 ) ;
6222: LD_EXP 5
6226: PPUSH
6227: LD_STRING dk-t-1
6229: PPUSH
6230: CALL_OW 88
// Say ( Antoine , dk-a-1 ) ;
6234: LD_EXP 1
6238: PPUSH
6239: LD_STRING dk-a-1
6241: PPUSH
6242: CALL_OW 88
// DialogueOff ;
6246: CALL_OW 7
// end ;
6250: PPOPN 2
6252: END
// export VehicleCount , PeopleCount ; every 0 0$1 do var i ;
6253: GO 6255
6255: DISABLE
6256: LD_INT 0
6258: PPUSH
// begin enable ;
6259: ENABLE
// VehicleCount = 0 ;
6260: LD_ADDR_EXP 21
6264: PUSH
6265: LD_INT 0
6267: ST_TO_ADDR
// PeopleCount = 0 ;
6268: LD_ADDR_EXP 22
6272: PUSH
6273: LD_INT 0
6275: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 8 ] , [ f_engine , engine_siberite ] , [ f_control , control_manual ] ] ) do
6276: LD_ADDR_VAR 0 1
6280: PUSH
6281: LD_INT 22
6283: PUSH
6284: LD_INT 8
6286: PUSH
6287: EMPTY
6288: LIST
6289: LIST
6290: PUSH
6291: LD_INT 32
6293: PUSH
6294: LD_INT 3
6296: PUSH
6297: EMPTY
6298: LIST
6299: LIST
6300: PUSH
6301: LD_INT 33
6303: PUSH
6304: LD_INT 1
6306: PUSH
6307: EMPTY
6308: LIST
6309: LIST
6310: PUSH
6311: EMPTY
6312: LIST
6313: LIST
6314: LIST
6315: PPUSH
6316: CALL_OW 69
6320: PUSH
6321: FOR_IN
6322: IFFALSE 6340
// VehicleCount = VehicleCount + 1 ;
6324: LD_ADDR_EXP 21
6328: PUSH
6329: LD_EXP 21
6333: PUSH
6334: LD_INT 1
6336: PLUS
6337: ST_TO_ADDR
6338: GO 6321
6340: POP
6341: POP
// for i in FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) do
6342: LD_ADDR_VAR 0 1
6346: PUSH
6347: LD_INT 22
6349: PUSH
6350: LD_INT 8
6352: PUSH
6353: EMPTY
6354: LIST
6355: LIST
6356: PUSH
6357: LD_INT 21
6359: PUSH
6360: LD_INT 1
6362: PUSH
6363: EMPTY
6364: LIST
6365: LIST
6366: PUSH
6367: LD_INT 3
6369: PUSH
6370: LD_INT 23
6372: PUSH
6373: LD_INT 0
6375: PUSH
6376: EMPTY
6377: LIST
6378: LIST
6379: PUSH
6380: EMPTY
6381: LIST
6382: LIST
6383: PUSH
6384: EMPTY
6385: LIST
6386: LIST
6387: LIST
6388: PPUSH
6389: CALL_OW 69
6393: PUSH
6394: FOR_IN
6395: IFFALSE 6413
// PeopleCount = PeopleCount + 1 ;
6397: LD_ADDR_EXP 22
6401: PUSH
6402: LD_EXP 22
6406: PUSH
6407: LD_INT 1
6409: PLUS
6410: ST_TO_ADDR
6411: GO 6394
6413: POP
6414: POP
// if VehicleCount >= PeopleCount then
6415: LD_EXP 21
6419: PUSH
6420: LD_EXP 22
6424: GREATEREQUAL
6425: IFFALSE 6435
// VehiclesDone = true ;
6427: LD_ADDR_EXP 20
6431: PUSH
6432: LD_INT 1
6434: ST_TO_ADDR
// end ;
6435: PPOPN 1
6437: END
// every 0 0$1 trigger VehiclesDone do
6438: LD_EXP 20
6442: IFFALSE 6480
6444: GO 6446
6446: DISABLE
// if not SabotageDone then
6447: LD_EXP 23
6451: NOT
6452: IFFALSE 6463
// ChangeMissionObjectives ( OVehOut ) else
6454: LD_STRING OVehOut
6456: PPUSH
6457: CALL_OW 337
6461: GO 6480
// begin ChangeMissionObjectives ( ONorth ) ;
6463: LD_STRING ONorth
6465: PPUSH
6466: CALL_OW 337
// SetAreaMapShow ( NorthExit , 1 ) ;
6470: LD_INT 10
6472: PPUSH
6473: LD_INT 1
6475: PPUSH
6476: CALL_OW 424
// end ; end_of_file
6480: END
// export SabotageDone , ExitOpen ; var SpecialCharacters , SpecialSaved , OtherSaved , VehiclesSaved ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_engine , engine_siberite ] ] ) = 0 and IsDead ( af ) do var u ;
6481: LD_INT 22
6483: PUSH
6484: LD_INT 2
6486: PUSH
6487: EMPTY
6488: LIST
6489: LIST
6490: PUSH
6491: LD_INT 32
6493: PUSH
6494: LD_INT 3
6496: PUSH
6497: EMPTY
6498: LIST
6499: LIST
6500: PUSH
6501: EMPTY
6502: LIST
6503: LIST
6504: PPUSH
6505: CALL_OW 69
6509: PUSH
6510: LD_INT 0
6512: EQUAL
6513: PUSH
6514: LD_INT 3
6516: PPUSH
6517: CALL_OW 301
6521: AND
6522: IFFALSE 6748
6524: GO 6526
6526: DISABLE
6527: LD_INT 0
6529: PPUSH
// begin DialogueOn ;
6530: CALL_OW 6
// u = FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_human ] , [ f_ok ] , [ f_not , [ nation_nature ] ] ] ) diff [ Antoine ] [ 1 ] ;
6534: LD_ADDR_VAR 0 1
6538: PUSH
6539: LD_INT 22
6541: PUSH
6542: LD_INT 8
6544: PUSH
6545: EMPTY
6546: LIST
6547: LIST
6548: PUSH
6549: LD_INT 21
6551: PUSH
6552: LD_INT 1
6554: PUSH
6555: EMPTY
6556: LIST
6557: LIST
6558: PUSH
6559: LD_INT 50
6561: PUSH
6562: EMPTY
6563: LIST
6564: PUSH
6565: LD_INT 3
6567: PUSH
6568: LD_INT 0
6570: PUSH
6571: EMPTY
6572: LIST
6573: PUSH
6574: EMPTY
6575: LIST
6576: LIST
6577: PUSH
6578: EMPTY
6579: LIST
6580: LIST
6581: LIST
6582: LIST
6583: PPUSH
6584: CALL_OW 69
6588: PUSH
6589: LD_EXP 1
6593: PUSH
6594: EMPTY
6595: LIST
6596: PUSH
6597: LD_INT 1
6599: ARRAY
6600: DIFF
6601: ST_TO_ADDR
// Say ( u , dd-s-1 ) ;
6602: LD_VAR 0 1
6606: PPUSH
6607: LD_STRING dd-s-1
6609: PPUSH
6610: CALL_OW 88
// Say ( Antoine , dd-a-1 ) ;
6614: LD_EXP 1
6618: PPUSH
6619: LD_STRING dd-a-1
6621: PPUSH
6622: CALL_OW 88
// if VehiclesDone then
6626: LD_EXP 20
6630: IFFALSE 6692
// begin if IsOK ( Oates ) then
6632: LD_EXP 2
6636: PPUSH
6637: CALL_OW 302
6641: IFFALSE 6657
// Say ( Oates , dd-o-1 ) else
6643: LD_EXP 2
6647: PPUSH
6648: LD_STRING dd-o-1
6650: PPUSH
6651: CALL_OW 88
6655: GO 6669
// Say ( u , dd-s-2 ) ;
6657: LD_VAR 0 1
6661: PPUSH
6662: LD_STRING dd-s-2
6664: PPUSH
6665: CALL_OW 88
// DialogueOff ;
6669: CALL_OW 7
// SetAreaMapShow ( NorthExit , 1 ) ;
6673: LD_INT 10
6675: PPUSH
6676: LD_INT 1
6678: PPUSH
6679: CALL_OW 424
// ChangeMissionObjectives ( ONorth ) ;
6683: LD_STRING ONorth
6685: PPUSH
6686: CALL_OW 337
// end else
6690: GO 6740
// begin if IsOK ( Oates ) then
6692: LD_EXP 2
6696: PPUSH
6697: CALL_OW 302
6701: IFFALSE 6717
// Say ( Oates , dd-o-1a ) else
6703: LD_EXP 2
6707: PPUSH
6708: LD_STRING dd-o-1a
6710: PPUSH
6711: CALL_OW 88
6715: GO 6729
// Say ( u , dd-s-2a ) ;
6717: LD_VAR 0 1
6721: PPUSH
6722: LD_STRING dd-s-2a
6724: PPUSH
6725: CALL_OW 88
// DialogueOff ;
6729: CALL_OW 7
// ChangeMissionObjectives ( OSabotageOut ) ;
6733: LD_STRING OSabotageOut
6735: PPUSH
6736: CALL_OW 337
// end ; SabotageDone = true ;
6740: LD_ADDR_EXP 23
6744: PUSH
6745: LD_INT 1
6747: ST_TO_ADDR
// end ;
6748: PPOPN 1
6750: END
// every 0 0$1 trigger SabotageDone and VehiclesDone do
6751: LD_EXP 23
6755: PUSH
6756: LD_EXP 20
6760: AND
6761: IFFALSE 6774
6763: GO 6765
6765: DISABLE
// ExitOpen = true ;
6766: LD_ADDR_EXP 24
6770: PUSH
6771: LD_INT 1
6773: ST_TO_ADDR
6774: END
// every 0 0$1 trigger ExitOpen = true do var i ;
6775: LD_EXP 24
6779: PUSH
6780: LD_INT 1
6782: EQUAL
6783: IFFALSE 7709
6785: GO 6787
6787: DISABLE
6788: LD_INT 0
6790: PPUSH
// begin enable ;
6791: ENABLE
// SpecialCharacters = [ Antoine , Oates , Ende , Tarpan ] ;
6792: LD_ADDR_LOC 1
6796: PUSH
6797: LD_EXP 1
6801: PUSH
6802: LD_EXP 2
6806: PUSH
6807: LD_EXP 4
6811: PUSH
6812: LD_EXP 5
6816: PUSH
6817: EMPTY
6818: LIST
6819: LIST
6820: LIST
6821: LIST
6822: ST_TO_ADDR
// for i in FilterUnitsInArea ( NorthExit , [ [ f_side , 8 ] , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_engine , engine_siberite ] ] ) do
6823: LD_ADDR_VAR 0 1
6827: PUSH
6828: LD_INT 10
6830: PPUSH
6831: LD_INT 22
6833: PUSH
6834: LD_INT 8
6836: PUSH
6837: EMPTY
6838: LIST
6839: LIST
6840: PUSH
6841: LD_INT 21
6843: PUSH
6844: LD_INT 2
6846: PUSH
6847: EMPTY
6848: LIST
6849: LIST
6850: PUSH
6851: LD_INT 33
6853: PUSH
6854: LD_INT 1
6856: PUSH
6857: EMPTY
6858: LIST
6859: LIST
6860: PUSH
6861: LD_INT 32
6863: PUSH
6864: LD_INT 3
6866: PUSH
6867: EMPTY
6868: LIST
6869: LIST
6870: PUSH
6871: EMPTY
6872: LIST
6873: LIST
6874: LIST
6875: LIST
6876: PPUSH
6877: CALL_OW 70
6881: PUSH
6882: FOR_IN
6883: IFFALSE 7427
// if IsDrivenBy ( i ) in SpecialCharacters then
6885: LD_VAR 0 1
6889: PPUSH
6890: CALL_OW 311
6894: PUSH
6895: LD_LOC 1
6899: IN
6900: IFFALSE 7179
// begin if IsDrivenBy ( i ) = Oates then
6902: LD_VAR 0 1
6906: PPUSH
6907: CALL_OW 311
6911: PUSH
6912: LD_EXP 2
6916: EQUAL
6917: IFFALSE 6931
// Say ( Oates , de-o-1 ) ;
6919: LD_EXP 2
6923: PPUSH
6924: LD_STRING de-o-1
6926: PPUSH
6927: CALL_OW 88
// SpecialSaved = SpecialSaved ^ IsDrivenBy ( i ) ;
6931: LD_ADDR_LOC 2
6935: PUSH
6936: LD_LOC 2
6940: PUSH
6941: LD_VAR 0 1
6945: PPUSH
6946: CALL_OW 311
6950: ADD
6951: ST_TO_ADDR
// if GetWeapon ( i ) = ar_cargo_bay or GetWeapon ( i ) = us_cargo_bay then
6952: LD_VAR 0 1
6956: PPUSH
6957: CALL_OW 264
6961: PUSH
6962: LD_INT 32
6964: EQUAL
6965: PUSH
6966: LD_VAR 0 1
6970: PPUSH
6971: CALL_OW 264
6975: PUSH
6976: LD_INT 12
6978: EQUAL
6979: OR
6980: IFFALSE 7097
// VehiclesSaved = VehiclesSaved ^ [ [ GetNation ( i ) , GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) , GetCargo ( i , mat_cans ) , GetCargo ( i , mat_oil ) , GetCargo ( i , mat_siberit ) ] ] else
6982: LD_ADDR_LOC 4
6986: PUSH
6987: LD_LOC 4
6991: PUSH
6992: LD_VAR 0 1
6996: PPUSH
6997: CALL_OW 248
7001: PUSH
7002: LD_VAR 0 1
7006: PPUSH
7007: CALL_OW 265
7011: PUSH
7012: LD_VAR 0 1
7016: PPUSH
7017: CALL_OW 262
7021: PUSH
7022: LD_VAR 0 1
7026: PPUSH
7027: CALL_OW 263
7031: PUSH
7032: LD_VAR 0 1
7036: PPUSH
7037: CALL_OW 264
7041: PUSH
7042: LD_VAR 0 1
7046: PPUSH
7047: LD_INT 1
7049: PPUSH
7050: CALL_OW 289
7054: PUSH
7055: LD_VAR 0 1
7059: PPUSH
7060: LD_INT 2
7062: PPUSH
7063: CALL_OW 289
7067: PUSH
7068: LD_VAR 0 1
7072: PPUSH
7073: LD_INT 3
7075: PPUSH
7076: CALL_OW 289
7080: PUSH
7081: EMPTY
7082: LIST
7083: LIST
7084: LIST
7085: LIST
7086: LIST
7087: LIST
7088: LIST
7089: LIST
7090: PUSH
7091: EMPTY
7092: LIST
7093: ADD
7094: ST_TO_ADDR
7095: GO 7168
// VehiclesSaved = VehiclesSaved ^ [ [ GetNation ( i ) , GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) ] ] ;
7097: LD_ADDR_LOC 4
7101: PUSH
7102: LD_LOC 4
7106: PUSH
7107: LD_VAR 0 1
7111: PPUSH
7112: CALL_OW 248
7116: PUSH
7117: LD_VAR 0 1
7121: PPUSH
7122: CALL_OW 265
7126: PUSH
7127: LD_VAR 0 1
7131: PPUSH
7132: CALL_OW 262
7136: PUSH
7137: LD_VAR 0 1
7141: PPUSH
7142: CALL_OW 263
7146: PUSH
7147: LD_VAR 0 1
7151: PPUSH
7152: CALL_OW 264
7156: PUSH
7157: EMPTY
7158: LIST
7159: LIST
7160: LIST
7161: LIST
7162: LIST
7163: PUSH
7164: EMPTY
7165: LIST
7166: ADD
7167: ST_TO_ADDR
// RemoveUnit ( i ) ;
7168: LD_VAR 0 1
7172: PPUSH
7173: CALL_OW 64
// end else
7177: GO 7425
// begin OtherSaved = OtherSaved ^ IsDrivenBy ( i ) ;
7179: LD_ADDR_LOC 3
7183: PUSH
7184: LD_LOC 3
7188: PUSH
7189: LD_VAR 0 1
7193: PPUSH
7194: CALL_OW 311
7198: ADD
7199: ST_TO_ADDR
// if GetWeapon ( i ) = ar_cargo_bay or GetWeapon ( i ) = us_cargo_bay then
7200: LD_VAR 0 1
7204: PPUSH
7205: CALL_OW 264
7209: PUSH
7210: LD_INT 32
7212: EQUAL
7213: PUSH
7214: LD_VAR 0 1
7218: PPUSH
7219: CALL_OW 264
7223: PUSH
7224: LD_INT 12
7226: EQUAL
7227: OR
7228: IFFALSE 7345
// VehiclesSaved = VehiclesSaved ^ [ [ GetNation ( i ) , GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) , GetCargo ( i , mat_cans ) , GetCargo ( i , mat_oil ) , GetCargo ( i , mat_siberit ) ] ] else
7230: LD_ADDR_LOC 4
7234: PUSH
7235: LD_LOC 4
7239: PUSH
7240: LD_VAR 0 1
7244: PPUSH
7245: CALL_OW 248
7249: PUSH
7250: LD_VAR 0 1
7254: PPUSH
7255: CALL_OW 265
7259: PUSH
7260: LD_VAR 0 1
7264: PPUSH
7265: CALL_OW 262
7269: PUSH
7270: LD_VAR 0 1
7274: PPUSH
7275: CALL_OW 263
7279: PUSH
7280: LD_VAR 0 1
7284: PPUSH
7285: CALL_OW 264
7289: PUSH
7290: LD_VAR 0 1
7294: PPUSH
7295: LD_INT 1
7297: PPUSH
7298: CALL_OW 289
7302: PUSH
7303: LD_VAR 0 1
7307: PPUSH
7308: LD_INT 2
7310: PPUSH
7311: CALL_OW 289
7315: PUSH
7316: LD_VAR 0 1
7320: PPUSH
7321: LD_INT 3
7323: PPUSH
7324: CALL_OW 289
7328: PUSH
7329: EMPTY
7330: LIST
7331: LIST
7332: LIST
7333: LIST
7334: LIST
7335: LIST
7336: LIST
7337: LIST
7338: PUSH
7339: EMPTY
7340: LIST
7341: ADD
7342: ST_TO_ADDR
7343: GO 7416
// VehiclesSaved = VehiclesSaved ^ [ [ GetNation ( i ) , GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) ] ] ;
7345: LD_ADDR_LOC 4
7349: PUSH
7350: LD_LOC 4
7354: PUSH
7355: LD_VAR 0 1
7359: PPUSH
7360: CALL_OW 248
7364: PUSH
7365: LD_VAR 0 1
7369: PPUSH
7370: CALL_OW 265
7374: PUSH
7375: LD_VAR 0 1
7379: PPUSH
7380: CALL_OW 262
7384: PUSH
7385: LD_VAR 0 1
7389: PPUSH
7390: CALL_OW 263
7394: PUSH
7395: LD_VAR 0 1
7399: PPUSH
7400: CALL_OW 264
7404: PUSH
7405: EMPTY
7406: LIST
7407: LIST
7408: LIST
7409: LIST
7410: LIST
7411: PUSH
7412: EMPTY
7413: LIST
7414: ADD
7415: ST_TO_ADDR
// RemoveUnit ( i ) ;
7416: LD_VAR 0 1
7420: PPUSH
7421: CALL_OW 64
// end ;
7425: GO 6882
7427: POP
7428: POP
// if FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) = 0 then
7429: LD_INT 22
7431: PUSH
7432: LD_INT 8
7434: PUSH
7435: EMPTY
7436: LIST
7437: LIST
7438: PUSH
7439: LD_INT 21
7441: PUSH
7442: LD_INT 1
7444: PUSH
7445: EMPTY
7446: LIST
7447: LIST
7448: PUSH
7449: LD_INT 3
7451: PUSH
7452: LD_INT 23
7454: PUSH
7455: LD_INT 0
7457: PUSH
7458: EMPTY
7459: LIST
7460: LIST
7461: PUSH
7462: EMPTY
7463: LIST
7464: LIST
7465: PUSH
7466: EMPTY
7467: LIST
7468: LIST
7469: LIST
7470: PPUSH
7471: CALL_OW 69
7475: PUSH
7476: LD_INT 0
7478: EQUAL
7479: IFFALSE 7709
// begin if SniperDone then
7481: LD_EXP 19
7485: IFFALSE 7499
// AddMedal ( MSniper , 1 ) else
7487: LD_STRING MSniper
7489: PPUSH
7490: LD_INT 1
7492: PPUSH
7493: CALL_OW 101
7497: GO 7510
// AddMedal ( MSniper , - 1 ) ;
7499: LD_STRING MSniper
7501: PPUSH
7502: LD_INT 1
7504: NEG
7505: PPUSH
7506: CALL_OW 101
// if AntoineLosses = 0 then
7510: LD_EXP 26
7514: PUSH
7515: LD_INT 0
7517: EQUAL
7518: IFFALSE 7532
// AddMedal ( MLosses , 1 ) else
7520: LD_STRING MLosses
7522: PPUSH
7523: LD_INT 1
7525: PPUSH
7526: CALL_OW 101
7530: GO 7543
// AddMedal ( MLosses , - 1 ) ;
7532: LD_STRING MLosses
7534: PPUSH
7535: LD_INT 1
7537: NEG
7538: PPUSH
7539: CALL_OW 101
// if tick < [ 60 60$0 , 50 50$0 , 40 40$0 ] [ difficulty ] then
7543: LD_OWVAR 1
7547: PUSH
7548: LD_INT 126000
7550: PUSH
7551: LD_INT 105000
7553: PUSH
7554: LD_INT 84000
7556: PUSH
7557: EMPTY
7558: LIST
7559: LIST
7560: LIST
7561: PUSH
7562: LD_OWVAR 67
7566: ARRAY
7567: LESS
7568: IFFALSE 7582
// AddMedal ( MTime , 1 ) else
7570: LD_STRING MTime
7572: PPUSH
7573: LD_INT 1
7575: PPUSH
7576: CALL_OW 101
7580: GO 7593
// AddMedal ( MTime , - 1 ) ;
7582: LD_STRING MTime
7584: PPUSH
7585: LD_INT 1
7587: NEG
7588: PPUSH
7589: CALL_OW 101
// GiveMedals ( Main ) ;
7593: LD_STRING Main
7595: PPUSH
7596: CALL_OW 102
// RewardPeople ( SpecialSaved ^ OtherSaved ) ;
7600: LD_LOC 2
7604: PUSH
7605: LD_LOC 3
7609: ADD
7610: PPUSH
7611: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
7615: LD_EXP 1
7619: PPUSH
7620: LD_STRING Antoine
7622: PPUSH
7623: CALL_OW 38
// if Ende then
7627: LD_EXP 4
7631: IFFALSE 7645
// SaveCharacters ( Ende , Ende ) ;
7633: LD_EXP 4
7637: PPUSH
7638: LD_STRING Ende
7640: PPUSH
7641: CALL_OW 38
// if Tarpan then
7645: LD_EXP 5
7649: IFFALSE 7663
// SaveCharacters ( Tarpan , Tarpan ) ;
7651: LD_EXP 5
7655: PPUSH
7656: LD_STRING Tarpan
7658: PPUSH
7659: CALL_OW 38
// if Oates then
7663: LD_EXP 2
7667: IFFALSE 7681
// SaveCharacters ( Oates , Oates ) ;
7669: LD_EXP 2
7673: PPUSH
7674: LD_STRING Oates
7676: PPUSH
7677: CALL_OW 38
// SaveCharacters ( OtherSaved , OtherSaved ) ;
7681: LD_LOC 3
7685: PPUSH
7686: LD_STRING OtherSaved
7688: PPUSH
7689: CALL_OW 38
// SaveVariable ( VehiclesSaved , VehiclesSaved ) ;
7693: LD_LOC 4
7697: PPUSH
7698: LD_STRING VehiclesSaved
7700: PPUSH
7701: CALL_OW 39
// YouWin ;
7705: CALL_OW 103
// end ; end ; end_of_file
7709: PPOPN 1
7711: END
// every 2 2$0 do
7712: GO 7714
7714: DISABLE
// begin enable ;
7715: ENABLE
// CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
7716: LD_INT 2
7718: PPUSH
7719: LD_INT 5
7721: PPUSH
7722: CALL_OW 12
7726: PPUSH
7727: LD_INT 1
7729: PPUSH
7730: CALL_OW 57
// end ;
7734: END
// every 0 0$1 do var i ;
7735: GO 7737
7737: DISABLE
7738: LD_INT 0
7740: PPUSH
// begin case tick of 1 .. 20 20$0 :
7741: LD_OWVAR 1
7745: PUSH
7746: LD_INT 1
7748: DOUBLE
7749: GREATEREQUAL
7750: IFFALSE 7758
7752: LD_INT 42000
7754: DOUBLE
7755: LESSEQUAL
7756: IFTRUE 7760
7758: GO 7778
7760: POP
// Wait ( Rand ( 1 1$0 , 2 2$0 ) ) ; 20 20$0 + 1 .. 40 40$0 :
7761: LD_INT 2100
7763: PPUSH
7764: LD_INT 4200
7766: PPUSH
7767: CALL_OW 12
7771: PPUSH
7772: CALL_OW 67
7776: GO 7899
7778: LD_INT 42000
7780: PUSH
7781: LD_INT 1
7783: PLUS
7784: DOUBLE
7785: GREATEREQUAL
7786: IFFALSE 7794
7788: LD_INT 84000
7790: DOUBLE
7791: LESSEQUAL
7792: IFTRUE 7796
7794: GO 7847
7796: POP
// Wait ( [ Rand ( 2 2$0 , 3 3$30 ) , Rand ( 2 2$0 , 4 4$0 ) , Rand ( 2 2$30 , 4 4$0 ) ] [ difficulty ] ) ; 40 40$0 + 1 .. 50 50$0 :
7797: LD_INT 4200
7799: PPUSH
7800: LD_INT 7350
7802: PPUSH
7803: CALL_OW 12
7807: PUSH
7808: LD_INT 4200
7810: PPUSH
7811: LD_INT 8400
7813: PPUSH
7814: CALL_OW 12
7818: PUSH
7819: LD_INT 5250
7821: PPUSH
7822: LD_INT 8400
7824: PPUSH
7825: CALL_OW 12
7829: PUSH
7830: EMPTY
7831: LIST
7832: LIST
7833: LIST
7834: PUSH
7835: LD_OWVAR 67
7839: ARRAY
7840: PPUSH
7841: CALL_OW 67
7845: GO 7899
7847: LD_INT 84000
7849: PUSH
7850: LD_INT 1
7852: PLUS
7853: DOUBLE
7854: GREATEREQUAL
7855: IFFALSE 7863
7857: LD_INT 105000
7859: DOUBLE
7860: LESSEQUAL
7861: IFTRUE 7865
7863: GO 7883
7865: POP
// Wait ( Rand ( 1 1$0 , 1 1$30 ) ) ; else
7866: LD_INT 2100
7868: PPUSH
7869: LD_INT 3150
7871: PPUSH
7872: CALL_OW 12
7876: PPUSH
7877: CALL_OW 67
7881: GO 7899
7883: POP
// Wait ( Rand ( 2 2$0 , 5 5$0 ) ) ; end ;
7884: LD_INT 4200
7886: PPUSH
7887: LD_INT 10500
7889: PPUSH
7890: CALL_OW 12
7894: PPUSH
7895: CALL_OW 67
// for i in [ OatesArea , AlhambraArea ] do
7899: LD_ADDR_VAR 0 1
7903: PUSH
7904: LD_INT 7
7906: PUSH
7907: LD_INT 6
7909: PUSH
7910: EMPTY
7911: LIST
7912: LIST
7913: PUSH
7914: FOR_IN
7915: IFFALSE 7957
// begin CreateCratesArea ( Rand ( 3 , 5 ) , i , true ) ;
7917: LD_INT 3
7919: PPUSH
7920: LD_INT 5
7922: PPUSH
7923: CALL_OW 12
7927: PPUSH
7928: LD_VAR 0 1
7932: PPUSH
7933: LD_INT 1
7935: PPUSH
7936: CALL_OW 55
// Wait ( Rand ( 0 0$30 , 1 1$0 ) ) ;
7940: LD_INT 1050
7942: PPUSH
7943: LD_INT 2100
7945: PPUSH
7946: CALL_OW 12
7950: PPUSH
7951: CALL_OW 67
// end ;
7955: GO 7914
7957: POP
7958: POP
// enable ;
7959: ENABLE
// end ;
7960: PPOPN 1
7962: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) = 0 and FilterAllUnits ( [ f_control , control_apeman ] ) < 3 and FilterAllUnits ( [ f_class , class_apeman_kamikaze ] ) < 3 marked 2 do var i ;
7963: LD_INT 22
7965: PUSH
7966: LD_INT 0
7968: PUSH
7969: EMPTY
7970: LIST
7971: LIST
7972: PUSH
7973: LD_INT 25
7975: PUSH
7976: LD_INT 12
7978: PUSH
7979: EMPTY
7980: LIST
7981: LIST
7982: PUSH
7983: EMPTY
7984: LIST
7985: LIST
7986: PPUSH
7987: CALL_OW 69
7991: PUSH
7992: LD_INT 0
7994: EQUAL
7995: PUSH
7996: LD_INT 33
7998: PUSH
7999: LD_INT 5
8001: PUSH
8002: EMPTY
8003: LIST
8004: LIST
8005: PPUSH
8006: CALL_OW 69
8010: PUSH
8011: LD_INT 3
8013: LESS
8014: AND
8015: PUSH
8016: LD_INT 25
8018: PUSH
8019: LD_INT 17
8021: PUSH
8022: EMPTY
8023: LIST
8024: LIST
8025: PPUSH
8026: CALL_OW 69
8030: PUSH
8031: LD_INT 3
8033: LESS
8034: AND
8035: IFFALSE 8170
8037: GO 8039
8039: DISABLE
8040: LD_INT 0
8042: PPUSH
// begin enable ;
8043: ENABLE
// disable ( 2 ) ;
8044: LD_INT 2
8046: DISABLE_MARKED
// uc_side = 0 ;
8047: LD_ADDR_OWVAR 20
8051: PUSH
8052: LD_INT 0
8054: ST_TO_ADDR
// uc_nation = nation_nature ;
8055: LD_ADDR_OWVAR 21
8059: PUSH
8060: LD_INT 0
8062: ST_TO_ADDR
// for i = 1 to 2 do
8063: LD_ADDR_VAR 0 1
8067: PUSH
8068: DOUBLE
8069: LD_INT 1
8071: DEC
8072: ST_TO_ADDR
8073: LD_INT 2
8075: PUSH
8076: FOR_TO
8077: IFFALSE 8123
// begin InitHc ;
8079: CALL_OW 19
// Wait ( Rand ( 1 1$0 , 1 1$30 ) ) ;
8083: LD_INT 2100
8085: PPUSH
8086: LD_INT 3150
8088: PPUSH
8089: CALL_OW 12
8093: PPUSH
8094: CALL_OW 67
// hc_class = class_apeman ;
8098: LD_ADDR_OWVAR 28
8102: PUSH
8103: LD_INT 12
8105: ST_TO_ADDR
// PlaceUnitArea ( CreateHuman , ApeSouth , false ) ;
8106: CALL_OW 44
8110: PPUSH
8111: LD_INT 8
8113: PPUSH
8114: LD_INT 0
8116: PPUSH
8117: CALL_OW 49
// end ;
8121: GO 8076
8123: POP
8124: POP
// Wait ( Rand ( 0 0$15 , 1 1$0 ) ) ;
8125: LD_INT 525
8127: PPUSH
8128: LD_INT 2100
8130: PPUSH
8131: CALL_OW 12
8135: PPUSH
8136: CALL_OW 67
// InitHc ;
8140: CALL_OW 19
// hc_class = class_apeman ;
8144: LD_ADDR_OWVAR 28
8148: PUSH
8149: LD_INT 12
8151: ST_TO_ADDR
// PlaceUnitArea ( CreateHuman , ApeNorth , false ) ;
8152: CALL_OW 44
8156: PPUSH
8157: LD_INT 9
8159: PPUSH
8160: LD_INT 0
8162: PPUSH
8163: CALL_OW 49
// enable ( 2 ) ;
8167: LD_INT 2
8169: ENABLE_MARKED
// end ;
8170: PPOPN 1
8172: END
// export SelectedUnits ; every 0 0$0.5 do var i ;
8173: GO 8175
8175: DISABLE
8176: LD_INT 0
8178: PPUSH
// begin SelectedUnits = [ ] ;
8179: LD_ADDR_EXP 25
8183: PUSH
8184: EMPTY
8185: ST_TO_ADDR
// enable ;
8186: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 8 ] , [ f_nation , nation_arabian ] , [ f_class , class_soldier ] ] ) do
8187: LD_ADDR_VAR 0 1
8191: PUSH
8192: LD_INT 22
8194: PUSH
8195: LD_INT 8
8197: PUSH
8198: EMPTY
8199: LIST
8200: LIST
8201: PUSH
8202: LD_INT 23
8204: PUSH
8205: LD_INT 2
8207: PUSH
8208: EMPTY
8209: LIST
8210: LIST
8211: PUSH
8212: LD_INT 25
8214: PUSH
8215: LD_INT 1
8217: PUSH
8218: EMPTY
8219: LIST
8220: LIST
8221: PUSH
8222: EMPTY
8223: LIST
8224: LIST
8225: LIST
8226: PPUSH
8227: CALL_OW 69
8231: PUSH
8232: FOR_IN
8233: IFFALSE 8264
// if IsSelected ( i ) then
8235: LD_VAR 0 1
8239: PPUSH
8240: CALL_OW 306
8244: IFFALSE 8262
// SelectedUnits = SelectedUnits ^ i ;
8246: LD_ADDR_EXP 25
8250: PUSH
8251: LD_EXP 25
8255: PUSH
8256: LD_VAR 0 1
8260: ADD
8261: ST_TO_ADDR
8262: GO 8232
8264: POP
8265: POP
// end ;
8266: PPOPN 1
8268: END
// on CustomCommand ( side , param1 , param2 , param3 , param4 , param5 ) do var i ;
8269: LD_INT 0
8271: PPUSH
// begin if param1 = 1 then
8272: LD_VAR 0 2
8276: PUSH
8277: LD_INT 1
8279: EQUAL
8280: IFFALSE 8308
// for i in SelectedUnits do
8282: LD_ADDR_VAR 0 7
8286: PUSH
8287: LD_EXP 25
8291: PUSH
8292: FOR_IN
8293: IFFALSE 8306
// ComForceInvisible ( i ) ;
8295: LD_VAR 0 7
8299: PPUSH
8300: CALL_OW 496
8304: GO 8292
8306: POP
8307: POP
// end ;
8308: PPOPN 7
8310: END
// export AntoineLosses , WhereDead ; on UnitDestroyed ( u ) do begin if u = Antoine then
8311: LD_VAR 0 1
8315: PUSH
8316: LD_EXP 1
8320: EQUAL
8321: IFFALSE 8330
// YouLost ( AntoineDead ) ;
8323: LD_STRING AntoineDead
8325: PPUSH
8326: CALL_OW 104
// if GetSide ( u ) = 8 and GetType ( u ) = unit_human then
8330: LD_VAR 0 1
8334: PPUSH
8335: CALL_OW 255
8339: PUSH
8340: LD_INT 8
8342: EQUAL
8343: PUSH
8344: LD_VAR 0 1
8348: PPUSH
8349: CALL_OW 247
8353: PUSH
8354: LD_INT 1
8356: EQUAL
8357: AND
8358: IFFALSE 8403
// begin AntoineLosses = AntoineLosses + 1 ;
8360: LD_ADDR_EXP 26
8364: PUSH
8365: LD_EXP 26
8369: PUSH
8370: LD_INT 1
8372: PLUS
8373: ST_TO_ADDR
// WhereDead = [ GetX ( u ) , GetY ( u ) ] ;
8374: LD_ADDR_EXP 27
8378: PUSH
8379: LD_VAR 0 1
8383: PPUSH
8384: CALL_OW 250
8388: PUSH
8389: LD_VAR 0 1
8393: PPUSH
8394: CALL_OW 251
8398: PUSH
8399: EMPTY
8400: LIST
8401: LIST
8402: ST_TO_ADDR
// end ; end ;
8403: PPOPN 1
8405: END
// every 0 0$1 trigger AntoineLosses = 3 do
8406: LD_EXP 26
8410: PUSH
8411: LD_INT 3
8413: EQUAL
8414: IFFALSE 8468
8416: GO 8418
8418: DISABLE
// begin CenterOnXY ( WhereDead [ 1 ] , WhereDead [ 2 ] ) ;
8419: LD_EXP 27
8423: PUSH
8424: LD_INT 1
8426: ARRAY
8427: PPUSH
8428: LD_EXP 27
8432: PUSH
8433: LD_INT 2
8435: ARRAY
8436: PPUSH
8437: CALL_OW 84
// DialogueOn ;
8441: CALL_OW 6
// Say ( Antoine , dy-a-1 ) ;
8445: LD_EXP 1
8449: PPUSH
8450: LD_STRING dy-a-1
8452: PPUSH
8453: CALL_OW 88
// DialogueOff ;
8457: CALL_OW 7
// YouLost ( TooManyDead ) ;
8461: LD_STRING TooManyDead
8463: PPUSH
8464: CALL_OW 104
// end ; end_of_file
8468: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
8469: LD_INT 0
8471: PPUSH
8472: PPUSH
8473: PPUSH
8474: PPUSH
// InitHc ;
8475: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
8479: LD_ADDR_VAR 0 9
8483: PUSH
8484: LD_VAR 0 2
8488: PPUSH
8489: LD_INT 22
8491: PUSH
8492: LD_VAR 0 1
8496: PUSH
8497: EMPTY
8498: LIST
8499: LIST
8500: PUSH
8501: LD_INT 21
8503: PUSH
8504: LD_INT 3
8506: PUSH
8507: EMPTY
8508: LIST
8509: LIST
8510: PUSH
8511: EMPTY
8512: LIST
8513: LIST
8514: PPUSH
8515: CALL_OW 70
8519: PUSH
8520: FOR_IN
8521: IFFALSE 9008
// case GetBType ( i ) of b_depot , b_warehouse :
8523: LD_VAR 0 9
8527: PPUSH
8528: CALL_OW 266
8532: PUSH
8533: LD_INT 0
8535: DOUBLE
8536: EQUAL
8537: IFTRUE 8547
8539: LD_INT 1
8541: DOUBLE
8542: EQUAL
8543: IFTRUE 8547
8545: GO 8689
8547: POP
// for j = 1 to engineers do
8548: LD_ADDR_VAR 0 10
8552: PUSH
8553: DOUBLE
8554: LD_INT 1
8556: DEC
8557: ST_TO_ADDR
8558: LD_VAR 0 7
8562: PUSH
8563: FOR_TO
8564: IFFALSE 8685
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
8566: LD_INT 1
8568: PPUSH
8569: LD_INT 2
8571: PPUSH
8572: CALL_OW 12
8576: PPUSH
8577: LD_VAR 0 3
8581: PPUSH
8582: CALL_OW 382
// h = CreateHuman ;
8586: LD_ADDR_VAR 0 11
8590: PUSH
8591: CALL_OW 44
8595: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
8596: LD_VAR 0 11
8600: PPUSH
8601: LD_VAR 0 9
8605: PPUSH
8606: CALL_OW 250
8610: PPUSH
8611: LD_VAR 0 9
8615: PPUSH
8616: CALL_OW 254
8620: PPUSH
8621: LD_INT 4
8623: PPUSH
8624: LD_INT 10
8626: PPUSH
8627: CALL_OW 12
8631: PPUSH
8632: CALL_OW 272
8636: PPUSH
8637: LD_VAR 0 9
8641: PPUSH
8642: CALL_OW 251
8646: PPUSH
8647: LD_VAR 0 9
8651: PPUSH
8652: CALL_OW 254
8656: PPUSH
8657: LD_INT 4
8659: PPUSH
8660: LD_INT 10
8662: PPUSH
8663: CALL_OW 12
8667: PPUSH
8668: CALL_OW 273
8672: PPUSH
8673: LD_INT 8
8675: PPUSH
8676: LD_INT 0
8678: PPUSH
8679: CALL_OW 50
// end ; b_armoury , b_barracks :
8683: GO 8563
8685: POP
8686: POP
8687: GO 9006
8689: LD_INT 4
8691: DOUBLE
8692: EQUAL
8693: IFTRUE 8703
8695: LD_INT 5
8697: DOUBLE
8698: EQUAL
8699: IFTRUE 8703
8701: GO 8772
8703: POP
// for j = 1 to armoury do
8704: LD_ADDR_VAR 0 10
8708: PUSH
8709: DOUBLE
8710: LD_INT 1
8712: DEC
8713: ST_TO_ADDR
8714: LD_VAR 0 6
8718: PUSH
8719: FOR_TO
8720: IFFALSE 8768
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
8722: LD_INT 1
8724: PPUSH
8725: LD_INT 2
8727: PPUSH
8728: CALL_OW 12
8732: PPUSH
8733: LD_VAR 0 3
8737: PPUSH
8738: CALL_OW 381
// h = CreateHuman ;
8742: LD_ADDR_VAR 0 11
8746: PUSH
8747: CALL_OW 44
8751: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8752: LD_VAR 0 11
8756: PPUSH
8757: LD_VAR 0 9
8761: PPUSH
8762: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
8766: GO 8719
8768: POP
8769: POP
8770: GO 9006
8772: LD_INT 9
8774: DOUBLE
8775: EQUAL
8776: IFTRUE 8792
8778: LD_INT 7
8780: DOUBLE
8781: EQUAL
8782: IFTRUE 8792
8784: LD_INT 8
8786: DOUBLE
8787: EQUAL
8788: IFTRUE 8792
8790: GO 8861
8792: POP
// for j = 1 to lab do
8793: LD_ADDR_VAR 0 10
8797: PUSH
8798: DOUBLE
8799: LD_INT 1
8801: DEC
8802: ST_TO_ADDR
8803: LD_VAR 0 5
8807: PUSH
8808: FOR_TO
8809: IFFALSE 8857
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
8811: LD_INT 1
8813: PPUSH
8814: LD_INT 2
8816: PPUSH
8817: CALL_OW 12
8821: PPUSH
8822: LD_VAR 0 3
8826: PPUSH
8827: CALL_OW 384
// h = CreateHuman ;
8831: LD_ADDR_VAR 0 11
8835: PUSH
8836: CALL_OW 44
8840: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8841: LD_VAR 0 11
8845: PPUSH
8846: LD_VAR 0 9
8850: PPUSH
8851: CALL_OW 52
// end ; b_workshop , b_factory :
8855: GO 8808
8857: POP
8858: POP
8859: GO 9006
8861: LD_INT 2
8863: DOUBLE
8864: EQUAL
8865: IFTRUE 8875
8867: LD_INT 3
8869: DOUBLE
8870: EQUAL
8871: IFTRUE 8875
8873: GO 8944
8875: POP
// for j = 1 to workshop do
8876: LD_ADDR_VAR 0 10
8880: PUSH
8881: DOUBLE
8882: LD_INT 1
8884: DEC
8885: ST_TO_ADDR
8886: LD_VAR 0 4
8890: PUSH
8891: FOR_TO
8892: IFFALSE 8940
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
8894: LD_INT 1
8896: PPUSH
8897: LD_INT 2
8899: PPUSH
8900: CALL_OW 12
8904: PPUSH
8905: LD_VAR 0 3
8909: PPUSH
8910: CALL_OW 383
// h = CreateHuman ;
8914: LD_ADDR_VAR 0 11
8918: PUSH
8919: CALL_OW 44
8923: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8924: LD_VAR 0 11
8928: PPUSH
8929: LD_VAR 0 9
8933: PPUSH
8934: CALL_OW 52
// end ; b_breastwork , b_bunker :
8938: GO 8891
8940: POP
8941: POP
8942: GO 9006
8944: LD_INT 31
8946: DOUBLE
8947: EQUAL
8948: IFTRUE 8958
8950: LD_INT 32
8952: DOUBLE
8953: EQUAL
8954: IFTRUE 8958
8956: GO 9005
8958: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
8959: LD_INT 1
8961: PPUSH
8962: LD_INT 2
8964: PPUSH
8965: CALL_OW 12
8969: PPUSH
8970: LD_VAR 0 3
8974: PPUSH
8975: CALL_OW 381
// h = CreateHuman ;
8979: LD_ADDR_VAR 0 11
8983: PUSH
8984: CALL_OW 44
8988: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8989: LD_VAR 0 11
8993: PPUSH
8994: LD_VAR 0 9
8998: PPUSH
8999: CALL_OW 52
// end ; end ;
9003: GO 9006
9005: POP
9006: GO 8520
9008: POP
9009: POP
// end ;
9010: LD_VAR 0 8
9014: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
9015: LD_INT 0
9017: PPUSH
9018: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
9019: LD_ADDR_VAR 0 4
9023: PUSH
9024: LD_INT 22
9026: PUSH
9027: LD_VAR 0 1
9031: PUSH
9032: EMPTY
9033: LIST
9034: LIST
9035: PUSH
9036: LD_INT 3
9038: PUSH
9039: LD_INT 23
9041: PUSH
9042: LD_INT 0
9044: PUSH
9045: EMPTY
9046: LIST
9047: LIST
9048: PUSH
9049: EMPTY
9050: LIST
9051: LIST
9052: PUSH
9053: EMPTY
9054: LIST
9055: LIST
9056: PPUSH
9057: CALL_OW 69
9061: PPUSH
9062: LD_VAR 0 2
9066: PUSH
9067: LD_INT 1
9069: ARRAY
9070: PPUSH
9071: CALL_OW 74
9075: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
9076: LD_VAR 0 4
9080: PPUSH
9081: CALL_OW 247
9085: PUSH
9086: LD_INT 2
9088: EQUAL
9089: IFFALSE 9153
// if GetControl ( i ) = control_manual then
9091: LD_VAR 0 4
9095: PPUSH
9096: CALL_OW 263
9100: PUSH
9101: LD_INT 1
9103: EQUAL
9104: IFFALSE 9123
// i = IsDrivenBy ( i ) else
9106: LD_ADDR_VAR 0 4
9110: PUSH
9111: LD_VAR 0 4
9115: PPUSH
9116: CALL_OW 311
9120: ST_TO_ADDR
9121: GO 9153
// if GetControl ( i ) = control_remote then
9123: LD_VAR 0 4
9127: PPUSH
9128: CALL_OW 263
9132: PUSH
9133: LD_INT 2
9135: EQUAL
9136: IFFALSE 9153
// i = IsControledBy ( i ) ;
9138: LD_ADDR_VAR 0 4
9142: PUSH
9143: LD_VAR 0 4
9147: PPUSH
9148: CALL_OW 312
9152: ST_TO_ADDR
// if GetType ( i ) = unit_building then
9153: LD_VAR 0 4
9157: PPUSH
9158: CALL_OW 247
9162: PUSH
9163: LD_INT 3
9165: EQUAL
9166: IFFALSE 9209
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
9168: LD_ADDR_VAR 0 4
9172: PUSH
9173: LD_VAR 0 4
9177: PPUSH
9178: CALL_OW 313
9182: PPUSH
9183: LD_INT 3
9185: PUSH
9186: LD_INT 23
9188: PUSH
9189: LD_INT 0
9191: PUSH
9192: EMPTY
9193: LIST
9194: LIST
9195: PUSH
9196: EMPTY
9197: LIST
9198: LIST
9199: PPUSH
9200: CALL_OW 72
9204: PUSH
9205: LD_INT 1
9207: ARRAY
9208: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
9209: LD_VAR 0 4
9213: PPUSH
9214: CALL_OW 247
9218: PUSH
9219: LD_INT 1
9221: EQUAL
9222: NOT
9223: IFFALSE 9283
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
9225: LD_ADDR_VAR 0 4
9229: PUSH
9230: LD_INT 22
9232: PUSH
9233: LD_VAR 0 1
9237: PUSH
9238: EMPTY
9239: LIST
9240: LIST
9241: PUSH
9242: LD_INT 21
9244: PUSH
9245: LD_INT 1
9247: PUSH
9248: EMPTY
9249: LIST
9250: LIST
9251: PUSH
9252: LD_INT 3
9254: PUSH
9255: LD_INT 23
9257: PUSH
9258: LD_INT 0
9260: PUSH
9261: EMPTY
9262: LIST
9263: LIST
9264: PUSH
9265: EMPTY
9266: LIST
9267: LIST
9268: PUSH
9269: EMPTY
9270: LIST
9271: LIST
9272: LIST
9273: PPUSH
9274: CALL_OW 69
9278: PUSH
9279: LD_INT 1
9281: ARRAY
9282: ST_TO_ADDR
// result = i ;
9283: LD_ADDR_VAR 0 3
9287: PUSH
9288: LD_VAR 0 4
9292: ST_TO_ADDR
// end ;
9293: LD_VAR 0 3
9297: RET
