// export Antoine , Ende , Oates , Tarpan ; export VehiclesSaved , TeamAntoine ; export function PrepareOurs ; var i , v ; var vehs_ready , people_ready ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
   6: PPUSH
// uc_side = 8 ;
   7: LD_ADDR_OWVAR 20
  11: PUSH
  12: LD_INT 8
  14: ST_TO_ADDR
// uc_direction = 2 ;
  15: LD_ADDR_OWVAR 24
  19: PUSH
  20: LD_INT 2
  22: ST_TO_ADDR
// vehs_ready = [ ] ;
  23: LD_ADDR_VAR 0 4
  27: PUSH
  28: EMPTY
  29: ST_TO_ADDR
// people_ready = [ ] ;
  30: LD_ADDR_VAR 0 5
  34: PUSH
  35: EMPTY
  36: ST_TO_ADDR
// for i in LoadVariable ( VehiclesSaved , 0 ) do
  37: LD_ADDR_VAR 0 2
  41: PUSH
  42: LD_STRING VehiclesSaved
  44: PPUSH
  45: LD_INT 0
  47: PPUSH
  48: CALL_OW 30
  52: PUSH
  53: FOR_IN
  54: IFFALSE 260
// begin uc_nation = i [ 1 ] ;
  56: LD_ADDR_OWVAR 21
  60: PUSH
  61: LD_VAR 0 2
  65: PUSH
  66: LD_INT 1
  68: ARRAY
  69: ST_TO_ADDR
// vc_chassis = i [ 2 ] ;
  70: LD_ADDR_OWVAR 37
  74: PUSH
  75: LD_VAR 0 2
  79: PUSH
  80: LD_INT 2
  82: ARRAY
  83: ST_TO_ADDR
// vc_engine = i [ 3 ] ;
  84: LD_ADDR_OWVAR 39
  88: PUSH
  89: LD_VAR 0 2
  93: PUSH
  94: LD_INT 3
  96: ARRAY
  97: ST_TO_ADDR
// vc_control = i [ 4 ] ;
  98: LD_ADDR_OWVAR 38
 102: PUSH
 103: LD_VAR 0 2
 107: PUSH
 108: LD_INT 4
 110: ARRAY
 111: ST_TO_ADDR
// vc_weapon = i [ 5 ] ;
 112: LD_ADDR_OWVAR 40
 116: PUSH
 117: LD_VAR 0 2
 121: PUSH
 122: LD_INT 5
 124: ARRAY
 125: ST_TO_ADDR
// v = CreateVehicle ;
 126: LD_ADDR_VAR 0 3
 130: PUSH
 131: CALL_OW 45
 135: ST_TO_ADDR
// PlaceUnitArea ( v , AntoineEnterArea , false ) ;
 136: LD_VAR 0 3
 140: PPUSH
 141: LD_INT 1
 143: PPUSH
 144: LD_INT 0
 146: PPUSH
 147: CALL_OW 49
// if i [ 5 ] = us_cargo_bay or i [ 5 ] = ar_cargo_bay then
 151: LD_VAR 0 2
 155: PUSH
 156: LD_INT 5
 158: ARRAY
 159: PUSH
 160: LD_INT 12
 162: EQUAL
 163: PUSH
 164: LD_VAR 0 2
 168: PUSH
 169: LD_INT 5
 171: ARRAY
 172: PUSH
 173: LD_INT 32
 175: EQUAL
 176: OR
 177: IFFALSE 242
// begin AddCargo ( v , mat_cans , i [ 6 ] ) ;
 179: LD_VAR 0 3
 183: PPUSH
 184: LD_INT 1
 186: PPUSH
 187: LD_VAR 0 2
 191: PUSH
 192: LD_INT 6
 194: ARRAY
 195: PPUSH
 196: CALL_OW 291
// AddCargo ( v , mat_oil , i [ 7 ] ) ;
 200: LD_VAR 0 3
 204: PPUSH
 205: LD_INT 2
 207: PPUSH
 208: LD_VAR 0 2
 212: PUSH
 213: LD_INT 7
 215: ARRAY
 216: PPUSH
 217: CALL_OW 291
// AddCargo ( v , mat_siberit , i [ 8 ] ) ;
 221: LD_VAR 0 3
 225: PPUSH
 226: LD_INT 3
 228: PPUSH
 229: LD_VAR 0 2
 233: PUSH
 234: LD_INT 8
 236: ARRAY
 237: PPUSH
 238: CALL_OW 291
// end ; vehs_ready = vehs_ready ^ v ;
 242: LD_ADDR_VAR 0 4
 246: PUSH
 247: LD_VAR 0 4
 251: PUSH
 252: LD_VAR 0 3
 256: ADD
 257: ST_TO_ADDR
// end ;
 258: GO 53
 260: POP
 261: POP
// uc_nation = 2 ;
 262: LD_ADDR_OWVAR 21
 266: PUSH
 267: LD_INT 2
 269: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 0 , 0 ) ;
 270: LD_ADDR_EXP 1
 274: PUSH
 275: LD_STRING Antoine
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: LD_INT 0
 283: PPUSH
 284: CALL_OW 527
 288: ST_TO_ADDR
// people_ready = people_ready ^ Antoine ;
 289: LD_ADDR_VAR 0 5
 293: PUSH
 294: LD_VAR 0 5
 298: PUSH
 299: LD_EXP 1
 303: ADD
 304: ST_TO_ADDR
// if CheckCharacterSet ( Ende ) then
 305: LD_STRING Ende
 307: PPUSH
 308: CALL_OW 29
 312: IFFALSE 349
// begin Ende = LoadCharacter ( Ende , 0 , 0 ) ;
 314: LD_ADDR_EXP 2
 318: PUSH
 319: LD_STRING Ende
 321: PPUSH
 322: LD_INT 0
 324: PPUSH
 325: LD_INT 0
 327: PPUSH
 328: CALL_OW 527
 332: ST_TO_ADDR
// people_ready = people_ready ^ Ende ;
 333: LD_ADDR_VAR 0 5
 337: PUSH
 338: LD_VAR 0 5
 342: PUSH
 343: LD_EXP 2
 347: ADD
 348: ST_TO_ADDR
// end ; if CheckCharacterSet ( Tarpan ) then
 349: LD_STRING Tarpan
 351: PPUSH
 352: CALL_OW 29
 356: IFFALSE 393
// begin Tarpan = LoadCharacter ( Tarpan , 0 , 0 ) ;
 358: LD_ADDR_EXP 4
 362: PUSH
 363: LD_STRING Tarpan
 365: PPUSH
 366: LD_INT 0
 368: PPUSH
 369: LD_INT 0
 371: PPUSH
 372: CALL_OW 527
 376: ST_TO_ADDR
// people_ready = people_ready ^ Tarpan ;
 377: LD_ADDR_VAR 0 5
 381: PUSH
 382: LD_VAR 0 5
 386: PUSH
 387: LD_EXP 4
 391: ADD
 392: ST_TO_ADDR
// end ; uc_nation = 1 ;
 393: LD_ADDR_OWVAR 21
 397: PUSH
 398: LD_INT 1
 400: ST_TO_ADDR
// if CheckCharacterSet ( Oates ) then
 401: LD_STRING Oates
 403: PPUSH
 404: CALL_OW 29
 408: IFFALSE 445
// begin Oates = LoadCharacter ( Oates , 0 , 0 ) ;
 410: LD_ADDR_EXP 3
 414: PUSH
 415: LD_STRING Oates
 417: PPUSH
 418: LD_INT 0
 420: PPUSH
 421: LD_INT 0
 423: PPUSH
 424: CALL_OW 527
 428: ST_TO_ADDR
// people_ready = people_ready ^ Oates ;
 429: LD_ADDR_VAR 0 5
 433: PUSH
 434: LD_VAR 0 5
 438: PUSH
 439: LD_EXP 3
 443: ADD
 444: ST_TO_ADDR
// end ; for i in LoadCharacter ( OtherSaved , 0 , 0 ) do
 445: LD_ADDR_VAR 0 2
 449: PUSH
 450: LD_STRING OtherSaved
 452: PPUSH
 453: LD_INT 0
 455: PPUSH
 456: LD_INT 0
 458: PPUSH
 459: CALL_OW 527
 463: PUSH
 464: FOR_IN
 465: IFFALSE 485
// people_ready = people_ready ^ i ;
 467: LD_ADDR_VAR 0 5
 471: PUSH
 472: LD_VAR 0 5
 476: PUSH
 477: LD_VAR 0 2
 481: ADD
 482: ST_TO_ADDR
 483: GO 464
 485: POP
 486: POP
// for i = 1 to people_ready do
 487: LD_ADDR_VAR 0 2
 491: PUSH
 492: DOUBLE
 493: LD_INT 1
 495: DEC
 496: ST_TO_ADDR
 497: LD_VAR 0 5
 501: PUSH
 502: FOR_TO
 503: IFFALSE 533
// PlaceHumanInUnit ( people_ready [ i ] , vehs_ready [ i ] ) ;
 505: LD_VAR 0 5
 509: PUSH
 510: LD_VAR 0 2
 514: ARRAY
 515: PPUSH
 516: LD_VAR 0 4
 520: PUSH
 521: LD_VAR 0 2
 525: ARRAY
 526: PPUSH
 527: CALL_OW 52
 531: GO 502
 533: POP
 534: POP
// TeamAntoine = people_ready diff Antoine ;
 535: LD_ADDR_EXP 6
 539: PUSH
 540: LD_VAR 0 5
 544: PUSH
 545: LD_EXP 1
 549: DIFF
 550: ST_TO_ADDR
// SetClass ( FindMaxSkill ( TeamAntoine , skill_scientistic ) , class_scientistic ) ;
 551: LD_EXP 6
 555: PPUSH
 556: LD_INT 4
 558: PPUSH
 559: CALL_OW 433
 563: PPUSH
 564: LD_INT 4
 566: PPUSH
 567: CALL_OW 336
// SetClass ( FindMaxSkill ( UnitFilter ( TeamAntoine , [ [ f_nation , nation_arabian ] , [ f_not , [ f_class , class_scientistic ] ] ] ) , skill_engineering ) , class_engineer ) ;
 571: LD_EXP 6
 575: PPUSH
 576: LD_INT 23
 578: PUSH
 579: LD_INT 2
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: PUSH
 586: LD_INT 3
 588: PUSH
 589: LD_INT 25
 591: PUSH
 592: LD_INT 4
 594: PUSH
 595: EMPTY
 596: LIST
 597: LIST
 598: PUSH
 599: EMPTY
 600: LIST
 601: LIST
 602: PUSH
 603: EMPTY
 604: LIST
 605: LIST
 606: PPUSH
 607: CALL_OW 72
 611: PPUSH
 612: LD_INT 2
 614: PPUSH
 615: CALL_OW 433
 619: PPUSH
 620: LD_INT 2
 622: PPUSH
 623: CALL_OW 336
// SetClass ( FindMaxSkill ( UnitFilter ( TeamAntoine , [ [ f_nation , nation_american ] , [ f_not , [ f_class , class_scientistic ] ] ] ) , skill_engineering ) , class_engineer ) ;
 627: LD_EXP 6
 631: PPUSH
 632: LD_INT 23
 634: PUSH
 635: LD_INT 1
 637: PUSH
 638: EMPTY
 639: LIST
 640: LIST
 641: PUSH
 642: LD_INT 3
 644: PUSH
 645: LD_INT 25
 647: PUSH
 648: LD_INT 4
 650: PUSH
 651: EMPTY
 652: LIST
 653: LIST
 654: PUSH
 655: EMPTY
 656: LIST
 657: LIST
 658: PUSH
 659: EMPTY
 660: LIST
 661: LIST
 662: PPUSH
 663: CALL_OW 72
 667: PPUSH
 668: LD_INT 2
 670: PPUSH
 671: CALL_OW 433
 675: PPUSH
 676: LD_INT 2
 678: PPUSH
 679: CALL_OW 336
// end ;
 683: LD_VAR 0 1
 687: RET
// export function SwitchToComputer ; var i , u , x , y ; begin
 688: LD_INT 0
 690: PPUSH
 691: PPUSH
 692: PPUSH
 693: PPUSH
 694: PPUSH
// if TestVariable ( EddingsKilled ) then
 695: LD_STRING EddingsKilled
 697: PPUSH
 698: CALL_OW 27
 702: IFFALSE 914
// begin RemoveUnit ( ut ) ;
 704: LD_INT 84
 706: PPUSH
 707: CALL_OW 64
// bc_type = b_lab_half ;
 711: LD_ADDR_OWVAR 42
 715: PUSH
 716: LD_INT 7
 718: ST_TO_ADDR
// bc_kind1 = b_lab_computer ;
 719: LD_ADDR_OWVAR 44
 723: PUSH
 724: LD_INT 12
 726: ST_TO_ADDR
// bc_kind2 = b_lab_basic ;
 727: LD_ADDR_OWVAR 45
 731: PUSH
 732: LD_INT 9
 734: ST_TO_ADDR
// u = CreateAndPlaceBuildingXYD ( 175 , 90 , 2 ) ;
 735: LD_ADDR_VAR 0 3
 739: PUSH
 740: LD_INT 175
 742: PPUSH
 743: LD_INT 90
 745: PPUSH
 746: LD_INT 2
 748: PPUSH
 749: CALL_OW 47
 753: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_control , control_remote ] ] ) do
 754: LD_ADDR_VAR 0 2
 758: PUSH
 759: LD_INT 22
 761: PUSH
 762: LD_INT 1
 764: PUSH
 765: EMPTY
 766: LIST
 767: LIST
 768: PUSH
 769: LD_INT 33
 771: PUSH
 772: LD_INT 2
 774: PUSH
 775: EMPTY
 776: LIST
 777: LIST
 778: PUSH
 779: EMPTY
 780: LIST
 781: LIST
 782: PPUSH
 783: CALL_OW 69
 787: PUSH
 788: FOR_IN
 789: IFFALSE 910
// begin vc_chassis = GetChassis ( i ) ;
 791: LD_ADDR_OWVAR 37
 795: PUSH
 796: LD_VAR 0 2
 800: PPUSH
 801: CALL_OW 265
 805: ST_TO_ADDR
// vc_engine = engine_siberite ;
 806: LD_ADDR_OWVAR 39
 810: PUSH
 811: LD_INT 3
 813: ST_TO_ADDR
// vc_weapon = GetWeapon ( i ) ;
 814: LD_ADDR_OWVAR 40
 818: PUSH
 819: LD_VAR 0 2
 823: PPUSH
 824: CALL_OW 264
 828: ST_TO_ADDR
// vc_control = control_computer ;
 829: LD_ADDR_OWVAR 38
 833: PUSH
 834: LD_INT 3
 836: ST_TO_ADDR
// x = GetX ( i ) ;
 837: LD_ADDR_VAR 0 4
 841: PUSH
 842: LD_VAR 0 2
 846: PPUSH
 847: CALL_OW 250
 851: ST_TO_ADDR
// y = GetY ( i ) ;
 852: LD_ADDR_VAR 0 5
 856: PUSH
 857: LD_VAR 0 2
 861: PPUSH
 862: CALL_OW 251
 866: ST_TO_ADDR
// RemoveUnit ( i ) ;
 867: LD_VAR 0 2
 871: PPUSH
 872: CALL_OW 64
// u = CreateVehicle ;
 876: LD_ADDR_VAR 0 3
 880: PUSH
 881: CALL_OW 45
 885: ST_TO_ADDR
// PlaceUnitXY ( u , x , y , false ) ;
 886: LD_VAR 0 3
 890: PPUSH
 891: LD_VAR 0 4
 895: PPUSH
 896: LD_VAR 0 5
 900: PPUSH
 901: LD_INT 0
 903: PPUSH
 904: CALL_OW 48
// end ;
 908: GO 788
 910: POP
 911: POP
// end else
 912: GO 921
// RemoveUnit ( computerexte ) ;
 914: LD_INT 231
 916: PPUSH
 917: CALL_OW 64
// end ;
 921: LD_VAR 0 1
 925: RET
// export function SetTechs ; begin
 926: LD_INT 0
 928: PPUSH
// if not TestVariable ( EddingsKilled ) then
 929: LD_STRING EddingsKilled
 931: PPUSH
 932: CALL_OW 27
 936: NOT
 937: IFFALSE 991
// begin SetTech ( tech_RemCont , 8 , state_enabled ) ;
 939: LD_INT 15
 941: PPUSH
 942: LD_INT 8
 944: PPUSH
 945: LD_INT 1
 947: PPUSH
 948: CALL_OW 322
// SetTech ( tech_RemCharge , 8 , state_enabled ) ;
 952: LD_INT 18
 954: PPUSH
 955: LD_INT 8
 957: PPUSH
 958: LD_INT 1
 960: PPUSH
 961: CALL_OW 322
// SetTech ( tech_HidCam , 8 , state_enabled ) ;
 965: LD_INT 17
 967: PPUSH
 968: LD_INT 8
 970: PPUSH
 971: LD_INT 1
 973: PPUSH
 974: CALL_OW 322
// SetRestrict ( b_control_tower , 8 , true ) ;
 978: LD_INT 36
 980: PPUSH
 981: LD_INT 8
 983: PPUSH
 984: LD_INT 1
 986: PPUSH
 987: CALL_OW 324
// end ; end ;
 991: LD_VAR 0 1
 995: RET
// starting begin InGameOn ;
 996: CALL_OW 8
// PrepareOurs ;
1000: CALL 0 0 0
// PrepareAmericans ;
1004: CALL 7998 0 0
// PrepareArabs ;
1008: CALL 3993 0 0
// SetTechs ;
1012: CALL 926 0 0
// CenterNowOnXY ( 10 , 8 ) ;
1016: LD_INT 10
1018: PPUSH
1019: LD_INT 8
1021: PPUSH
1022: CALL_OW 86
// DialogueOn ;
1026: CALL_OW 6
// Wait ( 0 0$1 ) ;
1030: LD_INT 35
1032: PPUSH
1033: CALL_OW 67
// if Oates then
1037: LD_EXP 3
1041: IFFALSE 1057
// Say ( Oates , di-o-1 ) else
1043: LD_EXP 3
1047: PPUSH
1048: LD_STRING di-o-1
1050: PPUSH
1051: CALL_OW 88
1055: GO 1077
// Say ( FindMaxSkill ( TeamAntoine , class_scientistic ) , di-n-1 ) ;
1057: LD_EXP 6
1061: PPUSH
1062: LD_INT 4
1064: PPUSH
1065: CALL_OW 433
1069: PPUSH
1070: LD_STRING di-n-1
1072: PPUSH
1073: CALL_OW 88
// Say ( Antoine , di-a-1 ) ;
1077: LD_EXP 1
1081: PPUSH
1082: LD_STRING di-a-1
1084: PPUSH
1085: CALL_OW 88
// DialogueOff ;
1089: CALL_OW 7
// InGameOff ;
1093: CALL_OW 9
// ChangeMissionObjectives ( OGo ) ;
1097: LD_STRING OGo
1099: PPUSH
1100: CALL_OW 337
// Wait ( 0 0$15 ) ;
1104: LD_INT 525
1106: PPUSH
1107: CALL_OW 67
// DialogueOn ;
1111: CALL_OW 6
// if IsInUnit ( Antoine ) then
1115: LD_EXP 1
1119: PPUSH
1120: CALL_OW 310
1124: IFFALSE 1142
// CenterOnUnits ( IsInUnit ( Antoine ) ) else
1126: LD_EXP 1
1130: PPUSH
1131: CALL_OW 310
1135: PPUSH
1136: CALL_OW 85
1140: GO 1151
// CenterOnUnits ( Antoine ) ;
1142: LD_EXP 1
1146: PPUSH
1147: CALL_OW 85
// DialogueOn ;
1151: CALL_OW 6
// Say ( Antoine , di-a-2 ) ;
1155: LD_EXP 1
1159: PPUSH
1160: LD_STRING di-a-2
1162: PPUSH
1163: CALL_OW 88
// if Ende then
1167: LD_EXP 2
1171: IFFALSE 1185
// Say ( Ende , di-e-1 ) ;
1173: LD_EXP 2
1177: PPUSH
1178: LD_STRING di-e-1
1180: PPUSH
1181: CALL_OW 88
// DialogueOff ;
1185: CALL_OW 7
// SaveForQuickRestart ;
1189: CALL_OW 22
// ChangeMissionObjectives ( ODontKill ) ;
1193: LD_STRING ODontKill
1195: PPUSH
1196: CALL_OW 337
// Query ( QJoiners ) ;
1200: LD_STRING QJoiners
1202: PPUSH
1203: CALL_OW 97
// end ; end_of_file
1207: END
// export SiberiteDecayDone ; export ArabiansOver , USOver ; every 0 0$1 trigger FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_see , 8 ] ] ) and not ArabiansOver do var u ;
1208: LD_INT 2
1210: PPUSH
1211: LD_INT 22
1213: PUSH
1214: LD_INT 1
1216: PUSH
1217: EMPTY
1218: LIST
1219: LIST
1220: PUSH
1221: LD_INT 101
1223: PUSH
1224: LD_INT 8
1226: PUSH
1227: EMPTY
1228: LIST
1229: LIST
1230: PUSH
1231: EMPTY
1232: LIST
1233: LIST
1234: PPUSH
1235: CALL_OW 70
1239: PUSH
1240: LD_EXP 8
1244: NOT
1245: AND
1246: IFFALSE 1410
1248: GO 1250
1250: DISABLE
1251: LD_INT 0
1253: PPUSH
// begin u = WhoDiscovered ( 8 , FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 8 ] ] ) ) ;
1254: LD_ADDR_VAR 0 1
1258: PUSH
1259: LD_INT 8
1261: PPUSH
1262: LD_INT 22
1264: PUSH
1265: LD_INT 1
1267: PUSH
1268: EMPTY
1269: LIST
1270: LIST
1271: PUSH
1272: LD_INT 101
1274: PUSH
1275: LD_INT 8
1277: PUSH
1278: EMPTY
1279: LIST
1280: LIST
1281: PUSH
1282: EMPTY
1283: LIST
1284: LIST
1285: PPUSH
1286: CALL_OW 69
1290: PPUSH
1291: CALL 15938 0 2
1295: ST_TO_ADDR
// DialogueOn ;
1296: CALL_OW 6
// if u = Antoine then
1300: LD_VAR 0 1
1304: PUSH
1305: LD_EXP 1
1309: EQUAL
1310: IFFALSE 1326
// Say ( Antoine , du-a-1a ) else
1312: LD_EXP 1
1316: PPUSH
1317: LD_STRING du-a-1a
1319: PPUSH
1320: CALL_OW 88
1324: GO 1350
// begin Say ( u , du-s-1 ) ;
1326: LD_VAR 0 1
1330: PPUSH
1331: LD_STRING du-s-1
1333: PPUSH
1334: CALL_OW 88
// Say ( Antoine , du-a-1 ) ;
1338: LD_EXP 1
1342: PPUSH
1343: LD_STRING du-a-1
1345: PPUSH
1346: CALL_OW 88
// end ; if IsOK ( Ende ) then
1350: LD_EXP 2
1354: PPUSH
1355: CALL_OW 302
1359: IFFALSE 1375
// Say ( Ende , du-e-1 ) else
1361: LD_EXP 2
1365: PPUSH
1366: LD_STRING du-e-1
1368: PPUSH
1369: CALL_OW 88
1373: GO 1387
// Say ( u , du-s-2 ) ;
1375: LD_VAR 0 1
1379: PPUSH
1380: LD_STRING du-s-2
1382: PPUSH
1383: CALL_OW 88
// Say ( Antoine , du-a-2 ) ;
1387: LD_EXP 1
1391: PPUSH
1392: LD_STRING du-a-2
1394: PPUSH
1395: CALL_OW 88
// DialogueOff ;
1399: CALL_OW 7
// ChangeMissionObjectives ( OArabians ) ;
1403: LD_STRING OArabians
1405: PPUSH
1406: CALL_OW 337
// end ;
1410: PPOPN 1
1412: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 8 ] , [ f_or , [ f_weapon , us_rocket_launcher ] , [ f_bweapon , us_rocket_launcher ] ] ] ) do var m ;
1413: LD_INT 101
1415: PUSH
1416: LD_INT 8
1418: PUSH
1419: EMPTY
1420: LIST
1421: LIST
1422: PUSH
1423: LD_INT 2
1425: PUSH
1426: LD_INT 34
1428: PUSH
1429: LD_INT 7
1431: PUSH
1432: EMPTY
1433: LIST
1434: LIST
1435: PUSH
1436: LD_INT 35
1438: PUSH
1439: LD_INT 7
1441: PUSH
1442: EMPTY
1443: LIST
1444: LIST
1445: PUSH
1446: EMPTY
1447: LIST
1448: LIST
1449: LIST
1450: PUSH
1451: EMPTY
1452: LIST
1453: LIST
1454: PPUSH
1455: CALL_OW 69
1459: IFFALSE 1614
1461: GO 1463
1463: DISABLE
1464: LD_INT 0
1466: PPUSH
// begin m = FindMaxSkill ( TeamAntoine , skill_mechanical ) ;
1467: LD_ADDR_VAR 0 1
1471: PUSH
1472: LD_EXP 6
1476: PPUSH
1477: LD_INT 3
1479: PPUSH
1480: CALL_OW 433
1484: ST_TO_ADDR
// Wait ( 0 0$15 ) ;
1485: LD_INT 525
1487: PPUSH
1488: CALL_OW 67
// DialogueOn ;
1492: CALL_OW 6
// Say ( m , du-m-1 ) ;
1496: LD_VAR 0 1
1500: PPUSH
1501: LD_STRING du-m-1
1503: PPUSH
1504: CALL_OW 88
// if Ende and not m = Ende then
1508: LD_EXP 2
1512: PUSH
1513: LD_VAR 0 1
1517: PUSH
1518: LD_EXP 2
1522: EQUAL
1523: NOT
1524: AND
1525: IFFALSE 1541
// Say ( Ende , du-e-2 ) else
1527: LD_EXP 2
1531: PPUSH
1532: LD_STRING du-e-2
1534: PPUSH
1535: CALL_OW 88
1539: GO 1553
// Say ( Antoine , du-a-3 ) ;
1541: LD_EXP 1
1545: PPUSH
1546: LD_STRING du-a-3
1548: PPUSH
1549: CALL_OW 88
// Say ( m , du-m-2 ) ;
1553: LD_VAR 0 1
1557: PPUSH
1558: LD_STRING du-m-2
1560: PPUSH
1561: CALL_OW 88
// Say ( Antoine , du-a-4 ) ;
1565: LD_EXP 1
1569: PPUSH
1570: LD_STRING du-a-4
1572: PPUSH
1573: CALL_OW 88
// DialogueOff ;
1577: CALL_OW 7
// SetTech ( tech_Rocket , 8 , state_enabled ) ;
1581: LD_INT 40
1583: PPUSH
1584: LD_INT 8
1586: PPUSH
1587: LD_INT 1
1589: PPUSH
1590: CALL_OW 322
// SetRestrict ( b_ext_rocket , 8 , true ) ;
1594: LD_INT 18
1596: PPUSH
1597: LD_INT 8
1599: PPUSH
1600: LD_INT 1
1602: PPUSH
1603: CALL_OW 324
// ChangeMissionObjectives ( ORocket ) ;
1607: LD_STRING ORocket
1609: PPUSH
1610: CALL_OW 337
// end ;
1614: PPOPN 1
1616: END
// export function DRocket ( l ) ; var u ; begin
1617: LD_INT 0
1619: PPUSH
1620: PPUSH
// u = FindMaxSkill ( UnitsInside ( l ) , skill_mechanical ) ;
1621: LD_ADDR_VAR 0 3
1625: PUSH
1626: LD_VAR 0 1
1630: PPUSH
1631: CALL_OW 313
1635: PPUSH
1636: LD_INT 3
1638: PPUSH
1639: CALL_OW 433
1643: ST_TO_ADDR
// if u = Antoine then
1644: LD_VAR 0 3
1648: PUSH
1649: LD_EXP 1
1653: EQUAL
1654: IFFALSE 1674
// u = FindMaxSkill ( TeamAntoine , skill_mechanical ) ;
1656: LD_ADDR_VAR 0 3
1660: PUSH
1661: LD_EXP 6
1665: PPUSH
1666: LD_INT 3
1668: PPUSH
1669: CALL_OW 433
1673: ST_TO_ADDR
// DialogueOn ;
1674: CALL_OW 6
// CenterOnUnits ( l ) ;
1678: LD_VAR 0 1
1682: PPUSH
1683: CALL_OW 85
// if IsInUnit ( u ) = l then
1687: LD_VAR 0 3
1691: PPUSH
1692: CALL_OW 310
1696: PUSH
1697: LD_VAR 0 1
1701: EQUAL
1702: IFFALSE 1718
// Say ( u , du-m-3 ) else
1704: LD_VAR 0 3
1708: PPUSH
1709: LD_STRING du-m-3
1711: PPUSH
1712: CALL_OW 88
1716: GO 1730
// Say ( u , du-m-3a ) ;
1718: LD_VAR 0 3
1722: PPUSH
1723: LD_STRING du-m-3a
1725: PPUSH
1726: CALL_OW 88
// Say ( Antoine , du-a-5 ) ;
1730: LD_EXP 1
1734: PPUSH
1735: LD_STRING du-a-5
1737: PPUSH
1738: CALL_OW 88
// Say ( u , du-m-4 ) ;
1742: LD_VAR 0 3
1746: PPUSH
1747: LD_STRING du-m-4
1749: PPUSH
1750: CALL_OW 88
// DialogueOff ;
1754: CALL_OW 7
// end ;
1758: LD_VAR 0 2
1762: RET
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_or , [ f_weapon , us_rocket_launcher ] , [ f_weapon , ar_rocket_launcher ] , [ f_bweapon , us_rocket_launcher ] , [ f_bweapon , ar_rocket_launcher ] ] ] ) do
1763: LD_INT 22
1765: PUSH
1766: LD_INT 8
1768: PUSH
1769: EMPTY
1770: LIST
1771: LIST
1772: PUSH
1773: LD_INT 2
1775: PUSH
1776: LD_INT 34
1778: PUSH
1779: LD_INT 7
1781: PUSH
1782: EMPTY
1783: LIST
1784: LIST
1785: PUSH
1786: LD_INT 34
1788: PUSH
1789: LD_INT 28
1791: PUSH
1792: EMPTY
1793: LIST
1794: LIST
1795: PUSH
1796: LD_INT 35
1798: PUSH
1799: LD_INT 7
1801: PUSH
1802: EMPTY
1803: LIST
1804: LIST
1805: PUSH
1806: LD_INT 35
1808: PUSH
1809: LD_INT 28
1811: PUSH
1812: EMPTY
1813: LIST
1814: LIST
1815: PUSH
1816: EMPTY
1817: LIST
1818: LIST
1819: LIST
1820: LIST
1821: LIST
1822: PUSH
1823: EMPTY
1824: LIST
1825: LIST
1826: PPUSH
1827: CALL_OW 69
1831: IFFALSE 1843
1833: GO 1835
1835: DISABLE
// ChangeMissionObjectives ( ORocketOut ) ;
1836: LD_STRING ORocketOut
1838: PPUSH
1839: CALL_OW 337
1843: END
// export function DSelfdestruction ( b ) ; var tmp , m , n ; begin
1844: LD_INT 0
1846: PPUSH
1847: PPUSH
1848: PPUSH
1849: PPUSH
// tmp = TeamAntoine diff Ende ;
1850: LD_ADDR_VAR 0 3
1854: PUSH
1855: LD_EXP 6
1859: PUSH
1860: LD_EXP 2
1864: DIFF
1865: ST_TO_ADDR
// m = FindMaxSkill ( tmp , skill_mechanical ) ;
1866: LD_ADDR_VAR 0 4
1870: PUSH
1871: LD_VAR 0 3
1875: PPUSH
1876: LD_INT 3
1878: PPUSH
1879: CALL_OW 433
1883: ST_TO_ADDR
// tmp = tmp diff m ;
1884: LD_ADDR_VAR 0 3
1888: PUSH
1889: LD_VAR 0 3
1893: PUSH
1894: LD_VAR 0 4
1898: DIFF
1899: ST_TO_ADDR
// n = FindMaxSkill ( tmp , skill_scientistic ) ;
1900: LD_ADDR_VAR 0 5
1904: PUSH
1905: LD_VAR 0 3
1909: PPUSH
1910: LD_INT 4
1912: PPUSH
1913: CALL_OW 433
1917: ST_TO_ADDR
// DialogueOn ;
1918: CALL_OW 6
// CenterOnUnits ( b ) ;
1922: LD_VAR 0 1
1926: PPUSH
1927: CALL_OW 85
// Say ( m , db-m-1 ) ;
1931: LD_VAR 0 4
1935: PPUSH
1936: LD_STRING db-m-1
1938: PPUSH
1939: CALL_OW 88
// if IsOK ( Ende ) then
1943: LD_EXP 2
1947: PPUSH
1948: CALL_OW 302
1952: IFFALSE 1968
// Say ( Ende , db-e-1 ) else
1954: LD_EXP 2
1958: PPUSH
1959: LD_STRING db-e-1
1961: PPUSH
1962: CALL_OW 88
1966: GO 1980
// Say ( Antoine , db-a-1a ) ;
1968: LD_EXP 1
1972: PPUSH
1973: LD_STRING db-a-1a
1975: PPUSH
1976: CALL_OW 88
// Say ( m , db-m-2 ) ;
1980: LD_VAR 0 4
1984: PPUSH
1985: LD_STRING db-m-2
1987: PPUSH
1988: CALL_OW 88
// Say ( n , db-n-1 ) ;
1992: LD_VAR 0 5
1996: PPUSH
1997: LD_STRING db-n-1
1999: PPUSH
2000: CALL_OW 88
// Say ( Antoine , db-a-1 ) ;
2004: LD_EXP 1
2008: PPUSH
2009: LD_STRING db-a-1
2011: PPUSH
2012: CALL_OW 88
// Say ( m , db-m-3 ) ;
2016: LD_VAR 0 4
2020: PPUSH
2021: LD_STRING db-m-3
2023: PPUSH
2024: CALL_OW 88
// Say ( Antoine , db-a-2 ) ;
2028: LD_EXP 1
2032: PPUSH
2033: LD_STRING db-a-2
2035: PPUSH
2036: CALL_OW 88
// SetTech ( tech_SelfDest , 8 , state_enabled ) ;
2040: LD_INT 43
2042: PPUSH
2043: LD_INT 8
2045: PPUSH
2046: LD_INT 1
2048: PPUSH
2049: CALL_OW 322
// SetTech ( 72 , 8 , state_enabled ) ;
2053: LD_INT 72
2055: PPUSH
2056: LD_INT 8
2058: PPUSH
2059: LD_INT 1
2061: PPUSH
2062: CALL_OW 322
// DialogueOff ;
2066: CALL_OW 7
// end ;
2070: LD_VAR 0 2
2074: RET
// export ConvosCount , Mercy ; every 0 0$1 trigger FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 8 ] , [ f_see , 2 ] ] ) > 2 do
2075: LD_INT 9
2077: PPUSH
2078: LD_INT 22
2080: PUSH
2081: LD_INT 8
2083: PUSH
2084: EMPTY
2085: LIST
2086: LIST
2087: PUSH
2088: LD_INT 101
2090: PUSH
2091: LD_INT 2
2093: PUSH
2094: EMPTY
2095: LIST
2096: LIST
2097: PUSH
2098: EMPTY
2099: LIST
2100: LIST
2101: PPUSH
2102: CALL_OW 70
2106: PUSH
2107: LD_INT 2
2109: GREATER
2110: IFFALSE 2325
2112: GO 2114
2114: DISABLE
// begin case ConvosCount of 0 :
2115: LD_EXP 10
2119: PUSH
2120: LD_INT 0
2122: DOUBLE
2123: EQUAL
2124: IFTRUE 2128
2126: GO 2272
2128: POP
// begin Say ( Mahmoud , da-m-1 ) ;
2129: LD_EXP 15
2133: PPUSH
2134: LD_STRING da-m-1
2136: PPUSH
2137: CALL_OW 88
// Say ( Antoine , da-a-1 ) ;
2141: LD_EXP 1
2145: PPUSH
2146: LD_STRING da-a-1
2148: PPUSH
2149: CALL_OW 88
// Say ( Mahmoud , da-m-2 ) ;
2153: LD_EXP 15
2157: PPUSH
2158: LD_STRING da-m-2
2160: PPUSH
2161: CALL_OW 88
// ConvosCount = 1 ;
2165: LD_ADDR_EXP 10
2169: PUSH
2170: LD_INT 1
2172: ST_TO_ADDR
// repeat Wait ( 0 0$3 ) until not FilterAllUnits ( [ [ f_side , 8 ] , [ f_see , 2 ] ] ) ;
2173: LD_INT 105
2175: PPUSH
2176: CALL_OW 67
2180: LD_INT 22
2182: PUSH
2183: LD_INT 8
2185: PUSH
2186: EMPTY
2187: LIST
2188: LIST
2189: PUSH
2190: LD_INT 101
2192: PUSH
2193: LD_INT 2
2195: PUSH
2196: EMPTY
2197: LIST
2198: LIST
2199: PUSH
2200: EMPTY
2201: LIST
2202: LIST
2203: PPUSH
2204: CALL_OW 69
2208: NOT
2209: IFFALSE 2173
// if not FilterAllUnits ( [ [ f_side , 8 ] , [ f_type , unit_building ] , [ f_ready ] ] ) then
2211: LD_INT 22
2213: PUSH
2214: LD_INT 8
2216: PUSH
2217: EMPTY
2218: LIST
2219: LIST
2220: PUSH
2221: LD_INT 21
2223: PUSH
2224: LD_INT 3
2226: PUSH
2227: EMPTY
2228: LIST
2229: LIST
2230: PUSH
2231: LD_INT 53
2233: PUSH
2234: EMPTY
2235: LIST
2236: PUSH
2237: EMPTY
2238: LIST
2239: LIST
2240: LIST
2241: PPUSH
2242: CALL_OW 69
2246: NOT
2247: IFFALSE 2269
// begin DialogueOn ;
2249: CALL_OW 6
// Say ( Antoine , dd-a-1 ) ;
2253: LD_EXP 1
2257: PPUSH
2258: LD_STRING dd-a-1
2260: PPUSH
2261: CALL_OW 88
// DialogueOff ;
2265: CALL_OW 7
// end ; enable ;
2269: ENABLE
// end ; 1 :
2270: GO 2325
2272: LD_INT 1
2274: DOUBLE
2275: EQUAL
2276: IFTRUE 2280
2278: GO 2324
2280: POP
// begin disable ;
2281: DISABLE
// Say ( Gom , da-g-1 ) ;
2282: LD_EXP 13
2286: PPUSH
2287: LD_STRING da-g-1
2289: PPUSH
2290: CALL_OW 88
// Say ( FindMaxSkill ( TeamAntoine , skill_combat ) , da-s-1 ) ;
2294: LD_EXP 6
2298: PPUSH
2299: LD_INT 1
2301: PPUSH
2302: CALL_OW 433
2306: PPUSH
2307: LD_STRING da-s-1
2309: PPUSH
2310: CALL_OW 88
// ConvosCount = 2 ;
2314: LD_ADDR_EXP 10
2318: PUSH
2319: LD_INT 2
2321: ST_TO_ADDR
// end ; end ;
2322: GO 2325
2324: POP
// end ;
2325: END
// every 0 0$1 trigger OtherSavedArabs do var i , J , OtherArabs ;
2326: LD_EXP 16
2330: IFFALSE 2704
2332: GO 2334
2334: DISABLE
2335: LD_INT 0
2337: PPUSH
2338: PPUSH
2339: PPUSH
// begin enable ;
2340: ENABLE
// OtherArabs = FilterAllUnits ( [ [ f_side , 2 ] , [ f_ok ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ [ f_type , unit_building ] , [ f_not , [ f_empty ] ] ] ] ] ) diff OtherSavedArabs ;
2341: LD_ADDR_VAR 0 3
2345: PUSH
2346: LD_INT 22
2348: PUSH
2349: LD_INT 2
2351: PUSH
2352: EMPTY
2353: LIST
2354: LIST
2355: PUSH
2356: LD_INT 50
2358: PUSH
2359: EMPTY
2360: LIST
2361: PUSH
2362: LD_INT 2
2364: PUSH
2365: LD_INT 21
2367: PUSH
2368: LD_INT 1
2370: PUSH
2371: EMPTY
2372: LIST
2373: LIST
2374: PUSH
2375: LD_INT 21
2377: PUSH
2378: LD_INT 2
2380: PUSH
2381: EMPTY
2382: LIST
2383: LIST
2384: PUSH
2385: LD_INT 21
2387: PUSH
2388: LD_INT 3
2390: PUSH
2391: EMPTY
2392: LIST
2393: LIST
2394: PUSH
2395: LD_INT 3
2397: PUSH
2398: LD_INT 58
2400: PUSH
2401: EMPTY
2402: LIST
2403: PUSH
2404: EMPTY
2405: LIST
2406: LIST
2407: PUSH
2408: EMPTY
2409: LIST
2410: LIST
2411: PUSH
2412: EMPTY
2413: LIST
2414: LIST
2415: LIST
2416: LIST
2417: PUSH
2418: EMPTY
2419: LIST
2420: LIST
2421: LIST
2422: PPUSH
2423: CALL_OW 69
2427: PUSH
2428: LD_EXP 16
2432: DIFF
2433: ST_TO_ADDR
// for i in OtherSavedArabs do
2434: LD_ADDR_VAR 0 1
2438: PUSH
2439: LD_EXP 16
2443: PUSH
2444: FOR_IN
2445: IFFALSE 2702
// if See ( 8 , i ) and not IsInUnit ( i ) and not UnitFilter ( OtherArabs , [ f_dist , i , 9 ] ) and GetSide ( i ) = 2 then
2447: LD_INT 8
2449: PPUSH
2450: LD_VAR 0 1
2454: PPUSH
2455: CALL_OW 292
2459: PUSH
2460: LD_VAR 0 1
2464: PPUSH
2465: CALL_OW 310
2469: NOT
2470: AND
2471: PUSH
2472: LD_VAR 0 3
2476: PPUSH
2477: LD_INT 91
2479: PUSH
2480: LD_VAR 0 1
2484: PUSH
2485: LD_INT 9
2487: PUSH
2488: EMPTY
2489: LIST
2490: LIST
2491: LIST
2492: PPUSH
2493: CALL_OW 72
2497: NOT
2498: AND
2499: PUSH
2500: LD_VAR 0 1
2504: PPUSH
2505: CALL_OW 255
2509: PUSH
2510: LD_INT 2
2512: EQUAL
2513: AND
2514: IFFALSE 2700
// begin DialogueOn ;
2516: CALL_OW 6
// CenterOnUnits ( i ) ;
2520: LD_VAR 0 1
2524: PPUSH
2525: CALL_OW 85
// case GetSex ( i ) of sex_male :
2529: LD_VAR 0 1
2533: PPUSH
2534: CALL_OW 258
2538: PUSH
2539: LD_INT 1
2541: DOUBLE
2542: EQUAL
2543: IFTRUE 2547
2545: GO 2585
2547: POP
// Say ( i , [ dt-x-1 , dt-x-2 , dt-x-3 ] [ Rand ( 1 , 3 ) ] ) ; sex_female :
2548: LD_VAR 0 1
2552: PPUSH
2553: LD_STRING dt-x-1
2555: PUSH
2556: LD_STRING dt-x-2
2558: PUSH
2559: LD_STRING dt-x-3
2561: PUSH
2562: EMPTY
2563: LIST
2564: LIST
2565: LIST
2566: PUSH
2567: LD_INT 1
2569: PPUSH
2570: LD_INT 3
2572: PPUSH
2573: CALL_OW 12
2577: ARRAY
2578: PPUSH
2579: CALL_OW 88
2583: GO 2632
2585: LD_INT 2
2587: DOUBLE
2588: EQUAL
2589: IFTRUE 2593
2591: GO 2631
2593: POP
// Say ( i , [ dt-x-4 , dt-x-5 , dt-x-6 ] [ Rand ( 1 , 3 ) ] ) ; end ;
2594: LD_VAR 0 1
2598: PPUSH
2599: LD_STRING dt-x-4
2601: PUSH
2602: LD_STRING dt-x-5
2604: PUSH
2605: LD_STRING dt-x-6
2607: PUSH
2608: EMPTY
2609: LIST
2610: LIST
2611: LIST
2612: PUSH
2613: LD_INT 1
2615: PPUSH
2616: LD_INT 3
2618: PPUSH
2619: CALL_OW 12
2623: ARRAY
2624: PPUSH
2625: CALL_OW 88
2629: GO 2632
2631: POP
// SetSide ( i , 8 ) ;
2632: LD_VAR 0 1
2636: PPUSH
2637: LD_INT 8
2639: PPUSH
2640: CALL_OW 235
// OtherSavedArabs = OtherSavedArabs diff i ;
2644: LD_ADDR_EXP 16
2648: PUSH
2649: LD_EXP 16
2653: PUSH
2654: LD_VAR 0 1
2658: DIFF
2659: ST_TO_ADDR
// DialogueOff ;
2660: CALL_OW 7
// for j in GetUnitMc ( i ) do
2664: LD_ADDR_VAR 0 2
2668: PUSH
2669: LD_VAR 0 1
2673: PPUSH
2674: CALL_OW 388
2678: PUSH
2679: FOR_IN
2680: IFFALSE 2698
// RemoveMcUnits ( j , i ) ;
2682: LD_VAR 0 2
2686: PPUSH
2687: LD_VAR 0 1
2691: PPUSH
2692: CALL_OW 391
2696: GO 2679
2698: POP
2699: POP
// end ;
2700: GO 2444
2702: POP
2703: POP
// end ;
2704: PPOPN 3
2706: END
// export function DArabiansOver ; var i ; begin
2707: LD_INT 0
2709: PPUSH
2710: PPUSH
// ArabiansOver = true ;
2711: LD_ADDR_EXP 8
2715: PUSH
2716: LD_INT 1
2718: ST_TO_ADDR
// CenterOnXY ( 72 , 84 ) ;
2719: LD_INT 72
2721: PPUSH
2722: LD_INT 84
2724: PPUSH
2725: CALL_OW 84
// DialogueOn ;
2729: CALL_OW 6
// if UnitFilter ( OtherSavedArabs , [ f_ok ] ) then
2733: LD_EXP 16
2737: PPUSH
2738: LD_INT 50
2740: PUSH
2741: EMPTY
2742: LIST
2743: PPUSH
2744: CALL_OW 72
2748: IFFALSE 2969
// begin SetSide ( OtherSavedArabs , 8 ) ;
2750: LD_EXP 16
2754: PPUSH
2755: LD_INT 8
2757: PPUSH
2758: CALL_OW 235
// SetSide ( FilterUnitsInArea ( ArabianBaseArea , [ f_type , unit_building ] ) , 8 ) ;
2762: LD_INT 11
2764: PPUSH
2765: LD_INT 21
2767: PUSH
2768: LD_INT 3
2770: PUSH
2771: EMPTY
2772: LIST
2773: LIST
2774: PPUSH
2775: CALL_OW 70
2779: PPUSH
2780: LD_INT 8
2782: PPUSH
2783: CALL_OW 235
// if IsOK ( Gom ) and IsOK ( Kuronski ) then
2787: LD_EXP 13
2791: PPUSH
2792: CALL_OW 302
2796: PUSH
2797: LD_EXP 14
2801: PPUSH
2802: CALL_OW 302
2806: AND
2807: IFFALSE 2940
// begin Say ( UnitFilter ( OtherSavedArabs , [ f_ok ] ) [ 1 ] , da-x-1a ) ;
2809: LD_EXP 16
2813: PPUSH
2814: LD_INT 50
2816: PUSH
2817: EMPTY
2818: LIST
2819: PPUSH
2820: CALL_OW 72
2824: PUSH
2825: LD_INT 1
2827: ARRAY
2828: PPUSH
2829: LD_STRING da-x-1a
2831: PPUSH
2832: CALL_OW 88
// case Query ( QCleanse ) of 1 :
2836: LD_STRING QCleanse
2838: PPUSH
2839: CALL_OW 97
2843: PUSH
2844: LD_INT 1
2846: DOUBLE
2847: EQUAL
2848: IFTRUE 2852
2850: GO 2875
2852: POP
// begin Say ( Antoine , da-a-3 ) ;
2853: LD_EXP 1
2857: PPUSH
2858: LD_STRING da-a-3
2860: PPUSH
2861: CALL_OW 88
// Mercy = true ;
2865: LD_ADDR_EXP 11
2869: PUSH
2870: LD_INT 1
2872: ST_TO_ADDR
// end ; 2 :
2873: GO 2938
2875: LD_INT 2
2877: DOUBLE
2878: EQUAL
2879: IFTRUE 2883
2881: GO 2937
2883: POP
// begin Say ( Antoine , da-a-3a ) ;
2884: LD_EXP 1
2888: PPUSH
2889: LD_STRING da-a-3a
2891: PPUSH
2892: CALL_OW 88
// ComExitBuilding ( Gom ) ;
2896: LD_EXP 13
2900: PPUSH
2901: CALL_OW 122
// ComExitBuilding ( Kuronski ) ;
2905: LD_EXP 14
2909: PPUSH
2910: CALL_OW 122
// SetSide ( [ Kuronski , Gom ] , 5 ) ;
2914: LD_EXP 14
2918: PUSH
2919: LD_EXP 13
2923: PUSH
2924: EMPTY
2925: LIST
2926: LIST
2927: PPUSH
2928: LD_INT 5
2930: PPUSH
2931: CALL_OW 235
// end ; end ;
2935: GO 2938
2937: POP
// end else
2938: GO 2967
// Say ( UnitFilter ( OtherSavedArabs , [ f_ok ] ) [ 1 ] , da-x-1 ) ;
2940: LD_EXP 16
2944: PPUSH
2945: LD_INT 50
2947: PUSH
2948: EMPTY
2949: LIST
2950: PPUSH
2951: CALL_OW 72
2955: PUSH
2956: LD_INT 1
2958: ARRAY
2959: PPUSH
2960: LD_STRING da-x-1
2962: PPUSH
2963: CALL_OW 88
// end else
2967: GO 3235
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_not , [ f_nation , nation_nature ] ] , [ f_type , unit_human ] , [ f_ok ] ] ) then
2969: LD_INT 22
2971: PUSH
2972: LD_INT 2
2974: PUSH
2975: EMPTY
2976: LIST
2977: LIST
2978: PUSH
2979: LD_INT 3
2981: PUSH
2982: LD_INT 23
2984: PUSH
2985: LD_INT 0
2987: PUSH
2988: EMPTY
2989: LIST
2990: LIST
2991: PUSH
2992: EMPTY
2993: LIST
2994: LIST
2995: PUSH
2996: LD_INT 21
2998: PUSH
2999: LD_INT 1
3001: PUSH
3002: EMPTY
3003: LIST
3004: LIST
3005: PUSH
3006: LD_INT 50
3008: PUSH
3009: EMPTY
3010: LIST
3011: PUSH
3012: EMPTY
3013: LIST
3014: LIST
3015: LIST
3016: LIST
3017: PPUSH
3018: CALL_OW 69
3022: IFFALSE 3223
// begin Say ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_not , [ f_nation , nation_nature ] ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] , da-x-1b ) ;
3024: LD_INT 22
3026: PUSH
3027: LD_INT 2
3029: PUSH
3030: EMPTY
3031: LIST
3032: LIST
3033: PUSH
3034: LD_INT 3
3036: PUSH
3037: LD_INT 23
3039: PUSH
3040: LD_INT 0
3042: PUSH
3043: EMPTY
3044: LIST
3045: LIST
3046: PUSH
3047: EMPTY
3048: LIST
3049: LIST
3050: PUSH
3051: LD_INT 21
3053: PUSH
3054: LD_INT 1
3056: PUSH
3057: EMPTY
3058: LIST
3059: LIST
3060: PUSH
3061: LD_INT 50
3063: PUSH
3064: EMPTY
3065: LIST
3066: PUSH
3067: EMPTY
3068: LIST
3069: LIST
3070: LIST
3071: LIST
3072: PPUSH
3073: CALL_OW 69
3077: PUSH
3078: LD_INT 1
3080: ARRAY
3081: PPUSH
3082: LD_STRING da-x-1b
3084: PPUSH
3085: CALL_OW 88
// case Query ( QMercy ) of 1 :
3089: LD_STRING QMercy
3091: PPUSH
3092: CALL_OW 97
3096: PUSH
3097: LD_INT 1
3099: DOUBLE
3100: EQUAL
3101: IFTRUE 3105
3103: GO 3120
3105: POP
// Say ( Antoine , da-a-4 ) ; 2 :
3106: LD_EXP 1
3110: PPUSH
3111: LD_STRING da-a-4
3113: PPUSH
3114: CALL_OW 88
3118: GO 3221
3120: LD_INT 2
3122: DOUBLE
3123: EQUAL
3124: IFTRUE 3128
3126: GO 3220
3128: POP
// begin Say ( Antoine , da-a-4a ) ;
3129: LD_EXP 1
3133: PPUSH
3134: LD_STRING da-a-4a
3136: PPUSH
3137: CALL_OW 88
// Say ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_not , [ f_nation , nation_nature ] ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] , da-x-2 ) ;
3141: LD_INT 22
3143: PUSH
3144: LD_INT 2
3146: PUSH
3147: EMPTY
3148: LIST
3149: LIST
3150: PUSH
3151: LD_INT 3
3153: PUSH
3154: LD_INT 23
3156: PUSH
3157: LD_INT 0
3159: PUSH
3160: EMPTY
3161: LIST
3162: LIST
3163: PUSH
3164: EMPTY
3165: LIST
3166: LIST
3167: PUSH
3168: LD_INT 21
3170: PUSH
3171: LD_INT 1
3173: PUSH
3174: EMPTY
3175: LIST
3176: LIST
3177: PUSH
3178: LD_INT 50
3180: PUSH
3181: EMPTY
3182: LIST
3183: PUSH
3184: EMPTY
3185: LIST
3186: LIST
3187: LIST
3188: LIST
3189: PPUSH
3190: CALL_OW 69
3194: PUSH
3195: LD_INT 1
3197: ARRAY
3198: PPUSH
3199: LD_STRING da-x-2
3201: PPUSH
3202: CALL_OW 88
// Say ( Antoine , da-a-5 ) ;
3206: LD_EXP 1
3210: PPUSH
3211: LD_STRING da-a-5
3213: PPUSH
3214: CALL_OW 88
// end ; end ;
3218: GO 3221
3220: POP
// end else
3221: GO 3235
// Say ( Antoine , da-a-6 ) ;
3223: LD_EXP 1
3227: PPUSH
3228: LD_STRING da-a-6
3230: PPUSH
3231: CALL_OW 88
// DialogueOff ;
3235: CALL_OW 7
// SetAttitude ( 2 , 8 , att_friend , true ) ;
3239: LD_INT 2
3241: PPUSH
3242: LD_INT 8
3244: PPUSH
3245: LD_INT 1
3247: PPUSH
3248: LD_INT 1
3250: PPUSH
3251: CALL_OW 80
// ChangeMissionObjectives ( OMahmoudOut ) ;
3255: LD_STRING OMahmoudOut
3257: PPUSH
3258: CALL_OW 337
// end ;
3262: LD_VAR 0 1
3266: RET
// export function DWhatAboutAmericans ; begin
3267: LD_INT 0
3269: PPUSH
// DialogueOn ;
3270: CALL_OW 6
// Say ( UnitFilter ( TeamAntoine , [ f_ok ] ) [ 1 ] , dw-s-1 ) ;
3274: LD_EXP 6
3278: PPUSH
3279: LD_INT 50
3281: PUSH
3282: EMPTY
3283: LIST
3284: PPUSH
3285: CALL_OW 72
3289: PUSH
3290: LD_INT 1
3292: ARRAY
3293: PPUSH
3294: LD_STRING dw-s-1
3296: PPUSH
3297: CALL_OW 88
// Say ( Antoine , dw-a-1 ) ;
3301: LD_EXP 1
3305: PPUSH
3306: LD_STRING dw-a-1
3308: PPUSH
3309: CALL_OW 88
// if Steve then
3313: LD_EXP 29
3317: IFFALSE 3333
// SayRadio ( Steve , dw-c-1 ) else
3319: LD_EXP 29
3323: PPUSH
3324: LD_STRING dw-c-1
3326: PPUSH
3327: CALL_OW 94
3331: GO 3391
// SayRadio ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_sex , sex_male ] , [ f_ok ] , [ f_class , class_soldier ] ] ) [ 1 ] , dw-c-1 ) ;
3333: LD_INT 22
3335: PUSH
3336: LD_INT 1
3338: PUSH
3339: EMPTY
3340: LIST
3341: LIST
3342: PUSH
3343: LD_INT 26
3345: PUSH
3346: LD_INT 1
3348: PUSH
3349: EMPTY
3350: LIST
3351: LIST
3352: PUSH
3353: LD_INT 50
3355: PUSH
3356: EMPTY
3357: LIST
3358: PUSH
3359: LD_INT 25
3361: PUSH
3362: LD_INT 1
3364: PUSH
3365: EMPTY
3366: LIST
3367: LIST
3368: PUSH
3369: EMPTY
3370: LIST
3371: LIST
3372: LIST
3373: LIST
3374: PPUSH
3375: CALL_OW 69
3379: PUSH
3380: LD_INT 1
3382: ARRAY
3383: PPUSH
3384: LD_STRING dw-c-1
3386: PPUSH
3387: CALL_OW 94
// DWait ( 0 0$1 ) ;
3391: LD_INT 35
3393: PPUSH
3394: CALL_OW 68
// if IsOK ( Ende ) then
3398: LD_EXP 2
3402: PPUSH
3403: CALL_OW 302
3407: IFFALSE 3421
// Say ( Ende , dw-e-1 ) ;
3409: LD_EXP 2
3413: PPUSH
3414: LD_STRING dw-e-1
3416: PPUSH
3417: CALL_OW 88
// Say ( UnitFilter ( TeamAntoine diff Ende , [ f_ok ] ) [ 1 ] , dw-s-2 ) ;
3421: LD_EXP 6
3425: PUSH
3426: LD_EXP 2
3430: DIFF
3431: PPUSH
3432: LD_INT 50
3434: PUSH
3435: EMPTY
3436: LIST
3437: PPUSH
3438: CALL_OW 72
3442: PUSH
3443: LD_INT 1
3445: ARRAY
3446: PPUSH
3447: LD_STRING dw-s-2
3449: PPUSH
3450: CALL_OW 88
// Say ( Antoine , dw-a-2 ) ;
3454: LD_EXP 1
3458: PPUSH
3459: LD_STRING dw-a-2
3461: PPUSH
3462: CALL_OW 88
// DialogueOff ;
3466: CALL_OW 7
// ChangeMissionObjectives ( OAmericans ) ;
3470: LD_STRING OAmericans
3472: PPUSH
3473: CALL_OW 337
// end ;
3477: LD_VAR 0 1
3481: RET
// export function DWhatAboutSiberite ; begin
3482: LD_INT 0
3484: PPUSH
// Wait ( 0 0$15 ) ;
3485: LD_INT 525
3487: PPUSH
3488: CALL_OW 67
// DialogueOn ;
3492: CALL_OW 6
// if USOver then
3496: LD_EXP 9
3500: IFFALSE 3535
// Say ( FindMaxSkill ( UnitFilter ( TeamAntoine , [ f_ok ] ) , skill_scientistic ) , ds-x-1a ) else
3502: LD_EXP 6
3506: PPUSH
3507: LD_INT 50
3509: PUSH
3510: EMPTY
3511: LIST
3512: PPUSH
3513: CALL_OW 72
3517: PPUSH
3518: LD_INT 4
3520: PPUSH
3521: CALL_OW 433
3525: PPUSH
3526: LD_STRING ds-x-1a
3528: PPUSH
3529: CALL_OW 88
3533: GO 3566
// Say ( FindMaxSkill ( UnitFilter ( TeamAntoine , [ f_ok ] ) , skill_scientistic ) , ds-x-1 ) ;
3535: LD_EXP 6
3539: PPUSH
3540: LD_INT 50
3542: PUSH
3543: EMPTY
3544: LIST
3545: PPUSH
3546: CALL_OW 72
3550: PPUSH
3551: LD_INT 4
3553: PPUSH
3554: CALL_OW 433
3558: PPUSH
3559: LD_STRING ds-x-1
3561: PPUSH
3562: CALL_OW 88
// Say ( Antoine , ds-a-1 ) ;
3566: LD_EXP 1
3570: PPUSH
3571: LD_STRING ds-a-1
3573: PPUSH
3574: CALL_OW 88
// Say ( FindMaxSkill ( UnitFilter ( TeamAntoine , [ f_ok ] ) , skill_scientistic ) , ds-x-2 ) ;
3578: LD_EXP 6
3582: PPUSH
3583: LD_INT 50
3585: PUSH
3586: EMPTY
3587: LIST
3588: PPUSH
3589: CALL_OW 72
3593: PPUSH
3594: LD_INT 4
3596: PPUSH
3597: CALL_OW 433
3601: PPUSH
3602: LD_STRING ds-x-2
3604: PPUSH
3605: CALL_OW 88
// Say ( Antoine , ds-a-2 ) ;
3609: LD_EXP 1
3613: PPUSH
3614: LD_STRING ds-a-2
3616: PPUSH
3617: CALL_OW 88
// DialogueOff ;
3621: CALL_OW 7
// SetTech ( tech_SibContam , 8 , state_enabled ) ;
3625: LD_INT 26
3627: PPUSH
3628: LD_INT 8
3630: PPUSH
3631: LD_INT 1
3633: PPUSH
3634: CALL_OW 322
// ChangeMissionObjectives ( OSiberite ) ;
3638: LD_STRING OSiberite
3640: PPUSH
3641: CALL_OW 337
// end ;
3645: LD_VAR 0 1
3649: RET
// every 0 0$1 trigger FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 8 ] , [ f_ok ] ] ) > 2 do
3650: LD_INT 2
3652: PPUSH
3653: LD_INT 22
3655: PUSH
3656: LD_INT 8
3658: PUSH
3659: EMPTY
3660: LIST
3661: LIST
3662: PUSH
3663: LD_INT 50
3665: PUSH
3666: EMPTY
3667: LIST
3668: PUSH
3669: EMPTY
3670: LIST
3671: LIST
3672: PPUSH
3673: CALL_OW 70
3677: PUSH
3678: LD_INT 2
3680: GREATER
3681: IFFALSE 3735
3683: GO 3685
3685: DISABLE
// begin Say ( Steve , dh-c-1 ) ;
3686: LD_EXP 29
3690: PPUSH
3691: LD_STRING dh-c-1
3693: PPUSH
3694: CALL_OW 88
// if IsOK ( Mahmoud ) then
3698: LD_EXP 15
3702: PPUSH
3703: CALL_OW 302
3707: IFFALSE 3723
// Say ( Antoine , dh-a-1a ) else
3709: LD_EXP 1
3713: PPUSH
3714: LD_STRING dh-a-1a
3716: PPUSH
3717: CALL_OW 88
3721: GO 3735
// Say ( Antoine , dh-a-1a ) ;
3723: LD_EXP 1
3727: PPUSH
3728: LD_STRING dh-a-1a
3730: PPUSH
3731: CALL_OW 88
// end ;
3735: END
// every 0 0$1 trigger FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_or , [ f_btype , b_warehouse ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) = 0 do
3736: LD_INT 2
3738: PPUSH
3739: LD_INT 22
3741: PUSH
3742: LD_INT 1
3744: PUSH
3745: EMPTY
3746: LIST
3747: LIST
3748: PUSH
3749: LD_INT 2
3751: PUSH
3752: LD_INT 30
3754: PUSH
3755: LD_INT 1
3757: PUSH
3758: EMPTY
3759: LIST
3760: LIST
3761: PUSH
3762: LD_INT 21
3764: PUSH
3765: LD_INT 1
3767: PUSH
3768: EMPTY
3769: LIST
3770: LIST
3771: PUSH
3772: LD_INT 21
3774: PUSH
3775: LD_INT 2
3777: PUSH
3778: EMPTY
3779: LIST
3780: LIST
3781: PUSH
3782: EMPTY
3783: LIST
3784: LIST
3785: LIST
3786: LIST
3787: PUSH
3788: EMPTY
3789: LIST
3790: LIST
3791: PPUSH
3792: CALL_OW 70
3796: PUSH
3797: LD_INT 0
3799: EQUAL
3800: IFFALSE 3831
3802: GO 3804
3804: DISABLE
// begin USOver = true ;
3805: LD_ADDR_EXP 9
3809: PUSH
3810: LD_INT 1
3812: ST_TO_ADDR
// if IsOK ( Mahmoud ) then
3813: LD_EXP 15
3817: PPUSH
3818: CALL_OW 302
3822: IFFALSE 3831
// ChangeMissionObjectives ( OHillOut ) ;
3824: LD_STRING OHillOut
3826: PPUSH
3827: CALL_OW 337
// end ;
3831: END
// on SibDepositContaminated ( sci , x , y ) do begin if GetSide ( sci ) = 2 then
3832: LD_VAR 0 1
3836: PPUSH
3837: CALL_OW 255
3841: PUSH
3842: LD_INT 2
3844: EQUAL
3845: IFFALSE 3920
// begin DialogueOn ;
3847: CALL_OW 6
// PlaceSeeing ( x , y , 8 , 12 ) ;
3851: LD_VAR 0 2
3855: PPUSH
3856: LD_VAR 0 3
3860: PPUSH
3861: LD_INT 8
3863: PPUSH
3864: LD_INT 12
3866: PPUSH
3867: CALL_OW 330
// CenterOnXY ( x , y ) ;
3871: LD_VAR 0 2
3875: PPUSH
3876: LD_VAR 0 3
3880: PPUSH
3881: CALL_OW 84
// SayRadio ( sci , dx-x-1 ) ;
3885: LD_VAR 0 1
3889: PPUSH
3890: LD_STRING dx-x-1
3892: PPUSH
3893: CALL_OW 94
// Say ( Antoine , dx-a-1 ) ;
3897: LD_EXP 1
3901: PPUSH
3902: LD_STRING dx-a-1
3904: PPUSH
3905: CALL_OW 88
// DialogueOff ;
3909: CALL_OW 7
// YouLost ( Armageddon ) ;
3913: LD_STRING Armageddon
3915: PPUSH
3916: CALL_OW 104
// end ; if GetSide ( sci ) = 8 and IsInArea ( sci , AmericanBaseArea ) then
3920: LD_VAR 0 1
3924: PPUSH
3925: CALL_OW 255
3929: PUSH
3930: LD_INT 8
3932: EQUAL
3933: PUSH
3934: LD_VAR 0 1
3938: PPUSH
3939: LD_INT 2
3941: PPUSH
3942: CALL_OW 308
3946: AND
3947: IFFALSE 3990
// begin DialogueOn ;
3949: CALL_OW 6
// CenterOnXY ( x , y ) ;
3953: LD_VAR 0 2
3957: PPUSH
3958: LD_VAR 0 3
3962: PPUSH
3963: CALL_OW 84
// Say ( Antoine , dx-a-1a ) ;
3967: LD_EXP 1
3971: PPUSH
3972: LD_STRING dx-a-1a
3974: PPUSH
3975: CALL_OW 88
// DialogueOff ;
3979: CALL_OW 7
// YouLost ( OwnArmageddon ) ;
3983: LD_STRING OwnArmageddon
3985: PPUSH
3986: CALL_OW 104
// end ; end ; end_of_file
3990: PPOPN 3
3992: END
// export Bojan , Gom , Kuronski , Mahmoud ; export OtherSavedArabs , AntoineSpottedByArabians ; export function PrepareArabs ; var i , h , u ; var cams ; begin
3993: LD_INT 0
3995: PPUSH
3996: PPUSH
3997: PPUSH
3998: PPUSH
3999: PPUSH
// uc_side = 2 ;
4000: LD_ADDR_OWVAR 20
4004: PUSH
4005: LD_INT 2
4007: ST_TO_ADDR
// uc_nation = nation_arabian ;
4008: LD_ADDR_OWVAR 21
4012: PUSH
4013: LD_INT 2
4015: ST_TO_ADDR
// OtherSavedArabs = LoadCharacter ( TeamAntoine , 0 , 0 ) ^ LoadCharacter ( TeamGom , 0 , 0 ) ;
4016: LD_ADDR_EXP 16
4020: PUSH
4021: LD_STRING TeamAntoine
4023: PPUSH
4024: LD_INT 0
4026: PPUSH
4027: LD_INT 0
4029: PPUSH
4030: CALL_OW 527
4034: PUSH
4035: LD_STRING TeamGom
4037: PPUSH
4038: LD_INT 0
4040: PPUSH
4041: LD_INT 0
4043: PPUSH
4044: CALL_OW 527
4048: ADD
4049: ST_TO_ADDR
// for i in OtherSavedArabs do
4050: LD_ADDR_VAR 0 2
4054: PUSH
4055: LD_EXP 16
4059: PUSH
4060: FOR_IN
4061: IFFALSE 4297
// case GetClass ( i ) of class_soldier , class_mortar :
4063: LD_VAR 0 2
4067: PPUSH
4068: CALL_OW 257
4072: PUSH
4073: LD_INT 1
4075: DOUBLE
4076: EQUAL
4077: IFTRUE 4087
4079: LD_INT 8
4081: DOUBLE
4082: EQUAL
4083: IFTRUE 4087
4085: GO 4216
4087: POP
// PlaceHumanInUnit ( i , FilterAllUnits ( [ [ f_side , 2 ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_barracks ] ] ] ) [ Rand ( 1 , FilterAllUnits ( [ [ f_side , 2 ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_barracks ] ] ] ) ) ] ) ; class_engineer :
4088: LD_VAR 0 2
4092: PPUSH
4093: LD_INT 22
4095: PUSH
4096: LD_INT 2
4098: PUSH
4099: EMPTY
4100: LIST
4101: LIST
4102: PUSH
4103: LD_INT 58
4105: PUSH
4106: EMPTY
4107: LIST
4108: PUSH
4109: LD_INT 2
4111: PUSH
4112: LD_INT 30
4114: PUSH
4115: LD_INT 31
4117: PUSH
4118: EMPTY
4119: LIST
4120: LIST
4121: PUSH
4122: LD_INT 30
4124: PUSH
4125: LD_INT 5
4127: PUSH
4128: EMPTY
4129: LIST
4130: LIST
4131: PUSH
4132: EMPTY
4133: LIST
4134: LIST
4135: LIST
4136: PUSH
4137: EMPTY
4138: LIST
4139: LIST
4140: LIST
4141: PPUSH
4142: CALL_OW 69
4146: PUSH
4147: LD_INT 1
4149: PPUSH
4150: LD_INT 22
4152: PUSH
4153: LD_INT 2
4155: PUSH
4156: EMPTY
4157: LIST
4158: LIST
4159: PUSH
4160: LD_INT 58
4162: PUSH
4163: EMPTY
4164: LIST
4165: PUSH
4166: LD_INT 2
4168: PUSH
4169: LD_INT 30
4171: PUSH
4172: LD_INT 31
4174: PUSH
4175: EMPTY
4176: LIST
4177: LIST
4178: PUSH
4179: LD_INT 30
4181: PUSH
4182: LD_INT 5
4184: PUSH
4185: EMPTY
4186: LIST
4187: LIST
4188: PUSH
4189: EMPTY
4190: LIST
4191: LIST
4192: LIST
4193: PUSH
4194: EMPTY
4195: LIST
4196: LIST
4197: LIST
4198: PPUSH
4199: CALL_OW 69
4203: PPUSH
4204: CALL_OW 12
4208: ARRAY
4209: PPUSH
4210: CALL_OW 52
4214: GO 4295
4216: LD_INT 2
4218: DOUBLE
4219: EQUAL
4220: IFTRUE 4224
4222: GO 4248
4224: POP
// PlaceUnitXYR ( i , 72 , 85 , 3 , false ) ; class_mechanic :
4225: LD_VAR 0 2
4229: PPUSH
4230: LD_INT 72
4232: PPUSH
4233: LD_INT 85
4235: PPUSH
4236: LD_INT 3
4238: PPUSH
4239: LD_INT 0
4241: PPUSH
4242: CALL_OW 50
4246: GO 4295
4248: LD_INT 3
4250: DOUBLE
4251: EQUAL
4252: IFTRUE 4256
4254: GO 4271
4256: POP
// PlaceHumanInUnit ( i , af ) ; class_scientistic :
4257: LD_VAR 0 2
4261: PPUSH
4262: LD_INT 10
4264: PPUSH
4265: CALL_OW 52
4269: GO 4295
4271: LD_INT 4
4273: DOUBLE
4274: EQUAL
4275: IFTRUE 4279
4277: GO 4294
4279: POP
// PlaceHumanInUnit ( i , al2 ) ; end ;
4280: LD_VAR 0 2
4284: PPUSH
4285: LD_INT 16
4287: PPUSH
4288: CALL_OW 52
4292: GO 4295
4294: POP
4295: GO 4060
4297: POP
4298: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) do
4299: LD_ADDR_VAR 0 2
4303: PUSH
4304: LD_INT 22
4306: PUSH
4307: LD_INT 2
4309: PUSH
4310: EMPTY
4311: LIST
4312: LIST
4313: PUSH
4314: LD_INT 2
4316: PUSH
4317: LD_INT 30
4319: PUSH
4320: LD_INT 31
4322: PUSH
4323: EMPTY
4324: LIST
4325: LIST
4326: PUSH
4327: LD_INT 30
4329: PUSH
4330: LD_INT 32
4332: PUSH
4333: EMPTY
4334: LIST
4335: LIST
4336: PUSH
4337: EMPTY
4338: LIST
4339: LIST
4340: LIST
4341: PUSH
4342: EMPTY
4343: LIST
4344: LIST
4345: PPUSH
4346: CALL_OW 69
4350: PUSH
4351: FOR_IN
4352: IFFALSE 4517
// begin InitHc ;
4354: CALL_OW 19
// case GetBType ( i ) of b_breastwork :
4358: LD_VAR 0 2
4362: PPUSH
4363: CALL_OW 266
4367: PUSH
4368: LD_INT 31
4370: DOUBLE
4371: EQUAL
4372: IFTRUE 4376
4374: GO 4468
4376: POP
// begin uc_nation = Rand ( 1 , 2 ) ;
4377: LD_ADDR_OWVAR 21
4381: PUSH
4382: LD_INT 1
4384: PPUSH
4385: LD_INT 2
4387: PPUSH
4388: CALL_OW 12
4392: ST_TO_ADDR
// PrepareHuman ( false , [ class_sniper , class_mortar ] [ Rand ( 1 , 2 ) ] , [ Rand ( 4 , 6 ) , Rand ( 4 , 7 ) , Rand ( 5 , 7 ) ] [ difficulty ] ) ;
4393: LD_INT 0
4395: PPUSH
4396: LD_INT 5
4398: PUSH
4399: LD_INT 8
4401: PUSH
4402: EMPTY
4403: LIST
4404: LIST
4405: PUSH
4406: LD_INT 1
4408: PPUSH
4409: LD_INT 2
4411: PPUSH
4412: CALL_OW 12
4416: ARRAY
4417: PPUSH
4418: LD_INT 4
4420: PPUSH
4421: LD_INT 6
4423: PPUSH
4424: CALL_OW 12
4428: PUSH
4429: LD_INT 4
4431: PPUSH
4432: LD_INT 7
4434: PPUSH
4435: CALL_OW 12
4439: PUSH
4440: LD_INT 5
4442: PPUSH
4443: LD_INT 7
4445: PPUSH
4446: CALL_OW 12
4450: PUSH
4451: EMPTY
4452: LIST
4453: LIST
4454: LIST
4455: PUSH
4456: LD_OWVAR 67
4460: ARRAY
4461: PPUSH
4462: CALL_OW 380
// end ; b_bunker :
4466: GO 4501
4468: LD_INT 32
4470: DOUBLE
4471: EQUAL
4472: IFTRUE 4476
4474: GO 4500
4476: POP
// begin uc_nation = nation_nature ;
4477: LD_ADDR_OWVAR 21
4481: PUSH
4482: LD_INT 0
4484: ST_TO_ADDR
// PrepareHuman ( false , class_apeman_soldier , 3 ) ;
4485: LD_INT 0
4487: PPUSH
4488: LD_INT 15
4490: PPUSH
4491: LD_INT 3
4493: PPUSH
4494: CALL_OW 380
// end ; end ;
4498: GO 4501
4500: POP
// PlaceHumanInUnit ( CreateHuman , i ) ;
4501: CALL_OW 44
4505: PPUSH
4506: LD_VAR 0 2
4510: PPUSH
4511: CALL_OW 52
// end ;
4515: GO 4351
4517: POP
4518: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_btype , b_barracks ] ] ) do
4519: LD_ADDR_VAR 0 2
4523: PUSH
4524: LD_INT 22
4526: PUSH
4527: LD_INT 2
4529: PUSH
4530: EMPTY
4531: LIST
4532: LIST
4533: PUSH
4534: LD_INT 30
4536: PUSH
4537: LD_INT 5
4539: PUSH
4540: EMPTY
4541: LIST
4542: LIST
4543: PUSH
4544: EMPTY
4545: LIST
4546: LIST
4547: PPUSH
4548: CALL_OW 69
4552: PUSH
4553: FOR_IN
4554: IFFALSE 4765
// if UnitsInside ( i ) < [ 2 , 3 , 3 ] [ difficulty ] then
4556: LD_VAR 0 2
4560: PPUSH
4561: CALL_OW 313
4565: PUSH
4566: LD_INT 2
4568: PUSH
4569: LD_INT 3
4571: PUSH
4572: LD_INT 3
4574: PUSH
4575: EMPTY
4576: LIST
4577: LIST
4578: LIST
4579: PUSH
4580: LD_OWVAR 67
4584: ARRAY
4585: LESS
4586: IFFALSE 4763
// repeat begin InitHc ;
4588: CALL_OW 19
// case Rand ( 1 , 2 ) of 1 :
4592: LD_INT 1
4594: PPUSH
4595: LD_INT 2
4597: PPUSH
4598: CALL_OW 12
4602: PUSH
4603: LD_INT 1
4605: DOUBLE
4606: EQUAL
4607: IFTRUE 4611
4609: GO 4684
4611: POP
// begin uc_nation = Rand ( 1 , 2 ) ;
4612: LD_ADDR_OWVAR 21
4616: PUSH
4617: LD_INT 1
4619: PPUSH
4620: LD_INT 2
4622: PPUSH
4623: CALL_OW 12
4627: ST_TO_ADDR
// PrepareHuman ( false , class_soldier , [ Rand ( 4 , 6 ) , Rand ( 4 , 7 ) , Rand ( 5 , 7 ) ] [ difficulty ] ) ;
4628: LD_INT 0
4630: PPUSH
4631: LD_INT 1
4633: PPUSH
4634: LD_INT 4
4636: PPUSH
4637: LD_INT 6
4639: PPUSH
4640: CALL_OW 12
4644: PUSH
4645: LD_INT 4
4647: PPUSH
4648: LD_INT 7
4650: PPUSH
4651: CALL_OW 12
4655: PUSH
4656: LD_INT 5
4658: PPUSH
4659: LD_INT 7
4661: PPUSH
4662: CALL_OW 12
4666: PUSH
4667: EMPTY
4668: LIST
4669: LIST
4670: LIST
4671: PUSH
4672: LD_OWVAR 67
4676: ARRAY
4677: PPUSH
4678: CALL_OW 380
// end ; 2 :
4682: GO 4717
4684: LD_INT 2
4686: DOUBLE
4687: EQUAL
4688: IFTRUE 4692
4690: GO 4716
4692: POP
// begin uc_nation = nation_nature ;
4693: LD_ADDR_OWVAR 21
4697: PUSH
4698: LD_INT 0
4700: ST_TO_ADDR
// PrepareHuman ( false , class_apeman_soldier , 3 ) ;
4701: LD_INT 0
4703: PPUSH
4704: LD_INT 15
4706: PPUSH
4707: LD_INT 3
4709: PPUSH
4710: CALL_OW 380
// end ; end ;
4714: GO 4717
4716: POP
// PlaceHumanInUnit ( CreateHuman , i ) ;
4717: CALL_OW 44
4721: PPUSH
4722: LD_VAR 0 2
4726: PPUSH
4727: CALL_OW 52
// end until UnitsInside ( i ) = [ 2 , 3 , 3 ] [ difficulty ] ;
4731: LD_VAR 0 2
4735: PPUSH
4736: CALL_OW 313
4740: PUSH
4741: LD_INT 2
4743: PUSH
4744: LD_INT 3
4746: PUSH
4747: LD_INT 3
4749: PUSH
4750: EMPTY
4751: LIST
4752: LIST
4753: LIST
4754: PUSH
4755: LD_OWVAR 67
4759: ARRAY
4760: EQUAL
4761: IFFALSE 4588
4763: GO 4553
4765: POP
4766: POP
// while UnitsInside ( af ) < 3 do
4767: LD_INT 10
4769: PPUSH
4770: CALL_OW 313
4774: PUSH
4775: LD_INT 3
4777: LESS
4778: IFFALSE 4864
// begin uc_nation = Rand ( 1 , 2 ) ;
4780: LD_ADDR_OWVAR 21
4784: PUSH
4785: LD_INT 1
4787: PPUSH
4788: LD_INT 2
4790: PPUSH
4791: CALL_OW 12
4795: ST_TO_ADDR
// PrepareHuman ( false , class_mechanic , [ Rand ( 3 , 6 ) , Rand ( 4 , 7 ) , Rand ( 5 , 7 ) ] [ difficulty ] ) ;
4796: LD_INT 0
4798: PPUSH
4799: LD_INT 3
4801: PPUSH
4802: LD_INT 3
4804: PPUSH
4805: LD_INT 6
4807: PPUSH
4808: CALL_OW 12
4812: PUSH
4813: LD_INT 4
4815: PPUSH
4816: LD_INT 7
4818: PPUSH
4819: CALL_OW 12
4823: PUSH
4824: LD_INT 5
4826: PPUSH
4827: LD_INT 7
4829: PPUSH
4830: CALL_OW 12
4834: PUSH
4835: EMPTY
4836: LIST
4837: LIST
4838: LIST
4839: PUSH
4840: LD_OWVAR 67
4844: ARRAY
4845: PPUSH
4846: CALL_OW 380
// PlaceHumanInUnit ( CreateHuman , af ) ;
4850: CALL_OW 44
4854: PPUSH
4855: LD_INT 10
4857: PPUSH
4858: CALL_OW 52
// end ;
4862: GO 4767
// while UnitsInside ( al2 ) < 3 do
4864: LD_INT 16
4866: PPUSH
4867: CALL_OW 313
4871: PUSH
4872: LD_INT 3
4874: LESS
4875: IFFALSE 4961
// begin uc_nation = Rand ( 1 , 2 ) ;
4877: LD_ADDR_OWVAR 21
4881: PUSH
4882: LD_INT 1
4884: PPUSH
4885: LD_INT 2
4887: PPUSH
4888: CALL_OW 12
4892: ST_TO_ADDR
// PrepareHuman ( false , class_scientistic , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 6 ) ] [ difficulty ] ) ;
4893: LD_INT 0
4895: PPUSH
4896: LD_INT 4
4898: PPUSH
4899: LD_INT 3
4901: PPUSH
4902: LD_INT 6
4904: PPUSH
4905: CALL_OW 12
4909: PUSH
4910: LD_INT 4
4912: PPUSH
4913: LD_INT 6
4915: PPUSH
4916: CALL_OW 12
4920: PUSH
4921: LD_INT 5
4923: PPUSH
4924: LD_INT 6
4926: PPUSH
4927: CALL_OW 12
4931: PUSH
4932: EMPTY
4933: LIST
4934: LIST
4935: LIST
4936: PUSH
4937: LD_OWVAR 67
4941: ARRAY
4942: PPUSH
4943: CALL_OW 380
// PlaceHumanInUnit ( CreateHuman , al2 ) ;
4947: CALL_OW 44
4951: PPUSH
4952: LD_INT 16
4954: PPUSH
4955: CALL_OW 52
// end ;
4959: GO 4864
// while FilterALlUnits ( [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) < 3 do
4961: LD_INT 22
4963: PUSH
4964: LD_INT 2
4966: PUSH
4967: EMPTY
4968: LIST
4969: LIST
4970: PUSH
4971: LD_INT 25
4973: PUSH
4974: LD_INT 2
4976: PUSH
4977: EMPTY
4978: LIST
4979: LIST
4980: PUSH
4981: EMPTY
4982: LIST
4983: LIST
4984: PPUSH
4985: CALL_OW 69
4989: PUSH
4990: LD_INT 3
4992: LESS
4993: IFFALSE 5039
// begin PrepareHuman ( false , class_engineer , [ 3 , 4 , 6 ] [ difficulty ] ) ;
4995: LD_INT 0
4997: PPUSH
4998: LD_INT 2
5000: PPUSH
5001: LD_INT 3
5003: PUSH
5004: LD_INT 4
5006: PUSH
5007: LD_INT 6
5009: PUSH
5010: EMPTY
5011: LIST
5012: LIST
5013: LIST
5014: PUSH
5015: LD_OWVAR 67
5019: ARRAY
5020: PPUSH
5021: CALL_OW 380
// PlaceHumanInUnit ( CreateHuman , ad ) ;
5025: CALL_OW 44
5029: PPUSH
5030: LD_INT 9
5032: PPUSH
5033: CALL_OW 52
// end ;
5037: GO 4961
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] ] ] ) do
5039: LD_ADDR_VAR 0 2
5043: PUSH
5044: LD_INT 22
5046: PUSH
5047: LD_INT 2
5049: PUSH
5050: EMPTY
5051: LIST
5052: LIST
5053: PUSH
5054: LD_INT 2
5056: PUSH
5057: LD_INT 30
5059: PUSH
5060: LD_INT 5
5062: PUSH
5063: EMPTY
5064: LIST
5065: LIST
5066: PUSH
5067: LD_INT 30
5069: PUSH
5070: LD_INT 31
5072: PUSH
5073: EMPTY
5074: LIST
5075: LIST
5076: PUSH
5077: EMPTY
5078: LIST
5079: LIST
5080: LIST
5081: PUSH
5082: EMPTY
5083: LIST
5084: LIST
5085: PPUSH
5086: CALL_OW 69
5090: PUSH
5091: FOR_IN
5092: IFFALSE 5141
// if GetNation ( UnitsInside ( i ) [ 1 ] ) <> nation_nature then
5094: LD_VAR 0 2
5098: PPUSH
5099: CALL_OW 313
5103: PUSH
5104: LD_INT 1
5106: ARRAY
5107: PPUSH
5108: CALL_OW 248
5112: PUSH
5113: LD_INT 0
5115: NONEQUAL
5116: IFFALSE 5139
// SetClass ( UnitsInside ( i ) [ 1 ] , class_mortar ) ;
5118: LD_VAR 0 2
5122: PPUSH
5123: CALL_OW 313
5127: PUSH
5128: LD_INT 1
5130: ARRAY
5131: PPUSH
5132: LD_INT 8
5134: PPUSH
5135: CALL_OW 336
5139: GO 5091
5141: POP
5142: POP
// Mahmoud = NewCharacter ( Mahmoud ) ;
5143: LD_ADDR_EXP 15
5147: PUSH
5148: LD_STRING Mahmoud
5150: PPUSH
5151: CALL_OW 25
5155: ST_TO_ADDR
// SetClass ( Mahmoud , class_desert_warior ) ;
5156: LD_EXP 15
5160: PPUSH
5161: LD_INT 11
5163: PPUSH
5164: CALL_OW 336
// PlaceHumanInUnit ( Mahmoud , mahmoudont ) ;
5168: LD_EXP 15
5172: PPUSH
5173: LD_INT 212
5175: PPUSH
5176: CALL_OW 52
// Bojan = NewCharacter ( Bojan ) ;
5180: LD_ADDR_EXP 12
5184: PUSH
5185: LD_STRING Bojan
5187: PPUSH
5188: CALL_OW 25
5192: ST_TO_ADDR
// PlaceUnitXY ( Bojan , 87 , 116 , false ) ;
5193: LD_EXP 12
5197: PPUSH
5198: LD_INT 87
5200: PPUSH
5201: LD_INT 116
5203: PPUSH
5204: LD_INT 0
5206: PPUSH
5207: CALL_OW 48
// SetSkill ( Bojan , skill_combat , 8 ) ;
5211: LD_EXP 12
5215: PPUSH
5216: LD_INT 1
5218: PPUSH
5219: LD_INT 8
5221: PPUSH
5222: CALL_OW 237
// SetSkill ( Bojan , skill_engineering , 4 ) ;
5226: LD_EXP 12
5230: PPUSH
5231: LD_INT 2
5233: PPUSH
5234: LD_INT 4
5236: PPUSH
5237: CALL_OW 237
// Gom = LoadCharacter ( Gom , 4 , 0 ) ;
5241: LD_ADDR_EXP 13
5245: PUSH
5246: LD_STRING Gom
5248: PPUSH
5249: LD_INT 4
5251: PPUSH
5252: LD_INT 0
5254: PPUSH
5255: CALL_OW 527
5259: ST_TO_ADDR
// PlaceHumanInUnit ( Gom , al ) ;
5260: LD_EXP 13
5264: PPUSH
5265: LD_INT 17
5267: PPUSH
5268: CALL_OW 52
// uc_nation = nation_american ;
5272: LD_ADDR_OWVAR 21
5276: PUSH
5277: LD_INT 1
5279: ST_TO_ADDR
// Kuronski = LoadCharacter ( Kuronski , 0 , 0 ) ;
5280: LD_ADDR_EXP 14
5284: PUSH
5285: LD_STRING Kuronski
5287: PPUSH
5288: LD_INT 0
5290: PPUSH
5291: LD_INT 0
5293: PPUSH
5294: CALL_OW 527
5298: ST_TO_ADDR
// SetClass ( Kuronski , class_scientistic ) ;
5299: LD_EXP 14
5303: PPUSH
5304: LD_INT 4
5306: PPUSH
5307: CALL_OW 336
// PlaceHumanInUnit ( Kuronski , al ) ;
5311: LD_EXP 14
5315: PPUSH
5316: LD_INT 17
5318: PPUSH
5319: CALL_OW 52
// SetSkill ( Kuronski , skill_scientistic , 7 ) ;
5323: LD_EXP 14
5327: PPUSH
5328: LD_INT 4
5330: PPUSH
5331: LD_INT 7
5333: PPUSH
5334: CALL_OW 237
// cams = [ [ 56 , 89 ] , [ 150 , 174 ] , [ 131 , 114 ] , [ 87 , 150 ] , [ 102 , 167 ] ] ;
5338: LD_ADDR_VAR 0 5
5342: PUSH
5343: LD_INT 56
5345: PUSH
5346: LD_INT 89
5348: PUSH
5349: EMPTY
5350: LIST
5351: LIST
5352: PUSH
5353: LD_INT 150
5355: PUSH
5356: LD_INT 174
5358: PUSH
5359: EMPTY
5360: LIST
5361: LIST
5362: PUSH
5363: LD_INT 131
5365: PUSH
5366: LD_INT 114
5368: PUSH
5369: EMPTY
5370: LIST
5371: LIST
5372: PUSH
5373: LD_INT 87
5375: PUSH
5376: LD_INT 150
5378: PUSH
5379: EMPTY
5380: LIST
5381: LIST
5382: PUSH
5383: LD_INT 102
5385: PUSH
5386: LD_INT 167
5388: PUSH
5389: EMPTY
5390: LIST
5391: LIST
5392: PUSH
5393: EMPTY
5394: LIST
5395: LIST
5396: LIST
5397: LIST
5398: LIST
5399: ST_TO_ADDR
// if not TestVariable ( EddingsKilled ) then
5400: LD_STRING EddingsKilled
5402: PPUSH
5403: CALL_OW 27
5407: NOT
5408: IFFALSE 5452
// for i in cams do
5410: LD_ADDR_VAR 0 2
5414: PUSH
5415: LD_VAR 0 5
5419: PUSH
5420: FOR_IN
5421: IFFALSE 5450
// HiddenCamera ( i [ 1 ] , i [ 2 ] , 2 ) ;
5423: LD_VAR 0 2
5427: PUSH
5428: LD_INT 1
5430: ARRAY
5431: PPUSH
5432: LD_VAR 0 2
5436: PUSH
5437: LD_INT 2
5439: ARRAY
5440: PPUSH
5441: LD_INT 2
5443: PPUSH
5444: CALL_OW 244
5448: GO 5420
5450: POP
5451: POP
// ADefenders = [ adv1 , adv2 , adv3 ] ;
5452: LD_ADDR_EXP 20
5456: PUSH
5457: LD_INT 192
5459: PUSH
5460: LD_INT 201
5462: PUSH
5463: LD_INT 190
5465: PUSH
5466: EMPTY
5467: LIST
5468: LIST
5469: LIST
5470: ST_TO_ADDR
// for i in [ tech_Tech2 , tech_Tech3 , tech_Weap2 , tech_Sib2 , tech_Weap3 , tech_Sib3 ] do
5471: LD_ADDR_VAR 0 2
5475: PUSH
5476: LD_INT 49
5478: PUSH
5479: LD_INT 50
5481: PUSH
5482: LD_INT 52
5484: PUSH
5485: LD_INT 55
5487: PUSH
5488: LD_INT 53
5490: PUSH
5491: LD_INT 56
5493: PUSH
5494: EMPTY
5495: LIST
5496: LIST
5497: LIST
5498: LIST
5499: LIST
5500: LIST
5501: PUSH
5502: FOR_IN
5503: IFFALSE 5519
// AddComResearch ( al , i ) ;
5505: LD_INT 17
5507: PPUSH
5508: LD_VAR 0 2
5512: PPUSH
5513: CALL_OW 184
5517: GO 5502
5519: POP
5520: POP
// for i in [ tech_Opto2 , tech_Opto3 ] do
5521: LD_ADDR_VAR 0 2
5525: PUSH
5526: LD_INT 61
5528: PUSH
5529: LD_INT 62
5531: PUSH
5532: EMPTY
5533: LIST
5534: LIST
5535: PUSH
5536: FOR_IN
5537: IFFALSE 5553
// AddComResearch ( al2 , i ) ;
5539: LD_INT 16
5541: PPUSH
5542: LD_VAR 0 2
5546: PPUSH
5547: CALL_OW 184
5551: GO 5536
5553: POP
5554: POP
// end ;
5555: LD_VAR 0 1
5559: RET
// export AEngineers , ABuildings , ADefenders , AAttackers , ACargo ; export ARepairStrategy , ABaseStrategy ; every 0 0$1 do var i ;
5560: GO 5562
5562: DISABLE
5563: LD_INT 0
5565: PPUSH
// begin enable ;
5566: ENABLE
// if ArabiansOver then
5567: LD_EXP 8
5571: IFFALSE 5576
// begin disable ;
5573: DISABLE
// exit ;
5574: GO 5974
// end ; AEngineers = FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 2 ] , [ f_or , [ f_class , class_engineer ] , [ f_class , class_apeman_engineer ] ] ] ) ^ UnitFilter ( UnitsInside ( ad ) , [ f_side , 2 ] ) ;
5576: LD_ADDR_EXP 18
5580: PUSH
5581: LD_INT 9
5583: PPUSH
5584: LD_INT 22
5586: PUSH
5587: LD_INT 2
5589: PUSH
5590: EMPTY
5591: LIST
5592: LIST
5593: PUSH
5594: LD_INT 2
5596: PUSH
5597: LD_INT 25
5599: PUSH
5600: LD_INT 2
5602: PUSH
5603: EMPTY
5604: LIST
5605: LIST
5606: PUSH
5607: LD_INT 25
5609: PUSH
5610: LD_INT 16
5612: PUSH
5613: EMPTY
5614: LIST
5615: LIST
5616: PUSH
5617: EMPTY
5618: LIST
5619: LIST
5620: LIST
5621: PUSH
5622: EMPTY
5623: LIST
5624: LIST
5625: PPUSH
5626: CALL_OW 70
5630: PUSH
5631: LD_INT 9
5633: PPUSH
5634: CALL_OW 313
5638: PPUSH
5639: LD_INT 22
5641: PUSH
5642: LD_INT 2
5644: PUSH
5645: EMPTY
5646: LIST
5647: LIST
5648: PPUSH
5649: CALL_OW 72
5653: ADD
5654: ST_TO_ADDR
// ABuildings = FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) ;
5655: LD_ADDR_EXP 19
5659: PUSH
5660: LD_INT 11
5662: PPUSH
5663: LD_INT 22
5665: PUSH
5666: LD_INT 2
5668: PUSH
5669: EMPTY
5670: LIST
5671: LIST
5672: PUSH
5673: LD_INT 21
5675: PUSH
5676: LD_INT 3
5678: PUSH
5679: EMPTY
5680: LIST
5681: LIST
5682: PUSH
5683: EMPTY
5684: LIST
5685: LIST
5686: PPUSH
5687: CALL_OW 70
5691: ST_TO_ADDR
// if not ExistMc ( ABaseStrategy ) then
5692: LD_EXP 24
5696: PPUSH
5697: CALL_OW 386
5701: NOT
5702: IFFALSE 5745
// ABaseStrategy = McBase ( 1 , AEngineers , GetBuildList ( GetBase ( ad ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
5704: LD_ADDR_EXP 24
5708: PUSH
5709: LD_INT 1
5711: PPUSH
5712: LD_EXP 18
5716: PPUSH
5717: LD_INT 9
5719: PPUSH
5720: CALL_OW 274
5724: PPUSH
5725: CALL_OW 417
5729: PPUSH
5730: EMPTY
5731: PPUSH
5732: EMPTY
5733: PPUSH
5734: LD_INT 1
5736: PUSH
5737: EMPTY
5738: LIST
5739: PPUSH
5740: CALL_OW 397
5744: ST_TO_ADDR
// if not ExistMc ( ARepairStrategy ) and not FilterUnitsInArea ( ArabianDefenceArea , [ [ f_enemy , 2 ] , [ f_see , 2 ] ] ) then
5745: LD_EXP 23
5749: PPUSH
5750: CALL_OW 386
5754: NOT
5755: PUSH
5756: LD_INT 9
5758: PPUSH
5759: LD_INT 81
5761: PUSH
5762: LD_INT 2
5764: PUSH
5765: EMPTY
5766: LIST
5767: LIST
5768: PUSH
5769: LD_INT 101
5771: PUSH
5772: LD_INT 2
5774: PUSH
5775: EMPTY
5776: LIST
5777: LIST
5778: PUSH
5779: EMPTY
5780: LIST
5781: LIST
5782: PPUSH
5783: CALL_OW 70
5787: NOT
5788: AND
5789: IFFALSE 5827
// ARepairStrategy = McRepair ( 2 , AEngineers , ABuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
5791: LD_ADDR_EXP 23
5795: PUSH
5796: LD_INT 2
5798: PPUSH
5799: LD_EXP 18
5803: PPUSH
5804: LD_EXP 19
5808: PPUSH
5809: LD_INT 6
5811: PUSH
5812: LD_INT 1000
5814: PUSH
5815: EMPTY
5816: LIST
5817: LIST
5818: PUSH
5819: EMPTY
5820: LIST
5821: PPUSH
5822: CALL_OW 414
5826: ST_TO_ADDR
// if FilterUnitsInArea ( ArabianDefenceArea , [ [ f_enemy , 2 ] , [ f_see , 2 ] ] ) then
5827: LD_INT 9
5829: PPUSH
5830: LD_INT 81
5832: PUSH
5833: LD_INT 2
5835: PUSH
5836: EMPTY
5837: LIST
5838: LIST
5839: PUSH
5840: LD_INT 101
5842: PUSH
5843: LD_INT 2
5845: PUSH
5846: EMPTY
5847: LIST
5848: LIST
5849: PUSH
5850: EMPTY
5851: LIST
5852: LIST
5853: PPUSH
5854: CALL_OW 70
5858: IFFALSE 5898
// begin KillMc ( ARepairStrategy ) ;
5860: LD_EXP 23
5864: PPUSH
5865: CALL_OW 387
// for i in AEngineers do
5869: LD_ADDR_VAR 0 1
5873: PUSH
5874: LD_EXP 18
5878: PUSH
5879: FOR_IN
5880: IFFALSE 5896
// ComMoveToArea ( i , ArabianEngineersArea ) ;
5882: LD_VAR 0 1
5886: PPUSH
5887: LD_INT 19
5889: PPUSH
5890: CALL_OW 113
5894: GO 5879
5896: POP
5897: POP
// end ; ACargo = FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_cargo_bay ] ] ) ;
5898: LD_ADDR_EXP 22
5902: PUSH
5903: LD_INT 22
5905: PUSH
5906: LD_INT 2
5908: PUSH
5909: EMPTY
5910: LIST
5911: LIST
5912: PUSH
5913: LD_INT 34
5915: PUSH
5916: LD_INT 32
5918: PUSH
5919: EMPTY
5920: LIST
5921: LIST
5922: PUSH
5923: EMPTY
5924: LIST
5925: LIST
5926: PPUSH
5927: CALL_OW 69
5931: ST_TO_ADDR
// if GetListOfCratesInArea ( ArabianCratesArea ) then
5932: LD_INT 6
5934: PPUSH
5935: CALL_OW 435
5939: IFFALSE 5974
// AddComCollect ( ACargo , GetListOfCratesInArea ( ArabianCratesArea ) [ 1 ] , GetListOfCratesInArea ( ArabianCratesArea ) [ 2 ] ) ;
5941: LD_EXP 22
5945: PPUSH
5946: LD_INT 6
5948: PPUSH
5949: CALL_OW 435
5953: PUSH
5954: LD_INT 1
5956: ARRAY
5957: PPUSH
5958: LD_INT 6
5960: PPUSH
5961: CALL_OW 435
5965: PUSH
5966: LD_INT 2
5968: ARRAY
5969: PPUSH
5970: CALL_OW 177
// end ;
5974: PPOPN 1
5976: END
// every 0 0$15 trigger FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var i , u ;
5977: LD_INT 11
5979: PPUSH
5980: LD_INT 22
5982: PUSH
5983: LD_INT 2
5985: PUSH
5986: EMPTY
5987: LIST
5988: LIST
5989: PUSH
5990: LD_INT 58
5992: PUSH
5993: EMPTY
5994: LIST
5995: PUSH
5996: LD_INT 53
5998: PUSH
5999: EMPTY
6000: LIST
6001: PUSH
6002: LD_INT 50
6004: PUSH
6005: EMPTY
6006: LIST
6007: PUSH
6008: LD_INT 2
6010: PUSH
6011: LD_INT 30
6013: PUSH
6014: LD_INT 32
6016: PUSH
6017: EMPTY
6018: LIST
6019: LIST
6020: PUSH
6021: LD_INT 30
6023: PUSH
6024: LD_INT 31
6026: PUSH
6027: EMPTY
6028: LIST
6029: LIST
6030: PUSH
6031: EMPTY
6032: LIST
6033: LIST
6034: LIST
6035: PUSH
6036: EMPTY
6037: LIST
6038: LIST
6039: LIST
6040: LIST
6041: LIST
6042: PPUSH
6043: CALL_OW 70
6047: IFFALSE 6190
6049: GO 6051
6051: DISABLE
6052: LD_INT 0
6054: PPUSH
6055: PPUSH
// begin enable ;
6056: ENABLE
// for i in FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do
6057: LD_ADDR_VAR 0 1
6061: PUSH
6062: LD_INT 11
6064: PPUSH
6065: LD_INT 22
6067: PUSH
6068: LD_INT 2
6070: PUSH
6071: EMPTY
6072: LIST
6073: LIST
6074: PUSH
6075: LD_INT 58
6077: PUSH
6078: EMPTY
6079: LIST
6080: PUSH
6081: LD_INT 50
6083: PUSH
6084: EMPTY
6085: LIST
6086: PUSH
6087: LD_INT 2
6089: PUSH
6090: LD_INT 30
6092: PUSH
6093: LD_INT 32
6095: PUSH
6096: EMPTY
6097: LIST
6098: LIST
6099: PUSH
6100: LD_INT 30
6102: PUSH
6103: LD_INT 31
6105: PUSH
6106: EMPTY
6107: LIST
6108: LIST
6109: PUSH
6110: EMPTY
6111: LIST
6112: LIST
6113: LIST
6114: PUSH
6115: EMPTY
6116: LIST
6117: LIST
6118: LIST
6119: LIST
6120: PPUSH
6121: CALL_OW 70
6125: PUSH
6126: FOR_IN
6127: IFFALSE 6188
// begin u = UnitsInside ( NearestUnitToUnit ( [ aa1 , aa2 ] , i ) ) [ 1 ] ;
6129: LD_ADDR_VAR 0 2
6133: PUSH
6134: LD_INT 22
6136: PUSH
6137: LD_INT 21
6139: PUSH
6140: EMPTY
6141: LIST
6142: LIST
6143: PPUSH
6144: LD_VAR 0 1
6148: PPUSH
6149: CALL_OW 74
6153: PPUSH
6154: CALL_OW 313
6158: PUSH
6159: LD_INT 1
6161: ARRAY
6162: ST_TO_ADDR
// ComExitBuilding ( u ) ;
6163: LD_VAR 0 2
6167: PPUSH
6168: CALL_OW 122
// AddComEnterUnit ( u , i ) ;
6172: LD_VAR 0 2
6176: PPUSH
6177: LD_VAR 0 1
6181: PPUSH
6182: CALL_OW 180
// end ;
6186: GO 6126
6188: POP
6189: POP
// end ;
6190: PPOPN 2
6192: END
// export AEnemies , ADefenceStrategy ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_see , 2 ] ] ) do
6193: LD_INT 22
6195: PUSH
6196: LD_INT 8
6198: PUSH
6199: EMPTY
6200: LIST
6201: LIST
6202: PUSH
6203: LD_INT 101
6205: PUSH
6206: LD_INT 2
6208: PUSH
6209: EMPTY
6210: LIST
6211: LIST
6212: PUSH
6213: EMPTY
6214: LIST
6215: LIST
6216: PPUSH
6217: CALL_OW 69
6221: IFFALSE 6234
6223: GO 6225
6225: DISABLE
// AntoineSpottedByArabians = true ;
6226: LD_ADDR_EXP 17
6230: PUSH
6231: LD_INT 1
6233: ST_TO_ADDR
6234: END
// every 0 0$1 do
6235: GO 6237
6237: DISABLE
// AEnemies = McRegistry ( 2 , [ [ mc_reg_area_to_protect , ArabianBaseArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
6238: LD_ADDR_EXP 25
6242: PUSH
6243: LD_INT 2
6245: PPUSH
6246: LD_INT 3
6248: PUSH
6249: LD_INT 11
6251: PUSH
6252: EMPTY
6253: LIST
6254: LIST
6255: PUSH
6256: LD_INT 1
6258: PUSH
6259: LD_INT 35
6261: PUSH
6262: EMPTY
6263: LIST
6264: LIST
6265: PUSH
6266: EMPTY
6267: LIST
6268: LIST
6269: PPUSH
6270: CALL_OW 399
6274: ST_TO_ADDR
6275: END
// every 0 0$1 trigger ADefenders do var i , u ;
6276: LD_EXP 20
6280: IFFALSE 6762
6282: GO 6284
6284: DISABLE
6285: LD_INT 0
6287: PPUSH
6288: PPUSH
// begin enable ;
6289: ENABLE
// if ArabiansOver then
6290: LD_EXP 8
6294: IFFALSE 6299
// begin disable ;
6296: DISABLE
// exit ;
6297: GO 6762
// end ; if not ExistMc ( ADefenceStrategy ) and FilterUnitsInArea ( ArabianDefenceArea , [ [ f_enemy , 2 ] , [ f_ok ] ] ) then
6299: LD_EXP 26
6303: PPUSH
6304: CALL_OW 386
6308: NOT
6309: PUSH
6310: LD_INT 9
6312: PPUSH
6313: LD_INT 81
6315: PUSH
6316: LD_INT 2
6318: PUSH
6319: EMPTY
6320: LIST
6321: LIST
6322: PUSH
6323: LD_INT 50
6325: PUSH
6326: EMPTY
6327: LIST
6328: PUSH
6329: EMPTY
6330: LIST
6331: LIST
6332: PPUSH
6333: CALL_OW 70
6337: AND
6338: IFFALSE 6376
// ADefenceStrategy = McDefend ( 2 , AEnemies , ADefenders , [ [ mc_def_advantage , 200 ] ] ) ;
6340: LD_ADDR_EXP 26
6344: PUSH
6345: LD_INT 2
6347: PPUSH
6348: LD_EXP 25
6352: PPUSH
6353: LD_EXP 20
6357: PPUSH
6358: LD_INT 1
6360: PUSH
6361: LD_INT 200
6363: PUSH
6364: EMPTY
6365: LIST
6366: LIST
6367: PUSH
6368: EMPTY
6369: LIST
6370: PPUSH
6371: CALL_OW 401
6375: ST_TO_ADDR
// if ExistMc ( ADefenceStrategy ) and not FilterUnitsInArea ( ArabianDefenceArea , [ [ f_enemy , 2 ] , [ f_ok ] ] ) then
6376: LD_EXP 26
6380: PPUSH
6381: CALL_OW 386
6385: PUSH
6386: LD_INT 9
6388: PPUSH
6389: LD_INT 81
6391: PUSH
6392: LD_INT 2
6394: PUSH
6395: EMPTY
6396: LIST
6397: LIST
6398: PUSH
6399: LD_INT 50
6401: PUSH
6402: EMPTY
6403: LIST
6404: PUSH
6405: EMPTY
6406: LIST
6407: LIST
6408: PPUSH
6409: CALL_OW 70
6413: NOT
6414: AND
6415: IFFALSE 6455
// begin KillMc ( ADefenceStrategy ) ;
6417: LD_EXP 26
6421: PPUSH
6422: CALL_OW 387
// for i in ADefenders do
6426: LD_ADDR_VAR 0 1
6430: PUSH
6431: LD_EXP 20
6435: PUSH
6436: FOR_IN
6437: IFFALSE 6453
// ComMoveToArea ( i , ArabianRepairs ) ;
6439: LD_VAR 0 1
6443: PPUSH
6444: LD_INT 14
6446: PPUSH
6447: CALL_OW 113
6451: GO 6436
6453: POP
6454: POP
// end ; for i in ADefenders do
6455: LD_ADDR_VAR 0 1
6459: PUSH
6460: LD_EXP 20
6464: PUSH
6465: FOR_IN
6466: IFFALSE 6497
// if not IsInArea ( i , ArabianBaseArea ) then
6468: LD_VAR 0 1
6472: PPUSH
6473: LD_INT 11
6475: PPUSH
6476: CALL_OW 308
6480: NOT
6481: IFFALSE 6495
// ComMoveToArea ( i , ArabianBaseArea ) ;
6483: LD_VAR 0 1
6487: PPUSH
6488: LD_INT 11
6490: PPUSH
6491: CALL_OW 113
6495: GO 6465
6497: POP
6498: POP
// for i in FilterUnitsInArea ( ArabianRepairs , [ [ f_side , 2 ] , [ f_not , [ f_lives , 1000 ] ] ] ) do
6499: LD_ADDR_VAR 0 1
6503: PUSH
6504: LD_INT 14
6506: PPUSH
6507: LD_INT 22
6509: PUSH
6510: LD_INT 2
6512: PUSH
6513: EMPTY
6514: LIST
6515: LIST
6516: PUSH
6517: LD_INT 3
6519: PUSH
6520: LD_INT 24
6522: PUSH
6523: LD_INT 1000
6525: PUSH
6526: EMPTY
6527: LIST
6528: LIST
6529: PUSH
6530: EMPTY
6531: LIST
6532: LIST
6533: PUSH
6534: EMPTY
6535: LIST
6536: LIST
6537: PPUSH
6538: CALL_OW 70
6542: PUSH
6543: FOR_IN
6544: IFFALSE 6647
// if GetType ( i ) = unit_vehicle and UnitsInside ( af ) > 1 then
6546: LD_VAR 0 1
6550: PPUSH
6551: CALL_OW 247
6555: PUSH
6556: LD_INT 2
6558: EQUAL
6559: PUSH
6560: LD_INT 10
6562: PPUSH
6563: CALL_OW 313
6567: PUSH
6568: LD_INT 1
6570: GREATER
6571: AND
6572: IFFALSE 6645
// begin u = UnitsInside ( af ) [ 1 ] ;
6574: LD_ADDR_VAR 0 2
6578: PUSH
6579: LD_INT 10
6581: PPUSH
6582: CALL_OW 313
6586: PUSH
6587: LD_INT 1
6589: ARRAY
6590: ST_TO_ADDR
// ComExitBuilding ( u ) ;
6591: LD_VAR 0 2
6595: PPUSH
6596: CALL_OW 122
// AddComRepairVehicle ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_mechanic ] , [ f_outside ] ] ) , i ) ;
6600: LD_INT 22
6602: PUSH
6603: LD_INT 2
6605: PUSH
6606: EMPTY
6607: LIST
6608: LIST
6609: PUSH
6610: LD_INT 25
6612: PUSH
6613: LD_INT 3
6615: PUSH
6616: EMPTY
6617: LIST
6618: LIST
6619: PUSH
6620: LD_INT 56
6622: PUSH
6623: EMPTY
6624: LIST
6625: PUSH
6626: EMPTY
6627: LIST
6628: LIST
6629: LIST
6630: PPUSH
6631: CALL_OW 69
6635: PPUSH
6636: LD_VAR 0 1
6640: PPUSH
6641: CALL_OW 189
// end ;
6645: GO 6543
6647: POP
6648: POP
// if not FilterUnitsInArea ( ArabianRepairs , [ [ f_side , 2 ] , [ f_not , [ f_lives , 1000 ] ] ] ) then
6649: LD_INT 14
6651: PPUSH
6652: LD_INT 22
6654: PUSH
6655: LD_INT 2
6657: PUSH
6658: EMPTY
6659: LIST
6660: LIST
6661: PUSH
6662: LD_INT 3
6664: PUSH
6665: LD_INT 24
6667: PUSH
6668: LD_INT 1000
6670: PUSH
6671: EMPTY
6672: LIST
6673: LIST
6674: PUSH
6675: EMPTY
6676: LIST
6677: LIST
6678: PUSH
6679: EMPTY
6680: LIST
6681: LIST
6682: PPUSH
6683: CALL_OW 70
6687: NOT
6688: IFFALSE 6762
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_mechanic ] , [ f_outside ] ] ) do
6690: LD_ADDR_VAR 0 1
6694: PUSH
6695: LD_INT 22
6697: PUSH
6698: LD_INT 2
6700: PUSH
6701: EMPTY
6702: LIST
6703: LIST
6704: PUSH
6705: LD_INT 25
6707: PUSH
6708: LD_INT 3
6710: PUSH
6711: EMPTY
6712: LIST
6713: LIST
6714: PUSH
6715: LD_INT 56
6717: PUSH
6718: EMPTY
6719: LIST
6720: PUSH
6721: EMPTY
6722: LIST
6723: LIST
6724: LIST
6725: PPUSH
6726: CALL_OW 69
6730: PUSH
6731: FOR_IN
6732: IFFALSE 6760
// if not HasTask ( i ) then
6734: LD_VAR 0 1
6738: PPUSH
6739: CALL_OW 314
6743: NOT
6744: IFFALSE 6758
// ComEnterUnit ( i , af ) ;
6746: LD_VAR 0 1
6750: PPUSH
6751: LD_INT 10
6753: PPUSH
6754: CALL_OW 120
6758: GO 6731
6760: POP
6761: POP
// end ;
6762: PPOPN 2
6764: END
// export MinePositions ; export function TestTheMine ( x , y ) ; var t ; begin
6765: LD_INT 0
6767: PPUSH
6768: PPUSH
// t = FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] , [ f_distxy , x , y , 2 ] ] ) ;
6769: LD_ADDR_VAR 0 4
6773: PUSH
6774: LD_INT 22
6776: PUSH
6777: LD_INT 1
6779: PUSH
6780: EMPTY
6781: LIST
6782: LIST
6783: PUSH
6784: LD_INT 2
6786: PUSH
6787: LD_INT 21
6789: PUSH
6790: LD_INT 1
6792: PUSH
6793: EMPTY
6794: LIST
6795: LIST
6796: PUSH
6797: LD_INT 21
6799: PUSH
6800: LD_INT 2
6802: PUSH
6803: EMPTY
6804: LIST
6805: LIST
6806: PUSH
6807: EMPTY
6808: LIST
6809: LIST
6810: LIST
6811: PUSH
6812: LD_INT 92
6814: PUSH
6815: LD_VAR 0 1
6819: PUSH
6820: LD_VAR 0 2
6824: PUSH
6825: LD_INT 2
6827: PUSH
6828: EMPTY
6829: LIST
6830: LIST
6831: LIST
6832: LIST
6833: PUSH
6834: EMPTY
6835: LIST
6836: LIST
6837: LIST
6838: PPUSH
6839: CALL_OW 69
6843: ST_TO_ADDR
// if t then
6844: LD_VAR 0 4
6848: IFFALSE 6877
// begin MineExplosion ( x , y , 1 ) ;
6850: LD_VAR 0 1
6854: PPUSH
6855: LD_VAR 0 2
6859: PPUSH
6860: LD_INT 1
6862: PPUSH
6863: CALL_OW 453
// Result = true ;
6867: LD_ADDR_VAR 0 3
6871: PUSH
6872: LD_INT 1
6874: ST_TO_ADDR
// end else
6875: GO 6885
// Result = false ;
6877: LD_ADDR_VAR 0 3
6881: PUSH
6882: LD_INT 0
6884: ST_TO_ADDR
// end ;
6885: LD_VAR 0 3
6889: RET
// every 0 0$1 do
6890: GO 6892
6892: DISABLE
// MinePositions = [ [ 78 , 147 ] , [ 82 , 149 ] , [ 120 , 159 ] , [ 123 , 154 ] , [ 126 , 132 ] , [ 122 , 123 ] , [ 116 , 113 ] , [ 78 , 86 ] , [ 54 , 89 ] ] ;
6893: LD_ADDR_EXP 27
6897: PUSH
6898: LD_INT 78
6900: PUSH
6901: LD_INT 147
6903: PUSH
6904: EMPTY
6905: LIST
6906: LIST
6907: PUSH
6908: LD_INT 82
6910: PUSH
6911: LD_INT 149
6913: PUSH
6914: EMPTY
6915: LIST
6916: LIST
6917: PUSH
6918: LD_INT 120
6920: PUSH
6921: LD_INT 159
6923: PUSH
6924: EMPTY
6925: LIST
6926: LIST
6927: PUSH
6928: LD_INT 123
6930: PUSH
6931: LD_INT 154
6933: PUSH
6934: EMPTY
6935: LIST
6936: LIST
6937: PUSH
6938: LD_INT 126
6940: PUSH
6941: LD_INT 132
6943: PUSH
6944: EMPTY
6945: LIST
6946: LIST
6947: PUSH
6948: LD_INT 122
6950: PUSH
6951: LD_INT 123
6953: PUSH
6954: EMPTY
6955: LIST
6956: LIST
6957: PUSH
6958: LD_INT 116
6960: PUSH
6961: LD_INT 113
6963: PUSH
6964: EMPTY
6965: LIST
6966: LIST
6967: PUSH
6968: LD_INT 78
6970: PUSH
6971: LD_INT 86
6973: PUSH
6974: EMPTY
6975: LIST
6976: LIST
6977: PUSH
6978: LD_INT 54
6980: PUSH
6981: LD_INT 89
6983: PUSH
6984: EMPTY
6985: LIST
6986: LIST
6987: PUSH
6988: EMPTY
6989: LIST
6990: LIST
6991: LIST
6992: LIST
6993: LIST
6994: LIST
6995: LIST
6996: LIST
6997: LIST
6998: ST_TO_ADDR
6999: END
// every 0 0$2 trigger not ArabiansOver and not TestVariable ( EddingsKilled ) do var MineOut , i ;
7000: LD_EXP 8
7004: NOT
7005: PUSH
7006: LD_STRING EddingsKilled
7008: PPUSH
7009: CALL_OW 27
7013: NOT
7014: AND
7015: IFFALSE 7120
7017: GO 7019
7019: DISABLE
7020: LD_INT 0
7022: PPUSH
7023: PPUSH
// begin MineOut = [ ] ;
7024: LD_ADDR_VAR 0 1
7028: PUSH
7029: EMPTY
7030: ST_TO_ADDR
// for i in MinePositions do
7031: LD_ADDR_VAR 0 2
7035: PUSH
7036: LD_EXP 27
7040: PUSH
7041: FOR_IN
7042: IFFALSE 7089
// if TestTheMine ( i [ 1 ] , i [ 2 ] ) then
7044: LD_VAR 0 2
7048: PUSH
7049: LD_INT 1
7051: ARRAY
7052: PPUSH
7053: LD_VAR 0 2
7057: PUSH
7058: LD_INT 2
7060: ARRAY
7061: PPUSH
7062: CALL 6765 0 2
7066: IFFALSE 7087
// MineOut = MineOut ^ [ i ] ;
7068: LD_ADDR_VAR 0 1
7072: PUSH
7073: LD_VAR 0 1
7077: PUSH
7078: LD_VAR 0 2
7082: PUSH
7083: EMPTY
7084: LIST
7085: ADD
7086: ST_TO_ADDR
7087: GO 7041
7089: POP
7090: POP
// if MineOut then
7091: LD_VAR 0 1
7095: IFFALSE 7113
// MinePositions = MinePositions diff MineOut ;
7097: LD_ADDR_EXP 27
7101: PUSH
7102: LD_EXP 27
7106: PUSH
7107: LD_VAR 0 1
7111: DIFF
7112: ST_TO_ADDR
// if MinePositions then
7113: LD_EXP 27
7117: IFFALSE 7120
// enable ;
7119: ENABLE
// end ;
7120: PPOPN 2
7122: END
// every 0 0$1 do var i , apes ;
7123: GO 7125
7125: DISABLE
7126: LD_INT 0
7128: PPUSH
7129: PPUSH
// begin enable ;
7130: ENABLE
// if ArabiansOver then
7131: LD_EXP 8
7135: IFFALSE 7140
// begin disable ;
7137: DISABLE
// exit ;
7138: GO 7585
// end ; apes = FilterUnitsInArea ( ApemenArea , [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) ;
7140: LD_ADDR_VAR 0 2
7144: PUSH
7145: LD_INT 13
7147: PPUSH
7148: LD_INT 22
7150: PUSH
7151: LD_INT 0
7153: PUSH
7154: EMPTY
7155: LIST
7156: LIST
7157: PUSH
7158: LD_INT 25
7160: PUSH
7161: LD_INT 12
7163: PUSH
7164: EMPTY
7165: LIST
7166: LIST
7167: PUSH
7168: EMPTY
7169: LIST
7170: LIST
7171: PPUSH
7172: CALL_OW 70
7176: ST_TO_ADDR
// if apes then
7177: LD_VAR 0 2
7181: IFFALSE 7237
// if not FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_outside ] ] ) then
7183: LD_INT 22
7185: PUSH
7186: LD_INT 2
7188: PUSH
7189: EMPTY
7190: LIST
7191: LIST
7192: PUSH
7193: LD_INT 25
7195: PUSH
7196: LD_INT 4
7198: PUSH
7199: EMPTY
7200: LIST
7201: LIST
7202: PUSH
7203: LD_INT 56
7205: PUSH
7206: EMPTY
7207: LIST
7208: PUSH
7209: EMPTY
7210: LIST
7211: LIST
7212: LIST
7213: PPUSH
7214: CALL_OW 69
7218: NOT
7219: IFFALSE 7237
// ComExitBuilding ( UnitsInside ( al2 ) [ 1 ] ) ;
7221: LD_INT 16
7223: PPUSH
7224: CALL_OW 313
7228: PUSH
7229: LD_INT 1
7231: ARRAY
7232: PPUSH
7233: CALL_OW 122
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_outside ] ] ) do
7237: LD_ADDR_VAR 0 1
7241: PUSH
7242: LD_INT 22
7244: PUSH
7245: LD_INT 2
7247: PUSH
7248: EMPTY
7249: LIST
7250: LIST
7251: PUSH
7252: LD_INT 25
7254: PUSH
7255: LD_INT 4
7257: PUSH
7258: EMPTY
7259: LIST
7260: LIST
7261: PUSH
7262: LD_INT 56
7264: PUSH
7265: EMPTY
7266: LIST
7267: PUSH
7268: EMPTY
7269: LIST
7270: LIST
7271: LIST
7272: PPUSH
7273: CALL_OW 69
7277: PUSH
7278: FOR_IN
7279: IFFALSE 7396
// begin if i in ASiberite then
7281: LD_VAR 0 1
7285: PUSH
7286: LD_EXP 45
7290: IN
7291: IFFALSE 7308
// ComContaminate ( i , 197 , 153 ) ;
7293: LD_VAR 0 1
7297: PPUSH
7298: LD_INT 197
7300: PPUSH
7301: LD_INT 153
7303: PPUSH
7304: CALL_OW 158
// if apes and not HasTask ( i ) then
7308: LD_VAR 0 2
7312: PUSH
7313: LD_VAR 0 1
7317: PPUSH
7318: CALL_OW 314
7322: NOT
7323: AND
7324: IFFALSE 7363
// AddComTameXY ( i , GetX ( apes [ 1 ] ) , GetY ( apes [ 1 ] ) ) ;
7326: LD_VAR 0 1
7330: PPUSH
7331: LD_VAR 0 2
7335: PUSH
7336: LD_INT 1
7338: ARRAY
7339: PPUSH
7340: CALL_OW 250
7344: PPUSH
7345: LD_VAR 0 2
7349: PUSH
7350: LD_INT 1
7352: ARRAY
7353: PPUSH
7354: CALL_OW 251
7358: PPUSH
7359: CALL_OW 191
// if not apes and not HasTask ( i ) then
7363: LD_VAR 0 2
7367: NOT
7368: PUSH
7369: LD_VAR 0 1
7373: PPUSH
7374: CALL_OW 314
7378: NOT
7379: AND
7380: IFFALSE 7394
// ComEnterUnit ( i , al2 ) ;
7382: LD_VAR 0 1
7386: PPUSH
7387: LD_INT 16
7389: PPUSH
7390: CALL_OW 120
// end ;
7394: GO 7278
7396: POP
7397: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman ] , [ f_outside ] ] ) do
7398: LD_ADDR_VAR 0 1
7402: PUSH
7403: LD_INT 22
7405: PUSH
7406: LD_INT 2
7408: PUSH
7409: EMPTY
7410: LIST
7411: LIST
7412: PUSH
7413: LD_INT 25
7415: PUSH
7416: LD_INT 12
7418: PUSH
7419: EMPTY
7420: LIST
7421: LIST
7422: PUSH
7423: LD_INT 56
7425: PUSH
7426: EMPTY
7427: LIST
7428: PUSH
7429: EMPTY
7430: LIST
7431: LIST
7432: LIST
7433: PPUSH
7434: CALL_OW 69
7438: PUSH
7439: FOR_IN
7440: IFFALSE 7507
// if not HasTask ( i ) then
7442: LD_VAR 0 1
7446: PPUSH
7447: CALL_OW 314
7451: NOT
7452: IFFALSE 7505
// if UnitsInside ( af ) < 6 then
7454: LD_INT 10
7456: PPUSH
7457: CALL_OW 313
7461: PUSH
7462: LD_INT 6
7464: LESS
7465: IFFALSE 7481
// ComEnterUnit ( i , af ) else
7467: LD_VAR 0 1
7471: PPUSH
7472: LD_INT 10
7474: PPUSH
7475: CALL_OW 120
7479: GO 7505
// begin ComEnterUnit ( i , aa1 ) ;
7481: LD_VAR 0 1
7485: PPUSH
7486: LD_INT 22
7488: PPUSH
7489: CALL_OW 120
// AddComChangeProfession ( i , class_apeman_soldier ) ;
7493: LD_VAR 0 1
7497: PPUSH
7498: LD_INT 15
7500: PPUSH
7501: CALL_OW 183
// end ;
7505: GO 7439
7507: POP
7508: POP
// if UnitFilter ( UnitsInside ( af ) , [ f_class , class_apeman ] ) and not IsBusy ( af ) then
7509: LD_INT 10
7511: PPUSH
7512: CALL_OW 313
7516: PPUSH
7517: LD_INT 25
7519: PUSH
7520: LD_INT 12
7522: PUSH
7523: EMPTY
7524: LIST
7525: LIST
7526: PPUSH
7527: CALL_OW 72
7531: PUSH
7532: LD_INT 10
7534: PPUSH
7535: CALL_OW 315
7539: NOT
7540: AND
7541: IFFALSE 7585
// AddComConstruct ( af , ar_half_tracked , engine_combustion , control_apeman , [ ar_gun , ar_flame_thrower , ar_rocket_launcher ] [ Rand ( 1 , 3 ) ] ) ;
7543: LD_INT 10
7545: PPUSH
7546: LD_INT 14
7548: PPUSH
7549: LD_INT 1
7551: PPUSH
7552: LD_INT 5
7554: PPUSH
7555: LD_INT 27
7557: PUSH
7558: LD_INT 26
7560: PUSH
7561: LD_INT 28
7563: PUSH
7564: EMPTY
7565: LIST
7566: LIST
7567: LIST
7568: PUSH
7569: LD_INT 1
7571: PPUSH
7572: LD_INT 3
7574: PPUSH
7575: CALL_OW 12
7579: ARRAY
7580: PPUSH
7581: CALL_OW 185
// end ;
7585: PPOPN 2
7587: END
// every 0 0$1 trigger AAttackers do var i , AAttack ;
7588: LD_EXP 21
7592: IFFALSE 7756
7594: GO 7596
7596: DISABLE
7597: LD_INT 0
7599: PPUSH
7600: PPUSH
// begin enable ;
7601: ENABLE
// for i in AAttackers do
7602: LD_ADDR_VAR 0 1
7606: PUSH
7607: LD_EXP 21
7611: PUSH
7612: FOR_IN
7613: IFFALSE 7644
// if IsDying ( i ) then
7615: LD_VAR 0 1
7619: PPUSH
7620: CALL_OW 303
7624: IFFALSE 7642
// AAttackers = AAttackers diff i ;
7626: LD_ADDR_EXP 21
7630: PUSH
7631: LD_EXP 21
7635: PUSH
7636: LD_VAR 0 1
7640: DIFF
7641: ST_TO_ADDR
7642: GO 7612
7644: POP
7645: POP
// if not ExistMc ( AAttack ) and AAttackers >= 3 then
7646: LD_VAR 0 2
7650: PPUSH
7651: CALL_OW 386
7655: NOT
7656: PUSH
7657: LD_EXP 21
7661: PUSH
7662: LD_INT 3
7664: GREATEREQUAL
7665: AND
7666: IFFALSE 7756
// AAttack = McMove ( 1 , AAttackers , [ [ 135 , 127 ] , [ [ 157 , 129 ] , [ 175 , 145 ] ] [ Rand ( 1 , 2 ) ] , [ 187 , 134 ] ] , [ [ mc_move_agressive ] ] ) ;
7668: LD_ADDR_VAR 0 2
7672: PUSH
7673: LD_INT 1
7675: PPUSH
7676: LD_EXP 21
7680: PPUSH
7681: LD_INT 135
7683: PUSH
7684: LD_INT 127
7686: PUSH
7687: EMPTY
7688: LIST
7689: LIST
7690: PUSH
7691: LD_INT 157
7693: PUSH
7694: LD_INT 129
7696: PUSH
7697: EMPTY
7698: LIST
7699: LIST
7700: PUSH
7701: LD_INT 175
7703: PUSH
7704: LD_INT 145
7706: PUSH
7707: EMPTY
7708: LIST
7709: LIST
7710: PUSH
7711: EMPTY
7712: LIST
7713: LIST
7714: PUSH
7715: LD_INT 1
7717: PPUSH
7718: LD_INT 2
7720: PPUSH
7721: CALL_OW 12
7725: ARRAY
7726: PUSH
7727: LD_INT 187
7729: PUSH
7730: LD_INT 134
7732: PUSH
7733: EMPTY
7734: LIST
7735: LIST
7736: PUSH
7737: EMPTY
7738: LIST
7739: LIST
7740: LIST
7741: PPUSH
7742: LD_INT 6
7744: PUSH
7745: EMPTY
7746: LIST
7747: PUSH
7748: EMPTY
7749: LIST
7750: PPUSH
7751: CALL_OW 398
7755: ST_TO_ADDR
// end ;
7756: PPOPN 2
7758: END
// every 0 0$1 trigger ArabiansOver do var i ;
7759: LD_EXP 8
7763: IFFALSE 7995
7765: GO 7767
7767: DISABLE
7768: LD_INT 0
7770: PPUSH
// begin enable ;
7771: ENABLE
// KillMc ( ADefenceStrategy ) ;
7772: LD_EXP 26
7776: PPUSH
7777: CALL_OW 387
// KillMc ( ARepairStrategy ) ;
7781: LD_EXP 23
7785: PPUSH
7786: CALL_OW 387
// KillMc ( ABaseStrategy ) ;
7790: LD_EXP 24
7794: PPUSH
7795: CALL_OW 387
// KillMc ( AEnemies ) ;
7799: LD_EXP 25
7803: PPUSH
7804: CALL_OW 387
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_not , [ f_type , unit_building ] ] , [ f_ok ] ] ) do
7808: LD_ADDR_VAR 0 1
7812: PUSH
7813: LD_INT 22
7815: PUSH
7816: LD_INT 2
7818: PUSH
7819: EMPTY
7820: LIST
7821: LIST
7822: PUSH
7823: LD_INT 3
7825: PUSH
7826: LD_INT 21
7828: PUSH
7829: LD_INT 3
7831: PUSH
7832: EMPTY
7833: LIST
7834: LIST
7835: PUSH
7836: EMPTY
7837: LIST
7838: LIST
7839: PUSH
7840: LD_INT 50
7842: PUSH
7843: EMPTY
7844: LIST
7845: PUSH
7846: EMPTY
7847: LIST
7848: LIST
7849: LIST
7850: PPUSH
7851: CALL_OW 69
7855: PUSH
7856: FOR_IN
7857: IFFALSE 7948
// begin if IsInUnit ( i ) and GetType ( IsInUnit ( i ) ) = unit_building then
7859: LD_VAR 0 1
7863: PPUSH
7864: CALL_OW 310
7868: PUSH
7869: LD_VAR 0 1
7873: PPUSH
7874: CALL_OW 310
7878: PPUSH
7879: CALL_OW 247
7883: PUSH
7884: LD_INT 3
7886: EQUAL
7887: AND
7888: IFFALSE 7899
// ComExitBuilding ( i ) ;
7890: LD_VAR 0 1
7894: PPUSH
7895: CALL_OW 122
// if not HasTask ( i ) then
7899: LD_VAR 0 1
7903: PPUSH
7904: CALL_OW 314
7908: NOT
7909: IFFALSE 7923
// ComMoveToArea ( i , ArabsExitArea ) ;
7911: LD_VAR 0 1
7915: PPUSH
7916: LD_INT 10
7918: PPUSH
7919: CALL_OW 113
// if IsInArea ( i , ArabsExitArea ) then
7923: LD_VAR 0 1
7927: PPUSH
7928: LD_INT 10
7930: PPUSH
7931: CALL_OW 308
7935: IFFALSE 7946
// RemoveUnit ( i ) ;
7937: LD_VAR 0 1
7941: PPUSH
7942: CALL_OW 64
// end ;
7946: GO 7856
7948: POP
7949: POP
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_ok ] , [ f_not , [ f_type , unit_building ] ] ] ) then
7950: LD_INT 22
7952: PUSH
7953: LD_INT 2
7955: PUSH
7956: EMPTY
7957: LIST
7958: LIST
7959: PUSH
7960: LD_INT 50
7962: PUSH
7963: EMPTY
7964: LIST
7965: PUSH
7966: LD_INT 3
7968: PUSH
7969: LD_INT 21
7971: PUSH
7972: LD_INT 3
7974: PUSH
7975: EMPTY
7976: LIST
7977: LIST
7978: PUSH
7979: EMPTY
7980: LIST
7981: LIST
7982: PUSH
7983: EMPTY
7984: LIST
7985: LIST
7986: LIST
7987: PPUSH
7988: CALL_OW 69
7992: IFFALSE 7995
// disable ;
7994: DISABLE
// end ; end_of_file
7995: PPOPN 1
7997: END
// export Alex , Steve , ctrl ; export AntoineSpottedByAmericans ; export function PrepareAmericans ; var i ; begin
7998: LD_INT 0
8000: PPUSH
8001: PPUSH
// uc_side = 1 ;
8002: LD_ADDR_OWVAR 20
8006: PUSH
8007: LD_INT 1
8009: ST_TO_ADDR
// uc_nation = 1 ;
8010: LD_ADDR_OWVAR 21
8014: PUSH
8015: LD_INT 1
8017: ST_TO_ADDR
// SwitchToComputer ;
8018: CALL 688 0 0
// PrepareBase ( 1 , AmericanBaseArea , [ Rand ( 5 , 6 ) , Rand ( 5 , 7 ) , Rand ( 6 , 7 ) ] [ difficulty ] , 3 , 2 , 2 , 1 ) ;
8022: LD_INT 1
8024: PPUSH
8025: LD_INT 2
8027: PPUSH
8028: LD_INT 5
8030: PPUSH
8031: LD_INT 6
8033: PPUSH
8034: CALL_OW 12
8038: PUSH
8039: LD_INT 5
8041: PPUSH
8042: LD_INT 7
8044: PPUSH
8045: CALL_OW 12
8049: PUSH
8050: LD_INT 6
8052: PPUSH
8053: LD_INT 7
8055: PPUSH
8056: CALL_OW 12
8060: PUSH
8061: EMPTY
8062: LIST
8063: LIST
8064: LIST
8065: PUSH
8066: LD_OWVAR 67
8070: ARRAY
8071: PPUSH
8072: LD_INT 3
8074: PPUSH
8075: LD_INT 2
8077: PPUSH
8078: LD_INT 2
8080: PPUSH
8081: LD_INT 1
8083: PPUSH
8084: CALL 15392 0 7
// if IsOK ( ut ) then
8088: LD_INT 84
8090: PPUSH
8091: CALL_OW 302
8095: IFFALSE 8156
// for i = 1 to 2 do
8097: LD_ADDR_VAR 0 2
8101: PUSH
8102: DOUBLE
8103: LD_INT 1
8105: DEC
8106: ST_TO_ADDR
8107: LD_INT 2
8109: PUSH
8110: FOR_TO
8111: IFFALSE 8154
// begin PrepareMechanic ( false , [ 4 , 6 , 7 ] [ difficulty ] ) ;
8113: LD_INT 0
8115: PPUSH
8116: LD_INT 4
8118: PUSH
8119: LD_INT 6
8121: PUSH
8122: LD_INT 7
8124: PUSH
8125: EMPTY
8126: LIST
8127: LIST
8128: LIST
8129: PUSH
8130: LD_OWVAR 67
8134: ARRAY
8135: PPUSH
8136: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , ut ) ;
8140: CALL_OW 44
8144: PPUSH
8145: LD_INT 84
8147: PPUSH
8148: CALL_OW 52
// end ;
8152: GO 8110
8154: POP
8155: POP
// for i in FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_control , control_manual ] ] ) do
8156: LD_ADDR_VAR 0 2
8160: PUSH
8161: LD_INT 2
8163: PPUSH
8164: LD_INT 22
8166: PUSH
8167: LD_INT 1
8169: PUSH
8170: EMPTY
8171: LIST
8172: LIST
8173: PUSH
8174: LD_INT 33
8176: PUSH
8177: LD_INT 1
8179: PUSH
8180: EMPTY
8181: LIST
8182: LIST
8183: PUSH
8184: EMPTY
8185: LIST
8186: LIST
8187: PPUSH
8188: CALL_OW 70
8192: PUSH
8193: FOR_IN
8194: IFFALSE 8239
// begin PrepareMechanic ( false , [ 4 , 5 , 7 ] [ difficulty ] ) ;
8196: LD_INT 0
8198: PPUSH
8199: LD_INT 4
8201: PUSH
8202: LD_INT 5
8204: PUSH
8205: LD_INT 7
8207: PUSH
8208: EMPTY
8209: LIST
8210: LIST
8211: LIST
8212: PUSH
8213: LD_OWVAR 67
8217: ARRAY
8218: PPUSH
8219: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
8223: CALL_OW 44
8227: PPUSH
8228: LD_VAR 0 2
8232: PPUSH
8233: CALL_OW 52
// end ;
8237: GO 8193
8239: POP
8240: POP
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] ] ] ) do
8241: LD_ADDR_VAR 0 2
8245: PUSH
8246: LD_INT 22
8248: PUSH
8249: LD_INT 1
8251: PUSH
8252: EMPTY
8253: LIST
8254: LIST
8255: PUSH
8256: LD_INT 2
8258: PUSH
8259: LD_INT 30
8261: PUSH
8262: LD_INT 5
8264: PUSH
8265: EMPTY
8266: LIST
8267: LIST
8268: PUSH
8269: LD_INT 30
8271: PUSH
8272: LD_INT 31
8274: PUSH
8275: EMPTY
8276: LIST
8277: LIST
8278: PUSH
8279: EMPTY
8280: LIST
8281: LIST
8282: LIST
8283: PUSH
8284: EMPTY
8285: LIST
8286: LIST
8287: PPUSH
8288: CALL_OW 69
8292: PUSH
8293: FOR_IN
8294: IFFALSE 8343
// if GetNation ( UnitsInside ( i ) [ 1 ] ) <> nation_nature then
8296: LD_VAR 0 2
8300: PPUSH
8301: CALL_OW 313
8305: PUSH
8306: LD_INT 1
8308: ARRAY
8309: PPUSH
8310: CALL_OW 248
8314: PUSH
8315: LD_INT 0
8317: NONEQUAL
8318: IFFALSE 8341
// SetClass ( UnitsInside ( i ) [ 1 ] , class_sniper ) ;
8320: LD_VAR 0 2
8324: PPUSH
8325: CALL_OW 313
8329: PUSH
8330: LD_INT 1
8332: ARRAY
8333: PPUSH
8334: LD_INT 5
8336: PPUSH
8337: CALL_OW 336
8341: GO 8293
8343: POP
8344: POP
// if TestVariable ( EddingsKilled ) then
8345: LD_STRING EddingsKilled
8347: PPUSH
8348: CALL_OW 27
8352: IFFALSE 8364
// ctrl = control_computer else
8354: LD_ADDR_EXP 30
8358: PUSH
8359: LD_INT 3
8361: ST_TO_ADDR
8362: GO 8372
// ctrl = control_remote ;
8364: LD_ADDR_EXP 30
8368: PUSH
8369: LD_INT 2
8371: ST_TO_ADDR
// Alex = NewCharacter ( Alex ) ;
8372: LD_ADDR_EXP 28
8376: PUSH
8377: LD_STRING Alex
8379: PPUSH
8380: CALL_OW 25
8384: ST_TO_ADDR
// Steve = NewCharacter ( Steve ) ;
8385: LD_ADDR_EXP 29
8389: PUSH
8390: LD_STRING Steve
8392: PPUSH
8393: CALL_OW 25
8397: ST_TO_ADDR
// PlaceUnitXY ( Steve , 185 , 119 , false ) ;
8398: LD_EXP 29
8402: PPUSH
8403: LD_INT 185
8405: PPUSH
8406: LD_INT 119
8408: PPUSH
8409: LD_INT 0
8411: PPUSH
8412: CALL_OW 48
// ComHold ( Steve ) ;
8416: LD_EXP 29
8420: PPUSH
8421: CALL_OW 140
// for i in [ tech_Tech2 , tech_Tech3 , tech_Opto2 , tech_Weap2 , tech_Opto3 , tech_Weap3 ] do
8425: LD_ADDR_VAR 0 2
8429: PUSH
8430: LD_INT 49
8432: PUSH
8433: LD_INT 50
8435: PUSH
8436: LD_INT 61
8438: PUSH
8439: LD_INT 52
8441: PUSH
8442: LD_INT 62
8444: PUSH
8445: LD_INT 53
8447: PUSH
8448: EMPTY
8449: LIST
8450: LIST
8451: LIST
8452: LIST
8453: LIST
8454: LIST
8455: PUSH
8456: FOR_IN
8457: IFFALSE 8473
// AddComResearch ( ul , i ) ;
8459: LD_INT 80
8461: PPUSH
8462: LD_VAR 0 2
8466: PPUSH
8467: CALL_OW 184
8471: GO 8456
8473: POP
8474: POP
// end ;
8475: LD_VAR 0 1
8479: RET
// export UEngineers , UBuildings , UDefenders , UAttackers , UCargo ; export URepairStrategy , UBaseStrategy ; every 0 0$1 do var i ;
8480: GO 8482
8482: DISABLE
8483: LD_INT 0
8485: PPUSH
// begin enable ;
8486: ENABLE
// if USOver then
8487: LD_EXP 9
8491: IFFALSE 8496
// begin disable ;
8493: DISABLE
// exit ;
8494: GO 8943
// end ; UEngineers = FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_or , [ f_class , class_engineer ] , [ f_class , class_apeman_engineer ] ] ] ) ^ FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_crane ] ] ) ^ UnitFilter ( UnitsInside ( ud ) , [ f_side , 1 ] ) ;
8496: LD_ADDR_EXP 32
8500: PUSH
8501: LD_INT 2
8503: PPUSH
8504: LD_INT 22
8506: PUSH
8507: LD_INT 1
8509: PUSH
8510: EMPTY
8511: LIST
8512: LIST
8513: PUSH
8514: LD_INT 2
8516: PUSH
8517: LD_INT 25
8519: PUSH
8520: LD_INT 2
8522: PUSH
8523: EMPTY
8524: LIST
8525: LIST
8526: PUSH
8527: LD_INT 25
8529: PUSH
8530: LD_INT 16
8532: PUSH
8533: EMPTY
8534: LIST
8535: LIST
8536: PUSH
8537: EMPTY
8538: LIST
8539: LIST
8540: LIST
8541: PUSH
8542: EMPTY
8543: LIST
8544: LIST
8545: PPUSH
8546: CALL_OW 70
8550: PUSH
8551: LD_INT 22
8553: PUSH
8554: LD_INT 1
8556: PUSH
8557: EMPTY
8558: LIST
8559: LIST
8560: PUSH
8561: LD_INT 34
8563: PUSH
8564: LD_INT 13
8566: PUSH
8567: EMPTY
8568: LIST
8569: LIST
8570: PUSH
8571: EMPTY
8572: LIST
8573: LIST
8574: PPUSH
8575: CALL_OW 69
8579: ADD
8580: PUSH
8581: LD_INT 71
8583: PPUSH
8584: CALL_OW 313
8588: PPUSH
8589: LD_INT 22
8591: PUSH
8592: LD_INT 1
8594: PUSH
8595: EMPTY
8596: LIST
8597: LIST
8598: PPUSH
8599: CALL_OW 72
8603: ADD
8604: ST_TO_ADDR
// UBuildings = FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) ;
8605: LD_ADDR_EXP 33
8609: PUSH
8610: LD_INT 2
8612: PPUSH
8613: LD_INT 22
8615: PUSH
8616: LD_INT 1
8618: PUSH
8619: EMPTY
8620: LIST
8621: LIST
8622: PUSH
8623: LD_INT 21
8625: PUSH
8626: LD_INT 3
8628: PUSH
8629: EMPTY
8630: LIST
8631: LIST
8632: PUSH
8633: EMPTY
8634: LIST
8635: LIST
8636: PPUSH
8637: CALL_OW 70
8641: ST_TO_ADDR
// if not ExistMc ( UBaseStrategy ) then
8642: LD_EXP 38
8646: PPUSH
8647: CALL_OW 386
8651: NOT
8652: IFFALSE 8695
// UBaseStrategy = McBase ( 1 , UEngineers , GetBuildList ( GetBase ( ud ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
8654: LD_ADDR_EXP 38
8658: PUSH
8659: LD_INT 1
8661: PPUSH
8662: LD_EXP 32
8666: PPUSH
8667: LD_INT 71
8669: PPUSH
8670: CALL_OW 274
8674: PPUSH
8675: CALL_OW 417
8679: PPUSH
8680: EMPTY
8681: PPUSH
8682: EMPTY
8683: PPUSH
8684: LD_INT 1
8686: PUSH
8687: EMPTY
8688: LIST
8689: PPUSH
8690: CALL_OW 397
8694: ST_TO_ADDR
// if not ExistMc ( URepairStrategy ) and not FilterUnitsInArea ( AmericanDefenceArea , [ [ f_enemy , 1 ] , [ f_see , 1 ] ] ) then
8695: LD_EXP 37
8699: PPUSH
8700: CALL_OW 386
8704: NOT
8705: PUSH
8706: LD_INT 8
8708: PPUSH
8709: LD_INT 81
8711: PUSH
8712: LD_INT 1
8714: PUSH
8715: EMPTY
8716: LIST
8717: LIST
8718: PUSH
8719: LD_INT 101
8721: PUSH
8722: LD_INT 1
8724: PUSH
8725: EMPTY
8726: LIST
8727: LIST
8728: PUSH
8729: EMPTY
8730: LIST
8731: LIST
8732: PPUSH
8733: CALL_OW 70
8737: NOT
8738: AND
8739: IFFALSE 8777
// URepairStrategy = McRepair ( 2 , UEngineers , UBuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
8741: LD_ADDR_EXP 37
8745: PUSH
8746: LD_INT 2
8748: PPUSH
8749: LD_EXP 32
8753: PPUSH
8754: LD_EXP 33
8758: PPUSH
8759: LD_INT 6
8761: PUSH
8762: LD_INT 1000
8764: PUSH
8765: EMPTY
8766: LIST
8767: LIST
8768: PUSH
8769: EMPTY
8770: LIST
8771: PPUSH
8772: CALL_OW 414
8776: ST_TO_ADDR
// if FilterUnitsInArea ( AmericanDefenceArea , [ [ f_enemy , 1 ] , [ f_see , 1 ] ] ) then
8777: LD_INT 8
8779: PPUSH
8780: LD_INT 81
8782: PUSH
8783: LD_INT 1
8785: PUSH
8786: EMPTY
8787: LIST
8788: LIST
8789: PUSH
8790: LD_INT 101
8792: PUSH
8793: LD_INT 1
8795: PUSH
8796: EMPTY
8797: LIST
8798: LIST
8799: PUSH
8800: EMPTY
8801: LIST
8802: LIST
8803: PPUSH
8804: CALL_OW 70
8808: IFFALSE 8848
// begin KillMc ( URepairStrategy ) ;
8810: LD_EXP 37
8814: PPUSH
8815: CALL_OW 387
// for i in UEngineers do
8819: LD_ADDR_VAR 0 1
8823: PUSH
8824: LD_EXP 32
8828: PUSH
8829: FOR_IN
8830: IFFALSE 8846
// ComMoveToArea ( i , AmericanBackArea ) ;
8832: LD_VAR 0 1
8836: PPUSH
8837: LD_INT 7
8839: PPUSH
8840: CALL_OW 113
8844: GO 8829
8846: POP
8847: POP
// end ; UCargo = FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_cargo_bay ] ] ) ;
8848: LD_ADDR_EXP 36
8852: PUSH
8853: LD_INT 22
8855: PUSH
8856: LD_INT 1
8858: PUSH
8859: EMPTY
8860: LIST
8861: LIST
8862: PUSH
8863: LD_INT 34
8865: PUSH
8866: LD_INT 12
8868: PUSH
8869: EMPTY
8870: LIST
8871: LIST
8872: PUSH
8873: EMPTY
8874: LIST
8875: LIST
8876: PPUSH
8877: CALL_OW 69
8881: ST_TO_ADDR
// if GetListOfCratesInArea ( AmericanCratesArea ) then
8882: LD_INT 5
8884: PPUSH
8885: CALL_OW 435
8889: IFFALSE 8924
// AddComCollect ( UCargo , GetListOfCratesInArea ( AmericanCratesArea ) [ 1 ] , GetListOfCratesInArea ( AmericanCratesArea ) [ 2 ] ) ;
8891: LD_EXP 36
8895: PPUSH
8896: LD_INT 5
8898: PPUSH
8899: CALL_OW 435
8903: PUSH
8904: LD_INT 1
8906: ARRAY
8907: PPUSH
8908: LD_INT 5
8910: PPUSH
8911: CALL_OW 435
8915: PUSH
8916: LD_INT 2
8918: ARRAY
8919: PPUSH
8920: CALL_OW 177
// UDefenders = [ udv1 , udv2 , udv3 ] ;
8924: LD_ADDR_EXP 34
8928: PUSH
8929: LD_INT 148
8931: PUSH
8932: LD_INT 160
8934: PUSH
8935: LD_INT 152
8937: PUSH
8938: EMPTY
8939: LIST
8940: LIST
8941: LIST
8942: ST_TO_ADDR
// end ;
8943: PPOPN 1
8945: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_control , control_remote ] ] ) do var i , u ;
8946: LD_INT 22
8948: PUSH
8949: LD_INT 1
8951: PUSH
8952: EMPTY
8953: LIST
8954: LIST
8955: PUSH
8956: LD_INT 33
8958: PUSH
8959: LD_INT 2
8961: PUSH
8962: EMPTY
8963: LIST
8964: LIST
8965: PUSH
8966: EMPTY
8967: LIST
8968: LIST
8969: PPUSH
8970: CALL_OW 69
8974: IFFALSE 9080
8976: GO 8978
8978: DISABLE
8979: LD_INT 0
8981: PPUSH
8982: PPUSH
// begin enable ;
8983: ENABLE
// if USOver then
8984: LD_EXP 9
8988: IFFALSE 8993
// begin disable ;
8990: DISABLE
// exit ;
8991: GO 9080
// end ; for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_control , control_remote ] ] ) do
8993: LD_ADDR_VAR 0 1
8997: PUSH
8998: LD_INT 22
9000: PUSH
9001: LD_INT 1
9003: PUSH
9004: EMPTY
9005: LIST
9006: LIST
9007: PUSH
9008: LD_INT 33
9010: PUSH
9011: LD_INT 2
9013: PUSH
9014: EMPTY
9015: LIST
9016: LIST
9017: PUSH
9018: EMPTY
9019: LIST
9020: LIST
9021: PPUSH
9022: CALL_OW 69
9026: PUSH
9027: FOR_IN
9028: IFFALSE 9078
// if not IsControledBy ( i ) then
9030: LD_VAR 0 1
9034: PPUSH
9035: CALL_OW 312
9039: NOT
9040: IFFALSE 9076
// ComLinkTo ( i , UnitsInside ( ut ) [ Rand ( 1 , UnitsInside ( ut ) ) ] ) ;
9042: LD_VAR 0 1
9046: PPUSH
9047: LD_INT 84
9049: PPUSH
9050: CALL_OW 313
9054: PUSH
9055: LD_INT 1
9057: PPUSH
9058: LD_INT 84
9060: PPUSH
9061: CALL_OW 313
9065: PPUSH
9066: CALL_OW 12
9070: ARRAY
9071: PPUSH
9072: CALL_OW 135
9076: GO 9027
9078: POP
9079: POP
// end ;
9080: PPOPN 2
9082: END
// every 0 0$15 trigger FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var i , u ;
9083: LD_INT 2
9085: PPUSH
9086: LD_INT 22
9088: PUSH
9089: LD_INT 1
9091: PUSH
9092: EMPTY
9093: LIST
9094: LIST
9095: PUSH
9096: LD_INT 58
9098: PUSH
9099: EMPTY
9100: LIST
9101: PUSH
9102: LD_INT 53
9104: PUSH
9105: EMPTY
9106: LIST
9107: PUSH
9108: LD_INT 50
9110: PUSH
9111: EMPTY
9112: LIST
9113: PUSH
9114: LD_INT 2
9116: PUSH
9117: LD_INT 30
9119: PUSH
9120: LD_INT 32
9122: PUSH
9123: EMPTY
9124: LIST
9125: LIST
9126: PUSH
9127: LD_INT 30
9129: PUSH
9130: LD_INT 31
9132: PUSH
9133: EMPTY
9134: LIST
9135: LIST
9136: PUSH
9137: EMPTY
9138: LIST
9139: LIST
9140: LIST
9141: PUSH
9142: EMPTY
9143: LIST
9144: LIST
9145: LIST
9146: LIST
9147: LIST
9148: PPUSH
9149: CALL_OW 70
9153: IFFALSE 9296
9155: GO 9157
9157: DISABLE
9158: LD_INT 0
9160: PPUSH
9161: PPUSH
// begin enable ;
9162: ENABLE
// for i in FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_empty ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do
9163: LD_ADDR_VAR 0 1
9167: PUSH
9168: LD_INT 2
9170: PPUSH
9171: LD_INT 22
9173: PUSH
9174: LD_INT 1
9176: PUSH
9177: EMPTY
9178: LIST
9179: LIST
9180: PUSH
9181: LD_INT 58
9183: PUSH
9184: EMPTY
9185: LIST
9186: PUSH
9187: LD_INT 50
9189: PUSH
9190: EMPTY
9191: LIST
9192: PUSH
9193: LD_INT 2
9195: PUSH
9196: LD_INT 30
9198: PUSH
9199: LD_INT 32
9201: PUSH
9202: EMPTY
9203: LIST
9204: LIST
9205: PUSH
9206: LD_INT 30
9208: PUSH
9209: LD_INT 31
9211: PUSH
9212: EMPTY
9213: LIST
9214: LIST
9215: PUSH
9216: EMPTY
9217: LIST
9218: LIST
9219: LIST
9220: PUSH
9221: EMPTY
9222: LIST
9223: LIST
9224: LIST
9225: LIST
9226: PPUSH
9227: CALL_OW 70
9231: PUSH
9232: FOR_IN
9233: IFFALSE 9294
// begin u = UnitsInside ( NearestUnitToUnit ( [ ua1 , ua2 ] , i ) ) [ 1 ] ;
9235: LD_ADDR_VAR 0 2
9239: PUSH
9240: LD_INT 81
9242: PUSH
9243: LD_INT 292
9245: PUSH
9246: EMPTY
9247: LIST
9248: LIST
9249: PPUSH
9250: LD_VAR 0 1
9254: PPUSH
9255: CALL_OW 74
9259: PPUSH
9260: CALL_OW 313
9264: PUSH
9265: LD_INT 1
9267: ARRAY
9268: ST_TO_ADDR
// ComExitBuilding ( u ) ;
9269: LD_VAR 0 2
9273: PPUSH
9274: CALL_OW 122
// AddComEnterUnit ( u , i ) ;
9278: LD_VAR 0 2
9282: PPUSH
9283: LD_VAR 0 1
9287: PPUSH
9288: CALL_OW 180
// end ;
9292: GO 9232
9294: POP
9295: POP
// end ;
9296: PPOPN 2
9298: END
// export UEnemies , UDefenceStrategy ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_see , 1 ] ] ) do
9299: LD_INT 22
9301: PUSH
9302: LD_INT 8
9304: PUSH
9305: EMPTY
9306: LIST
9307: LIST
9308: PUSH
9309: LD_INT 101
9311: PUSH
9312: LD_INT 1
9314: PUSH
9315: EMPTY
9316: LIST
9317: LIST
9318: PUSH
9319: EMPTY
9320: LIST
9321: LIST
9322: PPUSH
9323: CALL_OW 69
9327: IFFALSE 9340
9329: GO 9331
9331: DISABLE
// AntoineSpottedByAmericans = true ;
9332: LD_ADDR_EXP 31
9336: PUSH
9337: LD_INT 1
9339: ST_TO_ADDR
9340: END
// every 0 0$1 do
9341: GO 9343
9343: DISABLE
// UEnemies = McRegistry ( 1 , [ [ mc_reg_area_to_protect , AmericanBaseArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
9344: LD_ADDR_EXP 39
9348: PUSH
9349: LD_INT 1
9351: PPUSH
9352: LD_INT 3
9354: PUSH
9355: LD_INT 2
9357: PUSH
9358: EMPTY
9359: LIST
9360: LIST
9361: PUSH
9362: LD_INT 1
9364: PUSH
9365: LD_INT 35
9367: PUSH
9368: EMPTY
9369: LIST
9370: LIST
9371: PUSH
9372: EMPTY
9373: LIST
9374: LIST
9375: PPUSH
9376: CALL_OW 399
9380: ST_TO_ADDR
9381: END
// every 0 0$1 trigger UDefenders do var i ;
9382: LD_EXP 34
9386: IFFALSE 9604
9388: GO 9390
9390: DISABLE
9391: LD_INT 0
9393: PPUSH
// begin enable ;
9394: ENABLE
// if USOver then
9395: LD_EXP 9
9399: IFFALSE 9404
// begin disable ;
9401: DISABLE
// exit ;
9402: GO 9604
// end ; if not ExistMc ( UDefenceStrategy ) and FilterUnitsInArea ( AmericanDefenceArea , [ [ f_enemy , 1 ] , [ f_ok ] ] ) then
9404: LD_EXP 40
9408: PPUSH
9409: CALL_OW 386
9413: NOT
9414: PUSH
9415: LD_INT 8
9417: PPUSH
9418: LD_INT 81
9420: PUSH
9421: LD_INT 1
9423: PUSH
9424: EMPTY
9425: LIST
9426: LIST
9427: PUSH
9428: LD_INT 50
9430: PUSH
9431: EMPTY
9432: LIST
9433: PUSH
9434: EMPTY
9435: LIST
9436: LIST
9437: PPUSH
9438: CALL_OW 70
9442: AND
9443: IFFALSE 9481
// UDefenceStrategy = McDefend ( 2 , UEnemies , UDefenders , [ [ mc_def_advantage , 200 ] ] ) ;
9445: LD_ADDR_EXP 40
9449: PUSH
9450: LD_INT 2
9452: PPUSH
9453: LD_EXP 39
9457: PPUSH
9458: LD_EXP 34
9462: PPUSH
9463: LD_INT 1
9465: PUSH
9466: LD_INT 200
9468: PUSH
9469: EMPTY
9470: LIST
9471: LIST
9472: PUSH
9473: EMPTY
9474: LIST
9475: PPUSH
9476: CALL_OW 401
9480: ST_TO_ADDR
// if ExistMc ( UDefenceStrategy ) and not FilterUnitsInArea ( AmericanDefenceArea , [ [ f_enemy , 1 ] , [ f_ok ] ] ) then
9481: LD_EXP 40
9485: PPUSH
9486: CALL_OW 386
9490: PUSH
9491: LD_INT 8
9493: PPUSH
9494: LD_INT 81
9496: PUSH
9497: LD_INT 1
9499: PUSH
9500: EMPTY
9501: LIST
9502: LIST
9503: PUSH
9504: LD_INT 50
9506: PUSH
9507: EMPTY
9508: LIST
9509: PUSH
9510: EMPTY
9511: LIST
9512: LIST
9513: PPUSH
9514: CALL_OW 70
9518: NOT
9519: AND
9520: IFFALSE 9560
// begin KillMc ( UDefenceStrategy ) ;
9522: LD_EXP 40
9526: PPUSH
9527: CALL_OW 387
// for i in UDefenders do
9531: LD_ADDR_VAR 0 1
9535: PUSH
9536: LD_EXP 34
9540: PUSH
9541: FOR_IN
9542: IFFALSE 9558
// ComMoveToArea ( i , AmericanRepairs ) ;
9544: LD_VAR 0 1
9548: PPUSH
9549: LD_INT 3
9551: PPUSH
9552: CALL_OW 113
9556: GO 9541
9558: POP
9559: POP
// end ; for i in UDefenders do
9560: LD_ADDR_VAR 0 1
9564: PUSH
9565: LD_EXP 34
9569: PUSH
9570: FOR_IN
9571: IFFALSE 9602
// if not IsInArea ( i , AmericanBaseArea ) then
9573: LD_VAR 0 1
9577: PPUSH
9578: LD_INT 2
9580: PPUSH
9581: CALL_OW 308
9585: NOT
9586: IFFALSE 9600
// ComMoveToArea ( i , AmericanBaseArea ) ;
9588: LD_VAR 0 1
9592: PPUSH
9593: LD_INT 2
9595: PPUSH
9596: CALL_OW 113
9600: GO 9570
9602: POP
9603: POP
// end ;
9604: PPOPN 1
9606: END
// every 0 0$1 trigger tick > [ 10 10$0 , 8 8$0 , 6 6$0 ] [ difficulty ] and AntoineSpottedByAmericans do
9607: LD_OWVAR 1
9611: PUSH
9612: LD_INT 21000
9614: PUSH
9615: LD_INT 16800
9617: PUSH
9618: LD_INT 12600
9620: PUSH
9621: EMPTY
9622: LIST
9623: LIST
9624: LIST
9625: PUSH
9626: LD_OWVAR 67
9630: ARRAY
9631: GREATER
9632: PUSH
9633: LD_EXP 31
9637: AND
9638: IFFALSE 9794
9640: GO 9642
9642: DISABLE
// begin enable ;
9643: ENABLE
// if USOver then
9644: LD_EXP 9
9648: IFFALSE 9653
// begin disable ;
9650: DISABLE
// exit ;
9651: GO 9794
// end ; if not IsBusy ( uf ) and UnitsInside ( uf ) and GetSide ( uf ) = 1 and UAttackers < [ 3 , 5 , 6 ] [ difficulty ] then
9653: LD_INT 72
9655: PPUSH
9656: CALL_OW 315
9660: NOT
9661: PUSH
9662: LD_INT 72
9664: PPUSH
9665: CALL_OW 313
9669: AND
9670: PUSH
9671: LD_INT 72
9673: PPUSH
9674: CALL_OW 255
9678: PUSH
9679: LD_INT 1
9681: EQUAL
9682: AND
9683: PUSH
9684: LD_EXP 35
9688: PUSH
9689: LD_INT 3
9691: PUSH
9692: LD_INT 5
9694: PUSH
9695: LD_INT 6
9697: PUSH
9698: EMPTY
9699: LIST
9700: LIST
9701: LIST
9702: PUSH
9703: LD_OWVAR 67
9707: ARRAY
9708: LESS
9709: AND
9710: IFFALSE 9794
// if not FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_radar ] , [ f_ok ] ] ) then
9712: LD_INT 22
9714: PUSH
9715: LD_INT 1
9717: PUSH
9718: EMPTY
9719: LIST
9720: LIST
9721: PUSH
9722: LD_INT 34
9724: PUSH
9725: LD_INT 11
9727: PUSH
9728: EMPTY
9729: LIST
9730: LIST
9731: PUSH
9732: LD_INT 50
9734: PUSH
9735: EMPTY
9736: LIST
9737: PUSH
9738: EMPTY
9739: LIST
9740: LIST
9741: LIST
9742: PPUSH
9743: CALL_OW 69
9747: NOT
9748: IFFALSE 9773
// AddComConstruct ( uf , us_medium_tracked , engine_combustion , ctrl , us_radar ) else
9750: LD_INT 72
9752: PPUSH
9753: LD_INT 3
9755: PPUSH
9756: LD_INT 1
9758: PPUSH
9759: LD_EXP 30
9763: PPUSH
9764: LD_INT 11
9766: PPUSH
9767: CALL_OW 185
9771: GO 9794
// AddComConstruct ( uf , us_heavy_tracked , engine_combustion , ctrl , us_rocket_launcher ) ;
9773: LD_INT 72
9775: PPUSH
9776: LD_INT 4
9778: PPUSH
9779: LD_INT 1
9781: PPUSH
9782: LD_EXP 30
9786: PPUSH
9787: LD_INT 7
9789: PPUSH
9790: CALL_OW 185
// end ;
9794: END
// var AntoineBaseSpotted ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_see , 1 ] , [ f_type , unit_building ] ] ) do
9795: LD_INT 22
9797: PUSH
9798: LD_INT 8
9800: PUSH
9801: EMPTY
9802: LIST
9803: LIST
9804: PUSH
9805: LD_INT 101
9807: PUSH
9808: LD_INT 1
9810: PUSH
9811: EMPTY
9812: LIST
9813: LIST
9814: PUSH
9815: LD_INT 21
9817: PUSH
9818: LD_INT 3
9820: PUSH
9821: EMPTY
9822: LIST
9823: LIST
9824: PUSH
9825: EMPTY
9826: LIST
9827: LIST
9828: LIST
9829: PPUSH
9830: CALL_OW 69
9834: IFFALSE 9891
9836: GO 9838
9838: DISABLE
// begin enable ;
9839: ENABLE
// AntoineBaseSpotted = AntoineBaseSpotted union FilterAllUnits ( [ [ f_side , 8 ] , [ f_see , 1 ] , [ f_type , unit_building ] ] ) ;
9840: LD_ADDR_LOC 1
9844: PUSH
9845: LD_LOC 1
9849: PUSH
9850: LD_INT 22
9852: PUSH
9853: LD_INT 8
9855: PUSH
9856: EMPTY
9857: LIST
9858: LIST
9859: PUSH
9860: LD_INT 101
9862: PUSH
9863: LD_INT 1
9865: PUSH
9866: EMPTY
9867: LIST
9868: LIST
9869: PUSH
9870: LD_INT 21
9872: PUSH
9873: LD_INT 3
9875: PUSH
9876: EMPTY
9877: LIST
9878: LIST
9879: PUSH
9880: EMPTY
9881: LIST
9882: LIST
9883: LIST
9884: PPUSH
9885: CALL_OW 69
9889: UNION
9890: ST_TO_ADDR
// end ;
9891: END
// every 0 0$1 do var i , j ;
9892: GO 9894
9894: DISABLE
9895: LD_INT 0
9897: PPUSH
9898: PPUSH
// begin enable ;
9899: ENABLE
// if USOver then
9900: LD_EXP 9
9904: IFFALSE 9909
// begin disable ;
9906: DISABLE
// exit ;
9907: GO 10440
// end ; for i in UAttackers do
9909: LD_ADDR_VAR 0 1
9913: PUSH
9914: LD_EXP 35
9918: PUSH
9919: FOR_IN
9920: IFFALSE 10438
// begin if GetWeapon ( i ) = us_radar then
9922: LD_VAR 0 1
9926: PPUSH
9927: CALL_OW 264
9931: PUSH
9932: LD_INT 11
9934: EQUAL
9935: IFFALSE 10290
// begin if not IsBusy ( i ) then
9937: LD_VAR 0 1
9941: PPUSH
9942: CALL_OW 315
9946: NOT
9947: IFFALSE 10249
// case Rand ( 1 , 3 ) of 1 :
9949: LD_INT 1
9951: PPUSH
9952: LD_INT 3
9954: PPUSH
9955: CALL_OW 12
9959: PUSH
9960: LD_INT 1
9962: DOUBLE
9963: EQUAL
9964: IFTRUE 9968
9966: GO 10045
9968: POP
// for j in [ [ 160 , 76 ] , [ 148 , 30 ] , [ 174 , 109 ] ] do
9969: LD_ADDR_VAR 0 2
9973: PUSH
9974: LD_INT 160
9976: PUSH
9977: LD_INT 76
9979: PUSH
9980: EMPTY
9981: LIST
9982: LIST
9983: PUSH
9984: LD_INT 148
9986: PUSH
9987: LD_INT 30
9989: PUSH
9990: EMPTY
9991: LIST
9992: LIST
9993: PUSH
9994: LD_INT 174
9996: PUSH
9997: LD_INT 109
9999: PUSH
10000: EMPTY
10001: LIST
10002: LIST
10003: PUSH
10004: EMPTY
10005: LIST
10006: LIST
10007: LIST
10008: PUSH
10009: FOR_IN
10010: IFFALSE 10041
// AddComMoveXY ( i , j [ 1 ] , j [ 2 ] ) ; 2 :
10012: LD_VAR 0 1
10016: PPUSH
10017: LD_VAR 0 2
10021: PUSH
10022: LD_INT 1
10024: ARRAY
10025: PPUSH
10026: LD_VAR 0 2
10030: PUSH
10031: LD_INT 2
10033: ARRAY
10034: PPUSH
10035: CALL_OW 171
10039: GO 10009
10041: POP
10042: POP
10043: GO 10249
10045: LD_INT 2
10047: DOUBLE
10048: EQUAL
10049: IFTRUE 10053
10051: GO 10163
10053: POP
// for j in [ [ 120 , 75 ] , [ 92 , 32 ] , [ 126 , 16 ] , [ 71 , 26 ] , [ 106 , 64 ] , [ 174 , 109 ] ] do
10054: LD_ADDR_VAR 0 2
10058: PUSH
10059: LD_INT 120
10061: PUSH
10062: LD_INT 75
10064: PUSH
10065: EMPTY
10066: LIST
10067: LIST
10068: PUSH
10069: LD_INT 92
10071: PUSH
10072: LD_INT 32
10074: PUSH
10075: EMPTY
10076: LIST
10077: LIST
10078: PUSH
10079: LD_INT 126
10081: PUSH
10082: LD_INT 16
10084: PUSH
10085: EMPTY
10086: LIST
10087: LIST
10088: PUSH
10089: LD_INT 71
10091: PUSH
10092: LD_INT 26
10094: PUSH
10095: EMPTY
10096: LIST
10097: LIST
10098: PUSH
10099: LD_INT 106
10101: PUSH
10102: LD_INT 64
10104: PUSH
10105: EMPTY
10106: LIST
10107: LIST
10108: PUSH
10109: LD_INT 174
10111: PUSH
10112: LD_INT 109
10114: PUSH
10115: EMPTY
10116: LIST
10117: LIST
10118: PUSH
10119: EMPTY
10120: LIST
10121: LIST
10122: LIST
10123: LIST
10124: LIST
10125: LIST
10126: PUSH
10127: FOR_IN
10128: IFFALSE 10159
// AddComMoveXY ( i , j [ 1 ] , j [ 2 ] ) ; 3 :
10130: LD_VAR 0 1
10134: PPUSH
10135: LD_VAR 0 2
10139: PUSH
10140: LD_INT 1
10142: ARRAY
10143: PPUSH
10144: LD_VAR 0 2
10148: PUSH
10149: LD_INT 2
10151: ARRAY
10152: PPUSH
10153: CALL_OW 171
10157: GO 10127
10159: POP
10160: POP
10161: GO 10249
10163: LD_INT 3
10165: DOUBLE
10166: EQUAL
10167: IFTRUE 10171
10169: GO 10248
10171: POP
// for j in [ [ 120 , 87 ] , [ 79 , 75 ] , [ 174 , 109 ] ] do
10172: LD_ADDR_VAR 0 2
10176: PUSH
10177: LD_INT 120
10179: PUSH
10180: LD_INT 87
10182: PUSH
10183: EMPTY
10184: LIST
10185: LIST
10186: PUSH
10187: LD_INT 79
10189: PUSH
10190: LD_INT 75
10192: PUSH
10193: EMPTY
10194: LIST
10195: LIST
10196: PUSH
10197: LD_INT 174
10199: PUSH
10200: LD_INT 109
10202: PUSH
10203: EMPTY
10204: LIST
10205: LIST
10206: PUSH
10207: EMPTY
10208: LIST
10209: LIST
10210: LIST
10211: PUSH
10212: FOR_IN
10213: IFFALSE 10244
// AddComMoveXY ( i , j [ 1 ] , j [ 2 ] ) ; end ;
10215: LD_VAR 0 1
10219: PPUSH
10220: LD_VAR 0 2
10224: PUSH
10225: LD_INT 1
10227: ARRAY
10228: PPUSH
10229: LD_VAR 0 2
10233: PUSH
10234: LD_INT 2
10236: ARRAY
10237: PPUSH
10238: CALL_OW 171
10242: GO 10212
10244: POP
10245: POP
10246: GO 10249
10248: POP
// if IsInArea ( i , AmericanBaseArea ) and not See ( 8 , i ) then
10249: LD_VAR 0 1
10253: PPUSH
10254: LD_INT 2
10256: PPUSH
10257: CALL_OW 308
10261: PUSH
10262: LD_INT 8
10264: PPUSH
10265: LD_VAR 0 1
10269: PPUSH
10270: CALL_OW 292
10274: NOT
10275: AND
10276: IFFALSE 10290
// SetFuel ( i , 90 ) ;
10278: LD_VAR 0 1
10282: PPUSH
10283: LD_INT 90
10285: PPUSH
10286: CALL_OW 240
// end ; if GetWeapon ( i ) = us_rocket_launcher and IsControledBy ( i ) then
10290: LD_VAR 0 1
10294: PPUSH
10295: CALL_OW 264
10299: PUSH
10300: LD_INT 7
10302: EQUAL
10303: PUSH
10304: LD_VAR 0 1
10308: PPUSH
10309: CALL_OW 312
10313: AND
10314: IFFALSE 10436
// if UnitFilter ( UAttackers , [ f_weapon , us_rocket_launcher ] ) >= [ 2 , 3 , 3 ] and AntoineBaseSpotted then
10316: LD_EXP 35
10320: PPUSH
10321: LD_INT 34
10323: PUSH
10324: LD_INT 7
10326: PUSH
10327: EMPTY
10328: LIST
10329: LIST
10330: PPUSH
10331: CALL_OW 72
10335: PUSH
10336: LD_INT 2
10338: PUSH
10339: LD_INT 3
10341: PUSH
10342: LD_INT 3
10344: PUSH
10345: EMPTY
10346: LIST
10347: LIST
10348: LIST
10349: GREATEREQUAL
10350: PUSH
10351: LD_LOC 1
10355: AND
10356: IFFALSE 10409
// ComAttackPlace ( i , GetX ( NearestUnitToUnit ( AntoineBaseSpotted , i ) ) , GetY ( NearestUnitToUnit ( AntoineBaseSpotted , i ) ) ) else
10358: LD_VAR 0 1
10362: PPUSH
10363: LD_LOC 1
10367: PPUSH
10368: LD_VAR 0 1
10372: PPUSH
10373: CALL_OW 74
10377: PPUSH
10378: CALL_OW 250
10382: PPUSH
10383: LD_LOC 1
10387: PPUSH
10388: LD_VAR 0 1
10392: PPUSH
10393: CALL_OW 74
10397: PPUSH
10398: CALL_OW 251
10402: PPUSH
10403: CALL_OW 116
10407: GO 10436
// if not IsInArea ( i , AmericanRocketDefense ) then
10409: LD_VAR 0 1
10413: PPUSH
10414: LD_INT 20
10416: PPUSH
10417: CALL_OW 308
10421: NOT
10422: IFFALSE 10436
// ComMoveToArea ( i , AmericanRocketDefense ) ;
10424: LD_VAR 0 1
10428: PPUSH
10429: LD_INT 20
10431: PPUSH
10432: CALL_OW 113
// end ;
10436: GO 9919
10438: POP
10439: POP
// end ; end_of_file
10440: PPOPN 2
10442: END
// export OwnLosses , DeadFriends , BombsTalked ; every 0 0$1 do var i ;
10443: GO 10445
10445: DISABLE
10446: LD_INT 0
10448: PPUSH
// begin case tick of 1 .. 30 30$0 :
10449: LD_OWVAR 1
10453: PUSH
10454: LD_INT 1
10456: DOUBLE
10457: GREATEREQUAL
10458: IFFALSE 10466
10460: LD_INT 63000
10462: DOUBLE
10463: LESSEQUAL
10464: IFTRUE 10468
10466: GO 10519
10468: POP
// Wait ( [ Rand ( 1 1$0 , 1 1$30 ) , Rand ( 1 1$0 , 1 1$15 ) , Rand ( 0 0$45 , 1 1$0 ) ] [ difficulty ] ) ; 30 30$0 + 1 .. 90 90$0 :
10469: LD_INT 2100
10471: PPUSH
10472: LD_INT 3150
10474: PPUSH
10475: CALL_OW 12
10479: PUSH
10480: LD_INT 2100
10482: PPUSH
10483: LD_INT 2625
10485: PPUSH
10486: CALL_OW 12
10490: PUSH
10491: LD_INT 1575
10493: PPUSH
10494: LD_INT 2100
10496: PPUSH
10497: CALL_OW 12
10501: PUSH
10502: EMPTY
10503: LIST
10504: LIST
10505: LIST
10506: PUSH
10507: LD_OWVAR 67
10511: ARRAY
10512: PPUSH
10513: CALL_OW 67
10517: GO 10604
10519: LD_INT 63000
10521: PUSH
10522: LD_INT 1
10524: PLUS
10525: DOUBLE
10526: GREATEREQUAL
10527: IFFALSE 10535
10529: LD_INT 189000
10531: DOUBLE
10532: LESSEQUAL
10533: IFTRUE 10537
10535: GO 10588
10537: POP
// Wait ( [ Rand ( 1 1$30 , 2 2$0 ) , Rand ( 1 1$15 , 2 2$0 ) , Rand ( 1 1$15 , 2 2$0 ) ] [ difficulty ] ) ; else
10538: LD_INT 3150
10540: PPUSH
10541: LD_INT 4200
10543: PPUSH
10544: CALL_OW 12
10548: PUSH
10549: LD_INT 2625
10551: PPUSH
10552: LD_INT 4200
10554: PPUSH
10555: CALL_OW 12
10559: PUSH
10560: LD_INT 2625
10562: PPUSH
10563: LD_INT 4200
10565: PPUSH
10566: CALL_OW 12
10570: PUSH
10571: EMPTY
10572: LIST
10573: LIST
10574: LIST
10575: PUSH
10576: LD_OWVAR 67
10580: ARRAY
10581: PPUSH
10582: CALL_OW 67
10586: GO 10604
10588: POP
// Wait ( Rand ( 2 2$0 , 3 3$0 ) ) ; end ;
10589: LD_INT 4200
10591: PPUSH
10592: LD_INT 6300
10594: PPUSH
10595: CALL_OW 12
10599: PPUSH
10600: CALL_OW 67
// for i in [ AmericanCratesArea , ArabianCratesArea ] do
10604: LD_ADDR_VAR 0 1
10608: PUSH
10609: LD_INT 5
10611: PUSH
10612: LD_INT 6
10614: PUSH
10615: EMPTY
10616: LIST
10617: LIST
10618: PUSH
10619: FOR_IN
10620: IFFALSE 10662
// begin CreateCratesArea ( Rand ( 3 , 5 ) , i , true ) ;
10622: LD_INT 3
10624: PPUSH
10625: LD_INT 5
10627: PPUSH
10628: CALL_OW 12
10632: PPUSH
10633: LD_VAR 0 1
10637: PPUSH
10638: LD_INT 1
10640: PPUSH
10641: CALL_OW 55
// Wait ( Rand ( 0 0$5 , 0 0$20 ) ) ;
10645: LD_INT 175
10647: PPUSH
10648: LD_INT 700
10650: PPUSH
10651: CALL_OW 12
10655: PPUSH
10656: CALL_OW 67
// end ;
10660: GO 10619
10662: POP
10663: POP
// enable ;
10664: ENABLE
// end ;
10665: PPOPN 1
10667: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 8 ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) do
10668: LD_INT 22
10670: PUSH
10671: LD_INT 8
10673: PUSH
10674: EMPTY
10675: LIST
10676: LIST
10677: PUSH
10678: LD_INT 2
10680: PUSH
10681: LD_INT 30
10683: PUSH
10684: LD_INT 0
10686: PUSH
10687: EMPTY
10688: LIST
10689: LIST
10690: PUSH
10691: LD_INT 30
10693: PUSH
10694: LD_INT 1
10696: PUSH
10697: EMPTY
10698: LIST
10699: LIST
10700: PUSH
10701: EMPTY
10702: LIST
10703: LIST
10704: LIST
10705: PUSH
10706: EMPTY
10707: LIST
10708: LIST
10709: PPUSH
10710: CALL_OW 69
10714: IFFALSE 10830
10716: GO 10718
10718: DISABLE
// begin case tick of 1 .. 45 45$0 :
10719: LD_OWVAR 1
10723: PUSH
10724: LD_INT 1
10726: DOUBLE
10727: GREATEREQUAL
10728: IFFALSE 10736
10730: LD_INT 94500
10732: DOUBLE
10733: LESSEQUAL
10734: IFTRUE 10738
10736: GO 10756
10738: POP
// Wait ( Rand ( 1 1$0 , 2 2$15 ) ) ; 45 45$0 + 1 .. 120 120$0 :
10739: LD_INT 2100
10741: PPUSH
10742: LD_INT 4725
10744: PPUSH
10745: CALL_OW 12
10749: PPUSH
10750: CALL_OW 67
10754: GO 10808
10756: LD_INT 94500
10758: PUSH
10759: LD_INT 1
10761: PLUS
10762: DOUBLE
10763: GREATEREQUAL
10764: IFFALSE 10772
10766: LD_INT 252000
10768: DOUBLE
10769: LESSEQUAL
10770: IFTRUE 10774
10772: GO 10792
10774: POP
// Wait ( Rand ( 1 1$30 , 3 3$30 ) ) ; else
10775: LD_INT 3150
10777: PPUSH
10778: LD_INT 7350
10780: PPUSH
10781: CALL_OW 12
10785: PPUSH
10786: CALL_OW 67
10790: GO 10808
10792: POP
// Wait ( Rand ( 2 2$0 , 4 4$0 ) ) ; end ;
10793: LD_INT 4200
10795: PPUSH
10796: LD_INT 8400
10798: PPUSH
10799: CALL_OW 12
10803: PPUSH
10804: CALL_OW 67
// CreateCratesArea ( Rand ( 2 , 5 ) , PlayerCratesArea , true ) ;
10808: LD_INT 2
10810: PPUSH
10811: LD_INT 5
10813: PPUSH
10814: CALL_OW 12
10818: PPUSH
10819: LD_INT 4
10821: PPUSH
10822: LD_INT 1
10824: PPUSH
10825: CALL_OW 55
// enable ;
10829: ENABLE
// end ;
10830: END
// every 4 4$20 do
10831: GO 10833
10833: DISABLE
// CreateCratesAnywhere ( Rand ( 1 , 5 ) , true ) ;
10834: LD_INT 1
10836: PPUSH
10837: LD_INT 5
10839: PPUSH
10840: CALL_OW 12
10844: PPUSH
10845: LD_INT 1
10847: PPUSH
10848: CALL_OW 57
10852: END
// export function InitApeman ; begin
10853: LD_INT 0
10855: PPUSH
// InitUc ;
10856: CALL_OW 18
// InitHc ;
10860: CALL_OW 19
// uc_side = 0 ;
10864: LD_ADDR_OWVAR 20
10868: PUSH
10869: LD_INT 0
10871: ST_TO_ADDR
// uc_nation = nation_nature ;
10872: LD_ADDR_OWVAR 21
10876: PUSH
10877: LD_INT 0
10879: ST_TO_ADDR
// hc_class = class_apeman ;
10880: LD_ADDR_OWVAR 28
10884: PUSH
10885: LD_INT 12
10887: ST_TO_ADDR
// end ;
10888: LD_VAR 0 1
10892: RET
// every 0 0$1 trigger FilterUnitsInArea ( ApemenArea , [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) = 0 and not ArabiansOver marked 2 do var i ;
10893: LD_INT 13
10895: PPUSH
10896: LD_INT 22
10898: PUSH
10899: LD_INT 0
10901: PUSH
10902: EMPTY
10903: LIST
10904: LIST
10905: PUSH
10906: LD_INT 25
10908: PUSH
10909: LD_INT 12
10911: PUSH
10912: EMPTY
10913: LIST
10914: LIST
10915: PUSH
10916: EMPTY
10917: LIST
10918: LIST
10919: PPUSH
10920: CALL_OW 70
10924: PUSH
10925: LD_INT 0
10927: EQUAL
10928: PUSH
10929: LD_EXP 8
10933: NOT
10934: AND
10935: IFFALSE 11004
10937: GO 10939
10939: DISABLE
10940: LD_INT 0
10942: PPUSH
// begin enable ;
10943: ENABLE
// disable ( 2 ) ;
10944: LD_INT 2
10946: DISABLE_MARKED
// for i = 1 to 2 do
10947: LD_ADDR_VAR 0 1
10951: PUSH
10952: DOUBLE
10953: LD_INT 1
10955: DEC
10956: ST_TO_ADDR
10957: LD_INT 2
10959: PUSH
10960: FOR_TO
10961: IFFALSE 10999
// begin Wait ( Rand ( 2 2$0 , 4 4$30 ) ) ;
10963: LD_INT 4200
10965: PPUSH
10966: LD_INT 9450
10968: PPUSH
10969: CALL_OW 12
10973: PPUSH
10974: CALL_OW 67
// InitApeman ;
10978: CALL 10853 0 0
// PlaceUnitArea ( CreateHuman , ApemenArea , false ) ;
10982: CALL_OW 44
10986: PPUSH
10987: LD_INT 13
10989: PPUSH
10990: LD_INT 0
10992: PPUSH
10993: CALL_OW 49
// end ;
10997: GO 10960
10999: POP
11000: POP
// enable ( 2 ) ;
11001: LD_INT 2
11003: ENABLE_MARKED
// end ;
11004: PPOPN 1
11006: END
// on UnitGoesToRed ( u ) do begin if u = Mahmoud then
11007: LD_VAR 0 1
11011: PUSH
11012: LD_EXP 15
11016: EQUAL
11017: IFFALSE 11186
// begin KillMc ( ADefenceStrategy ) ;
11019: LD_EXP 26
11023: PPUSH
11024: CALL_OW 387
// KillMc ( ABaseStrategy ) ;
11028: LD_EXP 24
11032: PPUSH
11033: CALL_OW 387
// KillMc ( ARepairStrategy ) ;
11037: LD_EXP 23
11041: PPUSH
11042: CALL_OW 387
// CenterOnUnits ( Mahmoud ) ;
11046: LD_EXP 15
11050: PPUSH
11051: CALL_OW 85
// ForceSay ( Mahmoud , da-m-3 ) ;
11055: LD_EXP 15
11059: PPUSH
11060: LD_STRING da-m-3
11062: PPUSH
11063: CALL_OW 91
// Say ( Antoine , da-a-2 ) ;
11067: LD_EXP 1
11071: PPUSH
11072: LD_STRING da-a-2
11074: PPUSH
11075: CALL_OW 88
// if not UnitFilter ( OtherSavedArabs , [ f_ok ] ) then
11079: LD_EXP 16
11083: PPUSH
11084: LD_INT 50
11086: PUSH
11087: EMPTY
11088: LIST
11089: PPUSH
11090: CALL_OW 72
11094: NOT
11095: IFFALSE 11126
// repeat Wait ( 0 0$1 ) until IsDead ( Gom ) and IsDead ( Kuronski ) ;
11097: LD_INT 35
11099: PPUSH
11100: CALL_OW 67
11104: LD_EXP 13
11108: PPUSH
11109: CALL_OW 301
11113: PUSH
11114: LD_EXP 14
11118: PPUSH
11119: CALL_OW 301
11123: AND
11124: IFFALSE 11097
// DArabiansOver ;
11126: CALL 2707 0 0
// repeat Wait ( 0 0$1 ) until FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) = 0 ;
11130: LD_INT 35
11132: PPUSH
11133: CALL_OW 67
11137: LD_INT 22
11139: PUSH
11140: LD_INT 2
11142: PUSH
11143: EMPTY
11144: LIST
11145: LIST
11146: PUSH
11147: LD_INT 21
11149: PUSH
11150: LD_INT 1
11152: PUSH
11153: EMPTY
11154: LIST
11155: LIST
11156: PUSH
11157: EMPTY
11158: LIST
11159: LIST
11160: PPUSH
11161: CALL_OW 69
11165: PUSH
11166: LD_INT 0
11168: EQUAL
11169: IFFALSE 11130
// if not USOver then
11171: LD_EXP 9
11175: NOT
11176: IFFALSE 11182
// DWhatAboutAmericans ;
11178: CALL 3267 0 0
// DWhatAboutSiberite ;
11182: CALL 3482 0 0
// end ; if u = Bojan then
11186: LD_VAR 0 1
11190: PUSH
11191: LD_EXP 12
11195: EQUAL
11196: IFFALSE 11256
// begin CenterOnUnits ( Bojan ) ;
11198: LD_EXP 12
11202: PPUSH
11203: CALL_OW 85
// ForceSay ( Bojan , da-b-1 ) ;
11207: LD_EXP 12
11211: PPUSH
11212: LD_STRING da-b-1
11214: PPUSH
11215: CALL_OW 91
// if IsOK ( Ende ) then
11219: LD_EXP 2
11223: PPUSH
11224: CALL_OW 302
11228: IFFALSE 11244
// Say ( Ende , da-e-1 ) else
11230: LD_EXP 2
11234: PPUSH
11235: LD_STRING da-e-1
11237: PPUSH
11238: CALL_OW 88
11242: GO 11256
// Say ( Antoine , da-a-3 ) ;
11244: LD_EXP 1
11248: PPUSH
11249: LD_STRING da-a-3
11251: PPUSH
11252: CALL_OW 88
// end ; if u = Steve then
11256: LD_VAR 0 1
11260: PUSH
11261: LD_EXP 29
11265: EQUAL
11266: IFFALSE 11301
// begin CenterOnUnits ( Steve ) ;
11268: LD_EXP 29
11272: PPUSH
11273: CALL_OW 85
// ForceSay ( Steve , dh-c-2 ) ;
11277: LD_EXP 29
11281: PPUSH
11282: LD_STRING dh-c-2
11284: PPUSH
11285: CALL_OW 91
// Say ( Antoine , dh-a-2 ) ;
11289: LD_EXP 1
11293: PPUSH
11294: LD_STRING dh-a-2
11296: PPUSH
11297: CALL_OW 88
// end ; end ;
11301: PPOPN 1
11303: END
// on VehicleConstructed ( v , f ) do begin if GetSide ( v ) = 1 and not GetWeapon ( v ) = us_cargo_bay then
11304: LD_VAR 0 1
11308: PPUSH
11309: CALL_OW 255
11313: PUSH
11314: LD_INT 1
11316: EQUAL
11317: PUSH
11318: LD_VAR 0 1
11322: PPUSH
11323: CALL_OW 264
11327: PUSH
11328: LD_INT 12
11330: EQUAL
11331: NOT
11332: AND
11333: IFFALSE 11351
// UAttackers = UAttackers ^ v ;
11335: LD_ADDR_EXP 35
11339: PUSH
11340: LD_EXP 35
11344: PUSH
11345: LD_VAR 0 1
11349: ADD
11350: ST_TO_ADDR
// if GetSide ( v ) = 2 and not GetWeapon ( v ) = ar_cargo_bay then
11351: LD_VAR 0 1
11355: PPUSH
11356: CALL_OW 255
11360: PUSH
11361: LD_INT 2
11363: EQUAL
11364: PUSH
11365: LD_VAR 0 1
11369: PPUSH
11370: CALL_OW 264
11374: PUSH
11375: LD_INT 32
11377: EQUAL
11378: NOT
11379: AND
11380: IFFALSE 11398
// AAttackers = AAttackers ^ v ;
11382: LD_ADDR_EXP 21
11386: PUSH
11387: LD_EXP 21
11391: PUSH
11392: LD_VAR 0 1
11396: ADD
11397: ST_TO_ADDR
// end ;
11398: PPOPN 2
11400: END
// on ResearchComplete ( t , l ) do begin if t = tech_Rocket and GetSide ( l ) = 8 then
11401: LD_VAR 0 1
11405: PUSH
11406: LD_INT 40
11408: EQUAL
11409: PUSH
11410: LD_VAR 0 2
11414: PPUSH
11415: CALL_OW 255
11419: PUSH
11420: LD_INT 8
11422: EQUAL
11423: AND
11424: IFFALSE 11435
// DRocket ( l ) ;
11426: LD_VAR 0 2
11430: PPUSH
11431: CALL 1617 0 1
// if t = tech_SibContam then
11435: LD_VAR 0 1
11439: PUSH
11440: LD_INT 26
11442: EQUAL
11443: IFFALSE 11526
// begin DialogueOn ;
11445: CALL_OW 6
// CenterOnUnits ( l ) ;
11449: LD_VAR 0 2
11453: PPUSH
11454: CALL_OW 85
// Say ( FindMaxSkill ( UnitFilter ( TeamAntoine ^ OtherSavedArabs , [ f_ok ] ) , skill_scientistic ) , ds-n-1 ) ;
11458: LD_EXP 6
11462: PUSH
11463: LD_EXP 16
11467: ADD
11468: PPUSH
11469: LD_INT 50
11471: PUSH
11472: EMPTY
11473: LIST
11474: PPUSH
11475: CALL_OW 72
11479: PPUSH
11480: LD_INT 4
11482: PPUSH
11483: CALL_OW 433
11487: PPUSH
11488: LD_STRING ds-n-1
11490: PPUSH
11491: CALL_OW 88
// Say ( Antoine , ds-a-3 ) ;
11495: LD_EXP 1
11499: PPUSH
11500: LD_STRING ds-a-3
11502: PPUSH
11503: CALL_OW 88
// DialogueOff ;
11507: CALL_OW 7
// ChangeMissionObjectives ( OSiberiteOut ) ;
11511: LD_STRING OSiberiteOut
11513: PPUSH
11514: CALL_OW 337
// SiberiteDecayDone = true ;
11518: LD_ADDR_EXP 7
11522: PUSH
11523: LD_INT 1
11525: ST_TO_ADDR
// end ; end ;
11526: PPOPN 2
11528: END
// on BuildingComplete ( b ) do begin if GetSide ( b ) <> 8 then
11529: LD_VAR 0 1
11533: PPUSH
11534: CALL_OW 255
11538: PUSH
11539: LD_INT 8
11541: NONEQUAL
11542: IFFALSE 11699
// begin if GetBType ( b ) = b_bunker or GetBType ( b ) = b_turret then
11544: LD_VAR 0 1
11548: PPUSH
11549: CALL_OW 266
11553: PUSH
11554: LD_INT 32
11556: EQUAL
11557: PUSH
11558: LD_VAR 0 1
11562: PPUSH
11563: CALL_OW 266
11567: PUSH
11568: LD_INT 33
11570: EQUAL
11571: OR
11572: IFFALSE 11650
// case GetNation ( b ) of nation_american :
11574: LD_VAR 0 1
11578: PPUSH
11579: CALL_OW 248
11583: PUSH
11584: LD_INT 1
11586: DOUBLE
11587: EQUAL
11588: IFTRUE 11592
11590: GO 11607
11592: POP
// AddComPlaceWeapon ( b , us_rocket_launcher ) ; nation_arabian :
11593: LD_VAR 0 1
11597: PPUSH
11598: LD_INT 7
11600: PPUSH
11601: CALL_OW 208
11605: GO 11650
11607: LD_INT 2
11609: DOUBLE
11610: EQUAL
11611: IFTRUE 11615
11613: GO 11649
11615: POP
// AddComPlaceWeapon ( b , [ ar_rocket_launcher , ar_gun ] [ Rand ( 1 , 2 ) ] ) ; end ;
11616: LD_VAR 0 1
11620: PPUSH
11621: LD_INT 28
11623: PUSH
11624: LD_INT 27
11626: PUSH
11627: EMPTY
11628: LIST
11629: LIST
11630: PUSH
11631: LD_INT 1
11633: PPUSH
11634: LD_INT 2
11636: PPUSH
11637: CALL_OW 12
11641: ARRAY
11642: PPUSH
11643: CALL_OW 208
11647: GO 11650
11649: POP
// if GetBType ( b ) = b_control_tower then
11650: LD_VAR 0 1
11654: PPUSH
11655: CALL_OW 266
11659: PUSH
11660: LD_INT 36
11662: EQUAL
11663: IFFALSE 11699
// if UnitsInside ( uf ) > 1 then
11665: LD_INT 72
11667: PPUSH
11668: CALL_OW 313
11672: PUSH
11673: LD_INT 1
11675: GREATER
11676: IFFALSE 11699
// ComEnterUnit ( UnitsInside ( uf ) [ 1 ] , b ) ;
11678: LD_INT 72
11680: PPUSH
11681: CALL_OW 313
11685: PUSH
11686: LD_INT 1
11688: ARRAY
11689: PPUSH
11690: LD_VAR 0 1
11694: PPUSH
11695: CALL_OW 120
// end ; if GetBType ( b ) = b_ext_radar and GetSide ( b ) = 8 and not BombsTalked then
11699: LD_VAR 0 1
11703: PPUSH
11704: CALL_OW 266
11708: PUSH
11709: LD_INT 20
11711: EQUAL
11712: PUSH
11713: LD_VAR 0 1
11717: PPUSH
11718: CALL_OW 255
11722: PUSH
11723: LD_INT 8
11725: EQUAL
11726: AND
11727: PUSH
11728: LD_EXP 43
11732: NOT
11733: AND
11734: IFFALSE 11753
// begin BombsTalked = true ;
11736: LD_ADDR_EXP 43
11740: PUSH
11741: LD_INT 1
11743: ST_TO_ADDR
// DSelfDestruction ( b ) ;
11744: LD_VAR 0 1
11748: PPUSH
11749: CALL 1844 0 1
// end ; end ;
11753: PPOPN 1
11755: END
// on LeaveBuilding ( b , u ) do begin if GetSide ( b ) <> 8 and GetLives ( b ) < 250 then
11756: LD_VAR 0 1
11760: PPUSH
11761: CALL_OW 255
11765: PUSH
11766: LD_INT 8
11768: NONEQUAL
11769: PUSH
11770: LD_VAR 0 1
11774: PPUSH
11775: CALL_OW 256
11779: PUSH
11780: LD_INT 250
11782: LESS
11783: AND
11784: IFFALSE 11953
// begin if GetBType ( b ) = b_bunker or GetBType ( b ) = b_breastwork then
11786: LD_VAR 0 1
11790: PPUSH
11791: CALL_OW 266
11795: PUSH
11796: LD_INT 32
11798: EQUAL
11799: PUSH
11800: LD_VAR 0 1
11804: PPUSH
11805: CALL_OW 266
11809: PUSH
11810: LD_INT 31
11812: EQUAL
11813: OR
11814: IFFALSE 11889
// ComEnterUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( u ) ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_armoury ] ] ] ) , u ) ) ;
11816: LD_VAR 0 2
11820: PPUSH
11821: LD_INT 22
11823: PUSH
11824: LD_VAR 0 2
11828: PPUSH
11829: CALL_OW 255
11833: PUSH
11834: EMPTY
11835: LIST
11836: LIST
11837: PUSH
11838: LD_INT 2
11840: PUSH
11841: LD_INT 30
11843: PUSH
11844: LD_INT 5
11846: PUSH
11847: EMPTY
11848: LIST
11849: LIST
11850: PUSH
11851: LD_INT 30
11853: PUSH
11854: LD_INT 4
11856: PUSH
11857: EMPTY
11858: LIST
11859: LIST
11860: PUSH
11861: EMPTY
11862: LIST
11863: LIST
11864: LIST
11865: PUSH
11866: EMPTY
11867: LIST
11868: LIST
11869: PPUSH
11870: CALL_OW 69
11874: PPUSH
11875: LD_VAR 0 2
11879: PPUSH
11880: CALL_OW 74
11884: PPUSH
11885: CALL_OW 120
// if GetBType ( b ) = b_barracks or GetBType ( b ) = b_armoury then
11889: LD_VAR 0 1
11893: PPUSH
11894: CALL_OW 266
11898: PUSH
11899: LD_INT 5
11901: EQUAL
11902: PUSH
11903: LD_VAR 0 1
11907: PPUSH
11908: CALL_OW 266
11912: PUSH
11913: LD_INT 4
11915: EQUAL
11916: OR
11917: IFFALSE 11953
// ComAttackUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ f_side , 81 ] ) , u ) ) ;
11919: LD_VAR 0 2
11923: PPUSH
11924: LD_INT 22
11926: PUSH
11927: LD_INT 81
11929: PUSH
11930: EMPTY
11931: LIST
11932: LIST
11933: PPUSH
11934: CALL_OW 69
11938: PPUSH
11939: LD_VAR 0 2
11943: PPUSH
11944: CALL_OW 74
11948: PPUSH
11949: CALL_OW 115
// end ; end ;
11953: PPOPN 2
11955: END
// on UnitDestroyed ( u ) do begin if u = Antoine then
11956: LD_VAR 0 1
11960: PUSH
11961: LD_EXP 1
11965: EQUAL
11966: IFFALSE 11975
// YouLost ( AntoineDead ) ;
11968: LD_STRING AntoineDead
11970: PPUSH
11971: CALL_OW 104
// if u in TeamAntoine then
11975: LD_VAR 0 1
11979: PUSH
11980: LD_EXP 6
11984: IN
11985: IFFALSE 11995
// OwnLosses = true ;
11987: LD_ADDR_EXP 41
11991: PUSH
11992: LD_INT 1
11994: ST_TO_ADDR
// if u in OtherSavedArabs then
11995: LD_VAR 0 1
11999: PUSH
12000: LD_EXP 16
12004: IN
12005: IFFALSE 12021
// DeadFriends = DeadFriends + 1 ;
12007: LD_ADDR_EXP 42
12011: PUSH
12012: LD_EXP 42
12016: PUSH
12017: LD_INT 1
12019: PLUS
12020: ST_TO_ADDR
// if GetSide ( u ) <> 1 then
12021: LD_VAR 0 1
12025: PPUSH
12026: CALL_OW 255
12030: PUSH
12031: LD_INT 1
12033: NONEQUAL
12034: IFFALSE 12141
// case GetWeapon ( u ) of us_cargo_bay :
12036: LD_VAR 0 1
12040: PPUSH
12041: CALL_OW 264
12045: PUSH
12046: LD_INT 12
12048: DOUBLE
12049: EQUAL
12050: IFTRUE 12054
12052: GO 12078
12054: POP
// ComConstruct ( uf , us_medium_tracked , engine_combustion , ctrl , us_cargo_bay ) ; us_crane :
12055: LD_INT 72
12057: PPUSH
12058: LD_INT 3
12060: PPUSH
12061: LD_INT 1
12063: PPUSH
12064: LD_EXP 30
12068: PPUSH
12069: LD_INT 12
12071: PPUSH
12072: CALL_OW 125
12076: GO 12141
12078: LD_INT 13
12080: DOUBLE
12081: EQUAL
12082: IFTRUE 12086
12084: GO 12110
12086: POP
// ComConstruct ( uf , us_heavy_tracked , engine_combustion , ctrl , us_crane ) ; ar_cargo_bay :
12087: LD_INT 72
12089: PPUSH
12090: LD_INT 4
12092: PPUSH
12093: LD_INT 1
12095: PPUSH
12096: LD_EXP 30
12100: PPUSH
12101: LD_INT 13
12103: PPUSH
12104: CALL_OW 125
12108: GO 12141
12110: LD_INT 32
12112: DOUBLE
12113: EQUAL
12114: IFTRUE 12118
12116: GO 12140
12118: POP
// ComConstruct ( af , ar_half_tracked , engine_siberite , control_apeman , ar_cargo_bay ) ; end ;
12119: LD_INT 10
12121: PPUSH
12122: LD_INT 14
12124: PPUSH
12125: LD_INT 3
12127: PPUSH
12128: LD_INT 5
12130: PPUSH
12131: LD_INT 32
12133: PPUSH
12134: CALL_OW 125
12138: GO 12141
12140: POP
// end ;
12141: PPOPN 1
12143: END
// export SelectedUnits ; every 0 0$0.5 do var i ;
12144: GO 12146
12146: DISABLE
12147: LD_INT 0
12149: PPUSH
// begin SelectedUnits = [ ] ;
12150: LD_ADDR_EXP 44
12154: PUSH
12155: EMPTY
12156: ST_TO_ADDR
// enable ;
12157: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 8 ] , [ f_nation , nation_arabian ] , [ f_class , class_soldier ] ] ) do
12158: LD_ADDR_VAR 0 1
12162: PUSH
12163: LD_INT 22
12165: PUSH
12166: LD_INT 8
12168: PUSH
12169: EMPTY
12170: LIST
12171: LIST
12172: PUSH
12173: LD_INT 23
12175: PUSH
12176: LD_INT 2
12178: PUSH
12179: EMPTY
12180: LIST
12181: LIST
12182: PUSH
12183: LD_INT 25
12185: PUSH
12186: LD_INT 1
12188: PUSH
12189: EMPTY
12190: LIST
12191: LIST
12192: PUSH
12193: EMPTY
12194: LIST
12195: LIST
12196: LIST
12197: PPUSH
12198: CALL_OW 69
12202: PUSH
12203: FOR_IN
12204: IFFALSE 12235
// if IsSelected ( i ) then
12206: LD_VAR 0 1
12210: PPUSH
12211: CALL_OW 306
12215: IFFALSE 12233
// SelectedUnits = SelectedUnits ^ i ;
12217: LD_ADDR_EXP 44
12221: PUSH
12222: LD_EXP 44
12226: PUSH
12227: LD_VAR 0 1
12231: ADD
12232: ST_TO_ADDR
12233: GO 12203
12235: POP
12236: POP
// end ;
12237: PPOPN 1
12239: END
// on CustomCommand ( side , param1 , param2 , param3 , param4 , param5 ) do var i ;
12240: LD_INT 0
12242: PPUSH
// begin if param1 = 1 then
12243: LD_VAR 0 2
12247: PUSH
12248: LD_INT 1
12250: EQUAL
12251: IFFALSE 12279
// for i in SelectedUnits do
12253: LD_ADDR_VAR 0 7
12257: PUSH
12258: LD_EXP 44
12262: PUSH
12263: FOR_IN
12264: IFFALSE 12277
// ComForceInvisible ( i ) ;
12266: LD_VAR 0 7
12270: PPUSH
12271: CALL_OW 496
12275: GO 12263
12277: POP
12278: POP
// end ; end_of_file
12279: PPOPN 7
12281: END
// every 0 0$1 trigger ArabiansOver and USOver and SiberiteDecayDone do
12282: LD_EXP 8
12286: PUSH
12287: LD_EXP 9
12291: AND
12292: PUSH
12293: LD_EXP 7
12297: AND
12298: IFFALSE 12695
12300: GO 12302
12302: DISABLE
// begin Wait ( 0 0$2 ) ;
12303: LD_INT 70
12305: PPUSH
12306: CALL_OW 67
// InGameOn ;
12310: CALL_OW 8
// DialogueOn ;
12314: CALL_OW 6
// if IsInUnit ( Antoine ) then
12318: LD_EXP 1
12322: PPUSH
12323: CALL_OW 310
12327: IFFALSE 12345
// CenterOnUnits ( IsInUnit ( Antoine ) ) else
12329: LD_EXP 1
12333: PPUSH
12334: CALL_OW 310
12338: PPUSH
12339: CALL_OW 85
12343: GO 12354
// CenterOnUnits ( Antoine ) ;
12345: LD_EXP 1
12349: PPUSH
12350: CALL_OW 85
// DWait ( 0 0$1 ) ;
12354: LD_INT 35
12356: PPUSH
12357: CALL_OW 68
// Say ( Antoine , de-a-1 ) ;
12361: LD_EXP 1
12365: PPUSH
12366: LD_STRING de-a-1
12368: PPUSH
12369: CALL_OW 88
// DWait ( 0 0$1 ) ;
12373: LD_INT 35
12375: PPUSH
12376: CALL_OW 68
// SayRadio ( Alex , de-b-1 ) ;
12380: LD_EXP 28
12384: PPUSH
12385: LD_STRING de-b-1
12387: PPUSH
12388: CALL_OW 94
// Say ( Antoine , de-a-2 ) ;
12392: LD_EXP 1
12396: PPUSH
12397: LD_STRING de-a-2
12399: PPUSH
12400: CALL_OW 88
// SayRadio ( Alex , de-b-2 ) ;
12404: LD_EXP 28
12408: PPUSH
12409: LD_STRING de-b-2
12411: PPUSH
12412: CALL_OW 94
// Say ( UnitFilter ( OtherSavedArabs , [ [ f_ok ] , [ f_sex , 2 ] ] ) [ 1 ] , de-x-1 ) ;
12416: LD_EXP 16
12420: PPUSH
12421: LD_INT 50
12423: PUSH
12424: EMPTY
12425: LIST
12426: PUSH
12427: LD_INT 26
12429: PUSH
12430: LD_INT 2
12432: PUSH
12433: EMPTY
12434: LIST
12435: LIST
12436: PUSH
12437: EMPTY
12438: LIST
12439: LIST
12440: PPUSH
12441: CALL_OW 72
12445: PUSH
12446: LD_INT 1
12448: ARRAY
12449: PPUSH
12450: LD_STRING de-x-1
12452: PPUSH
12453: CALL_OW 88
// if IsOK ( Oates ) then
12457: LD_EXP 3
12461: PPUSH
12462: CALL_OW 302
12466: IFFALSE 12480
// Say ( Oates , de-o-1 ) ;
12468: LD_EXP 3
12472: PPUSH
12473: LD_STRING de-o-1
12475: PPUSH
12476: CALL_OW 88
// if IsOK ( Ende ) then
12480: LD_EXP 2
12484: PPUSH
12485: CALL_OW 302
12489: IFFALSE 12503
// Say ( Ende , de-e-1 ) ;
12491: LD_EXP 2
12495: PPUSH
12496: LD_STRING de-e-1
12498: PPUSH
12499: CALL_OW 88
// if IsOK ( Tarpan ) then
12503: LD_EXP 4
12507: PPUSH
12508: CALL_OW 302
12512: IFFALSE 12526
// Say ( Oates , de-t-1 ) ;
12514: LD_EXP 3
12518: PPUSH
12519: LD_STRING de-t-1
12521: PPUSH
12522: CALL_OW 88
// Say ( UnitFilter ( OtherSavedArabs , [ [ f_ok ] , [ f_sex , 1 ] ] ) [ 1 ] , de-x-2 ) ;
12526: LD_EXP 16
12530: PPUSH
12531: LD_INT 50
12533: PUSH
12534: EMPTY
12535: LIST
12536: PUSH
12537: LD_INT 26
12539: PUSH
12540: LD_INT 1
12542: PUSH
12543: EMPTY
12544: LIST
12545: LIST
12546: PUSH
12547: EMPTY
12548: LIST
12549: LIST
12550: PPUSH
12551: CALL_OW 72
12555: PUSH
12556: LD_INT 1
12558: ARRAY
12559: PPUSH
12560: LD_STRING de-x-2
12562: PPUSH
12563: CALL_OW 88
// Say ( Antoine , de-a-3 ) ;
12567: LD_EXP 1
12571: PPUSH
12572: LD_STRING de-a-3
12574: PPUSH
12575: CALL_OW 88
// AddMedal ( MHurra , 1 ) ;
12579: LD_STRING MHurra
12581: PPUSH
12582: LD_INT 1
12584: PPUSH
12585: CALL_OW 101
// if not OwnLosses then
12589: LD_EXP 41
12593: NOT
12594: IFFALSE 12608
// AddMedal ( MLosses , 1 ) else
12596: LD_STRING MLosses
12598: PPUSH
12599: LD_INT 1
12601: PPUSH
12602: CALL_OW 101
12606: GO 12619
// AddMedal ( MLosses , - 1 ) ;
12608: LD_STRING MLosses
12610: PPUSH
12611: LD_INT 1
12613: NEG
12614: PPUSH
12615: CALL_OW 101
// if DeadFriends < [ 5 , 3 , 2 ] [ difficulty ] then
12619: LD_EXP 42
12623: PUSH
12624: LD_INT 5
12626: PUSH
12627: LD_INT 3
12629: PUSH
12630: LD_INT 2
12632: PUSH
12633: EMPTY
12634: LIST
12635: LIST
12636: LIST
12637: PUSH
12638: LD_OWVAR 67
12642: ARRAY
12643: LESS
12644: IFFALSE 12658
// AddMedal ( MCaptured , 1 ) else
12646: LD_STRING MCaptured
12648: PPUSH
12649: LD_INT 1
12651: PPUSH
12652: CALL_OW 101
12656: GO 12669
// AddMedal ( MCaptured , - 1 ) ;
12658: LD_STRING MCaptured
12660: PPUSH
12661: LD_INT 1
12663: NEG
12664: PPUSH
12665: CALL_OW 101
// GiveMedals ( Main ) ;
12669: LD_STRING Main
12671: PPUSH
12672: CALL_OW 102
// Query ( QEnd ) ;
12676: LD_STRING QEnd
12678: PPUSH
12679: CALL_OW 97
// InGameOff ;
12683: CALL_OW 9
// DialogueOff ;
12687: CALL_OW 7
// YouWin ;
12691: CALL_OW 103
// end ; end_of_file
12695: END
// export ASiberite ; every 0 0$1 do var i , amattack , launchattack ;
12696: GO 12698
12698: DISABLE
12699: LD_INT 0
12701: PPUSH
12702: PPUSH
12703: PPUSH
// begin Wait ( Rand ( 3 3$30 , 6 6$30 ) ) ;
12704: LD_INT 7350
12706: PPUSH
12707: LD_INT 13650
12709: PPUSH
12710: CALL_OW 12
12714: PPUSH
12715: CALL_OW 67
// if tick > [ 85 85$0 , 75 75$0 , 65 65$0 ] [ difficulty ] and not ArabiansOver then
12719: LD_OWVAR 1
12723: PUSH
12724: LD_INT 178500
12726: PUSH
12727: LD_INT 157500
12729: PUSH
12730: LD_INT 136500
12732: PUSH
12733: EMPTY
12734: LIST
12735: LIST
12736: LIST
12737: PUSH
12738: LD_OWVAR 67
12742: ARRAY
12743: GREATER
12744: PUSH
12745: LD_EXP 8
12749: NOT
12750: AND
12751: IFFALSE 12755
// exit ;
12753: GO 13287
// InitHc ;
12755: CALL_OW 19
// uc_side = 1 ;
12759: LD_ADDR_OWVAR 20
12763: PUSH
12764: LD_INT 1
12766: ST_TO_ADDR
// uc_nation = nation_american ;
12767: LD_ADDR_OWVAR 21
12771: PUSH
12772: LD_INT 1
12774: ST_TO_ADDR
// for i = 1 to Rand ( 2 , 3 ) do
12775: LD_ADDR_VAR 0 1
12779: PUSH
12780: DOUBLE
12781: LD_INT 1
12783: DEC
12784: ST_TO_ADDR
12785: LD_INT 2
12787: PPUSH
12788: LD_INT 3
12790: PPUSH
12791: CALL_OW 12
12795: PUSH
12796: FOR_TO
12797: IFFALSE 12838
// begin PrepareHuman ( false , class_soldier , Rand ( 3 , 6 ) ) ;
12799: LD_INT 0
12801: PPUSH
12802: LD_INT 1
12804: PPUSH
12805: LD_INT 3
12807: PPUSH
12808: LD_INT 6
12810: PPUSH
12811: CALL_OW 12
12815: PPUSH
12816: CALL_OW 380
// amattack = amattack ^ CreateHuman ;
12820: LD_ADDR_VAR 0 2
12824: PUSH
12825: LD_VAR 0 2
12829: PUSH
12830: CALL_OW 44
12834: ADD
12835: ST_TO_ADDR
// end ;
12836: GO 12796
12838: POP
12839: POP
// vc_chassis = us_medium_tracked ;
12840: LD_ADDR_OWVAR 37
12844: PUSH
12845: LD_INT 3
12847: ST_TO_ADDR
// vc_engine = engine_solar ;
12848: LD_ADDR_OWVAR 39
12852: PUSH
12853: LD_INT 2
12855: ST_TO_ADDR
// vc_control = control_manual ;
12856: LD_ADDR_OWVAR 38
12860: PUSH
12861: LD_INT 1
12863: ST_TO_ADDR
// for i = 1 to Rand ( 2 , 3 ) do
12864: LD_ADDR_VAR 0 1
12868: PUSH
12869: DOUBLE
12870: LD_INT 1
12872: DEC
12873: ST_TO_ADDR
12874: LD_INT 2
12876: PPUSH
12877: LD_INT 3
12879: PPUSH
12880: CALL_OW 12
12884: PUSH
12885: FOR_TO
12886: IFFALSE 12933
// begin vc_weapon = [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
12888: LD_ADDR_OWVAR 40
12892: PUSH
12893: LD_INT 5
12895: PUSH
12896: LD_INT 4
12898: PUSH
12899: EMPTY
12900: LIST
12901: LIST
12902: PUSH
12903: LD_INT 1
12905: PPUSH
12906: LD_INT 2
12908: PPUSH
12909: CALL_OW 12
12913: ARRAY
12914: ST_TO_ADDR
// amattack = amattack ^ CreateVehicle ;
12915: LD_ADDR_VAR 0 2
12919: PUSH
12920: LD_VAR 0 2
12924: PUSH
12925: CALL_OW 45
12929: ADD
12930: ST_TO_ADDR
// end ;
12931: GO 12885
12933: POP
12934: POP
// for i in amattack do
12935: LD_ADDR_VAR 0 1
12939: PUSH
12940: LD_VAR 0 2
12944: PUSH
12945: FOR_IN
12946: IFFALSE 13012
// begin PlaceUnitArea ( i , AmEnter , false ) ;
12948: LD_VAR 0 1
12952: PPUSH
12953: LD_INT 17
12955: PPUSH
12956: LD_INT 0
12958: PPUSH
12959: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
12963: LD_VAR 0 1
12967: PPUSH
12968: CALL_OW 247
12972: PUSH
12973: LD_INT 2
12975: EQUAL
12976: IFFALSE 13010
// begin PrepareMechanic ( false , Rand ( 4 , 6 ) ) ;
12978: LD_INT 0
12980: PPUSH
12981: LD_INT 4
12983: PPUSH
12984: LD_INT 6
12986: PPUSH
12987: CALL_OW 12
12991: PPUSH
12992: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
12996: CALL_OW 44
13000: PPUSH
13001: LD_VAR 0 1
13005: PPUSH
13006: CALL_OW 52
// end ; end ;
13010: GO 12945
13012: POP
13013: POP
// if USOver then
13014: LD_EXP 9
13018: IFFALSE 13154
// launchattack = McMove ( 1 , amattack , [ [ [ 204 , 154 ] , [ 173 , 151 ] ] [ Rand ( 1 , 2 ) ] , [ 189 , 133 ] , [ 165 , 107 ] , [ 96 , 78 ] , [ 101 , 64 ] , [ 173 , 53 ] ] , [ [ mc_move_agressive ] , [ mc_move_wait , 8 ] ] ) else
13020: LD_ADDR_VAR 0 3
13024: PUSH
13025: LD_INT 1
13027: PPUSH
13028: LD_VAR 0 2
13032: PPUSH
13033: LD_INT 204
13035: PUSH
13036: LD_INT 154
13038: PUSH
13039: EMPTY
13040: LIST
13041: LIST
13042: PUSH
13043: LD_INT 173
13045: PUSH
13046: LD_INT 151
13048: PUSH
13049: EMPTY
13050: LIST
13051: LIST
13052: PUSH
13053: EMPTY
13054: LIST
13055: LIST
13056: PUSH
13057: LD_INT 1
13059: PPUSH
13060: LD_INT 2
13062: PPUSH
13063: CALL_OW 12
13067: ARRAY
13068: PUSH
13069: LD_INT 189
13071: PUSH
13072: LD_INT 133
13074: PUSH
13075: EMPTY
13076: LIST
13077: LIST
13078: PUSH
13079: LD_INT 165
13081: PUSH
13082: LD_INT 107
13084: PUSH
13085: EMPTY
13086: LIST
13087: LIST
13088: PUSH
13089: LD_INT 96
13091: PUSH
13092: LD_INT 78
13094: PUSH
13095: EMPTY
13096: LIST
13097: LIST
13098: PUSH
13099: LD_INT 101
13101: PUSH
13102: LD_INT 64
13104: PUSH
13105: EMPTY
13106: LIST
13107: LIST
13108: PUSH
13109: LD_INT 173
13111: PUSH
13112: LD_INT 53
13114: PUSH
13115: EMPTY
13116: LIST
13117: LIST
13118: PUSH
13119: EMPTY
13120: LIST
13121: LIST
13122: LIST
13123: LIST
13124: LIST
13125: LIST
13126: PPUSH
13127: LD_INT 6
13129: PUSH
13130: EMPTY
13131: LIST
13132: PUSH
13133: LD_INT 1
13135: PUSH
13136: LD_INT 8
13138: PUSH
13139: EMPTY
13140: LIST
13141: LIST
13142: PUSH
13143: EMPTY
13144: LIST
13145: LIST
13146: PPUSH
13147: CALL_OW 398
13151: ST_TO_ADDR
13152: GO 13286
// launchattack = McMove ( 1 , amattack , [ [ 153 , 149 ] , [ [ 136 , 166 ] , [ 136 , 130 ] ] [ Rand ( 1 , 2 ) ] , [ 93 , 123 ] , [ 96 , 78 ] , [ 101 , 64 ] , [ 173 , 53 ] ] , [ [ mc_move_agressive ] , [ mc_move_wait , 8 ] ] ) ;
13154: LD_ADDR_VAR 0 3
13158: PUSH
13159: LD_INT 1
13161: PPUSH
13162: LD_VAR 0 2
13166: PPUSH
13167: LD_INT 153
13169: PUSH
13170: LD_INT 149
13172: PUSH
13173: EMPTY
13174: LIST
13175: LIST
13176: PUSH
13177: LD_INT 136
13179: PUSH
13180: LD_INT 166
13182: PUSH
13183: EMPTY
13184: LIST
13185: LIST
13186: PUSH
13187: LD_INT 136
13189: PUSH
13190: LD_INT 130
13192: PUSH
13193: EMPTY
13194: LIST
13195: LIST
13196: PUSH
13197: EMPTY
13198: LIST
13199: LIST
13200: PUSH
13201: LD_INT 1
13203: PPUSH
13204: LD_INT 2
13206: PPUSH
13207: CALL_OW 12
13211: ARRAY
13212: PUSH
13213: LD_INT 93
13215: PUSH
13216: LD_INT 123
13218: PUSH
13219: EMPTY
13220: LIST
13221: LIST
13222: PUSH
13223: LD_INT 96
13225: PUSH
13226: LD_INT 78
13228: PUSH
13229: EMPTY
13230: LIST
13231: LIST
13232: PUSH
13233: LD_INT 101
13235: PUSH
13236: LD_INT 64
13238: PUSH
13239: EMPTY
13240: LIST
13241: LIST
13242: PUSH
13243: LD_INT 173
13245: PUSH
13246: LD_INT 53
13248: PUSH
13249: EMPTY
13250: LIST
13251: LIST
13252: PUSH
13253: EMPTY
13254: LIST
13255: LIST
13256: LIST
13257: LIST
13258: LIST
13259: LIST
13260: PPUSH
13261: LD_INT 6
13263: PUSH
13264: EMPTY
13265: LIST
13266: PUSH
13267: LD_INT 1
13269: PUSH
13270: LD_INT 8
13272: PUSH
13273: EMPTY
13274: LIST
13275: LIST
13276: PUSH
13277: EMPTY
13278: LIST
13279: LIST
13280: PPUSH
13281: CALL_OW 398
13285: ST_TO_ADDR
// enable ;
13286: ENABLE
// end ;
13287: PPOPN 3
13289: END
// var launchkamikaze ; every 0 0$1 trigger AntoineSpottedByArabians do var i , arkamikaze ;
13290: LD_EXP 17
13294: IFFALSE 13877
13296: GO 13298
13298: DISABLE
13299: LD_INT 0
13301: PPUSH
13302: PPUSH
// begin Wait ( Rand ( 5 5$0 , 8 8$30 ) ) ;
13303: LD_INT 10500
13305: PPUSH
13306: LD_INT 17850
13308: PPUSH
13309: CALL_OW 12
13313: PPUSH
13314: CALL_OW 67
// uc_side = 2 ;
13318: LD_ADDR_OWVAR 20
13322: PUSH
13323: LD_INT 2
13325: ST_TO_ADDR
// uc_nation = nation_nature ;
13326: LD_ADDR_OWVAR 21
13330: PUSH
13331: LD_INT 0
13333: ST_TO_ADDR
// if not IsOK ( Gom ) or ArabiansOver then
13334: LD_EXP 13
13338: PPUSH
13339: CALL_OW 302
13343: NOT
13344: PUSH
13345: LD_EXP 8
13349: OR
13350: IFFALSE 13354
// exit ;
13352: GO 13877
// InitHc ;
13354: CALL_OW 19
// case Rand ( 1 , 2 ) of 1 :
13358: LD_INT 1
13360: PPUSH
13361: LD_INT 2
13363: PPUSH
13364: CALL_OW 12
13368: PUSH
13369: LD_INT 1
13371: DOUBLE
13372: EQUAL
13373: IFTRUE 13377
13375: GO 13470
13377: POP
// for i = 1 to [ Rand ( 1 , 2 ) , Rand ( 1 , 3 ) , Rand ( 2 , 3 ) ] [ difficulty ] do
13378: LD_ADDR_VAR 0 1
13382: PUSH
13383: DOUBLE
13384: LD_INT 1
13386: DEC
13387: ST_TO_ADDR
13388: LD_INT 1
13390: PPUSH
13391: LD_INT 2
13393: PPUSH
13394: CALL_OW 12
13398: PUSH
13399: LD_INT 1
13401: PPUSH
13402: LD_INT 3
13404: PPUSH
13405: CALL_OW 12
13409: PUSH
13410: LD_INT 2
13412: PPUSH
13413: LD_INT 3
13415: PPUSH
13416: CALL_OW 12
13420: PUSH
13421: EMPTY
13422: LIST
13423: LIST
13424: LIST
13425: PUSH
13426: LD_OWVAR 67
13430: ARRAY
13431: PUSH
13432: FOR_TO
13433: IFFALSE 13466
// begin PrepareHuman ( false , class_apeman_kamikaze , 3 ) ;
13435: LD_INT 0
13437: PPUSH
13438: LD_INT 17
13440: PPUSH
13441: LD_INT 3
13443: PPUSH
13444: CALL_OW 380
// arkamikaze = arkamikaze ^ CreateHuman ;
13448: LD_ADDR_VAR 0 2
13452: PUSH
13453: LD_VAR 0 2
13457: PUSH
13458: CALL_OW 44
13462: ADD
13463: ST_TO_ADDR
// end ; 2 :
13464: GO 13432
13466: POP
13467: POP
13468: GO 13606
13470: LD_INT 2
13472: DOUBLE
13473: EQUAL
13474: IFTRUE 13478
13476: GO 13605
13478: POP
// for i = 1 to [ 2 , Rand ( 2 , 3 ) , Rand ( 2 , 4 ) ] [ difficulty ] do
13479: LD_ADDR_VAR 0 1
13483: PUSH
13484: DOUBLE
13485: LD_INT 1
13487: DEC
13488: ST_TO_ADDR
13489: LD_INT 2
13491: PUSH
13492: LD_INT 2
13494: PPUSH
13495: LD_INT 3
13497: PPUSH
13498: CALL_OW 12
13502: PUSH
13503: LD_INT 2
13505: PPUSH
13506: LD_INT 4
13508: PPUSH
13509: CALL_OW 12
13513: PUSH
13514: EMPTY
13515: LIST
13516: LIST
13517: LIST
13518: PUSH
13519: LD_OWVAR 67
13523: ARRAY
13524: PUSH
13525: FOR_TO
13526: IFFALSE 13601
// begin vc_chassis = ar_half_tracked ;
13528: LD_ADDR_OWVAR 37
13532: PUSH
13533: LD_INT 14
13535: ST_TO_ADDR
// vc_engine = engine_combustion ;
13536: LD_ADDR_OWVAR 39
13540: PUSH
13541: LD_INT 1
13543: ST_TO_ADDR
// vc_control = control_apeman ;
13544: LD_ADDR_OWVAR 38
13548: PUSH
13549: LD_INT 5
13551: ST_TO_ADDR
// vc_weapon = [ ar_flame_thrower , ar_light_gun , ar_gun ] [ Rand ( 1 , 3 ) ] ;
13552: LD_ADDR_OWVAR 40
13556: PUSH
13557: LD_INT 26
13559: PUSH
13560: LD_INT 23
13562: PUSH
13563: LD_INT 27
13565: PUSH
13566: EMPTY
13567: LIST
13568: LIST
13569: LIST
13570: PUSH
13571: LD_INT 1
13573: PPUSH
13574: LD_INT 3
13576: PPUSH
13577: CALL_OW 12
13581: ARRAY
13582: ST_TO_ADDR
// arkamikaze = arkamikaze ^ CreateVehicle ;
13583: LD_ADDR_VAR 0 2
13587: PUSH
13588: LD_VAR 0 2
13592: PUSH
13593: CALL_OW 45
13597: ADD
13598: ST_TO_ADDR
// end ; end ;
13599: GO 13525
13601: POP
13602: POP
13603: GO 13606
13605: POP
// for i in arkamikaze do
13606: LD_ADDR_VAR 0 1
13610: PUSH
13611: LD_VAR 0 2
13615: PUSH
13616: FOR_IN
13617: IFFALSE 13874
// begin Wait ( Rand ( 0 0$5 , 0 0$15 ) ) ;
13619: LD_INT 175
13621: PPUSH
13622: LD_INT 525
13624: PPUSH
13625: CALL_OW 12
13629: PPUSH
13630: CALL_OW 67
// PlaceUnitArea ( i , KamikazeEnter , false ) ;
13634: LD_VAR 0 1
13638: PPUSH
13639: LD_INT 18
13641: PPUSH
13642: LD_INT 0
13644: PPUSH
13645: CALL_OW 49
// if ExistMc ( launchkamikaze ) then
13649: LD_LOC 2
13653: PPUSH
13654: CALL_OW 386
13658: IFFALSE 13676
// AddMcUnits ( launchkamikaze , i ) else
13660: LD_LOC 2
13664: PPUSH
13665: LD_VAR 0 1
13669: PPUSH
13670: CALL_OW 390
13674: GO 13872
// case Rand ( 1 , 2 ) of 1 :
13676: LD_INT 1
13678: PPUSH
13679: LD_INT 2
13681: PPUSH
13682: CALL_OW 12
13686: PUSH
13687: LD_INT 1
13689: DOUBLE
13690: EQUAL
13691: IFTRUE 13695
13693: GO 13779
13695: POP
// launchkamikaze = McMove ( 1 , i , [ [ 55 , 16 ] , [ 91 , 20 ] , [ 138 , 21 ] , [ 164 , 52 ] , [ 176 , 113 ] ] , [ mc_move_agressive ] ) ; 2 :
13696: LD_ADDR_LOC 2
13700: PUSH
13701: LD_INT 1
13703: PPUSH
13704: LD_VAR 0 1
13708: PPUSH
13709: LD_INT 55
13711: PUSH
13712: LD_INT 16
13714: PUSH
13715: EMPTY
13716: LIST
13717: LIST
13718: PUSH
13719: LD_INT 91
13721: PUSH
13722: LD_INT 20
13724: PUSH
13725: EMPTY
13726: LIST
13727: LIST
13728: PUSH
13729: LD_INT 138
13731: PUSH
13732: LD_INT 21
13734: PUSH
13735: EMPTY
13736: LIST
13737: LIST
13738: PUSH
13739: LD_INT 164
13741: PUSH
13742: LD_INT 52
13744: PUSH
13745: EMPTY
13746: LIST
13747: LIST
13748: PUSH
13749: LD_INT 176
13751: PUSH
13752: LD_INT 113
13754: PUSH
13755: EMPTY
13756: LIST
13757: LIST
13758: PUSH
13759: EMPTY
13760: LIST
13761: LIST
13762: LIST
13763: LIST
13764: LIST
13765: PPUSH
13766: LD_INT 6
13768: PUSH
13769: EMPTY
13770: LIST
13771: PPUSH
13772: CALL_OW 398
13776: ST_TO_ADDR
13777: GO 13872
13779: LD_INT 2
13781: DOUBLE
13782: EQUAL
13783: IFTRUE 13787
13785: GO 13871
13787: POP
// launchkamikaze = McMove ( 1 , i , [ [ 55 , 16 ] , [ 95 , 40 ] , [ 127 , 71 ] , [ 164 , 52 ] , [ 176 , 113 ] ] , [ mc_move_agressive ] ) ; end ;
13788: LD_ADDR_LOC 2
13792: PUSH
13793: LD_INT 1
13795: PPUSH
13796: LD_VAR 0 1
13800: PPUSH
13801: LD_INT 55
13803: PUSH
13804: LD_INT 16
13806: PUSH
13807: EMPTY
13808: LIST
13809: LIST
13810: PUSH
13811: LD_INT 95
13813: PUSH
13814: LD_INT 40
13816: PUSH
13817: EMPTY
13818: LIST
13819: LIST
13820: PUSH
13821: LD_INT 127
13823: PUSH
13824: LD_INT 71
13826: PUSH
13827: EMPTY
13828: LIST
13829: LIST
13830: PUSH
13831: LD_INT 164
13833: PUSH
13834: LD_INT 52
13836: PUSH
13837: EMPTY
13838: LIST
13839: LIST
13840: PUSH
13841: LD_INT 176
13843: PUSH
13844: LD_INT 113
13846: PUSH
13847: EMPTY
13848: LIST
13849: LIST
13850: PUSH
13851: EMPTY
13852: LIST
13853: LIST
13854: LIST
13855: LIST
13856: LIST
13857: PPUSH
13858: LD_INT 6
13860: PUSH
13861: EMPTY
13862: LIST
13863: PPUSH
13864: CALL_OW 398
13868: ST_TO_ADDR
13869: GO 13872
13871: POP
// end ;
13872: GO 13616
13874: POP
13875: POP
// enable ;
13876: ENABLE
// end ;
13877: PPOPN 2
13879: END
// export function ApeTarget ( u ) ; begin
13880: LD_INT 0
13882: PPUSH
// result = NearestUnitToUnit ( FilterAllUnits ( [ [ f_enemy , GetSide ( u ) ] , [ f_not , [ f_type , unit_building ] ] , [ f_dist , u , 15 ] ] ) , u ) ;
13883: LD_ADDR_VAR 0 2
13887: PUSH
13888: LD_INT 81
13890: PUSH
13891: LD_VAR 0 1
13895: PPUSH
13896: CALL_OW 255
13900: PUSH
13901: EMPTY
13902: LIST
13903: LIST
13904: PUSH
13905: LD_INT 3
13907: PUSH
13908: LD_INT 21
13910: PUSH
13911: LD_INT 3
13913: PUSH
13914: EMPTY
13915: LIST
13916: LIST
13917: PUSH
13918: EMPTY
13919: LIST
13920: LIST
13921: PUSH
13922: LD_INT 91
13924: PUSH
13925: LD_VAR 0 1
13929: PUSH
13930: LD_INT 15
13932: PUSH
13933: EMPTY
13934: LIST
13935: LIST
13936: LIST
13937: PUSH
13938: EMPTY
13939: LIST
13940: LIST
13941: LIST
13942: PPUSH
13943: CALL_OW 69
13947: PPUSH
13948: LD_VAR 0 1
13952: PPUSH
13953: CALL_OW 74
13957: ST_TO_ADDR
// end ;
13958: LD_VAR 0 2
13962: RET
// every 0 0$1 trigger ExistMc ( launchkamikaze ) do var i ;
13963: LD_LOC 2
13967: PPUSH
13968: CALL_OW 386
13972: IFFALSE 14033
13974: GO 13976
13976: DISABLE
13977: LD_INT 0
13979: PPUSH
// begin enable ;
13980: ENABLE
// for i in GetMcUnits ( launchkamikaze ) do
13981: LD_ADDR_VAR 0 1
13985: PUSH
13986: LD_LOC 2
13990: PPUSH
13991: CALL_OW 389
13995: PUSH
13996: FOR_IN
13997: IFFALSE 14031
// if ApeTarget ( i ) then
13999: LD_VAR 0 1
14003: PPUSH
14004: CALL 13880 0 1
14008: IFFALSE 14029
// ComAttackUnit ( i , ApeTarget ( i ) ) ;
14010: LD_VAR 0 1
14014: PPUSH
14015: LD_VAR 0 1
14019: PPUSH
14020: CALL 13880 0 1
14024: PPUSH
14025: CALL_OW 115
14029: GO 13996
14031: POP
14032: POP
// end ;
14033: PPOPN 1
14035: END
// export HillMortars ; every 30 30$0 do var i ;
14036: GO 14038
14038: DISABLE
14039: LD_INT 0
14041: PPUSH
// begin if ArabiansOver then
14042: LD_EXP 8
14046: IFFALSE 14050
// exit ;
14048: GO 14286
// uc_side = 2 ;
14050: LD_ADDR_OWVAR 20
14054: PUSH
14055: LD_INT 2
14057: ST_TO_ADDR
// uc_nation = 2 ;
14058: LD_ADDR_OWVAR 21
14062: PUSH
14063: LD_INT 2
14065: ST_TO_ADDR
// InitHc ;
14066: CALL_OW 19
// for i = 1 to [ 3 , 4 , 4 ] [ difficulty ] do
14070: LD_ADDR_VAR 0 1
14074: PUSH
14075: DOUBLE
14076: LD_INT 1
14078: DEC
14079: ST_TO_ADDR
14080: LD_INT 3
14082: PUSH
14083: LD_INT 4
14085: PUSH
14086: LD_INT 4
14088: PUSH
14089: EMPTY
14090: LIST
14091: LIST
14092: LIST
14093: PUSH
14094: LD_OWVAR 67
14098: ARRAY
14099: PUSH
14100: FOR_TO
14101: IFFALSE 14176
// begin if i = 1 then
14103: LD_VAR 0 1
14107: PUSH
14108: LD_INT 1
14110: EQUAL
14111: IFFALSE 14128
// PrepareHuman ( false , class_scientistic , 5 ) else
14113: LD_INT 0
14115: PPUSH
14116: LD_INT 4
14118: PPUSH
14119: LD_INT 5
14121: PPUSH
14122: CALL_OW 380
14126: GO 14158
// PrepareHuman ( false , class_mortar , [ 3 , 5 , 6 ] [ difficulty ] ) ;
14128: LD_INT 0
14130: PPUSH
14131: LD_INT 8
14133: PPUSH
14134: LD_INT 3
14136: PUSH
14137: LD_INT 5
14139: PUSH
14140: LD_INT 6
14142: PUSH
14143: EMPTY
14144: LIST
14145: LIST
14146: LIST
14147: PUSH
14148: LD_OWVAR 67
14152: ARRAY
14153: PPUSH
14154: CALL_OW 380
// HillMortars = HillMortars ^ CreateHuman ;
14158: LD_ADDR_EXP 46
14162: PUSH
14163: LD_EXP 46
14167: PUSH
14168: CALL_OW 44
14172: ADD
14173: ST_TO_ADDR
// end ;
14174: GO 14100
14176: POP
14177: POP
// for i in HillMortars do
14178: LD_ADDR_VAR 0 1
14182: PUSH
14183: LD_EXP 46
14187: PUSH
14188: FOR_IN
14189: IFFALSE 14284
// begin PlaceUnitXYR ( i , 54 , 102 , 2 , false ) ;
14191: LD_VAR 0 1
14195: PPUSH
14196: LD_INT 54
14198: PPUSH
14199: LD_INT 102
14201: PPUSH
14202: LD_INT 2
14204: PPUSH
14205: LD_INT 0
14207: PPUSH
14208: CALL_OW 50
// AddComAgressiveMove ( i , 40 , 63 ) ;
14212: LD_VAR 0 1
14216: PPUSH
14217: LD_INT 40
14219: PPUSH
14220: LD_INT 63
14222: PPUSH
14223: CALL_OW 174
// AddComAgressiveMove ( i , 49 , 38 ) ;
14227: LD_VAR 0 1
14231: PPUSH
14232: LD_INT 49
14234: PPUSH
14235: LD_INT 38
14237: PPUSH
14238: CALL_OW 174
// AddComAgressiveMove ( i , 77 , 38 ) ;
14242: LD_VAR 0 1
14246: PPUSH
14247: LD_INT 77
14249: PPUSH
14250: LD_INT 38
14252: PPUSH
14253: CALL_OW 174
// if not GetClass ( i ) = class_scientistic then
14257: LD_VAR 0 1
14261: PPUSH
14262: CALL_OW 257
14266: PUSH
14267: LD_INT 4
14269: EQUAL
14270: NOT
14271: IFFALSE 14282
// AddComHold ( i ) ;
14273: LD_VAR 0 1
14277: PPUSH
14278: CALL_OW 200
// end ;
14282: GO 14188
14284: POP
14285: POP
// end ;
14286: PPOPN 1
14288: END
// every 0 0$1 trigger tick = [ 90 90$0 , 80 80$0 , 70 70$0 ] [ difficulty ] and IsOK ( Mahmoud ) do var i , a , BigAttack , BigAttacker ;
14289: LD_OWVAR 1
14293: PUSH
14294: LD_INT 189000
14296: PUSH
14297: LD_INT 168000
14299: PUSH
14300: LD_INT 147000
14302: PUSH
14303: EMPTY
14304: LIST
14305: LIST
14306: LIST
14307: PUSH
14308: LD_OWVAR 67
14312: ARRAY
14313: EQUAL
14314: PUSH
14315: LD_EXP 15
14319: PPUSH
14320: CALL_OW 302
14324: AND
14325: IFFALSE 15025
14327: GO 14329
14329: DISABLE
14330: LD_INT 0
14332: PPUSH
14333: PPUSH
14334: PPUSH
14335: PPUSH
// begin DialogueOn ;
14336: CALL_OW 6
// SayRadio ( Mahmoud , dl-m-1 ) ;
14340: LD_EXP 15
14344: PPUSH
14345: LD_STRING dl-m-1
14347: PPUSH
14348: CALL_OW 94
// if IsOK ( Ende ) then
14352: LD_EXP 2
14356: PPUSH
14357: CALL_OW 302
14361: IFFALSE 14375
// Say ( Ende , dl-e-1 ) ;
14363: LD_EXP 2
14367: PPUSH
14368: LD_STRING dl-e-1
14370: PPUSH
14371: CALL_OW 88
// if not USOver then
14375: LD_EXP 9
14379: NOT
14380: IFFALSE 14396
// Say ( Antoine , dl-a-1 ) else
14382: LD_EXP 1
14386: PPUSH
14387: LD_STRING dl-a-1
14389: PPUSH
14390: CALL_OW 88
14394: GO 14408
// Say ( Antoine , dl-a-1a ) ;
14396: LD_EXP 1
14400: PPUSH
14401: LD_STRING dl-a-1a
14403: PPUSH
14404: CALL_OW 88
// DialogueOff ;
14408: CALL_OW 7
// Wait ( 0 0$5 ) ;
14412: LD_INT 175
14414: PPUSH
14415: CALL_OW 67
// if not USOver then
14419: LD_EXP 9
14423: NOT
14424: IFFALSE 14447
// a = [ 12 , 5 , 5 ] else
14426: LD_ADDR_VAR 0 2
14430: PUSH
14431: LD_INT 12
14433: PUSH
14434: LD_INT 5
14436: PUSH
14437: LD_INT 5
14439: PUSH
14440: EMPTY
14441: LIST
14442: LIST
14443: LIST
14444: ST_TO_ADDR
14445: GO 14505
// a = [ [ 6 , 0 , 2 ] , [ 8 , 0 , 3 ] , [ 10 , 2 , 3 ] ] [ difficulty ] ;
14447: LD_ADDR_VAR 0 2
14451: PUSH
14452: LD_INT 6
14454: PUSH
14455: LD_INT 0
14457: PUSH
14458: LD_INT 2
14460: PUSH
14461: EMPTY
14462: LIST
14463: LIST
14464: LIST
14465: PUSH
14466: LD_INT 8
14468: PUSH
14469: LD_INT 0
14471: PUSH
14472: LD_INT 3
14474: PUSH
14475: EMPTY
14476: LIST
14477: LIST
14478: LIST
14479: PUSH
14480: LD_INT 10
14482: PUSH
14483: LD_INT 2
14485: PUSH
14486: LD_INT 3
14488: PUSH
14489: EMPTY
14490: LIST
14491: LIST
14492: LIST
14493: PUSH
14494: EMPTY
14495: LIST
14496: LIST
14497: LIST
14498: PUSH
14499: LD_OWVAR 67
14503: ARRAY
14504: ST_TO_ADDR
// uc_side = 2 ;
14505: LD_ADDR_OWVAR 20
14509: PUSH
14510: LD_INT 2
14512: ST_TO_ADDR
// uc_nation = nation_arabian ;
14513: LD_ADDR_OWVAR 21
14517: PUSH
14518: LD_INT 2
14520: ST_TO_ADDR
// InitHc ;
14521: CALL_OW 19
// SetTech ( tech_Bio2 , 2 , state_researched ) ;
14525: LD_INT 67
14527: PPUSH
14528: LD_INT 2
14530: PPUSH
14531: LD_INT 2
14533: PPUSH
14534: CALL_OW 322
// SetTech ( tech_Bio3 , 2 , state_researched ) ;
14538: LD_INT 68
14540: PPUSH
14541: LD_INT 2
14543: PPUSH
14544: LD_INT 2
14546: PPUSH
14547: CALL_OW 322
// for i = 1 to a [ 1 ] do
14551: LD_ADDR_VAR 0 1
14555: PUSH
14556: DOUBLE
14557: LD_INT 1
14559: DEC
14560: ST_TO_ADDR
14561: LD_VAR 0 2
14565: PUSH
14566: LD_INT 1
14568: ARRAY
14569: PUSH
14570: FOR_TO
14571: IFFALSE 14772
// begin vc_chassis = [ ar_medium_trike , ar_half_tracked ] [ Rand ( 1 , 2 ) ] ;
14573: LD_ADDR_OWVAR 37
14577: PUSH
14578: LD_INT 13
14580: PUSH
14581: LD_INT 14
14583: PUSH
14584: EMPTY
14585: LIST
14586: LIST
14587: PUSH
14588: LD_INT 1
14590: PPUSH
14591: LD_INT 2
14593: PPUSH
14594: CALL_OW 12
14598: ARRAY
14599: ST_TO_ADDR
// vc_engine = engine_siberite ;
14600: LD_ADDR_OWVAR 39
14604: PUSH
14605: LD_INT 3
14607: ST_TO_ADDR
// vc_control = control_apeman ;
14608: LD_ADDR_OWVAR 38
14612: PUSH
14613: LD_INT 5
14615: ST_TO_ADDR
// vc_weapon = [ ar_rocket_launcher , ar_gun , ar_flame_thrower , ar_flame_thrower ] [ Rand ( 1 , 4 ) ] ;
14616: LD_ADDR_OWVAR 40
14620: PUSH
14621: LD_INT 28
14623: PUSH
14624: LD_INT 27
14626: PUSH
14627: LD_INT 26
14629: PUSH
14630: LD_INT 26
14632: PUSH
14633: EMPTY
14634: LIST
14635: LIST
14636: LIST
14637: LIST
14638: PUSH
14639: LD_INT 1
14641: PPUSH
14642: LD_INT 4
14644: PPUSH
14645: CALL_OW 12
14649: ARRAY
14650: ST_TO_ADDR
// BigAttacker = CreateVehicle ;
14651: LD_ADDR_VAR 0 4
14655: PUSH
14656: CALL_OW 45
14660: ST_TO_ADDR
// PlaceUnitArea ( BigAttacker , SouthEnter , false ) ;
14661: LD_VAR 0 4
14665: PPUSH
14666: LD_INT 15
14668: PPUSH
14669: LD_INT 0
14671: PPUSH
14672: CALL_OW 49
// if not ExistMc ( BigAttack ) then
14676: LD_VAR 0 3
14680: PPUSH
14681: CALL_OW 386
14685: NOT
14686: IFFALSE 14749
// BigAttack = McMove ( 1 , BigAttacker , [ [ 198 , 165 ] , [ 200 , 143 ] , [ 194 , 130 ] ] , [ mc_move_agressive ] ) else
14688: LD_ADDR_VAR 0 3
14692: PUSH
14693: LD_INT 1
14695: PPUSH
14696: LD_VAR 0 4
14700: PPUSH
14701: LD_INT 198
14703: PUSH
14704: LD_INT 165
14706: PUSH
14707: EMPTY
14708: LIST
14709: LIST
14710: PUSH
14711: LD_INT 200
14713: PUSH
14714: LD_INT 143
14716: PUSH
14717: EMPTY
14718: LIST
14719: LIST
14720: PUSH
14721: LD_INT 194
14723: PUSH
14724: LD_INT 130
14726: PUSH
14727: EMPTY
14728: LIST
14729: LIST
14730: PUSH
14731: EMPTY
14732: LIST
14733: LIST
14734: LIST
14735: PPUSH
14736: LD_INT 6
14738: PUSH
14739: EMPTY
14740: LIST
14741: PPUSH
14742: CALL_OW 398
14746: ST_TO_ADDR
14747: GO 14763
// AddMcUnits ( BigAttack , BigAttacker ) ;
14749: LD_VAR 0 3
14753: PPUSH
14754: LD_VAR 0 4
14758: PPUSH
14759: CALL_OW 390
// Wait ( 0 0$1 ) ;
14763: LD_INT 35
14765: PPUSH
14766: CALL_OW 67
// end ;
14770: GO 14570
14772: POP
14773: POP
// for i = 1 to a [ 2 ] do
14774: LD_ADDR_VAR 0 1
14778: PUSH
14779: DOUBLE
14780: LD_INT 1
14782: DEC
14783: ST_TO_ADDR
14784: LD_VAR 0 2
14788: PUSH
14789: LD_INT 2
14791: ARRAY
14792: PUSH
14793: FOR_TO
14794: IFFALSE 14855
// begin vc_chassis = ar_half_tracked ;
14796: LD_ADDR_OWVAR 37
14800: PUSH
14801: LD_INT 14
14803: ST_TO_ADDR
// vc_engine = engine_siberite ;
14804: LD_ADDR_OWVAR 39
14808: PUSH
14809: LD_INT 3
14811: ST_TO_ADDR
// vc_control = control_apeman ;
14812: LD_ADDR_OWVAR 38
14816: PUSH
14817: LD_INT 5
14819: ST_TO_ADDR
// vc_weapon = ar_selfpropelled_bomb ;
14820: LD_ADDR_OWVAR 40
14824: PUSH
14825: LD_INT 29
14827: ST_TO_ADDR
// BigAttacker = CreateVehicle ;
14828: LD_ADDR_VAR 0 4
14832: PUSH
14833: CALL_OW 45
14837: ST_TO_ADDR
// PlaceUnitArea ( BigAttacker , SouthEnter , false ) ;
14838: LD_VAR 0 4
14842: PPUSH
14843: LD_INT 15
14845: PPUSH
14846: LD_INT 0
14848: PPUSH
14849: CALL_OW 49
// end ;
14853: GO 14793
14855: POP
14856: POP
// for i = 1 to a [ 3 ] do
14857: LD_ADDR_VAR 0 1
14861: PUSH
14862: DOUBLE
14863: LD_INT 1
14865: DEC
14866: ST_TO_ADDR
14867: LD_VAR 0 2
14871: PUSH
14872: LD_INT 3
14874: ARRAY
14875: PUSH
14876: FOR_TO
14877: IFFALSE 15023
// begin PrepareHuman ( false , class_mortar , [ 4 , 5 , 6 ] [ difficulty ] ) ;
14879: LD_INT 0
14881: PPUSH
14882: LD_INT 8
14884: PPUSH
14885: LD_INT 4
14887: PUSH
14888: LD_INT 5
14890: PUSH
14891: LD_INT 6
14893: PUSH
14894: EMPTY
14895: LIST
14896: LIST
14897: LIST
14898: PUSH
14899: LD_OWVAR 67
14903: ARRAY
14904: PPUSH
14905: CALL_OW 380
// BigAttacker = CreateHuman ;
14909: LD_ADDR_VAR 0 4
14913: PUSH
14914: CALL_OW 44
14918: ST_TO_ADDR
// PlaceUnitArea ( BigAttacker , SouthEnter , false ) ;
14919: LD_VAR 0 4
14923: PPUSH
14924: LD_INT 15
14926: PPUSH
14927: LD_INT 0
14929: PPUSH
14930: CALL_OW 49
// if not ExistMc ( BigAttack ) then
14934: LD_VAR 0 3
14938: PPUSH
14939: CALL_OW 386
14943: NOT
14944: IFFALSE 15007
// BigAttack = McMove ( 1 , BigAttacker , [ [ 198 , 165 ] , [ 200 , 143 ] , [ 194 , 130 ] ] , [ mc_move_agressive ] ) else
14946: LD_ADDR_VAR 0 3
14950: PUSH
14951: LD_INT 1
14953: PPUSH
14954: LD_VAR 0 4
14958: PPUSH
14959: LD_INT 198
14961: PUSH
14962: LD_INT 165
14964: PUSH
14965: EMPTY
14966: LIST
14967: LIST
14968: PUSH
14969: LD_INT 200
14971: PUSH
14972: LD_INT 143
14974: PUSH
14975: EMPTY
14976: LIST
14977: LIST
14978: PUSH
14979: LD_INT 194
14981: PUSH
14982: LD_INT 130
14984: PUSH
14985: EMPTY
14986: LIST
14987: LIST
14988: PUSH
14989: EMPTY
14990: LIST
14991: LIST
14992: LIST
14993: PPUSH
14994: LD_INT 6
14996: PUSH
14997: EMPTY
14998: LIST
14999: PPUSH
15000: CALL_OW 398
15004: ST_TO_ADDR
15005: GO 15021
// AddMcUnits ( BigAttack , BigAttacker ) ;
15007: LD_VAR 0 3
15011: PPUSH
15012: LD_VAR 0 4
15016: PPUSH
15017: CALL_OW 390
// end ;
15021: GO 14876
15023: POP
15024: POP
// end ;
15025: PPOPN 4
15027: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_selfpropelled_bomb ] ] ) do var i ;
15028: LD_INT 22
15030: PUSH
15031: LD_INT 2
15033: PUSH
15034: EMPTY
15035: LIST
15036: LIST
15037: PUSH
15038: LD_INT 34
15040: PUSH
15041: LD_INT 29
15043: PUSH
15044: EMPTY
15045: LIST
15046: LIST
15047: PUSH
15048: EMPTY
15049: LIST
15050: LIST
15051: PPUSH
15052: CALL_OW 69
15056: IFFALSE 15154
15058: GO 15060
15060: DISABLE
15061: LD_INT 0
15063: PPUSH
// begin enable ;
15064: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_selfpropelled_bomb ] ] ) do
15065: LD_ADDR_VAR 0 1
15069: PUSH
15070: LD_INT 22
15072: PUSH
15073: LD_INT 2
15075: PUSH
15076: EMPTY
15077: LIST
15078: LIST
15079: PUSH
15080: LD_INT 34
15082: PUSH
15083: LD_INT 29
15085: PUSH
15086: EMPTY
15087: LIST
15088: LIST
15089: PUSH
15090: EMPTY
15091: LIST
15092: LIST
15093: PPUSH
15094: CALL_OW 69
15098: PUSH
15099: FOR_IN
15100: IFFALSE 15152
// ComAttackUnit ( i , NearestUnitToUnit ( FilterAllUnits ( [ [ f_enemy , 2 ] , [ f_type , unit_building ] ] ) , i ) ) ;
15102: LD_VAR 0 1
15106: PPUSH
15107: LD_INT 81
15109: PUSH
15110: LD_INT 2
15112: PUSH
15113: EMPTY
15114: LIST
15115: LIST
15116: PUSH
15117: LD_INT 21
15119: PUSH
15120: LD_INT 3
15122: PUSH
15123: EMPTY
15124: LIST
15125: LIST
15126: PUSH
15127: EMPTY
15128: LIST
15129: LIST
15130: PPUSH
15131: CALL_OW 69
15135: PPUSH
15136: LD_VAR 0 1
15140: PPUSH
15141: CALL_OW 74
15145: PPUSH
15146: CALL_OW 115
15150: GO 15099
15152: POP
15153: POP
// end ;
15154: PPOPN 1
15156: END
// every 0 0$1 trigger FilterUnitsInArea ( AreaToSecure , [ [ f_enemy , 2 ] , [ f_ok ] , [ f_or , [ f_type , unit_vehicle ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_turret ] ] ] ) = 0 and not ArabiansOver do var i ;
15157: LD_INT 16
15159: PPUSH
15160: LD_INT 81
15162: PUSH
15163: LD_INT 2
15165: PUSH
15166: EMPTY
15167: LIST
15168: LIST
15169: PUSH
15170: LD_INT 50
15172: PUSH
15173: EMPTY
15174: LIST
15175: PUSH
15176: LD_INT 2
15178: PUSH
15179: LD_INT 21
15181: PUSH
15182: LD_INT 2
15184: PUSH
15185: EMPTY
15186: LIST
15187: LIST
15188: PUSH
15189: LD_INT 30
15191: PUSH
15192: LD_INT 31
15194: PUSH
15195: EMPTY
15196: LIST
15197: LIST
15198: PUSH
15199: LD_INT 30
15201: PUSH
15202: LD_INT 32
15204: PUSH
15205: EMPTY
15206: LIST
15207: LIST
15208: PUSH
15209: LD_INT 30
15211: PUSH
15212: LD_INT 33
15214: PUSH
15215: EMPTY
15216: LIST
15217: LIST
15218: PUSH
15219: EMPTY
15220: LIST
15221: LIST
15222: LIST
15223: LIST
15224: LIST
15225: PUSH
15226: EMPTY
15227: LIST
15228: LIST
15229: LIST
15230: PPUSH
15231: CALL_OW 70
15235: PUSH
15236: LD_INT 0
15238: EQUAL
15239: PUSH
15240: LD_EXP 8
15244: NOT
15245: AND
15246: IFFALSE 15389
15248: GO 15250
15250: DISABLE
15251: LD_INT 0
15253: PPUSH
// begin uc_side = 2 ;
15254: LD_ADDR_OWVAR 20
15258: PUSH
15259: LD_INT 2
15261: ST_TO_ADDR
// uc_nation = 2 ;
15262: LD_ADDR_OWVAR 21
15266: PUSH
15267: LD_INT 2
15269: ST_TO_ADDR
// InitHc ;
15270: CALL_OW 19
// for i = 1 to 2 do
15274: LD_ADDR_VAR 0 1
15278: PUSH
15279: DOUBLE
15280: LD_INT 1
15282: DEC
15283: ST_TO_ADDR
15284: LD_INT 2
15286: PUSH
15287: FOR_TO
15288: IFFALSE 15349
// begin hc_attr = [ Rand ( 11 , 13 ) , Rand ( 11 , 13 ) ] ;
15290: LD_ADDR_OWVAR 29
15294: PUSH
15295: LD_INT 11
15297: PPUSH
15298: LD_INT 13
15300: PPUSH
15301: CALL_OW 12
15305: PUSH
15306: LD_INT 11
15308: PPUSH
15309: LD_INT 13
15311: PPUSH
15312: CALL_OW 12
15316: PUSH
15317: EMPTY
15318: LIST
15319: LIST
15320: ST_TO_ADDR
// PrepareScientist ( 0 , 6 ) ;
15321: LD_INT 0
15323: PPUSH
15324: LD_INT 6
15326: PPUSH
15327: CALL_OW 384
// ASiberite = ASiberite ^ CreateHuman ;
15331: LD_ADDR_EXP 45
15335: PUSH
15336: LD_EXP 45
15340: PUSH
15341: CALL_OW 44
15345: ADD
15346: ST_TO_ADDR
// end ;
15347: GO 15287
15349: POP
15350: POP
// for i in ASiberite do
15351: LD_ADDR_VAR 0 1
15355: PUSH
15356: LD_EXP 45
15360: PUSH
15361: FOR_IN
15362: IFFALSE 15387
// PlaceUnitXYR ( i , 201 , 167 , 2 , false ) ;
15364: LD_VAR 0 1
15368: PPUSH
15369: LD_INT 201
15371: PPUSH
15372: LD_INT 167
15374: PPUSH
15375: LD_INT 2
15377: PPUSH
15378: LD_INT 0
15380: PPUSH
15381: CALL_OW 50
15385: GO 15361
15387: POP
15388: POP
// end ; end_of_file
15389: PPOPN 1
15391: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
15392: LD_INT 0
15394: PPUSH
15395: PPUSH
15396: PPUSH
15397: PPUSH
// InitHc ;
15398: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
15402: LD_ADDR_VAR 0 9
15406: PUSH
15407: LD_VAR 0 2
15411: PPUSH
15412: LD_INT 22
15414: PUSH
15415: LD_VAR 0 1
15419: PUSH
15420: EMPTY
15421: LIST
15422: LIST
15423: PUSH
15424: LD_INT 21
15426: PUSH
15427: LD_INT 3
15429: PUSH
15430: EMPTY
15431: LIST
15432: LIST
15433: PUSH
15434: EMPTY
15435: LIST
15436: LIST
15437: PPUSH
15438: CALL_OW 70
15442: PUSH
15443: FOR_IN
15444: IFFALSE 15931
// case GetBType ( i ) of b_depot , b_warehouse :
15446: LD_VAR 0 9
15450: PPUSH
15451: CALL_OW 266
15455: PUSH
15456: LD_INT 0
15458: DOUBLE
15459: EQUAL
15460: IFTRUE 15470
15462: LD_INT 1
15464: DOUBLE
15465: EQUAL
15466: IFTRUE 15470
15468: GO 15612
15470: POP
// for j = 1 to engineers do
15471: LD_ADDR_VAR 0 10
15475: PUSH
15476: DOUBLE
15477: LD_INT 1
15479: DEC
15480: ST_TO_ADDR
15481: LD_VAR 0 7
15485: PUSH
15486: FOR_TO
15487: IFFALSE 15608
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
15489: LD_INT 1
15491: PPUSH
15492: LD_INT 2
15494: PPUSH
15495: CALL_OW 12
15499: PPUSH
15500: LD_VAR 0 3
15504: PPUSH
15505: CALL_OW 382
// h = CreateHuman ;
15509: LD_ADDR_VAR 0 11
15513: PUSH
15514: CALL_OW 44
15518: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
15519: LD_VAR 0 11
15523: PPUSH
15524: LD_VAR 0 9
15528: PPUSH
15529: CALL_OW 250
15533: PPUSH
15534: LD_VAR 0 9
15538: PPUSH
15539: CALL_OW 254
15543: PPUSH
15544: LD_INT 4
15546: PPUSH
15547: LD_INT 10
15549: PPUSH
15550: CALL_OW 12
15554: PPUSH
15555: CALL_OW 272
15559: PPUSH
15560: LD_VAR 0 9
15564: PPUSH
15565: CALL_OW 251
15569: PPUSH
15570: LD_VAR 0 9
15574: PPUSH
15575: CALL_OW 254
15579: PPUSH
15580: LD_INT 4
15582: PPUSH
15583: LD_INT 10
15585: PPUSH
15586: CALL_OW 12
15590: PPUSH
15591: CALL_OW 273
15595: PPUSH
15596: LD_INT 8
15598: PPUSH
15599: LD_INT 0
15601: PPUSH
15602: CALL_OW 50
// end ; b_armoury , b_barracks :
15606: GO 15486
15608: POP
15609: POP
15610: GO 15929
15612: LD_INT 4
15614: DOUBLE
15615: EQUAL
15616: IFTRUE 15626
15618: LD_INT 5
15620: DOUBLE
15621: EQUAL
15622: IFTRUE 15626
15624: GO 15695
15626: POP
// for j = 1 to armoury do
15627: LD_ADDR_VAR 0 10
15631: PUSH
15632: DOUBLE
15633: LD_INT 1
15635: DEC
15636: ST_TO_ADDR
15637: LD_VAR 0 6
15641: PUSH
15642: FOR_TO
15643: IFFALSE 15691
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
15645: LD_INT 1
15647: PPUSH
15648: LD_INT 2
15650: PPUSH
15651: CALL_OW 12
15655: PPUSH
15656: LD_VAR 0 3
15660: PPUSH
15661: CALL_OW 381
// h = CreateHuman ;
15665: LD_ADDR_VAR 0 11
15669: PUSH
15670: CALL_OW 44
15674: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
15675: LD_VAR 0 11
15679: PPUSH
15680: LD_VAR 0 9
15684: PPUSH
15685: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
15689: GO 15642
15691: POP
15692: POP
15693: GO 15929
15695: LD_INT 9
15697: DOUBLE
15698: EQUAL
15699: IFTRUE 15715
15701: LD_INT 7
15703: DOUBLE
15704: EQUAL
15705: IFTRUE 15715
15707: LD_INT 8
15709: DOUBLE
15710: EQUAL
15711: IFTRUE 15715
15713: GO 15784
15715: POP
// for j = 1 to lab do
15716: LD_ADDR_VAR 0 10
15720: PUSH
15721: DOUBLE
15722: LD_INT 1
15724: DEC
15725: ST_TO_ADDR
15726: LD_VAR 0 5
15730: PUSH
15731: FOR_TO
15732: IFFALSE 15780
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
15734: LD_INT 1
15736: PPUSH
15737: LD_INT 2
15739: PPUSH
15740: CALL_OW 12
15744: PPUSH
15745: LD_VAR 0 3
15749: PPUSH
15750: CALL_OW 384
// h = CreateHuman ;
15754: LD_ADDR_VAR 0 11
15758: PUSH
15759: CALL_OW 44
15763: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
15764: LD_VAR 0 11
15768: PPUSH
15769: LD_VAR 0 9
15773: PPUSH
15774: CALL_OW 52
// end ; b_workshop , b_factory :
15778: GO 15731
15780: POP
15781: POP
15782: GO 15929
15784: LD_INT 2
15786: DOUBLE
15787: EQUAL
15788: IFTRUE 15798
15790: LD_INT 3
15792: DOUBLE
15793: EQUAL
15794: IFTRUE 15798
15796: GO 15867
15798: POP
// for j = 1 to workshop do
15799: LD_ADDR_VAR 0 10
15803: PUSH
15804: DOUBLE
15805: LD_INT 1
15807: DEC
15808: ST_TO_ADDR
15809: LD_VAR 0 4
15813: PUSH
15814: FOR_TO
15815: IFFALSE 15863
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
15817: LD_INT 1
15819: PPUSH
15820: LD_INT 2
15822: PPUSH
15823: CALL_OW 12
15827: PPUSH
15828: LD_VAR 0 3
15832: PPUSH
15833: CALL_OW 383
// h = CreateHuman ;
15837: LD_ADDR_VAR 0 11
15841: PUSH
15842: CALL_OW 44
15846: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
15847: LD_VAR 0 11
15851: PPUSH
15852: LD_VAR 0 9
15856: PPUSH
15857: CALL_OW 52
// end ; b_breastwork , b_bunker :
15861: GO 15814
15863: POP
15864: POP
15865: GO 15929
15867: LD_INT 31
15869: DOUBLE
15870: EQUAL
15871: IFTRUE 15881
15873: LD_INT 32
15875: DOUBLE
15876: EQUAL
15877: IFTRUE 15881
15879: GO 15928
15881: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
15882: LD_INT 1
15884: PPUSH
15885: LD_INT 2
15887: PPUSH
15888: CALL_OW 12
15892: PPUSH
15893: LD_VAR 0 3
15897: PPUSH
15898: CALL_OW 381
// h = CreateHuman ;
15902: LD_ADDR_VAR 0 11
15906: PUSH
15907: CALL_OW 44
15911: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
15912: LD_VAR 0 11
15916: PPUSH
15917: LD_VAR 0 9
15921: PPUSH
15922: CALL_OW 52
// end ; end ;
15926: GO 15929
15928: POP
15929: GO 15443
15931: POP
15932: POP
// end ;
15933: LD_VAR 0 8
15937: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
15938: LD_INT 0
15940: PPUSH
15941: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
15942: LD_ADDR_VAR 0 4
15946: PUSH
15947: LD_INT 22
15949: PUSH
15950: LD_VAR 0 1
15954: PUSH
15955: EMPTY
15956: LIST
15957: LIST
15958: PUSH
15959: LD_INT 3
15961: PUSH
15962: LD_INT 23
15964: PUSH
15965: LD_INT 0
15967: PUSH
15968: EMPTY
15969: LIST
15970: LIST
15971: PUSH
15972: EMPTY
15973: LIST
15974: LIST
15975: PUSH
15976: EMPTY
15977: LIST
15978: LIST
15979: PPUSH
15980: CALL_OW 69
15984: PPUSH
15985: LD_VAR 0 2
15989: PUSH
15990: LD_INT 1
15992: ARRAY
15993: PPUSH
15994: CALL_OW 74
15998: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
15999: LD_VAR 0 4
16003: PPUSH
16004: CALL_OW 247
16008: PUSH
16009: LD_INT 2
16011: EQUAL
16012: IFFALSE 16076
// if GetControl ( i ) = control_manual then
16014: LD_VAR 0 4
16018: PPUSH
16019: CALL_OW 263
16023: PUSH
16024: LD_INT 1
16026: EQUAL
16027: IFFALSE 16046
// i = IsDrivenBy ( i ) else
16029: LD_ADDR_VAR 0 4
16033: PUSH
16034: LD_VAR 0 4
16038: PPUSH
16039: CALL_OW 311
16043: ST_TO_ADDR
16044: GO 16076
// if GetControl ( i ) = control_remote then
16046: LD_VAR 0 4
16050: PPUSH
16051: CALL_OW 263
16055: PUSH
16056: LD_INT 2
16058: EQUAL
16059: IFFALSE 16076
// i = IsControledBy ( i ) ;
16061: LD_ADDR_VAR 0 4
16065: PUSH
16066: LD_VAR 0 4
16070: PPUSH
16071: CALL_OW 312
16075: ST_TO_ADDR
// if GetType ( i ) = unit_building then
16076: LD_VAR 0 4
16080: PPUSH
16081: CALL_OW 247
16085: PUSH
16086: LD_INT 3
16088: EQUAL
16089: IFFALSE 16132
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
16091: LD_ADDR_VAR 0 4
16095: PUSH
16096: LD_VAR 0 4
16100: PPUSH
16101: CALL_OW 313
16105: PPUSH
16106: LD_INT 3
16108: PUSH
16109: LD_INT 23
16111: PUSH
16112: LD_INT 0
16114: PUSH
16115: EMPTY
16116: LIST
16117: LIST
16118: PUSH
16119: EMPTY
16120: LIST
16121: LIST
16122: PPUSH
16123: CALL_OW 72
16127: PUSH
16128: LD_INT 1
16130: ARRAY
16131: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
16132: LD_VAR 0 4
16136: PPUSH
16137: CALL_OW 247
16141: PUSH
16142: LD_INT 1
16144: EQUAL
16145: NOT
16146: IFFALSE 16206
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
16148: LD_ADDR_VAR 0 4
16152: PUSH
16153: LD_INT 22
16155: PUSH
16156: LD_VAR 0 1
16160: PUSH
16161: EMPTY
16162: LIST
16163: LIST
16164: PUSH
16165: LD_INT 21
16167: PUSH
16168: LD_INT 1
16170: PUSH
16171: EMPTY
16172: LIST
16173: LIST
16174: PUSH
16175: LD_INT 3
16177: PUSH
16178: LD_INT 23
16180: PUSH
16181: LD_INT 0
16183: PUSH
16184: EMPTY
16185: LIST
16186: LIST
16187: PUSH
16188: EMPTY
16189: LIST
16190: LIST
16191: PUSH
16192: EMPTY
16193: LIST
16194: LIST
16195: LIST
16196: PPUSH
16197: CALL_OW 69
16201: PUSH
16202: LD_INT 1
16204: ARRAY
16205: ST_TO_ADDR
// result = i ;
16206: LD_ADDR_VAR 0 3
16210: PUSH
16211: LD_VAR 0 4
16215: ST_TO_ADDR
// end ;
16216: LD_VAR 0 3
16220: RET
