// export Alex , Hayes , Eddings ; export TeamGamma , AmOthers , AmDep ; export GammaBuildings ; export function PrepareOurs ; var i , b ; var labs , facs , bns ; var a ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
   6: PPUSH
   7: PPUSH
   8: PPUSH
// uc_side = 1 ;
   9: LD_ADDR_OWVAR 20
  13: PUSH
  14: LD_INT 1
  16: ST_TO_ADDR
// uc_nation = 1 ;
  17: LD_ADDR_OWVAR 21
  21: PUSH
  22: LD_INT 1
  24: ST_TO_ADDR
// GammaBuildings = LoadVariable ( GammaBuildings , [ ] ) ;
  25: LD_ADDR_EXP 7
  29: PUSH
  30: LD_STRING GammaBuildings
  32: PPUSH
  33: EMPTY
  34: PPUSH
  35: CALL_OW 30
  39: ST_TO_ADDR
// for i in GammaBuildings do
  40: LD_ADDR_VAR 0 2
  44: PUSH
  45: LD_EXP 7
  49: PUSH
  50: FOR_IN
  51: IFFALSE 317
// begin bc_type = i [ 4 ] ;
  53: LD_ADDR_OWVAR 42
  57: PUSH
  58: LD_VAR 0 2
  62: PUSH
  63: LD_INT 4
  65: ARRAY
  66: ST_TO_ADDR
// bc_level = i [ 5 ] ;
  67: LD_ADDR_OWVAR 43
  71: PUSH
  72: LD_VAR 0 2
  76: PUSH
  77: LD_INT 5
  79: ARRAY
  80: ST_TO_ADDR
// case bc_type of b_lab , b_lab_half , b_lab_full :
  81: LD_OWVAR 42
  85: PUSH
  86: LD_INT 6
  88: DOUBLE
  89: EQUAL
  90: IFTRUE 106
  92: LD_INT 7
  94: DOUBLE
  95: EQUAL
  96: IFTRUE 106
  98: LD_INT 8
 100: DOUBLE
 101: EQUAL
 102: IFTRUE 106
 104: GO 137
 106: POP
// begin bc_kind1 = i [ 6 ] ;
 107: LD_ADDR_OWVAR 44
 111: PUSH
 112: LD_VAR 0 2
 116: PUSH
 117: LD_INT 6
 119: ARRAY
 120: ST_TO_ADDR
// bc_kind2 = i [ 7 ] ;
 121: LD_ADDR_OWVAR 45
 125: PUSH
 126: LD_VAR 0 2
 130: PUSH
 131: LD_INT 7
 133: ARRAY
 134: ST_TO_ADDR
// end ; end ;
 135: GO 138
 137: POP
// b = CreateAndPlaceBuildingXYD ( i [ 1 ] , i [ 2 ] , i [ 3 ] ) ;
 138: LD_ADDR_VAR 0 3
 142: PUSH
 143: LD_VAR 0 2
 147: PUSH
 148: LD_INT 1
 150: ARRAY
 151: PPUSH
 152: LD_VAR 0 2
 156: PUSH
 157: LD_INT 2
 159: ARRAY
 160: PPUSH
 161: LD_VAR 0 2
 165: PUSH
 166: LD_INT 3
 168: ARRAY
 169: PPUSH
 170: CALL_OW 47
 174: ST_TO_ADDR
// if GetBType ( b ) = b_depot and IsInArea ( b , MainGamma ) then
 175: LD_VAR 0 3
 179: PPUSH
 180: CALL_OW 266
 184: PUSH
 185: LD_INT 0
 187: EQUAL
 188: PUSH
 189: LD_VAR 0 3
 193: PPUSH
 194: LD_INT 5
 196: PPUSH
 197: CALL_OW 308
 201: AND
 202: IFFALSE 315
// if not AmDep then
 204: LD_EXP 6
 208: NOT
 209: IFFALSE 275
// begin SetBName ( b , gamma ) ;
 211: LD_VAR 0 3
 215: PPUSH
 216: LD_STRING gamma
 218: PPUSH
 219: CALL_OW 500
// SetResourceType ( GetBase ( b ) , mat_cans , 220 ) ;
 223: LD_VAR 0 3
 227: PPUSH
 228: CALL_OW 274
 232: PPUSH
 233: LD_INT 1
 235: PPUSH
 236: LD_INT 220
 238: PPUSH
 239: CALL_OW 277
// SetResourceType ( GetBase ( b ) , mat_oil , 810 ) ;
 243: LD_VAR 0 3
 247: PPUSH
 248: CALL_OW 274
 252: PPUSH
 253: LD_INT 2
 255: PPUSH
 256: LD_INT 810
 258: PPUSH
 259: CALL_OW 277
// AmDep = b ;
 263: LD_ADDR_EXP 6
 267: PUSH
 268: LD_VAR 0 3
 272: ST_TO_ADDR
// end else
 273: GO 315
// begin SetResourceType ( GetBase ( b ) , mat_cans , 30 ) ;
 275: LD_VAR 0 3
 279: PPUSH
 280: CALL_OW 274
 284: PPUSH
 285: LD_INT 1
 287: PPUSH
 288: LD_INT 30
 290: PPUSH
 291: CALL_OW 277
// SetResourceType ( GetBase ( b ) , mat_oil , 620 ) ;
 295: LD_VAR 0 3
 299: PPUSH
 300: CALL_OW 274
 304: PPUSH
 305: LD_INT 2
 307: PPUSH
 308: LD_INT 620
 310: PPUSH
 311: CALL_OW 277
// end ; end ;
 315: GO 50
 317: POP
 318: POP
// if not FilterUnitsInArea ( ArabGamma , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_armoury ] ] ) then
 319: LD_INT 6
 321: PPUSH
 322: LD_INT 2
 324: PUSH
 325: LD_INT 30
 327: PUSH
 328: LD_INT 31
 330: PUSH
 331: EMPTY
 332: LIST
 333: LIST
 334: PUSH
 335: LD_INT 30
 337: PUSH
 338: LD_INT 4
 340: PUSH
 341: EMPTY
 342: LIST
 343: LIST
 344: PUSH
 345: EMPTY
 346: LIST
 347: LIST
 348: LIST
 349: PPUSH
 350: CALL_OW 70
 354: NOT
 355: IFFALSE 403
// begin bc_type = b_breastwork ;
 357: LD_ADDR_OWVAR 42
 361: PUSH
 362: LD_INT 31
 364: ST_TO_ADDR
// b = CreateAndPlaceBuildingXYD ( 53 , 49 , 4 ) ;
 365: LD_ADDR_VAR 0 3
 369: PUSH
 370: LD_INT 53
 372: PPUSH
 373: LD_INT 49
 375: PPUSH
 376: LD_INT 4
 378: PPUSH
 379: CALL_OW 47
 383: ST_TO_ADDR
// b = CreateAndPlaceBuildingXYD ( 31 , 32 , 3 ) ;
 384: LD_ADDR_VAR 0 3
 388: PUSH
 389: LD_INT 31
 391: PPUSH
 392: LD_INT 32
 394: PPUSH
 395: LD_INT 3
 397: PPUSH
 398: CALL_OW 47
 402: ST_TO_ADDR
// end ; Alex = LoadCharacter ( Alex , 0 , 0 ) ;
 403: LD_ADDR_EXP 1
 407: PUSH
 408: LD_STRING Alex
 410: PPUSH
 411: LD_INT 0
 413: PPUSH
 414: LD_INT 0
 416: PPUSH
 417: CALL_OW 527
 421: ST_TO_ADDR
// PlaceUnitXYR ( Alex , ShiftX ( GetX ( AmDep ) , GetDir ( AmDep ) , 8 ) , ShiftY ( GetY ( AmDep ) , GetDir ( AmDep ) , 8 ) , 2 , false ) ;
 422: LD_EXP 1
 426: PPUSH
 427: LD_EXP 6
 431: PPUSH
 432: CALL_OW 250
 436: PPUSH
 437: LD_EXP 6
 441: PPUSH
 442: CALL_OW 254
 446: PPUSH
 447: LD_INT 8
 449: PPUSH
 450: CALL_OW 272
 454: PPUSH
 455: LD_EXP 6
 459: PPUSH
 460: CALL_OW 251
 464: PPUSH
 465: LD_EXP 6
 469: PPUSH
 470: CALL_OW 254
 474: PPUSH
 475: LD_INT 8
 477: PPUSH
 478: CALL_OW 273
 482: PPUSH
 483: LD_INT 2
 485: PPUSH
 486: LD_INT 0
 488: PPUSH
 489: CALL_OW 50
// TeamGamma = LoadCharacter ( TeamGamma , 0 , 0 ) ;
 493: LD_ADDR_EXP 4
 497: PUSH
 498: LD_STRING TeamGamma
 500: PPUSH
 501: LD_INT 0
 503: PPUSH
 504: LD_INT 0
 506: PPUSH
 507: CALL_OW 527
 511: ST_TO_ADDR
// AmOthers = LoadCharacter ( AmOthers , 0 , 0 ) ;
 512: LD_ADDR_EXP 5
 516: PUSH
 517: LD_STRING AmOthers
 519: PPUSH
 520: LD_INT 0
 522: PPUSH
 523: LD_INT 0
 525: PPUSH
 526: CALL_OW 527
 530: ST_TO_ADDR
// a = TeamGamma ^ AmOthers ;
 531: LD_ADDR_VAR 0 7
 535: PUSH
 536: LD_EXP 4
 540: PUSH
 541: LD_EXP 5
 545: ADD
 546: ST_TO_ADDR
// labs = FilterAllUnits ( [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ) ;
 547: LD_ADDR_VAR 0 4
 551: PUSH
 552: LD_INT 2
 554: PUSH
 555: LD_INT 30
 557: PUSH
 558: LD_INT 6
 560: PUSH
 561: EMPTY
 562: LIST
 563: LIST
 564: PUSH
 565: LD_INT 30
 567: PUSH
 568: LD_INT 7
 570: PUSH
 571: EMPTY
 572: LIST
 573: LIST
 574: PUSH
 575: LD_INT 30
 577: PUSH
 578: LD_INT 8
 580: PUSH
 581: EMPTY
 582: LIST
 583: LIST
 584: PUSH
 585: EMPTY
 586: LIST
 587: LIST
 588: LIST
 589: LIST
 590: PPUSH
 591: CALL_OW 69
 595: ST_TO_ADDR
// facs = FilterAllUnits ( [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ) ;
 596: LD_ADDR_VAR 0 5
 600: PUSH
 601: LD_INT 2
 603: PUSH
 604: LD_INT 30
 606: PUSH
 607: LD_INT 2
 609: PUSH
 610: EMPTY
 611: LIST
 612: LIST
 613: PUSH
 614: LD_INT 30
 616: PUSH
 617: LD_INT 3
 619: PUSH
 620: EMPTY
 621: LIST
 622: LIST
 623: PUSH
 624: EMPTY
 625: LIST
 626: LIST
 627: LIST
 628: PPUSH
 629: CALL_OW 69
 633: ST_TO_ADDR
// bns = FilterAllUnits ( [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) ;
 634: LD_ADDR_VAR 0 6
 638: PUSH
 639: LD_INT 2
 641: PUSH
 642: LD_INT 30
 644: PUSH
 645: LD_INT 31
 647: PUSH
 648: EMPTY
 649: LIST
 650: LIST
 651: PUSH
 652: LD_INT 30
 654: PUSH
 655: LD_INT 32
 657: PUSH
 658: EMPTY
 659: LIST
 660: LIST
 661: PUSH
 662: LD_INT 30
 664: PUSH
 665: LD_INT 4
 667: PUSH
 668: EMPTY
 669: LIST
 670: LIST
 671: PUSH
 672: LD_INT 30
 674: PUSH
 675: LD_INT 5
 677: PUSH
 678: EMPTY
 679: LIST
 680: LIST
 681: PUSH
 682: EMPTY
 683: LIST
 684: LIST
 685: LIST
 686: LIST
 687: LIST
 688: PPUSH
 689: CALL_OW 69
 693: ST_TO_ADDR
// for i in a do
 694: LD_ADDR_VAR 0 2
 698: PUSH
 699: LD_VAR 0 7
 703: PUSH
 704: FOR_IN
 705: IFFALSE 882
// begin case GetClass ( i ) of 4 :
 707: LD_VAR 0 2
 711: PPUSH
 712: CALL_OW 257
 716: PUSH
 717: LD_INT 4
 719: DOUBLE
 720: EQUAL
 721: IFTRUE 725
 723: GO 746
 725: POP
// PlaceHumanInUnit ( i , labs [ 1 ] ) ; 3 :
 726: LD_VAR 0 2
 730: PPUSH
 731: LD_VAR 0 4
 735: PUSH
 736: LD_INT 1
 738: ARRAY
 739: PPUSH
 740: CALL_OW 52
 744: GO 880
 746: LD_INT 3
 748: DOUBLE
 749: EQUAL
 750: IFTRUE 754
 752: GO 775
 754: POP
// PlaceHumanInUnit ( i , facs [ 1 ] ) ; 2 :
 755: LD_VAR 0 2
 759: PPUSH
 760: LD_VAR 0 5
 764: PUSH
 765: LD_INT 1
 767: ARRAY
 768: PPUSH
 769: CALL_OW 52
 773: GO 880
 775: LD_INT 2
 777: DOUBLE
 778: EQUAL
 779: IFTRUE 783
 781: GO 801
 783: POP
// PlaceUnitArea ( i , PlacePeopleArea , false ) ; 1 , 5 :
 784: LD_VAR 0 2
 788: PPUSH
 789: LD_INT 1
 791: PPUSH
 792: LD_INT 0
 794: PPUSH
 795: CALL_OW 49
 799: GO 880
 801: LD_INT 1
 803: DOUBLE
 804: EQUAL
 805: IFTRUE 815
 807: LD_INT 5
 809: DOUBLE
 810: EQUAL
 811: IFTRUE 815
 813: GO 879
 815: POP
// begin if bns then
 816: LD_VAR 0 6
 820: IFFALSE 862
// begin PlaceHumanInUnit ( i , bns [ 1 ] ) ;
 822: LD_VAR 0 2
 826: PPUSH
 827: LD_VAR 0 6
 831: PUSH
 832: LD_INT 1
 834: ARRAY
 835: PPUSH
 836: CALL_OW 52
// bns = bns diff bns [ 1 ] ;
 840: LD_ADDR_VAR 0 6
 844: PUSH
 845: LD_VAR 0 6
 849: PUSH
 850: LD_VAR 0 6
 854: PUSH
 855: LD_INT 1
 857: ARRAY
 858: DIFF
 859: ST_TO_ADDR
// end else
 860: GO 877
// PlaceUnitArea ( i , PlacePeopleArea , false ) ;
 862: LD_VAR 0 2
 866: PPUSH
 867: LD_INT 1
 869: PPUSH
 870: LD_INT 0
 872: PPUSH
 873: CALL_OW 49
// end ; end ;
 877: GO 880
 879: POP
// end ;
 880: GO 704
 882: POP
 883: POP
// Eddings = LoadCharacter ( Eddings , 4 , 0 ) ;
 884: LD_ADDR_EXP 3
 888: PUSH
 889: LD_STRING Eddings
 891: PPUSH
 892: LD_INT 4
 894: PPUSH
 895: LD_INT 0
 897: PPUSH
 898: CALL_OW 527
 902: ST_TO_ADDR
// Hayes = NewCharacter ( Hayes ) ;
 903: LD_ADDR_EXP 2
 907: PUSH
 908: LD_STRING Hayes
 910: PPUSH
 911: CALL_OW 25
 915: ST_TO_ADDR
// ChangeSideFog ( 1 , 4 ) ;
 916: LD_INT 1
 918: PPUSH
 919: LD_INT 4
 921: PPUSH
 922: CALL_OW 343
// RevealFogArea ( 4 , RevealArea ) ;
 926: LD_INT 4
 928: PPUSH
 929: LD_INT 2
 931: PPUSH
 932: CALL_OW 332
// end ;
 936: LD_VAR 0 1
 940: RET
// export function SetTechs ; var ApemenAllowed ; begin
 941: LD_INT 0
 943: PPUSH
 944: PPUSH
// ApemenAllowed = LoadVariable ( ApemenAllowed , 0 ) ;
 945: LD_ADDR_VAR 0 2
 949: PUSH
 950: LD_STRING ApemenAllowed
 952: PPUSH
 953: LD_INT 0
 955: PPUSH
 956: CALL_OW 30
 960: ST_TO_ADDR
// if ApemenAllowed then
 961: LD_VAR 0 2
 965: IFFALSE 993
// begin SetTech ( tech_ApeLang , 1 , state_researched ) ;
 967: LD_INT 1
 969: PPUSH
 970: LD_INT 1
 972: PPUSH
 973: LD_INT 2
 975: PPUSH
 976: CALL_OW 322
// SetTech ( tech_ApePsych , 1 , state_researched ) ;
 980: LD_INT 2
 982: PPUSH
 983: LD_INT 1
 985: PPUSH
 986: LD_INT 2
 988: PPUSH
 989: CALL_OW 322
// end ; end ;
 993: LD_VAR 0 1
 997: RET
// starting begin Query ( Q1 ) ;
 998: LD_STRING Q1
1000: PPUSH
1001: CALL_OW 97
// Query ( Q2 ) ;
1005: LD_STRING Q2
1007: PPUSH
1008: CALL_OW 97
// PrepareOurs ;
1012: CALL 0 0 0
// SetTechs ;
1016: CALL 941 0 0
// disable ( 01 ) ;
1020: LD_INT 1
1022: DISABLE_MARKED
// disable ( 02 ) ;
1023: LD_INT 2
1025: DISABLE_MARKED
// disable ( 03 ) ;
1026: LD_INT 3
1028: DISABLE_MARKED
// disable ( 04 ) ;
1029: LD_INT 4
1031: DISABLE_MARKED
// InGameOn ;
1032: CALL_OW 8
// CenterNowOnUnits ( Alex ) ;
1036: LD_EXP 1
1040: PPUSH
1041: CALL_OW 87
// Wait ( 0 0$1 ) ;
1045: LD_INT 35
1047: PPUSH
1048: CALL_OW 67
// DialogueOn ;
1052: CALL_OW 6
// SayRadio ( Hayes , di-h-1 ) ;
1056: LD_EXP 2
1060: PPUSH
1061: LD_STRING di-h-1
1063: PPUSH
1064: CALL_OW 94
// Say ( Alex , di-a-1 ) ;
1068: LD_EXP 1
1072: PPUSH
1073: LD_STRING di-a-1
1075: PPUSH
1076: CALL_OW 88
// SayRadio ( Hayes , di-h-2 ) ;
1080: LD_EXP 2
1084: PPUSH
1085: LD_STRING di-h-2
1087: PPUSH
1088: CALL_OW 94
// SayRadio ( Eddings , di-e-1 ) ;
1092: LD_EXP 3
1096: PPUSH
1097: LD_STRING di-e-1
1099: PPUSH
1100: CALL_OW 94
// Say ( Alex , di-a-2 ) ;
1104: LD_EXP 1
1108: PPUSH
1109: LD_STRING di-a-2
1111: PPUSH
1112: CALL_OW 88
// SayRadio ( Hayes , di-h-3 ) ;
1116: LD_EXP 2
1120: PPUSH
1121: LD_STRING di-h-3
1123: PPUSH
1124: CALL_OW 94
// DialogueOff ;
1128: CALL_OW 7
// InGameOff ;
1132: CALL_OW 9
// SaveForQuickRestart ;
1136: CALL_OW 22
// ChangeMissionObjectives ( OLab ) ;
1140: LD_STRING OLab
1142: PPUSH
1143: CALL_OW 337
// end ; end_of_file
1147: END
// export BuildingTheCars ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] , [ f_ready ] ] ) do var i , l ;
1148: LD_INT 22
1150: PUSH
1151: LD_INT 1
1153: PUSH
1154: EMPTY
1155: LIST
1156: LIST
1157: PUSH
1158: LD_INT 2
1160: PUSH
1161: LD_INT 30
1163: PUSH
1164: LD_INT 7
1166: PUSH
1167: EMPTY
1168: LIST
1169: LIST
1170: PUSH
1171: LD_INT 30
1173: PUSH
1174: LD_INT 8
1176: PUSH
1177: EMPTY
1178: LIST
1179: LIST
1180: PUSH
1181: EMPTY
1182: LIST
1183: LIST
1184: LIST
1185: PUSH
1186: LD_INT 53
1188: PUSH
1189: EMPTY
1190: LIST
1191: PUSH
1192: EMPTY
1193: LIST
1194: LIST
1195: LIST
1196: PPUSH
1197: CALL_OW 69
1201: IFFALSE 1328
1203: GO 1205
1205: DISABLE
1206: LD_INT 0
1208: PPUSH
1209: PPUSH
// begin enable ;
1210: ENABLE
// l = FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] , [ f_ready ] ] ) ;
1211: LD_ADDR_VAR 0 2
1215: PUSH
1216: LD_INT 22
1218: PUSH
1219: LD_INT 1
1221: PUSH
1222: EMPTY
1223: LIST
1224: LIST
1225: PUSH
1226: LD_INT 2
1228: PUSH
1229: LD_INT 30
1231: PUSH
1232: LD_INT 7
1234: PUSH
1235: EMPTY
1236: LIST
1237: LIST
1238: PUSH
1239: LD_INT 30
1241: PUSH
1242: LD_INT 8
1244: PUSH
1245: EMPTY
1246: LIST
1247: LIST
1248: PUSH
1249: EMPTY
1250: LIST
1251: LIST
1252: LIST
1253: PUSH
1254: LD_INT 53
1256: PUSH
1257: EMPTY
1258: LIST
1259: PUSH
1260: EMPTY
1261: LIST
1262: LIST
1263: LIST
1264: PPUSH
1265: CALL_OW 69
1269: ST_TO_ADDR
// for i in l do
1270: LD_ADDR_VAR 0 1
1274: PUSH
1275: LD_VAR 0 2
1279: PUSH
1280: FOR_IN
1281: IFFALSE 1326
// if GetLabKind ( i , 1 ) = b_lab_opto or GetLabKind ( i , 2 ) = b_lab_opto then
1283: LD_VAR 0 1
1287: PPUSH
1288: LD_INT 1
1290: PPUSH
1291: CALL_OW 268
1295: PUSH
1296: LD_INT 15
1298: EQUAL
1299: PUSH
1300: LD_VAR 0 1
1304: PPUSH
1305: LD_INT 2
1307: PPUSH
1308: CALL_OW 268
1312: PUSH
1313: LD_INT 15
1315: EQUAL
1316: OR
1317: IFFALSE 1324
// begin disable ;
1319: DISABLE
// PlaceEddings ;
1320: CALL 1331 0 0
// end ;
1324: GO 1280
1326: POP
1327: POP
// end ;
1328: PPOPN 2
1330: END
// export function PlaceEddings ; var v ; begin
1331: LD_INT 0
1333: PPUSH
1334: PPUSH
// uc_side = 4 ;
1335: LD_ADDR_OWVAR 20
1339: PUSH
1340: LD_INT 4
1342: ST_TO_ADDR
// uc_nation = 1 ;
1343: LD_ADDR_OWVAR 21
1347: PUSH
1348: LD_INT 1
1350: ST_TO_ADDR
// uc_direction = 2 ;
1351: LD_ADDR_OWVAR 24
1355: PUSH
1356: LD_INT 2
1358: ST_TO_ADDR
// InitVc ;
1359: CALL_OW 20
// vc_weapon = us_radar ;
1363: LD_ADDR_OWVAR 40
1367: PUSH
1368: LD_INT 11
1370: ST_TO_ADDR
// vc_chassis = us_medium_tracked ;
1371: LD_ADDR_OWVAR 37
1375: PUSH
1376: LD_INT 3
1378: ST_TO_ADDR
// vc_engine = engine_solar ;
1379: LD_ADDR_OWVAR 39
1383: PUSH
1384: LD_INT 2
1386: ST_TO_ADDR
// vc_control = control_manual ;
1387: LD_ADDR_OWVAR 38
1391: PUSH
1392: LD_INT 1
1394: ST_TO_ADDR
// v = CreateVehicle ;
1395: LD_ADDR_VAR 0 2
1399: PUSH
1400: CALL_OW 45
1404: ST_TO_ADDR
// PlaceUnitXY ( v , 55 , 3 , false ) ;
1405: LD_VAR 0 2
1409: PPUSH
1410: LD_INT 55
1412: PPUSH
1413: LD_INT 3
1415: PPUSH
1416: LD_INT 0
1418: PPUSH
1419: CALL_OW 48
// PlaceHumanInUnit ( Eddings , v ) ;
1423: LD_EXP 3
1427: PPUSH
1428: LD_VAR 0 2
1432: PPUSH
1433: CALL_OW 52
// ComMoveXY ( v , 59 , 13 ) ;
1437: LD_VAR 0 2
1441: PPUSH
1442: LD_INT 59
1444: PPUSH
1445: LD_INT 13
1447: PPUSH
1448: CALL_OW 111
// Wait ( 0 0$3 ) ;
1452: LD_INT 105
1454: PPUSH
1455: CALL_OW 67
// vc_weapon = us_light_gun ;
1459: LD_ADDR_OWVAR 40
1463: PUSH
1464: LD_INT 3
1466: ST_TO_ADDR
// vc_chassis = us_medium_tracked ;
1467: LD_ADDR_OWVAR 37
1471: PUSH
1472: LD_INT 3
1474: ST_TO_ADDR
// v = CreateVehicle ;
1475: LD_ADDR_VAR 0 2
1479: PUSH
1480: CALL_OW 45
1484: ST_TO_ADDR
// PlaceUnitXY ( v , 55 , 3 , false ) ;
1485: LD_VAR 0 2
1489: PPUSH
1490: LD_INT 55
1492: PPUSH
1493: LD_INT 3
1495: PPUSH
1496: LD_INT 0
1498: PPUSH
1499: CALL_OW 48
// InitHc ;
1503: CALL_OW 19
// PrepareSoldier ( false , 5 ) ;
1507: LD_INT 0
1509: PPUSH
1510: LD_INT 5
1512: PPUSH
1513: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , v ) ;
1517: CALL_OW 44
1521: PPUSH
1522: LD_VAR 0 2
1526: PPUSH
1527: CALL_OW 52
// ComMoveXY ( v , 59 , 13 ) ;
1531: LD_VAR 0 2
1535: PPUSH
1536: LD_INT 59
1538: PPUSH
1539: LD_INT 13
1541: PPUSH
1542: CALL_OW 111
// CenterOnXY ( 56 , 7 ) ;
1546: LD_INT 56
1548: PPUSH
1549: LD_INT 7
1551: PPUSH
1552: CALL_OW 84
// DialogueOn ;
1556: CALL_OW 6
// Say ( Eddings , dg-e-1 ) ;
1560: LD_EXP 3
1564: PPUSH
1565: LD_STRING dg-e-1
1567: PPUSH
1568: CALL_OW 88
// Say ( Alex , dg-a-1 ) ;
1572: LD_EXP 1
1576: PPUSH
1577: LD_STRING dg-a-1
1579: PPUSH
1580: CALL_OW 88
// DialogueOff ;
1584: CALL_OW 7
// SetSide ( FilterAllUnits ( [ f_side , 4 ] ) , 1 ) ;
1588: LD_INT 22
1590: PUSH
1591: LD_INT 4
1593: PUSH
1594: EMPTY
1595: LIST
1596: LIST
1597: PPUSH
1598: CALL_OW 69
1602: PPUSH
1603: LD_INT 1
1605: PPUSH
1606: CALL_OW 235
// SetTech ( tech_RemCont , 1 , state_enabled ) ;
1610: LD_INT 15
1612: PPUSH
1613: LD_INT 1
1615: PPUSH
1616: LD_INT 1
1618: PPUSH
1619: CALL_OW 322
// SetRestrict ( b_control_tower , 1 , true ) ;
1623: LD_INT 36
1625: PPUSH
1626: LD_INT 1
1628: PPUSH
1629: LD_INT 1
1631: PPUSH
1632: CALL_OW 324
// ChangeMissionObjectives ( ORes ) ;
1636: LD_STRING ORes
1638: PPUSH
1639: CALL_OW 337
// BuildingTheCars = true ;
1643: LD_ADDR_EXP 8
1647: PUSH
1648: LD_INT 1
1650: ST_TO_ADDR
// end ;
1651: LD_VAR 0 1
1655: RET
// every 0 0$1 trigger Researched ( 1 , tech_RemCont ) do
1656: LD_INT 1
1658: PPUSH
1659: LD_INT 15
1661: PPUSH
1662: CALL_OW 325
1666: IFFALSE 1773
1668: GO 1670
1670: DISABLE
// begin DialogueOn ;
1671: CALL_OW 6
// Say ( Eddings , dc-e-1 ) ;
1675: LD_EXP 3
1679: PPUSH
1680: LD_STRING dc-e-1
1682: PPUSH
1683: CALL_OW 88
// Say ( Alex , dc-a-1 ) ;
1687: LD_EXP 1
1691: PPUSH
1692: LD_STRING dc-a-1
1694: PPUSH
1695: CALL_OW 88
// Say ( Eddings , dc-e-2 ) ;
1699: LD_EXP 3
1703: PPUSH
1704: LD_STRING dc-e-2
1706: PPUSH
1707: CALL_OW 88
// Say ( Alex , dc-a-2 ) ;
1711: LD_EXP 1
1715: PPUSH
1716: LD_STRING dc-a-2
1718: PPUSH
1719: CALL_OW 88
// ChangeMissionObjectives ( ODef ) ;
1723: LD_STRING ODef
1725: PPUSH
1726: CALL_OW 337
// SetTech ( tech_AI , 1 , state_enabled ) ;
1730: LD_INT 32
1732: PPUSH
1733: LD_INT 1
1735: PPUSH
1736: LD_INT 1
1738: PPUSH
1739: CALL_OW 322
// SetRestrict ( b_turret , 1 , true ) ;
1743: LD_INT 33
1745: PPUSH
1746: LD_INT 1
1748: PPUSH
1749: LD_INT 1
1751: PPUSH
1752: CALL_OW 324
// SetRestrict ( b_lab_computer , 1 , true ) ;
1756: LD_INT 12
1758: PPUSH
1759: LD_INT 1
1761: PPUSH
1762: LD_INT 1
1764: PPUSH
1765: CALL_OW 324
// DialogueOff ;
1769: CALL_OW 7
// end ;
1773: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_btype , b_turret ] , [ f_ready ] ] ) = 3 do
1774: LD_INT 30
1776: PUSH
1777: LD_INT 33
1779: PUSH
1780: EMPTY
1781: LIST
1782: LIST
1783: PUSH
1784: LD_INT 53
1786: PUSH
1787: EMPTY
1788: LIST
1789: PUSH
1790: EMPTY
1791: LIST
1792: LIST
1793: PPUSH
1794: CALL_OW 69
1798: PUSH
1799: LD_INT 3
1801: EQUAL
1802: IFFALSE 1814
1804: GO 1806
1806: DISABLE
// ChangeMissionObjectives ( OAIOut ) ;
1807: LD_STRING OAIOut
1809: PPUSH
1810: CALL_OW 337
1814: END
// var CarTimer ; every 0 0$1 trigger BuildingTheCars do
1815: LD_EXP 8
1819: IFFALSE 1839
1821: GO 1823
1823: DISABLE
// begin enable ;
1824: ENABLE
// CarTimer = CarTimer + 0 0$1 ;
1825: LD_ADDR_LOC 1
1829: PUSH
1830: LD_LOC 1
1834: PUSH
1835: LD_INT 35
1837: PLUS
1838: ST_TO_ADDR
// end ;
1839: END
// every 0 0$1 trigger FilterAllUnits ( [ f_control , control_remote ] ) = 3 do
1840: LD_INT 33
1842: PUSH
1843: LD_INT 2
1845: PUSH
1846: EMPTY
1847: LIST
1848: LIST
1849: PPUSH
1850: CALL_OW 69
1854: PUSH
1855: LD_INT 3
1857: EQUAL
1858: IFFALSE 1968
1860: GO 1862
1862: DISABLE
// begin BuildingTheCars = false ;
1863: LD_ADDR_EXP 8
1867: PUSH
1868: LD_INT 0
1870: ST_TO_ADDR
// CarTimer = 0 ;
1871: LD_ADDR_LOC 1
1875: PUSH
1876: LD_INT 0
1878: ST_TO_ADDR
// InGameOn ;
1879: CALL_OW 8
// SayRadio ( Hayes , da-h-1 ) ;
1883: LD_EXP 2
1887: PPUSH
1888: LD_STRING da-h-1
1890: PPUSH
1891: CALL_OW 94
// Say ( Alex , da-a-1 ) ;
1895: LD_EXP 1
1899: PPUSH
1900: LD_STRING da-a-1
1902: PPUSH
1903: CALL_OW 88
// SayRadio ( Hayes , da-h-2 ) ;
1907: LD_EXP 2
1911: PPUSH
1912: LD_STRING da-h-2
1914: PPUSH
1915: CALL_OW 94
// SayRadio ( Hayes , da-h-3 ) ;
1919: LD_EXP 2
1923: PPUSH
1924: LD_STRING da-h-3
1926: PPUSH
1927: CALL_OW 94
// Say ( Alex , da-a-2 ) ;
1931: LD_EXP 1
1935: PPUSH
1936: LD_STRING da-a-2
1938: PPUSH
1939: CALL_OW 88
// InGameOff ;
1943: CALL_OW 9
// ChangeMissionObjectives ( OBlock ) ;
1947: LD_STRING OBlock
1949: PPUSH
1950: CALL_OW 337
// enable ( 03 ) ;
1954: LD_INT 3
1956: ENABLE_MARKED
// enable ( 04 ) ;
1957: LD_INT 4
1959: ENABLE_MARKED
// TimeCountdown = 10 10$0 ;
1960: LD_ADDR_EXP 13
1964: PUSH
1965: LD_INT 21000
1967: ST_TO_ADDR
// end ;
1968: END
// every 0 0$1 trigger CarTimer = 20 20$0 do
1969: LD_LOC 1
1973: PUSH
1974: LD_INT 42000
1976: EQUAL
1977: IFFALSE 2033
1979: GO 1981
1981: DISABLE
// begin DialogueOn ;
1982: CALL_OW 6
// SayRadio ( Hayes , dlg-h-1 ) ;
1986: LD_EXP 2
1990: PPUSH
1991: LD_STRING dlg-h-1
1993: PPUSH
1994: CALL_OW 94
// Say ( Alex , dlg-a-1 ) ;
1998: LD_EXP 1
2002: PPUSH
2003: LD_STRING dlg-a-1
2005: PPUSH
2006: CALL_OW 88
// SayRadio ( Hayes , dlg-h-2 ) ;
2010: LD_EXP 2
2014: PPUSH
2015: LD_STRING dlg-h-2
2017: PPUSH
2018: CALL_OW 94
// YouLost ( TooSlow ) ;
2022: LD_STRING TooSlow
2024: PPUSH
2025: CALL_OW 104
// DialogueOff ;
2029: CALL_OW 7
// end ;
2033: END
// every 0 0$1 trigger CarTimer = 8 8$0 do
2034: LD_LOC 1
2038: PUSH
2039: LD_INT 16800
2041: EQUAL
2042: IFFALSE 2123
2044: GO 2046
2046: DISABLE
// begin DialogueOn ;
2047: CALL_OW 6
// Say ( Eddings , ds-e-1 ) ;
2051: LD_EXP 3
2055: PPUSH
2056: LD_STRING ds-e-1
2058: PPUSH
2059: CALL_OW 88
// Say ( Alex , ds-a-1 ) ;
2063: LD_EXP 1
2067: PPUSH
2068: LD_STRING ds-a-1
2070: PPUSH
2071: CALL_OW 88
// Say ( Eddings , ds-e-2 ) ;
2075: LD_EXP 3
2079: PPUSH
2080: LD_STRING ds-e-2
2082: PPUSH
2083: CALL_OW 88
// Say ( Alex , ds-a-2 ) ;
2087: LD_EXP 1
2091: PPUSH
2092: LD_STRING ds-a-2
2094: PPUSH
2095: CALL_OW 88
// DialogueOff ;
2099: CALL_OW 7
// SetTech ( tech_LasSight , 1 , state_enabled ) ;
2103: LD_INT 12
2105: PPUSH
2106: LD_INT 1
2108: PPUSH
2109: LD_INT 1
2111: PPUSH
2112: CALL_OW 322
// ChangeMissionObjectives ( OSniper ) ;
2116: LD_STRING OSniper
2118: PPUSH
2119: CALL_OW 337
// end ;
2123: END
// every 0 0$1 trigger Researched ( 1 , tech_LasSight ) do
2124: LD_INT 1
2126: PPUSH
2127: LD_INT 12
2129: PPUSH
2130: CALL_OW 325
2134: IFFALSE 2146
2136: GO 2138
2138: DISABLE
// ChangeMissionObjectives ( OSniperOut ) ;
2139: LD_STRING OSniperOut
2141: PPUSH
2142: CALL_OW 337
2146: END
// export Rekt , Lag , Losses ; on UnitDestroyed ( un ) do begin if un = Alex then
2147: LD_VAR 0 1
2151: PUSH
2152: LD_EXP 1
2156: EQUAL
2157: IFFALSE 2166
// YouLost ( AlexDead ) ;
2159: LD_STRING AlexDead
2161: PPUSH
2162: CALL_OW 104
// if GetSide ( un ) = 1 and GetType ( un ) = unit_human then
2166: LD_VAR 0 1
2170: PPUSH
2171: CALL_OW 255
2175: PUSH
2176: LD_INT 1
2178: EQUAL
2179: PUSH
2180: LD_VAR 0 1
2184: PPUSH
2185: CALL_OW 247
2189: PUSH
2190: LD_INT 1
2192: EQUAL
2193: AND
2194: IFFALSE 2204
// Losses = true ;
2196: LD_ADDR_EXP 11
2200: PUSH
2201: LD_INT 1
2203: ST_TO_ADDR
// if GetControl ( UnitShoot ( un ) ) = control_remote and not Rekt then
2204: LD_VAR 0 1
2208: PPUSH
2209: CALL_OW 504
2213: PPUSH
2214: CALL_OW 263
2218: PUSH
2219: LD_INT 2
2221: EQUAL
2222: PUSH
2223: LD_EXP 9
2227: NOT
2228: AND
2229: IFFALSE 2261
// begin Say ( IsControledBy ( UnitShoot ( un ) ) , dr-m-2 ) ;
2231: LD_VAR 0 1
2235: PPUSH
2236: CALL_OW 504
2240: PPUSH
2241: CALL_OW 312
2245: PPUSH
2246: LD_STRING dr-m-2
2248: PPUSH
2249: CALL_OW 88
// Rekt = true ;
2253: LD_ADDR_EXP 9
2257: PUSH
2258: LD_INT 1
2260: ST_TO_ADDR
// end ; end ;
2261: PPOPN 1
2263: END
// on UnitGoesToRed ( un ) do begin if GetControl ( un ) = control_remote and not Lag then
2264: LD_VAR 0 1
2268: PPUSH
2269: CALL_OW 263
2273: PUSH
2274: LD_INT 2
2276: EQUAL
2277: PUSH
2278: LD_EXP 10
2282: NOT
2283: AND
2284: IFFALSE 2311
// begin Say ( IsControledBy ( un ) , dr-m-1 ) ;
2286: LD_VAR 0 1
2290: PPUSH
2291: CALL_OW 312
2295: PPUSH
2296: LD_STRING dr-m-1
2298: PPUSH
2299: CALL_OW 88
// Lag = true ;
2303: LD_ADDR_EXP 10
2307: PUSH
2308: LD_INT 1
2310: ST_TO_ADDR
// end ; end ;
2311: PPOPN 1
2313: END
// export Time , TimeCountdown ; every 0 0$1 marked 03 do
2314: GO 2316
2316: DISABLE
// begin enable ;
2317: ENABLE
// Time = Time + 0 0$1 ;
2318: LD_ADDR_EXP 12
2322: PUSH
2323: LD_EXP 12
2327: PUSH
2328: LD_INT 35
2330: PLUS
2331: ST_TO_ADDR
// end ;
2332: END
// every 0 0$1 marked 04 do
2333: GO 2335
2335: DISABLE
// begin enable ;
2336: ENABLE
// TimeCountdown = TimeCountdown - 0 0$1 ;
2337: LD_ADDR_EXP 13
2341: PUSH
2342: LD_EXP 13
2346: PUSH
2347: LD_INT 35
2349: MINUS
2350: ST_TO_ADDR
// display_strings = [ #TimeToArabs , TimeCountdown ] ;
2351: LD_ADDR_OWVAR 47
2355: PUSH
2356: LD_STRING #TimeToArabs
2358: PUSH
2359: LD_EXP 13
2363: PUSH
2364: EMPTY
2365: LIST
2366: LIST
2367: ST_TO_ADDR
// end ;
2368: END
// every 0 0$1 trigger Time = 21 21$30 do var i , b ; var tur , ar_limit ;
2369: LD_EXP 12
2373: PUSH
2374: LD_INT 45150
2376: EQUAL
2377: IFFALSE 3138
2379: GO 2381
2381: DISABLE
2382: LD_INT 0
2384: PPUSH
2385: PPUSH
2386: PPUSH
2387: PPUSH
// begin tur = FilterAllUnits ( [ [ f_btype , b_turret ] , [ f_ready ] ] ) ;
2388: LD_ADDR_VAR 0 3
2392: PUSH
2393: LD_INT 30
2395: PUSH
2396: LD_INT 33
2398: PUSH
2399: EMPTY
2400: LIST
2401: LIST
2402: PUSH
2403: LD_INT 53
2405: PUSH
2406: EMPTY
2407: LIST
2408: PUSH
2409: EMPTY
2410: LIST
2411: LIST
2412: PPUSH
2413: CALL_OW 69
2417: ST_TO_ADDR
// ar_limit = [ 3 , 6 , 8 ] [ difficulty ] ;
2418: LD_ADDR_VAR 0 4
2422: PUSH
2423: LD_INT 3
2425: PUSH
2426: LD_INT 6
2428: PUSH
2429: LD_INT 8
2431: PUSH
2432: EMPTY
2433: LIST
2434: LIST
2435: LIST
2436: PUSH
2437: LD_OWVAR 67
2441: ARRAY
2442: ST_TO_ADDR
// InGameOn ;
2443: CALL_OW 8
// Say ( Alex , de-a-1 ) ;
2447: LD_EXP 1
2451: PPUSH
2452: LD_STRING de-a-1
2454: PPUSH
2455: CALL_OW 88
// SayRadio ( Hayes , de-h-1 ) ;
2459: LD_EXP 2
2463: PPUSH
2464: LD_STRING de-h-1
2466: PPUSH
2467: CALL_OW 94
// Wait ( 0 0$1 ) ;
2471: LD_INT 35
2473: PPUSH
2474: CALL_OW 67
// if tur >= 3 then
2478: LD_VAR 0 3
2482: PUSH
2483: LD_INT 3
2485: GREATEREQUAL
2486: IFFALSE 2500
// AddMedal ( MAuto , 1 ) else
2488: LD_STRING MAuto
2490: PPUSH
2491: LD_INT 1
2493: PPUSH
2494: CALL_OW 101
2498: GO 2511
// AddMedal ( MAuto , - 1 ) ;
2500: LD_STRING MAuto
2502: PPUSH
2503: LD_INT 1
2505: NEG
2506: PPUSH
2507: CALL_OW 101
// if Researched ( 1 , tech_LasSight ) then
2511: LD_INT 1
2513: PPUSH
2514: LD_INT 12
2516: PPUSH
2517: CALL_OW 325
2521: IFFALSE 2535
// AddMedal ( MSniper , 1 ) else
2523: LD_STRING MSniper
2525: PPUSH
2526: LD_INT 1
2528: PPUSH
2529: CALL_OW 101
2533: GO 2546
// AddMedal ( MSniper , - 1 ) ;
2535: LD_STRING MSniper
2537: PPUSH
2538: LD_INT 1
2540: NEG
2541: PPUSH
2542: CALL_OW 101
// if ArabsCaptured >= ar_limit then
2546: LD_EXP 21
2550: PUSH
2551: LD_VAR 0 4
2555: GREATEREQUAL
2556: IFFALSE 2570
// AddMedal ( MGrab , 1 ) else
2558: LD_STRING MGrab
2560: PPUSH
2561: LD_INT 1
2563: PPUSH
2564: CALL_OW 101
2568: GO 2581
// AddMedal ( MGrab , - 1 ) ;
2570: LD_STRING MGrab
2572: PPUSH
2573: LD_INT 1
2575: NEG
2576: PPUSH
2577: CALL_OW 101
// GiveMedals ( Main ) ;
2581: LD_STRING Main
2583: PPUSH
2584: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_nation , nation_american ] ] ) ) ;
2588: LD_INT 22
2590: PUSH
2591: LD_INT 1
2593: PUSH
2594: EMPTY
2595: LIST
2596: LIST
2597: PUSH
2598: LD_INT 21
2600: PUSH
2601: LD_INT 1
2603: PUSH
2604: EMPTY
2605: LIST
2606: LIST
2607: PUSH
2608: LD_INT 23
2610: PUSH
2611: LD_INT 1
2613: PUSH
2614: EMPTY
2615: LIST
2616: LIST
2617: PUSH
2618: EMPTY
2619: LIST
2620: LIST
2621: LIST
2622: PPUSH
2623: CALL_OW 69
2627: PPUSH
2628: CALL_OW 43
// b = FilterUnitsInArea ( MainGamma , [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) ^ FilterUnitsExceptArea ( MainGamma , [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) ;
2632: LD_ADDR_VAR 0 2
2636: PUSH
2637: LD_INT 5
2639: PPUSH
2640: LD_INT 22
2642: PUSH
2643: LD_INT 1
2645: PUSH
2646: EMPTY
2647: LIST
2648: LIST
2649: PUSH
2650: LD_INT 21
2652: PUSH
2653: LD_INT 3
2655: PUSH
2656: EMPTY
2657: LIST
2658: LIST
2659: PUSH
2660: EMPTY
2661: LIST
2662: LIST
2663: PPUSH
2664: CALL_OW 70
2668: PUSH
2669: LD_INT 5
2671: PPUSH
2672: LD_INT 22
2674: PUSH
2675: LD_INT 1
2677: PUSH
2678: EMPTY
2679: LIST
2680: LIST
2681: PUSH
2682: LD_INT 21
2684: PUSH
2685: LD_INT 3
2687: PUSH
2688: EMPTY
2689: LIST
2690: LIST
2691: PUSH
2692: EMPTY
2693: LIST
2694: LIST
2695: PPUSH
2696: CALL_OW 71
2700: ADD
2701: ST_TO_ADDR
// GammaBuildings = [ ] ;
2702: LD_ADDR_EXP 7
2706: PUSH
2707: EMPTY
2708: ST_TO_ADDR
// for i in b do
2709: LD_ADDR_VAR 0 1
2713: PUSH
2714: LD_VAR 0 2
2718: PUSH
2719: FOR_IN
2720: IFFALSE 3027
// case GetBType ( i ) of b_lab , b_lab_half , b_lab_full :
2722: LD_VAR 0 1
2726: PPUSH
2727: CALL_OW 266
2731: PUSH
2732: LD_INT 6
2734: DOUBLE
2735: EQUAL
2736: IFTRUE 2752
2738: LD_INT 7
2740: DOUBLE
2741: EQUAL
2742: IFTRUE 2752
2744: LD_INT 8
2746: DOUBLE
2747: EQUAL
2748: IFTRUE 2752
2750: GO 2854
2752: POP
// GammaBuildings = GammaBuildings ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetBLevel ( i ) , GetLabKind ( i , 1 ) , GetLabKind ( i , 2 ) ] ] ; b_bunker , b_turret :
2753: LD_ADDR_EXP 7
2757: PUSH
2758: LD_EXP 7
2762: PUSH
2763: LD_VAR 0 1
2767: PPUSH
2768: CALL_OW 250
2772: PUSH
2773: LD_VAR 0 1
2777: PPUSH
2778: CALL_OW 251
2782: PUSH
2783: LD_VAR 0 1
2787: PPUSH
2788: CALL_OW 254
2792: PUSH
2793: LD_VAR 0 1
2797: PPUSH
2798: CALL_OW 266
2802: PUSH
2803: LD_VAR 0 1
2807: PPUSH
2808: CALL_OW 267
2812: PUSH
2813: LD_VAR 0 1
2817: PPUSH
2818: LD_INT 1
2820: PPUSH
2821: CALL_OW 268
2825: PUSH
2826: LD_VAR 0 1
2830: PPUSH
2831: LD_INT 2
2833: PPUSH
2834: CALL_OW 268
2838: PUSH
2839: EMPTY
2840: LIST
2841: LIST
2842: LIST
2843: LIST
2844: LIST
2845: LIST
2846: LIST
2847: PUSH
2848: EMPTY
2849: LIST
2850: ADD
2851: ST_TO_ADDR
2852: GO 3025
2854: LD_INT 32
2856: DOUBLE
2857: EQUAL
2858: IFTRUE 2868
2860: LD_INT 33
2862: DOUBLE
2863: EQUAL
2864: IFTRUE 2868
2866: GO 2953
2868: POP
// GammaBuildings = GammaBuildings ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetBLevel ( i ) , GetBWeapon ( i ) ] ] ; else
2869: LD_ADDR_EXP 7
2873: PUSH
2874: LD_EXP 7
2878: PUSH
2879: LD_VAR 0 1
2883: PPUSH
2884: CALL_OW 250
2888: PUSH
2889: LD_VAR 0 1
2893: PPUSH
2894: CALL_OW 251
2898: PUSH
2899: LD_VAR 0 1
2903: PPUSH
2904: CALL_OW 254
2908: PUSH
2909: LD_VAR 0 1
2913: PPUSH
2914: CALL_OW 266
2918: PUSH
2919: LD_VAR 0 1
2923: PPUSH
2924: CALL_OW 267
2928: PUSH
2929: LD_VAR 0 1
2933: PPUSH
2934: CALL_OW 269
2938: PUSH
2939: EMPTY
2940: LIST
2941: LIST
2942: LIST
2943: LIST
2944: LIST
2945: LIST
2946: PUSH
2947: EMPTY
2948: LIST
2949: ADD
2950: ST_TO_ADDR
2951: GO 3025
2953: POP
// GammaBuildings = GammaBuildings ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetBLevel ( i ) ] ] ; end ;
2954: LD_ADDR_EXP 7
2958: PUSH
2959: LD_EXP 7
2963: PUSH
2964: LD_VAR 0 1
2968: PPUSH
2969: CALL_OW 250
2973: PUSH
2974: LD_VAR 0 1
2978: PPUSH
2979: CALL_OW 251
2983: PUSH
2984: LD_VAR 0 1
2988: PPUSH
2989: CALL_OW 254
2993: PUSH
2994: LD_VAR 0 1
2998: PPUSH
2999: CALL_OW 266
3003: PUSH
3004: LD_VAR 0 1
3008: PPUSH
3009: CALL_OW 267
3013: PUSH
3014: EMPTY
3015: LIST
3016: LIST
3017: LIST
3018: LIST
3019: LIST
3020: PUSH
3021: EMPTY
3022: LIST
3023: ADD
3024: ST_TO_ADDR
3025: GO 2719
3027: POP
3028: POP
// SaveVariable ( GammaBuildings , GammaBuildings ) ;
3029: LD_EXP 7
3033: PPUSH
3034: LD_STRING GammaBuildings
3036: PPUSH
3037: CALL_OW 39
// SaveVariable ( ArabsCaptured , ArabEquipmentCaptured ) ;
3041: LD_EXP 21
3045: PPUSH
3046: LD_STRING ArabEquipmentCaptured
3048: PPUSH
3049: CALL_OW 39
// SaveCharacters ( Alex , Alex ) ;
3053: LD_EXP 1
3057: PPUSH
3058: LD_STRING Alex
3060: PPUSH
3061: CALL_OW 38
// if Eddings then
3065: LD_EXP 3
3069: IFFALSE 3083
// SaveCharacters ( Eddings , Eddings ) ;
3071: LD_EXP 3
3075: PPUSH
3076: LD_STRING Eddings
3078: PPUSH
3079: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) diff [ Alex , Eddings ] , TeamGamma ) ;
3083: LD_INT 22
3085: PUSH
3086: LD_INT 1
3088: PUSH
3089: EMPTY
3090: LIST
3091: LIST
3092: PUSH
3093: LD_INT 21
3095: PUSH
3096: LD_INT 1
3098: PUSH
3099: EMPTY
3100: LIST
3101: LIST
3102: PUSH
3103: EMPTY
3104: LIST
3105: LIST
3106: PPUSH
3107: CALL_OW 69
3111: PUSH
3112: LD_EXP 1
3116: PUSH
3117: LD_EXP 3
3121: PUSH
3122: EMPTY
3123: LIST
3124: LIST
3125: DIFF
3126: PPUSH
3127: LD_STRING TeamGamma
3129: PPUSH
3130: CALL_OW 38
// YouWin ;
3134: CALL_OW 103
// end ; end_of_file
3138: PPOPN 4
3140: END
// export ArabsPassed ; every 0 0$1 trigger FilterUnitsInArea ( ArabExit , [ [ f_side , 2 ] , [ f_ok ] ] ) do var u , i ;
3141: LD_INT 4
3143: PPUSH
3144: LD_INT 22
3146: PUSH
3147: LD_INT 2
3149: PUSH
3150: EMPTY
3151: LIST
3152: LIST
3153: PUSH
3154: LD_INT 50
3156: PUSH
3157: EMPTY
3158: LIST
3159: PUSH
3160: EMPTY
3161: LIST
3162: LIST
3163: PPUSH
3164: CALL_OW 70
3168: IFFALSE 3251
3170: GO 3172
3172: DISABLE
3173: LD_INT 0
3175: PPUSH
3176: PPUSH
// begin enable ;
3177: ENABLE
// u = FilterUnitsInArea ( ArabExit , [ [ f_side , 2 ] , [ f_ok ] ] ) ;
3178: LD_ADDR_VAR 0 1
3182: PUSH
3183: LD_INT 4
3185: PPUSH
3186: LD_INT 22
3188: PUSH
3189: LD_INT 2
3191: PUSH
3192: EMPTY
3193: LIST
3194: LIST
3195: PUSH
3196: LD_INT 50
3198: PUSH
3199: EMPTY
3200: LIST
3201: PUSH
3202: EMPTY
3203: LIST
3204: LIST
3205: PPUSH
3206: CALL_OW 70
3210: ST_TO_ADDR
// for i in u do
3211: LD_ADDR_VAR 0 2
3215: PUSH
3216: LD_VAR 0 1
3220: PUSH
3221: FOR_IN
3222: IFFALSE 3249
// begin RemoveUnit ( i ) ;
3224: LD_VAR 0 2
3228: PPUSH
3229: CALL_OW 64
// ArabsPassed = ArabsPassed + 1 ;
3233: LD_ADDR_EXP 14
3237: PUSH
3238: LD_EXP 14
3242: PUSH
3243: LD_INT 1
3245: PLUS
3246: ST_TO_ADDR
// end ;
3247: GO 3221
3249: POP
3250: POP
// end ;
3251: PPOPN 2
3253: END
// every 0 0$1 trigger ArabsPassed = 6 do
3254: LD_EXP 14
3258: PUSH
3259: LD_INT 6
3261: EQUAL
3262: IFFALSE 3318
3264: GO 3266
3266: DISABLE
// begin DialogueOn ;
3267: CALL_OW 6
// SayRadio ( Hayes , dp-h-1 ) ;
3271: LD_EXP 2
3275: PPUSH
3276: LD_STRING dp-h-1
3278: PPUSH
3279: CALL_OW 94
// Say ( Alex , dp-a-1 ) ;
3283: LD_EXP 1
3287: PPUSH
3288: LD_STRING dp-a-1
3290: PPUSH
3291: CALL_OW 88
// SayRadio ( Hayes , dp-h-2 ) ;
3295: LD_EXP 2
3299: PPUSH
3300: LD_STRING dp-h-2
3302: PPUSH
3303: CALL_OW 94
// DialogueOff ;
3307: CALL_OW 7
// YouLost ( ArabPassed ) ;
3311: LD_STRING ArabPassed
3313: PPUSH
3314: CALL_OW 104
// end ;
3318: END
// export MortarSquad ; function PrepareMortarSquad ; var i ; begin
3319: LD_INT 0
3321: PPUSH
3322: PPUSH
// uc_side = 2 ;
3323: LD_ADDR_OWVAR 20
3327: PUSH
3328: LD_INT 2
3330: ST_TO_ADDR
// uc_nation = 2 ;
3331: LD_ADDR_OWVAR 21
3335: PUSH
3336: LD_INT 2
3338: ST_TO_ADDR
// InitHc ;
3339: CALL_OW 19
// for i = 1 to [ 0 , 2 , 3 ] [ difficulty ] do
3343: LD_ADDR_VAR 0 2
3347: PUSH
3348: DOUBLE
3349: LD_INT 1
3351: DEC
3352: ST_TO_ADDR
3353: LD_INT 0
3355: PUSH
3356: LD_INT 2
3358: PUSH
3359: LD_INT 3
3361: PUSH
3362: EMPTY
3363: LIST
3364: LIST
3365: LIST
3366: PUSH
3367: LD_OWVAR 67
3371: ARRAY
3372: PUSH
3373: FOR_TO
3374: IFFALSE 3415
// begin PrepareHuman ( false , class_mortar , Rand ( 3 , 5 ) ) ;
3376: LD_INT 0
3378: PPUSH
3379: LD_INT 8
3381: PPUSH
3382: LD_INT 3
3384: PPUSH
3385: LD_INT 5
3387: PPUSH
3388: CALL_OW 12
3392: PPUSH
3393: CALL_OW 380
// MortarSquad = MortarSquad ^ CreateHuman ;
3397: LD_ADDR_EXP 15
3401: PUSH
3402: LD_EXP 15
3406: PUSH
3407: CALL_OW 44
3411: ADD
3412: ST_TO_ADDR
// end ;
3413: GO 3373
3415: POP
3416: POP
// vc_chassis = ar_half_tracked ;
3417: LD_ADDR_OWVAR 37
3421: PUSH
3422: LD_INT 14
3424: ST_TO_ADDR
// vc_weapon = ar_radar ;
3425: LD_ADDR_OWVAR 40
3429: PUSH
3430: LD_INT 30
3432: ST_TO_ADDR
// vc_engine = engine_solar ;
3433: LD_ADDR_OWVAR 39
3437: PUSH
3438: LD_INT 2
3440: ST_TO_ADDR
// vc_control = control_manual ;
3441: LD_ADDR_OWVAR 38
3445: PUSH
3446: LD_INT 1
3448: ST_TO_ADDR
// MortarSquad = MortarSquad ^ CreateVehicle ;
3449: LD_ADDR_EXP 15
3453: PUSH
3454: LD_EXP 15
3458: PUSH
3459: CALL_OW 45
3463: ADD
3464: ST_TO_ADDR
// for i in MortarSquad do
3465: LD_ADDR_VAR 0 2
3469: PUSH
3470: LD_EXP 15
3474: PUSH
3475: FOR_IN
3476: IFFALSE 3542
// begin PlaceUnitArea ( i , ArabEnter , false ) ;
3478: LD_VAR 0 2
3482: PPUSH
3483: LD_INT 3
3485: PPUSH
3486: LD_INT 0
3488: PPUSH
3489: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
3493: LD_VAR 0 2
3497: PPUSH
3498: CALL_OW 247
3502: PUSH
3503: LD_INT 2
3505: EQUAL
3506: IFFALSE 3540
// begin PrepareMechanic ( Rand ( 1 , 2 ) , 3 ) ;
3508: LD_INT 1
3510: PPUSH
3511: LD_INT 2
3513: PPUSH
3514: CALL_OW 12
3518: PPUSH
3519: LD_INT 3
3521: PPUSH
3522: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
3526: CALL_OW 44
3530: PPUSH
3531: LD_VAR 0 2
3535: PPUSH
3536: CALL_OW 52
// end ; end ;
3540: GO 3475
3542: POP
3543: POP
// end ;
3544: LD_VAR 0 1
3548: RET
// every 0 0$1 trigger MortarSquad do var i , u , targets , checkpoints ;
3549: LD_EXP 15
3553: IFFALSE 3855
3555: GO 3557
3557: DISABLE
3558: LD_INT 0
3560: PPUSH
3561: PPUSH
3562: PPUSH
3563: PPUSH
// begin enable ;
3564: ENABLE
// targets = FilterUnitsInArea ( MortarTargets , [ [ f_side , 1 ] , [ f_see , 2 ] ] ) ;
3565: LD_ADDR_VAR 0 3
3569: PUSH
3570: LD_INT 7
3572: PPUSH
3573: LD_INT 22
3575: PUSH
3576: LD_INT 1
3578: PUSH
3579: EMPTY
3580: LIST
3581: LIST
3582: PUSH
3583: LD_INT 101
3585: PUSH
3586: LD_INT 2
3588: PUSH
3589: EMPTY
3590: LIST
3591: LIST
3592: PUSH
3593: EMPTY
3594: LIST
3595: LIST
3596: PPUSH
3597: CALL_OW 70
3601: ST_TO_ADDR
// checkpoints = [ [ 95 , 29 ] , [ 96 , 9 ] , [ 115 , 9 ] ] ;
3602: LD_ADDR_VAR 0 4
3606: PUSH
3607: LD_INT 95
3609: PUSH
3610: LD_INT 29
3612: PUSH
3613: EMPTY
3614: LIST
3615: LIST
3616: PUSH
3617: LD_INT 96
3619: PUSH
3620: LD_INT 9
3622: PUSH
3623: EMPTY
3624: LIST
3625: LIST
3626: PUSH
3627: LD_INT 115
3629: PUSH
3630: LD_INT 9
3632: PUSH
3633: EMPTY
3634: LIST
3635: LIST
3636: PUSH
3637: EMPTY
3638: LIST
3639: LIST
3640: LIST
3641: ST_TO_ADDR
// if targets then
3642: LD_VAR 0 3
3646: IFFALSE 3729
// for u in UnitFilter ( MortarSquad , [ f_class , class_mortar ] ) do
3648: LD_ADDR_VAR 0 2
3652: PUSH
3653: LD_EXP 15
3657: PPUSH
3658: LD_INT 25
3660: PUSH
3661: LD_INT 8
3663: PUSH
3664: EMPTY
3665: LIST
3666: LIST
3667: PPUSH
3668: CALL_OW 72
3672: PUSH
3673: FOR_IN
3674: IFFALSE 3727
// ComAttackPlace ( u , GetX ( NearestUnitToUnit ( targets , u ) ) , GetY ( NearestUnitToUnit ( targets , u ) ) ) ;
3676: LD_VAR 0 2
3680: PPUSH
3681: LD_VAR 0 3
3685: PPUSH
3686: LD_VAR 0 2
3690: PPUSH
3691: CALL_OW 74
3695: PPUSH
3696: CALL_OW 250
3700: PPUSH
3701: LD_VAR 0 3
3705: PPUSH
3706: LD_VAR 0 2
3710: PPUSH
3711: CALL_OW 74
3715: PPUSH
3716: CALL_OW 251
3720: PPUSH
3721: CALL_OW 116
3725: GO 3673
3727: POP
3728: POP
// if not targets then
3729: LD_VAR 0 3
3733: NOT
3734: IFFALSE 3855
// begin i = i + 1 ;
3736: LD_ADDR_VAR 0 1
3740: PUSH
3741: LD_VAR 0 1
3745: PUSH
3746: LD_INT 1
3748: PLUS
3749: ST_TO_ADDR
// ComMoveXY ( MortarSquad , checkpoints [ i ] [ 1 ] , checkpoints [ i ] [ 2 ] ) ;
3750: LD_EXP 15
3754: PPUSH
3755: LD_VAR 0 4
3759: PUSH
3760: LD_VAR 0 1
3764: ARRAY
3765: PUSH
3766: LD_INT 1
3768: ARRAY
3769: PPUSH
3770: LD_VAR 0 4
3774: PUSH
3775: LD_VAR 0 1
3779: ARRAY
3780: PUSH
3781: LD_INT 2
3783: ARRAY
3784: PPUSH
3785: CALL_OW 111
// repeat begin Wait ( 0 0$1 ) ;
3789: LD_INT 35
3791: PPUSH
3792: CALL_OW 67
// targets = FilterUnitsInArea ( MortarTargets , [ [ f_side , 1 ] , [ f_see , 2 ] ] ) ;
3796: LD_ADDR_VAR 0 3
3800: PUSH
3801: LD_INT 7
3803: PPUSH
3804: LD_INT 22
3806: PUSH
3807: LD_INT 1
3809: PUSH
3810: EMPTY
3811: LIST
3812: LIST
3813: PUSH
3814: LD_INT 101
3816: PUSH
3817: LD_INT 2
3819: PUSH
3820: EMPTY
3821: LIST
3822: LIST
3823: PUSH
3824: EMPTY
3825: LIST
3826: LIST
3827: PPUSH
3828: CALL_OW 70
3832: ST_TO_ADDR
// end until targets or not HasTask ( MortarSquad [ 1 ] ) ;
3833: LD_VAR 0 3
3837: PUSH
3838: LD_EXP 15
3842: PUSH
3843: LD_INT 1
3845: ARRAY
3846: PPUSH
3847: CALL_OW 314
3851: NOT
3852: OR
3853: IFFALSE 3789
// end ; end ;
3855: PPOPN 4
3857: END
// export MainAttackers , MainAttack ; function PrepareMainAttack ; var i , path ; begin
3858: LD_INT 0
3860: PPUSH
3861: PPUSH
3862: PPUSH
// uc_side = 2 ;
3863: LD_ADDR_OWVAR 20
3867: PUSH
3868: LD_INT 2
3870: ST_TO_ADDR
// uc_nation = 2 ;
3871: LD_ADDR_OWVAR 21
3875: PUSH
3876: LD_INT 2
3878: ST_TO_ADDR
// InitHc ;
3879: CALL_OW 19
// for i = 1 to 3 do
3883: LD_ADDR_VAR 0 2
3887: PUSH
3888: DOUBLE
3889: LD_INT 1
3891: DEC
3892: ST_TO_ADDR
3893: LD_INT 3
3895: PUSH
3896: FOR_TO
3897: IFFALSE 3938
// begin PrepareHuman ( false , class_soldier , Rand ( 3 , 5 ) ) ;
3899: LD_INT 0
3901: PPUSH
3902: LD_INT 1
3904: PPUSH
3905: LD_INT 3
3907: PPUSH
3908: LD_INT 5
3910: PPUSH
3911: CALL_OW 12
3915: PPUSH
3916: CALL_OW 380
// MainAttackers = MainAttackers ^ CreateHuman ;
3920: LD_ADDR_EXP 16
3924: PUSH
3925: LD_EXP 16
3929: PUSH
3930: CALL_OW 44
3934: ADD
3935: ST_TO_ADDR
// end ;
3936: GO 3896
3938: POP
3939: POP
// vc_chassis = ar_half_tracked ;
3940: LD_ADDR_OWVAR 37
3944: PUSH
3945: LD_INT 14
3947: ST_TO_ADDR
// vc_engine = engine_combustion ;
3948: LD_ADDR_OWVAR 39
3952: PUSH
3953: LD_INT 1
3955: ST_TO_ADDR
// vc_control = control_manual ;
3956: LD_ADDR_OWVAR 38
3960: PUSH
3961: LD_INT 1
3963: ST_TO_ADDR
// for i = 1 to 2 do
3964: LD_ADDR_VAR 0 2
3968: PUSH
3969: DOUBLE
3970: LD_INT 1
3972: DEC
3973: ST_TO_ADDR
3974: LD_INT 2
3976: PUSH
3977: FOR_TO
3978: IFFALSE 4025
// begin vc_weapon = [ ar_gun , ar_flame_thrower ] [ Rand ( 1 , 2 ) ] ;
3980: LD_ADDR_OWVAR 40
3984: PUSH
3985: LD_INT 27
3987: PUSH
3988: LD_INT 26
3990: PUSH
3991: EMPTY
3992: LIST
3993: LIST
3994: PUSH
3995: LD_INT 1
3997: PPUSH
3998: LD_INT 2
4000: PPUSH
4001: CALL_OW 12
4005: ARRAY
4006: ST_TO_ADDR
// MainAttackers = MainAttackers ^ CreateVehicle ;
4007: LD_ADDR_EXP 16
4011: PUSH
4012: LD_EXP 16
4016: PUSH
4017: CALL_OW 45
4021: ADD
4022: ST_TO_ADDR
// end ;
4023: GO 3977
4025: POP
4026: POP
// for i in MainAttackers do
4027: LD_ADDR_VAR 0 2
4031: PUSH
4032: LD_EXP 16
4036: PUSH
4037: FOR_IN
4038: IFFALSE 4145
// begin PlaceUnitArea ( i , ArabEnter , false ) ;
4040: LD_VAR 0 2
4044: PPUSH
4045: LD_INT 3
4047: PPUSH
4048: LD_INT 0
4050: PPUSH
4051: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
4055: LD_VAR 0 2
4059: PPUSH
4060: CALL_OW 247
4064: PUSH
4065: LD_INT 2
4067: EQUAL
4068: IFFALSE 4143
// begin PrepareMechanic ( Rand ( 1 , 2 ) , [ Rand ( 3 , 4 ) , Rand ( 4 , 5 ) , Rand ( 4 , 6 ) ] [ difficulty ] ) ;
4070: LD_INT 1
4072: PPUSH
4073: LD_INT 2
4075: PPUSH
4076: CALL_OW 12
4080: PPUSH
4081: LD_INT 3
4083: PPUSH
4084: LD_INT 4
4086: PPUSH
4087: CALL_OW 12
4091: PUSH
4092: LD_INT 4
4094: PPUSH
4095: LD_INT 5
4097: PPUSH
4098: CALL_OW 12
4102: PUSH
4103: LD_INT 4
4105: PPUSH
4106: LD_INT 6
4108: PPUSH
4109: CALL_OW 12
4113: PUSH
4114: EMPTY
4115: LIST
4116: LIST
4117: LIST
4118: PUSH
4119: LD_OWVAR 67
4123: ARRAY
4124: PPUSH
4125: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
4129: CALL_OW 44
4133: PPUSH
4134: LD_VAR 0 2
4138: PPUSH
4139: CALL_OW 52
// end ; end ;
4143: GO 4037
4145: POP
4146: POP
// path = [ [ 80 , 40 ] , [ 105 , 54 ] , [ 125 , 64 ] , [ 139 , 50 ] , [ 135 , 17 ] ] ;
4147: LD_ADDR_VAR 0 3
4151: PUSH
4152: LD_INT 80
4154: PUSH
4155: LD_INT 40
4157: PUSH
4158: EMPTY
4159: LIST
4160: LIST
4161: PUSH
4162: LD_INT 105
4164: PUSH
4165: LD_INT 54
4167: PUSH
4168: EMPTY
4169: LIST
4170: LIST
4171: PUSH
4172: LD_INT 125
4174: PUSH
4175: LD_INT 64
4177: PUSH
4178: EMPTY
4179: LIST
4180: LIST
4181: PUSH
4182: LD_INT 139
4184: PUSH
4185: LD_INT 50
4187: PUSH
4188: EMPTY
4189: LIST
4190: LIST
4191: PUSH
4192: LD_INT 135
4194: PUSH
4195: LD_INT 17
4197: PUSH
4198: EMPTY
4199: LIST
4200: LIST
4201: PUSH
4202: EMPTY
4203: LIST
4204: LIST
4205: LIST
4206: LIST
4207: LIST
4208: ST_TO_ADDR
// MainAttack = McMove ( 1 , MainAttackers , path , [ [ mc_move_agressive ] , [ mc_move_wait , 6 ] ] ) ;
4209: LD_ADDR_EXP 17
4213: PUSH
4214: LD_INT 1
4216: PPUSH
4217: LD_EXP 16
4221: PPUSH
4222: LD_VAR 0 3
4226: PPUSH
4227: LD_INT 6
4229: PUSH
4230: EMPTY
4231: LIST
4232: PUSH
4233: LD_INT 1
4235: PUSH
4236: LD_INT 6
4238: PUSH
4239: EMPTY
4240: LIST
4241: LIST
4242: PUSH
4243: EMPTY
4244: LIST
4245: LIST
4246: PPUSH
4247: CALL_OW 398
4251: ST_TO_ADDR
// end ;
4252: LD_VAR 0 1
4256: RET
// function MineTarget ( u ) ; begin
4257: LD_INT 0
4259: PPUSH
// result = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_building ] , [ f_dist , u , 15 ] ] ) , u ) ;
4260: LD_ADDR_VAR 0 2
4264: PUSH
4265: LD_INT 22
4267: PUSH
4268: LD_INT 1
4270: PUSH
4271: EMPTY
4272: LIST
4273: LIST
4274: PUSH
4275: LD_INT 21
4277: PUSH
4278: LD_INT 3
4280: PUSH
4281: EMPTY
4282: LIST
4283: LIST
4284: PUSH
4285: LD_INT 91
4287: PUSH
4288: LD_VAR 0 1
4292: PUSH
4293: LD_INT 15
4295: PUSH
4296: EMPTY
4297: LIST
4298: LIST
4299: LIST
4300: PUSH
4301: EMPTY
4302: LIST
4303: LIST
4304: LIST
4305: PPUSH
4306: CALL_OW 69
4310: PPUSH
4311: LD_VAR 0 1
4315: PPUSH
4316: CALL_OW 74
4320: ST_TO_ADDR
// end ;
4321: LD_VAR 0 2
4325: RET
// every 0 0$1 trigger MainAttackers do var i , u ;
4326: LD_EXP 16
4330: IFFALSE 4424
4332: GO 4334
4334: DISABLE
4335: LD_INT 0
4337: PPUSH
4338: PPUSH
// begin for u in UnitFilter ( MainAttackers , [ f_class , class_soldier ] ) do
4339: LD_ADDR_VAR 0 2
4343: PUSH
4344: LD_EXP 16
4348: PPUSH
4349: LD_INT 25
4351: PUSH
4352: LD_INT 1
4354: PUSH
4355: EMPTY
4356: LIST
4357: LIST
4358: PPUSH
4359: CALL_OW 72
4363: PUSH
4364: FOR_IN
4365: IFFALSE 4422
// if MineTarget ( u ) then
4367: LD_VAR 0 2
4371: PPUSH
4372: CALL 4257 0 1
4376: IFFALSE 4420
// ComPlaceDelayedCharge ( u , GetX ( MineTarget ( u ) ) , GetY ( MineTarget ( u ) ) , 0 ) ;
4378: LD_VAR 0 2
4382: PPUSH
4383: LD_VAR 0 2
4387: PPUSH
4388: CALL 4257 0 1
4392: PPUSH
4393: CALL_OW 250
4397: PPUSH
4398: LD_VAR 0 2
4402: PPUSH
4403: CALL 4257 0 1
4407: PPUSH
4408: CALL_OW 251
4412: PPUSH
4413: LD_INT 0
4415: PPUSH
4416: CALL_OW 132
4420: GO 4364
4422: POP
4423: POP
// end ;
4424: PPOPN 2
4426: END
// export SideAttackers , SideAttack ; function PrepareSideAttack ; var i , path ; begin
4427: LD_INT 0
4429: PPUSH
4430: PPUSH
4431: PPUSH
// uc_side = 2 ;
4432: LD_ADDR_OWVAR 20
4436: PUSH
4437: LD_INT 2
4439: ST_TO_ADDR
// uc_nation = 2 ;
4440: LD_ADDR_OWVAR 21
4444: PUSH
4445: LD_INT 2
4447: ST_TO_ADDR
// vc_chassis = [ ar_half_tracked , ar_medium_trike ] [ Rand ( 1 , 2 ) ] ;
4448: LD_ADDR_OWVAR 37
4452: PUSH
4453: LD_INT 14
4455: PUSH
4456: LD_INT 13
4458: PUSH
4459: EMPTY
4460: LIST
4461: LIST
4462: PUSH
4463: LD_INT 1
4465: PPUSH
4466: LD_INT 2
4468: PPUSH
4469: CALL_OW 12
4473: ARRAY
4474: ST_TO_ADDR
// vc_engine = engine_combustion ;
4475: LD_ADDR_OWVAR 39
4479: PUSH
4480: LD_INT 1
4482: ST_TO_ADDR
// vc_control = control_manual ;
4483: LD_ADDR_OWVAR 38
4487: PUSH
4488: LD_INT 1
4490: ST_TO_ADDR
// for i = 1 to 2 do
4491: LD_ADDR_VAR 0 2
4495: PUSH
4496: DOUBLE
4497: LD_INT 1
4499: DEC
4500: ST_TO_ADDR
4501: LD_INT 2
4503: PUSH
4504: FOR_TO
4505: IFFALSE 4552
// begin vc_weapon = [ ar_gun , ar_flame_thrower ] [ Rand ( 1 , 2 ) ] ;
4507: LD_ADDR_OWVAR 40
4511: PUSH
4512: LD_INT 27
4514: PUSH
4515: LD_INT 26
4517: PUSH
4518: EMPTY
4519: LIST
4520: LIST
4521: PUSH
4522: LD_INT 1
4524: PPUSH
4525: LD_INT 2
4527: PPUSH
4528: CALL_OW 12
4532: ARRAY
4533: ST_TO_ADDR
// SideAttackers = SideAttackers ^ CreateVehicle ;
4534: LD_ADDR_EXP 18
4538: PUSH
4539: LD_EXP 18
4543: PUSH
4544: CALL_OW 45
4548: ADD
4549: ST_TO_ADDR
// end ;
4550: GO 4504
4552: POP
4553: POP
// for i in MainAttackers do
4554: LD_ADDR_VAR 0 2
4558: PUSH
4559: LD_EXP 16
4563: PUSH
4564: FOR_IN
4565: IFFALSE 4657
// begin PlaceUnitArea ( i , ArabEnter , false ) ;
4567: LD_VAR 0 2
4571: PPUSH
4572: LD_INT 3
4574: PPUSH
4575: LD_INT 0
4577: PPUSH
4578: CALL_OW 49
// PrepareMechanic ( Rand ( 1 , 2 ) , [ Rand ( 3 , 4 ) , Rand ( 4 , 5 ) , Rand ( 4 , 6 ) ] [ difficulty ] ) ;
4582: LD_INT 1
4584: PPUSH
4585: LD_INT 2
4587: PPUSH
4588: CALL_OW 12
4592: PPUSH
4593: LD_INT 3
4595: PPUSH
4596: LD_INT 4
4598: PPUSH
4599: CALL_OW 12
4603: PUSH
4604: LD_INT 4
4606: PPUSH
4607: LD_INT 5
4609: PPUSH
4610: CALL_OW 12
4614: PUSH
4615: LD_INT 4
4617: PPUSH
4618: LD_INT 6
4620: PPUSH
4621: CALL_OW 12
4625: PUSH
4626: EMPTY
4627: LIST
4628: LIST
4629: LIST
4630: PUSH
4631: LD_OWVAR 67
4635: ARRAY
4636: PPUSH
4637: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
4641: CALL_OW 44
4645: PPUSH
4646: LD_VAR 0 2
4650: PPUSH
4651: CALL_OW 52
// end ;
4655: GO 4564
4657: POP
4658: POP
// path = [ [ 75 , 36 ] , [ 80 , 56 ] , [ 77 , 77 ] , [ 69 , 93 ] , [ 66 , 116 ] ] ;
4659: LD_ADDR_VAR 0 3
4663: PUSH
4664: LD_INT 75
4666: PUSH
4667: LD_INT 36
4669: PUSH
4670: EMPTY
4671: LIST
4672: LIST
4673: PUSH
4674: LD_INT 80
4676: PUSH
4677: LD_INT 56
4679: PUSH
4680: EMPTY
4681: LIST
4682: LIST
4683: PUSH
4684: LD_INT 77
4686: PUSH
4687: LD_INT 77
4689: PUSH
4690: EMPTY
4691: LIST
4692: LIST
4693: PUSH
4694: LD_INT 69
4696: PUSH
4697: LD_INT 93
4699: PUSH
4700: EMPTY
4701: LIST
4702: LIST
4703: PUSH
4704: LD_INT 66
4706: PUSH
4707: LD_INT 116
4709: PUSH
4710: EMPTY
4711: LIST
4712: LIST
4713: PUSH
4714: EMPTY
4715: LIST
4716: LIST
4717: LIST
4718: LIST
4719: LIST
4720: ST_TO_ADDR
// SideAttack = McMove ( 1 , SideAttackers , path , [ [ mc_move_agressive ] , [ mc_move_wait , 6 ] ] ) ;
4721: LD_ADDR_EXP 19
4725: PUSH
4726: LD_INT 1
4728: PPUSH
4729: LD_EXP 18
4733: PPUSH
4734: LD_VAR 0 3
4738: PPUSH
4739: LD_INT 6
4741: PUSH
4742: EMPTY
4743: LIST
4744: PUSH
4745: LD_INT 1
4747: PUSH
4748: LD_INT 6
4750: PUSH
4751: EMPTY
4752: LIST
4753: LIST
4754: PUSH
4755: EMPTY
4756: LIST
4757: LIST
4758: PPUSH
4759: CALL_OW 398
4763: ST_TO_ADDR
// end ;
4764: LD_VAR 0 1
4768: RET
// export MainConvoy ; function PrepareMainConvoy ; var a , i , path ; begin
4769: LD_INT 0
4771: PPUSH
4772: PPUSH
4773: PPUSH
4774: PPUSH
// uc_side = 2 ;
4775: LD_ADDR_OWVAR 20
4779: PUSH
4780: LD_INT 2
4782: ST_TO_ADDR
// uc_nation = 2 ;
4783: LD_ADDR_OWVAR 21
4787: PUSH
4788: LD_INT 2
4790: ST_TO_ADDR
// path = [ [ 79 , 37 ] , [ 87 , 63 ] , [ 92 , 85 ] , [ 88 , 103 ] , [ 80 , 116 ] ] ;
4791: LD_ADDR_VAR 0 4
4795: PUSH
4796: LD_INT 79
4798: PUSH
4799: LD_INT 37
4801: PUSH
4802: EMPTY
4803: LIST
4804: LIST
4805: PUSH
4806: LD_INT 87
4808: PUSH
4809: LD_INT 63
4811: PUSH
4812: EMPTY
4813: LIST
4814: LIST
4815: PUSH
4816: LD_INT 92
4818: PUSH
4819: LD_INT 85
4821: PUSH
4822: EMPTY
4823: LIST
4824: LIST
4825: PUSH
4826: LD_INT 88
4828: PUSH
4829: LD_INT 103
4831: PUSH
4832: EMPTY
4833: LIST
4834: LIST
4835: PUSH
4836: LD_INT 80
4838: PUSH
4839: LD_INT 116
4841: PUSH
4842: EMPTY
4843: LIST
4844: LIST
4845: PUSH
4846: EMPTY
4847: LIST
4848: LIST
4849: LIST
4850: LIST
4851: LIST
4852: ST_TO_ADDR
// vc_chassis = [ ar_half_tracked , ar_medium_trike ] [ Rand ( 1 , 2 ) ] ;
4853: LD_ADDR_OWVAR 37
4857: PUSH
4858: LD_INT 14
4860: PUSH
4861: LD_INT 13
4863: PUSH
4864: EMPTY
4865: LIST
4866: LIST
4867: PUSH
4868: LD_INT 1
4870: PPUSH
4871: LD_INT 2
4873: PPUSH
4874: CALL_OW 12
4878: ARRAY
4879: ST_TO_ADDR
// vc_engine = engine_combustion ;
4880: LD_ADDR_OWVAR 39
4884: PUSH
4885: LD_INT 1
4887: ST_TO_ADDR
// vc_control = control_manual ;
4888: LD_ADDR_OWVAR 38
4892: PUSH
4893: LD_INT 1
4895: ST_TO_ADDR
// for i = 1 to [ 4 , 5 , 6 ] [ difficulty ] do
4896: LD_ADDR_VAR 0 3
4900: PUSH
4901: DOUBLE
4902: LD_INT 1
4904: DEC
4905: ST_TO_ADDR
4906: LD_INT 4
4908: PUSH
4909: LD_INT 5
4911: PUSH
4912: LD_INT 6
4914: PUSH
4915: EMPTY
4916: LIST
4917: LIST
4918: LIST
4919: PUSH
4920: LD_OWVAR 67
4924: ARRAY
4925: PUSH
4926: FOR_TO
4927: IFFALSE 5038
// begin case i of 1 , 4 , 5 , 6 :
4929: LD_VAR 0 3
4933: PUSH
4934: LD_INT 1
4936: DOUBLE
4937: EQUAL
4938: IFTRUE 4960
4940: LD_INT 4
4942: DOUBLE
4943: EQUAL
4944: IFTRUE 4960
4946: LD_INT 5
4948: DOUBLE
4949: EQUAL
4950: IFTRUE 4960
4952: LD_INT 6
4954: DOUBLE
4955: EQUAL
4956: IFTRUE 4960
4958: GO 4994
4960: POP
// vc_weapon = [ ar_gun , ar_flame_thrower , ar_light_gun ] [ Rand ( 1 , 3 ) ] ; 2 , 3 :
4961: LD_ADDR_OWVAR 40
4965: PUSH
4966: LD_INT 27
4968: PUSH
4969: LD_INT 26
4971: PUSH
4972: LD_INT 23
4974: PUSH
4975: EMPTY
4976: LIST
4977: LIST
4978: LIST
4979: PUSH
4980: LD_INT 1
4982: PPUSH
4983: LD_INT 3
4985: PPUSH
4986: CALL_OW 12
4990: ARRAY
4991: ST_TO_ADDR
4992: GO 5020
4994: LD_INT 2
4996: DOUBLE
4997: EQUAL
4998: IFTRUE 5008
5000: LD_INT 3
5002: DOUBLE
5003: EQUAL
5004: IFTRUE 5008
5006: GO 5019
5008: POP
// vc_weapon = ar_cargo_bay ; end ;
5009: LD_ADDR_OWVAR 40
5013: PUSH
5014: LD_INT 32
5016: ST_TO_ADDR
5017: GO 5020
5019: POP
// a = a ^ CreateVehicle ;
5020: LD_ADDR_VAR 0 2
5024: PUSH
5025: LD_VAR 0 2
5029: PUSH
5030: CALL_OW 45
5034: ADD
5035: ST_TO_ADDR
// end ;
5036: GO 4926
5038: POP
5039: POP
// for i in a do
5040: LD_ADDR_VAR 0 3
5044: PUSH
5045: LD_VAR 0 2
5049: PUSH
5050: FOR_IN
5051: IFFALSE 5254
// begin PlaceUnitXY ( i , 53 , 2 , false ) ;
5053: LD_VAR 0 3
5057: PPUSH
5058: LD_INT 53
5060: PPUSH
5061: LD_INT 2
5063: PPUSH
5064: LD_INT 0
5066: PPUSH
5067: CALL_OW 48
// if GetWeapon ( i ) = ar_cargo_bay then
5071: LD_VAR 0 3
5075: PPUSH
5076: CALL_OW 264
5080: PUSH
5081: LD_INT 32
5083: EQUAL
5084: IFFALSE 5120
// SetCargo ( i , [ mat_cans , mat_oil ] [ Rand ( 1 , 2 ) ] , 100 ) ;
5086: LD_VAR 0 3
5090: PPUSH
5091: LD_INT 1
5093: PUSH
5094: LD_INT 2
5096: PUSH
5097: EMPTY
5098: LIST
5099: LIST
5100: PUSH
5101: LD_INT 1
5103: PPUSH
5104: LD_INT 2
5106: PPUSH
5107: CALL_OW 12
5111: ARRAY
5112: PPUSH
5113: LD_INT 100
5115: PPUSH
5116: CALL_OW 290
// PrepareMechanic ( Rand ( 1 , 2 ) , [ Rand ( 3 , 4 ) , Rand ( 4 , 5 ) , Rand ( 4 , 6 ) ] [ difficulty ] ) ;
5120: LD_INT 1
5122: PPUSH
5123: LD_INT 2
5125: PPUSH
5126: CALL_OW 12
5130: PPUSH
5131: LD_INT 3
5133: PPUSH
5134: LD_INT 4
5136: PPUSH
5137: CALL_OW 12
5141: PUSH
5142: LD_INT 4
5144: PPUSH
5145: LD_INT 5
5147: PPUSH
5148: CALL_OW 12
5152: PUSH
5153: LD_INT 4
5155: PPUSH
5156: LD_INT 6
5158: PPUSH
5159: CALL_OW 12
5163: PUSH
5164: EMPTY
5165: LIST
5166: LIST
5167: LIST
5168: PUSH
5169: LD_OWVAR 67
5173: ARRAY
5174: PPUSH
5175: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
5179: CALL_OW 44
5183: PPUSH
5184: LD_VAR 0 3
5188: PPUSH
5189: CALL_OW 52
// if ExistMc ( MainConvoy ) then
5193: LD_EXP 20
5197: PPUSH
5198: CALL_OW 386
5202: IFFALSE 5220
// AddMcUnits ( MainConvoy , i ) else
5204: LD_EXP 20
5208: PPUSH
5209: LD_VAR 0 3
5213: PPUSH
5214: CALL_OW 390
5218: GO 5245
// MainConvoy = McMove ( 1 , a , path , [ ] ) ;
5220: LD_ADDR_EXP 20
5224: PUSH
5225: LD_INT 1
5227: PPUSH
5228: LD_VAR 0 2
5232: PPUSH
5233: LD_VAR 0 4
5237: PPUSH
5238: EMPTY
5239: PPUSH
5240: CALL_OW 398
5244: ST_TO_ADDR
// Wait ( 0 0$2 ) ;
5245: LD_INT 70
5247: PPUSH
5248: CALL_OW 67
// end ;
5252: GO 5050
5254: POP
5255: POP
// end ;
5256: LD_VAR 0 1
5260: RET
// every 0 0$1 do
5261: GO 5263
5263: DISABLE
// begin enable ;
5264: ENABLE
// case Time of 10 10$0 :
5265: LD_EXP 12
5269: PUSH
5270: LD_INT 21000
5272: DOUBLE
5273: EQUAL
5274: IFTRUE 5278
5276: GO 5309
5278: POP
// begin display_strings = [ ] ;
5279: LD_ADDR_OWVAR 47
5283: PUSH
5284: EMPTY
5285: ST_TO_ADDR
// disable ( 04 ) ;
5286: LD_INT 4
5288: DISABLE_MARKED
// if difficulty > 1 then
5289: LD_OWVAR 67
5293: PUSH
5294: LD_INT 1
5296: GREATER
5297: IFFALSE 5303
// PrepareMortarSquad ;
5299: CALL 3319 0 0
// PrepareMainAttack ;
5303: CALL 3858 0 0
// end ; 12 12$0 :
5307: GO 5399
5309: LD_INT 25200
5311: DOUBLE
5312: EQUAL
5313: IFTRUE 5317
5315: GO 5324
5317: POP
// PrepareMainConvoy ; 12 12$30 :
5318: CALL 4769 0 0
5322: GO 5399
5324: LD_INT 26250
5326: DOUBLE
5327: EQUAL
5328: IFTRUE 5332
5330: GO 5339
5332: POP
// PrepareSideAttack ; 15 15$0 :
5333: CALL 4427 0 0
5337: GO 5399
5339: LD_INT 31500
5341: DOUBLE
5342: EQUAL
5343: IFTRUE 5347
5345: GO 5368
5347: POP
// begin if difficulty > 1 then
5348: LD_OWVAR 67
5352: PUSH
5353: LD_INT 1
5355: GREATER
5356: IFFALSE 5362
// PrepareMortarSquad ;
5358: CALL 3319 0 0
// PrepareMainAttack ;
5362: CALL 3858 0 0
// end ; 15 15$30 :
5366: GO 5399
5368: LD_INT 32550
5370: DOUBLE
5371: EQUAL
5372: IFTRUE 5376
5374: GO 5383
5376: POP
// PrepareMainConvoy ; 18 18$0 :
5377: CALL 4769 0 0
5381: GO 5399
5383: LD_INT 37800
5385: DOUBLE
5386: EQUAL
5387: IFTRUE 5391
5389: GO 5398
5391: POP
// PrepareMainConvoy ; end ;
5392: CALL 4769 0 0
5396: GO 5399
5398: POP
// end ;
5399: END
// function CheckStuckUnits ( un , area ) ; begin
5400: LD_INT 0
5402: PPUSH
// if not HasTask ( un ) and FilterAllUnits ( [ [ f_distxy , un , 15 ] , [ f_enemy , GetSide ( un ) ] ] ) = 0 then
5403: LD_VAR 0 1
5407: PPUSH
5408: CALL_OW 314
5412: NOT
5413: PUSH
5414: LD_INT 92
5416: PUSH
5417: LD_VAR 0 1
5421: PUSH
5422: LD_INT 15
5424: PUSH
5425: EMPTY
5426: LIST
5427: LIST
5428: LIST
5429: PUSH
5430: LD_INT 81
5432: PUSH
5433: LD_VAR 0 1
5437: PPUSH
5438: CALL_OW 255
5442: PUSH
5443: EMPTY
5444: LIST
5445: LIST
5446: PUSH
5447: EMPTY
5448: LIST
5449: LIST
5450: PPUSH
5451: CALL_OW 69
5455: PUSH
5456: LD_INT 0
5458: EQUAL
5459: AND
5460: IFFALSE 5476
// ComMoveToArea ( un , area ) ;
5462: LD_VAR 0 1
5466: PPUSH
5467: LD_VAR 0 2
5471: PPUSH
5472: CALL_OW 113
// end ;
5476: LD_VAR 0 3
5480: RET
// every 0 0$10 do var i ;
5481: GO 5483
5483: DISABLE
5484: LD_INT 0
5486: PPUSH
// begin enable ;
5487: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_not , [ f_type , unit_building ] ] ] ) do
5488: LD_ADDR_VAR 0 1
5492: PUSH
5493: LD_INT 22
5495: PUSH
5496: LD_INT 2
5498: PUSH
5499: EMPTY
5500: LIST
5501: LIST
5502: PUSH
5503: LD_INT 3
5505: PUSH
5506: LD_INT 21
5508: PUSH
5509: LD_INT 3
5511: PUSH
5512: EMPTY
5513: LIST
5514: LIST
5515: PUSH
5516: EMPTY
5517: LIST
5518: LIST
5519: PUSH
5520: EMPTY
5521: LIST
5522: LIST
5523: PPUSH
5524: CALL_OW 69
5528: PUSH
5529: FOR_IN
5530: IFFALSE 5546
// CheckStuckUnits ( i , ArabExit ) ;
5532: LD_VAR 0 1
5536: PPUSH
5537: LD_INT 4
5539: PPUSH
5540: CALL 5400 0 2
5544: GO 5529
5546: POP
5547: POP
// end ; end_of_file
5548: PPOPN 1
5550: END
// export ArabsCaptured ; on VehicleCaptured ( ni , oi , os , u ) do begin if os = 2 then
5551: LD_VAR 0 3
5555: PUSH
5556: LD_INT 2
5558: EQUAL
5559: IFFALSE 5575
// ArabsCaptured = ArabsCaptured + 1 ;
5561: LD_ADDR_EXP 21
5565: PUSH
5566: LD_EXP 21
5570: PUSH
5571: LD_INT 1
5573: PLUS
5574: ST_TO_ADDR
// end ; end_of_file
5575: PPOPN 4
5577: END
// every 2 2$05 do
5578: GO 5580
5580: DISABLE
// begin enable ;
5581: ENABLE
// CreateCratesAnywhere ( Rand ( 1 , 5 ) , true ) ;
5582: LD_INT 1
5584: PPUSH
5585: LD_INT 5
5587: PPUSH
5588: CALL_OW 12
5592: PPUSH
5593: LD_INT 1
5595: PPUSH
5596: CALL_OW 57
// end ;
5600: END
// every 2 2$45 marked 09 do
5601: GO 5603
5603: DISABLE
// begin enable ;
5604: ENABLE
// CreateCratesXYR ( Rand ( 3 , 5 ) , 60 , 63 , 20 , true ) ;
5605: LD_INT 3
5607: PPUSH
5608: LD_INT 5
5610: PPUSH
5611: CALL_OW 12
5615: PPUSH
5616: LD_INT 60
5618: PPUSH
5619: LD_INT 63
5621: PPUSH
5622: LD_INT 20
5624: PPUSH
5625: LD_INT 1
5627: PPUSH
5628: CALL_OW 56
// end ;
5632: END
// every 4 4$15 marked 10 do
5633: GO 5635
5635: DISABLE
// begin enable ;
5636: ENABLE
// CreateCratesXYR ( Rand ( 3 , 5 ) , 130 , 26 , 20 , true ) ;
5637: LD_INT 3
5639: PPUSH
5640: LD_INT 5
5642: PPUSH
5643: CALL_OW 12
5647: PPUSH
5648: LD_INT 130
5650: PPUSH
5651: LD_INT 26
5653: PPUSH
5654: LD_INT 20
5656: PPUSH
5657: LD_INT 1
5659: PPUSH
5660: CALL_OW 56
// end ;
5664: END
// every 20 20$0 do
5665: GO 5667
5667: DISABLE
// begin disable ( 09 ) ;
5668: LD_INT 9
5670: DISABLE_MARKED
// disable ( 10 ) ;
5671: LD_INT 10
5673: DISABLE_MARKED
// end ;
5674: END
// export NewGuy ; every 0 0$1 trigger tick = 6 6$0 do
5675: LD_OWVAR 1
5679: PUSH
5680: LD_INT 12600
5682: EQUAL
5683: IFFALSE 5781
5685: GO 5687
5687: DISABLE
// begin uc_side = 4 ;
5688: LD_ADDR_OWVAR 20
5692: PUSH
5693: LD_INT 4
5695: ST_TO_ADDR
// uc_nation = 1 ;
5696: LD_ADDR_OWVAR 21
5700: PUSH
5701: LD_INT 1
5703: ST_TO_ADDR
// PrepareSoldier ( 0 , Rand ( 2 , 3 ) ) ;
5704: LD_INT 0
5706: PPUSH
5707: LD_INT 2
5709: PPUSH
5710: LD_INT 3
5712: PPUSH
5713: CALL_OW 12
5717: PPUSH
5718: CALL_OW 381
// NewGuy = CreateHuman ;
5722: LD_ADDR_EXP 22
5726: PUSH
5727: CALL_OW 44
5731: ST_TO_ADDR
// PlaceUnitXY ( NewGuy , 182 , 109 , true ) ;
5732: LD_EXP 22
5736: PPUSH
5737: LD_INT 182
5739: PPUSH
5740: LD_INT 109
5742: PPUSH
5743: LD_INT 1
5745: PPUSH
5746: CALL_OW 48
// Wait ( 0 0$2 ) ;
5750: LD_INT 70
5752: PPUSH
5753: CALL_OW 67
// SayRadio ( NewGuy , dn-s-1 ) ;
5757: LD_EXP 22
5761: PPUSH
5762: LD_STRING dn-s-1
5764: PPUSH
5765: CALL_OW 94
// Say ( Alex , dn-a-1 ) ;
5769: LD_EXP 1
5773: PPUSH
5774: LD_STRING dn-a-1
5776: PPUSH
5777: CALL_OW 88
// end ;
5781: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_dist , NewGuy , 8 ] ] ) do
5782: LD_INT 22
5784: PUSH
5785: LD_INT 1
5787: PUSH
5788: EMPTY
5789: LIST
5790: LIST
5791: PUSH
5792: LD_INT 91
5794: PUSH
5795: LD_EXP 22
5799: PUSH
5800: LD_INT 8
5802: PUSH
5803: EMPTY
5804: LIST
5805: LIST
5806: LIST
5807: PUSH
5808: EMPTY
5809: LIST
5810: LIST
5811: PPUSH
5812: CALL_OW 69
5816: IFFALSE 5833
5818: GO 5820
5820: DISABLE
// SetSide ( NewGuy , 1 ) ;
5821: LD_EXP 22
5825: PPUSH
5826: LD_INT 1
5828: PPUSH
5829: CALL_OW 235
5833: END
