// export Antoine , Bojan , Ende , ArOthers ; export ArVehs ; export NoEnde ; export function PrepareOurs ; var i , v , h ; var vehs_ready , people_ready ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
   6: PPUSH
   7: PPUSH
// vehs_ready = [ ] ;
   8: LD_ADDR_VAR 0 5
  12: PUSH
  13: EMPTY
  14: ST_TO_ADDR
// people_ready = [ ] ;
  15: LD_ADDR_VAR 0 6
  19: PUSH
  20: EMPTY
  21: ST_TO_ADDR
// uc_side = 2 ;
  22: LD_ADDR_OWVAR 20
  26: PUSH
  27: LD_INT 2
  29: ST_TO_ADDR
// ArVehs = LoadVariable ( ArVehs , 0 ) ;
  30: LD_ADDR_EXP 5
  34: PUSH
  35: LD_STRING ArVehs
  37: PPUSH
  38: LD_INT 0
  40: PPUSH
  41: CALL_OW 30
  45: ST_TO_ADDR
// for i in ArVehs do
  46: LD_ADDR_VAR 0 2
  50: PUSH
  51: LD_EXP 5
  55: PUSH
  56: FOR_IN
  57: IFFALSE 192
// begin vc_chassis = i [ 1 ] ;
  59: LD_ADDR_OWVAR 37
  63: PUSH
  64: LD_VAR 0 2
  68: PUSH
  69: LD_INT 1
  71: ARRAY
  72: ST_TO_ADDR
// vc_engine = i [ 2 ] ;
  73: LD_ADDR_OWVAR 39
  77: PUSH
  78: LD_VAR 0 2
  82: PUSH
  83: LD_INT 2
  85: ARRAY
  86: ST_TO_ADDR
// vc_control = i [ 3 ] ;
  87: LD_ADDR_OWVAR 38
  91: PUSH
  92: LD_VAR 0 2
  96: PUSH
  97: LD_INT 3
  99: ARRAY
 100: ST_TO_ADDR
// vc_weapon = i [ 4 ] ;
 101: LD_ADDR_OWVAR 40
 105: PUSH
 106: LD_VAR 0 2
 110: PUSH
 111: LD_INT 4
 113: ARRAY
 114: ST_TO_ADDR
// uc_nation = i [ 5 ] ;
 115: LD_ADDR_OWVAR 21
 119: PUSH
 120: LD_VAR 0 2
 124: PUSH
 125: LD_INT 5
 127: ARRAY
 128: ST_TO_ADDR
// v = CreateVehicle ;
 129: LD_ADDR_VAR 0 3
 133: PUSH
 134: CALL_OW 45
 138: ST_TO_ADDR
// PlaceUnitArea ( v , EnterArea , false ) ;
 139: LD_VAR 0 3
 143: PPUSH
 144: LD_INT 1
 146: PPUSH
 147: LD_INT 0
 149: PPUSH
 150: CALL_OW 49
// SetFuel ( v , Rand ( 20 , 30 ) ) ;
 154: LD_VAR 0 3
 158: PPUSH
 159: LD_INT 20
 161: PPUSH
 162: LD_INT 30
 164: PPUSH
 165: CALL_OW 12
 169: PPUSH
 170: CALL_OW 240
// vehs_ready = vehs_ready ^ v ;
 174: LD_ADDR_VAR 0 5
 178: PUSH
 179: LD_VAR 0 5
 183: PUSH
 184: LD_VAR 0 3
 188: ADD
 189: ST_TO_ADDR
// end ;
 190: GO 56
 192: POP
 193: POP
// uc_nation = 2 ;
 194: LD_ADDR_OWVAR 21
 198: PUSH
 199: LD_INT 2
 201: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 0 , 0 ) ;
 202: LD_ADDR_EXP 1
 206: PUSH
 207: LD_STRING Antoine
 209: PPUSH
 210: LD_INT 0
 212: PPUSH
 213: LD_INT 0
 215: PPUSH
 216: CALL_OW 527
 220: ST_TO_ADDR
// people_ready = people_ready ^ Antoine ;
 221: LD_ADDR_VAR 0 6
 225: PUSH
 226: LD_VAR 0 6
 230: PUSH
 231: LD_EXP 1
 235: ADD
 236: ST_TO_ADDR
// if CheckCharacterSet ( Ende ) then
 237: LD_STRING Ende
 239: PPUSH
 240: CALL_OW 29
 244: IFFALSE 283
// begin Ende = LoadCharacter ( Ende , 0 , 0 ) ;
 246: LD_ADDR_EXP 3
 250: PUSH
 251: LD_STRING Ende
 253: PPUSH
 254: LD_INT 0
 256: PPUSH
 257: LD_INT 0
 259: PPUSH
 260: CALL_OW 527
 264: ST_TO_ADDR
// people_ready = people_ready ^ Ende ;
 265: LD_ADDR_VAR 0 6
 269: PUSH
 270: LD_VAR 0 6
 274: PUSH
 275: LD_EXP 3
 279: ADD
 280: ST_TO_ADDR
// end else
 281: GO 291
// NoEnde = true ;
 283: LD_ADDR_EXP 6
 287: PUSH
 288: LD_INT 1
 290: ST_TO_ADDR
// if CheckCharacterSet ( ArOthers ) then
 291: LD_STRING ArOthers
 293: PPUSH
 294: CALL_OW 29
 298: IFFALSE 352
// begin ArOthers = LoadCharacter ( ArOthers , 0 , 0 ) ;
 300: LD_ADDR_EXP 4
 304: PUSH
 305: LD_STRING ArOthers
 307: PPUSH
 308: LD_INT 0
 310: PPUSH
 311: LD_INT 0
 313: PPUSH
 314: CALL_OW 527
 318: ST_TO_ADDR
// for i in ArOthers do
 319: LD_ADDR_VAR 0 2
 323: PUSH
 324: LD_EXP 4
 328: PUSH
 329: FOR_IN
 330: IFFALSE 350
// people_ready = people_ready ^ i ;
 332: LD_ADDR_VAR 0 6
 336: PUSH
 337: LD_VAR 0 6
 341: PUSH
 342: LD_VAR 0 2
 346: ADD
 347: ST_TO_ADDR
 348: GO 329
 350: POP
 351: POP
// end ; for i = 1 to people_ready do
 352: LD_ADDR_VAR 0 2
 356: PUSH
 357: DOUBLE
 358: LD_INT 1
 360: DEC
 361: ST_TO_ADDR
 362: LD_VAR 0 6
 366: PUSH
 367: FOR_TO
 368: IFFALSE 398
// PlaceHumanInUnit ( people_ready [ i ] , vehs_ready [ i ] ) ;
 370: LD_VAR 0 6
 374: PUSH
 375: LD_VAR 0 2
 379: ARRAY
 380: PPUSH
 381: LD_VAR 0 5
 385: PUSH
 386: LD_VAR 0 2
 390: ARRAY
 391: PPUSH
 392: CALL_OW 52
 396: GO 367
 398: POP
 399: POP
// ArVehs = FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) ;
 400: LD_ADDR_EXP 5
 404: PUSH
 405: LD_INT 22
 407: PUSH
 408: LD_INT 2
 410: PUSH
 411: EMPTY
 412: LIST
 413: LIST
 414: PUSH
 415: LD_INT 21
 417: PUSH
 418: LD_INT 2
 420: PUSH
 421: EMPTY
 422: LIST
 423: LIST
 424: PUSH
 425: EMPTY
 426: LIST
 427: LIST
 428: PPUSH
 429: CALL_OW 69
 433: ST_TO_ADDR
// h = FindMaxSkill ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) , class_engineer ) ;
 434: LD_ADDR_VAR 0 4
 438: PUSH
 439: LD_INT 22
 441: PUSH
 442: LD_INT 2
 444: PUSH
 445: EMPTY
 446: LIST
 447: LIST
 448: PUSH
 449: LD_INT 21
 451: PUSH
 452: LD_INT 1
 454: PUSH
 455: EMPTY
 456: LIST
 457: LIST
 458: PUSH
 459: EMPTY
 460: LIST
 461: LIST
 462: PPUSH
 463: CALL_OW 69
 467: PPUSH
 468: LD_INT 2
 470: PPUSH
 471: CALL_OW 433
 475: ST_TO_ADDR
// SetClass ( h , class_engineer ) ;
 476: LD_VAR 0 4
 480: PPUSH
 481: LD_INT 2
 483: PPUSH
 484: CALL_OW 336
// uc_side = 5 ;
 488: LD_ADDR_OWVAR 20
 492: PUSH
 493: LD_INT 5
 495: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
 496: LD_ADDR_EXP 2
 500: PUSH
 501: LD_STRING Bojan
 503: PPUSH
 504: CALL_OW 25
 508: ST_TO_ADDR
// end ;
 509: LD_VAR 0 1
 513: RET
// export function WhoFound ( a , x ) ; var u ; begin
 514: LD_INT 0
 516: PPUSH
 517: PPUSH
// u = NearestUnitToUnit ( a , x ) ;
 518: LD_ADDR_VAR 0 4
 522: PUSH
 523: LD_VAR 0 1
 527: PPUSH
 528: LD_VAR 0 2
 532: PPUSH
 533: CALL_OW 74
 537: ST_TO_ADDR
// if GetType ( u ) = unit_vehicle then
 538: LD_VAR 0 4
 542: PPUSH
 543: CALL_OW 247
 547: PUSH
 548: LD_INT 2
 550: EQUAL
 551: IFFALSE 570
// u = IsDrivenBy ( u ) else
 553: LD_ADDR_VAR 0 4
 557: PUSH
 558: LD_VAR 0 4
 562: PPUSH
 563: CALL_OW 311
 567: ST_TO_ADDR
 568: GO 634
// if GetType ( u ) = unit_building then
 570: LD_VAR 0 4
 574: PPUSH
 575: CALL_OW 247
 579: PUSH
 580: LD_INT 3
 582: EQUAL
 583: IFFALSE 634
// u = FilterAllUnits ( [ [ f_side , GetSide ( a [ 1 ] ) ] , [ f_type , unit_human ] ] ) [ 1 ] ;
 585: LD_ADDR_VAR 0 4
 589: PUSH
 590: LD_INT 22
 592: PUSH
 593: LD_VAR 0 1
 597: PUSH
 598: LD_INT 1
 600: ARRAY
 601: PPUSH
 602: CALL_OW 255
 606: PUSH
 607: EMPTY
 608: LIST
 609: LIST
 610: PUSH
 611: LD_INT 21
 613: PUSH
 614: LD_INT 1
 616: PUSH
 617: EMPTY
 618: LIST
 619: LIST
 620: PUSH
 621: EMPTY
 622: LIST
 623: LIST
 624: PPUSH
 625: CALL_OW 69
 629: PUSH
 630: LD_INT 1
 632: ARRAY
 633: ST_TO_ADDR
// result = u ;
 634: LD_ADDR_VAR 0 3
 638: PUSH
 639: LD_VAR 0 4
 643: ST_TO_ADDR
// end ;
 644: LD_VAR 0 3
 648: RET
// starting begin enable ( 1 ) ;
 649: LD_INT 1
 651: ENABLE_MARKED
// disable ( 2 ) ;
 652: LD_INT 2
 654: DISABLE_MARKED
// Randomize ;
 655: CALL_OW 10
// PrepareOurs ;
 659: CALL 0 0 0
// ChangeSideFog ( 2 , 5 ) ;
 663: LD_INT 2
 665: PPUSH
 666: LD_INT 5
 668: PPUSH
 669: CALL_OW 343
// SetBName ( beta_d , beta ) ;
 673: LD_INT 5
 675: PPUSH
 676: LD_STRING beta
 678: PPUSH
 679: CALL_OW 500
// InGameOn ;
 683: CALL_OW 8
// CenterOnXY ( 170 , 78 ) ;
 687: LD_INT 170
 689: PPUSH
 690: LD_INT 78
 692: PPUSH
 693: CALL_OW 84
// ComMoveXY ( ArVehs , 170 , 78 ) ;
 697: LD_EXP 5
 701: PPUSH
 702: LD_INT 170
 704: PPUSH
 705: LD_INT 78
 707: PPUSH
 708: CALL_OW 111
// Wait ( 0 0$2 ) ;
 712: LD_INT 70
 714: PPUSH
 715: CALL_OW 67
// Say ( ArOthers [ 1 ] , di-s1-1 ) ;
 719: LD_EXP 4
 723: PUSH
 724: LD_INT 1
 726: ARRAY
 727: PPUSH
 728: LD_STRING di-s1-1
 730: PPUSH
 731: CALL_OW 88
// if not NoEnde then
 735: LD_EXP 6
 739: NOT
 740: IFFALSE 756
// Say ( Ende , di-e-1 ) else
 742: LD_EXP 3
 746: PPUSH
 747: LD_STRING di-e-1
 749: PPUSH
 750: CALL_OW 88
 754: GO 772
// Say ( ArOthers [ 2 ] , di-s2-1 ) ;
 756: LD_EXP 4
 760: PUSH
 761: LD_INT 2
 763: ARRAY
 764: PPUSH
 765: LD_STRING di-s2-1
 767: PPUSH
 768: CALL_OW 88
// Say ( Antoine , di-a-1 ) ;
 772: LD_EXP 1
 776: PPUSH
 777: LD_STRING di-a-1
 779: PPUSH
 780: CALL_OW 88
// InGameOff ;
 784: CALL_OW 9
// SaveForQuickRestart ;
 788: CALL_OW 22
// ChangeMissionObjectives ( OFuel ) ;
 792: LD_STRING OFuel
 794: PPUSH
 795: CALL_OW 337
// end ; end_of_file
 799: END
// export function DOilBase ( d ) ; begin
 800: LD_INT 0
 802: PPUSH
// DialogueOn ;
 803: CALL_OW 6
// Say ( d , do-s-1 ) ;
 807: LD_VAR 0 1
 811: PPUSH
 812: LD_STRING do-s-1
 814: PPUSH
 815: CALL_OW 88
// Say ( Antoine , do-a-1 ) ;
 819: LD_EXP 1
 823: PPUSH
 824: LD_STRING do-a-1
 826: PPUSH
 827: CALL_OW 88
// DialogueOff ;
 831: CALL_OW 7
// end ;
 835: LD_VAR 0 2
 839: RET
// export function DBetaEarly ( d ) ; begin
 840: LD_INT 0
 842: PPUSH
// DialogueOn ;
 843: CALL_OW 6
// Say ( d , db-s-1 ) ;
 847: LD_VAR 0 1
 851: PPUSH
 852: LD_STRING db-s-1
 854: PPUSH
 855: CALL_OW 88
// Say ( Antoine , db-a-1 ) ;
 859: LD_EXP 1
 863: PPUSH
 864: LD_STRING db-a-1
 866: PPUSH
 867: CALL_OW 88
// DialogueOff ;
 871: CALL_OW 7
// end ;
 875: LD_VAR 0 2
 879: RET
// export function DOilBaseCaptured ; var a ; begin
 880: LD_INT 0
 882: PPUSH
 883: PPUSH
// Wait ( 0 0$2 ) ;
 884: LD_INT 70
 886: PPUSH
 887: CALL_OW 67
// a = UnitFilter ( ArOthers , [ f_ok ] ) ;
 891: LD_ADDR_VAR 0 2
 895: PUSH
 896: LD_EXP 4
 900: PPUSH
 901: LD_INT 50
 903: PUSH
 904: EMPTY
 905: LIST
 906: PPUSH
 907: CALL_OW 72
 911: ST_TO_ADDR
// DialogueOn ;
 912: CALL_OW 6
// if not NoEnde then
 916: LD_EXP 6
 920: NOT
 921: IFFALSE 937
// SayRadio ( Bojan , dc-b-1 ) else
 923: LD_EXP 2
 927: PPUSH
 928: LD_STRING dc-b-1
 930: PPUSH
 931: CALL_OW 94
 935: GO 949
// SayRadio ( Bojan , dc-b-1a ) ;
 937: LD_EXP 2
 941: PPUSH
 942: LD_STRING dc-b-1a
 944: PPUSH
 945: CALL_OW 94
// Say ( Antoine , dc-a-1 ) ;
 949: LD_EXP 1
 953: PPUSH
 954: LD_STRING dc-a-1
 956: PPUSH
 957: CALL_OW 88
// Wait ( 0 0$1.5 ) ;
 961: LD_INT 52
 963: PPUSH
 964: CALL_OW 67
// Say ( Antoine , dc-a-2 ) ;
 968: LD_EXP 1
 972: PPUSH
 973: LD_STRING dc-a-2
 975: PPUSH
 976: CALL_OW 88
// if IsOK ( Ende ) then
 980: LD_EXP 3
 984: PPUSH
 985: CALL_OW 302
 989: IFFALSE 1053
// begin Say ( Ende , dc-e-1 ) ;
 991: LD_EXP 3
 995: PPUSH
 996: LD_STRING dc-e-1
 998: PPUSH
 999: CALL_OW 88
// Say ( Antoine , dc-a-3 ) ;
1003: LD_EXP 1
1007: PPUSH
1008: LD_STRING dc-a-3
1010: PPUSH
1011: CALL_OW 88
// Say ( Ende , dc-e-2 ) ;
1015: LD_EXP 3
1019: PPUSH
1020: LD_STRING dc-e-2
1022: PPUSH
1023: CALL_OW 88
// Say ( Antoine , dc-a-4 ) ;
1027: LD_EXP 1
1031: PPUSH
1032: LD_STRING dc-a-4
1034: PPUSH
1035: CALL_OW 88
// Say ( Ende , dc-e-3 ) ;
1039: LD_EXP 3
1043: PPUSH
1044: LD_STRING dc-e-3
1046: PPUSH
1047: CALL_OW 88
// end else
1051: GO 1087
// if a then
1053: LD_VAR 0 2
1057: IFFALSE 1087
// begin Say ( a [ 1 ] , dc-s-1 ) ;
1059: LD_VAR 0 2
1063: PUSH
1064: LD_INT 1
1066: ARRAY
1067: PPUSH
1068: LD_STRING dc-s-1
1070: PPUSH
1071: CALL_OW 88
// Say ( Antoine , dc-a-3a ) ;
1075: LD_EXP 1
1079: PPUSH
1080: LD_STRING dc-a-3a
1082: PPUSH
1083: CALL_OW 88
// end ; Wait ( 0 0$1 ) ;
1087: LD_INT 35
1089: PPUSH
1090: CALL_OW 67
// DialogueOff ;
1094: CALL_OW 7
// ChangeMissionObjectives ( OAttack ) ;
1098: LD_STRING OAttack
1100: PPUSH
1101: CALL_OW 337
// end ;
1105: LD_VAR 0 1
1109: RET
// export function DArrival ; begin
1110: LD_INT 0
1112: PPUSH
// InGameOn ;
1113: CALL_OW 8
// CenterOnUnits ( ArabianAttackers ) ;
1117: LD_EXP 11
1121: PPUSH
1122: CALL_OW 85
// ComMoveXY ( ArabianAttackers , 23 , 28 ) ;
1126: LD_EXP 11
1130: PPUSH
1131: LD_INT 23
1133: PPUSH
1134: LD_INT 28
1136: PPUSH
1137: CALL_OW 111
// Wait ( 0 0$3 ) ;
1141: LD_INT 105
1143: PPUSH
1144: CALL_OW 67
// DialogueOn ;
1148: CALL_OW 6
// SayRadio ( ArabianAttackers [ 1 ] , da-s-1 ) ;
1152: LD_EXP 11
1156: PUSH
1157: LD_INT 1
1159: ARRAY
1160: PPUSH
1161: LD_STRING da-s-1
1163: PPUSH
1164: CALL_OW 94
// Say ( Antoine , da-a-1 ) ;
1168: LD_EXP 1
1172: PPUSH
1173: LD_STRING da-a-1
1175: PPUSH
1176: CALL_OW 88
// SayRadio ( ArabianAttackers [ 1 ] , da-s-2 ) ;
1180: LD_EXP 11
1184: PUSH
1185: LD_INT 1
1187: ARRAY
1188: PPUSH
1189: LD_STRING da-s-2
1191: PPUSH
1192: CALL_OW 94
// Say ( Antoine , da-a-2 ) ;
1196: LD_EXP 1
1200: PPUSH
1201: LD_STRING da-a-2
1203: PPUSH
1204: CALL_OW 88
// SayRadio ( ArabianAttackers [ 1 ] , da-s-3 ) ;
1208: LD_EXP 11
1212: PUSH
1213: LD_INT 1
1215: ARRAY
1216: PPUSH
1217: LD_STRING da-s-3
1219: PPUSH
1220: CALL_OW 94
// Say ( Antoine , da-a-3 ) ;
1224: LD_EXP 1
1228: PPUSH
1229: LD_STRING da-a-3
1231: PPUSH
1232: CALL_OW 88
// DialogueOff ;
1236: CALL_OW 7
// InGameOff ;
1240: CALL_OW 9
// ChangeMissionObjectives ( OLabs ) ;
1244: LD_STRING OLabs
1246: PPUSH
1247: CALL_OW 337
// end ;
1251: LD_VAR 0 1
1255: RET
// export function DSolar ( u ) ; var a ; begin
1256: LD_INT 0
1258: PPUSH
1259: PPUSH
// DialogueOn ;
1260: CALL_OW 6
// CenterOnUnits ( u ) ;
1264: LD_VAR 0 1
1268: PPUSH
1269: CALL_OW 85
// a = WhoFound ( FilterAllUnits ( [ f_side , 2 ] ) , u ) ;
1273: LD_ADDR_VAR 0 3
1277: PUSH
1278: LD_INT 22
1280: PUSH
1281: LD_INT 2
1283: PUSH
1284: EMPTY
1285: LIST
1286: LIST
1287: PPUSH
1288: CALL_OW 69
1292: PPUSH
1293: LD_VAR 0 1
1297: PPUSH
1298: CALL 514 0 2
1302: ST_TO_ADDR
// if a = Antoine then
1303: LD_VAR 0 3
1307: PUSH
1308: LD_EXP 1
1312: EQUAL
1313: IFFALSE 1329
// Say ( Antoine , ds-a-1 ) else
1315: LD_EXP 1
1319: PPUSH
1320: LD_STRING ds-a-1
1322: PPUSH
1323: CALL_OW 88
1327: GO 1341
// Say ( a , ds-s-1 ) ;
1329: LD_VAR 0 3
1333: PPUSH
1334: LD_STRING ds-s-1
1336: PPUSH
1337: CALL_OW 88
// DialogueOff ;
1341: CALL_OW 7
// end ;
1345: LD_VAR 0 2
1349: RET
// export function DCallForHelp ; var a ; begin
1350: LD_INT 0
1352: PPUSH
1353: PPUSH
// a = UnitFilter ( ArabianSoldiers , [ f_ok ] ) ;
1354: LD_ADDR_VAR 0 2
1358: PUSH
1359: LD_EXP 14
1363: PPUSH
1364: LD_INT 50
1366: PUSH
1367: EMPTY
1368: LIST
1369: PPUSH
1370: CALL_OW 72
1374: ST_TO_ADDR
// DialogueOn ;
1375: CALL_OW 6
// CenterOnUnits ( a [ 1 ] ) ;
1379: LD_VAR 0 2
1383: PUSH
1384: LD_INT 1
1386: ARRAY
1387: PPUSH
1388: CALL_OW 85
// SayRadio ( a [ 1 ] , dh-s-1 ) ;
1392: LD_VAR 0 2
1396: PUSH
1397: LD_INT 1
1399: ARRAY
1400: PPUSH
1401: LD_STRING dh-s-1
1403: PPUSH
1404: CALL_OW 94
// Say ( Antoine , dh-a-1 ) ;
1408: LD_EXP 1
1412: PPUSH
1413: LD_STRING dh-a-1
1415: PPUSH
1416: CALL_OW 88
// SayRadio ( a [ 1 ] , dh-s-2 ) ;
1420: LD_VAR 0 2
1424: PUSH
1425: LD_INT 1
1427: ARRAY
1428: PPUSH
1429: LD_STRING dh-s-2
1431: PPUSH
1432: CALL_OW 94
// if IsOK ( Ende ) then
1436: LD_EXP 3
1440: PPUSH
1441: CALL_OW 302
1445: IFFALSE 1473
// begin Say ( Ende , dh-e-1 ) ;
1447: LD_EXP 3
1451: PPUSH
1452: LD_STRING dh-e-1
1454: PPUSH
1455: CALL_OW 88
// Say ( Antoine , dh-a-2 ) ;
1459: LD_EXP 1
1463: PPUSH
1464: LD_STRING dh-a-2
1466: PPUSH
1467: CALL_OW 88
// end else
1471: GO 1485
// Say ( Antoine , dh-a-2a ) ;
1473: LD_EXP 1
1477: PPUSH
1478: LD_STRING dh-a-2a
1480: PPUSH
1481: CALL_OW 88
// DialogueOff ;
1485: CALL_OW 7
// ChangeMissionObjectives ( OContact ) ;
1489: LD_STRING OContact
1491: PPUSH
1492: CALL_OW 337
// end ;
1496: LD_VAR 0 1
1500: RET
// export function DMeet ( u ) ; var a ; begin
1501: LD_INT 0
1503: PPUSH
1504: PPUSH
// a = UnitFilter ( ArabianSoldiers , [ f_ok ] ) ;
1505: LD_ADDR_VAR 0 3
1509: PUSH
1510: LD_EXP 14
1514: PPUSH
1515: LD_INT 50
1517: PUSH
1518: EMPTY
1519: LIST
1520: PPUSH
1521: CALL_OW 72
1525: ST_TO_ADDR
// CenterOnUnits ( ArabianAttackers ) ;
1526: LD_EXP 11
1530: PPUSH
1531: CALL_OW 85
// DialogueOn ;
1535: CALL_OW 6
// if u = Antoine then
1539: LD_VAR 0 1
1543: PUSH
1544: LD_EXP 1
1548: EQUAL
1549: IFFALSE 1565
// Say ( Antoine , dm-a-1 ) else
1551: LD_EXP 1
1555: PPUSH
1556: LD_STRING dm-a-1
1558: PPUSH
1559: CALL_OW 88
1563: GO 1577
// Say ( u , dm-x-1 ) ;
1565: LD_VAR 0 1
1569: PPUSH
1570: LD_STRING dm-x-1
1572: PPUSH
1573: CALL_OW 88
// Say ( a [ 1 ] , dm-s-1 ) ;
1577: LD_VAR 0 3
1581: PUSH
1582: LD_INT 1
1584: ARRAY
1585: PPUSH
1586: LD_STRING dm-s-1
1588: PPUSH
1589: CALL_OW 88
// Say ( Antoine , dm-a-2 ) ;
1593: LD_EXP 1
1597: PPUSH
1598: LD_STRING dm-a-2
1600: PPUSH
1601: CALL_OW 88
// Say ( a [ 1 ] , dm-s-2 ) ;
1605: LD_VAR 0 3
1609: PUSH
1610: LD_INT 1
1612: ARRAY
1613: PPUSH
1614: LD_STRING dm-s-2
1616: PPUSH
1617: CALL_OW 88
// DialogueOff ;
1621: CALL_OW 7
// ChangeMissionObjectives ( OContactOut ) ;
1625: LD_STRING OContactOut
1627: PPUSH
1628: CALL_OW 337
// end ;
1632: LD_VAR 0 2
1636: RET
// export function DHelpJericho ; begin
1637: LD_INT 0
1639: PPUSH
// DialogueOn ;
1640: CALL_OW 6
// SayRadio ( Bojan , dj-b-1 ) ;
1644: LD_EXP 2
1648: PPUSH
1649: LD_STRING dj-b-1
1651: PPUSH
1652: CALL_OW 94
// Say ( Antoine , dj-a-1 ) ;
1656: LD_EXP 1
1660: PPUSH
1661: LD_STRING dj-a-1
1663: PPUSH
1664: CALL_OW 88
// SayRadio ( Bojan , dj-b-2 ) ;
1668: LD_EXP 2
1672: PPUSH
1673: LD_STRING dj-b-2
1675: PPUSH
1676: CALL_OW 94
// Say ( Antoine , dj-a-2 ) ;
1680: LD_EXP 1
1684: PPUSH
1685: LD_STRING dj-a-2
1687: PPUSH
1688: CALL_OW 88
// SayRadio ( Bojan , dj-b-3 ) ;
1692: LD_EXP 2
1696: PPUSH
1697: LD_STRING dj-b-3
1699: PPUSH
1700: CALL_OW 94
// if IsOK ( Ende ) then
1704: LD_EXP 3
1708: PPUSH
1709: CALL_OW 302
1713: IFFALSE 1751
// begin Say ( Antoine , dj-a-3 ) ;
1715: LD_EXP 1
1719: PPUSH
1720: LD_STRING dj-a-3
1722: PPUSH
1723: CALL_OW 88
// Say ( Ende , dj-e-1 ) ;
1727: LD_EXP 3
1731: PPUSH
1732: LD_STRING dj-e-1
1734: PPUSH
1735: CALL_OW 88
// Say ( Antoine , dj-a-4 ) ;
1739: LD_EXP 1
1743: PPUSH
1744: LD_STRING dj-a-4
1746: PPUSH
1747: CALL_OW 88
// end ; DialogueOff ;
1751: CALL_OW 7
// ChangeMissionObjectives ( OHelpJericho ) ;
1755: LD_STRING OHelpJericho
1757: PPUSH
1758: CALL_OW 337
// end ; end_of_file
1762: LD_VAR 0 1
1766: RET
// export OilBaseCaptured , CalledForHelp , JoinedForces ; export ArabianAttackTimer ; every 0 0$1 trigger FilterUnitsInArea ( OilBase , [ [ f_side , 1 ] , [ f_see , 5 ] ] ) > 1 do var y , u ;
1767: LD_INT 2
1769: PPUSH
1770: LD_INT 22
1772: PUSH
1773: LD_INT 1
1775: PUSH
1776: EMPTY
1777: LIST
1778: LIST
1779: PUSH
1780: LD_INT 101
1782: PUSH
1783: LD_INT 5
1785: PUSH
1786: EMPTY
1787: LIST
1788: LIST
1789: PUSH
1790: EMPTY
1791: LIST
1792: LIST
1793: PPUSH
1794: CALL_OW 70
1798: PUSH
1799: LD_INT 1
1801: GREATER
1802: IFFALSE 1906
1804: GO 1806
1806: DISABLE
1807: LD_INT 0
1809: PPUSH
1810: PPUSH
// begin y = FilterUnitsInArea ( OilBase , [ [ f_side , 1 ] , [ f_see , 5 ] ] ) [ 1 ] ;
1811: LD_ADDR_VAR 0 1
1815: PUSH
1816: LD_INT 2
1818: PPUSH
1819: LD_INT 22
1821: PUSH
1822: LD_INT 1
1824: PUSH
1825: EMPTY
1826: LIST
1827: LIST
1828: PUSH
1829: LD_INT 101
1831: PUSH
1832: LD_INT 5
1834: PUSH
1835: EMPTY
1836: LIST
1837: LIST
1838: PUSH
1839: EMPTY
1840: LIST
1841: LIST
1842: PPUSH
1843: CALL_OW 70
1847: PUSH
1848: LD_INT 1
1850: ARRAY
1851: ST_TO_ADDR
// u = WhoFound ( FilterAllUnits ( [ f_side , 2 ] ) diff Antoine , y ) ;
1852: LD_ADDR_VAR 0 2
1856: PUSH
1857: LD_INT 22
1859: PUSH
1860: LD_INT 2
1862: PUSH
1863: EMPTY
1864: LIST
1865: LIST
1866: PPUSH
1867: CALL_OW 69
1871: PUSH
1872: LD_EXP 1
1876: DIFF
1877: PPUSH
1878: LD_VAR 0 1
1882: PPUSH
1883: CALL 514 0 2
1887: ST_TO_ADDR
// CenterOnUnits ( y ) ;
1888: LD_VAR 0 1
1892: PPUSH
1893: CALL_OW 85
// DOilBase ( u ) ;
1897: LD_VAR 0 2
1901: PPUSH
1902: CALL 800 0 1
// end ;
1906: PPOPN 2
1908: END
// every 0 0$1 trigger FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_see , 5 ] ] ) > 1 marked 1 do var y , u ;
1909: LD_INT 3
1911: PPUSH
1912: LD_INT 22
1914: PUSH
1915: LD_INT 1
1917: PUSH
1918: EMPTY
1919: LIST
1920: LIST
1921: PUSH
1922: LD_INT 101
1924: PUSH
1925: LD_INT 5
1927: PUSH
1928: EMPTY
1929: LIST
1930: LIST
1931: PUSH
1932: EMPTY
1933: LIST
1934: LIST
1935: PPUSH
1936: CALL_OW 70
1940: PUSH
1941: LD_INT 1
1943: GREATER
1944: IFFALSE 2048
1946: GO 1948
1948: DISABLE
1949: LD_INT 0
1951: PPUSH
1952: PPUSH
// begin y = FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_see , 5 ] ] ) [ 1 ] ;
1953: LD_ADDR_VAR 0 1
1957: PUSH
1958: LD_INT 3
1960: PPUSH
1961: LD_INT 22
1963: PUSH
1964: LD_INT 1
1966: PUSH
1967: EMPTY
1968: LIST
1969: LIST
1970: PUSH
1971: LD_INT 101
1973: PUSH
1974: LD_INT 5
1976: PUSH
1977: EMPTY
1978: LIST
1979: LIST
1980: PUSH
1981: EMPTY
1982: LIST
1983: LIST
1984: PPUSH
1985: CALL_OW 70
1989: PUSH
1990: LD_INT 1
1992: ARRAY
1993: ST_TO_ADDR
// u = WhoFound ( FilterAllUnits ( [ f_side , 2 ] ) diff Antoine , y ) ;
1994: LD_ADDR_VAR 0 2
1998: PUSH
1999: LD_INT 22
2001: PUSH
2002: LD_INT 2
2004: PUSH
2005: EMPTY
2006: LIST
2007: LIST
2008: PPUSH
2009: CALL_OW 69
2013: PUSH
2014: LD_EXP 1
2018: DIFF
2019: PPUSH
2020: LD_VAR 0 1
2024: PPUSH
2025: CALL 514 0 2
2029: ST_TO_ADDR
// CenterOnUnits ( y ) ;
2030: LD_VAR 0 1
2034: PPUSH
2035: CALL_OW 85
// DBetaEarly ( u ) ;
2039: LD_VAR 0 2
2043: PPUSH
2044: CALL 840 0 1
// end ;
2048: PPOPN 2
2050: END
// every 0 0$1 trigger GetSide ( oil_d ) <> 1 or FilterUnitsInArea ( OilBase , [ [ f_side , 1 ] , [ f_btype , b_breastwork ] , [ f_ok ] ] ) = 0 do var a ;
2051: LD_INT 36
2053: PPUSH
2054: CALL_OW 255
2058: PUSH
2059: LD_INT 1
2061: NONEQUAL
2062: PUSH
2063: LD_INT 2
2065: PPUSH
2066: LD_INT 22
2068: PUSH
2069: LD_INT 1
2071: PUSH
2072: EMPTY
2073: LIST
2074: LIST
2075: PUSH
2076: LD_INT 30
2078: PUSH
2079: LD_INT 31
2081: PUSH
2082: EMPTY
2083: LIST
2084: LIST
2085: PUSH
2086: LD_INT 50
2088: PUSH
2089: EMPTY
2090: LIST
2091: PUSH
2092: EMPTY
2093: LIST
2094: LIST
2095: LIST
2096: PPUSH
2097: CALL_OW 70
2101: PUSH
2102: LD_INT 0
2104: EQUAL
2105: OR
2106: IFFALSE 2197
2108: GO 2110
2110: DISABLE
2111: LD_INT 0
2113: PPUSH
// begin a = FilterUnitsInArea ( OilBase , [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) ^ UnitsInside ( oil_d ) ;
2114: LD_ADDR_VAR 0 1
2118: PUSH
2119: LD_INT 2
2121: PPUSH
2122: LD_INT 22
2124: PUSH
2125: LD_INT 1
2127: PUSH
2128: EMPTY
2129: LIST
2130: LIST
2131: PUSH
2132: LD_INT 21
2134: PUSH
2135: LD_INT 1
2137: PUSH
2138: EMPTY
2139: LIST
2140: LIST
2141: PUSH
2142: LD_INT 50
2144: PUSH
2145: EMPTY
2146: LIST
2147: PUSH
2148: EMPTY
2149: LIST
2150: LIST
2151: LIST
2152: PPUSH
2153: CALL_OW 70
2157: PUSH
2158: LD_INT 36
2160: PPUSH
2161: CALL_OW 313
2165: ADD
2166: ST_TO_ADDR
// ComMoveXY ( a , 71 , 15 ) ;
2167: LD_VAR 0 1
2171: PPUSH
2172: LD_INT 71
2174: PPUSH
2175: LD_INT 15
2177: PPUSH
2178: CALL_OW 111
// OilBaseCaptured = true ;
2182: LD_ADDR_EXP 7
2186: PUSH
2187: LD_INT 1
2189: ST_TO_ADDR
// DOilBaseCaptured ;
2190: CALL 880 0 0
// disable ( 1 ) ;
2194: LD_INT 1
2196: DISABLE_MARKED
// end ;
2197: PPOPN 1
2199: END
// every 0 0$1 trigger OilBaseCaptured = true do
2200: LD_EXP 7
2204: PUSH
2205: LD_INT 1
2207: EQUAL
2208: IFFALSE 2228
2210: GO 2212
2212: DISABLE
// begin enable ;
2213: ENABLE
// ArabianAttackTimer = ArabianAttackTimer + 0 0$1 ;
2214: LD_ADDR_EXP 10
2218: PUSH
2219: LD_EXP 10
2223: PUSH
2224: LD_INT 35
2226: PLUS
2227: ST_TO_ADDR
// end ;
2228: END
// export ArabianAttackers ; export ArabiansReady , ArabianTargets , ArabianSoldiers , ArabianAttack ; every 0 0$1 trigger ArabianAttackTimer = 2 2$30 do var i , h ;
2229: LD_EXP 10
2233: PUSH
2234: LD_INT 5250
2236: EQUAL
2237: IFFALSE 2464
2239: GO 2241
2241: DISABLE
2242: LD_INT 0
2244: PPUSH
2245: PPUSH
// begin uc_side = 5 ;
2246: LD_ADDR_OWVAR 20
2250: PUSH
2251: LD_INT 5
2253: ST_TO_ADDR
// uc_nation = nation_arabian ;
2254: LD_ADDR_OWVAR 21
2258: PUSH
2259: LD_INT 2
2261: ST_TO_ADDR
// for i = 1 to 6 do
2262: LD_ADDR_VAR 0 1
2266: PUSH
2267: DOUBLE
2268: LD_INT 1
2270: DEC
2271: ST_TO_ADDR
2272: LD_INT 6
2274: PUSH
2275: FOR_TO
2276: IFFALSE 2374
// begin InitHc ;
2278: CALL_OW 19
// if i < 5 then
2282: LD_VAR 0 1
2286: PUSH
2287: LD_INT 5
2289: LESS
2290: IFFALSE 2320
// PrepareSoldier ( Rand ( 1 , 2 ) , Rand ( 2 , 3 ) ) else
2292: LD_INT 1
2294: PPUSH
2295: LD_INT 2
2297: PPUSH
2298: CALL_OW 12
2302: PPUSH
2303: LD_INT 2
2305: PPUSH
2306: LD_INT 3
2308: PPUSH
2309: CALL_OW 12
2313: PPUSH
2314: CALL_OW 381
2318: GO 2346
// PrepareScientist ( Rand ( 1 , 2 ) , Rand ( 2 , 3 ) ) ;
2320: LD_INT 1
2322: PPUSH
2323: LD_INT 2
2325: PPUSH
2326: CALL_OW 12
2330: PPUSH
2331: LD_INT 2
2333: PPUSH
2334: LD_INT 3
2336: PPUSH
2337: CALL_OW 12
2341: PPUSH
2342: CALL_OW 384
// h = CreateHuman ;
2346: LD_ADDR_VAR 0 2
2350: PUSH
2351: CALL_OW 44
2355: ST_TO_ADDR
// ArabianAttackers = ArabianAttackers ^ h ;
2356: LD_ADDR_EXP 11
2360: PUSH
2361: LD_EXP 11
2365: PUSH
2366: LD_VAR 0 2
2370: ADD
2371: ST_TO_ADDR
// end ;
2372: GO 2275
2374: POP
2375: POP
// for i in ArabianAttackers do
2376: LD_ADDR_VAR 0 1
2380: PUSH
2381: LD_EXP 11
2385: PUSH
2386: FOR_IN
2387: IFFALSE 2406
// PlaceUnitArea ( i , AttackersEnter , false ) ;
2389: LD_VAR 0 1
2393: PPUSH
2394: LD_INT 4
2396: PPUSH
2397: LD_INT 0
2399: PPUSH
2400: CALL_OW 49
2404: GO 2386
2406: POP
2407: POP
// DArrival ;
2408: CALL 1110 0 0
// AddComMoveToArea ( ArabianAttackers , ArabianPosition ) ;
2412: LD_EXP 11
2416: PPUSH
2417: LD_INT 6
2419: PPUSH
2420: CALL_OW 173
// Wait ( 0 0$30 ) ;
2424: LD_INT 1050
2426: PPUSH
2427: CALL_OW 67
// ArabiansReady = true ;
2431: LD_ADDR_EXP 12
2435: PUSH
2436: LD_INT 1
2438: ST_TO_ADDR
// ArabianSoldiers = UnitFilter ( ArabianAttackers , [ f_class , class_soldier ] ) ;
2439: LD_ADDR_EXP 14
2443: PUSH
2444: LD_EXP 11
2448: PPUSH
2449: LD_INT 25
2451: PUSH
2452: LD_INT 1
2454: PUSH
2455: EMPTY
2456: LIST
2457: LIST
2458: PPUSH
2459: CALL_OW 72
2463: ST_TO_ADDR
// end ;
2464: PPOPN 2
2466: END
// every 0 0$1 trigger ArabiansReady = true do
2467: LD_EXP 12
2471: PUSH
2472: LD_INT 1
2474: EQUAL
2475: IFFALSE 2525
2477: GO 2479
2479: DISABLE
// ArabianTargets = McRegistry ( 5 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , BetaBase ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
2480: LD_ADDR_EXP 13
2484: PUSH
2485: LD_INT 5
2487: PPUSH
2488: LD_INT 1
2490: PUSH
2491: LD_INT 105
2493: PUSH
2494: EMPTY
2495: LIST
2496: LIST
2497: PUSH
2498: LD_INT 2
2500: PUSH
2501: LD_INT 3
2503: PUSH
2504: EMPTY
2505: LIST
2506: LIST
2507: PUSH
2508: LD_INT 7
2510: PUSH
2511: LD_INT 9
2513: PUSH
2514: EMPTY
2515: LIST
2516: LIST
2517: LIST
2518: LIST
2519: PPUSH
2520: CALL_OW 399
2524: ST_TO_ADDR
2525: END
// every 0 0$1 trigger ArabiansReady = true do var i ;
2526: LD_EXP 12
2530: PUSH
2531: LD_INT 1
2533: EQUAL
2534: IFFALSE 2727
2536: GO 2538
2538: DISABLE
2539: LD_INT 0
2541: PPUSH
// begin enable ;
2542: ENABLE
// if not ExistMc ( ArabianAttack ) and UnitFilter ( ArabianSoldiers , [ f_lives , 1000 ] ) = ArabianSoldiers then
2543: LD_EXP 15
2547: PPUSH
2548: CALL_OW 386
2552: NOT
2553: PUSH
2554: LD_EXP 14
2558: PPUSH
2559: LD_INT 24
2561: PUSH
2562: LD_INT 1000
2564: PUSH
2565: EMPTY
2566: LIST
2567: LIST
2568: PPUSH
2569: CALL_OW 72
2573: PUSH
2574: LD_EXP 14
2578: EQUAL
2579: AND
2580: IFFALSE 2607
// ArabianAttack = McAttack ( 1 , ArabianTargets , ArabianSoldiers , [ ] ) ;
2582: LD_ADDR_EXP 15
2586: PUSH
2587: LD_INT 1
2589: PPUSH
2590: LD_EXP 13
2594: PPUSH
2595: LD_EXP 14
2599: PPUSH
2600: EMPTY
2601: PPUSH
2602: CALL_OW 402
2606: ST_TO_ADDR
// if ExistMc ( ArabianAttack ) and GetMcUnits ( ArabianAttack ) = 0 then
2607: LD_EXP 15
2611: PPUSH
2612: CALL_OW 386
2616: PUSH
2617: LD_EXP 15
2621: PPUSH
2622: CALL_OW 389
2626: PUSH
2627: LD_INT 0
2629: EQUAL
2630: AND
2631: IFFALSE 2642
// KillMc ( ArabianAttack ) ;
2633: LD_EXP 15
2637: PPUSH
2638: CALL_OW 387
// for i in ArabianSoldiers do
2642: LD_ADDR_VAR 0 1
2646: PUSH
2647: LD_EXP 14
2651: PUSH
2652: FOR_IN
2653: IFFALSE 2725
// begin if GetLives ( i ) < 700 then
2655: LD_VAR 0 1
2659: PPUSH
2660: CALL_OW 256
2664: PUSH
2665: LD_INT 700
2667: LESS
2668: IFFALSE 2696
// begin RemoveMcUnits ( ArabianAttack , i ) ;
2670: LD_EXP 15
2674: PPUSH
2675: LD_VAR 0 1
2679: PPUSH
2680: CALL_OW 391
// ComMoveToArea ( i , ArabianPosition ) ;
2684: LD_VAR 0 1
2688: PPUSH
2689: LD_INT 6
2691: PPUSH
2692: CALL_OW 113
// end ; if IsDead ( i ) then
2696: LD_VAR 0 1
2700: PPUSH
2701: CALL_OW 301
2705: IFFALSE 2723
// ArabianSoldiers = ArabianSoldiers diff i ;
2707: LD_ADDR_EXP 14
2711: PUSH
2712: LD_EXP 14
2716: PUSH
2717: LD_VAR 0 1
2721: DIFF
2722: ST_TO_ADDR
// end ;
2723: GO 2652
2725: POP
2726: POP
// end ;
2727: PPOPN 1
2729: END
// every 0 0$1 trigger UnitFilter ( ArabianAttackers , [ f_ok ] ) = 4 do
2730: LD_EXP 11
2734: PPUSH
2735: LD_INT 50
2737: PUSH
2738: EMPTY
2739: LIST
2740: PPUSH
2741: CALL_OW 72
2745: PUSH
2746: LD_INT 4
2748: EQUAL
2749: IFFALSE 2825
2751: GO 2753
2753: DISABLE
// begin ArabiansReady = false ;
2754: LD_ADDR_EXP 12
2758: PUSH
2759: LD_INT 0
2761: ST_TO_ADDR
// CalledForHelp = true ;
2762: LD_ADDR_EXP 8
2766: PUSH
2767: LD_INT 1
2769: ST_TO_ADDR
// ArabianAttackers = UnitFilter ( ArabianAttackers , [ f_ok ] ) ;
2770: LD_ADDR_EXP 11
2774: PUSH
2775: LD_EXP 11
2779: PPUSH
2780: LD_INT 50
2782: PUSH
2783: EMPTY
2784: LIST
2785: PPUSH
2786: CALL_OW 72
2790: ST_TO_ADDR
// KillMc ( ArabianAttack ) ;
2791: LD_EXP 15
2795: PPUSH
2796: CALL_OW 387
// KillMc ( ArabianTargets ) ;
2800: LD_EXP 13
2804: PPUSH
2805: CALL_OW 387
// ComMoveToArea ( ArabianAttackers , ArabiansHide ) ;
2809: LD_EXP 11
2813: PPUSH
2814: LD_INT 7
2816: PPUSH
2817: CALL_OW 113
// DCallForHelp ;
2821: CALL 1350 0 0
// end ;
2825: END
// every 0 0$1 trigger CalledForHelp = true and FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , GetX ( ArabianAttackers [ 1 ] ) , GetY ( ArabianAttackers [ 1 ] ) , 8 ] ] ) do var u ;
2826: LD_EXP 8
2830: PUSH
2831: LD_INT 1
2833: EQUAL
2834: PUSH
2835: LD_INT 22
2837: PUSH
2838: LD_INT 2
2840: PUSH
2841: EMPTY
2842: LIST
2843: LIST
2844: PUSH
2845: LD_INT 92
2847: PUSH
2848: LD_EXP 11
2852: PUSH
2853: LD_INT 1
2855: ARRAY
2856: PPUSH
2857: CALL_OW 250
2861: PUSH
2862: LD_EXP 11
2866: PUSH
2867: LD_INT 1
2869: ARRAY
2870: PPUSH
2871: CALL_OW 251
2875: PUSH
2876: LD_INT 8
2878: PUSH
2879: EMPTY
2880: LIST
2881: LIST
2882: LIST
2883: LIST
2884: PUSH
2885: EMPTY
2886: LIST
2887: LIST
2888: PPUSH
2889: CALL_OW 69
2893: AND
2894: IFFALSE 3029
2896: GO 2898
2898: DISABLE
2899: LD_INT 0
2901: PPUSH
// begin u = FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , GetX ( ArabianAttackers [ 1 ] ) , GetY ( ArabianAttackers [ 1 ] ) , 8 ] ] ) [ 1 ] ;
2902: LD_ADDR_VAR 0 1
2906: PUSH
2907: LD_INT 22
2909: PUSH
2910: LD_INT 2
2912: PUSH
2913: EMPTY
2914: LIST
2915: LIST
2916: PUSH
2917: LD_INT 92
2919: PUSH
2920: LD_EXP 11
2924: PUSH
2925: LD_INT 1
2927: ARRAY
2928: PPUSH
2929: CALL_OW 250
2933: PUSH
2934: LD_EXP 11
2938: PUSH
2939: LD_INT 1
2941: ARRAY
2942: PPUSH
2943: CALL_OW 251
2947: PUSH
2948: LD_INT 8
2950: PUSH
2951: EMPTY
2952: LIST
2953: LIST
2954: LIST
2955: LIST
2956: PUSH
2957: EMPTY
2958: LIST
2959: LIST
2960: PPUSH
2961: CALL_OW 69
2965: PUSH
2966: LD_INT 1
2968: ARRAY
2969: ST_TO_ADDR
// if GetType ( u ) = unit_vehicle then
2970: LD_VAR 0 1
2974: PPUSH
2975: CALL_OW 247
2979: PUSH
2980: LD_INT 2
2982: EQUAL
2983: IFFALSE 3000
// u = IsDrivenBy ( u ) ;
2985: LD_ADDR_VAR 0 1
2989: PUSH
2990: LD_VAR 0 1
2994: PPUSH
2995: CALL_OW 311
2999: ST_TO_ADDR
// DMeet ( u ) ;
3000: LD_VAR 0 1
3004: PPUSH
3005: CALL 1501 0 1
// SetSide ( ArabianAttackers , 2 ) ;
3009: LD_EXP 11
3013: PPUSH
3014: LD_INT 2
3016: PPUSH
3017: CALL_OW 235
// JoinedForces = true ;
3021: LD_ADDR_EXP 9
3025: PUSH
3026: LD_INT 1
3028: ST_TO_ADDR
// end ;
3029: PPOPN 1
3031: END
// export JerichoTimer , JerichoSent ; every 0 0$1 trigger JoinedForces do
3032: LD_EXP 9
3036: IFFALSE 3056
3038: GO 3040
3040: DISABLE
// begin enable ;
3041: ENABLE
// JerichoTimer = JerichoTimer + 0 0$1 ;
3042: LD_ADDR_EXP 16
3046: PUSH
3047: LD_EXP 16
3051: PUSH
3052: LD_INT 35
3054: PLUS
3055: ST_TO_ADDR
// end ;
3056: END
// every 0 0$1 trigger JerichoTimer = 10 10$0 do
3057: LD_EXP 16
3061: PUSH
3062: LD_INT 21000
3064: EQUAL
3065: IFFALSE 3087
3067: GO 3069
3069: DISABLE
// begin DHelpJericho ;
3070: CALL 1637 0 0
// SetAreaMapShow ( AttackersEnter , 1 ) ;
3074: LD_INT 4
3076: PPUSH
3077: LD_INT 1
3079: PPUSH
3080: CALL_OW 424
// enable ( 2 ) ;
3084: LD_INT 2
3086: ENABLE_MARKED
// end ;
3087: END
// every 0 0$1 trigger FilterUnitsInArea ( AttackersEnter , [ [ f_type , unit_human ] , [ f_side , 2 ] ] ) marked 2 do var i ;
3088: LD_INT 4
3090: PPUSH
3091: LD_INT 21
3093: PUSH
3094: LD_INT 1
3096: PUSH
3097: EMPTY
3098: LIST
3099: LIST
3100: PUSH
3101: LD_INT 22
3103: PUSH
3104: LD_INT 2
3106: PUSH
3107: EMPTY
3108: LIST
3109: LIST
3110: PUSH
3111: EMPTY
3112: LIST
3113: LIST
3114: PPUSH
3115: CALL_OW 70
3119: IFFALSE 3233
3121: GO 3123
3123: DISABLE
3124: LD_INT 0
3126: PPUSH
// begin enable ;
3127: ENABLE
// for i in FilterUnitsInArea ( AttackersEnter , [ [ f_type , unit_human ] , [ f_side , 2 ] ] ) do
3128: LD_ADDR_VAR 0 1
3132: PUSH
3133: LD_INT 4
3135: PPUSH
3136: LD_INT 21
3138: PUSH
3139: LD_INT 1
3141: PUSH
3142: EMPTY
3143: LIST
3144: LIST
3145: PUSH
3146: LD_INT 22
3148: PUSH
3149: LD_INT 2
3151: PUSH
3152: EMPTY
3153: LIST
3154: LIST
3155: PUSH
3156: EMPTY
3157: LIST
3158: LIST
3159: PPUSH
3160: CALL_OW 70
3164: PUSH
3165: FOR_IN
3166: IFFALSE 3203
// if JerichoSent < 3 then
3168: LD_EXP 17
3172: PUSH
3173: LD_INT 3
3175: LESS
3176: IFFALSE 3201
// begin RemoveUnit ( i ) ;
3178: LD_VAR 0 1
3182: PPUSH
3183: CALL_OW 64
// JerichoSent = JerichoSent + 1 ;
3187: LD_ADDR_EXP 17
3191: PUSH
3192: LD_EXP 17
3196: PUSH
3197: LD_INT 1
3199: PLUS
3200: ST_TO_ADDR
// end ;
3201: GO 3165
3203: POP
3204: POP
// if JerichoSent = 3 then
3205: LD_EXP 17
3209: PUSH
3210: LD_INT 3
3212: EQUAL
3213: IFFALSE 3233
// begin disable ;
3215: DISABLE
// SetAreaMapShow ( AttackersEnter , 0 ) ;
3216: LD_INT 4
3218: PPUSH
3219: LD_INT 0
3221: PPUSH
3222: CALL_OW 424
// ChangeMissionObjectives ( OHelpJerichoOut ) ;
3226: LD_STRING OHelpJerichoOut
3228: PPUSH
3229: CALL_OW 337
// end ; end ;
3233: PPOPN 1
3235: END
// every 0 0$1 trigger JerichoTimer = 15 15$0 do
3236: LD_EXP 16
3240: PUSH
3241: LD_INT 31500
3243: EQUAL
3244: IFFALSE 3341
3246: GO 3248
3248: DISABLE
// begin if JerichoSent = 3 then
3249: LD_EXP 17
3253: PUSH
3254: LD_INT 3
3256: EQUAL
3257: IFFALSE 3263
// exit else
3259: GO 3341
3261: GO 3341
// begin DialogueOn ;
3263: CALL_OW 6
// SayRadio ( Bojan , djx-b-1 ) ;
3267: LD_EXP 2
3271: PPUSH
3272: LD_STRING djx-b-1
3274: PPUSH
3275: CALL_OW 94
// if JerichoSent = 0 then
3279: LD_EXP 17
3283: PUSH
3284: LD_INT 0
3286: EQUAL
3287: IFFALSE 3303
// Say ( Antoine , djx-a-1 ) else
3289: LD_EXP 1
3293: PPUSH
3294: LD_STRING djx-a-1
3296: PPUSH
3297: CALL_OW 88
3301: GO 3315
// Say ( Antoine , djx-a-1a ) ;
3303: LD_EXP 1
3307: PPUSH
3308: LD_STRING djx-a-1a
3310: PPUSH
3311: CALL_OW 88
// SayRadio ( Bojan , djx-b-2 ) ;
3315: LD_EXP 2
3319: PPUSH
3320: LD_STRING djx-b-2
3322: PPUSH
3323: CALL_OW 94
// Wait ( 0 0$1 ) ;
3327: LD_INT 35
3329: PPUSH
3330: CALL_OW 67
// YouLost ( NoHelp ) ;
3334: LD_STRING NoHelp
3336: PPUSH
3337: CALL_OW 104
// end ; end ;
3341: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_engine , engine_solar ] , [ f_see , 5 ] ] ) do var u ;
3342: LD_INT 32
3344: PUSH
3345: LD_INT 2
3347: PUSH
3348: EMPTY
3349: LIST
3350: LIST
3351: PUSH
3352: LD_INT 101
3354: PUSH
3355: LD_INT 5
3357: PUSH
3358: EMPTY
3359: LIST
3360: LIST
3361: PUSH
3362: EMPTY
3363: LIST
3364: LIST
3365: PPUSH
3366: CALL_OW 69
3370: IFFALSE 3425
3372: GO 3374
3374: DISABLE
3375: LD_INT 0
3377: PPUSH
// begin u = FilterAllUnits ( [ [ f_engine , engine_solar ] , [ f_see , 5 ] ] ) [ 1 ] ;
3378: LD_ADDR_VAR 0 1
3382: PUSH
3383: LD_INT 32
3385: PUSH
3386: LD_INT 2
3388: PUSH
3389: EMPTY
3390: LIST
3391: LIST
3392: PUSH
3393: LD_INT 101
3395: PUSH
3396: LD_INT 5
3398: PUSH
3399: EMPTY
3400: LIST
3401: LIST
3402: PUSH
3403: EMPTY
3404: LIST
3405: LIST
3406: PPUSH
3407: CALL_OW 69
3411: PUSH
3412: LD_INT 1
3414: ARRAY
3415: ST_TO_ADDR
// DSolar ( u ) ;
3416: LD_VAR 0 1
3420: PPUSH
3421: CALL 1256 0 1
// end ; end_of_file
3425: PPOPN 1
3427: END
// var OilEngineer , OilDefences , OilRepairStrategy ; function PrepareOilBase ; var i , h , s ; begin
3428: LD_INT 0
3430: PPUSH
3431: PPUSH
3432: PPUSH
3433: PPUSH
// uc_side = 1 ;
3434: LD_ADDR_OWVAR 20
3438: PUSH
3439: LD_INT 1
3441: ST_TO_ADDR
// uc_nation = 1 ;
3442: LD_ADDR_OWVAR 21
3446: PUSH
3447: LD_INT 1
3449: ST_TO_ADDR
// s = [ Rand ( 1 , 3 ) , Rand ( 2 , 3 ) , Rand ( 2 , 3 ) ] [ difficulty ] ;
3450: LD_ADDR_VAR 0 4
3454: PUSH
3455: LD_INT 1
3457: PPUSH
3458: LD_INT 3
3460: PPUSH
3461: CALL_OW 12
3465: PUSH
3466: LD_INT 2
3468: PPUSH
3469: LD_INT 3
3471: PPUSH
3472: CALL_OW 12
3476: PUSH
3477: LD_INT 2
3479: PPUSH
3480: LD_INT 3
3482: PPUSH
3483: CALL_OW 12
3487: PUSH
3488: EMPTY
3489: LIST
3490: LIST
3491: LIST
3492: PUSH
3493: LD_OWVAR 67
3497: ARRAY
3498: ST_TO_ADDR
// OilDefences = FilterUnitsInArea ( OilBase , [ [ f_side , 1 ] , [ f_btype , b_breastwork ] ] ) ;
3499: LD_ADDR_LOC 2
3503: PUSH
3504: LD_INT 2
3506: PPUSH
3507: LD_INT 22
3509: PUSH
3510: LD_INT 1
3512: PUSH
3513: EMPTY
3514: LIST
3515: LIST
3516: PUSH
3517: LD_INT 30
3519: PUSH
3520: LD_INT 31
3522: PUSH
3523: EMPTY
3524: LIST
3525: LIST
3526: PUSH
3527: EMPTY
3528: LIST
3529: LIST
3530: PPUSH
3531: CALL_OW 70
3535: ST_TO_ADDR
// for i in OilDefences do
3536: LD_ADDR_VAR 0 2
3540: PUSH
3541: LD_LOC 2
3545: PUSH
3546: FOR_IN
3547: IFFALSE 3599
// begin InitHc ;
3549: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
3553: LD_INT 1
3555: PPUSH
3556: LD_INT 2
3558: PPUSH
3559: CALL_OW 12
3563: PPUSH
3564: LD_VAR 0 4
3568: PPUSH
3569: CALL_OW 381
// h = CreateHuman ;
3573: LD_ADDR_VAR 0 3
3577: PUSH
3578: CALL_OW 44
3582: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
3583: LD_VAR 0 3
3587: PPUSH
3588: LD_VAR 0 2
3592: PPUSH
3593: CALL_OW 52
// end ;
3597: GO 3546
3599: POP
3600: POP
// InitHc ;
3601: CALL_OW 19
// PrepareEngineer ( Rand ( 1 , 2 ) , s ) ;
3605: LD_INT 1
3607: PPUSH
3608: LD_INT 2
3610: PPUSH
3611: CALL_OW 12
3615: PPUSH
3616: LD_VAR 0 4
3620: PPUSH
3621: CALL_OW 382
// OilEngineer = CreateHuman ;
3625: LD_ADDR_LOC 1
3629: PUSH
3630: CALL_OW 44
3634: ST_TO_ADDR
// PlaceUnitXY ( OilEngineer , 129 , 16 , false ) ;
3635: LD_LOC 1
3639: PPUSH
3640: LD_INT 129
3642: PPUSH
3643: LD_INT 16
3645: PPUSH
3646: LD_INT 0
3648: PPUSH
3649: CALL_OW 48
// end ;
3653: LD_VAR 0 1
3657: RET
// every 0 0$1 do
3658: GO 3660
3660: DISABLE
// PrepareOilBase ;
3661: CALL 3428 0 0
3665: END
// every 0 0$1 trigger IsOK ( OilEngineer ) do
3666: LD_LOC 1
3670: PPUSH
3671: CALL_OW 302
3675: IFFALSE 3842
3677: GO 3679
3679: DISABLE
// begin enable ;
3680: ENABLE
// if ExistMc ( OilRepairStrategy ) and FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3681: LD_LOC 3
3685: PPUSH
3686: CALL_OW 386
3690: PUSH
3691: LD_INT 22
3693: PUSH
3694: LD_INT 2
3696: PUSH
3697: EMPTY
3698: LIST
3699: LIST
3700: PUSH
3701: LD_INT 101
3703: PUSH
3704: LD_INT 1
3706: PUSH
3707: EMPTY
3708: LIST
3709: LIST
3710: PUSH
3711: EMPTY
3712: LIST
3713: LIST
3714: PPUSH
3715: CALL_OW 69
3719: AND
3720: IFFALSE 3743
// begin KillMc ( OilRepairStrategy ) ;
3722: LD_LOC 3
3726: PPUSH
3727: CALL_OW 387
// ComEnterUnit ( OilEngineer , oil_d ) ;
3731: LD_LOC 1
3735: PPUSH
3736: LD_INT 36
3738: PPUSH
3739: CALL_OW 120
// end ; if not ExistMc ( OilRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3743: LD_LOC 3
3747: PPUSH
3748: CALL_OW 386
3752: NOT
3753: PUSH
3754: LD_INT 22
3756: PUSH
3757: LD_INT 2
3759: PUSH
3760: EMPTY
3761: LIST
3762: LIST
3763: PUSH
3764: LD_INT 101
3766: PUSH
3767: LD_INT 1
3769: PUSH
3770: EMPTY
3771: LIST
3772: LIST
3773: PUSH
3774: EMPTY
3775: LIST
3776: LIST
3777: PPUSH
3778: CALL_OW 69
3782: NOT
3783: AND
3784: IFFALSE 3842
// begin ComExitBuilding ( OilEngineer ) ;
3786: LD_LOC 1
3790: PPUSH
3791: CALL_OW 122
// OilRepairStrategy = McRepair ( 1 , OilEngineer , OilDefences , [ [ mcr_bui_limit , 1000 ] , [ mcr_area_only , OilBase ] ] ) ;
3795: LD_ADDR_LOC 3
3799: PUSH
3800: LD_INT 1
3802: PPUSH
3803: LD_LOC 1
3807: PPUSH
3808: LD_LOC 2
3812: PPUSH
3813: LD_INT 6
3815: PUSH
3816: LD_INT 1000
3818: PUSH
3819: EMPTY
3820: LIST
3821: LIST
3822: PUSH
3823: LD_INT 3
3825: PUSH
3826: LD_INT 2
3828: PUSH
3829: EMPTY
3830: LIST
3831: LIST
3832: PUSH
3833: EMPTY
3834: LIST
3835: LIST
3836: PPUSH
3837: CALL_OW 414
3841: ST_TO_ADDR
// end ; end ;
3842: END
// every 0 0$1 trigger IsDead ( OilEngineer ) or OilBaseCaptured = true do
3843: LD_LOC 1
3847: PPUSH
3848: CALL_OW 301
3852: PUSH
3853: LD_EXP 7
3857: PUSH
3858: LD_INT 1
3860: EQUAL
3861: OR
3862: IFFALSE 3876
3864: GO 3866
3866: DISABLE
// KillMc ( OilRepairStrategy ) ; end_of_file
3867: LD_LOC 3
3871: PPUSH
3872: CALL_OW 387
3876: END
// var Engineer , Defences , RepairStrategy ; var Defenders , Enemies , DefenceStrategy ; export function PrepareBeta ; var i , h , s ; var j , m ; begin
3877: LD_INT 0
3879: PPUSH
3880: PPUSH
3881: PPUSH
3882: PPUSH
3883: PPUSH
3884: PPUSH
// uc_side = 1 ;
3885: LD_ADDR_OWVAR 20
3889: PUSH
3890: LD_INT 1
3892: ST_TO_ADDR
// uc_nation = 1 ;
3893: LD_ADDR_OWVAR 21
3897: PUSH
3898: LD_INT 1
3900: ST_TO_ADDR
// s = [ Rand ( 2 , 3 ) , Rand ( 2 , 3 ) , Rand ( 2 , 4 ) ] [ difficulty ] ;
3901: LD_ADDR_VAR 0 4
3905: PUSH
3906: LD_INT 2
3908: PPUSH
3909: LD_INT 3
3911: PPUSH
3912: CALL_OW 12
3916: PUSH
3917: LD_INT 2
3919: PPUSH
3920: LD_INT 3
3922: PPUSH
3923: CALL_OW 12
3927: PUSH
3928: LD_INT 2
3930: PPUSH
3931: LD_INT 4
3933: PPUSH
3934: CALL_OW 12
3938: PUSH
3939: EMPTY
3940: LIST
3941: LIST
3942: LIST
3943: PUSH
3944: LD_OWVAR 67
3948: ARRAY
3949: ST_TO_ADDR
// m = [ 2 , 3 , 3 ] [ difficulty ] ;
3950: LD_ADDR_VAR 0 6
3954: PUSH
3955: LD_INT 2
3957: PUSH
3958: LD_INT 3
3960: PUSH
3961: LD_INT 3
3963: PUSH
3964: EMPTY
3965: LIST
3966: LIST
3967: LIST
3968: PUSH
3969: LD_OWVAR 67
3973: ARRAY
3974: ST_TO_ADDR
// Defences = FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
3975: LD_ADDR_LOC 5
3979: PUSH
3980: LD_INT 3
3982: PPUSH
3983: LD_INT 22
3985: PUSH
3986: LD_INT 1
3988: PUSH
3989: EMPTY
3990: LIST
3991: LIST
3992: PUSH
3993: LD_INT 2
3995: PUSH
3996: LD_INT 30
3998: PUSH
3999: LD_INT 4
4001: PUSH
4002: EMPTY
4003: LIST
4004: LIST
4005: PUSH
4006: LD_INT 30
4008: PUSH
4009: LD_INT 31
4011: PUSH
4012: EMPTY
4013: LIST
4014: LIST
4015: PUSH
4016: LD_INT 30
4018: PUSH
4019: LD_INT 32
4021: PUSH
4022: EMPTY
4023: LIST
4024: LIST
4025: PUSH
4026: EMPTY
4027: LIST
4028: LIST
4029: LIST
4030: LIST
4031: PUSH
4032: EMPTY
4033: LIST
4034: LIST
4035: PPUSH
4036: CALL_OW 70
4040: ST_TO_ADDR
// for i in Defences do
4041: LD_ADDR_VAR 0 2
4045: PUSH
4046: LD_LOC 5
4050: PUSH
4051: FOR_IN
4052: IFFALSE 4189
// begin if GetBType ( i ) = b_armoury then
4054: LD_VAR 0 2
4058: PPUSH
4059: CALL_OW 266
4063: PUSH
4064: LD_INT 4
4066: EQUAL
4067: IFFALSE 4139
// for j = 1 to 2 do
4069: LD_ADDR_VAR 0 5
4073: PUSH
4074: DOUBLE
4075: LD_INT 1
4077: DEC
4078: ST_TO_ADDR
4079: LD_INT 2
4081: PUSH
4082: FOR_TO
4083: IFFALSE 4135
// begin InitHc ;
4085: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
4089: LD_INT 1
4091: PPUSH
4092: LD_INT 2
4094: PPUSH
4095: CALL_OW 12
4099: PPUSH
4100: LD_VAR 0 4
4104: PPUSH
4105: CALL_OW 381
// h = CreateHuman ;
4109: LD_ADDR_VAR 0 3
4113: PUSH
4114: CALL_OW 44
4118: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4119: LD_VAR 0 3
4123: PPUSH
4124: LD_VAR 0 2
4128: PPUSH
4129: CALL_OW 52
// end else
4133: GO 4082
4135: POP
4136: POP
4137: GO 4187
// begin InitHc ;
4139: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
4143: LD_INT 1
4145: PPUSH
4146: LD_INT 2
4148: PPUSH
4149: CALL_OW 12
4153: PPUSH
4154: LD_VAR 0 4
4158: PPUSH
4159: CALL_OW 381
// h = CreateHuman ;
4163: LD_ADDR_VAR 0 3
4167: PUSH
4168: CALL_OW 44
4172: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4173: LD_VAR 0 3
4177: PPUSH
4178: LD_VAR 0 2
4182: PPUSH
4183: CALL_OW 52
// end ; end ;
4187: GO 4051
4189: POP
4190: POP
// Defenders = FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) ;
4191: LD_ADDR_LOC 7
4195: PUSH
4196: LD_INT 3
4198: PPUSH
4199: LD_INT 22
4201: PUSH
4202: LD_INT 1
4204: PUSH
4205: EMPTY
4206: LIST
4207: LIST
4208: PUSH
4209: LD_INT 21
4211: PUSH
4212: LD_INT 2
4214: PUSH
4215: EMPTY
4216: LIST
4217: LIST
4218: PUSH
4219: EMPTY
4220: LIST
4221: LIST
4222: PPUSH
4223: CALL_OW 70
4227: ST_TO_ADDR
// for i in Defenders do
4228: LD_ADDR_VAR 0 2
4232: PUSH
4233: LD_LOC 7
4237: PUSH
4238: FOR_IN
4239: IFFALSE 4291
// begin InitHc ;
4241: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
4245: LD_INT 1
4247: PPUSH
4248: LD_INT 2
4250: PPUSH
4251: CALL_OW 12
4255: PPUSH
4256: LD_VAR 0 4
4260: PPUSH
4261: CALL_OW 383
// h = CreateHuman ;
4265: LD_ADDR_VAR 0 3
4269: PUSH
4270: CALL_OW 44
4274: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4275: LD_VAR 0 3
4279: PPUSH
4280: LD_VAR 0 2
4284: PPUSH
4285: CALL_OW 52
// end ;
4289: GO 4238
4291: POP
4292: POP
// for i = 1 to 2 do
4293: LD_ADDR_VAR 0 2
4297: PUSH
4298: DOUBLE
4299: LD_INT 1
4301: DEC
4302: ST_TO_ADDR
4303: LD_INT 2
4305: PUSH
4306: FOR_TO
4307: IFFALSE 4382
// begin InitHc ;
4309: CALL_OW 19
// PrepareEngineer ( Rand ( 1 , 2 ) , s ) ;
4313: LD_INT 1
4315: PPUSH
4316: LD_INT 2
4318: PPUSH
4319: CALL_OW 12
4323: PPUSH
4324: LD_VAR 0 4
4328: PPUSH
4329: CALL_OW 382
// h = CreateHuman ;
4333: LD_ADDR_VAR 0 3
4337: PUSH
4338: CALL_OW 44
4342: ST_TO_ADDR
// PlaceUnitXYR ( h , 73 , 16 , 3 , false ) ;
4343: LD_VAR 0 3
4347: PPUSH
4348: LD_INT 73
4350: PPUSH
4351: LD_INT 16
4353: PPUSH
4354: LD_INT 3
4356: PPUSH
4357: LD_INT 0
4359: PPUSH
4360: CALL_OW 50
// Engineer = Engineer ^ h ;
4364: LD_ADDR_LOC 4
4368: PUSH
4369: LD_LOC 4
4373: PUSH
4374: LD_VAR 0 3
4378: ADD
4379: ST_TO_ADDR
// end ;
4380: GO 4306
4382: POP
4383: POP
// for i = 1 to m do
4384: LD_ADDR_VAR 0 2
4388: PUSH
4389: DOUBLE
4390: LD_INT 1
4392: DEC
4393: ST_TO_ADDR
4394: LD_VAR 0 6
4398: PUSH
4399: FOR_TO
4400: IFFALSE 4450
// begin InitHc ;
4402: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
4406: LD_INT 1
4408: PPUSH
4409: LD_INT 2
4411: PPUSH
4412: CALL_OW 12
4416: PPUSH
4417: LD_VAR 0 4
4421: PPUSH
4422: CALL_OW 383
// h = CreateHuman ;
4426: LD_ADDR_VAR 0 3
4430: PUSH
4431: CALL_OW 44
4435: ST_TO_ADDR
// PlaceHumanInUnit ( h , beta_f ) ;
4436: LD_VAR 0 3
4440: PPUSH
4441: LD_INT 6
4443: PPUSH
4444: CALL_OW 52
// end ;
4448: GO 4399
4450: POP
4451: POP
// for i = 1 to 3 do
4452: LD_ADDR_VAR 0 2
4456: PUSH
4457: DOUBLE
4458: LD_INT 1
4460: DEC
4461: ST_TO_ADDR
4462: LD_INT 3
4464: PUSH
4465: FOR_TO
4466: IFFALSE 4516
// begin InitHc ;
4468: CALL_OW 19
// PrepareScientist ( Rand ( 1 , 2 ) , s ) ;
4472: LD_INT 1
4474: PPUSH
4475: LD_INT 2
4477: PPUSH
4478: CALL_OW 12
4482: PPUSH
4483: LD_VAR 0 4
4487: PPUSH
4488: CALL_OW 384
// h = CreateHuman ;
4492: LD_ADDR_VAR 0 3
4496: PUSH
4497: CALL_OW 44
4501: ST_TO_ADDR
// PlaceHumanInUnit ( h , beta_l ) ;
4502: LD_VAR 0 3
4506: PPUSH
4507: LD_INT 8
4509: PPUSH
4510: CALL_OW 52
// end ;
4514: GO 4465
4516: POP
4517: POP
// end ;
4518: LD_VAR 0 1
4522: RET
// every 0 0$1 do
4523: GO 4525
4525: DISABLE
// PrepareBeta ;
4526: CALL 3877 0 0
4530: END
// every 0 0$1 trigger Engineer do var i ;
4531: LD_LOC 4
4535: IFFALSE 4768
4537: GO 4539
4539: DISABLE
4540: LD_INT 0
4542: PPUSH
// begin enable ;
4543: ENABLE
// if ExistMc ( RepairStrategy ) and FilterAllUnits ( [ [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] , [ f_see , 1 ] ] ) then
4544: LD_LOC 6
4548: PPUSH
4549: CALL_OW 386
4553: PUSH
4554: LD_INT 2
4556: PUSH
4557: LD_INT 22
4559: PUSH
4560: LD_INT 2
4562: PUSH
4563: EMPTY
4564: LIST
4565: LIST
4566: PUSH
4567: LD_INT 22
4569: PUSH
4570: LD_INT 5
4572: PUSH
4573: EMPTY
4574: LIST
4575: LIST
4576: PUSH
4577: EMPTY
4578: LIST
4579: LIST
4580: LIST
4581: PUSH
4582: LD_INT 101
4584: PUSH
4585: LD_INT 1
4587: PUSH
4588: EMPTY
4589: LIST
4590: LIST
4591: PUSH
4592: EMPTY
4593: LIST
4594: LIST
4595: PPUSH
4596: CALL_OW 69
4600: AND
4601: IFFALSE 4641
// begin KillMc ( RepairStrategy ) ;
4603: LD_LOC 6
4607: PPUSH
4608: CALL_OW 387
// for i in Engineer do
4612: LD_ADDR_VAR 0 1
4616: PUSH
4617: LD_LOC 4
4621: PUSH
4622: FOR_IN
4623: IFFALSE 4639
// ComEnterUnit ( i , beta_d ) ;
4625: LD_VAR 0 1
4629: PPUSH
4630: LD_INT 5
4632: PPUSH
4633: CALL_OW 120
4637: GO 4622
4639: POP
4640: POP
// end ; if not ExistMc ( RepairStrategy ) and not FilterAllUnits ( [ [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] , [ f_see , 1 ] ] ) then
4641: LD_LOC 6
4645: PPUSH
4646: CALL_OW 386
4650: NOT
4651: PUSH
4652: LD_INT 2
4654: PUSH
4655: LD_INT 22
4657: PUSH
4658: LD_INT 2
4660: PUSH
4661: EMPTY
4662: LIST
4663: LIST
4664: PUSH
4665: LD_INT 22
4667: PUSH
4668: LD_INT 5
4670: PUSH
4671: EMPTY
4672: LIST
4673: LIST
4674: PUSH
4675: EMPTY
4676: LIST
4677: LIST
4678: LIST
4679: PUSH
4680: LD_INT 101
4682: PUSH
4683: LD_INT 1
4685: PUSH
4686: EMPTY
4687: LIST
4688: LIST
4689: PUSH
4690: EMPTY
4691: LIST
4692: LIST
4693: PPUSH
4694: CALL_OW 69
4698: NOT
4699: AND
4700: IFFALSE 4768
// begin for i in Engineer do
4702: LD_ADDR_VAR 0 1
4706: PUSH
4707: LD_LOC 4
4711: PUSH
4712: FOR_IN
4713: IFFALSE 4726
// ComExitBuilding ( i ) ;
4715: LD_VAR 0 1
4719: PPUSH
4720: CALL_OW 122
4724: GO 4712
4726: POP
4727: POP
// RepairStrategy = McRepair ( 1 , Engineer , Defences , [ [ mcr_bui_limit , 1000 ] , mcr_area_only ] ) ;
4728: LD_ADDR_LOC 6
4732: PUSH
4733: LD_INT 1
4735: PPUSH
4736: LD_LOC 4
4740: PPUSH
4741: LD_LOC 5
4745: PPUSH
4746: LD_INT 6
4748: PUSH
4749: LD_INT 1000
4751: PUSH
4752: EMPTY
4753: LIST
4754: LIST
4755: PUSH
4756: LD_INT 3
4758: PUSH
4759: EMPTY
4760: LIST
4761: LIST
4762: PPUSH
4763: CALL_OW 414
4767: ST_TO_ADDR
// end ; end ;
4768: PPOPN 1
4770: END
// every 0 0$1 trigger not Engineer do
4771: LD_LOC 4
4775: NOT
4776: IFFALSE 4790
4778: GO 4780
4780: DISABLE
// KillMc ( RepairStrategy ) ;
4781: LD_LOC 6
4785: PPUSH
4786: CALL_OW 387
4790: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do var i , m ;
4791: LD_INT 22
4793: PUSH
4794: LD_INT 1
4796: PUSH
4797: EMPTY
4798: LIST
4799: LIST
4800: PUSH
4801: LD_INT 21
4803: PUSH
4804: LD_INT 2
4806: PUSH
4807: EMPTY
4808: LIST
4809: LIST
4810: PUSH
4811: LD_INT 50
4813: PUSH
4814: EMPTY
4815: LIST
4816: PUSH
4817: EMPTY
4818: LIST
4819: LIST
4820: LIST
4821: PPUSH
4822: CALL_OW 69
4826: IFFALSE 5068
4828: GO 4830
4830: DISABLE
4831: LD_INT 0
4833: PPUSH
4834: PPUSH
// begin enable ;
4835: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do
4836: LD_ADDR_VAR 0 1
4840: PUSH
4841: LD_INT 22
4843: PUSH
4844: LD_INT 1
4846: PUSH
4847: EMPTY
4848: LIST
4849: LIST
4850: PUSH
4851: LD_INT 21
4853: PUSH
4854: LD_INT 2
4856: PUSH
4857: EMPTY
4858: LIST
4859: LIST
4860: PUSH
4861: LD_INT 50
4863: PUSH
4864: EMPTY
4865: LIST
4866: PUSH
4867: EMPTY
4868: LIST
4869: LIST
4870: LIST
4871: PPUSH
4872: CALL_OW 69
4876: PUSH
4877: FOR_IN
4878: IFFALSE 5066
// begin if IsDrivenBy ( i ) and GetLives ( i ) < 1000 and not See ( 5 , i ) then
4880: LD_VAR 0 1
4884: PPUSH
4885: CALL_OW 311
4889: PUSH
4890: LD_VAR 0 1
4894: PPUSH
4895: CALL_OW 256
4899: PUSH
4900: LD_INT 1000
4902: LESS
4903: AND
4904: PUSH
4905: LD_INT 5
4907: PPUSH
4908: LD_VAR 0 1
4912: PPUSH
4913: CALL_OW 292
4917: NOT
4918: AND
4919: IFFALSE 4973
// begin m = IsDrivenBy ( i ) ;
4921: LD_ADDR_VAR 0 2
4925: PUSH
4926: LD_VAR 0 1
4930: PPUSH
4931: CALL_OW 311
4935: ST_TO_ADDR
// ComExitVehicle ( m ) ;
4936: LD_VAR 0 2
4940: PPUSH
4941: CALL_OW 121
// AddComRepairVehicle ( m , i ) ;
4945: LD_VAR 0 2
4949: PPUSH
4950: LD_VAR 0 1
4954: PPUSH
4955: CALL_OW 189
// AddComEnterUnit ( m , i ) ;
4959: LD_VAR 0 2
4963: PPUSH
4964: LD_VAR 0 1
4968: PPUSH
4969: CALL_OW 180
// end ; if not IsDrivenBy ( i ) and See ( 5 , i ) then
4973: LD_VAR 0 1
4977: PPUSH
4978: CALL_OW 311
4982: NOT
4983: PUSH
4984: LD_INT 5
4986: PPUSH
4987: LD_VAR 0 1
4991: PPUSH
4992: CALL_OW 292
4996: AND
4997: IFFALSE 5064
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
4999: LD_ADDR_VAR 0 2
5003: PUSH
5004: LD_INT 22
5006: PUSH
5007: LD_VAR 0 1
5011: PPUSH
5012: CALL_OW 255
5016: PUSH
5017: EMPTY
5018: LIST
5019: LIST
5020: PUSH
5021: LD_INT 25
5023: PUSH
5024: LD_INT 3
5026: PUSH
5027: EMPTY
5028: LIST
5029: LIST
5030: PUSH
5031: EMPTY
5032: LIST
5033: LIST
5034: PPUSH
5035: CALL_OW 69
5039: PPUSH
5040: LD_VAR 0 1
5044: PPUSH
5045: CALL_OW 74
5049: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
5050: LD_VAR 0 2
5054: PPUSH
5055: LD_VAR 0 1
5059: PPUSH
5060: CALL_OW 120
// end ; end ;
5064: GO 4877
5066: POP
5067: POP
// end ;
5068: PPOPN 2
5070: END
// every 0 0$1 do
5071: GO 5073
5073: DISABLE
// Enemies = McRegistry ( 1 , [ [ mc_reg_area_to_protect , BetaBase ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
5074: LD_ADDR_LOC 8
5078: PUSH
5079: LD_INT 1
5081: PPUSH
5082: LD_INT 3
5084: PUSH
5085: LD_INT 3
5087: PUSH
5088: EMPTY
5089: LIST
5090: LIST
5091: PUSH
5092: LD_INT 1
5094: PUSH
5095: LD_INT 35
5097: PUSH
5098: EMPTY
5099: LIST
5100: LIST
5101: PUSH
5102: EMPTY
5103: LIST
5104: LIST
5105: PPUSH
5106: CALL_OW 399
5110: ST_TO_ADDR
5111: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] , [ f_see , 1 ] ] ) marked 30 do var i , t ;
5112: LD_INT 2
5114: PUSH
5115: LD_INT 22
5117: PUSH
5118: LD_INT 2
5120: PUSH
5121: EMPTY
5122: LIST
5123: LIST
5124: PUSH
5125: LD_INT 22
5127: PUSH
5128: LD_INT 5
5130: PUSH
5131: EMPTY
5132: LIST
5133: LIST
5134: PUSH
5135: EMPTY
5136: LIST
5137: LIST
5138: LIST
5139: PUSH
5140: LD_INT 101
5142: PUSH
5143: LD_INT 1
5145: PUSH
5146: EMPTY
5147: LIST
5148: LIST
5149: PUSH
5150: EMPTY
5151: LIST
5152: LIST
5153: PPUSH
5154: CALL_OW 69
5158: IFFALSE 5326
5160: GO 5162
5162: DISABLE
5163: LD_INT 0
5165: PPUSH
5166: PPUSH
// begin enable ;
5167: ENABLE
// if not ExistMc ( DefenceStrategy ) then
5168: LD_LOC 9
5172: PPUSH
5173: CALL_OW 386
5177: NOT
5178: IFFALSE 5282
// begin Defenders = FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_or , [ f_chassis , us_medium_wheeled ] , [ f_class , class_soldier ] ] ] ) ;
5180: LD_ADDR_LOC 7
5184: PUSH
5185: LD_INT 3
5187: PPUSH
5188: LD_INT 22
5190: PUSH
5191: LD_INT 1
5193: PUSH
5194: EMPTY
5195: LIST
5196: LIST
5197: PUSH
5198: LD_INT 2
5200: PUSH
5201: LD_INT 31
5203: PUSH
5204: LD_INT 2
5206: PUSH
5207: EMPTY
5208: LIST
5209: LIST
5210: PUSH
5211: LD_INT 25
5213: PUSH
5214: LD_INT 1
5216: PUSH
5217: EMPTY
5218: LIST
5219: LIST
5220: PUSH
5221: EMPTY
5222: LIST
5223: LIST
5224: LIST
5225: PUSH
5226: EMPTY
5227: LIST
5228: LIST
5229: PPUSH
5230: CALL_OW 70
5234: ST_TO_ADDR
// DefenceStrategy = McDefend ( 1 , Enemies , Defenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , BetaBase ] ] ) ;
5235: LD_ADDR_LOC 9
5239: PUSH
5240: LD_INT 1
5242: PPUSH
5243: LD_LOC 8
5247: PPUSH
5248: LD_LOC 7
5252: PPUSH
5253: LD_INT 1
5255: PUSH
5256: LD_INT 200
5258: PUSH
5259: EMPTY
5260: LIST
5261: LIST
5262: PUSH
5263: LD_INT 2
5265: PUSH
5266: LD_INT 3
5268: PUSH
5269: EMPTY
5270: LIST
5271: LIST
5272: PUSH
5273: EMPTY
5274: LIST
5275: LIST
5276: PPUSH
5277: CALL_OW 401
5281: ST_TO_ADDR
// end ; for i in Defenders do
5282: LD_ADDR_VAR 0 1
5286: PUSH
5287: LD_LOC 7
5291: PUSH
5292: FOR_IN
5293: IFFALSE 5324
// if not IsInArea ( i , BetaBase ) then
5295: LD_VAR 0 1
5299: PPUSH
5300: LD_INT 3
5302: PPUSH
5303: CALL_OW 308
5307: NOT
5308: IFFALSE 5322
// ComMoveToArea ( i , BetaBase ) ;
5310: LD_VAR 0 1
5314: PPUSH
5315: LD_INT 3
5317: PPUSH
5318: CALL_OW 113
5322: GO 5292
5324: POP
5325: POP
// end ;
5326: PPOPN 2
5328: END
// every 0 0$1 trigger not FilterAllUnits ( [ [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] , [ f_see , 1 ] ] ) do var i ;
5329: LD_INT 2
5331: PUSH
5332: LD_INT 22
5334: PUSH
5335: LD_INT 2
5337: PUSH
5338: EMPTY
5339: LIST
5340: LIST
5341: PUSH
5342: LD_INT 22
5344: PUSH
5345: LD_INT 5
5347: PUSH
5348: EMPTY
5349: LIST
5350: LIST
5351: PUSH
5352: EMPTY
5353: LIST
5354: LIST
5355: LIST
5356: PUSH
5357: LD_INT 101
5359: PUSH
5360: LD_INT 1
5362: PUSH
5363: EMPTY
5364: LIST
5365: LIST
5366: PUSH
5367: EMPTY
5368: LIST
5369: LIST
5370: PPUSH
5371: CALL_OW 69
5375: NOT
5376: IFFALSE 5443
5378: GO 5380
5380: DISABLE
5381: LD_INT 0
5383: PPUSH
// begin enable ;
5384: ENABLE
// if ExistMc ( DefenceStrategy ) then
5385: LD_LOC 9
5389: PPUSH
5390: CALL_OW 386
5394: IFFALSE 5441
// begin for i in GetMcUnits ( DefenceStrategy ) do
5396: LD_ADDR_VAR 0 1
5400: PUSH
5401: LD_LOC 9
5405: PPUSH
5406: CALL_OW 389
5410: PUSH
5411: FOR_IN
5412: IFFALSE 5428
// ComMoveToArea ( i , InsideBeta ) ;
5414: LD_VAR 0 1
5418: PPUSH
5419: LD_INT 5
5421: PPUSH
5422: CALL_OW 113
5426: GO 5411
5428: POP
5429: POP
// KillMc ( DefenceStrategy ) ;
5430: LD_LOC 9
5434: PPUSH
5435: CALL_OW 387
// end else
5439: GO 5443
// exit ;
5441: GO 5443
// end ;
5443: PPOPN 1
5445: END
// export Hunters ; export AmericanHunt , Hunted ; every 0 0$1 trigger ArabianAttackTimer = 5 5$0 do
5446: LD_EXP 10
5450: PUSH
5451: LD_INT 10500
5453: EQUAL
5454: IFFALSE 5526
5456: GO 5458
5458: DISABLE
// begin ComConstruct ( beta_f , us_medium_wheeled , engine_solar , control_manual , us_gatling_gun ) ;
5459: LD_INT 6
5461: PPUSH
5462: LD_INT 2
5464: PPUSH
5465: LD_INT 2
5467: PPUSH
5468: LD_INT 1
5470: PPUSH
5471: LD_INT 4
5473: PPUSH
5474: CALL_OW 125
// AddComConstruct ( beta_f , us_light_wheeled , engine_solar , control_manual , us_machine_gun ) ;
5478: LD_INT 6
5480: PPUSH
5481: LD_INT 1
5483: PPUSH
5484: LD_INT 2
5486: PPUSH
5487: LD_INT 1
5489: PPUSH
5490: LD_INT 2
5492: PPUSH
5493: CALL_OW 185
// if difficulty > 1 then
5497: LD_OWVAR 67
5501: PUSH
5502: LD_INT 1
5504: GREATER
5505: IFFALSE 5526
// AddComConstruct ( beta_f , us_light_wheeled , engine_solar , control_manual , us_machine_gun ) ;
5507: LD_INT 6
5509: PPUSH
5510: LD_INT 1
5512: PPUSH
5513: LD_INT 2
5515: PPUSH
5516: LD_INT 1
5518: PPUSH
5519: LD_INT 2
5521: PPUSH
5522: CALL_OW 185
// end ;
5526: END
// on VehicleConstructed ( v , f ) do begin if GetSide ( v ) = 1 then
5527: LD_VAR 0 1
5531: PPUSH
5532: CALL_OW 255
5536: PUSH
5537: LD_INT 1
5539: EQUAL
5540: IFFALSE 5591
// if GetChassis ( v ) = us_medium_wheeled then
5542: LD_VAR 0 1
5546: PPUSH
5547: CALL_OW 265
5551: PUSH
5552: LD_INT 2
5554: EQUAL
5555: IFFALSE 5575
// Defenders = Defenders ^ v else
5557: LD_ADDR_LOC 7
5561: PUSH
5562: LD_LOC 7
5566: PUSH
5567: LD_VAR 0 1
5571: ADD
5572: ST_TO_ADDR
5573: GO 5591
// Hunters = Hunters ^ v ;
5575: LD_ADDR_EXP 18
5579: PUSH
5580: LD_EXP 18
5584: PUSH
5585: LD_VAR 0 1
5589: ADD
5590: ST_TO_ADDR
// end ;
5591: PPOPN 2
5593: END
// every 0 0$1 trigger Hunters = true do
5594: LD_EXP 18
5598: PUSH
5599: LD_INT 1
5601: EQUAL
5602: IFFALSE 5652
5604: GO 5606
5606: DISABLE
// Hunted = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , OilBase ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
5607: LD_ADDR_EXP 20
5611: PUSH
5612: LD_INT 1
5614: PPUSH
5615: LD_INT 1
5617: PUSH
5618: LD_INT 105
5620: PUSH
5621: EMPTY
5622: LIST
5623: LIST
5624: PUSH
5625: LD_INT 2
5627: PUSH
5628: LD_INT 2
5630: PUSH
5631: EMPTY
5632: LIST
5633: LIST
5634: PUSH
5635: LD_INT 7
5637: PUSH
5638: LD_INT 9
5640: PUSH
5641: EMPTY
5642: LIST
5643: LIST
5644: LIST
5645: LIST
5646: PPUSH
5647: CALL_OW 399
5651: ST_TO_ADDR
5652: END
// every 0 0$15 trigger Hunters = true do var i ;
5653: LD_EXP 18
5657: PUSH
5658: LD_INT 1
5660: EQUAL
5661: IFFALSE 5707
5663: GO 5665
5665: DISABLE
5666: LD_INT 0
5668: PPUSH
// begin enable ;
5669: ENABLE
// if not ExistMc ( AmericanHunt ) then
5670: LD_EXP 19
5674: PPUSH
5675: CALL_OW 386
5679: NOT
5680: IFFALSE 5707
// AmericanHunt = McAttack ( 1 , Hunted , Hunters , [ ] ) ;
5682: LD_ADDR_EXP 19
5686: PUSH
5687: LD_INT 1
5689: PPUSH
5690: LD_EXP 20
5694: PPUSH
5695: LD_EXP 18
5699: PPUSH
5700: EMPTY
5701: PPUSH
5702: CALL_OW 402
5706: ST_TO_ADDR
// end ;
5707: PPOPN 1
5709: END
// every 0 0$1 trigger Hunters = false and ExistMc ( AmericanHunt ) do
5710: LD_EXP 18
5714: PUSH
5715: LD_INT 0
5717: EQUAL
5718: PUSH
5719: LD_EXP 19
5723: PPUSH
5724: CALL_OW 386
5728: AND
5729: IFFALSE 5743
5731: GO 5733
5733: DISABLE
// KillMc ( AmericanHunt ) ;
5734: LD_EXP 19
5738: PPUSH
5739: CALL_OW 387
5743: END
// every 0 0$1 trigger GetLives ( beta_d ) < 300 do var i ;
5744: LD_INT 5
5746: PPUSH
5747: CALL_OW 256
5751: PUSH
5752: LD_INT 300
5754: LESS
5755: IFFALSE 5840
5757: GO 5759
5759: DISABLE
5760: LD_INT 0
5762: PPUSH
// begin KillMc ( DefenceStrategy ) ;
5763: LD_LOC 9
5767: PPUSH
5768: CALL_OW 387
// disable ( 30 ) ;
5772: LD_INT 30
5774: DISABLE_MARKED
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_soldier ] ] ) do
5775: LD_ADDR_VAR 0 1
5779: PUSH
5780: LD_INT 22
5782: PUSH
5783: LD_INT 1
5785: PUSH
5786: EMPTY
5787: LIST
5788: LIST
5789: PUSH
5790: LD_INT 25
5792: PUSH
5793: LD_INT 1
5795: PUSH
5796: EMPTY
5797: LIST
5798: LIST
5799: PUSH
5800: EMPTY
5801: LIST
5802: LIST
5803: PPUSH
5804: CALL_OW 69
5808: PUSH
5809: FOR_IN
5810: IFFALSE 5838
// begin ComExitBuilding ( i ) ;
5812: LD_VAR 0 1
5816: PPUSH
5817: CALL_OW 122
// AddComAgressiveMove ( i , 71 , 15 ) ;
5821: LD_VAR 0 1
5825: PPUSH
5826: LD_INT 71
5828: PPUSH
5829: LD_INT 15
5831: PPUSH
5832: CALL_OW 174
// end ;
5836: GO 5809
5838: POP
5839: POP
// end ; end_of_file
5840: PPOPN 1
5842: END
// every 1 1$30 do
5843: GO 5845
5845: DISABLE
// begin enable ;
5846: ENABLE
// Wait ( Rand ( 0 0$5 , 0 0$15 ) ) ;
5847: LD_INT 175
5849: PPUSH
5850: LD_INT 525
5852: PPUSH
5853: CALL_OW 12
5857: PPUSH
5858: CALL_OW 67
// CreateCratesArea ( Rand ( 3 , 5 ) , CratesArea , true ) ;
5862: LD_INT 3
5864: PPUSH
5865: LD_INT 5
5867: PPUSH
5868: CALL_OW 12
5872: PPUSH
5873: LD_INT 8
5875: PPUSH
5876: LD_INT 1
5878: PPUSH
5879: CALL_OW 55
// end ;
5883: END
// export LabDestroyed , LabTaken ; export Losses ; on UnitDestroyed ( u ) do begin if u = Antoine then
5884: LD_VAR 0 1
5888: PUSH
5889: LD_EXP 1
5893: EQUAL
5894: IFFALSE 5903
// YouLost ( AntoineDead ) ;
5896: LD_STRING AntoineDead
5898: PPUSH
5899: CALL_OW 104
// if u = beta_l then
5903: LD_VAR 0 1
5907: PUSH
5908: LD_INT 8
5910: EQUAL
5911: IFFALSE 5921
// LabDestroyed = true ;
5913: LD_ADDR_EXP 21
5917: PUSH
5918: LD_INT 1
5920: ST_TO_ADDR
// if GetSide ( u ) = 2 and GetType ( u ) = unit_human then
5921: LD_VAR 0 1
5925: PPUSH
5926: CALL_OW 255
5930: PUSH
5931: LD_INT 2
5933: EQUAL
5934: PUSH
5935: LD_VAR 0 1
5939: PPUSH
5940: CALL_OW 247
5944: PUSH
5945: LD_INT 1
5947: EQUAL
5948: AND
5949: IFFALSE 5965
// Losses = Losses + 1 ;
5951: LD_ADDR_EXP 23
5955: PUSH
5956: LD_EXP 23
5960: PUSH
5961: LD_INT 1
5963: PLUS
5964: ST_TO_ADDR
// end ;
5965: PPOPN 1
5967: END
// on BuildingCaptured ( b , os , u ) do begin if b = beta_l then
5968: LD_VAR 0 1
5972: PUSH
5973: LD_INT 8
5975: EQUAL
5976: IFFALSE 5993
// begin LabTaken = true ;
5978: LD_ADDR_EXP 22
5982: PUSH
5983: LD_INT 1
5985: ST_TO_ADDR
// ChangeMissionObjectives ( OLabOut ) ;
5986: LD_STRING OLabOut
5988: PPUSH
5989: CALL_OW 337
// end ; end ; end_of_file
5993: PPOPN 3
5995: END
// every 0 0$1 trigger FilterUnitsInArea ( BetaBase , [ [ f_side , 1 ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_factory ] , [ f_btype , b_lab ] , [ [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] , [ [ f_type , unit_human ] , [ f_outside ] ] ] ] ) = 0 do
5996: LD_INT 3
5998: PPUSH
5999: LD_INT 22
6001: PUSH
6002: LD_INT 1
6004: PUSH
6005: EMPTY
6006: LIST
6007: LIST
6008: PUSH
6009: LD_INT 2
6011: PUSH
6012: LD_INT 30
6014: PUSH
6015: LD_INT 0
6017: PUSH
6018: EMPTY
6019: LIST
6020: LIST
6021: PUSH
6022: LD_INT 30
6024: PUSH
6025: LD_INT 3
6027: PUSH
6028: EMPTY
6029: LIST
6030: LIST
6031: PUSH
6032: LD_INT 30
6034: PUSH
6035: LD_INT 6
6037: PUSH
6038: EMPTY
6039: LIST
6040: LIST
6041: PUSH
6042: LD_INT 21
6044: PUSH
6045: LD_INT 2
6047: PUSH
6048: EMPTY
6049: LIST
6050: LIST
6051: PUSH
6052: LD_INT 3
6054: PUSH
6055: LD_INT 58
6057: PUSH
6058: EMPTY
6059: LIST
6060: PUSH
6061: EMPTY
6062: LIST
6063: LIST
6064: PUSH
6065: EMPTY
6066: LIST
6067: LIST
6068: PUSH
6069: LD_INT 21
6071: PUSH
6072: LD_INT 1
6074: PUSH
6075: EMPTY
6076: LIST
6077: LIST
6078: PUSH
6079: LD_INT 56
6081: PUSH
6082: EMPTY
6083: LIST
6084: PUSH
6085: EMPTY
6086: LIST
6087: LIST
6088: PUSH
6089: EMPTY
6090: LIST
6091: LIST
6092: LIST
6093: LIST
6094: LIST
6095: LIST
6096: PUSH
6097: EMPTY
6098: LIST
6099: LIST
6100: PPUSH
6101: CALL_OW 70
6105: PUSH
6106: LD_INT 0
6108: EQUAL
6109: IFFALSE 6517
6111: GO 6113
6113: DISABLE
// begin InGameOn ;
6114: CALL_OW 8
// DialogueOn ;
6118: CALL_OW 6
// CenterOnXY ( 72 , 16 ) ;
6122: LD_INT 72
6124: PPUSH
6125: LD_INT 16
6127: PPUSH
6128: CALL_OW 84
// Wait ( 0 0$1 ) ;
6132: LD_INT 35
6134: PPUSH
6135: CALL_OW 67
// Say ( Antoine , de-a-1 ) ;
6139: LD_EXP 1
6143: PPUSH
6144: LD_STRING de-a-1
6146: PPUSH
6147: CALL_OW 88
// SayRadio ( Bojan , de-b-1 ) ;
6151: LD_EXP 2
6155: PPUSH
6156: LD_STRING de-b-1
6158: PPUSH
6159: CALL_OW 94
// if LabTaken = true then
6163: LD_EXP 22
6167: PUSH
6168: LD_INT 1
6170: EQUAL
6171: IFFALSE 6187
// Say ( Antoine , de-a-2 ) else
6173: LD_EXP 1
6177: PPUSH
6178: LD_STRING de-a-2
6180: PPUSH
6181: CALL_OW 88
6185: GO 6209
// if LabDestroyed = true then
6187: LD_EXP 21
6191: PUSH
6192: LD_INT 1
6194: EQUAL
6195: IFFALSE 6209
// Say ( Antoine , de-a-2a ) ;
6197: LD_EXP 1
6201: PPUSH
6202: LD_STRING de-a-2a
6204: PPUSH
6205: CALL_OW 88
// SayRadio ( Bojan , de-b-2 ) ;
6209: LD_EXP 2
6213: PPUSH
6214: LD_STRING de-b-2
6216: PPUSH
6217: CALL_OW 94
// if IsOK ( Ende ) then
6221: LD_EXP 3
6225: PPUSH
6226: CALL_OW 302
6230: IFFALSE 6244
// Say ( Ende , de-e-1 ) ;
6232: LD_EXP 3
6236: PPUSH
6237: LD_STRING de-e-1
6239: PPUSH
6240: CALL_OW 88
// if LabTaken = true then
6244: LD_EXP 22
6248: PUSH
6249: LD_INT 1
6251: EQUAL
6252: IFFALSE 6266
// AddMedal ( MLab , 1 ) else
6254: LD_STRING MLab
6256: PPUSH
6257: LD_INT 1
6259: PPUSH
6260: CALL_OW 101
6264: GO 6277
// AddMedal ( MLab , - 1 ) ;
6266: LD_STRING MLab
6268: PPUSH
6269: LD_INT 1
6271: NEG
6272: PPUSH
6273: CALL_OW 101
// if Losses < 2 then
6277: LD_EXP 23
6281: PUSH
6282: LD_INT 2
6284: LESS
6285: IFFALSE 6299
// AddMedal ( MLosses , 1 ) else
6287: LD_STRING MLosses
6289: PPUSH
6290: LD_INT 1
6292: PPUSH
6293: CALL_OW 101
6297: GO 6310
// AddMedal ( MLosses , - 1 ) ;
6299: LD_STRING MLosses
6301: PPUSH
6302: LD_INT 1
6304: NEG
6305: PPUSH
6306: CALL_OW 101
// if ArabianAttackTimer < [ 30 30$0 , 25 25$0 , 20 20$0 ] [ difficulty ] then
6310: LD_EXP 10
6314: PUSH
6315: LD_INT 63000
6317: PUSH
6318: LD_INT 52500
6320: PUSH
6321: LD_INT 42000
6323: PUSH
6324: EMPTY
6325: LIST
6326: LIST
6327: LIST
6328: PUSH
6329: LD_OWVAR 67
6333: ARRAY
6334: LESS
6335: IFFALSE 6349
// AddMedal ( MTime , 1 ) else
6337: LD_STRING MTime
6339: PPUSH
6340: LD_INT 1
6342: PPUSH
6343: CALL_OW 101
6347: GO 6360
// AddMedal ( MTime , - 1 ) ;
6349: LD_STRING MTime
6351: PPUSH
6352: LD_INT 1
6354: NEG
6355: PPUSH
6356: CALL_OW 101
// GiveMedals ( Main ) ;
6360: LD_STRING Main
6362: PPUSH
6363: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) ) ;
6367: LD_INT 22
6369: PUSH
6370: LD_INT 2
6372: PUSH
6373: EMPTY
6374: LIST
6375: LIST
6376: PUSH
6377: LD_INT 21
6379: PUSH
6380: LD_INT 1
6382: PUSH
6383: EMPTY
6384: LIST
6385: LIST
6386: PUSH
6387: EMPTY
6388: LIST
6389: LIST
6390: PPUSH
6391: CALL_OW 69
6395: PPUSH
6396: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
6400: LD_EXP 1
6404: PPUSH
6405: LD_STRING Antoine
6407: PPUSH
6408: CALL_OW 38
// if Ende then
6412: LD_EXP 3
6416: IFFALSE 6430
// SaveCharacters ( Ende , Ende ) ;
6418: LD_EXP 3
6422: PPUSH
6423: LD_STRING Ende
6425: PPUSH
6426: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) diff [ Antoine , Ende ] , ArOthers ) ;
6430: LD_INT 22
6432: PUSH
6433: LD_INT 2
6435: PUSH
6436: EMPTY
6437: LIST
6438: LIST
6439: PUSH
6440: LD_INT 21
6442: PUSH
6443: LD_INT 1
6445: PUSH
6446: EMPTY
6447: LIST
6448: LIST
6449: PUSH
6450: EMPTY
6451: LIST
6452: LIST
6453: PPUSH
6454: CALL_OW 69
6458: PUSH
6459: LD_EXP 1
6463: PUSH
6464: LD_EXP 3
6468: PUSH
6469: EMPTY
6470: LIST
6471: LIST
6472: DIFF
6473: PPUSH
6474: LD_STRING ArOthers
6476: PPUSH
6477: CALL_OW 38
// if LabTaken = true then
6481: LD_EXP 22
6485: PUSH
6486: LD_INT 1
6488: EQUAL
6489: IFFALSE 6503
// SaveVariable ( 1 , SolarAvailableToArabs ) else
6491: LD_INT 1
6493: PPUSH
6494: LD_STRING SolarAvailableToArabs
6496: PPUSH
6497: CALL_OW 39
6501: GO 6513
// SaveVariable ( 0 , SolarAvailableToArabs ) ;
6503: LD_INT 0
6505: PPUSH
6506: LD_STRING SolarAvailableToArabs
6508: PPUSH
6509: CALL_OW 39
// YouWin ;
6513: CALL_OW 103
// end ;
6517: END
