// export Alex , TeamEpsilon ; export Hayes ; export GammaBuildings , Losses ; function PrepareOurs ; var i , h ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
// uc_side = 1 ;
   5: LD_ADDR_OWVAR 20
   9: PUSH
  10: LD_INT 1
  12: ST_TO_ADDR
// uc_nation = 1 ;
  13: LD_ADDR_OWVAR 21
  17: PUSH
  18: LD_INT 1
  20: ST_TO_ADDR
// InitHc ;
  21: CALL_OW 19
// Alex = LoadCharacter ( Alex , 2 , 0 ) ;
  25: LD_ADDR_EXP 1
  29: PUSH
  30: LD_STRING Alex
  32: PPUSH
  33: LD_INT 2
  35: PPUSH
  36: LD_INT 0
  38: PPUSH
  39: CALL_OW 527
  43: ST_TO_ADDR
// PlaceHumanInUnit ( Alex , v1 ) ;
  44: LD_EXP 1
  48: PPUSH
  49: LD_INT 2
  51: PPUSH
  52: CALL_OW 52
// TeamEpsilon = LoadCharacter ( TeamEpsilon , 0 , 0 ) ;
  56: LD_ADDR_EXP 2
  60: PUSH
  61: LD_STRING TeamEpsilon
  63: PPUSH
  64: LD_INT 0
  66: PPUSH
  67: LD_INT 0
  69: PPUSH
  70: CALL_OW 527
  74: ST_TO_ADDR
// for i = 1 to 3 do
  75: LD_ADDR_VAR 0 2
  79: PUSH
  80: DOUBLE
  81: LD_INT 1
  83: DEC
  84: ST_TO_ADDR
  85: LD_INT 3
  87: PUSH
  88: FOR_TO
  89: IFFALSE 120
// PlaceUnitXYR ( TeamEpsilon [ i ] , 180 , 85 , 5 , false ) ;
  91: LD_EXP 2
  95: PUSH
  96: LD_VAR 0 2
 100: ARRAY
 101: PPUSH
 102: LD_INT 180
 104: PPUSH
 105: LD_INT 85
 107: PPUSH
 108: LD_INT 5
 110: PPUSH
 111: LD_INT 0
 113: PPUSH
 114: CALL_OW 50
 118: GO 88
 120: POP
 121: POP
// if TeamEpsilon < 3 then
 122: LD_EXP 2
 126: PUSH
 127: LD_INT 3
 129: LESS
 130: IFFALSE 211
// repeat begin InitHc ;
 132: CALL_OW 19
// PrepareSoldier ( 0 , Rand ( 0 , 2 ) ) ;
 136: LD_INT 0
 138: PPUSH
 139: LD_INT 0
 141: PPUSH
 142: LD_INT 2
 144: PPUSH
 145: CALL_OW 12
 149: PPUSH
 150: CALL_OW 381
// h = CreateHuman ;
 154: LD_ADDR_VAR 0 3
 158: PUSH
 159: CALL_OW 44
 163: ST_TO_ADDR
// PlaceUnitXYR ( h , 180 , 87 , 3 , false ) ;
 164: LD_VAR 0 3
 168: PPUSH
 169: LD_INT 180
 171: PPUSH
 172: LD_INT 87
 174: PPUSH
 175: LD_INT 3
 177: PPUSH
 178: LD_INT 0
 180: PPUSH
 181: CALL_OW 50
// TeamEpsilon = TeamEpsilon ^ h ;
 185: LD_ADDR_EXP 2
 189: PUSH
 190: LD_EXP 2
 194: PUSH
 195: LD_VAR 0 3
 199: ADD
 200: ST_TO_ADDR
// end until TeamEpsilon = 3 ;
 201: LD_EXP 2
 205: PUSH
 206: LD_INT 3
 208: EQUAL
 209: IFFALSE 132
// uc_side = 4 ;
 211: LD_ADDR_OWVAR 20
 215: PUSH
 216: LD_INT 4
 218: ST_TO_ADDR
// InitHc ;
 219: CALL_OW 19
// PrepareScientist ( 1 , 3 ) ;
 223: LD_INT 1
 225: PPUSH
 226: LD_INT 3
 228: PPUSH
 229: CALL_OW 384
// h = CreateHuman ;
 233: LD_ADDR_VAR 0 3
 237: PUSH
 238: CALL_OW 44
 242: ST_TO_ADDR
// PlaceUnitXY ( h , 135 , 30 , false ) ;
 243: LD_VAR 0 3
 247: PPUSH
 248: LD_INT 135
 250: PPUSH
 251: LD_INT 30
 253: PPUSH
 254: LD_INT 0
 256: PPUSH
 257: CALL_OW 48
// PrepareEngineer ( 2 , 2 ) ;
 261: LD_INT 2
 263: PPUSH
 264: LD_INT 2
 266: PPUSH
 267: CALL_OW 382
// h = CreateHuman ;
 271: LD_ADDR_VAR 0 3
 275: PUSH
 276: CALL_OW 44
 280: ST_TO_ADDR
// PlaceUnitXY ( h , 130 , 30 , false ) ;
 281: LD_VAR 0 3
 285: PPUSH
 286: LD_INT 130
 288: PPUSH
 289: LD_INT 30
 291: PPUSH
 292: LD_INT 0
 294: PPUSH
 295: CALL_OW 48
// AddComBuild ( h , b_breastwork , 127 , 31 , 2 ) ;
 299: LD_VAR 0 3
 303: PPUSH
 304: LD_INT 31
 306: PPUSH
 307: LD_INT 127
 309: PPUSH
 310: LD_INT 31
 312: PPUSH
 313: LD_INT 2
 315: PPUSH
 316: CALL_OW 205
// if TeamEpsilon > 3 then
 320: LD_EXP 2
 324: PUSH
 325: LD_INT 3
 327: GREATER
 328: IFFALSE 397
// for i = 4 to TeamEpsilon do
 330: LD_ADDR_VAR 0 2
 334: PUSH
 335: DOUBLE
 336: LD_INT 4
 338: DEC
 339: ST_TO_ADDR
 340: LD_EXP 2
 344: PUSH
 345: FOR_TO
 346: IFFALSE 395
// begin SetSide ( TeamEpsilon [ i ] , 4 ) ;
 348: LD_EXP 2
 352: PUSH
 353: LD_VAR 0 2
 357: ARRAY
 358: PPUSH
 359: LD_INT 4
 361: PPUSH
 362: CALL_OW 235
// PlaceUnitXYR ( TeamEpsilon [ i ] , 135 , 30 , 6 , false ) ;
 366: LD_EXP 2
 370: PUSH
 371: LD_VAR 0 2
 375: ARRAY
 376: PPUSH
 377: LD_INT 135
 379: PPUSH
 380: LD_INT 30
 382: PPUSH
 383: LD_INT 6
 385: PPUSH
 386: LD_INT 0
 388: PPUSH
 389: CALL_OW 50
// end ;
 393: GO 345
 395: POP
 396: POP
// SetBName ( gamma_dep , gamma ) ;
 397: LD_INT 22
 399: PPUSH
 400: LD_STRING gamma
 402: PPUSH
 403: CALL_OW 500
// Hayes = NewCharacter ( Hayes ) ;
 407: LD_ADDR_EXP 3
 411: PUSH
 412: LD_STRING Hayes
 414: PPUSH
 415: CALL_OW 25
 419: ST_TO_ADDR
// end ;
 420: LD_VAR 0 1
 424: RET
// export function WhoFound ( a , x ) ; var u ; begin
 425: LD_INT 0
 427: PPUSH
 428: PPUSH
// u = NearestUnitToUnit ( a , x ) ;
 429: LD_ADDR_VAR 0 4
 433: PUSH
 434: LD_VAR 0 1
 438: PPUSH
 439: LD_VAR 0 2
 443: PPUSH
 444: CALL_OW 74
 448: ST_TO_ADDR
// if GetType ( u ) = unit_vehicle then
 449: LD_VAR 0 4
 453: PPUSH
 454: CALL_OW 247
 458: PUSH
 459: LD_INT 2
 461: EQUAL
 462: IFFALSE 481
// u = IsDrivenBy ( u ) else
 464: LD_ADDR_VAR 0 4
 468: PUSH
 469: LD_VAR 0 4
 473: PPUSH
 474: CALL_OW 311
 478: ST_TO_ADDR
 479: GO 545
// if GetType ( u ) = unit_building then
 481: LD_VAR 0 4
 485: PPUSH
 486: CALL_OW 247
 490: PUSH
 491: LD_INT 3
 493: EQUAL
 494: IFFALSE 545
// u = FilterAllUnits ( [ [ f_side , GetSide ( a [ 1 ] ) ] , [ f_type , unit_human ] ] ) [ 1 ] ;
 496: LD_ADDR_VAR 0 4
 500: PUSH
 501: LD_INT 22
 503: PUSH
 504: LD_VAR 0 1
 508: PUSH
 509: LD_INT 1
 511: ARRAY
 512: PPUSH
 513: CALL_OW 255
 517: PUSH
 518: EMPTY
 519: LIST
 520: LIST
 521: PUSH
 522: LD_INT 21
 524: PUSH
 525: LD_INT 1
 527: PUSH
 528: EMPTY
 529: LIST
 530: LIST
 531: PUSH
 532: EMPTY
 533: LIST
 534: LIST
 535: PPUSH
 536: CALL_OW 69
 540: PUSH
 541: LD_INT 1
 543: ARRAY
 544: ST_TO_ADDR
// result = u ;
 545: LD_ADDR_VAR 0 3
 549: PUSH
 550: LD_VAR 0 4
 554: ST_TO_ADDR
// end ;
 555: LD_VAR 0 3
 559: RET
// starting begin Query ( Q1 ) ;
 560: LD_STRING Q1
 562: PPUSH
 563: CALL_OW 97
// Query ( Q2 ) ;
 567: LD_STRING Q2
 569: PPUSH
 570: CALL_OW 97
// Randomize ;
 574: CALL_OW 10
// PrepareOurs ;
 578: CALL 0 0 0
// ChangeSideFog ( 1 , 4 ) ;
 582: LD_INT 1
 584: PPUSH
 585: LD_INT 4
 587: PPUSH
 588: CALL_OW 343
// RevealFogArea ( 4 , RevealArea ) ;
 592: LD_INT 4
 594: PPUSH
 595: LD_INT 9
 597: PPUSH
 598: CALL_OW 332
// InGameOn ;
 602: CALL_OW 8
// CenterNowOnUnits ( v1 ) ;
 606: LD_INT 2
 608: PPUSH
 609: CALL_OW 87
// ComMoveXY ( FilterAllUnits ( [ f_side , 1 ] ) , 166 , 86 ) ;
 613: LD_INT 22
 615: PUSH
 616: LD_INT 1
 618: PUSH
 619: EMPTY
 620: LIST
 621: LIST
 622: PPUSH
 623: CALL_OW 69
 627: PPUSH
 628: LD_INT 166
 630: PPUSH
 631: LD_INT 86
 633: PPUSH
 634: CALL_OW 111
// Wait ( 0 0$3 ) ;
 638: LD_INT 105
 640: PPUSH
 641: CALL_OW 67
// DialogueOn ;
 645: CALL_OW 6
// SayRadio ( Hayes , di-h-1 ) ;
 649: LD_EXP 3
 653: PPUSH
 654: LD_STRING di-h-1
 656: PPUSH
 657: CALL_OW 94
// Say ( Alex , di-a-1 ) ;
 661: LD_EXP 1
 665: PPUSH
 666: LD_STRING di-a-1
 668: PPUSH
 669: CALL_OW 88
// SayRadio ( Hayes , di-h-2 ) ;
 673: LD_EXP 3
 677: PPUSH
 678: LD_STRING di-h-2
 680: PPUSH
 681: CALL_OW 94
// Say ( Alex , di-a-2 ) ;
 685: LD_EXP 1
 689: PPUSH
 690: LD_STRING di-a-2
 692: PPUSH
 693: CALL_OW 88
// SayRadio ( Hayes , di-h-3 ) ;
 697: LD_EXP 3
 701: PPUSH
 702: LD_STRING di-h-3
 704: PPUSH
 705: CALL_OW 94
// Say ( Alex , di-a-3 ) ;
 709: LD_EXP 1
 713: PPUSH
 714: LD_STRING di-a-3
 716: PPUSH
 717: CALL_OW 88
// DialogueOff ;
 721: CALL_OW 7
// InGameOff ;
 725: CALL_OW 9
// SaveForQuickRestart ;
 729: CALL_OW 22
// ChangeMissionObjectives ( OOil ) ;
 733: LD_STRING OOil
 735: PPUSH
 736: CALL_OW 337
// end ;
 740: END
// export function SaveAndEnd ; var b , i , oiltime ; begin
 741: LD_INT 0
 743: PPUSH
 744: PPUSH
 745: PPUSH
 746: PPUSH
// b = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) ;
 747: LD_ADDR_VAR 0 2
 751: PUSH
 752: LD_INT 22
 754: PUSH
 755: LD_INT 1
 757: PUSH
 758: EMPTY
 759: LIST
 760: LIST
 761: PUSH
 762: LD_INT 21
 764: PUSH
 765: LD_INT 3
 767: PUSH
 768: EMPTY
 769: LIST
 770: LIST
 771: PUSH
 772: EMPTY
 773: LIST
 774: LIST
 775: PPUSH
 776: CALL_OW 69
 780: ST_TO_ADDR
// GammaBuildings = [ ] ;
 781: LD_ADDR_EXP 4
 785: PUSH
 786: EMPTY
 787: ST_TO_ADDR
// for i in b do
 788: LD_ADDR_VAR 0 3
 792: PUSH
 793: LD_VAR 0 2
 797: PUSH
 798: FOR_IN
 799: IFFALSE 1007
// case GetBType ( i ) of b_lab , b_lab_half , b_lab_full :
 801: LD_VAR 0 3
 805: PPUSH
 806: CALL_OW 266
 810: PUSH
 811: LD_INT 6
 813: DOUBLE
 814: EQUAL
 815: IFTRUE 831
 817: LD_INT 7
 819: DOUBLE
 820: EQUAL
 821: IFTRUE 831
 823: LD_INT 8
 825: DOUBLE
 826: EQUAL
 827: IFTRUE 831
 829: GO 933
 831: POP
// GammaBuildings = GammaBuildings ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetBLevel ( i ) , GetLabKind ( i , 1 ) , GetLabKind ( i , 2 ) ] ] ; else
 832: LD_ADDR_EXP 4
 836: PUSH
 837: LD_EXP 4
 841: PUSH
 842: LD_VAR 0 3
 846: PPUSH
 847: CALL_OW 250
 851: PUSH
 852: LD_VAR 0 3
 856: PPUSH
 857: CALL_OW 251
 861: PUSH
 862: LD_VAR 0 3
 866: PPUSH
 867: CALL_OW 254
 871: PUSH
 872: LD_VAR 0 3
 876: PPUSH
 877: CALL_OW 266
 881: PUSH
 882: LD_VAR 0 3
 886: PPUSH
 887: CALL_OW 267
 891: PUSH
 892: LD_VAR 0 3
 896: PPUSH
 897: LD_INT 1
 899: PPUSH
 900: CALL_OW 268
 904: PUSH
 905: LD_VAR 0 3
 909: PPUSH
 910: LD_INT 2
 912: PPUSH
 913: CALL_OW 268
 917: PUSH
 918: EMPTY
 919: LIST
 920: LIST
 921: LIST
 922: LIST
 923: LIST
 924: LIST
 925: LIST
 926: PUSH
 927: EMPTY
 928: LIST
 929: ADD
 930: ST_TO_ADDR
 931: GO 1005
 933: POP
// GammaBuildings = GammaBuildings ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetBLevel ( i ) ] ] ; end ;
 934: LD_ADDR_EXP 4
 938: PUSH
 939: LD_EXP 4
 943: PUSH
 944: LD_VAR 0 3
 948: PPUSH
 949: CALL_OW 250
 953: PUSH
 954: LD_VAR 0 3
 958: PPUSH
 959: CALL_OW 251
 963: PUSH
 964: LD_VAR 0 3
 968: PPUSH
 969: CALL_OW 254
 973: PUSH
 974: LD_VAR 0 3
 978: PPUSH
 979: CALL_OW 266
 983: PUSH
 984: LD_VAR 0 3
 988: PPUSH
 989: CALL_OW 267
 993: PUSH
 994: EMPTY
 995: LIST
 996: LIST
 997: LIST
 998: LIST
 999: LIST
1000: PUSH
1001: EMPTY
1002: LIST
1003: ADD
1004: ST_TO_ADDR
1005: GO 798
1007: POP
1008: POP
// SaveVariable ( GammaBuildings , GammaBuildings ) ;
1009: LD_EXP 4
1013: PPUSH
1014: LD_STRING GammaBuildings
1016: PPUSH
1017: CALL_OW 39
// oiltime = [ 30 30$0 , 20 20$0 , 15 15$0 ] [ difficulty ] ;
1021: LD_ADDR_VAR 0 4
1025: PUSH
1026: LD_INT 63000
1028: PUSH
1029: LD_INT 42000
1031: PUSH
1032: LD_INT 31500
1034: PUSH
1035: EMPTY
1036: LIST
1037: LIST
1038: LIST
1039: PUSH
1040: LD_OWVAR 67
1044: ARRAY
1045: ST_TO_ADDR
// if OilTimer < oiltime then
1046: LD_EXP 12
1050: PUSH
1051: LD_VAR 0 4
1055: LESS
1056: IFFALSE 1070
// AddMedal ( MOil , 1 ) else
1058: LD_STRING MOil
1060: PPUSH
1061: LD_INT 1
1063: PPUSH
1064: CALL_OW 101
1068: GO 1081
// AddMedal ( MOil , - 1 ) ;
1070: LD_STRING MOil
1072: PPUSH
1073: LD_INT 1
1075: NEG
1076: PPUSH
1077: CALL_OW 101
// if not Delay then
1081: LD_EXP 10
1085: NOT
1086: IFFALSE 1100
// AddMedal ( MConvoy , 1 ) else
1088: LD_STRING MConvoy
1090: PPUSH
1091: LD_INT 1
1093: PPUSH
1094: CALL_OW 101
1098: GO 1111
// AddMedal ( MConvoy , - 1 ) ;
1100: LD_STRING MConvoy
1102: PPUSH
1103: LD_INT 1
1105: NEG
1106: PPUSH
1107: CALL_OW 101
// if Losses then
1111: LD_EXP 5
1115: IFFALSE 1130
// AddMedal ( MLosses , - 1 ) else
1117: LD_STRING MLosses
1119: PPUSH
1120: LD_INT 1
1122: NEG
1123: PPUSH
1124: CALL_OW 101
1128: GO 1140
// AddMedal ( MLosses , 1 ) ;
1130: LD_STRING MLosses
1132: PPUSH
1133: LD_INT 1
1135: PPUSH
1136: CALL_OW 101
// GiveMedals ( Main ) ;
1140: LD_STRING Main
1142: PPUSH
1143: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) ) ;
1147: LD_INT 22
1149: PUSH
1150: LD_INT 1
1152: PUSH
1153: EMPTY
1154: LIST
1155: LIST
1156: PUSH
1157: LD_INT 21
1159: PUSH
1160: LD_INT 1
1162: PUSH
1163: EMPTY
1164: LIST
1165: LIST
1166: PUSH
1167: EMPTY
1168: LIST
1169: LIST
1170: PPUSH
1171: CALL_OW 69
1175: PPUSH
1176: CALL_OW 43
// SaveCharacters ( Alex , Alex ) ;
1180: LD_EXP 1
1184: PPUSH
1185: LD_STRING Alex
1187: PPUSH
1188: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) diff [ Alex ] , TeamGamma ) ;
1192: LD_INT 22
1194: PUSH
1195: LD_INT 1
1197: PUSH
1198: EMPTY
1199: LIST
1200: LIST
1201: PUSH
1202: LD_INT 21
1204: PUSH
1205: LD_INT 1
1207: PUSH
1208: EMPTY
1209: LIST
1210: LIST
1211: PUSH
1212: EMPTY
1213: LIST
1214: LIST
1215: PPUSH
1216: CALL_OW 69
1220: PUSH
1221: LD_EXP 1
1225: PUSH
1226: EMPTY
1227: LIST
1228: DIFF
1229: PPUSH
1230: LD_STRING TeamGamma
1232: PPUSH
1233: CALL_OW 38
// YouWin ;
1237: CALL_OW 103
// end ;
1241: LD_VAR 0 1
1245: RET
// on UnitDestroyed ( un ) do begin if un = Alex then
1246: LD_VAR 0 1
1250: PUSH
1251: LD_EXP 1
1255: EQUAL
1256: IFFALSE 1265
// YouLost ( AlexDead ) ;
1258: LD_STRING AlexDead
1260: PPUSH
1261: CALL_OW 104
// if GetSide ( un ) = 1 and GetType ( un ) = unit_human then
1265: LD_VAR 0 1
1269: PPUSH
1270: CALL_OW 255
1274: PUSH
1275: LD_INT 1
1277: EQUAL
1278: PUSH
1279: LD_VAR 0 1
1283: PPUSH
1284: CALL_OW 247
1288: PUSH
1289: LD_INT 1
1291: EQUAL
1292: AND
1293: IFFALSE 1303
// Losses = true ;
1295: LD_ADDR_EXP 5
1299: PUSH
1300: LD_INT 1
1302: ST_TO_ADDR
// end ; end_of_file
1303: PPOPN 1
1305: END
// export FullTrucks ; export TimeToTrucks , Drivers ; export CountForTrucks , Delay , DriversGone ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_distxy , 135 , 30 , 15 ] ] ) do
1306: LD_INT 22
1308: PUSH
1309: LD_INT 1
1311: PUSH
1312: EMPTY
1313: LIST
1314: LIST
1315: PUSH
1316: LD_INT 92
1318: PUSH
1319: LD_INT 135
1321: PUSH
1322: LD_INT 30
1324: PUSH
1325: LD_INT 15
1327: PUSH
1328: EMPTY
1329: LIST
1330: LIST
1331: LIST
1332: LIST
1333: PUSH
1334: EMPTY
1335: LIST
1336: LIST
1337: PPUSH
1338: CALL_OW 69
1342: IFFALSE 1368
1344: GO 1346
1346: DISABLE
// SetSide ( FilterUnitsInArea ( AmericanBase , [ f_ok ] ) , 1 ) ;
1347: LD_INT 5
1349: PPUSH
1350: LD_INT 50
1352: PUSH
1353: EMPTY
1354: LIST
1355: PPUSH
1356: CALL_OW 70
1360: PPUSH
1361: LD_INT 1
1363: PPUSH
1364: CALL_OW 235
1368: END
// export OilTimer ; every 0 0$1 trigger not FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_oil_mine ] , [ f_ready ] ] ) = 3 marked 01 do
1369: LD_INT 22
1371: PUSH
1372: LD_INT 1
1374: PUSH
1375: EMPTY
1376: LIST
1377: LIST
1378: PUSH
1379: LD_INT 30
1381: PUSH
1382: LD_INT 29
1384: PUSH
1385: EMPTY
1386: LIST
1387: LIST
1388: PUSH
1389: LD_INT 53
1391: PUSH
1392: EMPTY
1393: LIST
1394: PUSH
1395: EMPTY
1396: LIST
1397: LIST
1398: LIST
1399: PPUSH
1400: CALL_OW 69
1404: PUSH
1405: LD_INT 3
1407: EQUAL
1408: NOT
1409: IFFALSE 1429
1411: GO 1413
1413: DISABLE
// begin enable ;
1414: ENABLE
// OilTimer = OilTimer + 0 0$1 ;
1415: LD_ADDR_EXP 12
1419: PUSH
1420: LD_EXP 12
1424: PUSH
1425: LD_INT 35
1427: PLUS
1428: ST_TO_ADDR
// end ;
1429: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 4 ] ] ) do var a , n ;
1430: LD_INT 22
1432: PUSH
1433: LD_INT 2
1435: PUSH
1436: EMPTY
1437: LIST
1438: LIST
1439: PUSH
1440: LD_INT 101
1442: PUSH
1443: LD_INT 4
1445: PUSH
1446: EMPTY
1447: LIST
1448: LIST
1449: PUSH
1450: EMPTY
1451: LIST
1452: LIST
1453: PPUSH
1454: CALL_OW 69
1458: IFFALSE 1649
1460: GO 1462
1462: DISABLE
1463: LD_INT 0
1465: PPUSH
1466: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 4 ] ] ) ;
1467: LD_ADDR_VAR 0 1
1471: PUSH
1472: LD_INT 22
1474: PUSH
1475: LD_INT 2
1477: PUSH
1478: EMPTY
1479: LIST
1480: LIST
1481: PUSH
1482: LD_INT 101
1484: PUSH
1485: LD_INT 4
1487: PUSH
1488: EMPTY
1489: LIST
1490: LIST
1491: PUSH
1492: EMPTY
1493: LIST
1494: LIST
1495: PPUSH
1496: CALL_OW 69
1500: ST_TO_ADDR
// n = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 1 ] ) diff [ Alex , IsInUnit ( Alex ) ] , a [ 1 ] ) ;
1501: LD_ADDR_VAR 0 2
1505: PUSH
1506: LD_INT 22
1508: PUSH
1509: LD_INT 1
1511: PUSH
1512: EMPTY
1513: LIST
1514: LIST
1515: PPUSH
1516: CALL_OW 69
1520: PUSH
1521: LD_EXP 1
1525: PUSH
1526: LD_EXP 1
1530: PPUSH
1531: CALL_OW 310
1535: PUSH
1536: EMPTY
1537: LIST
1538: LIST
1539: DIFF
1540: PPUSH
1541: LD_VAR 0 1
1545: PUSH
1546: LD_INT 1
1548: ARRAY
1549: PPUSH
1550: CALL_OW 74
1554: ST_TO_ADDR
// if GetType ( n ) <> unit_human then
1555: LD_VAR 0 2
1559: PPUSH
1560: CALL_OW 247
1564: PUSH
1565: LD_INT 1
1567: NONEQUAL
1568: IFFALSE 1589
// n = UnitsInside ( n ) [ 1 ] ;
1570: LD_ADDR_VAR 0 2
1574: PUSH
1575: LD_VAR 0 2
1579: PPUSH
1580: CALL_OW 313
1584: PUSH
1585: LD_INT 1
1587: ARRAY
1588: ST_TO_ADDR
// CenterOnUnits ( n ) ;
1589: LD_VAR 0 2
1593: PPUSH
1594: CALL_OW 85
// DialogueOn ;
1598: CALL_OW 6
// Say ( n , da-s-1 ) ;
1602: LD_VAR 0 2
1606: PPUSH
1607: LD_STRING da-s-1
1609: PPUSH
1610: CALL_OW 88
// Say ( Alex , da-a-1 ) ;
1614: LD_EXP 1
1618: PPUSH
1619: LD_STRING da-a-1
1621: PPUSH
1622: CALL_OW 88
// SayRadio ( Hayes , da-h-1 ) ;
1626: LD_EXP 3
1630: PPUSH
1631: LD_STRING da-h-1
1633: PPUSH
1634: CALL_OW 94
// DialogueOff ;
1638: CALL_OW 7
// ChangeMissionObjectives ( OArabs ) ;
1642: LD_STRING OArabs
1644: PPUSH
1645: CALL_OW 337
// end ;
1649: PPOPN 2
1651: END
// every 0 0$1 trigger EvacuateArabs do var a ;
1652: LD_EXP 15
1656: IFFALSE 1759
1658: GO 1660
1660: DISABLE
1661: LD_INT 0
1663: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) diff Alex ;
1664: LD_ADDR_VAR 0 1
1668: PUSH
1669: LD_INT 22
1671: PUSH
1672: LD_INT 1
1674: PUSH
1675: EMPTY
1676: LIST
1677: LIST
1678: PUSH
1679: LD_INT 21
1681: PUSH
1682: LD_INT 1
1684: PUSH
1685: EMPTY
1686: LIST
1687: LIST
1688: PUSH
1689: EMPTY
1690: LIST
1691: LIST
1692: PPUSH
1693: CALL_OW 69
1697: PUSH
1698: LD_EXP 1
1702: DIFF
1703: ST_TO_ADDR
// DialogueOn ;
1704: CALL_OW 6
// Say ( Alex , da-a-2 ) ;
1708: LD_EXP 1
1712: PPUSH
1713: LD_STRING da-a-2
1715: PPUSH
1716: CALL_OW 88
// Say ( a [ 1 ] , da-s-2 ) ;
1720: LD_VAR 0 1
1724: PUSH
1725: LD_INT 1
1727: ARRAY
1728: PPUSH
1729: LD_STRING da-s-2
1731: PPUSH
1732: CALL_OW 88
// Say ( Alex , da-a-3 ) ;
1736: LD_EXP 1
1740: PPUSH
1741: LD_STRING da-a-3
1743: PPUSH
1744: CALL_OW 88
// DialogueOff ;
1748: CALL_OW 7
// ChangeMissionObjectives ( OArabsOut ) ;
1752: LD_STRING OArabsOut
1754: PPUSH
1755: CALL_OW 337
// end ;
1759: PPOPN 1
1761: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_oil_mine ] , [ f_ready ] ] ) = 3 do var m ;
1762: LD_INT 22
1764: PUSH
1765: LD_INT 1
1767: PUSH
1768: EMPTY
1769: LIST
1770: LIST
1771: PUSH
1772: LD_INT 30
1774: PUSH
1775: LD_INT 29
1777: PUSH
1778: EMPTY
1779: LIST
1780: LIST
1781: PUSH
1782: LD_INT 53
1784: PUSH
1785: EMPTY
1786: LIST
1787: PUSH
1788: EMPTY
1789: LIST
1790: LIST
1791: LIST
1792: PPUSH
1793: CALL_OW 69
1797: PUSH
1798: LD_INT 3
1800: EQUAL
1801: IFFALSE 1941
1803: GO 1805
1805: DISABLE
1806: LD_INT 0
1808: PPUSH
// begin disable ( 09 ) ;
1809: LD_INT 9
1811: DISABLE_MARKED
// Say ( Alex , do-a-1 ) ;
1812: LD_EXP 1
1816: PPUSH
1817: LD_STRING do-a-1
1819: PPUSH
1820: CALL_OW 88
// SayRadio ( Hayes , do-h-1 ) ;
1824: LD_EXP 3
1828: PPUSH
1829: LD_STRING do-h-1
1831: PPUSH
1832: CALL_OW 94
// ChangeMissionObjectives ( OTrucks ) ;
1836: LD_STRING OTrucks
1838: PPUSH
1839: CALL_OW 337
// m = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) diff Alex ;
1843: LD_ADDR_VAR 0 1
1847: PUSH
1848: LD_INT 22
1850: PUSH
1851: LD_INT 1
1853: PUSH
1854: EMPTY
1855: LIST
1856: LIST
1857: PUSH
1858: LD_INT 21
1860: PUSH
1861: LD_INT 1
1863: PUSH
1864: EMPTY
1865: LIST
1866: LIST
1867: PUSH
1868: EMPTY
1869: LIST
1870: LIST
1871: PPUSH
1872: CALL_OW 69
1876: PUSH
1877: LD_EXP 1
1881: DIFF
1882: ST_TO_ADDR
// Say ( m [ 1 ] , do-s-1 ) ;
1883: LD_VAR 0 1
1887: PUSH
1888: LD_INT 1
1890: ARRAY
1891: PPUSH
1892: LD_STRING do-s-1
1894: PPUSH
1895: CALL_OW 88
// SetRestrict ( b_factory , 1 , true ) ;
1899: LD_INT 3
1901: PPUSH
1902: LD_INT 1
1904: PPUSH
1905: LD_INT 1
1907: PPUSH
1908: CALL_OW 324
// SetRestrict ( b_ext_noncombat , 1 , true ) ;
1912: LD_INT 19
1914: PPUSH
1915: LD_INT 1
1917: PPUSH
1918: LD_INT 1
1920: PPUSH
1921: CALL_OW 324
// CountForTrucks = true ;
1925: LD_ADDR_EXP 9
1929: PUSH
1930: LD_INT 1
1932: ST_TO_ADDR
// TimeToTrucks = 10 10$0 ;
1933: LD_ADDR_EXP 7
1937: PUSH
1938: LD_INT 21000
1940: ST_TO_ADDR
// end ;
1941: PPOPN 1
1943: END
// every 0 0$1 trigger CountForTrucks do
1944: LD_EXP 9
1948: IFFALSE 1985
1950: GO 1952
1952: DISABLE
// begin enable ;
1953: ENABLE
// TimeToTrucks = TimeToTrucks - 0 0$1 ;
1954: LD_ADDR_EXP 7
1958: PUSH
1959: LD_EXP 7
1963: PUSH
1964: LD_INT 35
1966: MINUS
1967: ST_TO_ADDR
// display_strings = [ #TimeToTrucks , TimeToTrucks ] ;
1968: LD_ADDR_OWVAR 47
1972: PUSH
1973: LD_STRING #TimeToTrucks
1975: PUSH
1976: LD_EXP 7
1980: PUSH
1981: EMPTY
1982: LIST
1983: LIST
1984: ST_TO_ADDR
// end ;
1985: END
// every 0 0$1 trigger TimeToTrucks = 0 0$1 do var i , h , d ;
1986: LD_EXP 7
1990: PUSH
1991: LD_INT 35
1993: EQUAL
1994: IFFALSE 2498
1996: GO 1998
1998: DISABLE
1999: LD_INT 0
2001: PPUSH
2002: PPUSH
2003: PPUSH
// begin CountForTrucks = false ;
2004: LD_ADDR_EXP 9
2008: PUSH
2009: LD_INT 0
2011: ST_TO_ADDR
// display_strings =  ;
2012: LD_ADDR_OWVAR 47
2016: PUSH
2017: LD_STRING 
2019: ST_TO_ADDR
// for i = 1 to 2 do
2020: LD_ADDR_VAR 0 1
2024: PUSH
2025: DOUBLE
2026: LD_INT 1
2028: DEC
2029: ST_TO_ADDR
2030: LD_INT 2
2032: PUSH
2033: FOR_TO
2034: IFFALSE 2115
// begin uc_side = 4 ;
2036: LD_ADDR_OWVAR 20
2040: PUSH
2041: LD_INT 4
2043: ST_TO_ADDR
// uc_nation = 1 ;
2044: LD_ADDR_OWVAR 21
2048: PUSH
2049: LD_INT 1
2051: ST_TO_ADDR
// InitHc ;
2052: CALL_OW 19
// PrepareSoldier ( 1 , 3 ) ;
2056: LD_INT 1
2058: PPUSH
2059: LD_INT 3
2061: PPUSH
2062: CALL_OW 381
// h = CreateHuman ;
2066: LD_ADDR_VAR 0 2
2070: PUSH
2071: CALL_OW 44
2075: ST_TO_ADDR
// PlaceUnitXYR ( h , 180 , 86 , 2 , false ) ;
2076: LD_VAR 0 2
2080: PPUSH
2081: LD_INT 180
2083: PPUSH
2084: LD_INT 86
2086: PPUSH
2087: LD_INT 2
2089: PPUSH
2090: LD_INT 0
2092: PPUSH
2093: CALL_OW 50
// Drivers = Drivers ^ h ;
2097: LD_ADDR_EXP 8
2101: PUSH
2102: LD_EXP 8
2106: PUSH
2107: LD_VAR 0 2
2111: ADD
2112: ST_TO_ADDR
// end ;
2113: GO 2033
2115: POP
2116: POP
// d = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_depot ] ] ) , Drivers [ 1 ] ) ;
2117: LD_ADDR_VAR 0 3
2121: PUSH
2122: LD_INT 22
2124: PUSH
2125: LD_INT 1
2127: PUSH
2128: EMPTY
2129: LIST
2130: LIST
2131: PUSH
2132: LD_INT 30
2134: PUSH
2135: LD_INT 0
2137: PUSH
2138: EMPTY
2139: LIST
2140: LIST
2141: PUSH
2142: EMPTY
2143: LIST
2144: LIST
2145: PPUSH
2146: CALL_OW 69
2150: PPUSH
2151: LD_EXP 8
2155: PUSH
2156: LD_INT 1
2158: ARRAY
2159: PPUSH
2160: CALL_OW 74
2164: ST_TO_ADDR
// ComMoveXY ( Drivers , GetX ( d ) , GetY ( d ) ) ;
2165: LD_EXP 8
2169: PPUSH
2170: LD_VAR 0 3
2174: PPUSH
2175: CALL_OW 250
2179: PPUSH
2180: LD_VAR 0 3
2184: PPUSH
2185: CALL_OW 251
2189: PPUSH
2190: CALL_OW 111
// repeat Wait ( 0 0$1 ) until GetDistUnits ( Drivers [ 1 ] , d ) < 8 ;
2194: LD_INT 35
2196: PPUSH
2197: CALL_OW 67
2201: LD_EXP 8
2205: PUSH
2206: LD_INT 1
2208: ARRAY
2209: PPUSH
2210: LD_VAR 0 3
2214: PPUSH
2215: CALL_OW 296
2219: PUSH
2220: LD_INT 8
2222: LESS
2223: IFFALSE 2194
// DialogueOn ;
2225: CALL_OW 6
// CenterOnUnits ( Drivers ) ;
2229: LD_EXP 8
2233: PPUSH
2234: CALL_OW 85
// Say ( Drivers [ 1 ] , dt-s-1 ) ;
2238: LD_EXP 8
2242: PUSH
2243: LD_INT 1
2245: ARRAY
2246: PPUSH
2247: LD_STRING dt-s-1
2249: PPUSH
2250: CALL_OW 88
// DialogueOff ;
2254: CALL_OW 7
// CheckTransport ;
2258: CALL 2556 0 0
// if FullTrucks >= 2 then
2262: LD_EXP 6
2266: PUSH
2267: LD_INT 2
2269: GREATEREQUAL
2270: IFFALSE 2286
// Say ( Alex , dt-a-1 ) else
2272: LD_EXP 1
2276: PPUSH
2277: LD_STRING dt-a-1
2279: PPUSH
2280: CALL_OW 88
2284: GO 2370
// begin Say ( Alex , dt-a-1a ) ;
2286: LD_EXP 1
2290: PPUSH
2291: LD_STRING dt-a-1a
2293: PPUSH
2294: CALL_OW 88
// Delay = true ;
2298: LD_ADDR_EXP 10
2302: PUSH
2303: LD_INT 1
2305: ST_TO_ADDR
// Wait ( 2 2$0 ) ;
2306: LD_INT 4200
2308: PPUSH
2309: CALL_OW 67
// CheckTransport ;
2313: CALL 2556 0 0
// if FullTrucks < 2 then
2317: LD_EXP 6
2321: PUSH
2322: LD_INT 2
2324: LESS
2325: IFFALSE 2370
// begin SayRadio ( Hayes , dt-h-1 ) ;
2327: LD_EXP 3
2331: PPUSH
2332: LD_STRING dt-h-1
2334: PPUSH
2335: CALL_OW 94
// Say ( Alex , dt-a-2 ) ;
2339: LD_EXP 1
2343: PPUSH
2344: LD_STRING dt-a-2
2346: PPUSH
2347: CALL_OW 88
// SayRadio ( Hayes , dt-h-2 ) ;
2351: LD_EXP 3
2355: PPUSH
2356: LD_STRING dt-h-2
2358: PPUSH
2359: CALL_OW 94
// YouLost ( TooSlow ) ;
2363: LD_STRING TooSlow
2365: PPUSH
2366: CALL_OW 104
// end ; end ; SetSide ( FullTrucks , 4 ) ;
2370: LD_EXP 6
2374: PPUSH
2375: LD_INT 4
2377: PPUSH
2378: CALL_OW 235
// ChangeMissionObjectives ( OTrucksOut ) ;
2382: LD_STRING OTrucksOut
2384: PPUSH
2385: CALL_OW 337
// for i = 1 to 2 do
2389: LD_ADDR_VAR 0 1
2393: PUSH
2394: DOUBLE
2395: LD_INT 1
2397: DEC
2398: ST_TO_ADDR
2399: LD_INT 2
2401: PUSH
2402: FOR_TO
2403: IFFALSE 2488
// begin if IsDrivenBy ( FullTrucks [ i ] ) then
2405: LD_EXP 6
2409: PUSH
2410: LD_VAR 0 1
2414: ARRAY
2415: PPUSH
2416: CALL_OW 311
2420: IFFALSE 2442
// ComExitVehicle ( IsDrivenBy ( FullTrucks [ i ] ) ) ;
2422: LD_EXP 6
2426: PUSH
2427: LD_VAR 0 1
2431: ARRAY
2432: PPUSH
2433: CALL_OW 311
2437: PPUSH
2438: CALL_OW 121
// ComEnterUnit ( Drivers [ i ] , FullTrucks [ i ] ) ;
2442: LD_EXP 8
2446: PUSH
2447: LD_VAR 0 1
2451: ARRAY
2452: PPUSH
2453: LD_EXP 6
2457: PUSH
2458: LD_VAR 0 1
2462: ARRAY
2463: PPUSH
2464: CALL_OW 120
// AddComMoveToArea ( Drivers [ i ] , DriversExit ) ;
2468: LD_EXP 8
2472: PUSH
2473: LD_VAR 0 1
2477: ARRAY
2478: PPUSH
2479: LD_INT 3
2481: PPUSH
2482: CALL_OW 173
// end ;
2486: GO 2402
2488: POP
2489: POP
// DriversGone = true ;
2490: LD_ADDR_EXP 11
2494: PUSH
2495: LD_INT 1
2497: ST_TO_ADDR
// end ;
2498: PPOPN 3
2500: END
// every 0 0$1 trigger DriversGone do var i ;
2501: LD_EXP 11
2505: IFFALSE 2553
2507: GO 2509
2509: DISABLE
2510: LD_INT 0
2512: PPUSH
// begin enable ;
2513: ENABLE
// for i in FilterUnitsInArea ( DriversExit , [ f_side , 4 ] ) do
2514: LD_ADDR_VAR 0 1
2518: PUSH
2519: LD_INT 3
2521: PPUSH
2522: LD_INT 22
2524: PUSH
2525: LD_INT 4
2527: PUSH
2528: EMPTY
2529: LIST
2530: LIST
2531: PPUSH
2532: CALL_OW 70
2536: PUSH
2537: FOR_IN
2538: IFFALSE 2551
// RemoveUnit ( i ) ;
2540: LD_VAR 0 1
2544: PPUSH
2545: CALL_OW 64
2549: GO 2537
2551: POP
2552: POP
// end ;
2553: PPOPN 1
2555: END
// export function CheckTransport ; var t , i ; begin
2556: LD_INT 0
2558: PPUSH
2559: PPUSH
2560: PPUSH
// t = FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_cargo_bay ] ] ) ;
2561: LD_ADDR_VAR 0 2
2565: PUSH
2566: LD_INT 22
2568: PUSH
2569: LD_INT 1
2571: PUSH
2572: EMPTY
2573: LIST
2574: LIST
2575: PUSH
2576: LD_INT 34
2578: PUSH
2579: LD_INT 12
2581: PUSH
2582: EMPTY
2583: LIST
2584: LIST
2585: PUSH
2586: EMPTY
2587: LIST
2588: LIST
2589: PPUSH
2590: CALL_OW 69
2594: ST_TO_ADDR
// FullTrucks = [ ] ;
2595: LD_ADDR_EXP 6
2599: PUSH
2600: EMPTY
2601: ST_TO_ADDR
// for i in t do
2602: LD_ADDR_VAR 0 3
2606: PUSH
2607: LD_VAR 0 2
2611: PUSH
2612: FOR_IN
2613: IFFALSE 2651
// if GetCargo ( i , mat_oil ) = 100 then
2615: LD_VAR 0 3
2619: PPUSH
2620: LD_INT 2
2622: PPUSH
2623: CALL_OW 289
2627: PUSH
2628: LD_INT 100
2630: EQUAL
2631: IFFALSE 2649
// FullTrucks = FullTrucks ^ i ;
2633: LD_ADDR_EXP 6
2637: PUSH
2638: LD_EXP 6
2642: PUSH
2643: LD_VAR 0 3
2647: ADD
2648: ST_TO_ADDR
2649: GO 2612
2651: POP
2652: POP
// end ;
2653: LD_VAR 0 1
2657: RET
// export HoldPosition ; every 0 0$1 trigger DriversGone do
2658: LD_EXP 11
2662: IFFALSE 2770
2664: GO 2666
2666: DISABLE
// begin Wait ( 1 1$30 ) ;
2667: LD_INT 3150
2669: PPUSH
2670: CALL_OW 67
// DialogueOn ;
2674: CALL_OW 6
// SayRadio ( Drivers [ 1 ] , df-s-1 ) ;
2678: LD_EXP 8
2682: PUSH
2683: LD_INT 1
2685: ARRAY
2686: PPUSH
2687: LD_STRING df-s-1
2689: PPUSH
2690: CALL_OW 94
// SayRadio ( Hayes , df-h-1 ) ;
2694: LD_EXP 3
2698: PPUSH
2699: LD_STRING df-h-1
2701: PPUSH
2702: CALL_OW 94
// SayRadio ( Drivers [ 1 ] , df-s-2 ) ;
2706: LD_EXP 8
2710: PUSH
2711: LD_INT 1
2713: ARRAY
2714: PPUSH
2715: LD_STRING df-s-2
2717: PPUSH
2718: CALL_OW 94
// SayRadio ( Hayes , df-h-2 ) ;
2722: LD_EXP 3
2726: PPUSH
2727: LD_STRING df-h-2
2729: PPUSH
2730: CALL_OW 94
// Say ( Alex , df-a-1 ) ;
2734: LD_EXP 1
2738: PPUSH
2739: LD_STRING df-a-1
2741: PPUSH
2742: CALL_OW 88
// SayRadio ( Hayes , df-h-3 ) ;
2746: LD_EXP 3
2750: PPUSH
2751: LD_STRING df-h-3
2753: PPUSH
2754: CALL_OW 94
// DialogueOff ;
2758: CALL_OW 7
// HoldPosition = true ;
2762: LD_ADDR_EXP 13
2766: PUSH
2767: LD_INT 1
2769: ST_TO_ADDR
// end ;
2770: END
// export Timer ; every 0 0$1 trigger HoldPosition do
2771: LD_EXP 13
2775: IFFALSE 2832
2777: GO 2779
2779: DISABLE
// begin enable ;
2780: ENABLE
// if FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_oil_mine ] , [ f_ok ] ] ) then
2781: LD_INT 22
2783: PUSH
2784: LD_INT 1
2786: PUSH
2787: EMPTY
2788: LIST
2789: LIST
2790: PUSH
2791: LD_INT 30
2793: PUSH
2794: LD_INT 29
2796: PUSH
2797: EMPTY
2798: LIST
2799: LIST
2800: PUSH
2801: LD_INT 50
2803: PUSH
2804: EMPTY
2805: LIST
2806: PUSH
2807: EMPTY
2808: LIST
2809: LIST
2810: LIST
2811: PPUSH
2812: CALL_OW 69
2816: IFFALSE 2832
// Timer = Timer + 0 0$1 ;
2818: LD_ADDR_EXP 14
2822: PUSH
2823: LD_EXP 14
2827: PUSH
2828: LD_INT 35
2830: PLUS
2831: ST_TO_ADDR
// end ;
2832: END
// every 0 0$1 trigger Timer > 2 2$0 and ContactTime ( 1 ) > 1 1$0 do var h ;
2833: LD_EXP 14
2837: PUSH
2838: LD_INT 4200
2840: GREATER
2841: PUSH
2842: LD_INT 1
2844: PPUSH
2845: CALL_OW 462
2849: PUSH
2850: LD_INT 2100
2852: GREATER
2853: AND
2854: IFFALSE 3061
2856: GO 2858
2858: DISABLE
2859: LD_INT 0
2861: PPUSH
// begin uc_side = 7 ;
2862: LD_ADDR_OWVAR 20
2866: PUSH
2867: LD_INT 7
2869: ST_TO_ADDR
// uc_nation = 1 ;
2870: LD_ADDR_OWVAR 21
2874: PUSH
2875: LD_INT 1
2877: ST_TO_ADDR
// PrepareScientist ( 1 , 0 ) ;
2878: LD_INT 1
2880: PPUSH
2881: LD_INT 0
2883: PPUSH
2884: CALL_OW 384
// h = CreateHuman ;
2888: LD_ADDR_VAR 0 1
2892: PUSH
2893: CALL_OW 44
2897: ST_TO_ADDR
// InGameOn ;
2898: CALL_OW 8
// if IsInUnit ( Alex ) then
2902: LD_EXP 1
2906: PPUSH
2907: CALL_OW 310
2911: IFFALSE 2929
// CenterOnUnits ( IsInUnit ( Alex ) ) else
2913: LD_EXP 1
2917: PPUSH
2918: CALL_OW 310
2922: PPUSH
2923: CALL_OW 85
2927: GO 2938
// CenterOnUnits ( Alex ) ;
2929: LD_EXP 1
2933: PPUSH
2934: CALL_OW 85
// Wait ( 0 0$0.5 ) ;
2938: LD_INT 18
2940: PPUSH
2941: CALL_OW 67
// SayRadio ( Hayes , de-h-1 ) ;
2945: LD_EXP 3
2949: PPUSH
2950: LD_STRING de-h-1
2952: PPUSH
2953: CALL_OW 94
// Say ( Alex , de-a-1 ) ;
2957: LD_EXP 1
2961: PPUSH
2962: LD_STRING de-a-1
2964: PPUSH
2965: CALL_OW 88
// SayRadio ( Hayes , de-h-2 ) ;
2969: LD_EXP 3
2973: PPUSH
2974: LD_STRING de-h-2
2976: PPUSH
2977: CALL_OW 94
// Say ( Alex , de-a-2 ) ;
2981: LD_EXP 1
2985: PPUSH
2986: LD_STRING de-a-2
2988: PPUSH
2989: CALL_OW 88
// SayRadio ( Hayes , de-h-3 ) ;
2993: LD_EXP 3
2997: PPUSH
2998: LD_STRING de-h-3
3000: PPUSH
3001: CALL_OW 94
// SayRadio ( h , de-s-1 ) ;
3005: LD_VAR 0 1
3009: PPUSH
3010: LD_STRING de-s-1
3012: PPUSH
3013: CALL_OW 94
// Say ( Alex , de-a-3 ) ;
3017: LD_EXP 1
3021: PPUSH
3022: LD_STRING de-a-3
3024: PPUSH
3025: CALL_OW 88
// SayRadio ( Hayes , de-h-4 ) ;
3029: LD_EXP 3
3033: PPUSH
3034: LD_STRING de-h-4
3036: PPUSH
3037: CALL_OW 94
// Say ( Alex , de-a-4 ) ;
3041: LD_EXP 1
3045: PPUSH
3046: LD_STRING de-a-4
3048: PPUSH
3049: CALL_OW 88
// InGameOff ;
3053: CALL_OW 9
// SaveAndEnd ;
3057: CALL 741 0 0
// end ; end_of_file
3061: PPOPN 1
3063: END
// var ArabianBase ; var Engineer , Defences , RepairStrategy ; function PrepareArabBase ; var i , h , s ; var pos ; begin
3064: LD_INT 0
3066: PPUSH
3067: PPUSH
3068: PPUSH
3069: PPUSH
3070: PPUSH
// uc_side = 2 ;
3071: LD_ADDR_OWVAR 20
3075: PUSH
3076: LD_INT 2
3078: ST_TO_ADDR
// uc_nation = 2 ;
3079: LD_ADDR_OWVAR 21
3083: PUSH
3084: LD_INT 2
3086: ST_TO_ADDR
// InitHc ;
3087: CALL_OW 19
// s = [ Rand ( 2 , 3 ) , Rand ( 2 , 3 ) , Rand ( 2 , 4 ) ] [ difficulty ] ;
3091: LD_ADDR_VAR 0 4
3095: PUSH
3096: LD_INT 2
3098: PPUSH
3099: LD_INT 3
3101: PPUSH
3102: CALL_OW 12
3106: PUSH
3107: LD_INT 2
3109: PPUSH
3110: LD_INT 3
3112: PPUSH
3113: CALL_OW 12
3117: PUSH
3118: LD_INT 2
3120: PPUSH
3121: LD_INT 4
3123: PPUSH
3124: CALL_OW 12
3128: PUSH
3129: EMPTY
3130: LIST
3131: LIST
3132: LIST
3133: PUSH
3134: LD_OWVAR 67
3138: ARRAY
3139: ST_TO_ADDR
// Defences = FilterUnitsInArea ( ArabianBaseArea , [ [ f_side , 2 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
3140: LD_ADDR_LOC 3
3144: PUSH
3145: LD_INT 4
3147: PPUSH
3148: LD_INT 22
3150: PUSH
3151: LD_INT 2
3153: PUSH
3154: EMPTY
3155: LIST
3156: LIST
3157: PUSH
3158: LD_INT 2
3160: PUSH
3161: LD_INT 30
3163: PUSH
3164: LD_INT 31
3166: PUSH
3167: EMPTY
3168: LIST
3169: LIST
3170: PUSH
3171: LD_INT 30
3173: PUSH
3174: LD_INT 32
3176: PUSH
3177: EMPTY
3178: LIST
3179: LIST
3180: PUSH
3181: EMPTY
3182: LIST
3183: LIST
3184: LIST
3185: PUSH
3186: EMPTY
3187: LIST
3188: LIST
3189: PPUSH
3190: CALL_OW 70
3194: ST_TO_ADDR
// for i in Defences do
3195: LD_ADDR_VAR 0 2
3199: PUSH
3200: LD_LOC 3
3204: PUSH
3205: FOR_IN
3206: IFFALSE 3248
// begin InitHc ;
3208: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
3212: LD_INT 1
3214: PPUSH
3215: LD_INT 2
3217: PPUSH
3218: CALL_OW 12
3222: PPUSH
3223: LD_VAR 0 4
3227: PPUSH
3228: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , i ) ;
3232: CALL_OW 44
3236: PPUSH
3237: LD_VAR 0 2
3241: PPUSH
3242: CALL_OW 52
// end ;
3246: GO 3205
3248: POP
3249: POP
// if difficulty > 1 then
3250: LD_OWVAR 67
3254: PUSH
3255: LD_INT 1
3257: GREATER
3258: IFFALSE 3391
// begin pos = [ [ 44 , 47 ] , [ 36 , 41 ] , [ 51 , 58 ] ] ;
3260: LD_ADDR_VAR 0 5
3264: PUSH
3265: LD_INT 44
3267: PUSH
3268: LD_INT 47
3270: PUSH
3271: EMPTY
3272: LIST
3273: LIST
3274: PUSH
3275: LD_INT 36
3277: PUSH
3278: LD_INT 41
3280: PUSH
3281: EMPTY
3282: LIST
3283: LIST
3284: PUSH
3285: LD_INT 51
3287: PUSH
3288: LD_INT 58
3290: PUSH
3291: EMPTY
3292: LIST
3293: LIST
3294: PUSH
3295: EMPTY
3296: LIST
3297: LIST
3298: LIST
3299: ST_TO_ADDR
// for i = 1 to [ 0 , 2 , 3 ] do
3300: LD_ADDR_VAR 0 2
3304: PUSH
3305: DOUBLE
3306: LD_INT 1
3308: DEC
3309: ST_TO_ADDR
3310: LD_INT 0
3312: PUSH
3313: LD_INT 2
3315: PUSH
3316: LD_INT 3
3318: PUSH
3319: EMPTY
3320: LIST
3321: LIST
3322: LIST
3323: PUSH
3324: FOR_TO
3325: IFFALSE 3389
// begin PrepareSoldier ( false , Rand ( 2 , 4 ) ) ;
3327: LD_INT 0
3329: PPUSH
3330: LD_INT 2
3332: PPUSH
3333: LD_INT 4
3335: PPUSH
3336: CALL_OW 12
3340: PPUSH
3341: CALL_OW 381
// PlaceUnitXY ( CreateHuman , pos [ i ] [ 1 ] , pos [ i ] [ 2 ] , false ) ;
3345: CALL_OW 44
3349: PPUSH
3350: LD_VAR 0 5
3354: PUSH
3355: LD_VAR 0 2
3359: ARRAY
3360: PUSH
3361: LD_INT 1
3363: ARRAY
3364: PPUSH
3365: LD_VAR 0 5
3369: PUSH
3370: LD_VAR 0 2
3374: ARRAY
3375: PUSH
3376: LD_INT 2
3378: ARRAY
3379: PPUSH
3380: LD_INT 0
3382: PPUSH
3383: CALL_OW 48
// end ;
3387: GO 3324
3389: POP
3390: POP
// end ; PrepareMechanic ( Rand ( 1 , 2 ) , [ 2 , 3 , 4 ] [ difficulty ] ) ;
3391: LD_INT 1
3393: PPUSH
3394: LD_INT 2
3396: PPUSH
3397: CALL_OW 12
3401: PPUSH
3402: LD_INT 2
3404: PUSH
3405: LD_INT 3
3407: PUSH
3408: LD_INT 4
3410: PUSH
3411: EMPTY
3412: LIST
3413: LIST
3414: LIST
3415: PUSH
3416: LD_OWVAR 67
3420: ARRAY
3421: PPUSH
3422: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , a_v ) ;
3426: CALL_OW 44
3430: PPUSH
3431: LD_INT 14
3433: PPUSH
3434: CALL_OW 52
// PrepareEngineer ( Rand ( 1 , 2 ) , s ) ;
3438: LD_INT 1
3440: PPUSH
3441: LD_INT 2
3443: PPUSH
3444: CALL_OW 12
3448: PPUSH
3449: LD_VAR 0 4
3453: PPUSH
3454: CALL_OW 382
// Engineer = CreateHuman ;
3458: LD_ADDR_LOC 2
3462: PUSH
3463: CALL_OW 44
3467: ST_TO_ADDR
// PlaceUnitXY ( Engineer , 40 , 48 , false ) ;
3468: LD_LOC 2
3472: PPUSH
3473: LD_INT 40
3475: PPUSH
3476: LD_INT 48
3478: PPUSH
3479: LD_INT 0
3481: PPUSH
3482: CALL_OW 48
// ArabianBase = FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) ;
3486: LD_ADDR_LOC 1
3490: PUSH
3491: LD_INT 22
3493: PUSH
3494: LD_INT 2
3496: PUSH
3497: EMPTY
3498: LIST
3499: LIST
3500: PUSH
3501: LD_INT 21
3503: PUSH
3504: LD_INT 1
3506: PUSH
3507: EMPTY
3508: LIST
3509: LIST
3510: PUSH
3511: EMPTY
3512: LIST
3513: LIST
3514: PPUSH
3515: CALL_OW 69
3519: ST_TO_ADDR
// end ;
3520: LD_VAR 0 1
3524: RET
// every 0 0$1 do
3525: GO 3527
3527: DISABLE
// PrepareArabBase ;
3528: CALL 3064 0 0
3532: END
// every 0 0$1 trigger IsOK ( Engineer ) do
3533: LD_LOC 2
3537: PPUSH
3538: CALL_OW 302
3542: IFFALSE 3763
3544: GO 3546
3546: DISABLE
// begin enable ;
3547: ENABLE
// if ExistMc ( RepairStrategy ) and FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
3548: LD_LOC 4
3552: PPUSH
3553: CALL_OW 386
3557: PUSH
3558: LD_INT 22
3560: PUSH
3561: LD_INT 1
3563: PUSH
3564: EMPTY
3565: LIST
3566: LIST
3567: PUSH
3568: LD_INT 101
3570: PUSH
3571: LD_INT 2
3573: PUSH
3574: EMPTY
3575: LIST
3576: LIST
3577: PUSH
3578: EMPTY
3579: LIST
3580: LIST
3581: PPUSH
3582: CALL_OW 69
3586: AND
3587: IFFALSE 3610
// begin KillMc ( RepairStrategy ) ;
3589: LD_LOC 4
3593: PPUSH
3594: CALL_OW 387
// ComEnterUnit ( Engineer , a_d ) ;
3598: LD_LOC 2
3602: PPUSH
3603: LD_INT 7
3605: PPUSH
3606: CALL_OW 120
// end ; if not ExistMc ( RepairStrategy ) and not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
3610: LD_LOC 4
3614: PPUSH
3615: CALL_OW 386
3619: NOT
3620: PUSH
3621: LD_INT 22
3623: PUSH
3624: LD_INT 1
3626: PUSH
3627: EMPTY
3628: LIST
3629: LIST
3630: PUSH
3631: LD_INT 101
3633: PUSH
3634: LD_INT 2
3636: PUSH
3637: EMPTY
3638: LIST
3639: LIST
3640: PUSH
3641: EMPTY
3642: LIST
3643: LIST
3644: PPUSH
3645: CALL_OW 69
3649: NOT
3650: AND
3651: IFFALSE 3709
// begin ComExitBuilding ( Engineer ) ;
3653: LD_LOC 2
3657: PPUSH
3658: CALL_OW 122
// RepairStrategy = McRepair ( 2 , Engineer , Defences , [ [ mcr_bui_limit , 1000 ] , [ mcr_area_only , ArabianBaseArea ] ] ) ;
3662: LD_ADDR_LOC 4
3666: PUSH
3667: LD_INT 2
3669: PPUSH
3670: LD_LOC 2
3674: PPUSH
3675: LD_LOC 3
3679: PPUSH
3680: LD_INT 6
3682: PUSH
3683: LD_INT 1000
3685: PUSH
3686: EMPTY
3687: LIST
3688: LIST
3689: PUSH
3690: LD_INT 3
3692: PUSH
3693: LD_INT 4
3695: PUSH
3696: EMPTY
3697: LIST
3698: LIST
3699: PUSH
3700: EMPTY
3701: LIST
3702: LIST
3703: PPUSH
3704: CALL_OW 414
3708: ST_TO_ADDR
// end ; if not HasTask ( Engineer ) and GetListOfCratesInArea ( ArabianBaseArea ) then
3709: LD_LOC 2
3713: PPUSH
3714: CALL_OW 314
3718: NOT
3719: PUSH
3720: LD_INT 4
3722: PPUSH
3723: CALL_OW 435
3727: AND
3728: IFFALSE 3763
// ComCollect ( Engineer , GetListOfCratesInArea ( ArabianBaseArea ) [ 1 ] , GetListOfCratesInArea ( ArabianBaseArea ) [ 2 ] ) ;
3730: LD_LOC 2
3734: PPUSH
3735: LD_INT 4
3737: PPUSH
3738: CALL_OW 435
3742: PUSH
3743: LD_INT 1
3745: ARRAY
3746: PPUSH
3747: LD_INT 4
3749: PPUSH
3750: CALL_OW 435
3754: PUSH
3755: LD_INT 2
3757: ARRAY
3758: PPUSH
3759: CALL_OW 117
// end ;
3763: END
// every 0 0$1 trigger IsDead ( Engineer ) do
3764: LD_LOC 2
3768: PPUSH
3769: CALL_OW 301
3773: IFFALSE 3787
3775: GO 3777
3777: DISABLE
// KillMc ( RepairStrategy ) ;
3778: LD_LOC 4
3782: PPUSH
3783: CALL_OW 387
3787: END
// export EvacuateArabs ; every 0 0$1 trigger UnitFilter ( Defences , [ f_ok ] ) = 0 and not IsOK ( a_v ) do var i ;
3788: LD_LOC 3
3792: PPUSH
3793: LD_INT 50
3795: PUSH
3796: EMPTY
3797: LIST
3798: PPUSH
3799: CALL_OW 72
3803: PUSH
3804: LD_INT 0
3806: EQUAL
3807: PUSH
3808: LD_INT 14
3810: PPUSH
3811: CALL_OW 302
3815: NOT
3816: AND
3817: IFFALSE 3891
3819: GO 3821
3821: DISABLE
3822: LD_INT 0
3824: PPUSH
// begin KillMc ( RepairStrategy ) ;
3825: LD_LOC 4
3829: PPUSH
3830: CALL_OW 387
// EvacuateArabs = true ;
3834: LD_ADDR_EXP 15
3838: PUSH
3839: LD_INT 1
3841: ST_TO_ADDR
// for i in UnitFilter ( ArabianBase , [ f_ok ] ) do
3842: LD_ADDR_VAR 0 1
3846: PUSH
3847: LD_LOC 1
3851: PPUSH
3852: LD_INT 50
3854: PUSH
3855: EMPTY
3856: LIST
3857: PPUSH
3858: CALL_OW 72
3862: PUSH
3863: FOR_IN
3864: IFFALSE 3889
// begin ComExitBuilding ( i ) ;
3866: LD_VAR 0 1
3870: PPUSH
3871: CALL_OW 122
// ComMoveToArea ( i , ArabExit ) ;
3875: LD_VAR 0 1
3879: PPUSH
3880: LD_INT 1
3882: PPUSH
3883: CALL_OW 113
// end ;
3887: GO 3863
3889: POP
3890: POP
// end ;
3891: PPOPN 1
3893: END
// function CheckGuard ( un , area , x , y ) ; begin
3894: LD_INT 0
3896: PPUSH
// if not IsInArea ( un , area ) then
3897: LD_VAR 0 1
3901: PPUSH
3902: LD_VAR 0 2
3906: PPUSH
3907: CALL_OW 308
3911: NOT
3912: IFFALSE 3933
// ComMoveXY ( un , x , y ) ;
3914: LD_VAR 0 1
3918: PPUSH
3919: LD_VAR 0 3
3923: PPUSH
3924: LD_VAR 0 4
3928: PPUSH
3929: CALL_OW 111
// end ;
3933: LD_VAR 0 5
3937: RET
// every 0 0$3 do
3938: GO 3940
3940: DISABLE
// begin enable ;
3941: ENABLE
// if not EvacuateArabs then
3942: LD_EXP 15
3946: NOT
3947: IFFALSE 3965
// CheckGuard ( a_v , ArabianBaseArea , 36 , 44 ) ;
3949: LD_INT 14
3951: PPUSH
3952: LD_INT 4
3954: PPUSH
3955: LD_INT 36
3957: PPUSH
3958: LD_INT 44
3960: PPUSH
3961: CALL 3894 0 4
// end ; end_of_file
3965: END
// export ArabianBaseTargets ; every 0 0$1 trigger EvacuateArabs do
3966: LD_EXP 15
3970: IFFALSE 4020
3972: GO 3974
3974: DISABLE
// ArabianBaseTargets = McRegistry ( 2 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , ArabianBaseArea ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
3975: LD_ADDR_EXP 16
3979: PUSH
3980: LD_INT 2
3982: PPUSH
3983: LD_INT 1
3985: PUSH
3986: LD_INT 105
3988: PUSH
3989: EMPTY
3990: LIST
3991: LIST
3992: PUSH
3993: LD_INT 2
3995: PUSH
3996: LD_INT 4
3998: PUSH
3999: EMPTY
4000: LIST
4001: LIST
4002: PUSH
4003: LD_INT 7
4005: PUSH
4006: LD_INT 9
4008: PUSH
4009: EMPTY
4010: LIST
4011: LIST
4012: LIST
4013: LIST
4014: PPUSH
4015: CALL_OW 399
4019: ST_TO_ADDR
4020: END
// export function PrepareAttack ( h , v , path ) ; var i , Attackers , Attack ; begin
4021: LD_INT 0
4023: PPUSH
4024: PPUSH
4025: PPUSH
4026: PPUSH
// uc_side = 2 ;
4027: LD_ADDR_OWVAR 20
4031: PUSH
4032: LD_INT 2
4034: ST_TO_ADDR
// uc_nation = nation_arabian ;
4035: LD_ADDR_OWVAR 21
4039: PUSH
4040: LD_INT 2
4042: ST_TO_ADDR
// InitHc ;
4043: CALL_OW 19
// for i = 1 to h do
4047: LD_ADDR_VAR 0 5
4051: PUSH
4052: DOUBLE
4053: LD_INT 1
4055: DEC
4056: ST_TO_ADDR
4057: LD_VAR 0 1
4061: PUSH
4062: FOR_TO
4063: IFFALSE 4134
// begin PrepareSoldier ( false , [ Rand ( 2 , 3 ) , Rand ( 2 , 3 ) , Rand ( 2 , 4 ) ] [ difficulty ] ) ;
4065: LD_INT 0
4067: PPUSH
4068: LD_INT 2
4070: PPUSH
4071: LD_INT 3
4073: PPUSH
4074: CALL_OW 12
4078: PUSH
4079: LD_INT 2
4081: PPUSH
4082: LD_INT 3
4084: PPUSH
4085: CALL_OW 12
4089: PUSH
4090: LD_INT 2
4092: PPUSH
4093: LD_INT 4
4095: PPUSH
4096: CALL_OW 12
4100: PUSH
4101: EMPTY
4102: LIST
4103: LIST
4104: LIST
4105: PUSH
4106: LD_OWVAR 67
4110: ARRAY
4111: PPUSH
4112: CALL_OW 381
// Attackers = Attackers ^ CreateHuman ;
4116: LD_ADDR_VAR 0 6
4120: PUSH
4121: LD_VAR 0 6
4125: PUSH
4126: CALL_OW 44
4130: ADD
4131: ST_TO_ADDR
// end ;
4132: GO 4062
4134: POP
4135: POP
// for i = 1 to v do
4136: LD_ADDR_VAR 0 5
4140: PUSH
4141: DOUBLE
4142: LD_INT 1
4144: DEC
4145: ST_TO_ADDR
4146: LD_VAR 0 2
4150: PUSH
4151: FOR_TO
4152: IFFALSE 4289
// begin case Rand ( 1 , 2 ) of 1 :
4154: LD_INT 1
4156: PPUSH
4157: LD_INT 2
4159: PPUSH
4160: CALL_OW 12
4164: PUSH
4165: LD_INT 1
4167: DOUBLE
4168: EQUAL
4169: IFTRUE 4173
4171: GO 4227
4173: POP
// begin vc_chassis = ar_light_trike ;
4174: LD_ADDR_OWVAR 37
4178: PUSH
4179: LD_INT 12
4181: ST_TO_ADDR
// vc_engine = engine_combustion ;
4182: LD_ADDR_OWVAR 39
4186: PUSH
4187: LD_INT 1
4189: ST_TO_ADDR
// vc_control = control_manual ;
4190: LD_ADDR_OWVAR 38
4194: PUSH
4195: LD_INT 1
4197: ST_TO_ADDR
// vc_weapon = [ ar_double_machine_gun , ar_multimissile_ballista ] [ Rand ( 1 , 2 ) ] ;
4198: LD_ADDR_OWVAR 40
4202: PUSH
4203: LD_INT 24
4205: PUSH
4206: LD_INT 22
4208: PUSH
4209: EMPTY
4210: LIST
4211: LIST
4212: PUSH
4213: LD_INT 1
4215: PPUSH
4216: LD_INT 2
4218: PPUSH
4219: CALL_OW 12
4223: ARRAY
4224: ST_TO_ADDR
// end ; 2 :
4225: GO 4271
4227: LD_INT 2
4229: DOUBLE
4230: EQUAL
4231: IFTRUE 4235
4233: GO 4270
4235: POP
// begin vc_chassis = ar_medium_trike ;
4236: LD_ADDR_OWVAR 37
4240: PUSH
4241: LD_INT 13
4243: ST_TO_ADDR
// vc_engine = engine_combustion ;
4244: LD_ADDR_OWVAR 39
4248: PUSH
4249: LD_INT 1
4251: ST_TO_ADDR
// vc_control = control_manual ;
4252: LD_ADDR_OWVAR 38
4256: PUSH
4257: LD_INT 1
4259: ST_TO_ADDR
// vc_weapon = ar_gatling_gun ;
4260: LD_ADDR_OWVAR 40
4264: PUSH
4265: LD_INT 25
4267: ST_TO_ADDR
// end ; end ;
4268: GO 4271
4270: POP
// Attackers = Attackers ^ CreateVehicle ;
4271: LD_ADDR_VAR 0 6
4275: PUSH
4276: LD_VAR 0 6
4280: PUSH
4281: CALL_OW 45
4285: ADD
4286: ST_TO_ADDR
// end ;
4287: GO 4151
4289: POP
4290: POP
// for i in Attackers do
4291: LD_ADDR_VAR 0 5
4295: PUSH
4296: LD_VAR 0 6
4300: PUSH
4301: FOR_IN
4302: IFFALSE 4377
// begin PlaceUnitArea ( i , ArabEnter , false ) ;
4304: LD_VAR 0 5
4308: PPUSH
4309: LD_INT 8
4311: PPUSH
4312: LD_INT 0
4314: PPUSH
4315: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
4319: LD_VAR 0 5
4323: PPUSH
4324: CALL_OW 247
4328: PUSH
4329: LD_INT 2
4331: EQUAL
4332: IFFALSE 4375
// begin PrepareMechanic ( false , [ 2 , 3 , 3 ] [ difficulty ] ) ;
4334: LD_INT 0
4336: PPUSH
4337: LD_INT 2
4339: PUSH
4340: LD_INT 3
4342: PUSH
4343: LD_INT 3
4345: PUSH
4346: EMPTY
4347: LIST
4348: LIST
4349: LIST
4350: PUSH
4351: LD_OWVAR 67
4355: ARRAY
4356: PPUSH
4357: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
4361: CALL_OW 44
4365: PPUSH
4366: LD_VAR 0 5
4370: PPUSH
4371: CALL_OW 52
// end ; end ;
4375: GO 4301
4377: POP
4378: POP
// case path of 1 :
4379: LD_VAR 0 3
4383: PUSH
4384: LD_INT 1
4386: DOUBLE
4387: EQUAL
4388: IFTRUE 4392
4390: GO 4516
4392: POP
// Attack = McMove ( 1 , Attackers , [ [ 78 , 39 ] , [ 98 , 53 ] , [ [ 114 , 31 ] , [ 143 , 47 ] ] [ Rand ( 1 , 2 ) ] , [ 135 , 23 ] , [ 44 , 50 ] ] , [ [ mc_move_agressive ] , [ mc_move_wait , 8 ] ] ) ; 2 :
4393: LD_ADDR_VAR 0 7
4397: PUSH
4398: LD_INT 1
4400: PPUSH
4401: LD_VAR 0 6
4405: PPUSH
4406: LD_INT 78
4408: PUSH
4409: LD_INT 39
4411: PUSH
4412: EMPTY
4413: LIST
4414: LIST
4415: PUSH
4416: LD_INT 98
4418: PUSH
4419: LD_INT 53
4421: PUSH
4422: EMPTY
4423: LIST
4424: LIST
4425: PUSH
4426: LD_INT 114
4428: PUSH
4429: LD_INT 31
4431: PUSH
4432: EMPTY
4433: LIST
4434: LIST
4435: PUSH
4436: LD_INT 143
4438: PUSH
4439: LD_INT 47
4441: PUSH
4442: EMPTY
4443: LIST
4444: LIST
4445: PUSH
4446: EMPTY
4447: LIST
4448: LIST
4449: PUSH
4450: LD_INT 1
4452: PPUSH
4453: LD_INT 2
4455: PPUSH
4456: CALL_OW 12
4460: ARRAY
4461: PUSH
4462: LD_INT 135
4464: PUSH
4465: LD_INT 23
4467: PUSH
4468: EMPTY
4469: LIST
4470: LIST
4471: PUSH
4472: LD_INT 44
4474: PUSH
4475: LD_INT 50
4477: PUSH
4478: EMPTY
4479: LIST
4480: LIST
4481: PUSH
4482: EMPTY
4483: LIST
4484: LIST
4485: LIST
4486: LIST
4487: LIST
4488: PPUSH
4489: LD_INT 6
4491: PUSH
4492: EMPTY
4493: LIST
4494: PUSH
4495: LD_INT 1
4497: PUSH
4498: LD_INT 8
4500: PUSH
4501: EMPTY
4502: LIST
4503: LIST
4504: PUSH
4505: EMPTY
4506: LIST
4507: LIST
4508: PPUSH
4509: CALL_OW 398
4513: ST_TO_ADDR
4514: GO 4557
4516: LD_INT 2
4518: DOUBLE
4519: EQUAL
4520: IFTRUE 4524
4522: GO 4556
4524: POP
// Attack = McAttack ( 1 , ArabianBaseTargets , Attackers , [ mc_murder ] ) ; end ;
4525: LD_ADDR_VAR 0 7
4529: PUSH
4530: LD_INT 1
4532: PPUSH
4533: LD_EXP 16
4537: PPUSH
4538: LD_VAR 0 6
4542: PPUSH
4543: LD_INT 12
4545: PUSH
4546: EMPTY
4547: LIST
4548: PPUSH
4549: CALL_OW 402
4553: ST_TO_ADDR
4554: GO 4557
4556: POP
// end ;
4557: LD_VAR 0 4
4561: RET
// every 0 0$1 do
4562: GO 4564
4564: DISABLE
// begin enable ;
4565: ENABLE
// case tick of 6 6$0 :
4566: LD_OWVAR 1
4570: PUSH
4571: LD_INT 12600
4573: DOUBLE
4574: EQUAL
4575: IFTRUE 4579
4577: GO 4629
4579: POP
// PrepareAttack ( [ 1 , 1 , 2 ] [ difficulty ] , [ 1 , 2 , 2 ] [ difficulty ] , 1 ) ; 15 15$0 :
4580: LD_INT 1
4582: PUSH
4583: LD_INT 1
4585: PUSH
4586: LD_INT 2
4588: PUSH
4589: EMPTY
4590: LIST
4591: LIST
4592: LIST
4593: PUSH
4594: LD_OWVAR 67
4598: ARRAY
4599: PPUSH
4600: LD_INT 1
4602: PUSH
4603: LD_INT 2
4605: PUSH
4606: LD_INT 2
4608: PUSH
4609: EMPTY
4610: LIST
4611: LIST
4612: LIST
4613: PUSH
4614: LD_OWVAR 67
4618: ARRAY
4619: PPUSH
4620: LD_INT 1
4622: PPUSH
4623: CALL 4021 0 3
4627: GO 4671
4629: LD_INT 31500
4631: DOUBLE
4632: EQUAL
4633: IFTRUE 4637
4635: GO 4670
4637: POP
// PrepareAttack ( 0 , [ 2 , 3 , 3 ] [ difficulty ] , 1 ) ; end ;
4638: LD_INT 0
4640: PPUSH
4641: LD_INT 2
4643: PUSH
4644: LD_INT 3
4646: PUSH
4647: LD_INT 3
4649: PUSH
4650: EMPTY
4651: LIST
4652: LIST
4653: LIST
4654: PUSH
4655: LD_OWVAR 67
4659: ARRAY
4660: PPUSH
4661: LD_INT 1
4663: PPUSH
4664: CALL 4021 0 3
4668: GO 4671
4670: POP
// case TimeToTrucks of 8 8$0 :
4671: LD_EXP 7
4675: PUSH
4676: LD_INT 16800
4678: DOUBLE
4679: EQUAL
4680: IFTRUE 4684
4682: GO 4734
4684: POP
// PrepareAttack ( [ 2 , 3 , 3 ] [ difficulty ] , [ 1 , 1 , 2 ] [ difficulty ] , 2 ) ; 6 6$15 :
4685: LD_INT 2
4687: PUSH
4688: LD_INT 3
4690: PUSH
4691: LD_INT 3
4693: PUSH
4694: EMPTY
4695: LIST
4696: LIST
4697: LIST
4698: PUSH
4699: LD_OWVAR 67
4703: ARRAY
4704: PPUSH
4705: LD_INT 1
4707: PUSH
4708: LD_INT 1
4710: PUSH
4711: LD_INT 2
4713: PUSH
4714: EMPTY
4715: LIST
4716: LIST
4717: LIST
4718: PUSH
4719: LD_OWVAR 67
4723: ARRAY
4724: PPUSH
4725: LD_INT 2
4727: PPUSH
4728: CALL 4021 0 3
4732: GO 4817
4734: LD_INT 13125
4736: DOUBLE
4737: EQUAL
4738: IFTRUE 4742
4740: GO 4768
4742: POP
// if difficulty = 3 then
4743: LD_OWVAR 67
4747: PUSH
4748: LD_INT 3
4750: EQUAL
4751: IFFALSE 4766
// PrepareAttack ( 0 , 3 , 1 ) ; 3 3$30 :
4753: LD_INT 0
4755: PPUSH
4756: LD_INT 3
4758: PPUSH
4759: LD_INT 1
4761: PPUSH
4762: CALL 4021 0 3
4766: GO 4817
4768: LD_INT 7350
4770: DOUBLE
4771: EQUAL
4772: IFTRUE 4776
4774: GO 4792
4776: POP
// PrepareAttack ( 0 , 2 , 1 ) ; 2 2$0 :
4777: LD_INT 0
4779: PPUSH
4780: LD_INT 2
4782: PPUSH
4783: LD_INT 1
4785: PPUSH
4786: CALL 4021 0 3
4790: GO 4817
4792: LD_INT 4200
4794: DOUBLE
4795: EQUAL
4796: IFTRUE 4800
4798: GO 4816
4800: POP
// PrepareAttack ( 2 , 1 , 2 ) ; end ;
4801: LD_INT 2
4803: PPUSH
4804: LD_INT 1
4806: PPUSH
4807: LD_INT 2
4809: PPUSH
4810: CALL 4021 0 3
4814: GO 4817
4816: POP
// if Timer = 0 0$15 then
4817: LD_EXP 14
4821: PUSH
4822: LD_INT 525
4824: EQUAL
4825: IFFALSE 4874
// PrepareAttack ( [ 1 , 2 , 2 ] [ difficulty ] , [ 2 , 2 , 3 ] [ difficulty ] , 2 ) ;
4827: LD_INT 1
4829: PUSH
4830: LD_INT 2
4832: PUSH
4833: LD_INT 2
4835: PUSH
4836: EMPTY
4837: LIST
4838: LIST
4839: LIST
4840: PUSH
4841: LD_OWVAR 67
4845: ARRAY
4846: PPUSH
4847: LD_INT 2
4849: PUSH
4850: LD_INT 2
4852: PUSH
4853: LD_INT 3
4855: PUSH
4856: EMPTY
4857: LIST
4858: LIST
4859: LIST
4860: PUSH
4861: LD_OWVAR 67
4865: ARRAY
4866: PPUSH
4867: LD_INT 2
4869: PPUSH
4870: CALL 4021 0 3
// end ;
4874: END
// every 0 0$1 do var i , j ;
4875: GO 4877
4877: DISABLE
4878: LD_INT 0
4880: PPUSH
4881: PPUSH
// begin enable ;
4882: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) diff a_v do
4883: LD_ADDR_VAR 0 1
4887: PUSH
4888: LD_INT 22
4890: PUSH
4891: LD_INT 2
4893: PUSH
4894: EMPTY
4895: LIST
4896: LIST
4897: PUSH
4898: LD_INT 21
4900: PUSH
4901: LD_INT 2
4903: PUSH
4904: EMPTY
4905: LIST
4906: LIST
4907: PUSH
4908: EMPTY
4909: LIST
4910: LIST
4911: PPUSH
4912: CALL_OW 69
4916: PUSH
4917: LD_INT 14
4919: DIFF
4920: PUSH
4921: FOR_IN
4922: IFFALSE 5032
// begin if GetLives ( i ) < 500 or GetLives ( IsDrivenBy ( i ) ) < 500 then
4924: LD_VAR 0 1
4928: PPUSH
4929: CALL_OW 256
4933: PUSH
4934: LD_INT 500
4936: LESS
4937: PUSH
4938: LD_VAR 0 1
4942: PPUSH
4943: CALL_OW 311
4947: PPUSH
4948: CALL_OW 256
4952: PUSH
4953: LD_INT 500
4955: LESS
4956: OR
4957: IFFALSE 5007
// begin for j in GetUnitMc ( i ) do
4959: LD_ADDR_VAR 0 2
4963: PUSH
4964: LD_VAR 0 1
4968: PPUSH
4969: CALL_OW 388
4973: PUSH
4974: FOR_IN
4975: IFFALSE 4993
// RemoveMcUnits ( j , i ) ;
4977: LD_VAR 0 2
4981: PPUSH
4982: LD_VAR 0 1
4986: PPUSH
4987: CALL_OW 391
4991: GO 4974
4993: POP
4994: POP
// ComMoveToArea ( i , ArabExit ) ;
4995: LD_VAR 0 1
4999: PPUSH
5000: LD_INT 1
5002: PPUSH
5003: CALL_OW 113
// end ; if IsInArea ( i , ArabExit ) then
5007: LD_VAR 0 1
5011: PPUSH
5012: LD_INT 1
5014: PPUSH
5015: CALL_OW 308
5019: IFFALSE 5030
// RemoveUnit ( i ) ;
5021: LD_VAR 0 1
5025: PPUSH
5026: CALL_OW 64
// end ;
5030: GO 4921
5032: POP
5033: POP
// end ;
5034: PPOPN 2
5036: END
// export ArabianHillAttackers , ArabianHillTargets , ArabianHillAttack ; export ArabianHillMedic ; every 0 0$1 trigger ArabianHillAttackers = true do
5037: LD_EXP 17
5041: PUSH
5042: LD_INT 1
5044: EQUAL
5045: IFFALSE 5095
5047: GO 5049
5049: DISABLE
// ArabianHillTargets = McRegistry ( 2 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , HillTargetArea ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
5050: LD_ADDR_EXP 18
5054: PUSH
5055: LD_INT 2
5057: PPUSH
5058: LD_INT 1
5060: PUSH
5061: LD_INT 105
5063: PUSH
5064: EMPTY
5065: LIST
5066: LIST
5067: PUSH
5068: LD_INT 2
5070: PUSH
5071: LD_INT 7
5073: PUSH
5074: EMPTY
5075: LIST
5076: LIST
5077: PUSH
5078: LD_INT 7
5080: PUSH
5081: LD_INT 9
5083: PUSH
5084: EMPTY
5085: LIST
5086: LIST
5087: LIST
5088: LIST
5089: PPUSH
5090: CALL_OW 399
5094: ST_TO_ADDR
5095: END
// every 0 0$1 trigger ArabianHillAttackers = true do var i ;
5096: LD_EXP 17
5100: PUSH
5101: LD_INT 1
5103: EQUAL
5104: IFFALSE 5378
5106: GO 5108
5108: DISABLE
5109: LD_INT 0
5111: PPUSH
// begin enable ;
5112: ENABLE
// if not ExistMc ( ArabianHillAttack ) and UnitFilter ( ArabianHillAttackers , [ f_lives , 1000 ] ) = ArabianHillAttackers then
5113: LD_EXP 19
5117: PPUSH
5118: CALL_OW 386
5122: NOT
5123: PUSH
5124: LD_EXP 17
5128: PPUSH
5129: LD_INT 24
5131: PUSH
5132: LD_INT 1000
5134: PUSH
5135: EMPTY
5136: LIST
5137: LIST
5138: PPUSH
5139: CALL_OW 72
5143: PUSH
5144: LD_EXP 17
5148: EQUAL
5149: AND
5150: IFFALSE 5177
// ArabianHillAttack = McAttack ( 1 , ArabianHillTargets , ArabianHillAttackers , [ ] ) ;
5152: LD_ADDR_EXP 19
5156: PUSH
5157: LD_INT 1
5159: PPUSH
5160: LD_EXP 18
5164: PPUSH
5165: LD_EXP 17
5169: PPUSH
5170: EMPTY
5171: PPUSH
5172: CALL_OW 402
5176: ST_TO_ADDR
// if ExistMc ( ArabianHillAttack ) and GetMcUnits ( ArabianHillAttack ) = 0 then
5177: LD_EXP 19
5181: PPUSH
5182: CALL_OW 386
5186: PUSH
5187: LD_EXP 19
5191: PPUSH
5192: CALL_OW 389
5196: PUSH
5197: LD_INT 0
5199: EQUAL
5200: AND
5201: IFFALSE 5212
// KillMc ( ArabianHillAttack ) ;
5203: LD_EXP 19
5207: PPUSH
5208: CALL_OW 387
// if IsDead ( ArabianHillMedic ) then
5212: LD_EXP 20
5216: PPUSH
5217: CALL_OW 301
5221: IFFALSE 5264
// begin KillMc ( ArabianHillAttack ) ;
5223: LD_EXP 19
5227: PPUSH
5228: CALL_OW 387
// for i in ArabianHillAttackers do
5232: LD_ADDR_VAR 0 1
5236: PUSH
5237: LD_EXP 17
5241: PUSH
5242: FOR_IN
5243: IFFALSE 5262
// ComMoveXY ( i , 33 , 40 ) ;
5245: LD_VAR 0 1
5249: PPUSH
5250: LD_INT 33
5252: PPUSH
5253: LD_INT 40
5255: PPUSH
5256: CALL_OW 111
5260: GO 5242
5262: POP
5263: POP
// end ; for i in ArabianHillAttackers do
5264: LD_ADDR_VAR 0 1
5268: PUSH
5269: LD_EXP 17
5273: PUSH
5274: FOR_IN
5275: IFFALSE 5376
// begin if not IsInArea ( i , ArabHill ) then
5277: LD_VAR 0 1
5281: PPUSH
5282: LD_INT 2
5284: PPUSH
5285: CALL_OW 308
5289: NOT
5290: IFFALSE 5304
// ComMoveToArea ( i , ArabHill ) ;
5292: LD_VAR 0 1
5296: PPUSH
5297: LD_INT 2
5299: PPUSH
5300: CALL_OW 113
// if GetLives ( i ) < 700 then
5304: LD_VAR 0 1
5308: PPUSH
5309: CALL_OW 256
5313: PUSH
5314: LD_INT 700
5316: LESS
5317: IFFALSE 5347
// begin RemoveMcUnits ( ArabianHillAttack , i ) ;
5319: LD_EXP 19
5323: PPUSH
5324: LD_VAR 0 1
5328: PPUSH
5329: CALL_OW 391
// ComMoveUnit ( i , ArabianHillMedic ) ;
5333: LD_VAR 0 1
5337: PPUSH
5338: LD_EXP 20
5342: PPUSH
5343: CALL_OW 112
// end ; if IsDead ( i ) then
5347: LD_VAR 0 1
5351: PPUSH
5352: CALL_OW 301
5356: IFFALSE 5374
// ArabianHillAttackers = ArabianHillAttackers diff i ;
5358: LD_ADDR_EXP 17
5362: PUSH
5363: LD_EXP 17
5367: PUSH
5368: LD_VAR 0 1
5372: DIFF
5373: ST_TO_ADDR
// end ;
5374: GO 5274
5376: POP
5377: POP
// end ;
5378: PPOPN 1
5380: END
// every 10 10$0 do var a , i , h ;
5381: GO 5383
5383: DISABLE
5384: LD_INT 0
5386: PPUSH
5387: PPUSH
5388: PPUSH
// begin if difficulty = 1 then
5389: LD_OWVAR 67
5393: PUSH
5394: LD_INT 1
5396: EQUAL
5397: IFFALSE 5401
// exit ;
5399: GO 5623
// if SeeArea ( 4 , ArabianHillPosition ) then
5401: LD_INT 4
5403: PPUSH
5404: LD_INT 6
5406: PPUSH
5407: CALL_OW 294
5411: IFFALSE 5433
// repeat Wait ( 0 0$1 ) until not SeeArea ( 4 , ArabianHillPosition ) ;
5413: LD_INT 35
5415: PPUSH
5416: CALL_OW 67
5420: LD_INT 4
5422: PPUSH
5423: LD_INT 6
5425: PPUSH
5426: CALL_OW 294
5430: NOT
5431: IFFALSE 5413
// uc_side = 2 ;
5433: LD_ADDR_OWVAR 20
5437: PUSH
5438: LD_INT 2
5440: ST_TO_ADDR
// uc_nation = 2 ;
5441: LD_ADDR_OWVAR 21
5445: PUSH
5446: LD_INT 2
5448: ST_TO_ADDR
// a = [ 0 , 2 , 3 ] [ difficulty ] ;
5449: LD_ADDR_VAR 0 1
5453: PUSH
5454: LD_INT 0
5456: PUSH
5457: LD_INT 2
5459: PUSH
5460: LD_INT 3
5462: PUSH
5463: EMPTY
5464: LIST
5465: LIST
5466: LIST
5467: PUSH
5468: LD_OWVAR 67
5472: ARRAY
5473: ST_TO_ADDR
// for i = 1 to a do
5474: LD_ADDR_VAR 0 2
5478: PUSH
5479: DOUBLE
5480: LD_INT 1
5482: DEC
5483: ST_TO_ADDR
5484: LD_VAR 0 1
5488: PUSH
5489: FOR_TO
5490: IFFALSE 5565
// begin InitHc ;
5492: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , Rand ( 1 , 3 ) ) ;
5496: LD_INT 1
5498: PPUSH
5499: LD_INT 2
5501: PPUSH
5502: CALL_OW 12
5506: PPUSH
5507: LD_INT 1
5509: PPUSH
5510: LD_INT 3
5512: PPUSH
5513: CALL_OW 12
5517: PPUSH
5518: CALL_OW 381
// h = CreateHuman ;
5522: LD_ADDR_VAR 0 3
5526: PUSH
5527: CALL_OW 44
5531: ST_TO_ADDR
// PlaceUnitArea ( h , ArabianHillPosition , false ) ;
5532: LD_VAR 0 3
5536: PPUSH
5537: LD_INT 6
5539: PPUSH
5540: LD_INT 0
5542: PPUSH
5543: CALL_OW 49
// ArabianHillAttackers = ArabianHillAttackers ^ h ;
5547: LD_ADDR_EXP 17
5551: PUSH
5552: LD_EXP 17
5556: PUSH
5557: LD_VAR 0 3
5561: ADD
5562: ST_TO_ADDR
// end ;
5563: GO 5489
5565: POP
5566: POP
// InitHc ;
5567: CALL_OW 19
// PrepareScientist ( Rand ( 1 , 2 ) , 3 ) ;
5571: LD_INT 1
5573: PPUSH
5574: LD_INT 2
5576: PPUSH
5577: CALL_OW 12
5581: PPUSH
5582: LD_INT 3
5584: PPUSH
5585: CALL_OW 384
// ArabianHillMedic = CreateHuman ;
5589: LD_ADDR_EXP 20
5593: PUSH
5594: CALL_OW 44
5598: ST_TO_ADDR
// PlaceUnitArea ( ArabianHillMedic , ArabianHillPosition , false ) ;
5599: LD_EXP 20
5603: PPUSH
5604: LD_INT 6
5606: PPUSH
5607: LD_INT 0
5609: PPUSH
5610: CALL_OW 49
// ComHold ( ArabianHillMedic ) ;
5614: LD_EXP 20
5618: PPUSH
5619: CALL_OW 140
// end ;
5623: PPOPN 3
5625: END
// every 0 0$1 trigger FilterUnitsInArea ( ArabHill , [ [ f_side , 2 ] , [ f_see , 4 ] ] ) and FilterUnitsInArea ( ArabHill , [ f_side , 1 ] ) = 0 do var a ;
5626: LD_INT 2
5628: PPUSH
5629: LD_INT 22
5631: PUSH
5632: LD_INT 2
5634: PUSH
5635: EMPTY
5636: LIST
5637: LIST
5638: PUSH
5639: LD_INT 101
5641: PUSH
5642: LD_INT 4
5644: PUSH
5645: EMPTY
5646: LIST
5647: LIST
5648: PUSH
5649: EMPTY
5650: LIST
5651: LIST
5652: PPUSH
5653: CALL_OW 70
5657: PUSH
5658: LD_INT 2
5660: PPUSH
5661: LD_INT 22
5663: PUSH
5664: LD_INT 1
5666: PUSH
5667: EMPTY
5668: LIST
5669: LIST
5670: PPUSH
5671: CALL_OW 70
5675: PUSH
5676: LD_INT 0
5678: EQUAL
5679: AND
5680: IFFALSE 5778
5682: GO 5684
5684: DISABLE
5685: LD_INT 0
5687: PPUSH
// begin a = FilterUnitsInArea ( ArabHill , [ [ f_side , 2 ] , [ f_see , 4 ] ] ) ;
5688: LD_ADDR_VAR 0 1
5692: PUSH
5693: LD_INT 2
5695: PPUSH
5696: LD_INT 22
5698: PUSH
5699: LD_INT 2
5701: PUSH
5702: EMPTY
5703: LIST
5704: LIST
5705: PUSH
5706: LD_INT 101
5708: PUSH
5709: LD_INT 4
5711: PUSH
5712: EMPTY
5713: LIST
5714: LIST
5715: PUSH
5716: EMPTY
5717: LIST
5718: LIST
5719: PPUSH
5720: CALL_OW 70
5724: ST_TO_ADDR
// DialogueOn ;
5725: CALL_OW 6
// CenterOnUnits ( a ) ;
5729: LD_VAR 0 1
5733: PPUSH
5734: CALL_OW 85
// Say ( WhoFound ( FilterAllUnits ( [ f_side , 1 ] ) , a [ 1 ] ) , dh-s-1 ) ;
5738: LD_INT 22
5740: PUSH
5741: LD_INT 1
5743: PUSH
5744: EMPTY
5745: LIST
5746: LIST
5747: PPUSH
5748: CALL_OW 69
5752: PPUSH
5753: LD_VAR 0 1
5757: PUSH
5758: LD_INT 1
5760: ARRAY
5761: PPUSH
5762: CALL 425 0 2
5766: PPUSH
5767: LD_STRING dh-s-1
5769: PPUSH
5770: CALL_OW 88
// DialogueOff ;
5774: CALL_OW 7
// end ; end_of_file
5778: PPOPN 1
5780: END
// every 3 3$30 do
5781: GO 5783
5783: DISABLE
// begin CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
5784: LD_INT 2
5786: PPUSH
5787: LD_INT 5
5789: PPUSH
5790: CALL_OW 12
5794: PPUSH
5795: LD_INT 1
5797: PPUSH
5798: CALL_OW 57
// enable ;
5802: ENABLE
// end ;
5803: END
// every 2 2$0 marked 20 do
5804: GO 5806
5806: DISABLE
// begin CreateCratesXYR ( Rand ( 2 , 5 ) , 128 , 27 , 15 , true ) ;
5807: LD_INT 2
5809: PPUSH
5810: LD_INT 5
5812: PPUSH
5813: CALL_OW 12
5817: PPUSH
5818: LD_INT 128
5820: PPUSH
5821: LD_INT 27
5823: PPUSH
5824: LD_INT 15
5826: PPUSH
5827: LD_INT 1
5829: PPUSH
5830: CALL_OW 56
// enable ;
5834: ENABLE
// end ;
5835: END
// every 15 15$0 do
5836: GO 5838
5838: DISABLE
// disable ( 20 ) ;
5839: LD_INT 20
5841: DISABLE_MARKED
5842: END
