// export Alex , Anne , Eddings , Sancho , OtherAmericans ; export SpecialAmericans ; export function PrepareOurs ; var i , v , tmp ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
// uc_side = 1 ;
   6: LD_ADDR_OWVAR 20
  10: PUSH
  11: LD_INT 1
  13: ST_TO_ADDR
// uc_nation = 1 ;
  14: LD_ADDR_OWVAR 21
  18: PUSH
  19: LD_INT 1
  21: ST_TO_ADDR
// tmp = [ ] ;
  22: LD_ADDR_VAR 0 4
  26: PUSH
  27: EMPTY
  28: ST_TO_ADDR
// Alex = LoadCharacter ( Alex , 0 , 0 ) ;
  29: LD_ADDR_EXP 1
  33: PUSH
  34: LD_STRING Alex
  36: PPUSH
  37: LD_INT 0
  39: PPUSH
  40: LD_INT 0
  42: PPUSH
  43: CALL_OW 527
  47: ST_TO_ADDR
// tmp = tmp ^ Alex ;
  48: LD_ADDR_VAR 0 4
  52: PUSH
  53: LD_VAR 0 4
  57: PUSH
  58: LD_EXP 1
  62: ADD
  63: ST_TO_ADDR
// tmp = tmp ^ LoadCharacter ( TeamFinal , 0 , 0 ) ;
  64: LD_ADDR_VAR 0 4
  68: PUSH
  69: LD_VAR 0 4
  73: PUSH
  74: LD_STRING TeamFinal
  76: PPUSH
  77: LD_INT 0
  79: PPUSH
  80: LD_INT 0
  82: PPUSH
  83: CALL_OW 527
  87: ADD
  88: ST_TO_ADDR
// if TestVariable ( AnneInFinal ) = 1 then
  89: LD_STRING AnneInFinal
  91: PPUSH
  92: CALL_OW 27
  96: PUSH
  97: LD_INT 1
  99: EQUAL
 100: IFFALSE 137
// begin Anne = LoadCharacter ( Anne , 0 , 0 ) ;
 102: LD_ADDR_EXP 2
 106: PUSH
 107: LD_STRING Anne
 109: PPUSH
 110: LD_INT 0
 112: PPUSH
 113: LD_INT 0
 115: PPUSH
 116: CALL_OW 527
 120: ST_TO_ADDR
// tmp = tmp ^ Anne ;
 121: LD_ADDR_VAR 0 4
 125: PUSH
 126: LD_VAR 0 4
 130: PUSH
 131: LD_EXP 2
 135: ADD
 136: ST_TO_ADDR
// end ; if TestVariable ( EddingsInFinal ) = 1 then
 137: LD_STRING EddingsInFinal
 139: PPUSH
 140: CALL_OW 27
 144: PUSH
 145: LD_INT 1
 147: EQUAL
 148: IFFALSE 185
// begin Eddings = LoadCharacter ( Eddings , 0 , 0 ) ;
 150: LD_ADDR_EXP 3
 154: PUSH
 155: LD_STRING Eddings
 157: PPUSH
 158: LD_INT 0
 160: PPUSH
 161: LD_INT 0
 163: PPUSH
 164: CALL_OW 527
 168: ST_TO_ADDR
// tmp = tmp ^ Eddings ;
 169: LD_ADDR_VAR 0 4
 173: PUSH
 174: LD_VAR 0 4
 178: PUSH
 179: LD_EXP 3
 183: ADD
 184: ST_TO_ADDR
// end ; if TestVariable ( SanchoInFinal ) = 1 then
 185: LD_STRING SanchoInFinal
 187: PPUSH
 188: CALL_OW 27
 192: PUSH
 193: LD_INT 1
 195: EQUAL
 196: IFFALSE 233
// begin Sancho = LoadCharacter ( Sancho , 0 , 0 ) ;
 198: LD_ADDR_EXP 4
 202: PUSH
 203: LD_STRING Sancho
 205: PPUSH
 206: LD_INT 0
 208: PPUSH
 209: LD_INT 0
 211: PPUSH
 212: CALL_OW 527
 216: ST_TO_ADDR
// tmp = tmp ^ Sancho ;
 217: LD_ADDR_VAR 0 4
 221: PUSH
 222: LD_VAR 0 4
 226: PUSH
 227: LD_EXP 4
 231: ADD
 232: ST_TO_ADDR
// end ; v = [ v1 , v2 , v3 ] ;
 233: LD_ADDR_VAR 0 3
 237: PUSH
 238: LD_INT 217
 240: PUSH
 241: LD_INT 220
 243: PUSH
 244: LD_INT 229
 246: PUSH
 247: EMPTY
 248: LIST
 249: LIST
 250: LIST
 251: ST_TO_ADDR
// for i = 1 to tmp do
 252: LD_ADDR_VAR 0 2
 256: PUSH
 257: DOUBLE
 258: LD_INT 1
 260: DEC
 261: ST_TO_ADDR
 262: LD_VAR 0 4
 266: PUSH
 267: FOR_TO
 268: IFFALSE 333
// if v [ i ] then
 270: LD_VAR 0 3
 274: PUSH
 275: LD_VAR 0 2
 279: ARRAY
 280: IFFALSE 310
// PlaceHumanInUnit ( tmp [ i ] , v [ i ] ) else
 282: LD_VAR 0 4
 286: PUSH
 287: LD_VAR 0 2
 291: ARRAY
 292: PPUSH
 293: LD_VAR 0 3
 297: PUSH
 298: LD_VAR 0 2
 302: ARRAY
 303: PPUSH
 304: CALL_OW 52
 308: GO 331
// PlaceUnitArea ( tmp [ i ] , AmericansEnter , false ) ;
 310: LD_VAR 0 4
 314: PUSH
 315: LD_VAR 0 2
 319: ARRAY
 320: PPUSH
 321: LD_INT 1
 323: PPUSH
 324: LD_INT 0
 326: PPUSH
 327: CALL_OW 49
 331: GO 267
 333: POP
 334: POP
// SpecialAmericans = [ Alex , Anne , Eddings , Sancho ] ;
 335: LD_ADDR_EXP 6
 339: PUSH
 340: LD_EXP 1
 344: PUSH
 345: LD_EXP 2
 349: PUSH
 350: LD_EXP 3
 354: PUSH
 355: LD_EXP 4
 359: PUSH
 360: EMPTY
 361: LIST
 362: LIST
 363: LIST
 364: LIST
 365: ST_TO_ADDR
// OtherAmericans = tmp diff SpecialAmericans ;
 366: LD_ADDR_EXP 5
 370: PUSH
 371: LD_VAR 0 4
 375: PUSH
 376: LD_EXP 6
 380: DIFF
 381: ST_TO_ADDR
// SetCargo ( v3 , mat_cans , 100 ) ;
 382: LD_INT 229
 384: PPUSH
 385: LD_INT 1
 387: PPUSH
 388: LD_INT 100
 390: PPUSH
 391: CALL_OW 290
// end ;
 395: LD_VAR 0 1
 399: RET
// export function SetTechs ; var ApemenAllowed ; begin
 400: LD_INT 0
 402: PPUSH
 403: PPUSH
// ApemenAllowed = LoadVariable ( ApemenAllowed , 0 ) ;
 404: LD_ADDR_VAR 0 2
 408: PUSH
 409: LD_STRING ApemenAllowed
 411: PPUSH
 412: LD_INT 0
 414: PPUSH
 415: CALL_OW 30
 419: ST_TO_ADDR
// if ApemenAllowed then
 420: LD_VAR 0 2
 424: IFFALSE 452
// begin SetTech ( tech_ApeLang , 1 , state_researched ) ;
 426: LD_INT 1
 428: PPUSH
 429: LD_INT 1
 431: PPUSH
 432: LD_INT 2
 434: PPUSH
 435: CALL_OW 322
// SetTech ( tech_ApePsych , 1 , state_researched ) ;
 439: LD_INT 2
 441: PPUSH
 442: LD_INT 1
 444: PPUSH
 445: LD_INT 2
 447: PPUSH
 448: CALL_OW 322
// end ; end ;
 452: LD_VAR 0 1
 456: RET
// starting begin PrepareOurs ;
 457: CALL 0 0 0
// PrepareArabs ;
 461: CALL 5161 0 0
// PrepareKuronski ;
 465: CALL 9176 0 0
// SetTechs ;
 469: CALL 400 0 0
// Randomize ;
 473: CALL_OW 10
// InGameOn ;
 477: CALL_OW 8
// ComMoveXY ( FilterAllUnits ( [ f_side , 1 ] ) , 145 , 130 ) ;
 481: LD_INT 22
 483: PUSH
 484: LD_INT 1
 486: PUSH
 487: EMPTY
 488: LIST
 489: LIST
 490: PPUSH
 491: CALL_OW 69
 495: PPUSH
 496: LD_INT 145
 498: PPUSH
 499: LD_INT 130
 501: PPUSH
 502: CALL_OW 111
// CenterNowOnXY ( 147 , 137 ) ;
 506: LD_INT 147
 508: PPUSH
 509: LD_INT 137
 511: PPUSH
 512: CALL_OW 86
// Wait ( 0 0$2 ) ;
 516: LD_INT 70
 518: PPUSH
 519: CALL_OW 67
// DialogueOn ;
 523: CALL_OW 6
// Say ( Alex , dx-a-1 ) ;
 527: LD_EXP 1
 531: PPUSH
 532: LD_STRING dx-a-1
 534: PPUSH
 535: CALL_OW 88
// Say ( FindMaxSkill ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_scientistic ] ] ) , skill_scientistic ) , dx-s-1 ) ;
 539: LD_INT 22
 541: PUSH
 542: LD_INT 1
 544: PUSH
 545: EMPTY
 546: LIST
 547: LIST
 548: PUSH
 549: LD_INT 25
 551: PUSH
 552: LD_INT 4
 554: PUSH
 555: EMPTY
 556: LIST
 557: LIST
 558: PUSH
 559: EMPTY
 560: LIST
 561: LIST
 562: PPUSH
 563: CALL_OW 69
 567: PPUSH
 568: LD_INT 4
 570: PPUSH
 571: CALL_OW 433
 575: PPUSH
 576: LD_STRING dx-s-1
 578: PPUSH
 579: CALL_OW 88
// Say ( Alex , dx-a-2 ) ;
 583: LD_EXP 1
 587: PPUSH
 588: LD_STRING dx-a-2
 590: PPUSH
 591: CALL_OW 88
// DialogueOff ;
 595: CALL_OW 7
// InGameOff ;
 599: CALL_OW 9
// SaveForQuickRestart ;
 603: CALL_OW 22
// ChangeMissionObjectives ( OBase ) ;
 607: LD_STRING OBase
 609: PPUSH
 610: CALL_OW 337
// end ; end_of_file
 614: END
// export AmericanDepot , MainTimer ; export RocketDone , ArabiansOver , KuronskiOver ; every 0 0$1 trigger FilterUnitsInArea ( MainDepositArea , [ [ f_side , 1 ] , [ f_class , class_scientistic ] ] ) do var u , h ;
 615: LD_INT 2
 617: PPUSH
 618: LD_INT 22
 620: PUSH
 621: LD_INT 1
 623: PUSH
 624: EMPTY
 625: LIST
 626: LIST
 627: PUSH
 628: LD_INT 25
 630: PUSH
 631: LD_INT 4
 633: PUSH
 634: EMPTY
 635: LIST
 636: LIST
 637: PUSH
 638: EMPTY
 639: LIST
 640: LIST
 641: PPUSH
 642: CALL_OW 70
 646: IFFALSE 813
 648: GO 650
 650: DISABLE
 651: LD_INT 0
 653: PPUSH
 654: PPUSH
// begin u = FilterUnitsInArea ( MainDepositArea , [ [ f_side , 1 ] , [ f_class , class_scientistic ] ] ) [ 1 ] ;
 655: LD_ADDR_VAR 0 1
 659: PUSH
 660: LD_INT 2
 662: PPUSH
 663: LD_INT 22
 665: PUSH
 666: LD_INT 1
 668: PUSH
 669: EMPTY
 670: LIST
 671: LIST
 672: PUSH
 673: LD_INT 25
 675: PUSH
 676: LD_INT 4
 678: PUSH
 679: EMPTY
 680: LIST
 681: LIST
 682: PUSH
 683: EMPTY
 684: LIST
 685: LIST
 686: PPUSH
 687: CALL_OW 70
 691: PUSH
 692: LD_INT 1
 694: ARRAY
 695: ST_TO_ADDR
// h = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_nation , nation_american ] ] ) diff [ Alex , u ] ;
 696: LD_ADDR_VAR 0 2
 700: PUSH
 701: LD_INT 22
 703: PUSH
 704: LD_INT 1
 706: PUSH
 707: EMPTY
 708: LIST
 709: LIST
 710: PUSH
 711: LD_INT 21
 713: PUSH
 714: LD_INT 1
 716: PUSH
 717: EMPTY
 718: LIST
 719: LIST
 720: PUSH
 721: LD_INT 23
 723: PUSH
 724: LD_INT 1
 726: PUSH
 727: EMPTY
 728: LIST
 729: LIST
 730: PUSH
 731: EMPTY
 732: LIST
 733: LIST
 734: LIST
 735: PPUSH
 736: CALL_OW 69
 740: PUSH
 741: LD_EXP 1
 745: PUSH
 746: LD_VAR 0 1
 750: PUSH
 751: EMPTY
 752: LIST
 753: LIST
 754: DIFF
 755: ST_TO_ADDR
// DialogueOn ;
 756: CALL_OW 6
// CenterOnUnits ( u ) ;
 760: LD_VAR 0 1
 764: PPUSH
 765: CALL_OW 85
// Say ( u , dm-s-1 ) ;
 769: LD_VAR 0 1
 773: PPUSH
 774: LD_STRING dm-s-1
 776: PPUSH
 777: CALL_OW 88
// Say ( h [ 1 ] , dm-s-2 ) ;
 781: LD_VAR 0 2
 785: PUSH
 786: LD_INT 1
 788: ARRAY
 789: PPUSH
 790: LD_STRING dm-s-2
 792: PPUSH
 793: CALL_OW 88
// Say ( Alex , dm-a-1 ) ;
 797: LD_EXP 1
 801: PPUSH
 802: LD_STRING dm-a-1
 804: PPUSH
 805: CALL_OW 88
// DialogueOff ;
 809: CALL_OW 7
// end ;
 813: PPOPN 2
 815: END
// every 0 0$1 trigger FilterUnitsInArea ( DepositHillArea , [ [ f_side , 1 ] , [ f_btype , b_depot ] , [ f_ready ] ] ) do
 816: LD_INT 3
 818: PPUSH
 819: LD_INT 22
 821: PUSH
 822: LD_INT 1
 824: PUSH
 825: EMPTY
 826: LIST
 827: LIST
 828: PUSH
 829: LD_INT 30
 831: PUSH
 832: LD_INT 0
 834: PUSH
 835: EMPTY
 836: LIST
 837: LIST
 838: PUSH
 839: LD_INT 53
 841: PUSH
 842: EMPTY
 843: LIST
 844: PUSH
 845: EMPTY
 846: LIST
 847: LIST
 848: LIST
 849: PPUSH
 850: CALL_OW 70
 854: IFFALSE 866
 856: GO 858
 858: DISABLE
// ChangeMissionObjectives ( ODefend ) ;
 859: LD_STRING ODefend
 861: PPUSH
 862: CALL_OW 337
 866: END
// every 0 0$1 trigger AmericanDepot do
 867: LD_EXP 7
 871: IFFALSE 891
 873: GO 875
 875: DISABLE
// begin enable ;
 876: ENABLE
// MainTimer = MainTimer + 0 0$1 ;
 877: LD_ADDR_EXP 8
 881: PUSH
 882: LD_EXP 8
 886: PUSH
 887: LD_INT 35
 889: PLUS
 890: ST_TO_ADDR
// end ;
 891: END
// every 0 0$1 trigger MainTimer = 15 15$0 do
 892: LD_EXP 8
 896: PUSH
 897: LD_INT 31500
 899: EQUAL
 900: IFFALSE 1099
 902: GO 904
 904: DISABLE
// begin if ArabiansOver then
 905: LD_EXP 10
 909: IFFALSE 913
// exit ;
 911: GO 1099
// DialogueOn ;
 913: CALL_OW 6
// if not IsInUnit ( Alex ) then
 917: LD_EXP 1
 921: PPUSH
 922: CALL_OW 310
 926: NOT
 927: IFFALSE 940
// CenterOnUnits ( Alex ) else
 929: LD_EXP 1
 933: PPUSH
 934: CALL_OW 85
 938: GO 954
// CenterOnUnits ( IsInUnit ( Alex ) ) ;
 940: LD_EXP 1
 944: PPUSH
 945: CALL_OW 310
 949: PPUSH
 950: CALL_OW 85
// SayRadio ( Bojan , db-b-1 ) ;
 954: LD_EXP 16
 958: PPUSH
 959: LD_STRING db-b-1
 961: PPUSH
 962: CALL_OW 94
// Say ( Alex , db-a-1 ) ;
 966: LD_EXP 1
 970: PPUSH
 971: LD_STRING db-a-1
 973: PPUSH
 974: CALL_OW 88
// SayRadio ( Bojan , db-b-2 ) ;
 978: LD_EXP 16
 982: PPUSH
 983: LD_STRING db-b-2
 985: PPUSH
 986: CALL_OW 94
// SayRadio ( Gom , db-l-1 ) ;
 990: LD_EXP 17
 994: PPUSH
 995: LD_STRING db-l-1
 997: PPUSH
 998: CALL_OW 94
// Say ( Alex , db-a-2 ) ;
1002: LD_EXP 1
1006: PPUSH
1007: LD_STRING db-a-2
1009: PPUSH
1010: CALL_OW 88
// DialogueOff ;
1014: CALL_OW 7
// Wait ( 0 0$5 ) ;
1018: LD_INT 175
1020: PPUSH
1021: CALL_OW 67
// DialogueOn ;
1025: CALL_OW 6
// if Anne then
1029: LD_EXP 2
1033: IFFALSE 1049
// Say ( Anne , db-n-1 ) else
1035: LD_EXP 2
1039: PPUSH
1040: LD_STRING db-n-1
1042: PPUSH
1043: CALL_OW 88
1047: GO 1076
// Say ( UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] , db-s-1 ) ;
1049: LD_EXP 5
1053: PPUSH
1054: LD_INT 50
1056: PUSH
1057: EMPTY
1058: LIST
1059: PPUSH
1060: CALL_OW 72
1064: PUSH
1065: LD_INT 1
1067: ARRAY
1068: PPUSH
1069: LD_STRING db-s-1
1071: PPUSH
1072: CALL_OW 88
// Say ( Alex , db-a-3 ) ;
1076: LD_EXP 1
1080: PPUSH
1081: LD_STRING db-a-3
1083: PPUSH
1084: CALL_OW 88
// DialogueOff ;
1088: CALL_OW 7
// ChangeMissionObjectives ( OKill ) ;
1092: LD_STRING OKill
1094: PPUSH
1095: CALL_OW 337
// end ;
1099: END
// every 0 0$1 trigger MainTimer = 25 25$0 do
1100: LD_EXP 8
1104: PUSH
1105: LD_INT 52500
1107: EQUAL
1108: IFFALSE 1208
1110: GO 1112
1112: DISABLE
// begin if ArabiansOver then
1113: LD_EXP 10
1117: IFFALSE 1121
// exit ;
1119: GO 1208
// DialogueOn ;
1121: CALL_OW 6
// SayRadio ( Mahmoud , dq-m-1 ) ;
1125: LD_EXP 18
1129: PPUSH
1130: LD_STRING dq-m-1
1132: PPUSH
1133: CALL_OW 94
// SayRadio ( Bojan , dq-b-1 ) ;
1137: LD_EXP 16
1141: PPUSH
1142: LD_STRING dq-b-1
1144: PPUSH
1145: CALL_OW 94
// SayRadio ( Mahmoud , dq-m-2 ) ;
1149: LD_EXP 18
1153: PPUSH
1154: LD_STRING dq-m-2
1156: PPUSH
1157: CALL_OW 94
// Say ( UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] , dq-s-1 ) ;
1161: LD_EXP 5
1165: PPUSH
1166: LD_INT 50
1168: PUSH
1169: EMPTY
1170: LIST
1171: PPUSH
1172: CALL_OW 72
1176: PUSH
1177: LD_INT 1
1179: ARRAY
1180: PPUSH
1181: LD_STRING dq-s-1
1183: PPUSH
1184: CALL_OW 88
// Say ( Alex , dq-a-1 ) ;
1188: LD_EXP 1
1192: PPUSH
1193: LD_STRING dq-a-1
1195: PPUSH
1196: CALL_OW 88
// DialogueOff ;
1200: CALL_OW 7
// PrepareApemenOfGoom ;
1204: CALL 8290 0 0
// end ;
1208: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 1 ] ] ) do var u ;
1209: LD_INT 22
1211: PUSH
1212: LD_INT 7
1214: PUSH
1215: EMPTY
1216: LIST
1217: LIST
1218: PUSH
1219: LD_INT 101
1221: PUSH
1222: LD_INT 1
1224: PUSH
1225: EMPTY
1226: LIST
1227: LIST
1228: PUSH
1229: EMPTY
1230: LIST
1231: LIST
1232: PPUSH
1233: CALL_OW 69
1237: IFFALSE 1463
1239: GO 1241
1241: DISABLE
1242: LD_INT 0
1244: PPUSH
// begin u = WhoDiscovered ( 1 , FilterAllUnits ( [ f_side , 7 ] ) ) ;
1245: LD_ADDR_VAR 0 1
1249: PUSH
1250: LD_INT 1
1252: PPUSH
1253: LD_INT 22
1255: PUSH
1256: LD_INT 7
1258: PUSH
1259: EMPTY
1260: LIST
1261: LIST
1262: PPUSH
1263: CALL_OW 69
1267: PPUSH
1268: CALL 12119 0 2
1272: ST_TO_ADDR
// DialogueOn ;
1273: CALL_OW 6
// CenterOnUnits ( FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 1 ] ] ) ) ;
1277: LD_INT 22
1279: PUSH
1280: LD_INT 7
1282: PUSH
1283: EMPTY
1284: LIST
1285: LIST
1286: PUSH
1287: LD_INT 101
1289: PUSH
1290: LD_INT 1
1292: PUSH
1293: EMPTY
1294: LIST
1295: LIST
1296: PUSH
1297: EMPTY
1298: LIST
1299: LIST
1300: PPUSH
1301: CALL_OW 69
1305: PPUSH
1306: CALL_OW 85
// if u = Alex then
1310: LD_VAR 0 1
1314: PUSH
1315: LD_EXP 1
1319: EQUAL
1320: IFFALSE 1336
// Say ( Alex , dd-a-1a ) else
1322: LD_EXP 1
1326: PPUSH
1327: LD_STRING dd-a-1a
1329: PPUSH
1330: CALL_OW 88
1334: GO 1386
// begin if u = Anne then
1336: LD_VAR 0 1
1340: PUSH
1341: LD_EXP 2
1345: EQUAL
1346: IFFALSE 1362
// Say ( Anne , dd-n-1 ) else
1348: LD_EXP 2
1352: PPUSH
1353: LD_STRING dd-n-1
1355: PPUSH
1356: CALL_OW 88
1360: GO 1374
// Say ( u , dd-s-1 ) ;
1362: LD_VAR 0 1
1366: PPUSH
1367: LD_STRING dd-s-1
1369: PPUSH
1370: CALL_OW 88
// Say ( Alex , dd-a-1 ) ;
1374: LD_EXP 1
1378: PPUSH
1379: LD_STRING dd-a-1
1381: PPUSH
1382: CALL_OW 88
// end ; Say ( UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] , dd-s-2 ) ;
1386: LD_EXP 5
1390: PPUSH
1391: LD_INT 50
1393: PUSH
1394: EMPTY
1395: LIST
1396: PPUSH
1397: CALL_OW 72
1401: PUSH
1402: LD_INT 1
1404: ARRAY
1405: PPUSH
1406: LD_STRING dd-s-2
1408: PPUSH
1409: CALL_OW 88
// Say ( Alex , dd-a-2 ) ;
1413: LD_EXP 1
1417: PPUSH
1418: LD_STRING dd-a-2
1420: PPUSH
1421: CALL_OW 88
// Say ( UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] , dd-s-3 ) ;
1425: LD_EXP 5
1429: PPUSH
1430: LD_INT 50
1432: PUSH
1433: EMPTY
1434: LIST
1435: PPUSH
1436: CALL_OW 72
1440: PUSH
1441: LD_INT 1
1443: ARRAY
1444: PPUSH
1445: LD_STRING dd-s-3
1447: PPUSH
1448: CALL_OW 88
// DialogueOff ;
1452: CALL_OW 7
// ChangeMissionObjectives ( ORevenge ) ;
1456: LD_STRING ORevenge
1458: PPUSH
1459: CALL_OW 337
// end ;
1463: PPOPN 1
1465: END
// every 0 0$1 trigger UnitFilter ( ASiberite , [ f_see , 1 ] ) do var u ;
1466: LD_EXP 19
1470: PPUSH
1471: LD_INT 101
1473: PUSH
1474: LD_INT 1
1476: PUSH
1477: EMPTY
1478: LIST
1479: LIST
1480: PPUSH
1481: CALL_OW 72
1485: IFFALSE 1604
1487: GO 1489
1489: DISABLE
1490: LD_INT 0
1492: PPUSH
// begin u = WhoDiscovered ( 1 , ASiberite ) ;
1493: LD_ADDR_VAR 0 1
1497: PUSH
1498: LD_INT 1
1500: PPUSH
1501: LD_EXP 19
1505: PPUSH
1506: CALL 12119 0 2
1510: ST_TO_ADDR
// if u = Alex then
1511: LD_VAR 0 1
1515: PUSH
1516: LD_EXP 1
1520: EQUAL
1521: IFFALSE 1548
// u = UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] ;
1523: LD_ADDR_VAR 0 1
1527: PUSH
1528: LD_EXP 5
1532: PPUSH
1533: LD_INT 50
1535: PUSH
1536: EMPTY
1537: LIST
1538: PPUSH
1539: CALL_OW 72
1543: PUSH
1544: LD_INT 1
1546: ARRAY
1547: ST_TO_ADDR
// DialogueOn ;
1548: CALL_OW 6
// CenterOnUnits ( UnitFilter ( ASiberite , [ f_see , 1 ] ) ) ;
1552: LD_EXP 19
1556: PPUSH
1557: LD_INT 101
1559: PUSH
1560: LD_INT 1
1562: PUSH
1563: EMPTY
1564: LIST
1565: LIST
1566: PPUSH
1567: CALL_OW 72
1571: PPUSH
1572: CALL_OW 85
// Say ( u , da-s-1 ) ;
1576: LD_VAR 0 1
1580: PPUSH
1581: LD_STRING da-s-1
1583: PPUSH
1584: CALL_OW 88
// Say ( Alex , da-a-1 ) ;
1588: LD_EXP 1
1592: PPUSH
1593: LD_STRING da-a-1
1595: PPUSH
1596: CALL_OW 88
// DialogueOff ;
1600: CALL_OW 7
// end ;
1604: PPOPN 1
1606: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 1 ] , [ f_weapon , ar_selfpropelled_bomb ] ] ) do var u ;
1607: LD_INT 101
1609: PUSH
1610: LD_INT 1
1612: PUSH
1613: EMPTY
1614: LIST
1615: LIST
1616: PUSH
1617: LD_INT 34
1619: PUSH
1620: LD_INT 29
1622: PUSH
1623: EMPTY
1624: LIST
1625: LIST
1626: PUSH
1627: EMPTY
1628: LIST
1629: LIST
1630: PPUSH
1631: CALL_OW 69
1635: IFFALSE 1799
1637: GO 1639
1639: DISABLE
1640: LD_INT 0
1642: PPUSH
// begin u = WhoDiscovered ( 1 , FilterAllUnits ( [ f_weapon , ar_selfpropelled_bomb ] ) ) ;
1643: LD_ADDR_VAR 0 1
1647: PUSH
1648: LD_INT 1
1650: PPUSH
1651: LD_INT 34
1653: PUSH
1654: LD_INT 29
1656: PUSH
1657: EMPTY
1658: LIST
1659: LIST
1660: PPUSH
1661: CALL_OW 69
1665: PPUSH
1666: CALL 12119 0 2
1670: ST_TO_ADDR
// if u = Alex then
1671: LD_VAR 0 1
1675: PUSH
1676: LD_EXP 1
1680: EQUAL
1681: IFFALSE 1708
// u = UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] ;
1683: LD_ADDR_VAR 0 1
1687: PUSH
1688: LD_EXP 5
1692: PPUSH
1693: LD_INT 50
1695: PUSH
1696: EMPTY
1697: LIST
1698: PPUSH
1699: CALL_OW 72
1703: PUSH
1704: LD_INT 1
1706: ARRAY
1707: ST_TO_ADDR
// DialogueOn ;
1708: CALL_OW 6
// CenterOnUnits ( FilterAllUnits ( [ [ f_see , 1 ] , [ f_weapon , ar_selfpropelled_bomb ] ] ) ) ;
1712: LD_INT 101
1714: PUSH
1715: LD_INT 1
1717: PUSH
1718: EMPTY
1719: LIST
1720: LIST
1721: PUSH
1722: LD_INT 34
1724: PUSH
1725: LD_INT 29
1727: PUSH
1728: EMPTY
1729: LIST
1730: LIST
1731: PUSH
1732: EMPTY
1733: LIST
1734: LIST
1735: PPUSH
1736: CALL_OW 69
1740: PPUSH
1741: CALL_OW 85
// if u = Anne then
1745: LD_VAR 0 1
1749: PUSH
1750: LD_EXP 2
1754: EQUAL
1755: IFFALSE 1771
// Say ( Anne , df-n-1 ) else
1757: LD_EXP 2
1761: PPUSH
1762: LD_STRING df-n-1
1764: PPUSH
1765: CALL_OW 88
1769: GO 1783
// Say ( u , df-s-1 ) ;
1771: LD_VAR 0 1
1775: PPUSH
1776: LD_STRING df-s-1
1778: PPUSH
1779: CALL_OW 88
// Say ( Alex , df-a-1 ) ;
1783: LD_EXP 1
1787: PPUSH
1788: LD_STRING df-a-1
1790: PPUSH
1791: CALL_OW 88
// DialogueOff ;
1795: CALL_OW 7
// end ;
1799: PPOPN 1
1801: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 1 ] , [ f_side , 2 ] , [ f_type , unit_building ] ] ) do
1802: LD_INT 101
1804: PUSH
1805: LD_INT 1
1807: PUSH
1808: EMPTY
1809: LIST
1810: LIST
1811: PUSH
1812: LD_INT 22
1814: PUSH
1815: LD_INT 2
1817: PUSH
1818: EMPTY
1819: LIST
1820: LIST
1821: PUSH
1822: LD_INT 21
1824: PUSH
1825: LD_INT 3
1827: PUSH
1828: EMPTY
1829: LIST
1830: LIST
1831: PUSH
1832: EMPTY
1833: LIST
1834: LIST
1835: LIST
1836: PPUSH
1837: CALL_OW 69
1841: IFFALSE 1998
1843: GO 1845
1845: DISABLE
// begin Wait ( 0 0$30 ) ;
1846: LD_INT 1050
1848: PPUSH
1849: CALL_OW 67
// DialogueOn ;
1853: CALL_OW 6
// if Eddings then
1857: LD_EXP 3
1861: IFFALSE 1877
// Say ( Eddings , dr-e-1 ) else
1863: LD_EXP 3
1867: PPUSH
1868: LD_STRING dr-e-1
1870: PPUSH
1871: CALL_OW 88
1875: GO 1897
// Say ( FindMaxSkill ( OtherAmericans , class_mechanic ) , dr-x-1 ) ;
1877: LD_EXP 5
1881: PPUSH
1882: LD_INT 3
1884: PPUSH
1885: CALL_OW 433
1889: PPUSH
1890: LD_STRING dr-x-1
1892: PPUSH
1893: CALL_OW 88
// Say ( Alex , dr-a-1 ) ;
1897: LD_EXP 1
1901: PPUSH
1902: LD_STRING dr-a-1
1904: PPUSH
1905: CALL_OW 88
// if Eddings then
1909: LD_EXP 3
1913: IFFALSE 1929
// Say ( Eddings , dr-e-2 ) else
1915: LD_EXP 3
1919: PPUSH
1920: LD_STRING dr-e-2
1922: PPUSH
1923: CALL_OW 88
1927: GO 1949
// Say ( FindMaxSkill ( OtherAmericans , class_mechanic ) , dr-e-2 ) ;
1929: LD_EXP 5
1933: PPUSH
1934: LD_INT 3
1936: PPUSH
1937: CALL_OW 433
1941: PPUSH
1942: LD_STRING dr-e-2
1944: PPUSH
1945: CALL_OW 88
// Say ( Alex , dr-a-2 ) ;
1949: LD_EXP 1
1953: PPUSH
1954: LD_STRING dr-a-2
1956: PPUSH
1957: CALL_OW 88
// DialogueOff ;
1961: CALL_OW 7
// SetTech ( tech_Rocket , 1 , state_enabled ) ;
1965: LD_INT 40
1967: PPUSH
1968: LD_INT 1
1970: PPUSH
1971: LD_INT 1
1973: PPUSH
1974: CALL_OW 322
// SetRestrict ( b_ext_rocket , 1 , true ) ;
1978: LD_INT 18
1980: PPUSH
1981: LD_INT 1
1983: PPUSH
1984: LD_INT 1
1986: PPUSH
1987: CALL_OW 324
// ChangeMissionObjectives ( ORocket ) ;
1991: LD_STRING ORocket
1993: PPUSH
1994: CALL_OW 337
// end ;
1998: END
// export function DRocket ( vehicle , factory ) ; begin
1999: LD_INT 0
2001: PPUSH
// Wait ( 0 0$3 ) ;
2002: LD_INT 105
2004: PPUSH
2005: CALL_OW 67
// CenterOnUnits ( vehicle ) ;
2009: LD_VAR 0 1
2013: PPUSH
2014: CALL_OW 85
// DialogueOn ;
2018: CALL_OW 6
// Say ( Alex , dr-a-3 ) ;
2022: LD_EXP 1
2026: PPUSH
2027: LD_STRING dr-a-3
2029: PPUSH
2030: CALL_OW 88
// if GetControl ( vehicle ) = control_remote or IsDrivenBy ( vehicle ) = Alex then
2034: LD_VAR 0 1
2038: PPUSH
2039: CALL_OW 263
2043: PUSH
2044: LD_INT 2
2046: EQUAL
2047: PUSH
2048: LD_VAR 0 1
2052: PPUSH
2053: CALL_OW 311
2057: PUSH
2058: LD_EXP 1
2062: EQUAL
2063: OR
2064: IFFALSE 2089
// Say ( UnitsInside ( factory ) [ 1 ] , dr-x-2 ) else
2066: LD_VAR 0 2
2070: PPUSH
2071: CALL_OW 313
2075: PUSH
2076: LD_INT 1
2078: ARRAY
2079: PPUSH
2080: LD_STRING dr-x-2
2082: PPUSH
2083: CALL_OW 88
2087: GO 2106
// Say ( IsDrivenBy ( vehicle ) , dr-x-2 ) ;
2089: LD_VAR 0 1
2093: PPUSH
2094: CALL_OW 311
2098: PPUSH
2099: LD_STRING dr-x-2
2101: PPUSH
2102: CALL_OW 88
// RocketDone = true ;
2106: LD_ADDR_EXP 9
2110: PUSH
2111: LD_INT 1
2113: ST_TO_ADDR
// DialogueOff ;
2114: CALL_OW 7
// ChangeMissionObjectives ( ORocketOut ) ;
2118: LD_STRING ORocketOut
2120: PPUSH
2121: CALL_OW 337
// end ;
2125: LD_VAR 0 3
2129: RET
// export HelpAsked , HelpSoldiers , HelpVehs ; every 0 0$1 trigger AmericanLosses = 3 or tick = 45 45$0 do
2130: LD_EXP 15
2134: PUSH
2135: LD_INT 3
2137: EQUAL
2138: PUSH
2139: LD_OWVAR 1
2143: PUSH
2144: LD_INT 94500
2146: EQUAL
2147: OR
2148: IFFALSE 2315
2150: GO 2152
2152: DISABLE
// begin DialogueOn ;
2153: CALL_OW 6
// if AmericanLosses = 3 then
2157: LD_EXP 15
2161: PUSH
2162: LD_INT 3
2164: EQUAL
2165: IFFALSE 2283
// begin Say ( UnitFilter ( OtherAmericans , [ f_ok ] ) [ 1 ] , dh-s-1a ) ;
2167: LD_EXP 5
2171: PPUSH
2172: LD_INT 50
2174: PUSH
2175: EMPTY
2176: LIST
2177: PPUSH
2178: CALL_OW 72
2182: PUSH
2183: LD_INT 1
2185: ARRAY
2186: PPUSH
2187: LD_STRING dh-s-1a
2189: PPUSH
2190: CALL_OW 88
// Say ( Alex , dh-a-1a ) ;
2194: LD_EXP 1
2198: PPUSH
2199: LD_STRING dh-a-1a
2201: PPUSH
2202: CALL_OW 88
// PrepareHelp ( [ 5 , 3 , 3 ] [ difficulty ] ) ;
2206: LD_INT 5
2208: PUSH
2209: LD_INT 3
2211: PUSH
2212: LD_INT 3
2214: PUSH
2215: EMPTY
2216: LIST
2217: LIST
2218: LIST
2219: PUSH
2220: LD_OWVAR 67
2224: ARRAY
2225: PPUSH
2226: CALL 2316 0 1
// SayRadio ( HelpSoldiers [ 1 ] , dh-x-1 ) ;
2230: LD_EXP 13
2234: PUSH
2235: LD_INT 1
2237: ARRAY
2238: PPUSH
2239: LD_STRING dh-x-1
2241: PPUSH
2242: CALL_OW 94
// Say ( Alex , dh-a-2 ) ;
2246: LD_EXP 1
2250: PPUSH
2251: LD_STRING dh-a-2
2253: PPUSH
2254: CALL_OW 88
// DialogueOff ;
2258: CALL_OW 7
// HelpAsked = true ;
2262: LD_ADDR_EXP 12
2266: PUSH
2267: LD_INT 1
2269: ST_TO_ADDR
// Wait ( 5 5$0 ) ;
2270: LD_INT 10500
2272: PPUSH
2273: CALL_OW 67
// PlaceHelp ;
2277: CALL 2510 0 0
// end else
2281: GO 2315
// begin PrepareHelp ( [ 3 , 2 , 2 ] [ difficulty ] ) ;
2283: LD_INT 3
2285: PUSH
2286: LD_INT 2
2288: PUSH
2289: LD_INT 2
2291: PUSH
2292: EMPTY
2293: LIST
2294: LIST
2295: LIST
2296: PUSH
2297: LD_OWVAR 67
2301: ARRAY
2302: PPUSH
2303: CALL 2316 0 1
// PlaceHelp ;
2307: CALL 2510 0 0
// DialogueOff ;
2311: CALL_OW 7
// end ; end ;
2315: END
// export function PrepareHelp ( a ) ; var i ; begin
2316: LD_INT 0
2318: PPUSH
2319: PPUSH
// uc_side = 1 ;
2320: LD_ADDR_OWVAR 20
2324: PUSH
2325: LD_INT 1
2327: ST_TO_ADDR
// uc_nation = 1 ;
2328: LD_ADDR_OWVAR 21
2332: PUSH
2333: LD_INT 1
2335: ST_TO_ADDR
// InitHc ;
2336: CALL_OW 19
// for i = 1 to a do
2340: LD_ADDR_VAR 0 3
2344: PUSH
2345: DOUBLE
2346: LD_INT 1
2348: DEC
2349: ST_TO_ADDR
2350: LD_VAR 0 1
2354: PUSH
2355: FOR_TO
2356: IFFALSE 2416
// begin PrepareHuman ( false , [ class_soldier , class_mechanic ] [ Rand ( 1 , 2 ) ] , Rand ( 3 , 4 ) ) ;
2358: LD_INT 0
2360: PPUSH
2361: LD_INT 1
2363: PUSH
2364: LD_INT 3
2366: PUSH
2367: EMPTY
2368: LIST
2369: LIST
2370: PUSH
2371: LD_INT 1
2373: PPUSH
2374: LD_INT 2
2376: PPUSH
2377: CALL_OW 12
2381: ARRAY
2382: PPUSH
2383: LD_INT 3
2385: PPUSH
2386: LD_INT 4
2388: PPUSH
2389: CALL_OW 12
2393: PPUSH
2394: CALL_OW 380
// HelpSoldiers = HelpSoldiers ^ CreateHuman ;
2398: LD_ADDR_EXP 13
2402: PUSH
2403: LD_EXP 13
2407: PUSH
2408: CALL_OW 44
2412: ADD
2413: ST_TO_ADDR
// end ;
2414: GO 2355
2416: POP
2417: POP
// vc_chassis = us_medium_tracked ;
2418: LD_ADDR_OWVAR 37
2422: PUSH
2423: LD_INT 3
2425: ST_TO_ADDR
// vc_engine = engine_solar ;
2426: LD_ADDR_OWVAR 39
2430: PUSH
2431: LD_INT 2
2433: ST_TO_ADDR
// vc_control = control_manual ;
2434: LD_ADDR_OWVAR 38
2438: PUSH
2439: LD_INT 1
2441: ST_TO_ADDR
// for i = 1 to 2 do
2442: LD_ADDR_VAR 0 3
2446: PUSH
2447: DOUBLE
2448: LD_INT 1
2450: DEC
2451: ST_TO_ADDR
2452: LD_INT 2
2454: PUSH
2455: FOR_TO
2456: IFFALSE 2503
// begin vc_weapon = [ us_gatling_gun , us_light_gun ] [ Rand ( 1 , 2 ) ] ;
2458: LD_ADDR_OWVAR 40
2462: PUSH
2463: LD_INT 4
2465: PUSH
2466: LD_INT 3
2468: PUSH
2469: EMPTY
2470: LIST
2471: LIST
2472: PUSH
2473: LD_INT 1
2475: PPUSH
2476: LD_INT 2
2478: PPUSH
2479: CALL_OW 12
2483: ARRAY
2484: ST_TO_ADDR
// HelpVehs = HelpVehs ^ CreateVehicle ;
2485: LD_ADDR_EXP 14
2489: PUSH
2490: LD_EXP 14
2494: PUSH
2495: CALL_OW 45
2499: ADD
2500: ST_TO_ADDR
// end ;
2501: GO 2455
2503: POP
2504: POP
// end ;
2505: LD_VAR 0 2
2509: RET
// export function PlaceHelp ; var i ; begin
2510: LD_INT 0
2512: PPUSH
2513: PPUSH
// for i in HelpVehs do
2514: LD_ADDR_VAR 0 2
2518: PUSH
2519: LD_EXP 14
2523: PUSH
2524: FOR_IN
2525: IFFALSE 2544
// PlaceUnitArea ( i , AmericansEnter , false ) ;
2527: LD_VAR 0 2
2531: PPUSH
2532: LD_INT 1
2534: PPUSH
2535: LD_INT 0
2537: PPUSH
2538: CALL_OW 49
2542: GO 2524
2544: POP
2545: POP
// for i = 1 to HelpSoldiers do
2546: LD_ADDR_VAR 0 2
2550: PUSH
2551: DOUBLE
2552: LD_INT 1
2554: DEC
2555: ST_TO_ADDR
2556: LD_EXP 13
2560: PUSH
2561: FOR_TO
2562: IFFALSE 2627
// if HelpVehs [ i ] then
2564: LD_EXP 14
2568: PUSH
2569: LD_VAR 0 2
2573: ARRAY
2574: IFFALSE 2604
// PlaceHumanInUnit ( HelpSoldiers [ i ] , HelpVehs [ i ] ) else
2576: LD_EXP 13
2580: PUSH
2581: LD_VAR 0 2
2585: ARRAY
2586: PPUSH
2587: LD_EXP 14
2591: PUSH
2592: LD_VAR 0 2
2596: ARRAY
2597: PPUSH
2598: CALL_OW 52
2602: GO 2625
// PlaceUnitArea ( HelpSoldiers [ i ] , AmericansEnter , false ) ;
2604: LD_EXP 13
2608: PUSH
2609: LD_VAR 0 2
2613: ARRAY
2614: PPUSH
2615: LD_INT 1
2617: PPUSH
2618: LD_INT 0
2620: PPUSH
2621: CALL_OW 49
2625: GO 2561
2627: POP
2628: POP
// CenterOnUnits ( HelpSoldiers ) ;
2629: LD_EXP 13
2633: PPUSH
2634: CALL_OW 85
// if HelpAsked = true then
2638: LD_EXP 12
2642: PUSH
2643: LD_INT 1
2645: EQUAL
2646: IFFALSE 2670
// begin DialogueOn ;
2648: CALL_OW 6
// Say ( HelpSoldiers , dh-s-3 ) ;
2652: LD_EXP 13
2656: PPUSH
2657: LD_STRING dh-s-3
2659: PPUSH
2660: CALL_OW 88
// DialogueOff ;
2664: CALL_OW 7
// end else
2668: GO 2706
// begin DialogueOn ;
2670: CALL_OW 6
// Say ( HelpSoldiers [ 1 ] , dh-s-1 ) ;
2674: LD_EXP 13
2678: PUSH
2679: LD_INT 1
2681: ARRAY
2682: PPUSH
2683: LD_STRING dh-s-1
2685: PPUSH
2686: CALL_OW 88
// Say ( Alex , dh-a-1 ) ;
2690: LD_EXP 1
2694: PPUSH
2695: LD_STRING dh-a-1
2697: PPUSH
2698: CALL_OW 88
// DialogueOff ;
2702: CALL_OW 7
// end ; end ;
2706: LD_VAR 0 1
2710: RET
// every 0 0$1 trigger See ( 1 , mahmoudont ) do var u ;
2711: LD_INT 1
2713: PPUSH
2714: LD_INT 185
2716: PPUSH
2717: CALL_OW 292
2721: IFFALSE 2810
2723: GO 2725
2725: DISABLE
2726: LD_INT 0
2728: PPUSH
// begin u = WhoDiscovered ( 1 , mahmoudont ) ;
2729: LD_ADDR_VAR 0 1
2733: PUSH
2734: LD_INT 1
2736: PPUSH
2737: LD_INT 185
2739: PPUSH
2740: CALL 12119 0 2
2744: ST_TO_ADDR
// DialogueOn ;
2745: CALL_OW 6
// CenterOnUnits ( mahmoudont ) ;
2749: LD_INT 185
2751: PPUSH
2752: CALL_OW 85
// if u = Alex then
2756: LD_VAR 0 1
2760: PUSH
2761: LD_EXP 1
2765: EQUAL
2766: IFFALSE 2782
// Say ( Alex , dk-a-1a ) else
2768: LD_EXP 1
2772: PPUSH
2773: LD_STRING dk-a-1a
2775: PPUSH
2776: CALL_OW 88
2780: GO 2806
// begin Say ( u , dk-s-1 ) ;
2782: LD_VAR 0 1
2786: PPUSH
2787: LD_STRING dk-s-1
2789: PPUSH
2790: CALL_OW 88
// Say ( Alex , dk-a-1 ) ;
2794: LD_EXP 1
2798: PPUSH
2799: LD_STRING dk-a-1
2801: PPUSH
2802: CALL_OW 88
// end ; DialogueOff ;
2806: CALL_OW 7
// end ;
2810: PPOPN 1
2812: END
// export function DMahmoudDead ( u ) ; var i ; begin
2813: LD_INT 0
2815: PPUSH
2816: PPUSH
// DialogueOn ;
2817: CALL_OW 6
// CenterOnXY ( GetX ( u ) , GetY ( u ) ) ;
2821: LD_VAR 0 1
2825: PPUSH
2826: CALL_OW 250
2830: PPUSH
2831: LD_VAR 0 1
2835: PPUSH
2836: CALL_OW 251
2840: PPUSH
2841: CALL_OW 84
// Say ( Alex , dk-a-2 ) ;
2845: LD_EXP 1
2849: PPUSH
2850: LD_STRING dk-a-2
2852: PPUSH
2853: CALL_OW 88
// if IsOK ( Bojan ) then
2857: LD_EXP 16
2861: PPUSH
2862: CALL_OW 302
2866: IFFALSE 2943
// begin Say ( Bojan , dk-b-1 ) ;
2868: LD_EXP 16
2872: PPUSH
2873: LD_STRING dk-b-1
2875: PPUSH
2876: CALL_OW 88
// if IsOK ( Gom ) then
2880: LD_EXP 17
2884: PPUSH
2885: CALL_OW 302
2889: IFFALSE 2929
// begin Say ( Gom , dk-l-1 ) ;
2891: LD_EXP 17
2895: PPUSH
2896: LD_STRING dk-l-1
2898: PPUSH
2899: CALL_OW 88
// Say ( Bojan , dk-b-2 ) ;
2903: LD_EXP 16
2907: PPUSH
2908: LD_STRING dk-b-2
2910: PPUSH
2911: CALL_OW 88
// Say ( Alex , dk-a-3a ) ;
2915: LD_EXP 1
2919: PPUSH
2920: LD_STRING dk-a-3a
2922: PPUSH
2923: CALL_OW 88
// end else
2927: GO 2941
// Say ( Alex , dk-a-3 ) ;
2929: LD_EXP 1
2933: PPUSH
2934: LD_STRING dk-a-3
2936: PPUSH
2937: CALL_OW 88
// end else
2941: GO 3001
// Say ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] , [ f_ok ] ] ) [ 1 ] , dk-x-1 ) ;
2943: LD_INT 22
2945: PUSH
2946: LD_INT 2
2948: PUSH
2949: EMPTY
2950: LIST
2951: LIST
2952: PUSH
2953: LD_INT 21
2955: PUSH
2956: LD_INT 1
2958: PUSH
2959: EMPTY
2960: LIST
2961: LIST
2962: PUSH
2963: LD_INT 23
2965: PUSH
2966: LD_INT 2
2968: PUSH
2969: EMPTY
2970: LIST
2971: LIST
2972: PUSH
2973: LD_INT 50
2975: PUSH
2976: EMPTY
2977: LIST
2978: PUSH
2979: EMPTY
2980: LIST
2981: LIST
2982: LIST
2983: LIST
2984: PPUSH
2985: CALL_OW 69
2989: PUSH
2990: LD_INT 1
2992: ARRAY
2993: PPUSH
2994: LD_STRING dk-x-1
2996: PPUSH
2997: CALL_OW 88
// DialogueOff ;
3001: CALL_OW 7
// KillMc ( AAttackStrategy ) ;
3005: LD_EXP 27
3009: PPUSH
3010: CALL_OW 387
// KillMc ( ADefenceStrategy ) ;
3014: LD_EXP 28
3018: PPUSH
3019: CALL_OW 387
// KillMc ( ABaseStrategy ) ;
3023: LD_EXP 30
3027: PPUSH
3028: CALL_OW 387
// KillMc ( ARepairStrategy ) ;
3032: LD_EXP 29
3036: PPUSH
3037: CALL_OW 387
// KillMc ( ATargets ) ;
3041: LD_EXP 25
3045: PPUSH
3046: CALL_OW 387
// KillMc ( AEnemies ) ;
3050: LD_EXP 26
3054: PPUSH
3055: CALL_OW 387
// ChangeMissionObjectives ( OArabsOut ) ;
3059: LD_STRING OArabsOut
3061: PPUSH
3062: CALL_OW 337
// SetAttitude ( 1 , 2 , att_friend , true ) ;
3066: LD_INT 1
3068: PPUSH
3069: LD_INT 2
3071: PPUSH
3072: LD_INT 1
3074: PPUSH
3075: LD_INT 1
3077: PPUSH
3078: CALL_OW 80
// ArabiansOver = true ;
3082: LD_ADDR_EXP 10
3086: PUSH
3087: LD_INT 1
3089: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_control , control_apeman ] ] , [ f_ok ] ] ) do
3090: LD_ADDR_VAR 0 3
3094: PUSH
3095: LD_INT 22
3097: PUSH
3098: LD_INT 2
3100: PUSH
3101: EMPTY
3102: LIST
3103: LIST
3104: PUSH
3105: LD_INT 2
3107: PUSH
3108: LD_INT 21
3110: PUSH
3111: LD_INT 1
3113: PUSH
3114: EMPTY
3115: LIST
3116: LIST
3117: PUSH
3118: LD_INT 33
3120: PUSH
3121: LD_INT 5
3123: PUSH
3124: EMPTY
3125: LIST
3126: LIST
3127: PUSH
3128: EMPTY
3129: LIST
3130: LIST
3131: LIST
3132: PUSH
3133: LD_INT 50
3135: PUSH
3136: EMPTY
3137: LIST
3138: PUSH
3139: EMPTY
3140: LIST
3141: LIST
3142: LIST
3143: PPUSH
3144: CALL_OW 69
3148: PUSH
3149: FOR_IN
3150: IFFALSE 3217
// begin if GetType ( i ) = unit_human and IsInUnit ( i ) then
3152: LD_VAR 0 3
3156: PPUSH
3157: CALL_OW 247
3161: PUSH
3162: LD_INT 1
3164: EQUAL
3165: PUSH
3166: LD_VAR 0 3
3170: PPUSH
3171: CALL_OW 310
3175: AND
3176: IFFALSE 3196
// begin ComExitBuilding ( i ) ;
3178: LD_VAR 0 3
3182: PPUSH
3183: CALL_OW 122
// ComExitVehicle ( i ) ;
3187: LD_VAR 0 3
3191: PPUSH
3192: CALL_OW 121
// end ; Wait ( 1 ) ;
3196: LD_INT 1
3198: PPUSH
3199: CALL_OW 67
// ComMoveToArea ( i , ArabianExitArea ) ;
3203: LD_VAR 0 3
3207: PPUSH
3208: LD_INT 6
3210: PPUSH
3211: CALL_OW 113
// end ;
3215: GO 3149
3217: POP
3218: POP
// end ;
3219: LD_VAR 0 2
3223: RET
// every 0 0$1 trigger ArabiansOver do var i ;
3224: LD_EXP 10
3228: IFFALSE 3286
3230: GO 3232
3232: DISABLE
3233: LD_INT 0
3235: PPUSH
// begin enable ;
3236: ENABLE
// for i in FilterUnitsInArea ( ArabianExitArea , [ [ f_side , 2 ] , [ f_ok ] ] ) do
3237: LD_ADDR_VAR 0 1
3241: PUSH
3242: LD_INT 6
3244: PPUSH
3245: LD_INT 22
3247: PUSH
3248: LD_INT 2
3250: PUSH
3251: EMPTY
3252: LIST
3253: LIST
3254: PUSH
3255: LD_INT 50
3257: PUSH
3258: EMPTY
3259: LIST
3260: PUSH
3261: EMPTY
3262: LIST
3263: LIST
3264: PPUSH
3265: CALL_OW 70
3269: PUSH
3270: FOR_IN
3271: IFFALSE 3284
// RemoveUnit ( i ) ;
3273: LD_VAR 0 1
3277: PPUSH
3278: CALL_OW 64
3282: GO 3270
3284: POP
3285: POP
// end ;
3286: PPOPN 1
3288: END
// on UnitGoesToRed ( u ) do var i ;
3289: LD_INT 0
3291: PPUSH
// begin if u = Kuronski then
3292: LD_VAR 0 1
3296: PUSH
3297: LD_EXP 34
3301: EQUAL
3302: IFFALSE 3346
// begin i = WhoDiscovered ( 1 , Kuronski ) ;
3304: LD_ADDR_VAR 0 2
3308: PUSH
3309: LD_INT 1
3311: PPUSH
3312: LD_EXP 34
3316: PPUSH
3317: CALL 12119 0 2
3321: ST_TO_ADDR
// ForceSay ( Kuronski , do-k-1 ) ;
3322: LD_EXP 34
3326: PPUSH
3327: LD_STRING do-k-1
3329: PPUSH
3330: CALL_OW 91
// Say ( i , do-s-1 ) ;
3334: LD_VAR 0 2
3338: PPUSH
3339: LD_STRING do-s-1
3341: PPUSH
3342: CALL_OW 88
// end ; if u = Mahmoud then
3346: LD_VAR 0 1
3350: PUSH
3351: LD_EXP 18
3355: EQUAL
3356: IFFALSE 3370
// ForceSay ( Mahmoud , dz-m-2 ) ;
3358: LD_EXP 18
3362: PPUSH
3363: LD_STRING dz-m-2
3365: PPUSH
3366: CALL_OW 91
// if u = Bojan then
3370: LD_VAR 0 1
3374: PUSH
3375: LD_EXP 16
3379: EQUAL
3380: IFFALSE 3417
// begin ForceSay ( Bojan , dz-b-1 ) ;
3382: LD_EXP 16
3386: PPUSH
3387: LD_STRING dz-b-1
3389: PPUSH
3390: CALL_OW 91
// if IsOK ( Anne ) then
3394: LD_EXP 2
3398: PPUSH
3399: CALL_OW 302
3403: IFFALSE 3417
// Say ( Anne , dz-n-1 ) ;
3405: LD_EXP 2
3409: PPUSH
3410: LD_STRING dz-n-1
3412: PPUSH
3413: CALL_OW 88
// end ; if u = aa1 then
3417: LD_VAR 0 1
3421: PUSH
3422: LD_INT 12
3424: EQUAL
3425: IFFALSE 3439
// Say ( Mahmoud , dz-m-1 ) ;
3427: LD_EXP 18
3431: PPUSH
3432: LD_STRING dz-m-1
3434: PPUSH
3435: CALL_OW 88
// end ;
3439: PPOPN 2
3441: END
// export function DAllKuronskiDead ( u ) ; var i ; begin
3442: LD_INT 0
3444: PPUSH
3445: PPUSH
// KillMc ( KAttackStrategy ) ;
3446: LD_EXP 41
3450: PPUSH
3451: CALL_OW 387
// KillMc ( KDefenceStrategy ) ;
3455: LD_EXP 42
3459: PPUSH
3460: CALL_OW 387
// KillMc ( KBaseStrategy ) ;
3464: LD_EXP 44
3468: PPUSH
3469: CALL_OW 387
// KillMc ( KRepairStrategy ) ;
3473: LD_EXP 43
3477: PPUSH
3478: CALL_OW 387
// KillMc ( KTargets ) ;
3482: LD_EXP 39
3486: PPUSH
3487: CALL_OW 387
// KillMc ( KEnemies ) ;
3491: LD_EXP 40
3495: PPUSH
3496: CALL_OW 387
// i = NearestUnitToXY ( OtherAmericans , GetX ( u ) , GetY ( u ) ) ;
3500: LD_ADDR_VAR 0 3
3504: PUSH
3505: LD_EXP 5
3509: PPUSH
3510: LD_VAR 0 1
3514: PPUSH
3515: CALL_OW 250
3519: PPUSH
3520: LD_VAR 0 1
3524: PPUSH
3525: CALL_OW 251
3529: PPUSH
3530: CALL_OW 73
3534: ST_TO_ADDR
// if not i then
3535: LD_VAR 0 3
3539: NOT
3540: IFFALSE 3617
// begin i = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_nation , nation_american ] , [ f_ok ] ] ) diff [ Alex ] ;
3542: LD_ADDR_VAR 0 3
3546: PUSH
3547: LD_INT 22
3549: PUSH
3550: LD_INT 1
3552: PUSH
3553: EMPTY
3554: LIST
3555: LIST
3556: PUSH
3557: LD_INT 21
3559: PUSH
3560: LD_INT 1
3562: PUSH
3563: EMPTY
3564: LIST
3565: LIST
3566: PUSH
3567: LD_INT 23
3569: PUSH
3570: LD_INT 1
3572: PUSH
3573: EMPTY
3574: LIST
3575: LIST
3576: PUSH
3577: LD_INT 50
3579: PUSH
3580: EMPTY
3581: LIST
3582: PUSH
3583: EMPTY
3584: LIST
3585: LIST
3586: LIST
3587: LIST
3588: PPUSH
3589: CALL_OW 69
3593: PUSH
3594: LD_EXP 1
3598: PUSH
3599: EMPTY
3600: LIST
3601: DIFF
3602: ST_TO_ADDR
// i = i [ 1 ] ;
3603: LD_ADDR_VAR 0 3
3607: PUSH
3608: LD_VAR 0 3
3612: PUSH
3613: LD_INT 1
3615: ARRAY
3616: ST_TO_ADDR
// end ; DialogueOn ;
3617: CALL_OW 6
// CenterOnXY ( GetX ( u ) , GetY ( u ) ) ;
3621: LD_VAR 0 1
3625: PPUSH
3626: CALL_OW 250
3630: PPUSH
3631: LD_VAR 0 1
3635: PPUSH
3636: CALL_OW 251
3640: PPUSH
3641: CALL_OW 84
// Say ( i , do-s-2 ) ;
3645: LD_VAR 0 3
3649: PPUSH
3650: LD_STRING do-s-2
3652: PPUSH
3653: CALL_OW 88
// if ArabiansOver then
3657: LD_EXP 10
3661: IFFALSE 3677
// Say ( Alex , do-a-2 ) else
3663: LD_EXP 1
3667: PPUSH
3668: LD_STRING do-a-2
3670: PPUSH
3671: CALL_OW 88
3675: GO 3689
// Say ( Alex , do-a-2a ) ;
3677: LD_EXP 1
3681: PPUSH
3682: LD_STRING do-a-2a
3684: PPUSH
3685: CALL_OW 88
// DialogueOff ;
3689: CALL_OW 7
// ChangeMissionObjectives ( ORevengeOut ) ;
3693: LD_STRING ORevengeOut
3695: PPUSH
3696: CALL_OW 337
// KuronskiOver = true ;
3700: LD_ADDR_EXP 11
3704: PUSH
3705: LD_INT 1
3707: ST_TO_ADDR
// end ;
3708: LD_VAR 0 2
3712: RET
// on SibDepositContaminated ( sci , x , y ) do begin DialogueOn ;
3713: CALL_OW 6
// PlaceSeeing ( x , y , 1 , 8 ) ;
3717: LD_VAR 0 2
3721: PPUSH
3722: LD_VAR 0 3
3726: PPUSH
3727: LD_INT 1
3729: PPUSH
3730: LD_INT 8
3732: PPUSH
3733: CALL_OW 330
// CenterOnXY ( x , y ) ;
3737: LD_VAR 0 2
3741: PPUSH
3742: LD_VAR 0 3
3746: PPUSH
3747: CALL_OW 84
// Say ( sci , dc-s-1 ) ;
3751: LD_VAR 0 1
3755: PPUSH
3756: LD_STRING dc-s-1
3758: PPUSH
3759: CALL_OW 88
// Say ( Alex , dc-a-1 ) ;
3763: LD_EXP 1
3767: PPUSH
3768: LD_STRING dc-a-1
3770: PPUSH
3771: CALL_OW 88
// DialogueOff ;
3775: CALL_OW 7
// YouLost ( Armageddon ) ;
3779: LD_STRING Armageddon
3781: PPUSH
3782: CALL_OW 104
// end ; end_of_file
3786: PPOPN 3
3788: END
// export AmericanLosses ; every 0 0$1 do var i ;
3789: GO 3791
3791: DISABLE
3792: LD_INT 0
3794: PPUSH
// begin Wait ( [ Rand ( 1 1$0 , 2 2$30 ) , Rand ( 1 1$0 , 2 2$15 ) , Rand ( 1 1$0 , 1 1$45 ) ] [ difficulty ] ) ;
3795: LD_INT 2100
3797: PPUSH
3798: LD_INT 5250
3800: PPUSH
3801: CALL_OW 12
3805: PUSH
3806: LD_INT 2100
3808: PPUSH
3809: LD_INT 4725
3811: PPUSH
3812: CALL_OW 12
3816: PUSH
3817: LD_INT 2100
3819: PPUSH
3820: LD_INT 3675
3822: PPUSH
3823: CALL_OW 12
3827: PUSH
3828: EMPTY
3829: LIST
3830: LIST
3831: LIST
3832: PUSH
3833: LD_OWVAR 67
3837: ARRAY
3838: PPUSH
3839: CALL_OW 67
// for i in [ ArabianCratesArea , KuronskiCratesArea ] do
3843: LD_ADDR_VAR 0 1
3847: PUSH
3848: LD_INT 7
3850: PUSH
3851: LD_INT 9
3853: PUSH
3854: EMPTY
3855: LIST
3856: LIST
3857: PUSH
3858: FOR_IN
3859: IFFALSE 3901
// begin CreateCratesArea ( Rand ( 3 , 5 ) , i , true ) ;
3861: LD_INT 3
3863: PPUSH
3864: LD_INT 5
3866: PPUSH
3867: CALL_OW 12
3871: PPUSH
3872: LD_VAR 0 1
3876: PPUSH
3877: LD_INT 1
3879: PPUSH
3880: CALL_OW 55
// Wait ( Rand ( 0 0$5 , 0 0$20 ) ) ;
3884: LD_INT 175
3886: PPUSH
3887: LD_INT 700
3889: PPUSH
3890: CALL_OW 12
3894: PPUSH
3895: CALL_OW 67
// end ;
3899: GO 3858
3901: POP
3902: POP
// enable ;
3903: ENABLE
// end ;
3904: PPOPN 1
3906: END
// every 0 0$1 trigger AmericanDepot do
3907: LD_EXP 7
3911: IFFALSE 4057
3913: GO 3915
3915: DISABLE
// begin case tick of 1 .. 30 30$0 :
3916: LD_OWVAR 1
3920: PUSH
3921: LD_INT 1
3923: DOUBLE
3924: GREATEREQUAL
3925: IFFALSE 3933
3927: LD_INT 63000
3929: DOUBLE
3930: LESSEQUAL
3931: IFTRUE 3935
3933: GO 3986
3935: POP
// Wait ( [ Rand ( 1 1$30 , 3 3$0 ) , Rand ( 1 1$45 , 3 3$15 ) , Rand ( 1 1$45 , 3 3$30 ) ] [ difficulty ] ) ; else
3936: LD_INT 3150
3938: PPUSH
3939: LD_INT 6300
3941: PPUSH
3942: CALL_OW 12
3946: PUSH
3947: LD_INT 3675
3949: PPUSH
3950: LD_INT 6825
3952: PPUSH
3953: CALL_OW 12
3957: PUSH
3958: LD_INT 3675
3960: PPUSH
3961: LD_INT 7350
3963: PPUSH
3964: CALL_OW 12
3968: PUSH
3969: EMPTY
3970: LIST
3971: LIST
3972: LIST
3973: PUSH
3974: LD_OWVAR 67
3978: ARRAY
3979: PPUSH
3980: CALL_OW 67
3984: GO 4035
3986: POP
// Wait ( [ Rand ( 2 2$0 , 3 3$30 ) , Rand ( 2 2$30 , 4 4$0 ) , Rand ( 2 2$30 , 4 4$30 ) ] [ difficulty ] ) ; end ;
3987: LD_INT 4200
3989: PPUSH
3990: LD_INT 7350
3992: PPUSH
3993: CALL_OW 12
3997: PUSH
3998: LD_INT 5250
4000: PPUSH
4001: LD_INT 8400
4003: PPUSH
4004: CALL_OW 12
4008: PUSH
4009: LD_INT 5250
4011: PPUSH
4012: LD_INT 9450
4014: PPUSH
4015: CALL_OW 12
4019: PUSH
4020: EMPTY
4021: LIST
4022: LIST
4023: LIST
4024: PUSH
4025: LD_OWVAR 67
4029: ARRAY
4030: PPUSH
4031: CALL_OW 67
// CreateCratesArea ( Rand ( 3 , 5 ) , PlayerCratesArea , true ) ;
4035: LD_INT 3
4037: PPUSH
4038: LD_INT 5
4040: PPUSH
4041: CALL_OW 12
4045: PPUSH
4046: LD_INT 8
4048: PPUSH
4049: LD_INT 1
4051: PPUSH
4052: CALL_OW 55
// enable ;
4056: ENABLE
// end ;
4057: END
// every 0 0$1 do
4058: GO 4060
4060: DISABLE
// begin Wait ( Rand ( 2 2$0 , 3 3$0 ) ) ;
4061: LD_INT 4200
4063: PPUSH
4064: LD_INT 6300
4066: PPUSH
4067: CALL_OW 12
4071: PPUSH
4072: CALL_OW 67
// CreateCratesXYR ( Rand ( 2 , 5 ) , 115 , 75 , 30 , true ) ;
4076: LD_INT 2
4078: PPUSH
4079: LD_INT 5
4081: PPUSH
4082: CALL_OW 12
4086: PPUSH
4087: LD_INT 115
4089: PPUSH
4090: LD_INT 75
4092: PPUSH
4093: LD_INT 30
4095: PPUSH
4096: LD_INT 1
4098: PPUSH
4099: CALL_OW 56
// enable ;
4103: ENABLE
// end ;
4104: END
// on VehicleConstructed ( v , f ) do begin if GetSide ( v ) = 1 and GetWeapon ( v ) = us_rocket_launcher and not RocketDone then
4105: LD_VAR 0 1
4109: PPUSH
4110: CALL_OW 255
4114: PUSH
4115: LD_INT 1
4117: EQUAL
4118: PUSH
4119: LD_VAR 0 1
4123: PPUSH
4124: CALL_OW 264
4128: PUSH
4129: LD_INT 7
4131: EQUAL
4132: AND
4133: PUSH
4134: LD_EXP 9
4138: NOT
4139: AND
4140: IFFALSE 4156
// DRocket ( v , f ) ;
4142: LD_VAR 0 1
4146: PPUSH
4147: LD_VAR 0 2
4151: PPUSH
4152: CALL 1999 0 2
// end ;
4156: PPOPN 2
4158: END
// on UnitDestroyed ( u ) do begin if u = Alex then
4159: LD_VAR 0 1
4163: PUSH
4164: LD_EXP 1
4168: EQUAL
4169: IFFALSE 4178
// YouLost ( AlexDead ) ;
4171: LD_STRING AlexDead
4173: PPUSH
4174: CALL_OW 104
// if u = Mahmoud then
4178: LD_VAR 0 1
4182: PUSH
4183: LD_EXP 18
4187: EQUAL
4188: IFFALSE 4199
// DMahmoudDead ( u ) ;
4190: LD_VAR 0 1
4194: PPUSH
4195: CALL 2813 0 1
// if GetSide ( u ) = 7 and GetType ( u ) = unit_human and not FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_human ] , [ f_ok ] ] ) then
4199: LD_VAR 0 1
4203: PPUSH
4204: CALL_OW 255
4208: PUSH
4209: LD_INT 7
4211: EQUAL
4212: PUSH
4213: LD_VAR 0 1
4217: PPUSH
4218: CALL_OW 247
4222: PUSH
4223: LD_INT 1
4225: EQUAL
4226: AND
4227: PUSH
4228: LD_INT 22
4230: PUSH
4231: LD_INT 7
4233: PUSH
4234: EMPTY
4235: LIST
4236: LIST
4237: PUSH
4238: LD_INT 21
4240: PUSH
4241: LD_INT 1
4243: PUSH
4244: EMPTY
4245: LIST
4246: LIST
4247: PUSH
4248: LD_INT 50
4250: PUSH
4251: EMPTY
4252: LIST
4253: PUSH
4254: EMPTY
4255: LIST
4256: LIST
4257: LIST
4258: PPUSH
4259: CALL_OW 69
4263: NOT
4264: AND
4265: IFFALSE 4276
// DAllKuronskiDead ( u ) ;
4267: LD_VAR 0 1
4271: PPUSH
4272: CALL 3442 0 1
// if GetSide ( u ) <> 1 then
4276: LD_VAR 0 1
4280: PPUSH
4281: CALL_OW 255
4285: PUSH
4286: LD_INT 1
4288: NONEQUAL
4289: IFFALSE 4392
// case GetWeapon ( u ) of us_cargo_bay :
4291: LD_VAR 0 1
4295: PPUSH
4296: CALL_OW 264
4300: PUSH
4301: LD_INT 12
4303: DOUBLE
4304: EQUAL
4305: IFTRUE 4309
4307: GO 4331
4309: POP
// ComConstruct ( kf , us_medium_tracked , engine_siberite , control_remote , us_cargo_bay ) ; us_crane :
4310: LD_INT 45
4312: PPUSH
4313: LD_INT 3
4315: PPUSH
4316: LD_INT 3
4318: PPUSH
4319: LD_INT 2
4321: PPUSH
4322: LD_INT 12
4324: PPUSH
4325: CALL_OW 125
4329: GO 4392
4331: LD_INT 13
4333: DOUBLE
4334: EQUAL
4335: IFTRUE 4339
4337: GO 4361
4339: POP
// ComConstruct ( kf , us_heavy_tracked , engine_siberite , control_remote , us_crane ) ; ar_cargo_bay :
4340: LD_INT 45
4342: PPUSH
4343: LD_INT 4
4345: PPUSH
4346: LD_INT 3
4348: PPUSH
4349: LD_INT 2
4351: PPUSH
4352: LD_INT 13
4354: PPUSH
4355: CALL_OW 125
4359: GO 4392
4361: LD_INT 32
4363: DOUBLE
4364: EQUAL
4365: IFTRUE 4369
4367: GO 4391
4369: POP
// ComConstruct ( af , ar_half_tracked , engine_siberite , control_remote , ar_cargo_bay ) ; end ;
4370: LD_INT 16
4372: PPUSH
4373: LD_INT 14
4375: PPUSH
4376: LD_INT 3
4378: PPUSH
4379: LD_INT 2
4381: PPUSH
4382: LD_INT 32
4384: PPUSH
4385: CALL_OW 125
4389: GO 4392
4391: POP
// end ;
4392: PPOPN 1
4394: END
// on LeaveBuilding ( b , u ) do begin if GetSide ( b ) <> 1 and GetLives ( b ) < 250 then
4395: LD_VAR 0 1
4399: PPUSH
4400: CALL_OW 255
4404: PUSH
4405: LD_INT 1
4407: NONEQUAL
4408: PUSH
4409: LD_VAR 0 1
4413: PPUSH
4414: CALL_OW 256
4418: PUSH
4419: LD_INT 250
4421: LESS
4422: AND
4423: IFFALSE 4592
// begin if GetBType ( b ) = b_bunker or GetBType ( b ) = b_breastwork then
4425: LD_VAR 0 1
4429: PPUSH
4430: CALL_OW 266
4434: PUSH
4435: LD_INT 32
4437: EQUAL
4438: PUSH
4439: LD_VAR 0 1
4443: PPUSH
4444: CALL_OW 266
4448: PUSH
4449: LD_INT 31
4451: EQUAL
4452: OR
4453: IFFALSE 4528
// ComEnterUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( u ) ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_armoury ] ] ] ) , u ) ) ;
4455: LD_VAR 0 2
4459: PPUSH
4460: LD_INT 22
4462: PUSH
4463: LD_VAR 0 2
4467: PPUSH
4468: CALL_OW 255
4472: PUSH
4473: EMPTY
4474: LIST
4475: LIST
4476: PUSH
4477: LD_INT 2
4479: PUSH
4480: LD_INT 30
4482: PUSH
4483: LD_INT 5
4485: PUSH
4486: EMPTY
4487: LIST
4488: LIST
4489: PUSH
4490: LD_INT 30
4492: PUSH
4493: LD_INT 4
4495: PUSH
4496: EMPTY
4497: LIST
4498: LIST
4499: PUSH
4500: EMPTY
4501: LIST
4502: LIST
4503: LIST
4504: PUSH
4505: EMPTY
4506: LIST
4507: LIST
4508: PPUSH
4509: CALL_OW 69
4513: PPUSH
4514: LD_VAR 0 2
4518: PPUSH
4519: CALL_OW 74
4523: PPUSH
4524: CALL_OW 120
// if GetBType ( b ) = b_barracks or GetBType ( b ) = b_armoury then
4528: LD_VAR 0 1
4532: PPUSH
4533: CALL_OW 266
4537: PUSH
4538: LD_INT 5
4540: EQUAL
4541: PUSH
4542: LD_VAR 0 1
4546: PPUSH
4547: CALL_OW 266
4551: PUSH
4552: LD_INT 4
4554: EQUAL
4555: OR
4556: IFFALSE 4592
// ComAttackUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ f_side , 1 ] ) , u ) ) ;
4558: LD_VAR 0 2
4562: PPUSH
4563: LD_INT 22
4565: PUSH
4566: LD_INT 1
4568: PUSH
4569: EMPTY
4570: LIST
4571: LIST
4572: PPUSH
4573: CALL_OW 69
4577: PPUSH
4578: LD_VAR 0 2
4582: PPUSH
4583: CALL_OW 74
4587: PPUSH
4588: CALL_OW 115
// end ; end ;
4592: PPOPN 2
4594: END
// on BuildingComplete ( b ) do begin if IsInArea ( b , DepositHillArea ) and GetBType ( b ) = b_depot then
4595: LD_VAR 0 1
4599: PPUSH
4600: LD_INT 3
4602: PPUSH
4603: CALL_OW 308
4607: PUSH
4608: LD_VAR 0 1
4612: PPUSH
4613: CALL_OW 266
4617: PUSH
4618: LD_INT 0
4620: EQUAL
4621: AND
4622: IFFALSE 4634
// AmericanDepot = b ;
4624: LD_ADDR_EXP 7
4628: PUSH
4629: LD_VAR 0 1
4633: ST_TO_ADDR
// if GetSide ( b ) <> 1 then
4634: LD_VAR 0 1
4638: PPUSH
4639: CALL_OW 255
4643: PUSH
4644: LD_INT 1
4646: NONEQUAL
4647: IFFALSE 4785
// begin if GetBType ( b ) = b_bunker or GetBType ( b ) = b_turret then
4649: LD_VAR 0 1
4653: PPUSH
4654: CALL_OW 266
4658: PUSH
4659: LD_INT 32
4661: EQUAL
4662: PUSH
4663: LD_VAR 0 1
4667: PPUSH
4668: CALL_OW 266
4672: PUSH
4673: LD_INT 33
4675: EQUAL
4676: OR
4677: IFFALSE 4736
// case GetNation ( b ) of nation_american :
4679: LD_VAR 0 1
4683: PPUSH
4684: CALL_OW 248
4688: PUSH
4689: LD_INT 1
4691: DOUBLE
4692: EQUAL
4693: IFTRUE 4697
4695: GO 4712
4697: POP
// AddComPlaceWeapon ( b , us_double_gun ) ; nation_arabian :
4698: LD_VAR 0 1
4702: PPUSH
4703: LD_INT 5
4705: PPUSH
4706: CALL_OW 208
4710: GO 4736
4712: LD_INT 2
4714: DOUBLE
4715: EQUAL
4716: IFTRUE 4720
4718: GO 4735
4720: POP
// AddComPlaceWeapon ( b , ar_rocket_launcher ) ; end ;
4721: LD_VAR 0 1
4725: PPUSH
4726: LD_INT 28
4728: PPUSH
4729: CALL_OW 208
4733: GO 4736
4735: POP
// if GetBType ( b ) = b_control_tower then
4736: LD_VAR 0 1
4740: PPUSH
4741: CALL_OW 266
4745: PUSH
4746: LD_INT 36
4748: EQUAL
4749: IFFALSE 4785
// if UnitsInside ( kf ) > 1 then
4751: LD_INT 45
4753: PPUSH
4754: CALL_OW 313
4758: PUSH
4759: LD_INT 1
4761: GREATER
4762: IFFALSE 4785
// ComEnterUnit ( UnitsInside ( kf ) [ 1 ] , b ) ;
4764: LD_INT 45
4766: PPUSH
4767: CALL_OW 313
4771: PUSH
4772: LD_INT 1
4774: ARRAY
4775: PPUSH
4776: LD_VAR 0 1
4780: PPUSH
4781: CALL_OW 120
// end ; end ; end_of_file
4785: PPOPN 1
4787: END
// every 0 0$1 trigger ArabiansOver and KuronskiOver do var u ;
4788: LD_EXP 10
4792: PUSH
4793: LD_EXP 11
4797: AND
4798: IFFALSE 5158
4800: GO 4802
4802: DISABLE
4803: LD_INT 0
4805: PPUSH
// begin u = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] , [ f_ok ] ] ) ;
4806: LD_ADDR_VAR 0 1
4810: PUSH
4811: LD_INT 22
4813: PUSH
4814: LD_INT 1
4816: PUSH
4817: EMPTY
4818: LIST
4819: LIST
4820: PUSH
4821: LD_INT 21
4823: PUSH
4824: LD_INT 1
4826: PUSH
4827: EMPTY
4828: LIST
4829: LIST
4830: PUSH
4831: LD_INT 3
4833: PUSH
4834: LD_INT 23
4836: PUSH
4837: LD_INT 0
4839: PUSH
4840: EMPTY
4841: LIST
4842: LIST
4843: PUSH
4844: EMPTY
4845: LIST
4846: LIST
4847: PUSH
4848: LD_INT 50
4850: PUSH
4851: EMPTY
4852: LIST
4853: PUSH
4854: EMPTY
4855: LIST
4856: LIST
4857: LIST
4858: LIST
4859: PPUSH
4860: CALL_OW 69
4864: ST_TO_ADDR
// InGameOn ;
4865: CALL_OW 8
// DialogueOn ;
4869: CALL_OW 6
// if IsInUnit ( Alex ) then
4873: LD_EXP 1
4877: PPUSH
4878: CALL_OW 310
4882: IFFALSE 4900
// CenterOnUnits ( IsInUnit ( Alex ) ) else
4884: LD_EXP 1
4888: PPUSH
4889: CALL_OW 310
4893: PPUSH
4894: CALL_OW 85
4898: GO 4909
// CenterOnUnits ( Alex ) ;
4900: LD_EXP 1
4904: PPUSH
4905: CALL_OW 85
// if IsOK ( Anne ) then
4909: LD_EXP 2
4913: PPUSH
4914: CALL_OW 302
4918: IFFALSE 4932
// Say ( Anne , de-n-1 ) ;
4920: LD_EXP 2
4924: PPUSH
4925: LD_STRING de-n-1
4927: PPUSH
4928: CALL_OW 88
// if IsOK ( Eddings ) then
4932: LD_EXP 3
4936: PPUSH
4937: CALL_OW 302
4941: IFFALSE 4955
// Say ( Eddings , de-e-1 ) ;
4943: LD_EXP 3
4947: PPUSH
4948: LD_STRING de-e-1
4950: PPUSH
4951: CALL_OW 88
// if not IsOK ( Anne ) and not IsOK ( Eddings ) then
4955: LD_EXP 2
4959: PPUSH
4960: CALL_OW 302
4964: NOT
4965: PUSH
4966: LD_EXP 3
4970: PPUSH
4971: CALL_OW 302
4975: NOT
4976: AND
4977: IFFALSE 4995
// Say ( u [ 1 ] , de-x-1 ) ;
4979: LD_VAR 0 1
4983: PUSH
4984: LD_INT 1
4986: ARRAY
4987: PPUSH
4988: LD_STRING de-x-1
4990: PPUSH
4991: CALL_OW 88
// if IsOK ( Sancho ) then
4995: LD_EXP 4
4999: PPUSH
5000: CALL_OW 302
5004: IFFALSE 5018
// Say ( Sancho , de-s-1 ) ;
5006: LD_EXP 4
5010: PPUSH
5011: LD_STRING de-s-1
5013: PPUSH
5014: CALL_OW 88
// if u [ 2 ] then
5018: LD_VAR 0 1
5022: PUSH
5023: LD_INT 2
5025: ARRAY
5026: IFFALSE 5044
// Say ( u [ 2 ] , de-x-2 ) ;
5028: LD_VAR 0 1
5032: PUSH
5033: LD_INT 2
5035: ARRAY
5036: PPUSH
5037: LD_STRING de-x-2
5039: PPUSH
5040: CALL_OW 88
// Say ( Alex , de-a-1 ) ;
5044: LD_EXP 1
5048: PPUSH
5049: LD_STRING de-a-1
5051: PPUSH
5052: CALL_OW 88
// AddMedal ( MEnd , 1 ) ;
5056: LD_STRING MEnd
5058: PPUSH
5059: LD_INT 1
5061: PPUSH
5062: CALL_OW 101
// if not AmericanLosses then
5066: LD_EXP 15
5070: NOT
5071: IFFALSE 5085
// AddMedal ( MLosses , 1 ) else
5073: LD_STRING MLosses
5075: PPUSH
5076: LD_INT 1
5078: PPUSH
5079: CALL_OW 101
5083: GO 5096
// AddMedal ( MLosses , - 1 ) ;
5085: LD_STRING MLosses
5087: PPUSH
5088: LD_INT 1
5090: NEG
5091: PPUSH
5092: CALL_OW 101
// if RocketDone then
5096: LD_EXP 9
5100: IFFALSE 5114
// AddMedal ( MRocket , 1 ) else
5102: LD_STRING MRocket
5104: PPUSH
5105: LD_INT 1
5107: PPUSH
5108: CALL_OW 101
5112: GO 5125
// AddMedal ( MRocket , - 1 ) ;
5114: LD_STRING MRocket
5116: PPUSH
5117: LD_INT 1
5119: NEG
5120: PPUSH
5121: CALL_OW 101
// GiveMedals ( Main ) ;
5125: LD_STRING Main
5127: PPUSH
5128: CALL_OW 102
// Query ( QEnd ) ;
5132: LD_STRING QEnd
5134: PPUSH
5135: CALL_OW 97
// Query ( QEnd2 ) ;
5139: LD_STRING QEnd2
5141: PPUSH
5142: CALL_OW 97
// InGameOff ;
5146: CALL_OW 9
// DialogueOff ;
5150: CALL_OW 7
// YouWin ;
5154: CALL_OW 103
// end ; end_of_file
5158: PPOPN 1
5160: END
// export Bojan , Gom , Mahmoud ; export ASiberite ; export AEngineers , ALightVehs , AHeavyVehs , ABuildings , ACargo ; export ATargets , AEnemies ; export AAttackStrategy , ADefenceStrategy , ARepairStrategy , ABaseStrategy ; export function PrepareArabs ; var i , techs ; begin
5161: LD_INT 0
5163: PPUSH
5164: PPUSH
5165: PPUSH
// uc_side = 2 ;
5166: LD_ADDR_OWVAR 20
5170: PUSH
5171: LD_INT 2
5173: ST_TO_ADDR
// uc_nation = 2 ;
5174: LD_ADDR_OWVAR 21
5178: PUSH
5179: LD_INT 2
5181: ST_TO_ADDR
// PrepareBase ( 2 , ArabianBaseArea , [ Rand ( 4 , 5 ) , Rand ( 4 , 6 ) , Rand ( 5 , 7 ) ] [ difficulty ] , 3 , 1 , [ 2 , 3 , 3 ] [ difficulty ] , 3 ) ;
5182: LD_INT 2
5184: PPUSH
5185: LD_INT 4
5187: PPUSH
5188: LD_INT 4
5190: PPUSH
5191: LD_INT 5
5193: PPUSH
5194: CALL_OW 12
5198: PUSH
5199: LD_INT 4
5201: PPUSH
5202: LD_INT 6
5204: PPUSH
5205: CALL_OW 12
5209: PUSH
5210: LD_INT 5
5212: PPUSH
5213: LD_INT 7
5215: PPUSH
5216: CALL_OW 12
5220: PUSH
5221: EMPTY
5222: LIST
5223: LIST
5224: LIST
5225: PUSH
5226: LD_OWVAR 67
5230: ARRAY
5231: PPUSH
5232: LD_INT 3
5234: PPUSH
5235: LD_INT 1
5237: PPUSH
5238: LD_INT 2
5240: PUSH
5241: LD_INT 3
5243: PUSH
5244: LD_INT 3
5246: PUSH
5247: EMPTY
5248: LIST
5249: LIST
5250: LIST
5251: PUSH
5252: LD_OWVAR 67
5256: ARRAY
5257: PPUSH
5258: LD_INT 3
5260: PPUSH
5261: CALL 11573 0 7
// for i in FilterAllUnits ( [ f_side , 2 ] ) do
5265: LD_ADDR_VAR 0 2
5269: PUSH
5270: LD_INT 22
5272: PUSH
5273: LD_INT 2
5275: PUSH
5276: EMPTY
5277: LIST
5278: LIST
5279: PPUSH
5280: CALL_OW 69
5284: PUSH
5285: FOR_IN
5286: IFFALSE 5337
// if GetBType ( IsInUnit ( i ) ) = b_breastwork or ( IsInUnit ( i ) ) = b_barracks then
5288: LD_VAR 0 2
5292: PPUSH
5293: CALL_OW 310
5297: PPUSH
5298: CALL_OW 266
5302: PUSH
5303: LD_INT 31
5305: EQUAL
5306: PUSH
5307: LD_VAR 0 2
5311: PPUSH
5312: CALL_OW 310
5316: PUSH
5317: LD_INT 5
5319: EQUAL
5320: OR
5321: IFFALSE 5335
// SetClass ( i , class_mortar ) ;
5323: LD_VAR 0 2
5327: PPUSH
5328: LD_INT 8
5330: PPUSH
5331: CALL_OW 336
5335: GO 5285
5337: POP
5338: POP
// InitHc ;
5339: CALL_OW 19
// for i in [ art1 , art2 ] do
5343: LD_ADDR_VAR 0 2
5347: PUSH
5348: LD_INT 170
5350: PUSH
5351: LD_INT 198
5353: PUSH
5354: EMPTY
5355: LIST
5356: LIST
5357: PUSH
5358: FOR_IN
5359: IFFALSE 5404
// begin PrepareMechanic ( false , [ 5 , 6 , 6 ] [ difficulty ] ) ;
5361: LD_INT 0
5363: PPUSH
5364: LD_INT 5
5366: PUSH
5367: LD_INT 6
5369: PUSH
5370: LD_INT 6
5372: PUSH
5373: EMPTY
5374: LIST
5375: LIST
5376: LIST
5377: PUSH
5378: LD_OWVAR 67
5382: ARRAY
5383: PPUSH
5384: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
5388: CALL_OW 44
5392: PPUSH
5393: LD_VAR 0 2
5397: PPUSH
5398: CALL_OW 52
// end ;
5402: GO 5358
5404: POP
5405: POP
// Bojan = NewCharacter ( Bojan ) ;
5406: LD_ADDR_EXP 16
5410: PUSH
5411: LD_STRING Bojan
5413: PPUSH
5414: CALL_OW 25
5418: ST_TO_ADDR
// PlaceHumanInUnit ( Bojan , aa2 ) ;
5419: LD_EXP 16
5423: PPUSH
5424: LD_INT 29
5426: PPUSH
5427: CALL_OW 52
// Gom = NewCharacter ( Gom ) ;
5431: LD_ADDR_EXP 17
5435: PUSH
5436: LD_STRING Gom
5438: PPUSH
5439: CALL_OW 25
5443: ST_TO_ADDR
// PlaceHumanInUnit ( Gom , al ) ;
5444: LD_EXP 17
5448: PPUSH
5449: LD_INT 17
5451: PPUSH
5452: CALL_OW 52
// Mahmoud = NewCharacter ( Mahmoud ) ;
5456: LD_ADDR_EXP 18
5460: PUSH
5461: LD_STRING Mahmoud
5463: PPUSH
5464: CALL_OW 25
5468: ST_TO_ADDR
// SetClass ( Mahmoud , class_desert_warior ) ;
5469: LD_EXP 18
5473: PPUSH
5474: LD_INT 11
5476: PPUSH
5477: CALL_OW 336
// PlaceHumanInUnit ( Mahmoud , mahmoudont ) ;
5481: LD_EXP 18
5485: PPUSH
5486: LD_INT 185
5488: PPUSH
5489: CALL_OW 52
// techs = [ tech_SelfDest , tech_Tech2 , tech_Opto1 , tech_Opto2 , tech_Weap2 , tech_Tech3 , tech_Opto3 , tech_Weap3 ] ;
5493: LD_ADDR_VAR 0 3
5497: PUSH
5498: LD_INT 43
5500: PUSH
5501: LD_INT 49
5503: PUSH
5504: LD_INT 60
5506: PUSH
5507: LD_INT 61
5509: PUSH
5510: LD_INT 52
5512: PUSH
5513: LD_INT 50
5515: PUSH
5516: LD_INT 62
5518: PUSH
5519: LD_INT 53
5521: PUSH
5522: EMPTY
5523: LIST
5524: LIST
5525: LIST
5526: LIST
5527: LIST
5528: LIST
5529: LIST
5530: LIST
5531: ST_TO_ADDR
// for i in techs do
5532: LD_ADDR_VAR 0 2
5536: PUSH
5537: LD_VAR 0 3
5541: PUSH
5542: FOR_IN
5543: IFFALSE 5559
// AddComResearch ( al , i ) ;
5545: LD_INT 17
5547: PPUSH
5548: LD_VAR 0 2
5552: PPUSH
5553: CALL_OW 184
5557: GO 5542
5559: POP
5560: POP
// end ;
5561: LD_VAR 0 1
5565: RET
// every 0 0$1 do var i ;
5566: GO 5568
5568: DISABLE
5569: LD_INT 0
5571: PPUSH
// begin enable ;
5572: ENABLE
// if ArabiansOver then
5573: LD_EXP 10
5577: IFFALSE 5582
// begin disable ;
5579: DISABLE
// exit ;
5580: GO 6029
// end ; AEngineers = FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) ^ FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , us_crane ] ] ) ^ UnitFilter ( UnitsInside ( ad ) , [ f_side , 2 ] ) ;
5582: LD_ADDR_EXP 20
5586: PUSH
5587: LD_INT 4
5589: PPUSH
5590: LD_INT 22
5592: PUSH
5593: LD_INT 2
5595: PUSH
5596: EMPTY
5597: LIST
5598: LIST
5599: PUSH
5600: LD_INT 25
5602: PUSH
5603: LD_INT 2
5605: PUSH
5606: EMPTY
5607: LIST
5608: LIST
5609: PUSH
5610: EMPTY
5611: LIST
5612: LIST
5613: PPUSH
5614: CALL_OW 70
5618: PUSH
5619: LD_INT 22
5621: PUSH
5622: LD_INT 2
5624: PUSH
5625: EMPTY
5626: LIST
5627: LIST
5628: PUSH
5629: LD_INT 34
5631: PUSH
5632: LD_INT 13
5634: PUSH
5635: EMPTY
5636: LIST
5637: LIST
5638: PUSH
5639: EMPTY
5640: LIST
5641: LIST
5642: PPUSH
5643: CALL_OW 69
5647: ADD
5648: PUSH
5649: LD_INT 9
5651: PPUSH
5652: CALL_OW 313
5656: PPUSH
5657: LD_INT 22
5659: PUSH
5660: LD_INT 2
5662: PUSH
5663: EMPTY
5664: LIST
5665: LIST
5666: PPUSH
5667: CALL_OW 72
5671: ADD
5672: ST_TO_ADDR
// ABuildings = FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) ;
5673: LD_ADDR_EXP 23
5677: PUSH
5678: LD_INT 4
5680: PPUSH
5681: LD_INT 22
5683: PUSH
5684: LD_INT 2
5686: PUSH
5687: EMPTY
5688: LIST
5689: LIST
5690: PUSH
5691: LD_INT 21
5693: PUSH
5694: LD_INT 3
5696: PUSH
5697: EMPTY
5698: LIST
5699: LIST
5700: PUSH
5701: EMPTY
5702: LIST
5703: LIST
5704: PPUSH
5705: CALL_OW 70
5709: ST_TO_ADDR
// if not ExistMc ( ABaseStrategy ) then
5710: LD_EXP 30
5714: PPUSH
5715: CALL_OW 386
5719: NOT
5720: IFFALSE 5763
// ABaseStrategy = McBase ( 1 , AEngineers , GetBuildList ( GetBase ( ad ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
5722: LD_ADDR_EXP 30
5726: PUSH
5727: LD_INT 1
5729: PPUSH
5730: LD_EXP 20
5734: PPUSH
5735: LD_INT 9
5737: PPUSH
5738: CALL_OW 274
5742: PPUSH
5743: CALL_OW 417
5747: PPUSH
5748: EMPTY
5749: PPUSH
5750: EMPTY
5751: PPUSH
5752: LD_INT 1
5754: PUSH
5755: EMPTY
5756: LIST
5757: PPUSH
5758: CALL_OW 397
5762: ST_TO_ADDR
// if not ExistMc ( ARepairStrategy ) and not FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
5763: LD_EXP 29
5767: PPUSH
5768: CALL_OW 386
5772: NOT
5773: PUSH
5774: LD_INT 12
5776: PPUSH
5777: LD_INT 22
5779: PUSH
5780: LD_INT 1
5782: PUSH
5783: EMPTY
5784: LIST
5785: LIST
5786: PUSH
5787: LD_INT 101
5789: PUSH
5790: LD_INT 2
5792: PUSH
5793: EMPTY
5794: LIST
5795: LIST
5796: PUSH
5797: EMPTY
5798: LIST
5799: LIST
5800: PPUSH
5801: CALL_OW 70
5805: NOT
5806: AND
5807: IFFALSE 5871
// begin for i in AEngineers do
5809: LD_ADDR_VAR 0 1
5813: PUSH
5814: LD_EXP 20
5818: PUSH
5819: FOR_IN
5820: IFFALSE 5833
// ComExitBuilding ( i ) ;
5822: LD_VAR 0 1
5826: PPUSH
5827: CALL_OW 122
5831: GO 5819
5833: POP
5834: POP
// ARepairStrategy = McRepair ( 2 , AEngineers , ABuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
5835: LD_ADDR_EXP 29
5839: PUSH
5840: LD_INT 2
5842: PPUSH
5843: LD_EXP 20
5847: PPUSH
5848: LD_EXP 23
5852: PPUSH
5853: LD_INT 6
5855: PUSH
5856: LD_INT 1000
5858: PUSH
5859: EMPTY
5860: LIST
5861: LIST
5862: PUSH
5863: EMPTY
5864: LIST
5865: PPUSH
5866: CALL_OW 414
5870: ST_TO_ADDR
// end ; if ExistMc ( ARepairStrategy ) and FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
5871: LD_EXP 29
5875: PPUSH
5876: CALL_OW 386
5880: PUSH
5881: LD_INT 12
5883: PPUSH
5884: LD_INT 22
5886: PUSH
5887: LD_INT 1
5889: PUSH
5890: EMPTY
5891: LIST
5892: LIST
5893: PUSH
5894: LD_INT 101
5896: PUSH
5897: LD_INT 2
5899: PUSH
5900: EMPTY
5901: LIST
5902: LIST
5903: PUSH
5904: EMPTY
5905: LIST
5906: LIST
5907: PPUSH
5908: CALL_OW 70
5912: AND
5913: IFFALSE 5953
// begin KillMc ( ARepairStrategy ) ;
5915: LD_EXP 29
5919: PPUSH
5920: CALL_OW 387
// for i in AEngineers do
5924: LD_ADDR_VAR 0 1
5928: PUSH
5929: LD_EXP 20
5933: PUSH
5934: FOR_IN
5935: IFFALSE 5951
// ComEnterUnit ( i , ad ) ;
5937: LD_VAR 0 1
5941: PPUSH
5942: LD_INT 9
5944: PPUSH
5945: CALL_OW 120
5949: GO 5934
5951: POP
5952: POP
// end ; ACargo = FilterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_cargo_bay ] ] ) ;
5953: LD_ADDR_EXP 24
5957: PUSH
5958: LD_INT 22
5960: PUSH
5961: LD_INT 2
5963: PUSH
5964: EMPTY
5965: LIST
5966: LIST
5967: PUSH
5968: LD_INT 34
5970: PUSH
5971: LD_INT 32
5973: PUSH
5974: EMPTY
5975: LIST
5976: LIST
5977: PUSH
5978: EMPTY
5979: LIST
5980: LIST
5981: PPUSH
5982: CALL_OW 69
5986: ST_TO_ADDR
// if GetListOfCratesInArea ( ArabianCratesArea ) then
5987: LD_INT 7
5989: PPUSH
5990: CALL_OW 435
5994: IFFALSE 6029
// AddComCollect ( ACargo , GetListOfCratesInArea ( ArabianCratesArea ) [ 1 ] , GetListOfCratesInArea ( ArabianCratesArea ) [ 2 ] ) ;
5996: LD_EXP 24
6000: PPUSH
6001: LD_INT 7
6003: PPUSH
6004: CALL_OW 435
6008: PUSH
6009: LD_INT 1
6011: ARRAY
6012: PPUSH
6013: LD_INT 7
6015: PPUSH
6016: CALL_OW 435
6020: PUSH
6021: LD_INT 2
6023: ARRAY
6024: PPUSH
6025: CALL_OW 177
// end ;
6029: PPOPN 1
6031: END
// every 0 0$15 trigger FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var i , u ;
6032: LD_INT 4
6034: PPUSH
6035: LD_INT 22
6037: PUSH
6038: LD_INT 2
6040: PUSH
6041: EMPTY
6042: LIST
6043: LIST
6044: PUSH
6045: LD_INT 58
6047: PUSH
6048: EMPTY
6049: LIST
6050: PUSH
6051: LD_INT 24
6053: PUSH
6054: LD_INT 1000
6056: PUSH
6057: EMPTY
6058: LIST
6059: LIST
6060: PUSH
6061: LD_INT 2
6063: PUSH
6064: LD_INT 30
6066: PUSH
6067: LD_INT 32
6069: PUSH
6070: EMPTY
6071: LIST
6072: LIST
6073: PUSH
6074: LD_INT 30
6076: PUSH
6077: LD_INT 31
6079: PUSH
6080: EMPTY
6081: LIST
6082: LIST
6083: PUSH
6084: EMPTY
6085: LIST
6086: LIST
6087: LIST
6088: PUSH
6089: EMPTY
6090: LIST
6091: LIST
6092: LIST
6093: LIST
6094: PPUSH
6095: CALL_OW 70
6099: IFFALSE 6255
6101: GO 6103
6103: DISABLE
6104: LD_INT 0
6106: PPUSH
6107: PPUSH
// begin enable ;
6108: ENABLE
// if ArabiansOver then
6109: LD_EXP 10
6113: IFFALSE 6118
// begin disable ;
6115: DISABLE
// exit ;
6116: GO 6255
// end ; for i in FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do
6118: LD_ADDR_VAR 0 1
6122: PUSH
6123: LD_INT 4
6125: PPUSH
6126: LD_INT 22
6128: PUSH
6129: LD_INT 2
6131: PUSH
6132: EMPTY
6133: LIST
6134: LIST
6135: PUSH
6136: LD_INT 58
6138: PUSH
6139: EMPTY
6140: LIST
6141: PUSH
6142: LD_INT 24
6144: PUSH
6145: LD_INT 1000
6147: PUSH
6148: EMPTY
6149: LIST
6150: LIST
6151: PUSH
6152: LD_INT 2
6154: PUSH
6155: LD_INT 30
6157: PUSH
6158: LD_INT 32
6160: PUSH
6161: EMPTY
6162: LIST
6163: LIST
6164: PUSH
6165: LD_INT 30
6167: PUSH
6168: LD_INT 31
6170: PUSH
6171: EMPTY
6172: LIST
6173: LIST
6174: PUSH
6175: EMPTY
6176: LIST
6177: LIST
6178: LIST
6179: PUSH
6180: EMPTY
6181: LIST
6182: LIST
6183: LIST
6184: LIST
6185: PPUSH
6186: CALL_OW 70
6190: PUSH
6191: FOR_IN
6192: IFFALSE 6253
// begin u = UnitsInside ( NearestUnitToUnit ( [ aa1 , aa2 ] , i ) ) [ 1 ] ;
6194: LD_ADDR_VAR 0 2
6198: PUSH
6199: LD_INT 12
6201: PUSH
6202: LD_INT 29
6204: PUSH
6205: EMPTY
6206: LIST
6207: LIST
6208: PPUSH
6209: LD_VAR 0 1
6213: PPUSH
6214: CALL_OW 74
6218: PPUSH
6219: CALL_OW 313
6223: PUSH
6224: LD_INT 1
6226: ARRAY
6227: ST_TO_ADDR
// ComExitBuilding ( u ) ;
6228: LD_VAR 0 2
6232: PPUSH
6233: CALL_OW 122
// ComEnterUnit ( u , i ) ;
6237: LD_VAR 0 2
6241: PPUSH
6242: LD_VAR 0 1
6246: PPUSH
6247: CALL_OW 120
// end ;
6251: GO 6191
6253: POP
6254: POP
// end ;
6255: PPOPN 2
6257: END
// export MinePositions ; export function TestTheMine ( x , y , z , i ) ; var t ; begin
6258: LD_INT 0
6260: PPUSH
6261: PPUSH
// t = FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] , [ f_distxy , x , y , 2 ] ] ) ;
6262: LD_ADDR_VAR 0 6
6266: PUSH
6267: LD_INT 22
6269: PUSH
6270: LD_INT 1
6272: PUSH
6273: EMPTY
6274: LIST
6275: LIST
6276: PUSH
6277: LD_INT 2
6279: PUSH
6280: LD_INT 21
6282: PUSH
6283: LD_INT 1
6285: PUSH
6286: EMPTY
6287: LIST
6288: LIST
6289: PUSH
6290: LD_INT 21
6292: PUSH
6293: LD_INT 2
6295: PUSH
6296: EMPTY
6297: LIST
6298: LIST
6299: PUSH
6300: EMPTY
6301: LIST
6302: LIST
6303: LIST
6304: PUSH
6305: LD_INT 92
6307: PUSH
6308: LD_VAR 0 1
6312: PUSH
6313: LD_VAR 0 2
6317: PUSH
6318: LD_INT 2
6320: PUSH
6321: EMPTY
6322: LIST
6323: LIST
6324: LIST
6325: LIST
6326: PUSH
6327: EMPTY
6328: LIST
6329: LIST
6330: LIST
6331: PPUSH
6332: CALL_OW 69
6336: ST_TO_ADDR
// if t and z = [ 90 , 60 , 45 ] [ difficulty ] and SeeXY ( 2 , x , y ) then
6337: LD_VAR 0 6
6341: PUSH
6342: LD_VAR 0 3
6346: PUSH
6347: LD_INT 90
6349: PUSH
6350: LD_INT 60
6352: PUSH
6353: LD_INT 45
6355: PUSH
6356: EMPTY
6357: LIST
6358: LIST
6359: LIST
6360: PUSH
6361: LD_OWVAR 67
6365: ARRAY
6366: EQUAL
6367: AND
6368: PUSH
6369: LD_INT 2
6371: PPUSH
6372: LD_VAR 0 1
6376: PPUSH
6377: LD_VAR 0 2
6381: PPUSH
6382: CALL_OW 293
6386: AND
6387: IFFALSE 6450
// begin MineExplosion ( x , y , 3 ) ;
6389: LD_VAR 0 1
6393: PPUSH
6394: LD_VAR 0 2
6398: PPUSH
6399: LD_INT 3
6401: PPUSH
6402: CALL_OW 453
// MinePositions = Replace ( MinePositions , i , Replace ( MinePositions [ i ] , 3 , 0 ) ) ;
6406: LD_ADDR_EXP 31
6410: PUSH
6411: LD_EXP 31
6415: PPUSH
6416: LD_VAR 0 4
6420: PPUSH
6421: LD_EXP 31
6425: PUSH
6426: LD_VAR 0 4
6430: ARRAY
6431: PPUSH
6432: LD_INT 3
6434: PPUSH
6435: LD_INT 0
6437: PPUSH
6438: CALL_OW 1
6442: PPUSH
6443: CALL_OW 1
6447: ST_TO_ADDR
// end else
6448: GO 6452
// exit ;
6450: GO 6452
// end ;
6452: LD_VAR 0 5
6456: RET
// every 0 0$1 do
6457: GO 6459
6459: DISABLE
// MinePositions = [ [ 27 , 40 , 0 ] , [ 63 , 49 , 0 ] , [ 66 , 45 , 0 ] , [ 68 , 21 , 0 ] , [ 65 , 15 , 0 ] , [ 61 , 9 , 0 ] ] ;
6460: LD_ADDR_EXP 31
6464: PUSH
6465: LD_INT 27
6467: PUSH
6468: LD_INT 40
6470: PUSH
6471: LD_INT 0
6473: PUSH
6474: EMPTY
6475: LIST
6476: LIST
6477: LIST
6478: PUSH
6479: LD_INT 63
6481: PUSH
6482: LD_INT 49
6484: PUSH
6485: LD_INT 0
6487: PUSH
6488: EMPTY
6489: LIST
6490: LIST
6491: LIST
6492: PUSH
6493: LD_INT 66
6495: PUSH
6496: LD_INT 45
6498: PUSH
6499: LD_INT 0
6501: PUSH
6502: EMPTY
6503: LIST
6504: LIST
6505: LIST
6506: PUSH
6507: LD_INT 68
6509: PUSH
6510: LD_INT 21
6512: PUSH
6513: LD_INT 0
6515: PUSH
6516: EMPTY
6517: LIST
6518: LIST
6519: LIST
6520: PUSH
6521: LD_INT 65
6523: PUSH
6524: LD_INT 15
6526: PUSH
6527: LD_INT 0
6529: PUSH
6530: EMPTY
6531: LIST
6532: LIST
6533: LIST
6534: PUSH
6535: LD_INT 61
6537: PUSH
6538: LD_INT 9
6540: PUSH
6541: LD_INT 0
6543: PUSH
6544: EMPTY
6545: LIST
6546: LIST
6547: LIST
6548: PUSH
6549: EMPTY
6550: LIST
6551: LIST
6552: LIST
6553: LIST
6554: LIST
6555: LIST
6556: ST_TO_ADDR
6557: END
// every 0 0$1 do var i ;
6558: GO 6560
6560: DISABLE
6561: LD_INT 0
6563: PPUSH
// begin enable ;
6564: ENABLE
// if ArabiansOver then
6565: LD_EXP 10
6569: IFFALSE 6574
// begin disable ;
6571: DISABLE
// exit ;
6572: GO 6903
// end ; for i = 1 to MinePositions do
6574: LD_ADDR_VAR 0 1
6578: PUSH
6579: DOUBLE
6580: LD_INT 1
6582: DEC
6583: ST_TO_ADDR
6584: LD_EXP 31
6588: PUSH
6589: FOR_TO
6590: IFFALSE 6901
// begin TestTheMine ( MinePositions [ i ] [ 1 ] , MinePositions [ i ] [ 2 ] , MinePositions [ i ] [ 3 ] , i ) ;
6592: LD_EXP 31
6596: PUSH
6597: LD_VAR 0 1
6601: ARRAY
6602: PUSH
6603: LD_INT 1
6605: ARRAY
6606: PPUSH
6607: LD_EXP 31
6611: PUSH
6612: LD_VAR 0 1
6616: ARRAY
6617: PUSH
6618: LD_INT 2
6620: ARRAY
6621: PPUSH
6622: LD_EXP 31
6626: PUSH
6627: LD_VAR 0 1
6631: ARRAY
6632: PUSH
6633: LD_INT 3
6635: ARRAY
6636: PPUSH
6637: LD_VAR 0 1
6641: PPUSH
6642: CALL 6258 0 4
// if not SeeXY ( 1 , MinePositions [ i ] [ 1 ] , MinePositions [ i ] [ 2 ] ) and MinePositions [ i ] [ 3 ] < [ 90 , 60 , 45 ] [ difficulty ] then
6646: LD_INT 1
6648: PPUSH
6649: LD_EXP 31
6653: PUSH
6654: LD_VAR 0 1
6658: ARRAY
6659: PUSH
6660: LD_INT 1
6662: ARRAY
6663: PPUSH
6664: LD_EXP 31
6668: PUSH
6669: LD_VAR 0 1
6673: ARRAY
6674: PUSH
6675: LD_INT 2
6677: ARRAY
6678: PPUSH
6679: CALL_OW 293
6683: NOT
6684: PUSH
6685: LD_EXP 31
6689: PUSH
6690: LD_VAR 0 1
6694: ARRAY
6695: PUSH
6696: LD_INT 3
6698: ARRAY
6699: PUSH
6700: LD_INT 90
6702: PUSH
6703: LD_INT 60
6705: PUSH
6706: LD_INT 45
6708: PUSH
6709: EMPTY
6710: LIST
6711: LIST
6712: LIST
6713: PUSH
6714: LD_OWVAR 67
6718: ARRAY
6719: LESS
6720: AND
6721: IFFALSE 6781
// MinePositions = Replace ( MinePositions , i , Replace ( MinePositions [ i ] , 3 , MinePositions [ i ] [ 3 ] + 1 ) ) ;
6723: LD_ADDR_EXP 31
6727: PUSH
6728: LD_EXP 31
6732: PPUSH
6733: LD_VAR 0 1
6737: PPUSH
6738: LD_EXP 31
6742: PUSH
6743: LD_VAR 0 1
6747: ARRAY
6748: PPUSH
6749: LD_INT 3
6751: PPUSH
6752: LD_EXP 31
6756: PUSH
6757: LD_VAR 0 1
6761: ARRAY
6762: PUSH
6763: LD_INT 3
6765: ARRAY
6766: PUSH
6767: LD_INT 1
6769: PLUS
6770: PPUSH
6771: CALL_OW 1
6775: PPUSH
6776: CALL_OW 1
6780: ST_TO_ADDR
// if SeeXY ( 1 , MinePositions [ i ] [ 1 ] , MinePositions [ i ] [ 2 ] ) and MinePositions [ i ] [ 3 ] < [ 90 , 60 , 45 ] [ difficulty ] then
6781: LD_INT 1
6783: PPUSH
6784: LD_EXP 31
6788: PUSH
6789: LD_VAR 0 1
6793: ARRAY
6794: PUSH
6795: LD_INT 1
6797: ARRAY
6798: PPUSH
6799: LD_EXP 31
6803: PUSH
6804: LD_VAR 0 1
6808: ARRAY
6809: PUSH
6810: LD_INT 2
6812: ARRAY
6813: PPUSH
6814: CALL_OW 293
6818: PUSH
6819: LD_EXP 31
6823: PUSH
6824: LD_VAR 0 1
6828: ARRAY
6829: PUSH
6830: LD_INT 3
6832: ARRAY
6833: PUSH
6834: LD_INT 90
6836: PUSH
6837: LD_INT 60
6839: PUSH
6840: LD_INT 45
6842: PUSH
6843: EMPTY
6844: LIST
6845: LIST
6846: LIST
6847: PUSH
6848: LD_OWVAR 67
6852: ARRAY
6853: LESS
6854: AND
6855: IFFALSE 6899
// MinePositions = Replace ( MinePositions , i , Replace ( MinePositions [ i ] , 3 , 0 ) ) ;
6857: LD_ADDR_EXP 31
6861: PUSH
6862: LD_EXP 31
6866: PPUSH
6867: LD_VAR 0 1
6871: PPUSH
6872: LD_EXP 31
6876: PUSH
6877: LD_VAR 0 1
6881: ARRAY
6882: PPUSH
6883: LD_INT 3
6885: PPUSH
6886: LD_INT 0
6888: PPUSH
6889: CALL_OW 1
6893: PPUSH
6894: CALL_OW 1
6898: ST_TO_ADDR
// end ;
6899: GO 6589
6901: POP
6902: POP
// end ;
6903: PPOPN 1
6905: END
// every 0 0$1 trigger tick > 6 6$0 do
6906: LD_OWVAR 1
6910: PUSH
6911: LD_INT 12600
6913: GREATER
6914: IFFALSE 7083
6916: GO 6918
6918: DISABLE
// begin enable ;
6919: ENABLE
// if ArabiansOver then
6920: LD_EXP 10
6924: IFFALSE 6929
// begin disable ;
6926: DISABLE
// exit ;
6927: GO 7083
// end ; if not IsBusy ( af ) and UnitsInside ( af ) and GetSide ( af ) = 2 then
6929: LD_INT 16
6931: PPUSH
6932: CALL_OW 315
6936: NOT
6937: PUSH
6938: LD_INT 16
6940: PPUSH
6941: CALL_OW 313
6945: AND
6946: PUSH
6947: LD_INT 16
6949: PPUSH
6950: CALL_OW 255
6954: PUSH
6955: LD_INT 2
6957: EQUAL
6958: AND
6959: IFFALSE 7083
// case tick of 6 6$0 + 1 .. 30 30$0 :
6961: LD_OWVAR 1
6965: PUSH
6966: LD_INT 12600
6968: PUSH
6969: LD_INT 1
6971: PLUS
6972: DOUBLE
6973: GREATEREQUAL
6974: IFFALSE 6982
6976: LD_INT 63000
6978: DOUBLE
6979: LESSEQUAL
6980: IFTRUE 6984
6982: GO 7044
6984: POP
// ComConstruct ( af , [ ar_light_trike , ar_hovercraft ] [ Rand ( 1 , 2 ) ] , engine_combustion , control_remote , [ ar_double_machine_gun , ar_light_gun ] [ Rand ( 1 , 2 ) ] ) ; else
6985: LD_INT 16
6987: PPUSH
6988: LD_INT 12
6990: PUSH
6991: LD_INT 11
6993: PUSH
6994: EMPTY
6995: LIST
6996: LIST
6997: PUSH
6998: LD_INT 1
7000: PPUSH
7001: LD_INT 2
7003: PPUSH
7004: CALL_OW 12
7008: ARRAY
7009: PPUSH
7010: LD_INT 1
7012: PPUSH
7013: LD_INT 2
7015: PPUSH
7016: LD_INT 24
7018: PUSH
7019: LD_INT 23
7021: PUSH
7022: EMPTY
7023: LIST
7024: LIST
7025: PUSH
7026: LD_INT 1
7028: PPUSH
7029: LD_INT 2
7031: PPUSH
7032: CALL_OW 12
7036: ARRAY
7037: PPUSH
7038: CALL_OW 125
7042: GO 7083
7044: POP
// ComConstruct ( af , ar_medium_trike , engine_siberite , control_remote , [ ar_rocket_launcher , ar_selfpropelled_bomb ] [ Rand ( 1 , 2 ) ] ) ; end ;
7045: LD_INT 16
7047: PPUSH
7048: LD_INT 13
7050: PPUSH
7051: LD_INT 3
7053: PPUSH
7054: LD_INT 2
7056: PPUSH
7057: LD_INT 28
7059: PUSH
7060: LD_INT 29
7062: PUSH
7063: EMPTY
7064: LIST
7065: LIST
7066: PUSH
7067: LD_INT 1
7069: PPUSH
7070: LD_INT 2
7072: PPUSH
7073: CALL_OW 12
7077: ARRAY
7078: PPUSH
7079: CALL_OW 125
// end ;
7083: END
// every 0 0$1 do
7084: GO 7086
7086: DISABLE
// AEnemies = McRegistry ( 2 , [ [ mc_reg_area_to_protect , ArabianBaseArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
7087: LD_ADDR_EXP 26
7091: PUSH
7092: LD_INT 2
7094: PPUSH
7095: LD_INT 3
7097: PUSH
7098: LD_INT 4
7100: PUSH
7101: EMPTY
7102: LIST
7103: LIST
7104: PUSH
7105: LD_INT 1
7107: PUSH
7108: LD_INT 35
7110: PUSH
7111: EMPTY
7112: LIST
7113: LIST
7114: PUSH
7115: EMPTY
7116: LIST
7117: LIST
7118: PPUSH
7119: CALL_OW 399
7123: ST_TO_ADDR
7124: END
// every 0 0$1 do
7125: GO 7127
7127: DISABLE
// ATargets = McRegistry ( 2 , [ [ mc_reg_refresh_time , 0 0$1 ] , [ mc_reg_area_to_guard , DepositHillArea ] , mc_reg_ignore_fog ] ) ;
7128: LD_ADDR_EXP 25
7132: PUSH
7133: LD_INT 2
7135: PPUSH
7136: LD_INT 1
7138: PUSH
7139: LD_INT 35
7141: PUSH
7142: EMPTY
7143: LIST
7144: LIST
7145: PUSH
7146: LD_INT 2
7148: PUSH
7149: LD_INT 3
7151: PUSH
7152: EMPTY
7153: LIST
7154: LIST
7155: PUSH
7156: LD_INT 7
7158: PUSH
7159: EMPTY
7160: LIST
7161: LIST
7162: LIST
7163: PPUSH
7164: CALL_OW 399
7168: ST_TO_ADDR
7169: END
// export function ExplosionTarget ( u ) ; begin
7170: LD_INT 0
7172: PPUSH
// result = NearestUnitToUnit ( FilterAllUnits ( [ [ f_enemy , GetSide ( u ) ] , [ f_not , [ f_type , unit_building ] ] , [ f_dist , u , 18 ] ] ) , u ) ;
7173: LD_ADDR_VAR 0 2
7177: PUSH
7178: LD_INT 81
7180: PUSH
7181: LD_VAR 0 1
7185: PPUSH
7186: CALL_OW 255
7190: PUSH
7191: EMPTY
7192: LIST
7193: LIST
7194: PUSH
7195: LD_INT 3
7197: PUSH
7198: LD_INT 21
7200: PUSH
7201: LD_INT 3
7203: PUSH
7204: EMPTY
7205: LIST
7206: LIST
7207: PUSH
7208: EMPTY
7209: LIST
7210: LIST
7211: PUSH
7212: LD_INT 91
7214: PUSH
7215: LD_VAR 0 1
7219: PUSH
7220: LD_INT 18
7222: PUSH
7223: EMPTY
7224: LIST
7225: LIST
7226: LIST
7227: PUSH
7228: EMPTY
7229: LIST
7230: LIST
7231: LIST
7232: PPUSH
7233: CALL_OW 69
7237: PPUSH
7238: LD_VAR 0 1
7242: PPUSH
7243: CALL_OW 74
7247: ST_TO_ADDR
// end ;
7248: LD_VAR 0 2
7252: RET
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_control , control_remote ] ] ) do var i ;
7253: LD_INT 22
7255: PUSH
7256: LD_INT 2
7258: PUSH
7259: EMPTY
7260: LIST
7261: LIST
7262: PUSH
7263: LD_INT 33
7265: PUSH
7266: LD_INT 2
7268: PUSH
7269: EMPTY
7270: LIST
7271: LIST
7272: PUSH
7273: EMPTY
7274: LIST
7275: LIST
7276: PPUSH
7277: CALL_OW 69
7281: IFFALSE 7993
7283: GO 7285
7285: DISABLE
7286: LD_INT 0
7288: PPUSH
// begin enable ;
7289: ENABLE
// if ArabiansOver then
7290: LD_EXP 10
7294: IFFALSE 7299
// begin disable ;
7296: DISABLE
// exit ;
7297: GO 7993
// end ; for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_control , control_remote ] ] ) do
7299: LD_ADDR_VAR 0 1
7303: PUSH
7304: LD_INT 22
7306: PUSH
7307: LD_INT 2
7309: PUSH
7310: EMPTY
7311: LIST
7312: LIST
7313: PUSH
7314: LD_INT 33
7316: PUSH
7317: LD_INT 2
7319: PUSH
7320: EMPTY
7321: LIST
7322: LIST
7323: PUSH
7324: EMPTY
7325: LIST
7326: LIST
7327: PPUSH
7328: CALL_OW 69
7332: PUSH
7333: FOR_IN
7334: IFFALSE 7399
// if not IsControledBy ( i ) then
7336: LD_VAR 0 1
7340: PPUSH
7341: CALL_OW 312
7345: NOT
7346: IFFALSE 7397
// ComLinkTo ( i , [ UnitsInside ( art1 ) [ 1 ] , UnitsInside ( art2 ) [ 1 ] ] [ Rand ( 1 , 2 ) ] ) ;
7348: LD_VAR 0 1
7352: PPUSH
7353: LD_INT 170
7355: PPUSH
7356: CALL_OW 313
7360: PUSH
7361: LD_INT 1
7363: ARRAY
7364: PUSH
7365: LD_INT 198
7367: PPUSH
7368: CALL_OW 313
7372: PUSH
7373: LD_INT 1
7375: ARRAY
7376: PUSH
7377: EMPTY
7378: LIST
7379: LIST
7380: PUSH
7381: LD_INT 1
7383: PPUSH
7384: LD_INT 2
7386: PPUSH
7387: CALL_OW 12
7391: ARRAY
7392: PPUSH
7393: CALL_OW 135
7397: GO 7333
7399: POP
7400: POP
// ALightVehs = FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_chassis , ar_light_trike ] , [ f_chassis , ar_hovercraft ] ] ] ) ;
7401: LD_ADDR_EXP 21
7405: PUSH
7406: LD_INT 22
7408: PUSH
7409: LD_INT 2
7411: PUSH
7412: EMPTY
7413: LIST
7414: LIST
7415: PUSH
7416: LD_INT 2
7418: PUSH
7419: LD_INT 31
7421: PUSH
7422: LD_INT 12
7424: PUSH
7425: EMPTY
7426: LIST
7427: LIST
7428: PUSH
7429: LD_INT 31
7431: PUSH
7432: LD_INT 11
7434: PUSH
7435: EMPTY
7436: LIST
7437: LIST
7438: PUSH
7439: EMPTY
7440: LIST
7441: LIST
7442: LIST
7443: PUSH
7444: EMPTY
7445: LIST
7446: LIST
7447: PPUSH
7448: CALL_OW 69
7452: ST_TO_ADDR
// AHeavyVehs = FilterAllUnits ( [ [ f_side , 2 ] , [ f_chassis , ar_medium_trike ] ] ) ;
7453: LD_ADDR_EXP 22
7457: PUSH
7458: LD_INT 22
7460: PUSH
7461: LD_INT 2
7463: PUSH
7464: EMPTY
7465: LIST
7466: LIST
7467: PUSH
7468: LD_INT 31
7470: PUSH
7471: LD_INT 13
7473: PUSH
7474: EMPTY
7475: LIST
7476: LIST
7477: PUSH
7478: EMPTY
7479: LIST
7480: LIST
7481: PPUSH
7482: CALL_OW 69
7486: ST_TO_ADDR
// if not ExistMc ( ADefenceStrategy ) and FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 1 ] , [ f_ok ] ] ) then
7487: LD_EXP 28
7491: PPUSH
7492: CALL_OW 386
7496: NOT
7497: PUSH
7498: LD_INT 12
7500: PPUSH
7501: LD_INT 22
7503: PUSH
7504: LD_INT 1
7506: PUSH
7507: EMPTY
7508: LIST
7509: LIST
7510: PUSH
7511: LD_INT 50
7513: PUSH
7514: EMPTY
7515: LIST
7516: PUSH
7517: EMPTY
7518: LIST
7519: LIST
7520: PPUSH
7521: CALL_OW 70
7525: AND
7526: IFFALSE 7570
// ADefenceStrategy = McDefend ( 2 , AEnemies , ALightVehs ^ AHeavyVehs , [ [ mc_def_advantage , 200 ] ] ) ;
7528: LD_ADDR_EXP 28
7532: PUSH
7533: LD_INT 2
7535: PPUSH
7536: LD_EXP 26
7540: PPUSH
7541: LD_EXP 21
7545: PUSH
7546: LD_EXP 22
7550: ADD
7551: PPUSH
7552: LD_INT 1
7554: PUSH
7555: LD_INT 200
7557: PUSH
7558: EMPTY
7559: LIST
7560: LIST
7561: PUSH
7562: EMPTY
7563: LIST
7564: PPUSH
7565: CALL_OW 401
7569: ST_TO_ADDR
// if ExistMc ( ADefenceStrategy ) and not FilterUnitsInArea ( ArabianDefenceArea , [ [ f_side , 1 ] , [ f_ok ] ] ) then
7570: LD_EXP 28
7574: PPUSH
7575: CALL_OW 386
7579: PUSH
7580: LD_INT 12
7582: PPUSH
7583: LD_INT 22
7585: PUSH
7586: LD_INT 1
7588: PUSH
7589: EMPTY
7590: LIST
7591: LIST
7592: PUSH
7593: LD_INT 50
7595: PUSH
7596: EMPTY
7597: LIST
7598: PUSH
7599: EMPTY
7600: LIST
7601: LIST
7602: PPUSH
7603: CALL_OW 70
7607: NOT
7608: AND
7609: IFFALSE 7620
// KillMc ( ADefenceStrategy ) ;
7611: LD_EXP 28
7615: PPUSH
7616: CALL_OW 387
// if ALightVehs >= [ 2 , 2 , 3 ] [ difficulty ] and not ExistMc ( AAttackStrategy ) then
7620: LD_EXP 21
7624: PUSH
7625: LD_INT 2
7627: PUSH
7628: LD_INT 2
7630: PUSH
7631: LD_INT 3
7633: PUSH
7634: EMPTY
7635: LIST
7636: LIST
7637: LIST
7638: PUSH
7639: LD_OWVAR 67
7643: ARRAY
7644: GREATEREQUAL
7645: PUSH
7646: LD_EXP 27
7650: PPUSH
7651: CALL_OW 386
7655: NOT
7656: AND
7657: IFFALSE 7688
// AAttackStrategy = McAttack ( 1 , ATargets , ALightVehs , [ mc_murder ] ) ;
7659: LD_ADDR_EXP 27
7663: PUSH
7664: LD_INT 1
7666: PPUSH
7667: LD_EXP 25
7671: PPUSH
7672: LD_EXP 21
7676: PPUSH
7677: LD_INT 12
7679: PUSH
7680: EMPTY
7681: LIST
7682: PPUSH
7683: CALL_OW 402
7687: ST_TO_ADDR
// for i in ALightVehs do
7688: LD_ADDR_VAR 0 1
7692: PUSH
7693: LD_EXP 21
7697: PUSH
7698: FOR_IN
7699: IFFALSE 7803
// begin if ExplosionTarget ( i ) then
7701: LD_VAR 0 1
7705: PPUSH
7706: CALL 7170 0 1
7710: IFFALSE 7731
// ComMoveUnit ( i , ExplosionTarget ( i ) ) ;
7712: LD_VAR 0 1
7716: PPUSH
7717: LD_VAR 0 1
7721: PPUSH
7722: CALL 7170 0 1
7726: PPUSH
7727: CALL_OW 112
// if FilterAllUnits ( [ [ f_enemy , GetSide ( i ) ] , [ f_not , [ f_type , unit_building ] ] , [ f_dist , i , 5 ] ] ) then
7731: LD_INT 81
7733: PUSH
7734: LD_VAR 0 1
7738: PPUSH
7739: CALL_OW 255
7743: PUSH
7744: EMPTY
7745: LIST
7746: LIST
7747: PUSH
7748: LD_INT 3
7750: PUSH
7751: LD_INT 21
7753: PUSH
7754: LD_INT 3
7756: PUSH
7757: EMPTY
7758: LIST
7759: LIST
7760: PUSH
7761: EMPTY
7762: LIST
7763: LIST
7764: PUSH
7765: LD_INT 91
7767: PUSH
7768: LD_VAR 0 1
7772: PUSH
7773: LD_INT 5
7775: PUSH
7776: EMPTY
7777: LIST
7778: LIST
7779: LIST
7780: PUSH
7781: EMPTY
7782: LIST
7783: LIST
7784: LIST
7785: PPUSH
7786: CALL_OW 69
7790: IFFALSE 7801
// ComSelfDestruction ( i ) ;
7792: LD_VAR 0 1
7796: PPUSH
7797: CALL_OW 577
// end ;
7801: GO 7698
7803: POP
7804: POP
// if AHeavyVehs >= [ 3 , 3 , 5 ] [ difficulty ] then
7805: LD_EXP 22
7809: PUSH
7810: LD_INT 3
7812: PUSH
7813: LD_INT 3
7815: PUSH
7816: LD_INT 5
7818: PUSH
7819: EMPTY
7820: LIST
7821: LIST
7822: LIST
7823: PUSH
7824: LD_OWVAR 67
7828: ARRAY
7829: GREATEREQUAL
7830: IFFALSE 7993
// for i in AHeavyVehs do
7832: LD_ADDR_VAR 0 1
7836: PUSH
7837: LD_EXP 22
7841: PUSH
7842: FOR_IN
7843: IFFALSE 7991
// begin ComAttackUnit ( i , NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_ok ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_turret ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) , i ) ) ;
7845: LD_VAR 0 1
7849: PPUSH
7850: LD_INT 22
7852: PUSH
7853: LD_INT 1
7855: PUSH
7856: EMPTY
7857: LIST
7858: LIST
7859: PUSH
7860: LD_INT 50
7862: PUSH
7863: EMPTY
7864: LIST
7865: PUSH
7866: LD_INT 2
7868: PUSH
7869: LD_INT 21
7871: PUSH
7872: LD_INT 1
7874: PUSH
7875: EMPTY
7876: LIST
7877: LIST
7878: PUSH
7879: LD_INT 21
7881: PUSH
7882: LD_INT 2
7884: PUSH
7885: EMPTY
7886: LIST
7887: LIST
7888: PUSH
7889: LD_INT 30
7891: PUSH
7892: LD_INT 31
7894: PUSH
7895: EMPTY
7896: LIST
7897: LIST
7898: PUSH
7899: LD_INT 30
7901: PUSH
7902: LD_INT 32
7904: PUSH
7905: EMPTY
7906: LIST
7907: LIST
7908: PUSH
7909: LD_INT 30
7911: PUSH
7912: LD_INT 33
7914: PUSH
7915: EMPTY
7916: LIST
7917: LIST
7918: PUSH
7919: LD_INT 30
7921: PUSH
7922: LD_INT 4
7924: PUSH
7925: EMPTY
7926: LIST
7927: LIST
7928: PUSH
7929: LD_INT 30
7931: PUSH
7932: LD_INT 5
7934: PUSH
7935: EMPTY
7936: LIST
7937: LIST
7938: PUSH
7939: EMPTY
7940: LIST
7941: LIST
7942: LIST
7943: LIST
7944: LIST
7945: LIST
7946: LIST
7947: LIST
7948: PUSH
7949: EMPTY
7950: LIST
7951: LIST
7952: LIST
7953: PPUSH
7954: CALL_OW 69
7958: PPUSH
7959: LD_VAR 0 1
7963: PPUSH
7964: CALL_OW 74
7968: PPUSH
7969: CALL_OW 115
// AHeavyVehs = AHeavyVehs diff i ;
7973: LD_ADDR_EXP 22
7977: PUSH
7978: LD_EXP 22
7982: PUSH
7983: LD_VAR 0 1
7987: DIFF
7988: ST_TO_ADDR
// end ;
7989: GO 7842
7991: POP
7992: POP
// end ;
7993: PPOPN 1
7995: END
// every 3 3$0 trigger FilterUnitsInArea ( NorthernSector , [ [ f_side , 1 ] , [ f_ok ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_turret ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) = 0 and tick > 10 10$0 do var i ;
7996: LD_INT 10
7998: PPUSH
7999: LD_INT 22
8001: PUSH
8002: LD_INT 1
8004: PUSH
8005: EMPTY
8006: LIST
8007: LIST
8008: PUSH
8009: LD_INT 50
8011: PUSH
8012: EMPTY
8013: LIST
8014: PUSH
8015: LD_INT 2
8017: PUSH
8018: LD_INT 21
8020: PUSH
8021: LD_INT 1
8023: PUSH
8024: EMPTY
8025: LIST
8026: LIST
8027: PUSH
8028: LD_INT 21
8030: PUSH
8031: LD_INT 2
8033: PUSH
8034: EMPTY
8035: LIST
8036: LIST
8037: PUSH
8038: LD_INT 30
8040: PUSH
8041: LD_INT 31
8043: PUSH
8044: EMPTY
8045: LIST
8046: LIST
8047: PUSH
8048: LD_INT 30
8050: PUSH
8051: LD_INT 32
8053: PUSH
8054: EMPTY
8055: LIST
8056: LIST
8057: PUSH
8058: LD_INT 30
8060: PUSH
8061: LD_INT 33
8063: PUSH
8064: EMPTY
8065: LIST
8066: LIST
8067: PUSH
8068: LD_INT 30
8070: PUSH
8071: LD_INT 4
8073: PUSH
8074: EMPTY
8075: LIST
8076: LIST
8077: PUSH
8078: LD_INT 30
8080: PUSH
8081: LD_INT 5
8083: PUSH
8084: EMPTY
8085: LIST
8086: LIST
8087: PUSH
8088: EMPTY
8089: LIST
8090: LIST
8091: LIST
8092: LIST
8093: LIST
8094: LIST
8095: LIST
8096: LIST
8097: PUSH
8098: EMPTY
8099: LIST
8100: LIST
8101: LIST
8102: PPUSH
8103: CALL_OW 70
8107: PUSH
8108: LD_INT 0
8110: EQUAL
8111: PUSH
8112: LD_OWVAR 1
8116: PUSH
8117: LD_INT 21000
8119: GREATER
8120: AND
8121: IFFALSE 8287
8123: GO 8125
8125: DISABLE
8126: LD_INT 0
8128: PPUSH
// begin if ArabiansOver then
8129: LD_EXP 10
8133: IFFALSE 8137
// exit ;
8135: GO 8287
// uc_side = 2 ;
8137: LD_ADDR_OWVAR 20
8141: PUSH
8142: LD_INT 2
8144: ST_TO_ADDR
// uc_nation = 2 ;
8145: LD_ADDR_OWVAR 21
8149: PUSH
8150: LD_INT 2
8152: ST_TO_ADDR
// InitHc ;
8153: CALL_OW 19
// for i = 1 to 2 do
8157: LD_ADDR_VAR 0 1
8161: PUSH
8162: DOUBLE
8163: LD_INT 1
8165: DEC
8166: ST_TO_ADDR
8167: LD_INT 2
8169: PUSH
8170: FOR_TO
8171: IFFALSE 8232
// begin hc_attr = [ Rand ( 11 , 13 ) , Rand ( 11 , 13 ) ] ;
8173: LD_ADDR_OWVAR 29
8177: PUSH
8178: LD_INT 11
8180: PPUSH
8181: LD_INT 13
8183: PPUSH
8184: CALL_OW 12
8188: PUSH
8189: LD_INT 11
8191: PPUSH
8192: LD_INT 13
8194: PPUSH
8195: CALL_OW 12
8199: PUSH
8200: EMPTY
8201: LIST
8202: LIST
8203: ST_TO_ADDR
// PrepareScientist ( 0 , 6 ) ;
8204: LD_INT 0
8206: PPUSH
8207: LD_INT 6
8209: PPUSH
8210: CALL_OW 384
// ASiberite = ASiberite ^ CreateHuman ;
8214: LD_ADDR_EXP 19
8218: PUSH
8219: LD_EXP 19
8223: PUSH
8224: CALL_OW 44
8228: ADD
8229: ST_TO_ADDR
// end ;
8230: GO 8170
8232: POP
8233: POP
// for i in ASiberite do
8234: LD_ADDR_VAR 0 1
8238: PUSH
8239: LD_EXP 19
8243: PUSH
8244: FOR_IN
8245: IFFALSE 8270
// PlaceUnitXYR ( i , 49 , 1 , 2 , false ) ;
8247: LD_VAR 0 1
8251: PPUSH
8252: LD_INT 49
8254: PPUSH
8255: LD_INT 1
8257: PPUSH
8258: LD_INT 2
8260: PPUSH
8261: LD_INT 0
8263: PPUSH
8264: CALL_OW 50
8268: GO 8244
8270: POP
8271: POP
// ComContaminate ( ASiberite , 111 , 9 ) ;
8272: LD_EXP 19
8276: PPUSH
8277: LD_INT 111
8279: PPUSH
8280: LD_INT 9
8282: PPUSH
8283: CALL_OW 158
// end ;
8287: PPOPN 1
8289: END
// export ApemenOfGoom , ApemenOfGoomSent ; export function PrepareApemenOfGoom ; var waiting_time , ape_attack ; var i ; begin
8290: LD_INT 0
8292: PPUSH
8293: PPUSH
8294: PPUSH
8295: PPUSH
// waiting_time = [ 2 2$0 , 1 1$0 , 0 0$30 ] [ difficulty ] ;
8296: LD_ADDR_VAR 0 2
8300: PUSH
8301: LD_INT 4200
8303: PUSH
8304: LD_INT 2100
8306: PUSH
8307: LD_INT 1050
8309: PUSH
8310: EMPTY
8311: LIST
8312: LIST
8313: LIST
8314: PUSH
8315: LD_OWVAR 67
8319: ARRAY
8320: ST_TO_ADDR
// Wait ( waiting_time ) ;
8321: LD_VAR 0 2
8325: PPUSH
8326: CALL_OW 67
// ApemenOfGoom = [ ] ;
8330: LD_ADDR_EXP 32
8334: PUSH
8335: EMPTY
8336: ST_TO_ADDR
// uc_side = 2 ;
8337: LD_ADDR_OWVAR 20
8341: PUSH
8342: LD_INT 2
8344: ST_TO_ADDR
// uc_nation = 2 ;
8345: LD_ADDR_OWVAR 21
8349: PUSH
8350: LD_INT 2
8352: ST_TO_ADDR
// InitHc ;
8353: CALL_OW 19
// for i = 1 to [ 3 , 5 , 6 ] [ difficulty ] do
8357: LD_ADDR_VAR 0 4
8361: PUSH
8362: DOUBLE
8363: LD_INT 1
8365: DEC
8366: ST_TO_ADDR
8367: LD_INT 3
8369: PUSH
8370: LD_INT 5
8372: PUSH
8373: LD_INT 6
8375: PUSH
8376: EMPTY
8377: LIST
8378: LIST
8379: LIST
8380: PUSH
8381: LD_OWVAR 67
8385: ARRAY
8386: PUSH
8387: FOR_TO
8388: IFFALSE 8614
// begin case difficulty of 1 :
8390: LD_OWVAR 67
8394: PUSH
8395: LD_INT 1
8397: DOUBLE
8398: EQUAL
8399: IFTRUE 8403
8401: GO 8460
8403: POP
// begin vc_weapon = [ ar_gun , ar_flame_thrower ] [ Rand ( 1 , 2 ) ] ;
8404: LD_ADDR_OWVAR 40
8408: PUSH
8409: LD_INT 27
8411: PUSH
8412: LD_INT 26
8414: PUSH
8415: EMPTY
8416: LIST
8417: LIST
8418: PUSH
8419: LD_INT 1
8421: PPUSH
8422: LD_INT 2
8424: PPUSH
8425: CALL_OW 12
8429: ARRAY
8430: ST_TO_ADDR
// vc_chassis = [ ar_medium_trike , ar_half_tracked ] [ Rand ( 1 , 2 ) ] ;
8431: LD_ADDR_OWVAR 37
8435: PUSH
8436: LD_INT 13
8438: PUSH
8439: LD_INT 14
8441: PUSH
8442: EMPTY
8443: LIST
8444: LIST
8445: PUSH
8446: LD_INT 1
8448: PPUSH
8449: LD_INT 2
8451: PPUSH
8452: CALL_OW 12
8456: ARRAY
8457: ST_TO_ADDR
// end ; 2 :
8458: GO 8557
8460: LD_INT 2
8462: DOUBLE
8463: EQUAL
8464: IFTRUE 8468
8466: GO 8510
8468: POP
// begin vc_weapon = [ ar_gun , ar_flame_thrower , ar_rocket_launcher ] [ Rand ( 1 , 3 ) ] ;
8469: LD_ADDR_OWVAR 40
8473: PUSH
8474: LD_INT 27
8476: PUSH
8477: LD_INT 26
8479: PUSH
8480: LD_INT 28
8482: PUSH
8483: EMPTY
8484: LIST
8485: LIST
8486: LIST
8487: PUSH
8488: LD_INT 1
8490: PPUSH
8491: LD_INT 3
8493: PPUSH
8494: CALL_OW 12
8498: ARRAY
8499: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
8500: LD_ADDR_OWVAR 37
8504: PUSH
8505: LD_INT 14
8507: ST_TO_ADDR
// end ; 3 :
8508: GO 8557
8510: LD_INT 3
8512: DOUBLE
8513: EQUAL
8514: IFTRUE 8518
8516: GO 8556
8518: POP
// begin vc_weapon = [ ar_flame_thrower , ar_rocket_launcher ] [ Rand ( 1 , 2 ) ] ;
8519: LD_ADDR_OWVAR 40
8523: PUSH
8524: LD_INT 26
8526: PUSH
8527: LD_INT 28
8529: PUSH
8530: EMPTY
8531: LIST
8532: LIST
8533: PUSH
8534: LD_INT 1
8536: PPUSH
8537: LD_INT 2
8539: PPUSH
8540: CALL_OW 12
8544: ARRAY
8545: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
8546: LD_ADDR_OWVAR 37
8550: PUSH
8551: LD_INT 14
8553: ST_TO_ADDR
// end ; end ;
8554: GO 8557
8556: POP
// vc_engine = [ engine_siberite , engine_combustion , engine_solar ] [ Rand ( 1 , 3 ) ] ;
8557: LD_ADDR_OWVAR 39
8561: PUSH
8562: LD_INT 3
8564: PUSH
8565: LD_INT 1
8567: PUSH
8568: LD_INT 2
8570: PUSH
8571: EMPTY
8572: LIST
8573: LIST
8574: LIST
8575: PUSH
8576: LD_INT 1
8578: PPUSH
8579: LD_INT 3
8581: PPUSH
8582: CALL_OW 12
8586: ARRAY
8587: ST_TO_ADDR
// vc_control = control_apeman ;
8588: LD_ADDR_OWVAR 38
8592: PUSH
8593: LD_INT 5
8595: ST_TO_ADDR
// ApemenOfGoom = ApemenOfGoom ^ CreateVehicle ;
8596: LD_ADDR_EXP 32
8600: PUSH
8601: LD_EXP 32
8605: PUSH
8606: CALL_OW 45
8610: ADD
8611: ST_TO_ADDR
// end ;
8612: GO 8387
8614: POP
8615: POP
// for i = 1 to [ 1 , 2 , 2 ] [ difficulty ] do
8616: LD_ADDR_VAR 0 4
8620: PUSH
8621: DOUBLE
8622: LD_INT 1
8624: DEC
8625: ST_TO_ADDR
8626: LD_INT 1
8628: PUSH
8629: LD_INT 2
8631: PUSH
8632: LD_INT 2
8634: PUSH
8635: EMPTY
8636: LIST
8637: LIST
8638: LIST
8639: PUSH
8640: LD_OWVAR 67
8644: ARRAY
8645: PUSH
8646: FOR_TO
8647: IFFALSE 8713
// begin if difficulty = 3 then
8649: LD_OWVAR 67
8653: PUSH
8654: LD_INT 3
8656: EQUAL
8657: IFFALSE 8674
// hc_attr = [ 13 , 12 ] ;
8659: LD_ADDR_OWVAR 29
8663: PUSH
8664: LD_INT 13
8666: PUSH
8667: LD_INT 12
8669: PUSH
8670: EMPTY
8671: LIST
8672: LIST
8673: ST_TO_ADDR
// PrepareHuman ( false , class_apeman_kamikaze , Rand ( 2 , 4 ) ) ;
8674: LD_INT 0
8676: PPUSH
8677: LD_INT 17
8679: PPUSH
8680: LD_INT 2
8682: PPUSH
8683: LD_INT 4
8685: PPUSH
8686: CALL_OW 12
8690: PPUSH
8691: CALL_OW 380
// ApemenOfGoom = ApemenOfGoom ^ CreateHuman ;
8695: LD_ADDR_EXP 32
8699: PUSH
8700: LD_EXP 32
8704: PUSH
8705: CALL_OW 44
8709: ADD
8710: ST_TO_ADDR
// end ;
8711: GO 8646
8713: POP
8714: POP
// for i = 1 to [ 2 , 3 , 3 ] [ difficulty ] do
8715: LD_ADDR_VAR 0 4
8719: PUSH
8720: DOUBLE
8721: LD_INT 1
8723: DEC
8724: ST_TO_ADDR
8725: LD_INT 2
8727: PUSH
8728: LD_INT 3
8730: PUSH
8731: LD_INT 3
8733: PUSH
8734: EMPTY
8735: LIST
8736: LIST
8737: LIST
8738: PUSH
8739: LD_OWVAR 67
8743: ARRAY
8744: PUSH
8745: FOR_TO
8746: IFFALSE 8796
// begin PrepareHuman ( false , class_mortar , [ 5 , 6 , 6 ] [ difficulty ] ) ;
8748: LD_INT 0
8750: PPUSH
8751: LD_INT 8
8753: PPUSH
8754: LD_INT 5
8756: PUSH
8757: LD_INT 6
8759: PUSH
8760: LD_INT 6
8762: PUSH
8763: EMPTY
8764: LIST
8765: LIST
8766: LIST
8767: PUSH
8768: LD_OWVAR 67
8772: ARRAY
8773: PPUSH
8774: CALL_OW 380
// ApemenOfGoom = ApemenOfGoom ^ CreateHuman ;
8778: LD_ADDR_EXP 32
8782: PUSH
8783: LD_EXP 32
8787: PUSH
8788: CALL_OW 44
8792: ADD
8793: ST_TO_ADDR
// end ;
8794: GO 8745
8796: POP
8797: POP
// for i in ApemenOfGoom do
8798: LD_ADDR_VAR 0 4
8802: PUSH
8803: LD_EXP 32
8807: PUSH
8808: FOR_IN
8809: IFFALSE 9094
// if GetType ( i ) = unit_vehicle then
8811: LD_VAR 0 4
8815: PPUSH
8816: CALL_OW 247
8820: PUSH
8821: LD_INT 2
8823: EQUAL
8824: IFFALSE 8936
// begin PlaceUnitArea ( i , ApeEnter , false ) ;
8826: LD_VAR 0 4
8830: PPUSH
8831: LD_INT 16
8833: PPUSH
8834: LD_INT 0
8836: PPUSH
8837: CALL_OW 49
// if ExistMc ( ape_attack ) then
8841: LD_VAR 0 3
8845: PPUSH
8846: CALL_OW 386
8850: IFFALSE 8868
// AddMcUnits ( ape_attack , i ) else
8852: LD_VAR 0 3
8856: PPUSH
8857: LD_VAR 0 4
8861: PPUSH
8862: CALL_OW 390
8866: GO 8927
// ape_attack = McMove ( 1 , i , [ [ 96 , 26 ] , [ 119 , 25 ] , [ 132 , 12 ] ] , [ mc_move_agressive ] ) ;
8868: LD_ADDR_VAR 0 3
8872: PUSH
8873: LD_INT 1
8875: PPUSH
8876: LD_VAR 0 4
8880: PPUSH
8881: LD_INT 96
8883: PUSH
8884: LD_INT 26
8886: PUSH
8887: EMPTY
8888: LIST
8889: LIST
8890: PUSH
8891: LD_INT 119
8893: PUSH
8894: LD_INT 25
8896: PUSH
8897: EMPTY
8898: LIST
8899: LIST
8900: PUSH
8901: LD_INT 132
8903: PUSH
8904: LD_INT 12
8906: PUSH
8907: EMPTY
8908: LIST
8909: LIST
8910: PUSH
8911: EMPTY
8912: LIST
8913: LIST
8914: LIST
8915: PPUSH
8916: LD_INT 6
8918: PUSH
8919: EMPTY
8920: LIST
8921: PPUSH
8922: CALL_OW 398
8926: ST_TO_ADDR
// Wait ( 0 0$1.5 ) ;
8927: LD_INT 52
8929: PPUSH
8930: CALL_OW 67
// end else
8934: GO 9092
// begin PlaceUnitXY ( i , 78 , 3 , false ) ;
8936: LD_VAR 0 4
8940: PPUSH
8941: LD_INT 78
8943: PPUSH
8944: LD_INT 3
8946: PPUSH
8947: LD_INT 0
8949: PPUSH
8950: CALL_OW 48
// AddComAttackUnit ( i , NearestUnitToUnit ( FilterUnitsInArea ( NorthernSector , [ [ f_side , 1 ] , [ f_ok ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_turret ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) , i ) ) ;
8954: LD_VAR 0 4
8958: PPUSH
8959: LD_INT 10
8961: PPUSH
8962: LD_INT 22
8964: PUSH
8965: LD_INT 1
8967: PUSH
8968: EMPTY
8969: LIST
8970: LIST
8971: PUSH
8972: LD_INT 50
8974: PUSH
8975: EMPTY
8976: LIST
8977: PUSH
8978: LD_INT 2
8980: PUSH
8981: LD_INT 21
8983: PUSH
8984: LD_INT 1
8986: PUSH
8987: EMPTY
8988: LIST
8989: LIST
8990: PUSH
8991: LD_INT 21
8993: PUSH
8994: LD_INT 2
8996: PUSH
8997: EMPTY
8998: LIST
8999: LIST
9000: PUSH
9001: LD_INT 30
9003: PUSH
9004: LD_INT 31
9006: PUSH
9007: EMPTY
9008: LIST
9009: LIST
9010: PUSH
9011: LD_INT 30
9013: PUSH
9014: LD_INT 32
9016: PUSH
9017: EMPTY
9018: LIST
9019: LIST
9020: PUSH
9021: LD_INT 30
9023: PUSH
9024: LD_INT 33
9026: PUSH
9027: EMPTY
9028: LIST
9029: LIST
9030: PUSH
9031: LD_INT 30
9033: PUSH
9034: LD_INT 4
9036: PUSH
9037: EMPTY
9038: LIST
9039: LIST
9040: PUSH
9041: LD_INT 30
9043: PUSH
9044: LD_INT 5
9046: PUSH
9047: EMPTY
9048: LIST
9049: LIST
9050: PUSH
9051: EMPTY
9052: LIST
9053: LIST
9054: LIST
9055: LIST
9056: LIST
9057: LIST
9058: LIST
9059: LIST
9060: PUSH
9061: EMPTY
9062: LIST
9063: LIST
9064: LIST
9065: PPUSH
9066: CALL_OW 70
9070: PPUSH
9071: LD_VAR 0 4
9075: PPUSH
9076: CALL_OW 74
9080: PPUSH
9081: CALL_OW 175
// Wait ( 0 0$3 ) ;
9085: LD_INT 105
9087: PPUSH
9088: CALL_OW 67
// end ;
9092: GO 8808
9094: POP
9095: POP
// ApemenOfGoomSent = true ;
9096: LD_ADDR_EXP 33
9100: PUSH
9101: LD_INT 1
9103: ST_TO_ADDR
// end ;
9104: LD_VAR 0 1
9108: RET
// every 0 0$1 trigger ApemenOfGoomSent = true and UnitFilter ( ApemenOfGoom , [ f_ok ] ) = 0 do
9109: LD_EXP 33
9113: PUSH
9114: LD_INT 1
9116: EQUAL
9117: PUSH
9118: LD_EXP 32
9122: PPUSH
9123: LD_INT 50
9125: PUSH
9126: EMPTY
9127: LIST
9128: PPUSH
9129: CALL_OW 72
9133: PUSH
9134: LD_INT 0
9136: EQUAL
9137: AND
9138: IFFALSE 9175
9140: GO 9142
9142: DISABLE
// begin DialogueOn ;
9143: CALL_OW 6
// SayRadio ( Gom , dq-l-1 ) ;
9147: LD_EXP 17
9151: PPUSH
9152: LD_STRING dq-l-1
9154: PPUSH
9155: CALL_OW 94
// Say ( Alex , dq-a-2 ) ;
9159: LD_EXP 1
9163: PPUSH
9164: LD_STRING dq-a-2
9166: PPUSH
9167: CALL_OW 88
// DialogueOff ;
9171: CALL_OW 7
// end ; end_of_file
9175: END
// export Kuronski ; export KEngineers , KVehs , KBuildings , KCargo ; export KTargets , KEnemies ; export KAttackStrategy , KDefenceStrategy , KRepairStrategy , KBaseStrategy ; export function PrepareKuronski ; var i , h ; begin
9176: LD_INT 0
9178: PPUSH
9179: PPUSH
9180: PPUSH
// uc_side = 7 ;
9181: LD_ADDR_OWVAR 20
9185: PUSH
9186: LD_INT 7
9188: ST_TO_ADDR
// uc_nation = 1 ;
9189: LD_ADDR_OWVAR 21
9193: PUSH
9194: LD_INT 1
9196: ST_TO_ADDR
// PrepareBase ( 7 , KuronskiBaseArea , [ Rand ( 3 , 5 ) , Rand ( 4 , 6 ) , Rand ( 5 , 8 ) ] [ difficulty ] , 4 , 0 , [ 2 , 3 , 3 ] [ difficulty ] , 1 ) ;
9197: LD_INT 7
9199: PPUSH
9200: LD_INT 5
9202: PPUSH
9203: LD_INT 3
9205: PPUSH
9206: LD_INT 5
9208: PPUSH
9209: CALL_OW 12
9213: PUSH
9214: LD_INT 4
9216: PPUSH
9217: LD_INT 6
9219: PPUSH
9220: CALL_OW 12
9224: PUSH
9225: LD_INT 5
9227: PPUSH
9228: LD_INT 8
9230: PPUSH
9231: CALL_OW 12
9235: PUSH
9236: EMPTY
9237: LIST
9238: LIST
9239: LIST
9240: PUSH
9241: LD_OWVAR 67
9245: ARRAY
9246: PPUSH
9247: LD_INT 4
9249: PPUSH
9250: LD_INT 0
9252: PPUSH
9253: LD_INT 2
9255: PUSH
9256: LD_INT 3
9258: PUSH
9259: LD_INT 3
9261: PUSH
9262: EMPTY
9263: LIST
9264: LIST
9265: LIST
9266: PUSH
9267: LD_OWVAR 67
9271: ARRAY
9272: PPUSH
9273: LD_INT 1
9275: PPUSH
9276: CALL 11573 0 7
// for i in FilterAllUnits ( [ f_side , 7 ] ) do
9280: LD_ADDR_VAR 0 2
9284: PUSH
9285: LD_INT 22
9287: PUSH
9288: LD_INT 7
9290: PUSH
9291: EMPTY
9292: LIST
9293: LIST
9294: PPUSH
9295: CALL_OW 69
9299: PUSH
9300: FOR_IN
9301: IFFALSE 9352
// if GetBType ( IsInUnit ( i ) ) = b_breastwork or ( IsInUnit ( i ) ) = b_barracks then
9303: LD_VAR 0 2
9307: PPUSH
9308: CALL_OW 310
9312: PPUSH
9313: CALL_OW 266
9317: PUSH
9318: LD_INT 31
9320: EQUAL
9321: PUSH
9322: LD_VAR 0 2
9326: PPUSH
9327: CALL_OW 310
9331: PUSH
9332: LD_INT 5
9334: EQUAL
9335: OR
9336: IFFALSE 9350
// SetClass ( i , class_sniper ) ;
9338: LD_VAR 0 2
9342: PPUSH
9343: LD_INT 5
9345: PPUSH
9346: CALL_OW 336
9350: GO 9300
9352: POP
9353: POP
// InitHc ;
9354: CALL_OW 19
// for i = 1 to 2 do
9358: LD_ADDR_VAR 0 2
9362: PUSH
9363: DOUBLE
9364: LD_INT 1
9366: DEC
9367: ST_TO_ADDR
9368: LD_INT 2
9370: PUSH
9371: FOR_TO
9372: IFFALSE 9415
// begin PrepareMechanic ( false , [ 4 , 6 , 7 ] [ difficulty ] ) ;
9374: LD_INT 0
9376: PPUSH
9377: LD_INT 4
9379: PUSH
9380: LD_INT 6
9382: PUSH
9383: LD_INT 7
9385: PUSH
9386: EMPTY
9387: LIST
9388: LIST
9389: LIST
9390: PUSH
9391: LD_OWVAR 67
9395: ARRAY
9396: PPUSH
9397: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , kt ) ;
9401: CALL_OW 44
9405: PPUSH
9406: LD_INT 183
9408: PPUSH
9409: CALL_OW 52
// end ;
9413: GO 9371
9415: POP
9416: POP
// for i = 1 to [ 2 , 3 , 4 ] [ difficulty ] do
9417: LD_ADDR_VAR 0 2
9421: PUSH
9422: DOUBLE
9423: LD_INT 1
9425: DEC
9426: ST_TO_ADDR
9427: LD_INT 2
9429: PUSH
9430: LD_INT 3
9432: PUSH
9433: LD_INT 4
9435: PUSH
9436: EMPTY
9437: LIST
9438: LIST
9439: LIST
9440: PUSH
9441: LD_OWVAR 67
9445: ARRAY
9446: PUSH
9447: FOR_TO
9448: IFFALSE 9486
// begin PrepareHuman ( false , class_apeman_engineer , 2 ) ;
9450: LD_INT 0
9452: PPUSH
9453: LD_INT 16
9455: PPUSH
9456: LD_INT 2
9458: PPUSH
9459: CALL_OW 380
// PlaceUnitXYR ( CreateHuman , 66 , 95 , 3 , false ) ;
9463: CALL_OW 44
9467: PPUSH
9468: LD_INT 66
9470: PPUSH
9471: LD_INT 95
9473: PPUSH
9474: LD_INT 3
9476: PPUSH
9477: LD_INT 0
9479: PPUSH
9480: CALL_OW 50
// end ;
9484: GO 9447
9486: POP
9487: POP
// for i in [ [ 104 , 141 ] , [ 88 , 103 ] ] do
9488: LD_ADDR_VAR 0 2
9492: PUSH
9493: LD_INT 104
9495: PUSH
9496: LD_INT 141
9498: PUSH
9499: EMPTY
9500: LIST
9501: LIST
9502: PUSH
9503: LD_INT 88
9505: PUSH
9506: LD_INT 103
9508: PUSH
9509: EMPTY
9510: LIST
9511: LIST
9512: PUSH
9513: EMPTY
9514: LIST
9515: LIST
9516: PUSH
9517: FOR_IN
9518: IFFALSE 9601
// begin PrepareHuman ( false , class_sniper , [ 4 , 5 , 6 ] [ difficulty ] ) ;
9520: LD_INT 0
9522: PPUSH
9523: LD_INT 5
9525: PPUSH
9526: LD_INT 4
9528: PUSH
9529: LD_INT 5
9531: PUSH
9532: LD_INT 6
9534: PUSH
9535: EMPTY
9536: LIST
9537: LIST
9538: LIST
9539: PUSH
9540: LD_OWVAR 67
9544: ARRAY
9545: PPUSH
9546: CALL_OW 380
// h = CreateHuman ;
9550: LD_ADDR_VAR 0 3
9554: PUSH
9555: CALL_OW 44
9559: ST_TO_ADDR
// PlaceUnitXY ( h , i [ 1 ] , i [ 2 ] , false ) ;
9560: LD_VAR 0 3
9564: PPUSH
9565: LD_VAR 0 2
9569: PUSH
9570: LD_INT 1
9572: ARRAY
9573: PPUSH
9574: LD_VAR 0 2
9578: PUSH
9579: LD_INT 2
9581: ARRAY
9582: PPUSH
9583: LD_INT 0
9585: PPUSH
9586: CALL_OW 48
// ComHold ( h ) ;
9590: LD_VAR 0 3
9594: PPUSH
9595: CALL_OW 140
// end ;
9599: GO 9517
9601: POP
9602: POP
// Kuronski = NewCharacter ( Kuronski ) ;
9603: LD_ADDR_EXP 34
9607: PUSH
9608: LD_STRING Kuronski
9610: PPUSH
9611: CALL_OW 25
9615: ST_TO_ADDR
// SetClass ( Kuronski , class_sniper ) ;
9616: LD_EXP 34
9620: PPUSH
9621: LD_INT 5
9623: PPUSH
9624: CALL_OW 336
// PlaceHumanInUnit ( Kuronski , ka2 ) ;
9628: LD_EXP 34
9632: PPUSH
9633: LD_INT 102
9635: PPUSH
9636: CALL_OW 52
// end ;
9640: LD_VAR 0 1
9644: RET
// every 0 0$1 do var i ;
9645: GO 9647
9647: DISABLE
9648: LD_INT 0
9650: PPUSH
// begin enable ;
9651: ENABLE
// if KuronskiOver then
9652: LD_EXP 11
9656: IFFALSE 9661
// begin disable ;
9658: DISABLE
// exit ;
9659: GO 10089
// end ; KEngineers = FilterUnitsInArea ( KuronskiBaseArea , [ [ f_side , 7 ] , [ f_or , [ f_class , class_engineer ] , [ f_class , class_apeman_engineer ] ] ] ) ^ FilterAllUnits ( [ [ f_side , 7 ] , [ f_weapon , us_crane ] ] ) ^ UnitFilter ( UnitsInside ( kd ) , [ f_side , 7 ] ) ;
9661: LD_ADDR_EXP 35
9665: PUSH
9666: LD_INT 5
9668: PPUSH
9669: LD_INT 22
9671: PUSH
9672: LD_INT 7
9674: PUSH
9675: EMPTY
9676: LIST
9677: LIST
9678: PUSH
9679: LD_INT 2
9681: PUSH
9682: LD_INT 25
9684: PUSH
9685: LD_INT 2
9687: PUSH
9688: EMPTY
9689: LIST
9690: LIST
9691: PUSH
9692: LD_INT 25
9694: PUSH
9695: LD_INT 16
9697: PUSH
9698: EMPTY
9699: LIST
9700: LIST
9701: PUSH
9702: EMPTY
9703: LIST
9704: LIST
9705: LIST
9706: PUSH
9707: EMPTY
9708: LIST
9709: LIST
9710: PPUSH
9711: CALL_OW 70
9715: PUSH
9716: LD_INT 22
9718: PUSH
9719: LD_INT 7
9721: PUSH
9722: EMPTY
9723: LIST
9724: LIST
9725: PUSH
9726: LD_INT 34
9728: PUSH
9729: LD_INT 13
9731: PUSH
9732: EMPTY
9733: LIST
9734: LIST
9735: PUSH
9736: EMPTY
9737: LIST
9738: LIST
9739: PPUSH
9740: CALL_OW 69
9744: ADD
9745: PUSH
9746: LD_INT 44
9748: PPUSH
9749: CALL_OW 313
9753: PPUSH
9754: LD_INT 22
9756: PUSH
9757: LD_INT 7
9759: PUSH
9760: EMPTY
9761: LIST
9762: LIST
9763: PPUSH
9764: CALL_OW 72
9768: ADD
9769: ST_TO_ADDR
// KBuildings = FilterUnitsInArea ( KuronskiBaseArea , [ [ f_side , 7 ] , [ f_type , unit_building ] ] ) ;
9770: LD_ADDR_EXP 37
9774: PUSH
9775: LD_INT 5
9777: PPUSH
9778: LD_INT 22
9780: PUSH
9781: LD_INT 7
9783: PUSH
9784: EMPTY
9785: LIST
9786: LIST
9787: PUSH
9788: LD_INT 21
9790: PUSH
9791: LD_INT 3
9793: PUSH
9794: EMPTY
9795: LIST
9796: LIST
9797: PUSH
9798: EMPTY
9799: LIST
9800: LIST
9801: PPUSH
9802: CALL_OW 70
9806: ST_TO_ADDR
// if not ExistMc ( KBaseStrategy ) then
9807: LD_EXP 44
9811: PPUSH
9812: CALL_OW 386
9816: NOT
9817: IFFALSE 9860
// KBaseStrategy = McBase ( 1 , KEngineers , GetBuildList ( GetBase ( kd ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
9819: LD_ADDR_EXP 44
9823: PUSH
9824: LD_INT 1
9826: PPUSH
9827: LD_EXP 35
9831: PPUSH
9832: LD_INT 44
9834: PPUSH
9835: CALL_OW 274
9839: PPUSH
9840: CALL_OW 417
9844: PPUSH
9845: EMPTY
9846: PPUSH
9847: EMPTY
9848: PPUSH
9849: LD_INT 1
9851: PUSH
9852: EMPTY
9853: LIST
9854: PPUSH
9855: CALL_OW 397
9859: ST_TO_ADDR
// if not ExistMc ( KRepairStrategy ) and not FilterUnitsInArea ( KuronskiDefenceArea , [ [ f_side , 1 ] , [ f_see , 7 ] ] ) then
9860: LD_EXP 43
9864: PPUSH
9865: CALL_OW 386
9869: NOT
9870: PUSH
9871: LD_INT 13
9873: PPUSH
9874: LD_INT 22
9876: PUSH
9877: LD_INT 1
9879: PUSH
9880: EMPTY
9881: LIST
9882: LIST
9883: PUSH
9884: LD_INT 101
9886: PUSH
9887: LD_INT 7
9889: PUSH
9890: EMPTY
9891: LIST
9892: LIST
9893: PUSH
9894: EMPTY
9895: LIST
9896: LIST
9897: PPUSH
9898: CALL_OW 70
9902: NOT
9903: AND
9904: IFFALSE 9942
// KRepairStrategy = McRepair ( 2 , KEngineers , KBuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
9906: LD_ADDR_EXP 43
9910: PUSH
9911: LD_INT 2
9913: PPUSH
9914: LD_EXP 35
9918: PPUSH
9919: LD_EXP 37
9923: PPUSH
9924: LD_INT 6
9926: PUSH
9927: LD_INT 1000
9929: PUSH
9930: EMPTY
9931: LIST
9932: LIST
9933: PUSH
9934: EMPTY
9935: LIST
9936: PPUSH
9937: CALL_OW 414
9941: ST_TO_ADDR
// if FilterUnitsInArea ( KuronskiDefenceArea , [ [ f_side , 1 ] , [ f_see , 7 ] ] ) then
9942: LD_INT 13
9944: PPUSH
9945: LD_INT 22
9947: PUSH
9948: LD_INT 1
9950: PUSH
9951: EMPTY
9952: LIST
9953: LIST
9954: PUSH
9955: LD_INT 101
9957: PUSH
9958: LD_INT 7
9960: PUSH
9961: EMPTY
9962: LIST
9963: LIST
9964: PUSH
9965: EMPTY
9966: LIST
9967: LIST
9968: PPUSH
9969: CALL_OW 70
9973: IFFALSE 10013
// begin KillMc ( KRepairStrategy ) ;
9975: LD_EXP 43
9979: PPUSH
9980: CALL_OW 387
// for i in KEngineers do
9984: LD_ADDR_VAR 0 1
9988: PUSH
9989: LD_EXP 35
9993: PUSH
9994: FOR_IN
9995: IFFALSE 10011
// ComMoveToArea ( i , KuronskiBackArea ) ;
9997: LD_VAR 0 1
10001: PPUSH
10002: LD_INT 14
10004: PPUSH
10005: CALL_OW 113
10009: GO 9994
10011: POP
10012: POP
// end ; KCargo = FilterAllUnits ( [ [ f_side , 7 ] , [ f_weapon , us_cargo_bay ] ] ) ;
10013: LD_ADDR_EXP 38
10017: PUSH
10018: LD_INT 22
10020: PUSH
10021: LD_INT 7
10023: PUSH
10024: EMPTY
10025: LIST
10026: LIST
10027: PUSH
10028: LD_INT 34
10030: PUSH
10031: LD_INT 12
10033: PUSH
10034: EMPTY
10035: LIST
10036: LIST
10037: PUSH
10038: EMPTY
10039: LIST
10040: LIST
10041: PPUSH
10042: CALL_OW 69
10046: ST_TO_ADDR
// if GetListOfCratesInArea ( KuronskiCratesArea ) then
10047: LD_INT 9
10049: PPUSH
10050: CALL_OW 435
10054: IFFALSE 10089
// AddComCollect ( KCargo , GetListOfCratesInArea ( KuronskiCratesArea ) [ 1 ] , GetListOfCratesInArea ( KuronskiCratesArea ) [ 2 ] ) ;
10056: LD_EXP 38
10060: PPUSH
10061: LD_INT 9
10063: PPUSH
10064: CALL_OW 435
10068: PUSH
10069: LD_INT 1
10071: ARRAY
10072: PPUSH
10073: LD_INT 9
10075: PPUSH
10076: CALL_OW 435
10080: PUSH
10081: LD_INT 2
10083: ARRAY
10084: PPUSH
10085: CALL_OW 177
// end ;
10089: PPOPN 1
10091: END
// every 0 0$15 trigger FilterUnitsInArea ( KuronskiBaseArea , [ [ f_side , 7 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var i , u ;
10092: LD_INT 5
10094: PPUSH
10095: LD_INT 22
10097: PUSH
10098: LD_INT 7
10100: PUSH
10101: EMPTY
10102: LIST
10103: LIST
10104: PUSH
10105: LD_INT 58
10107: PUSH
10108: EMPTY
10109: LIST
10110: PUSH
10111: LD_INT 24
10113: PUSH
10114: LD_INT 1000
10116: PUSH
10117: EMPTY
10118: LIST
10119: LIST
10120: PUSH
10121: LD_INT 2
10123: PUSH
10124: LD_INT 30
10126: PUSH
10127: LD_INT 32
10129: PUSH
10130: EMPTY
10131: LIST
10132: LIST
10133: PUSH
10134: LD_INT 30
10136: PUSH
10137: LD_INT 31
10139: PUSH
10140: EMPTY
10141: LIST
10142: LIST
10143: PUSH
10144: EMPTY
10145: LIST
10146: LIST
10147: LIST
10148: PUSH
10149: EMPTY
10150: LIST
10151: LIST
10152: LIST
10153: LIST
10154: PPUSH
10155: CALL_OW 70
10159: IFFALSE 10306
10161: GO 10163
10163: DISABLE
10164: LD_INT 0
10166: PPUSH
10167: PPUSH
// begin enable ;
10168: ENABLE
// for i in FilterUnitsInArea ( KuronskiBaseArea , [ [ f_side , 7 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do
10169: LD_ADDR_VAR 0 1
10173: PUSH
10174: LD_INT 5
10176: PPUSH
10177: LD_INT 22
10179: PUSH
10180: LD_INT 7
10182: PUSH
10183: EMPTY
10184: LIST
10185: LIST
10186: PUSH
10187: LD_INT 58
10189: PUSH
10190: EMPTY
10191: LIST
10192: PUSH
10193: LD_INT 24
10195: PUSH
10196: LD_INT 1000
10198: PUSH
10199: EMPTY
10200: LIST
10201: LIST
10202: PUSH
10203: LD_INT 2
10205: PUSH
10206: LD_INT 30
10208: PUSH
10209: LD_INT 32
10211: PUSH
10212: EMPTY
10213: LIST
10214: LIST
10215: PUSH
10216: LD_INT 30
10218: PUSH
10219: LD_INT 31
10221: PUSH
10222: EMPTY
10223: LIST
10224: LIST
10225: PUSH
10226: EMPTY
10227: LIST
10228: LIST
10229: LIST
10230: PUSH
10231: EMPTY
10232: LIST
10233: LIST
10234: LIST
10235: LIST
10236: PPUSH
10237: CALL_OW 70
10241: PUSH
10242: FOR_IN
10243: IFFALSE 10304
// begin u = UnitsInside ( NearestUnitToUnit ( [ ka1 , ka2 ] , i ) ) [ 1 ] ;
10245: LD_ADDR_VAR 0 2
10249: PUSH
10250: LD_INT 76
10252: PUSH
10253: LD_INT 102
10255: PUSH
10256: EMPTY
10257: LIST
10258: LIST
10259: PPUSH
10260: LD_VAR 0 1
10264: PPUSH
10265: CALL_OW 74
10269: PPUSH
10270: CALL_OW 313
10274: PUSH
10275: LD_INT 1
10277: ARRAY
10278: ST_TO_ADDR
// ComExitBuilding ( u ) ;
10279: LD_VAR 0 2
10283: PPUSH
10284: CALL_OW 122
// ComEnterUnit ( u , i ) ;
10288: LD_VAR 0 2
10292: PPUSH
10293: LD_VAR 0 1
10297: PPUSH
10298: CALL_OW 120
// end ;
10302: GO 10242
10304: POP
10305: POP
// end ;
10306: PPOPN 2
10308: END
// every 0 0$1 trigger tick > 5 5$0 do
10309: LD_OWVAR 1
10313: PUSH
10314: LD_INT 10500
10316: GREATER
10317: IFFALSE 10509
10319: GO 10321
10321: DISABLE
// begin enable ;
10322: ENABLE
// if KuronskiOver then
10323: LD_EXP 11
10327: IFFALSE 10332
// begin disable ;
10329: DISABLE
// exit ;
10330: GO 10509
// end ; if not IsBusy ( kf ) and UnitsInside ( kf ) and KVehs < [ 5 , 6 , 8 ] [ difficulty ] and GetSide ( kf ) = 7 then
10332: LD_INT 45
10334: PPUSH
10335: CALL_OW 315
10339: NOT
10340: PUSH
10341: LD_INT 45
10343: PPUSH
10344: CALL_OW 313
10348: AND
10349: PUSH
10350: LD_EXP 36
10354: PUSH
10355: LD_INT 5
10357: PUSH
10358: LD_INT 6
10360: PUSH
10361: LD_INT 8
10363: PUSH
10364: EMPTY
10365: LIST
10366: LIST
10367: LIST
10368: PUSH
10369: LD_OWVAR 67
10373: ARRAY
10374: LESS
10375: AND
10376: PUSH
10377: LD_INT 45
10379: PPUSH
10380: CALL_OW 255
10384: PUSH
10385: LD_INT 7
10387: EQUAL
10388: AND
10389: IFFALSE 10509
// case tick of 5 5$0 + 1 .. 30 30$0 :
10391: LD_OWVAR 1
10395: PUSH
10396: LD_INT 10500
10398: PUSH
10399: LD_INT 1
10401: PLUS
10402: DOUBLE
10403: GREATEREQUAL
10404: IFFALSE 10412
10406: LD_INT 63000
10408: DOUBLE
10409: LESSEQUAL
10410: IFTRUE 10414
10412: GO 10436
10414: POP
// ComConstruct ( kf , us_medium_tracked , engine_siberite , control_remote , us_double_gun ) ; else
10415: LD_INT 45
10417: PPUSH
10418: LD_INT 3
10420: PPUSH
10421: LD_INT 3
10423: PPUSH
10424: LD_INT 2
10426: PPUSH
10427: LD_INT 5
10429: PPUSH
10430: CALL_OW 125
10434: GO 10509
10436: POP
// case Rand ( 1 , 2 ) of 1 :
10437: LD_INT 1
10439: PPUSH
10440: LD_INT 2
10442: PPUSH
10443: CALL_OW 12
10447: PUSH
10448: LD_INT 1
10450: DOUBLE
10451: EQUAL
10452: IFTRUE 10456
10454: GO 10478
10456: POP
// ComConstruct ( kf , us_medium_tracked , engine_siberite , control_remote , us_double_gun ) ; 2 :
10457: LD_INT 45
10459: PPUSH
10460: LD_INT 3
10462: PPUSH
10463: LD_INT 3
10465: PPUSH
10466: LD_INT 2
10468: PPUSH
10469: LD_INT 5
10471: PPUSH
10472: CALL_OW 125
10476: GO 10509
10478: LD_INT 2
10480: DOUBLE
10481: EQUAL
10482: IFTRUE 10486
10484: GO 10508
10486: POP
// ComConstruct ( kf , us_heavy_tracked , engine_siberite , control_remote , us_double_gun ) ; end ; end ;
10487: LD_INT 45
10489: PPUSH
10490: LD_INT 4
10492: PPUSH
10493: LD_INT 3
10495: PPUSH
10496: LD_INT 2
10498: PPUSH
10499: LD_INT 5
10501: PPUSH
10502: CALL_OW 125
10506: GO 10509
10508: POP
// end ;
10509: END
// every 0 0$1 do
10510: GO 10512
10512: DISABLE
// KEnemies = McRegistry ( 7 , [ [ mc_reg_area_to_protect , KuronskiBaseArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
10513: LD_ADDR_EXP 40
10517: PUSH
10518: LD_INT 7
10520: PPUSH
10521: LD_INT 3
10523: PUSH
10524: LD_INT 5
10526: PUSH
10527: EMPTY
10528: LIST
10529: LIST
10530: PUSH
10531: LD_INT 1
10533: PUSH
10534: LD_INT 35
10536: PUSH
10537: EMPTY
10538: LIST
10539: LIST
10540: PUSH
10541: EMPTY
10542: LIST
10543: LIST
10544: PPUSH
10545: CALL_OW 399
10549: ST_TO_ADDR
10550: END
// every 0 0$1 do
10551: GO 10553
10553: DISABLE
// KTargets = McRegistry ( 7 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , DepositHillArea ] , mc_reg_ignore_fog ] ) ;
10554: LD_ADDR_EXP 39
10558: PUSH
10559: LD_INT 7
10561: PPUSH
10562: LD_INT 1
10564: PUSH
10565: LD_INT 105
10567: PUSH
10568: EMPTY
10569: LIST
10570: LIST
10571: PUSH
10572: LD_INT 2
10574: PUSH
10575: LD_INT 3
10577: PUSH
10578: EMPTY
10579: LIST
10580: LIST
10581: PUSH
10582: LD_INT 7
10584: PUSH
10585: EMPTY
10586: LIST
10587: LIST
10588: LIST
10589: PPUSH
10590: CALL_OW 399
10594: ST_TO_ADDR
10595: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_control , control_remote ] ] ) do var i , u ;
10596: LD_INT 22
10598: PUSH
10599: LD_INT 7
10601: PUSH
10602: EMPTY
10603: LIST
10604: LIST
10605: PUSH
10606: LD_INT 33
10608: PUSH
10609: LD_INT 2
10611: PUSH
10612: EMPTY
10613: LIST
10614: LIST
10615: PUSH
10616: EMPTY
10617: LIST
10618: LIST
10619: PPUSH
10620: CALL_OW 69
10624: IFFALSE 11570
10626: GO 10628
10628: DISABLE
10629: LD_INT 0
10631: PPUSH
10632: PPUSH
// begin enable ;
10633: ENABLE
// if KuronskiOver then
10634: LD_EXP 11
10638: IFFALSE 10643
// begin disable ;
10640: DISABLE
// exit ;
10641: GO 11570
// end ; for i in FilterAllUnits ( [ [ f_side , 7 ] , [ f_control , control_remote ] ] ) do
10643: LD_ADDR_VAR 0 1
10647: PUSH
10648: LD_INT 22
10650: PUSH
10651: LD_INT 7
10653: PUSH
10654: EMPTY
10655: LIST
10656: LIST
10657: PUSH
10658: LD_INT 33
10660: PUSH
10661: LD_INT 2
10663: PUSH
10664: EMPTY
10665: LIST
10666: LIST
10667: PUSH
10668: EMPTY
10669: LIST
10670: LIST
10671: PPUSH
10672: CALL_OW 69
10676: PUSH
10677: FOR_IN
10678: IFFALSE 10728
// if not IsControledBy ( i ) then
10680: LD_VAR 0 1
10684: PPUSH
10685: CALL_OW 312
10689: NOT
10690: IFFALSE 10726
// ComLinkTo ( i , UnitsInside ( kt ) [ Rand ( 1 , UnitsInside ( kt ) ) ] ) ;
10692: LD_VAR 0 1
10696: PPUSH
10697: LD_INT 183
10699: PPUSH
10700: CALL_OW 313
10704: PUSH
10705: LD_INT 1
10707: PPUSH
10708: LD_INT 183
10710: PPUSH
10711: CALL_OW 313
10715: PPUSH
10716: CALL_OW 12
10720: ARRAY
10721: PPUSH
10722: CALL_OW 135
10726: GO 10677
10728: POP
10729: POP
// KVehs = FilterAllUnits ( [ [ f_side , 7 ] , [ f_control , control_remote ] ] ) diff FilterAllUnits ( [ [ f_side , 7 ] , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , us_cargo_bay ] ] ] ) ;
10730: LD_ADDR_EXP 36
10734: PUSH
10735: LD_INT 22
10737: PUSH
10738: LD_INT 7
10740: PUSH
10741: EMPTY
10742: LIST
10743: LIST
10744: PUSH
10745: LD_INT 33
10747: PUSH
10748: LD_INT 2
10750: PUSH
10751: EMPTY
10752: LIST
10753: LIST
10754: PUSH
10755: EMPTY
10756: LIST
10757: LIST
10758: PPUSH
10759: CALL_OW 69
10763: PUSH
10764: LD_INT 22
10766: PUSH
10767: LD_INT 7
10769: PUSH
10770: EMPTY
10771: LIST
10772: LIST
10773: PUSH
10774: LD_INT 2
10776: PUSH
10777: LD_INT 34
10779: PUSH
10780: LD_INT 13
10782: PUSH
10783: EMPTY
10784: LIST
10785: LIST
10786: PUSH
10787: LD_INT 34
10789: PUSH
10790: LD_INT 12
10792: PUSH
10793: EMPTY
10794: LIST
10795: LIST
10796: PUSH
10797: EMPTY
10798: LIST
10799: LIST
10800: LIST
10801: PUSH
10802: EMPTY
10803: LIST
10804: LIST
10805: PPUSH
10806: CALL_OW 69
10810: DIFF
10811: ST_TO_ADDR
// if not ExistMc ( KDefenceStrategy ) and FilterUnitsInArea ( KuronskiDefenceArea , [ [ f_side , 1 ] , [ f_ok ] ] ) then
10812: LD_EXP 42
10816: PPUSH
10817: CALL_OW 386
10821: NOT
10822: PUSH
10823: LD_INT 13
10825: PPUSH
10826: LD_INT 22
10828: PUSH
10829: LD_INT 1
10831: PUSH
10832: EMPTY
10833: LIST
10834: LIST
10835: PUSH
10836: LD_INT 50
10838: PUSH
10839: EMPTY
10840: LIST
10841: PUSH
10842: EMPTY
10843: LIST
10844: LIST
10845: PPUSH
10846: CALL_OW 70
10850: AND
10851: IFFALSE 10889
// KDefenceStrategy = McDefend ( 2 , KEnemies , KVehs , [ [ mc_def_advantage , 200 ] ] ) ;
10853: LD_ADDR_EXP 42
10857: PUSH
10858: LD_INT 2
10860: PPUSH
10861: LD_EXP 40
10865: PPUSH
10866: LD_EXP 36
10870: PPUSH
10871: LD_INT 1
10873: PUSH
10874: LD_INT 200
10876: PUSH
10877: EMPTY
10878: LIST
10879: LIST
10880: PUSH
10881: EMPTY
10882: LIST
10883: PPUSH
10884: CALL_OW 401
10888: ST_TO_ADDR
// if ExistMc ( KDefenceStrategy ) and not FilterUnitsInArea ( KuronskiDefenceArea , [ [ f_side , 1 ] , [ f_ok ] ] ) then
10889: LD_EXP 42
10893: PPUSH
10894: CALL_OW 386
10898: PUSH
10899: LD_INT 13
10901: PPUSH
10902: LD_INT 22
10904: PUSH
10905: LD_INT 1
10907: PUSH
10908: EMPTY
10909: LIST
10910: LIST
10911: PUSH
10912: LD_INT 50
10914: PUSH
10915: EMPTY
10916: LIST
10917: PUSH
10918: EMPTY
10919: LIST
10920: LIST
10921: PPUSH
10922: CALL_OW 70
10926: NOT
10927: AND
10928: IFFALSE 10939
// KillMc ( KDefenceStrategy ) ;
10930: LD_EXP 42
10934: PPUSH
10935: CALL_OW 387
// if GetMcUnits ( KAttackStrategy ) = 0 then
10939: LD_EXP 41
10943: PPUSH
10944: CALL_OW 389
10948: PUSH
10949: LD_INT 0
10951: EQUAL
10952: IFFALSE 10963
// KillMc ( KAttackStrategy ) ;
10954: LD_EXP 41
10958: PPUSH
10959: CALL_OW 387
// for i in KVehs do
10963: LD_ADDR_VAR 0 1
10967: PUSH
10968: LD_EXP 36
10972: PUSH
10973: FOR_IN
10974: IFFALSE 11172
// begin if ExistMc ( KAttackStrategy ) then
10976: LD_EXP 41
10980: PPUSH
10981: CALL_OW 386
10985: IFFALSE 11033
// begin if GetUnitMc ( i ) = false and GetLives ( i ) = 1000 then
10987: LD_VAR 0 1
10991: PPUSH
10992: CALL_OW 388
10996: PUSH
10997: LD_INT 0
10999: EQUAL
11000: PUSH
11001: LD_VAR 0 1
11005: PPUSH
11006: CALL_OW 256
11010: PUSH
11011: LD_INT 1000
11013: EQUAL
11014: AND
11015: IFFALSE 11031
// AddMcUnits ( KAttackStrategy , i ) ;
11017: LD_EXP 41
11021: PPUSH
11022: LD_VAR 0 1
11026: PPUSH
11027: CALL_OW 390
// end else
11031: GO 11102
// if UnitFilter ( KVehs , [ f_lives , 1000 ] ) >= 3 then
11033: LD_EXP 36
11037: PPUSH
11038: LD_INT 24
11040: PUSH
11041: LD_INT 1000
11043: PUSH
11044: EMPTY
11045: LIST
11046: LIST
11047: PPUSH
11048: CALL_OW 72
11052: PUSH
11053: LD_INT 3
11055: GREATEREQUAL
11056: IFFALSE 11102
// KAttackStrategy = McAttack ( 1 , KTargets , UnitFilter ( KVehs , [ f_lives , 1000 ] ) , [ mc_murder ] ) ;
11058: LD_ADDR_EXP 41
11062: PUSH
11063: LD_INT 1
11065: PPUSH
11066: LD_EXP 39
11070: PPUSH
11071: LD_EXP 36
11075: PPUSH
11076: LD_INT 24
11078: PUSH
11079: LD_INT 1000
11081: PUSH
11082: EMPTY
11083: LIST
11084: LIST
11085: PPUSH
11086: CALL_OW 72
11090: PPUSH
11091: LD_INT 12
11093: PUSH
11094: EMPTY
11095: LIST
11096: PPUSH
11097: CALL_OW 402
11101: ST_TO_ADDR
// if GetLives ( i ) < 600 then
11102: LD_VAR 0 1
11106: PPUSH
11107: CALL_OW 256
11111: PUSH
11112: LD_INT 600
11114: LESS
11115: IFFALSE 11143
// begin RemoveMcUnits ( KAttackStrategy , i ) ;
11117: LD_EXP 41
11121: PPUSH
11122: LD_VAR 0 1
11126: PPUSH
11127: CALL_OW 391
// ComMoveToArea ( i , KuronskiRepairs ) ;
11131: LD_VAR 0 1
11135: PPUSH
11136: LD_INT 11
11138: PPUSH
11139: CALL_OW 113
// end ; if IsDying ( i ) then
11143: LD_VAR 0 1
11147: PPUSH
11148: CALL_OW 303
11152: IFFALSE 11170
// KVehs = KVehs diff i ;
11154: LD_ADDR_EXP 36
11158: PUSH
11159: LD_EXP 36
11163: PUSH
11164: LD_VAR 0 1
11168: DIFF
11169: ST_TO_ADDR
// end ;
11170: GO 10973
11172: POP
11173: POP
// for i in FilterUnitsInArea ( KuronskiRepairs , [ [ f_side , 7 ] , [ f_not , [ f_lives , 1000 ] ] ] ) do
11174: LD_ADDR_VAR 0 1
11178: PUSH
11179: LD_INT 11
11181: PPUSH
11182: LD_INT 22
11184: PUSH
11185: LD_INT 7
11187: PUSH
11188: EMPTY
11189: LIST
11190: LIST
11191: PUSH
11192: LD_INT 3
11194: PUSH
11195: LD_INT 24
11197: PUSH
11198: LD_INT 1000
11200: PUSH
11201: EMPTY
11202: LIST
11203: LIST
11204: PUSH
11205: EMPTY
11206: LIST
11207: LIST
11208: PUSH
11209: EMPTY
11210: LIST
11211: LIST
11212: PPUSH
11213: CALL_OW 70
11217: PUSH
11218: FOR_IN
11219: IFFALSE 11322
// if GetType ( i ) = unit_vehicle and UnitsInside ( kf ) > 1 then
11221: LD_VAR 0 1
11225: PPUSH
11226: CALL_OW 247
11230: PUSH
11231: LD_INT 2
11233: EQUAL
11234: PUSH
11235: LD_INT 45
11237: PPUSH
11238: CALL_OW 313
11242: PUSH
11243: LD_INT 1
11245: GREATER
11246: AND
11247: IFFALSE 11320
// begin u = UnitsInside ( kf ) [ 1 ] ;
11249: LD_ADDR_VAR 0 2
11253: PUSH
11254: LD_INT 45
11256: PPUSH
11257: CALL_OW 313
11261: PUSH
11262: LD_INT 1
11264: ARRAY
11265: ST_TO_ADDR
// ComExitBuilding ( u ) ;
11266: LD_VAR 0 2
11270: PPUSH
11271: CALL_OW 122
// AddComRepairVehicle ( FilterAllUnits ( [ [ f_side , 7 ] , [ f_class , class_mechanic ] , [ f_outside ] ] ) , i ) ;
11275: LD_INT 22
11277: PUSH
11278: LD_INT 7
11280: PUSH
11281: EMPTY
11282: LIST
11283: LIST
11284: PUSH
11285: LD_INT 25
11287: PUSH
11288: LD_INT 3
11290: PUSH
11291: EMPTY
11292: LIST
11293: LIST
11294: PUSH
11295: LD_INT 56
11297: PUSH
11298: EMPTY
11299: LIST
11300: PUSH
11301: EMPTY
11302: LIST
11303: LIST
11304: LIST
11305: PPUSH
11306: CALL_OW 69
11310: PPUSH
11311: LD_VAR 0 1
11315: PPUSH
11316: CALL_OW 189
// end ;
11320: GO 11218
11322: POP
11323: POP
// if not FilterUnitsInArea ( KuronskiRepairs , [ [ f_side , 7 ] , [ f_not , [ f_lives , 1000 ] ] ] ) then
11324: LD_INT 11
11326: PPUSH
11327: LD_INT 22
11329: PUSH
11330: LD_INT 7
11332: PUSH
11333: EMPTY
11334: LIST
11335: LIST
11336: PUSH
11337: LD_INT 3
11339: PUSH
11340: LD_INT 24
11342: PUSH
11343: LD_INT 1000
11345: PUSH
11346: EMPTY
11347: LIST
11348: LIST
11349: PUSH
11350: EMPTY
11351: LIST
11352: LIST
11353: PUSH
11354: EMPTY
11355: LIST
11356: LIST
11357: PPUSH
11358: CALL_OW 70
11362: NOT
11363: IFFALSE 11437
// for i in FilterAllUnits ( [ [ f_side , 7 ] , [ f_class , class_mechanic ] , [ f_outside ] ] ) do
11365: LD_ADDR_VAR 0 1
11369: PUSH
11370: LD_INT 22
11372: PUSH
11373: LD_INT 7
11375: PUSH
11376: EMPTY
11377: LIST
11378: LIST
11379: PUSH
11380: LD_INT 25
11382: PUSH
11383: LD_INT 3
11385: PUSH
11386: EMPTY
11387: LIST
11388: LIST
11389: PUSH
11390: LD_INT 56
11392: PUSH
11393: EMPTY
11394: LIST
11395: PUSH
11396: EMPTY
11397: LIST
11398: LIST
11399: LIST
11400: PPUSH
11401: CALL_OW 69
11405: PUSH
11406: FOR_IN
11407: IFFALSE 11435
// if not HasTask ( i ) then
11409: LD_VAR 0 1
11413: PPUSH
11414: CALL_OW 314
11418: NOT
11419: IFFALSE 11433
// ComEnterUnit ( i , kf ) ;
11421: LD_VAR 0 1
11425: PPUSH
11426: LD_INT 45
11428: PPUSH
11429: CALL_OW 120
11433: GO 11406
11435: POP
11436: POP
// if FilterAllUnits ( [ [ f_see , 7 ] , [ f_enemy , 7 ] , [ f_type , unit_building ] , [ f_not , [ f_ready ] ] ] ) then
11437: LD_INT 101
11439: PUSH
11440: LD_INT 7
11442: PUSH
11443: EMPTY
11444: LIST
11445: LIST
11446: PUSH
11447: LD_INT 81
11449: PUSH
11450: LD_INT 7
11452: PUSH
11453: EMPTY
11454: LIST
11455: LIST
11456: PUSH
11457: LD_INT 21
11459: PUSH
11460: LD_INT 3
11462: PUSH
11463: EMPTY
11464: LIST
11465: LIST
11466: PUSH
11467: LD_INT 3
11469: PUSH
11470: LD_INT 53
11472: PUSH
11473: EMPTY
11474: LIST
11475: PUSH
11476: EMPTY
11477: LIST
11478: LIST
11479: PUSH
11480: EMPTY
11481: LIST
11482: LIST
11483: LIST
11484: LIST
11485: PPUSH
11486: CALL_OW 69
11490: IFFALSE 11570
// for i in FilterAllUnits ( [ [ f_see , 7 ] , [ f_enemy , 7 ] , [ f_type , unit_building ] , [ f_not , [ f_ready ] ] ] ) do
11492: LD_ADDR_VAR 0 1
11496: PUSH
11497: LD_INT 101
11499: PUSH
11500: LD_INT 7
11502: PUSH
11503: EMPTY
11504: LIST
11505: LIST
11506: PUSH
11507: LD_INT 81
11509: PUSH
11510: LD_INT 7
11512: PUSH
11513: EMPTY
11514: LIST
11515: LIST
11516: PUSH
11517: LD_INT 21
11519: PUSH
11520: LD_INT 3
11522: PUSH
11523: EMPTY
11524: LIST
11525: LIST
11526: PUSH
11527: LD_INT 3
11529: PUSH
11530: LD_INT 53
11532: PUSH
11533: EMPTY
11534: LIST
11535: PUSH
11536: EMPTY
11537: LIST
11538: LIST
11539: PUSH
11540: EMPTY
11541: LIST
11542: LIST
11543: LIST
11544: LIST
11545: PPUSH
11546: CALL_OW 69
11550: PUSH
11551: FOR_IN
11552: IFFALSE 11568
// PriorityAttack ( 7 , i ) ;
11554: LD_INT 7
11556: PPUSH
11557: LD_VAR 0 1
11561: PPUSH
11562: CALL_OW 470
11566: GO 11551
11568: POP
11569: POP
// end ; end_of_file
11570: PPOPN 2
11572: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
11573: LD_INT 0
11575: PPUSH
11576: PPUSH
11577: PPUSH
11578: PPUSH
// InitHc ;
11579: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
11583: LD_ADDR_VAR 0 9
11587: PUSH
11588: LD_VAR 0 2
11592: PPUSH
11593: LD_INT 22
11595: PUSH
11596: LD_VAR 0 1
11600: PUSH
11601: EMPTY
11602: LIST
11603: LIST
11604: PUSH
11605: LD_INT 21
11607: PUSH
11608: LD_INT 3
11610: PUSH
11611: EMPTY
11612: LIST
11613: LIST
11614: PUSH
11615: EMPTY
11616: LIST
11617: LIST
11618: PPUSH
11619: CALL_OW 70
11623: PUSH
11624: FOR_IN
11625: IFFALSE 12112
// case GetBType ( i ) of b_depot , b_warehouse :
11627: LD_VAR 0 9
11631: PPUSH
11632: CALL_OW 266
11636: PUSH
11637: LD_INT 0
11639: DOUBLE
11640: EQUAL
11641: IFTRUE 11651
11643: LD_INT 1
11645: DOUBLE
11646: EQUAL
11647: IFTRUE 11651
11649: GO 11793
11651: POP
// for j = 1 to engineers do
11652: LD_ADDR_VAR 0 10
11656: PUSH
11657: DOUBLE
11658: LD_INT 1
11660: DEC
11661: ST_TO_ADDR
11662: LD_VAR 0 7
11666: PUSH
11667: FOR_TO
11668: IFFALSE 11789
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
11670: LD_INT 1
11672: PPUSH
11673: LD_INT 2
11675: PPUSH
11676: CALL_OW 12
11680: PPUSH
11681: LD_VAR 0 3
11685: PPUSH
11686: CALL_OW 382
// h = CreateHuman ;
11690: LD_ADDR_VAR 0 11
11694: PUSH
11695: CALL_OW 44
11699: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
11700: LD_VAR 0 11
11704: PPUSH
11705: LD_VAR 0 9
11709: PPUSH
11710: CALL_OW 250
11714: PPUSH
11715: LD_VAR 0 9
11719: PPUSH
11720: CALL_OW 254
11724: PPUSH
11725: LD_INT 4
11727: PPUSH
11728: LD_INT 10
11730: PPUSH
11731: CALL_OW 12
11735: PPUSH
11736: CALL_OW 272
11740: PPUSH
11741: LD_VAR 0 9
11745: PPUSH
11746: CALL_OW 251
11750: PPUSH
11751: LD_VAR 0 9
11755: PPUSH
11756: CALL_OW 254
11760: PPUSH
11761: LD_INT 4
11763: PPUSH
11764: LD_INT 10
11766: PPUSH
11767: CALL_OW 12
11771: PPUSH
11772: CALL_OW 273
11776: PPUSH
11777: LD_INT 8
11779: PPUSH
11780: LD_INT 0
11782: PPUSH
11783: CALL_OW 50
// end ; b_armoury , b_barracks :
11787: GO 11667
11789: POP
11790: POP
11791: GO 12110
11793: LD_INT 4
11795: DOUBLE
11796: EQUAL
11797: IFTRUE 11807
11799: LD_INT 5
11801: DOUBLE
11802: EQUAL
11803: IFTRUE 11807
11805: GO 11876
11807: POP
// for j = 1 to armoury do
11808: LD_ADDR_VAR 0 10
11812: PUSH
11813: DOUBLE
11814: LD_INT 1
11816: DEC
11817: ST_TO_ADDR
11818: LD_VAR 0 6
11822: PUSH
11823: FOR_TO
11824: IFFALSE 11872
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
11826: LD_INT 1
11828: PPUSH
11829: LD_INT 2
11831: PPUSH
11832: CALL_OW 12
11836: PPUSH
11837: LD_VAR 0 3
11841: PPUSH
11842: CALL_OW 381
// h = CreateHuman ;
11846: LD_ADDR_VAR 0 11
11850: PUSH
11851: CALL_OW 44
11855: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
11856: LD_VAR 0 11
11860: PPUSH
11861: LD_VAR 0 9
11865: PPUSH
11866: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
11870: GO 11823
11872: POP
11873: POP
11874: GO 12110
11876: LD_INT 9
11878: DOUBLE
11879: EQUAL
11880: IFTRUE 11896
11882: LD_INT 7
11884: DOUBLE
11885: EQUAL
11886: IFTRUE 11896
11888: LD_INT 8
11890: DOUBLE
11891: EQUAL
11892: IFTRUE 11896
11894: GO 11965
11896: POP
// for j = 1 to lab do
11897: LD_ADDR_VAR 0 10
11901: PUSH
11902: DOUBLE
11903: LD_INT 1
11905: DEC
11906: ST_TO_ADDR
11907: LD_VAR 0 5
11911: PUSH
11912: FOR_TO
11913: IFFALSE 11961
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
11915: LD_INT 1
11917: PPUSH
11918: LD_INT 2
11920: PPUSH
11921: CALL_OW 12
11925: PPUSH
11926: LD_VAR 0 3
11930: PPUSH
11931: CALL_OW 384
// h = CreateHuman ;
11935: LD_ADDR_VAR 0 11
11939: PUSH
11940: CALL_OW 44
11944: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
11945: LD_VAR 0 11
11949: PPUSH
11950: LD_VAR 0 9
11954: PPUSH
11955: CALL_OW 52
// end ; b_workshop , b_factory :
11959: GO 11912
11961: POP
11962: POP
11963: GO 12110
11965: LD_INT 2
11967: DOUBLE
11968: EQUAL
11969: IFTRUE 11979
11971: LD_INT 3
11973: DOUBLE
11974: EQUAL
11975: IFTRUE 11979
11977: GO 12048
11979: POP
// for j = 1 to workshop do
11980: LD_ADDR_VAR 0 10
11984: PUSH
11985: DOUBLE
11986: LD_INT 1
11988: DEC
11989: ST_TO_ADDR
11990: LD_VAR 0 4
11994: PUSH
11995: FOR_TO
11996: IFFALSE 12044
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
11998: LD_INT 1
12000: PPUSH
12001: LD_INT 2
12003: PPUSH
12004: CALL_OW 12
12008: PPUSH
12009: LD_VAR 0 3
12013: PPUSH
12014: CALL_OW 383
// h = CreateHuman ;
12018: LD_ADDR_VAR 0 11
12022: PUSH
12023: CALL_OW 44
12027: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
12028: LD_VAR 0 11
12032: PPUSH
12033: LD_VAR 0 9
12037: PPUSH
12038: CALL_OW 52
// end ; b_breastwork , b_bunker :
12042: GO 11995
12044: POP
12045: POP
12046: GO 12110
12048: LD_INT 31
12050: DOUBLE
12051: EQUAL
12052: IFTRUE 12062
12054: LD_INT 32
12056: DOUBLE
12057: EQUAL
12058: IFTRUE 12062
12060: GO 12109
12062: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
12063: LD_INT 1
12065: PPUSH
12066: LD_INT 2
12068: PPUSH
12069: CALL_OW 12
12073: PPUSH
12074: LD_VAR 0 3
12078: PPUSH
12079: CALL_OW 381
// h = CreateHuman ;
12083: LD_ADDR_VAR 0 11
12087: PUSH
12088: CALL_OW 44
12092: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
12093: LD_VAR 0 11
12097: PPUSH
12098: LD_VAR 0 9
12102: PPUSH
12103: CALL_OW 52
// end ; end ;
12107: GO 12110
12109: POP
12110: GO 11624
12112: POP
12113: POP
// end ;
12114: LD_VAR 0 8
12118: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
12119: LD_INT 0
12121: PPUSH
12122: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
12123: LD_ADDR_VAR 0 4
12127: PUSH
12128: LD_INT 22
12130: PUSH
12131: LD_VAR 0 1
12135: PUSH
12136: EMPTY
12137: LIST
12138: LIST
12139: PUSH
12140: LD_INT 3
12142: PUSH
12143: LD_INT 23
12145: PUSH
12146: LD_INT 0
12148: PUSH
12149: EMPTY
12150: LIST
12151: LIST
12152: PUSH
12153: EMPTY
12154: LIST
12155: LIST
12156: PUSH
12157: EMPTY
12158: LIST
12159: LIST
12160: PPUSH
12161: CALL_OW 69
12165: PPUSH
12166: LD_VAR 0 2
12170: PUSH
12171: LD_INT 1
12173: ARRAY
12174: PPUSH
12175: CALL_OW 74
12179: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
12180: LD_VAR 0 4
12184: PPUSH
12185: CALL_OW 247
12189: PUSH
12190: LD_INT 2
12192: EQUAL
12193: IFFALSE 12257
// if GetControl ( i ) = control_manual then
12195: LD_VAR 0 4
12199: PPUSH
12200: CALL_OW 263
12204: PUSH
12205: LD_INT 1
12207: EQUAL
12208: IFFALSE 12227
// i = IsDrivenBy ( i ) else
12210: LD_ADDR_VAR 0 4
12214: PUSH
12215: LD_VAR 0 4
12219: PPUSH
12220: CALL_OW 311
12224: ST_TO_ADDR
12225: GO 12257
// if GetControl ( i ) = control_remote then
12227: LD_VAR 0 4
12231: PPUSH
12232: CALL_OW 263
12236: PUSH
12237: LD_INT 2
12239: EQUAL
12240: IFFALSE 12257
// i = IsControledBy ( i ) ;
12242: LD_ADDR_VAR 0 4
12246: PUSH
12247: LD_VAR 0 4
12251: PPUSH
12252: CALL_OW 312
12256: ST_TO_ADDR
// if GetType ( i ) = unit_building then
12257: LD_VAR 0 4
12261: PPUSH
12262: CALL_OW 247
12266: PUSH
12267: LD_INT 3
12269: EQUAL
12270: IFFALSE 12313
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
12272: LD_ADDR_VAR 0 4
12276: PUSH
12277: LD_VAR 0 4
12281: PPUSH
12282: CALL_OW 313
12286: PPUSH
12287: LD_INT 3
12289: PUSH
12290: LD_INT 23
12292: PUSH
12293: LD_INT 0
12295: PUSH
12296: EMPTY
12297: LIST
12298: LIST
12299: PUSH
12300: EMPTY
12301: LIST
12302: LIST
12303: PPUSH
12304: CALL_OW 72
12308: PUSH
12309: LD_INT 1
12311: ARRAY
12312: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
12313: LD_VAR 0 4
12317: PPUSH
12318: CALL_OW 247
12322: PUSH
12323: LD_INT 1
12325: EQUAL
12326: NOT
12327: IFFALSE 12387
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
12329: LD_ADDR_VAR 0 4
12333: PUSH
12334: LD_INT 22
12336: PUSH
12337: LD_VAR 0 1
12341: PUSH
12342: EMPTY
12343: LIST
12344: LIST
12345: PUSH
12346: LD_INT 21
12348: PUSH
12349: LD_INT 1
12351: PUSH
12352: EMPTY
12353: LIST
12354: LIST
12355: PUSH
12356: LD_INT 3
12358: PUSH
12359: LD_INT 23
12361: PUSH
12362: LD_INT 0
12364: PUSH
12365: EMPTY
12366: LIST
12367: LIST
12368: PUSH
12369: EMPTY
12370: LIST
12371: LIST
12372: PUSH
12373: EMPTY
12374: LIST
12375: LIST
12376: LIST
12377: PPUSH
12378: CALL_OW 69
12382: PUSH
12383: LD_INT 1
12385: ARRAY
12386: ST_TO_ADDR
// result = i ;
12387: LD_ADDR_VAR 0 3
12391: PUSH
12392: LD_VAR 0 4
12396: ST_TO_ADDR
// end ;
12397: LD_VAR 0 3
12401: RET
