// export Hayes , Steve , Others ; function PrepareOurs ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// uc_side = 1 ;
   4: LD_ADDR_OWVAR 20
   8: PUSH
   9: LD_INT 1
  11: ST_TO_ADDR
// uc_nation = 1 ;
  12: LD_ADDR_OWVAR 21
  16: PUSH
  17: LD_INT 1
  19: ST_TO_ADDR
// InitHc ;
  20: CALL_OW 19
// Steve = NewCharacter ( Steve ) ;
  24: LD_ADDR_EXP 2
  28: PUSH
  29: LD_STRING Steve
  31: PPUSH
  32: CALL_OW 25
  36: ST_TO_ADDR
// PlaceUnitXY ( Steve , 145 , 108 , false ) ;
  37: LD_EXP 2
  41: PPUSH
  42: LD_INT 145
  44: PPUSH
  45: LD_INT 108
  47: PPUSH
  48: LD_INT 0
  50: PPUSH
  51: CALL_OW 48
// for i = 1 to 3 do
  55: LD_ADDR_VAR 0 2
  59: PUSH
  60: DOUBLE
  61: LD_INT 1
  63: DEC
  64: ST_TO_ADDR
  65: LD_INT 3
  67: PUSH
  68: FOR_TO
  69: IFFALSE 136
// begin PrepareHuman ( false , [ 1 , 2 , 4 ] [ i ] , [ 3 , 3 , 2 ] [ difficulty ] ) ;
  71: LD_INT 0
  73: PPUSH
  74: LD_INT 1
  76: PUSH
  77: LD_INT 2
  79: PUSH
  80: LD_INT 4
  82: PUSH
  83: EMPTY
  84: LIST
  85: LIST
  86: LIST
  87: PUSH
  88: LD_VAR 0 2
  92: ARRAY
  93: PPUSH
  94: LD_INT 3
  96: PUSH
  97: LD_INT 3
  99: PUSH
 100: LD_INT 2
 102: PUSH
 103: EMPTY
 104: LIST
 105: LIST
 106: LIST
 107: PUSH
 108: LD_OWVAR 67
 112: ARRAY
 113: PPUSH
 114: CALL_OW 380
// Others = Others ^ CreateHuman ;
 118: LD_ADDR_EXP 3
 122: PUSH
 123: LD_EXP 3
 127: PUSH
 128: CALL_OW 44
 132: ADD
 133: ST_TO_ADDR
// end ;
 134: GO 68
 136: POP
 137: POP
// for i in Others do
 138: LD_ADDR_VAR 0 2
 142: PUSH
 143: LD_EXP 3
 147: PUSH
 148: FOR_IN
 149: IFFALSE 174
// PlaceUnitXYR ( i , 141 , 109 , 5 , false ) ;
 151: LD_VAR 0 2
 155: PPUSH
 156: LD_INT 141
 158: PPUSH
 159: LD_INT 109
 161: PPUSH
 162: LD_INT 5
 164: PPUSH
 165: LD_INT 0
 167: PPUSH
 168: CALL_OW 50
 172: GO 148
 174: POP
 175: POP
// uc_side = 4 ;
 176: LD_ADDR_OWVAR 20
 180: PUSH
 181: LD_INT 4
 183: ST_TO_ADDR
// Hayes = NewCharacter ( Hayes ) ;
 184: LD_ADDR_EXP 1
 188: PUSH
 189: LD_STRING Hayes
 191: PPUSH
 192: CALL_OW 25
 196: ST_TO_ADDR
// end ;
 197: LD_VAR 0 1
 201: RET
// starting begin difficulty = GetMultiplayerSetting ( 0 ) + 1 ;
 202: LD_ADDR_OWVAR 67
 206: PUSH
 207: LD_INT 0
 209: PPUSH
 210: CALL_OW 426
 214: PUSH
 215: LD_INT 1
 217: PLUS
 218: ST_TO_ADDR
// SetBName ( dam1 , dam ) ;
 219: LD_INT 61
 221: PPUSH
 222: LD_STRING dam
 224: PPUSH
 225: CALL_OW 500
// InGameOn ;
 229: CALL_OW 8
// PrepareOurs ;
 233: CALL 0 0 0
// PrepareArabs ;
 237: CALL 1543 0 0
// ComMoveXY ( Steve , 140 , 102 ) ;
 241: LD_EXP 2
 245: PPUSH
 246: LD_INT 140
 248: PPUSH
 249: LD_INT 102
 251: PPUSH
 252: CALL_OW 111
// ComMoveXY ( Others , 137 , 104 ) ;
 256: LD_EXP 3
 260: PPUSH
 261: LD_INT 137
 263: PPUSH
 264: LD_INT 104
 266: PPUSH
 267: CALL_OW 111
// CenterNowOnXY ( 143 , 109 ) ;
 271: LD_INT 143
 273: PPUSH
 274: LD_INT 109
 276: PPUSH
 277: CALL_OW 86
// Wait ( 0 0$1 ) ;
 281: LD_INT 35
 283: PPUSH
 284: CALL_OW 67
// CenterOnUnits ( Steve ) ;
 288: LD_EXP 2
 292: PPUSH
 293: CALL_OW 85
// DialogueOn ;
 297: CALL_OW 6
// Say ( UnitFilter ( Others , [ f_class , class_soldier ] ) [ 1 ] , di-x-1 ) ;
 301: LD_EXP 3
 305: PPUSH
 306: LD_INT 25
 308: PUSH
 309: LD_INT 1
 311: PUSH
 312: EMPTY
 313: LIST
 314: LIST
 315: PPUSH
 316: CALL_OW 72
 320: PUSH
 321: LD_INT 1
 323: ARRAY
 324: PPUSH
 325: LD_STRING di-x-1
 327: PPUSH
 328: CALL_OW 88
// Say ( Steve , di-s-1 ) ;
 332: LD_EXP 2
 336: PPUSH
 337: LD_STRING di-s-1
 339: PPUSH
 340: CALL_OW 88
// Wait ( 0 0$1 ) ;
 344: LD_INT 35
 346: PPUSH
 347: CALL_OW 67
// SayRadio ( Hayes , di-h-1 ) ;
 351: LD_EXP 1
 355: PPUSH
 356: LD_STRING di-h-1
 358: PPUSH
 359: CALL_OW 94
// Say ( Steve , di-s-2 ) ;
 363: LD_EXP 2
 367: PPUSH
 368: LD_STRING di-s-2
 370: PPUSH
 371: CALL_OW 88
// SayRadio ( Hayes , di-h-2 ) ;
 375: LD_EXP 1
 379: PPUSH
 380: LD_STRING di-h-2
 382: PPUSH
 383: CALL_OW 94
// DialogueOff ;
 387: CALL_OW 7
// InGameOff ;
 391: CALL_OW 9
// SaveForQuickRestart ;
 395: CALL_OW 22
// ChangeMissionObjectives ( OGo ) ;
 399: LD_STRING OGo
 401: PPUSH
 402: CALL_OW 337
// end ; end_of_file
 406: END
// export function DSpottedDone ( v ) ; var u , i ; begin
 407: LD_INT 0
 409: PPUSH
 410: PPUSH
 411: PPUSH
// ChangeMissionObjectives ( OAvoidOut ) ;
 412: LD_STRING OAvoidOut
 414: PPUSH
 415: CALL_OW 337
// Phase = 1 ;
 419: LD_ADDR_EXP 6
 423: PUSH
 424: LD_INT 1
 426: ST_TO_ADDR
// DialogueOn ;
 427: CALL_OW 6
// case v of 1 :
 431: LD_VAR 0 1
 435: PUSH
 436: LD_INT 1
 438: DOUBLE
 439: EQUAL
 440: IFTRUE 444
 442: GO 524
 444: POP
// begin u = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) , Steve ) ;
 445: LD_ADDR_VAR 0 3
 449: PUSH
 450: LD_INT 22
 452: PUSH
 453: LD_INT 2
 455: PUSH
 456: EMPTY
 457: LIST
 458: LIST
 459: PUSH
 460: LD_INT 21
 462: PUSH
 463: LD_INT 1
 465: PUSH
 466: EMPTY
 467: LIST
 468: LIST
 469: PUSH
 470: EMPTY
 471: LIST
 472: LIST
 473: PPUSH
 474: CALL_OW 69
 478: PPUSH
 479: LD_EXP 2
 483: PPUSH
 484: CALL_OW 74
 488: ST_TO_ADDR
// CenterOnUnits ( u ) ;
 489: LD_VAR 0 3
 493: PPUSH
 494: CALL_OW 85
// Say ( u , da-a-1 ) ;
 498: LD_VAR 0 3
 502: PPUSH
 503: LD_STRING da-a-1
 505: PPUSH
 506: CALL_OW 88
// Say ( Steve , da-s-1 ) ;
 510: LD_EXP 2
 514: PPUSH
 515: LD_STRING da-s-1
 517: PPUSH
 518: CALL_OW 88
// end ; 2 :
 522: GO 557
 524: LD_INT 2
 526: DOUBLE
 527: EQUAL
 528: IFTRUE 532
 530: GO 556
 532: POP
// begin CenterOnUnits ( Steve ) ;
 533: LD_EXP 2
 537: PPUSH
 538: CALL_OW 85
// Say ( Steve , da-s-1a ) ;
 542: LD_EXP 2
 546: PPUSH
 547: LD_STRING da-s-1a
 549: PPUSH
 550: CALL_OW 88
// end ; end ;
 554: GO 557
 556: POP
// SayRadio ( Hayes , da-h-1 ) ;
 557: LD_EXP 1
 561: PPUSH
 562: LD_STRING da-h-1
 564: PPUSH
 565: CALL_OW 94
// DialogueOff ;
 569: CALL_OW 7
// ChangeMissionObjectives ( OReady ) ;
 573: LD_STRING OReady
 575: PPUSH
 576: CALL_OW 337
// for i in [ b_depot , b_workshop , b_factory , b_armoury , b_lab_basic , b_lab_half , b_lab , b_lab_weapon , b_oil_mine , b_solar_power , b_oil_power , b_breastwork , b_ext_stitch , b_ext_noncombat , b_ext_track ] do
 580: LD_ADDR_VAR 0 4
 584: PUSH
 585: LD_INT 0
 587: PUSH
 588: LD_INT 2
 590: PUSH
 591: LD_INT 3
 593: PUSH
 594: LD_INT 4
 596: PUSH
 597: LD_INT 9
 599: PUSH
 600: LD_INT 7
 602: PUSH
 603: LD_INT 6
 605: PUSH
 606: LD_INT 10
 608: PUSH
 609: LD_INT 29
 611: PUSH
 612: LD_INT 27
 614: PUSH
 615: LD_INT 26
 617: PUSH
 618: LD_INT 31
 620: PUSH
 621: LD_INT 23
 623: PUSH
 624: LD_INT 19
 626: PUSH
 627: LD_INT 16
 629: PUSH
 630: EMPTY
 631: LIST
 632: LIST
 633: LIST
 634: LIST
 635: LIST
 636: LIST
 637: LIST
 638: LIST
 639: LIST
 640: LIST
 641: LIST
 642: LIST
 643: LIST
 644: LIST
 645: LIST
 646: PUSH
 647: FOR_IN
 648: IFFALSE 667
// SetRestrict ( i , 1 , true ) ;
 650: LD_VAR 0 4
 654: PPUSH
 655: LD_INT 1
 657: PPUSH
 658: LD_INT 1
 660: PPUSH
 661: CALL_OW 324
 665: GO 647
 667: POP
 668: POP
// end ;
 669: LD_VAR 0 2
 673: RET
// export function DArrival ( u ) ; begin
 674: LD_INT 0
 676: PPUSH
// DialogueOn ;
 677: CALL_OW 6
// CenterOnUnits ( u ) ;
 681: LD_VAR 0 1
 685: PPUSH
 686: CALL_OW 85
// SayRadio ( u , dr-x-1 ) ;
 690: LD_VAR 0 1
 694: PPUSH
 695: LD_STRING dr-x-1
 697: PPUSH
 698: CALL_OW 94
// Say ( Steve , dr-s-1 ) ;
 702: LD_EXP 2
 706: PPUSH
 707: LD_STRING dr-s-1
 709: PPUSH
 710: CALL_OW 88
// ChangeMissionObjectives ( OAttack ) ;
 714: LD_STRING OAttack
 716: PPUSH
 717: CALL_OW 337
// Query ( QInfo ) ;
 721: LD_STRING QInfo
 723: PPUSH
 724: CALL_OW 97
// DialogueOff ;
 728: CALL_OW 7
// Points = 45 ;
 732: LD_ADDR_EXP 17
 736: PUSH
 737: LD_INT 45
 739: ST_TO_ADDR
// Phase = 2 end ;
 740: LD_ADDR_EXP 6
 744: PUSH
 745: LD_INT 2
 747: ST_TO_ADDR
 748: LD_VAR 0 2
 752: RET
// every 0 0$1 trigger Phase = 2 do
 753: LD_EXP 6
 757: PUSH
 758: LD_INT 2
 760: EQUAL
 761: IFFALSE 794
 763: GO 765
 765: DISABLE
// begin enable ;
 766: ENABLE
// display_strings = [ #Time , tick , #Points , Points ] ;
 767: LD_ADDR_OWVAR 47
 771: PUSH
 772: LD_STRING #Time
 774: PUSH
 775: LD_OWVAR 1
 779: PUSH
 780: LD_STRING #Points
 782: PUSH
 783: LD_EXP 17
 787: PUSH
 788: EMPTY
 789: LIST
 790: LIST
 791: LIST
 792: LIST
 793: ST_TO_ADDR
// end ;
 794: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) = 0 do
 795: LD_INT 22
 797: PUSH
 798: LD_INT 2
 800: PUSH
 801: EMPTY
 802: LIST
 803: LIST
 804: PUSH
 805: LD_INT 21
 807: PUSH
 808: LD_INT 1
 810: PUSH
 811: EMPTY
 812: LIST
 813: LIST
 814: PUSH
 815: EMPTY
 816: LIST
 817: LIST
 818: PPUSH
 819: CALL_OW 69
 823: PUSH
 824: LD_INT 0
 826: EQUAL
 827: IFFALSE 941
 829: GO 831
 831: DISABLE
// begin DialogueOn ;
 832: CALL_OW 6
// InGameOn ;
 836: CALL_OW 8
// if IsInUnit ( Steve ) then
 840: LD_EXP 2
 844: PPUSH
 845: CALL_OW 310
 849: IFFALSE 867
// CenterOnUnits ( IsInUnit ( Steve ) ) else
 851: LD_EXP 2
 855: PPUSH
 856: CALL_OW 310
 860: PPUSH
 861: CALL_OW 85
 865: GO 876
// CenterOnUnits ( Steve ) ;
 867: LD_EXP 2
 871: PPUSH
 872: CALL_OW 85
// Say ( Steve , de-s-1 ) ;
 876: LD_EXP 2
 880: PPUSH
 881: LD_STRING de-s-1
 883: PPUSH
 884: CALL_OW 88
// SayRadio ( Hayes , de-h-1 ) ;
 888: LD_EXP 1
 892: PPUSH
 893: LD_STRING de-h-1
 895: PPUSH
 896: CALL_OW 94
// Say ( Steve , de-s-2 ) ;
 900: LD_EXP 2
 904: PPUSH
 905: LD_STRING de-s-2
 907: PPUSH
 908: CALL_OW 88
// DialogueOff ;
 912: CALL_OW 7
// InGameOff ;
 916: CALL_OW 9
// ToLua ( setPointsSkirmish(3,  & Points & ); ) ;
 920: LD_STRING setPointsSkirmish(3, 
 922: PUSH
 923: LD_EXP 17
 927: STR
 928: PUSH
 929: LD_STRING );
 931: STR
 932: PPUSH
 933: CALL_OW 559
// YouWin ;
 937: CALL_OW 103
// end ; end_of_file
 941: END
// export BuildingsSpotted , AmericansSpotted ; export Phase ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_building ] , [ f_see , 1 ] ] ) do
 942: LD_INT 22
 944: PUSH
 945: LD_INT 2
 947: PUSH
 948: EMPTY
 949: LIST
 950: LIST
 951: PUSH
 952: LD_INT 21
 954: PUSH
 955: LD_INT 3
 957: PUSH
 958: EMPTY
 959: LIST
 960: LIST
 961: PUSH
 962: LD_INT 101
 964: PUSH
 965: LD_INT 1
 967: PUSH
 968: EMPTY
 969: LIST
 970: LIST
 971: PUSH
 972: EMPTY
 973: LIST
 974: LIST
 975: LIST
 976: PPUSH
 977: CALL_OW 69
 981: IFFALSE 1048
 983: GO 985
 985: DISABLE
// begin if Phase = false then
 986: LD_EXP 6
 990: PUSH
 991: LD_INT 0
 993: EQUAL
 994: IFFALSE 997
// enable ;
 996: ENABLE
// BuildingsSpotted = BuildingsSpotted union FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_building ] , [ f_see , 1 ] ] ) ;
 997: LD_ADDR_EXP 4
1001: PUSH
1002: LD_EXP 4
1006: PUSH
1007: LD_INT 22
1009: PUSH
1010: LD_INT 2
1012: PUSH
1013: EMPTY
1014: LIST
1015: LIST
1016: PUSH
1017: LD_INT 21
1019: PUSH
1020: LD_INT 3
1022: PUSH
1023: EMPTY
1024: LIST
1025: LIST
1026: PUSH
1027: LD_INT 101
1029: PUSH
1030: LD_INT 1
1032: PUSH
1033: EMPTY
1034: LIST
1035: LIST
1036: PUSH
1037: EMPTY
1038: LIST
1039: LIST
1040: LIST
1041: PPUSH
1042: CALL_OW 69
1046: UNION
1047: ST_TO_ADDR
// end ;
1048: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) do
1049: LD_INT 22
1051: PUSH
1052: LD_INT 1
1054: PUSH
1055: EMPTY
1056: LIST
1057: LIST
1058: PUSH
1059: LD_INT 101
1061: PUSH
1062: LD_INT 2
1064: PUSH
1065: EMPTY
1066: LIST
1067: LIST
1068: PUSH
1069: EMPTY
1070: LIST
1071: LIST
1072: PPUSH
1073: CALL_OW 69
1077: IFFALSE 1115
1079: GO 1081
1081: DISABLE
// begin if Phase = false then
1082: LD_EXP 6
1086: PUSH
1087: LD_INT 0
1089: EQUAL
1090: IFFALSE 1107
// begin DSpottedDone ( 1 ) ;
1092: LD_INT 1
1094: PPUSH
1095: CALL 407 0 1
// wait_timer = 5 5$0 ;
1099: LD_ADDR_EXP 7
1103: PUSH
1104: LD_INT 10500
1106: ST_TO_ADDR
// end ; AmericansSpotted = true ;
1107: LD_ADDR_EXP 5
1111: PUSH
1112: LD_INT 1
1114: ST_TO_ADDR
// end ;
1115: END
// every 0 0$1 trigger BuildingsSpotted >= [ 4 , 5 , 5 ] [ difficulty ] do
1116: LD_EXP 4
1120: PUSH
1121: LD_INT 4
1123: PUSH
1124: LD_INT 5
1126: PUSH
1127: LD_INT 5
1129: PUSH
1130: EMPTY
1131: LIST
1132: LIST
1133: LIST
1134: PUSH
1135: LD_OWVAR 67
1139: ARRAY
1140: GREATEREQUAL
1141: IFFALSE 1171
1143: GO 1145
1145: DISABLE
// if Phase = false then
1146: LD_EXP 6
1150: PUSH
1151: LD_INT 0
1153: EQUAL
1154: IFFALSE 1171
// begin DSpottedDone ( 2 ) ;
1156: LD_INT 2
1158: PPUSH
1159: CALL 407 0 1
// wait_timer = 5 5$0 ;
1163: LD_ADDR_EXP 7
1167: PUSH
1168: LD_INT 10500
1170: ST_TO_ADDR
// end ;
1171: END
// every 0 0$1 trigger Phase = 1 and wait_timer = 0 0$0 do var i , tmp ;
1172: LD_EXP 6
1176: PUSH
1177: LD_INT 1
1179: EQUAL
1180: PUSH
1181: LD_EXP 7
1185: PUSH
1186: LD_INT 0
1188: EQUAL
1189: AND
1190: IFFALSE 1494
1192: GO 1194
1194: DISABLE
1195: LD_INT 0
1197: PPUSH
1198: PPUSH
// begin uc_side = 1 ;
1199: LD_ADDR_OWVAR 20
1203: PUSH
1204: LD_INT 1
1206: ST_TO_ADDR
// uc_nation = 1 ;
1207: LD_ADDR_OWVAR 21
1211: PUSH
1212: LD_INT 1
1214: ST_TO_ADDR
// tmp = [ ] ;
1215: LD_ADDR_VAR 0 2
1219: PUSH
1220: EMPTY
1221: ST_TO_ADDR
// for i = 1 to [ 3 , 2 , 2 ] [ difficulty ] do
1222: LD_ADDR_VAR 0 1
1226: PUSH
1227: DOUBLE
1228: LD_INT 1
1230: DEC
1231: ST_TO_ADDR
1232: LD_INT 3
1234: PUSH
1235: LD_INT 2
1237: PUSH
1238: LD_INT 2
1240: PUSH
1241: EMPTY
1242: LIST
1243: LIST
1244: LIST
1245: PUSH
1246: LD_OWVAR 67
1250: ARRAY
1251: PUSH
1252: FOR_TO
1253: IFFALSE 1291
// begin PrepareSoldier ( false , Rand ( 2 , 4 ) ) ;
1255: LD_INT 0
1257: PPUSH
1258: LD_INT 2
1260: PPUSH
1261: LD_INT 4
1263: PPUSH
1264: CALL_OW 12
1268: PPUSH
1269: CALL_OW 381
// tmp = tmp ^ CreateHuman ;
1273: LD_ADDR_VAR 0 2
1277: PUSH
1278: LD_VAR 0 2
1282: PUSH
1283: CALL_OW 44
1287: ADD
1288: ST_TO_ADDR
// end ;
1289: GO 1252
1291: POP
1292: POP
// for i = 1 to 2 do
1293: LD_ADDR_VAR 0 1
1297: PUSH
1298: DOUBLE
1299: LD_INT 1
1301: DEC
1302: ST_TO_ADDR
1303: LD_INT 2
1305: PUSH
1306: FOR_TO
1307: IFFALSE 1385
// begin vc_chassis = [ us_medium_tracked , us_light_wheeled ] [ i ] ;
1309: LD_ADDR_OWVAR 37
1313: PUSH
1314: LD_INT 3
1316: PUSH
1317: LD_INT 1
1319: PUSH
1320: EMPTY
1321: LIST
1322: LIST
1323: PUSH
1324: LD_VAR 0 1
1328: ARRAY
1329: ST_TO_ADDR
// vc_engine = engine_solar ;
1330: LD_ADDR_OWVAR 39
1334: PUSH
1335: LD_INT 2
1337: ST_TO_ADDR
// vc_control = control_manual ;
1338: LD_ADDR_OWVAR 38
1342: PUSH
1343: LD_INT 1
1345: ST_TO_ADDR
// vc_weapon = [ us_gatling_gun , us_light_gun ] [ i ] ;
1346: LD_ADDR_OWVAR 40
1350: PUSH
1351: LD_INT 4
1353: PUSH
1354: LD_INT 3
1356: PUSH
1357: EMPTY
1358: LIST
1359: LIST
1360: PUSH
1361: LD_VAR 0 1
1365: ARRAY
1366: ST_TO_ADDR
// tmp = tmp ^ CreateVehicle ;
1367: LD_ADDR_VAR 0 2
1371: PUSH
1372: LD_VAR 0 2
1376: PUSH
1377: CALL_OW 45
1381: ADD
1382: ST_TO_ADDR
// end ;
1383: GO 1306
1385: POP
1386: POP
// for i in tmp do
1387: LD_ADDR_VAR 0 1
1391: PUSH
1392: LD_VAR 0 2
1396: PUSH
1397: FOR_IN
1398: IFFALSE 1464
// begin PlaceUnitArea ( i , ArrivalArea , false ) ;
1400: LD_VAR 0 1
1404: PPUSH
1405: LD_INT 2
1407: PPUSH
1408: LD_INT 0
1410: PPUSH
1411: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
1415: LD_VAR 0 1
1419: PPUSH
1420: CALL_OW 247
1424: PUSH
1425: LD_INT 2
1427: EQUAL
1428: IFFALSE 1462
// begin PrepareMechanic ( false , Rand ( 2 , 3 ) ) ;
1430: LD_INT 0
1432: PPUSH
1433: LD_INT 2
1435: PPUSH
1436: LD_INT 3
1438: PPUSH
1439: CALL_OW 12
1443: PPUSH
1444: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
1448: CALL_OW 44
1452: PPUSH
1453: LD_VAR 0 1
1457: PPUSH
1458: CALL_OW 52
// end ; end ;
1462: GO 1397
1464: POP
1465: POP
// DArrival ( UnitFilter ( tmp , [ f_type , unit_human ] ) [ 1 ] ) ;
1466: LD_VAR 0 2
1470: PPUSH
1471: LD_INT 21
1473: PUSH
1474: LD_INT 1
1476: PUSH
1477: EMPTY
1478: LIST
1479: LIST
1480: PPUSH
1481: CALL_OW 72
1485: PUSH
1486: LD_INT 1
1488: ARRAY
1489: PPUSH
1490: CALL 674 0 1
// end ;
1494: PPOPN 2
1496: END
// export wait_timer ; every 0 0$1 trigger Phase = 1 do
1497: LD_EXP 6
1501: PUSH
1502: LD_INT 1
1504: EQUAL
1505: IFFALSE 1542
1507: GO 1509
1509: DISABLE
// begin enable ;
1510: ENABLE
// wait_timer = wait_timer - 0 0$1 ;
1511: LD_ADDR_EXP 7
1515: PUSH
1516: LD_EXP 7
1520: PUSH
1521: LD_INT 35
1523: MINUS
1524: ST_TO_ADDR
// display_strings = [ #WaitTimer , wait_timer ] ;
1525: LD_ADDR_OWVAR 47
1529: PUSH
1530: LD_STRING #WaitTimer
1532: PUSH
1533: LD_EXP 7
1537: PUSH
1538: EMPTY
1539: LIST
1540: LIST
1541: ST_TO_ADDR
// end ; end_of_file
1542: END
// export Engineers ; export function PrepareArabs ; var i , j , tmp , pos ; begin
1543: LD_INT 0
1545: PPUSH
1546: PPUSH
1547: PPUSH
1548: PPUSH
1549: PPUSH
// uc_side = 2 ;
1550: LD_ADDR_OWVAR 20
1554: PUSH
1555: LD_INT 2
1557: ST_TO_ADDR
// uc_nation = nation_arabian ;
1558: LD_ADDR_OWVAR 21
1562: PUSH
1563: LD_INT 2
1565: ST_TO_ADDR
// pos = [ [ 98 , 28 ] , [ 51 , 18 ] , [ 58 , 60 ] ] ;
1566: LD_ADDR_VAR 0 5
1570: PUSH
1571: LD_INT 98
1573: PUSH
1574: LD_INT 28
1576: PUSH
1577: EMPTY
1578: LIST
1579: LIST
1580: PUSH
1581: LD_INT 51
1583: PUSH
1584: LD_INT 18
1586: PUSH
1587: EMPTY
1588: LIST
1589: LIST
1590: PUSH
1591: LD_INT 58
1593: PUSH
1594: LD_INT 60
1596: PUSH
1597: EMPTY
1598: LIST
1599: LIST
1600: PUSH
1601: EMPTY
1602: LIST
1603: LIST
1604: LIST
1605: ST_TO_ADDR
// for i = 1 to pos do
1606: LD_ADDR_VAR 0 2
1610: PUSH
1611: DOUBLE
1612: LD_INT 1
1614: DEC
1615: ST_TO_ADDR
1616: LD_VAR 0 5
1620: PUSH
1621: FOR_TO
1622: IFFALSE 1793
// for j = 1 to [ [ 4 , 5 , 5 ] [ difficulty ] , [ 3 , 3 , 4 ] [ difficulty ] , 2 ] [ i ] do
1624: LD_ADDR_VAR 0 3
1628: PUSH
1629: DOUBLE
1630: LD_INT 1
1632: DEC
1633: ST_TO_ADDR
1634: LD_INT 4
1636: PUSH
1637: LD_INT 5
1639: PUSH
1640: LD_INT 5
1642: PUSH
1643: EMPTY
1644: LIST
1645: LIST
1646: LIST
1647: PUSH
1648: LD_OWVAR 67
1652: ARRAY
1653: PUSH
1654: LD_INT 3
1656: PUSH
1657: LD_INT 3
1659: PUSH
1660: LD_INT 4
1662: PUSH
1663: EMPTY
1664: LIST
1665: LIST
1666: LIST
1667: PUSH
1668: LD_OWVAR 67
1672: ARRAY
1673: PUSH
1674: LD_INT 2
1676: PUSH
1677: EMPTY
1678: LIST
1679: LIST
1680: LIST
1681: PUSH
1682: LD_VAR 0 2
1686: ARRAY
1687: PUSH
1688: FOR_TO
1689: IFFALSE 1789
// begin PrepareSoldier ( false , [ Rand ( 1 , 3 ) , Rand ( 2 , 3 ) , Rand ( 2 , 4 ) ] [ difficulty ] ) ;
1691: LD_INT 0
1693: PPUSH
1694: LD_INT 1
1696: PPUSH
1697: LD_INT 3
1699: PPUSH
1700: CALL_OW 12
1704: PUSH
1705: LD_INT 2
1707: PPUSH
1708: LD_INT 3
1710: PPUSH
1711: CALL_OW 12
1715: PUSH
1716: LD_INT 2
1718: PPUSH
1719: LD_INT 4
1721: PPUSH
1722: CALL_OW 12
1726: PUSH
1727: EMPTY
1728: LIST
1729: LIST
1730: LIST
1731: PUSH
1732: LD_OWVAR 67
1736: ARRAY
1737: PPUSH
1738: CALL_OW 381
// PlaceUnitXYR ( CreateHuman , pos [ i ] [ 1 ] , pos [ i ] [ 2 ] , 8 , false ) ;
1742: CALL_OW 44
1746: PPUSH
1747: LD_VAR 0 5
1751: PUSH
1752: LD_VAR 0 2
1756: ARRAY
1757: PUSH
1758: LD_INT 1
1760: ARRAY
1761: PPUSH
1762: LD_VAR 0 5
1766: PUSH
1767: LD_VAR 0 2
1771: ARRAY
1772: PUSH
1773: LD_INT 2
1775: ARRAY
1776: PPUSH
1777: LD_INT 8
1779: PPUSH
1780: LD_INT 0
1782: PPUSH
1783: CALL_OW 50
// end ;
1787: GO 1688
1789: POP
1790: POP
1791: GO 1621
1793: POP
1794: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_soldier ] ] ) do
1795: LD_ADDR_VAR 0 2
1799: PUSH
1800: LD_INT 22
1802: PUSH
1803: LD_INT 2
1805: PUSH
1806: EMPTY
1807: LIST
1808: LIST
1809: PUSH
1810: LD_INT 25
1812: PUSH
1813: LD_INT 1
1815: PUSH
1816: EMPTY
1817: LIST
1818: LIST
1819: PUSH
1820: EMPTY
1821: LIST
1822: LIST
1823: PPUSH
1824: CALL_OW 69
1828: PUSH
1829: FOR_IN
1830: IFFALSE 1843
// ComHold ( i ) ;
1832: LD_VAR 0 2
1836: PPUSH
1837: CALL_OW 140
1841: GO 1829
1843: POP
1844: POP
// for i = 1 to [ 3 , 5 , 7 ] [ difficulty ] do
1845: LD_ADDR_VAR 0 2
1849: PUSH
1850: DOUBLE
1851: LD_INT 1
1853: DEC
1854: ST_TO_ADDR
1855: LD_INT 3
1857: PUSH
1858: LD_INT 5
1860: PUSH
1861: LD_INT 7
1863: PUSH
1864: EMPTY
1865: LIST
1866: LIST
1867: LIST
1868: PUSH
1869: LD_OWVAR 67
1873: ARRAY
1874: PUSH
1875: FOR_TO
1876: IFFALSE 1979
// begin PrepareHuman ( false , [ 4 , 3 , 3 , 3 , 3 , 4 , 3 ] [ i ] , Rand ( 2 , 4 ) ) ;
1878: LD_INT 0
1880: PPUSH
1881: LD_INT 4
1883: PUSH
1884: LD_INT 3
1886: PUSH
1887: LD_INT 3
1889: PUSH
1890: LD_INT 3
1892: PUSH
1893: LD_INT 3
1895: PUSH
1896: LD_INT 4
1898: PUSH
1899: LD_INT 3
1901: PUSH
1902: EMPTY
1903: LIST
1904: LIST
1905: LIST
1906: LIST
1907: LIST
1908: LIST
1909: LIST
1910: PUSH
1911: LD_VAR 0 2
1915: ARRAY
1916: PPUSH
1917: LD_INT 2
1919: PPUSH
1920: LD_INT 4
1922: PPUSH
1923: CALL_OW 12
1927: PPUSH
1928: CALL_OW 380
// PlaceHumanInUnit ( CreateHuman , [ al , af1 , af2 , af1 , af2 , al , af1 ] [ i ] ) ;
1932: CALL_OW 44
1936: PPUSH
1937: LD_INT 96
1939: PUSH
1940: LD_INT 127
1942: PUSH
1943: LD_INT 70
1945: PUSH
1946: LD_INT 127
1948: PUSH
1949: LD_INT 70
1951: PUSH
1952: LD_INT 96
1954: PUSH
1955: LD_INT 127
1957: PUSH
1958: EMPTY
1959: LIST
1960: LIST
1961: LIST
1962: LIST
1963: LIST
1964: LIST
1965: LIST
1966: PUSH
1967: LD_VAR 0 2
1971: ARRAY
1972: PPUSH
1973: CALL_OW 52
// end ;
1977: GO 1875
1979: POP
1980: POP
// for i = 1 to pos do
1981: LD_ADDR_VAR 0 2
1985: PUSH
1986: DOUBLE
1987: LD_INT 1
1989: DEC
1990: ST_TO_ADDR
1991: LD_VAR 0 5
1995: PUSH
1996: FOR_TO
1997: IFFALSE 2086
// begin PrepareEngineer ( false , Rand ( 3 , 4 ) ) ;
1999: LD_INT 0
2001: PPUSH
2002: LD_INT 3
2004: PPUSH
2005: LD_INT 4
2007: PPUSH
2008: CALL_OW 12
2012: PPUSH
2013: CALL_OW 382
// Engineers = Engineers ^ CreateHuman ;
2017: LD_ADDR_EXP 8
2021: PUSH
2022: LD_EXP 8
2026: PUSH
2027: CALL_OW 44
2031: ADD
2032: ST_TO_ADDR
// PlaceUnitXYR ( Engineers [ i ] , pos [ i ] [ 1 ] , pos [ i ] [ 2 ] , 2 , false ) ;
2033: LD_EXP 8
2037: PUSH
2038: LD_VAR 0 2
2042: ARRAY
2043: PPUSH
2044: LD_VAR 0 5
2048: PUSH
2049: LD_VAR 0 2
2053: ARRAY
2054: PUSH
2055: LD_INT 1
2057: ARRAY
2058: PPUSH
2059: LD_VAR 0 5
2063: PUSH
2064: LD_VAR 0 2
2068: ARRAY
2069: PUSH
2070: LD_INT 2
2072: ARRAY
2073: PPUSH
2074: LD_INT 2
2076: PPUSH
2077: LD_INT 0
2079: PPUSH
2080: CALL_OW 50
// end ;
2084: GO 1996
2086: POP
2087: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
2088: LD_ADDR_VAR 0 2
2092: PUSH
2093: LD_INT 22
2095: PUSH
2096: LD_INT 2
2098: PUSH
2099: EMPTY
2100: LIST
2101: LIST
2102: PUSH
2103: LD_INT 21
2105: PUSH
2106: LD_INT 2
2108: PUSH
2109: EMPTY
2110: LIST
2111: LIST
2112: PUSH
2113: EMPTY
2114: LIST
2115: LIST
2116: PPUSH
2117: CALL_OW 69
2121: PUSH
2122: FOR_IN
2123: IFFALSE 2168
// begin PrepareMechanic ( false , [ 3 , 4 , 5 ] [ difficulty ] ) ;
2125: LD_INT 0
2127: PPUSH
2128: LD_INT 3
2130: PUSH
2131: LD_INT 4
2133: PUSH
2134: LD_INT 5
2136: PUSH
2137: EMPTY
2138: LIST
2139: LIST
2140: LIST
2141: PUSH
2142: LD_OWVAR 67
2146: ARRAY
2147: PPUSH
2148: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
2152: CALL_OW 44
2156: PPUSH
2157: LD_VAR 0 2
2161: PPUSH
2162: CALL_OW 52
// end ;
2166: GO 2122
2168: POP
2169: POP
// AddComResearch ( al , tech_Weap1 ) ;
2170: LD_INT 96
2172: PPUSH
2173: LD_INT 51
2175: PPUSH
2176: CALL_OW 184
// AddComResearch ( al , tech_Tech2 ) ;
2180: LD_INT 96
2182: PPUSH
2183: LD_INT 49
2185: PPUSH
2186: CALL_OW 184
// case difficulty of 1 :
2190: LD_OWVAR 67
2194: PUSH
2195: LD_INT 1
2197: DOUBLE
2198: EQUAL
2199: IFTRUE 2203
2201: GO 2220
2203: POP
// begin RemoveUnit ( difv1 ) ;
2204: LD_INT 147
2206: PPUSH
2207: CALL_OW 64
// RemoveUnit ( difv2 ) ;
2211: LD_INT 149
2213: PPUSH
2214: CALL_OW 64
// end ; 2 :
2218: GO 2239
2220: LD_INT 2
2222: DOUBLE
2223: EQUAL
2224: IFTRUE 2228
2226: GO 2238
2228: POP
// begin RemoveUnit ( difv1 ) ;
2229: LD_INT 147
2231: PPUSH
2232: CALL_OW 64
// end ; end ;
2236: GO 2239
2238: POP
// end ;
2239: LD_VAR 0 1
2243: RET
// export RepairA , RepairB , RepairC ; export EnemiesAB , EnemiesBC , DefendAB , DefendBC ; every 0 0$1 do var i ;
2244: GO 2246
2246: DISABLE
2247: LD_INT 0
2249: PPUSH
// begin enable ;
2250: ENABLE
// for i = 1 to Engineers do
2251: LD_ADDR_VAR 0 1
2255: PUSH
2256: DOUBLE
2257: LD_INT 1
2259: DEC
2260: ST_TO_ADDR
2261: LD_EXP 8
2265: PUSH
2266: FOR_TO
2267: IFFALSE 2910
// begin if IsOK ( Engineers [ i ] ) and not See ( 1 , Engineers [ i ] ) then
2269: LD_EXP 8
2273: PUSH
2274: LD_VAR 0 1
2278: ARRAY
2279: PPUSH
2280: CALL_OW 302
2284: PUSH
2285: LD_INT 1
2287: PPUSH
2288: LD_EXP 8
2292: PUSH
2293: LD_VAR 0 1
2297: ARRAY
2298: PPUSH
2299: CALL_OW 292
2303: NOT
2304: AND
2305: IFFALSE 2583
// case i of 1 :
2307: LD_VAR 0 1
2311: PUSH
2312: LD_INT 1
2314: DOUBLE
2315: EQUAL
2316: IFTRUE 2320
2318: GO 2402
2320: POP
// if not ExistMc ( RepairA ) then
2321: LD_EXP 9
2325: PPUSH
2326: CALL_OW 386
2330: NOT
2331: IFFALSE 2400
// RepairA = McRepair ( 1 , Engineers [ 1 ] , FilterUnitsInArea ( BaseA , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) , [ [ mcr_bui_limit , 1000 ] ] ) ; 2 :
2333: LD_ADDR_EXP 9
2337: PUSH
2338: LD_INT 1
2340: PPUSH
2341: LD_EXP 8
2345: PUSH
2346: LD_INT 1
2348: ARRAY
2349: PPUSH
2350: LD_INT 3
2352: PPUSH
2353: LD_INT 22
2355: PUSH
2356: LD_INT 2
2358: PUSH
2359: EMPTY
2360: LIST
2361: LIST
2362: PUSH
2363: LD_INT 21
2365: PUSH
2366: LD_INT 3
2368: PUSH
2369: EMPTY
2370: LIST
2371: LIST
2372: PUSH
2373: EMPTY
2374: LIST
2375: LIST
2376: PPUSH
2377: CALL_OW 70
2381: PPUSH
2382: LD_INT 6
2384: PUSH
2385: LD_INT 1000
2387: PUSH
2388: EMPTY
2389: LIST
2390: LIST
2391: PUSH
2392: EMPTY
2393: LIST
2394: PPUSH
2395: CALL_OW 414
2399: ST_TO_ADDR
2400: GO 2583
2402: LD_INT 2
2404: DOUBLE
2405: EQUAL
2406: IFTRUE 2410
2408: GO 2492
2410: POP
// if not ExistMc ( RepairB ) then
2411: LD_EXP 10
2415: PPUSH
2416: CALL_OW 386
2420: NOT
2421: IFFALSE 2490
// RepairB = McRepair ( 1 , Engineers [ 2 ] , FilterUnitsInArea ( BaseB , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) , [ [ mcr_bui_limit , 1000 ] ] ) ; 3 :
2423: LD_ADDR_EXP 10
2427: PUSH
2428: LD_INT 1
2430: PPUSH
2431: LD_EXP 8
2435: PUSH
2436: LD_INT 2
2438: ARRAY
2439: PPUSH
2440: LD_INT 4
2442: PPUSH
2443: LD_INT 22
2445: PUSH
2446: LD_INT 2
2448: PUSH
2449: EMPTY
2450: LIST
2451: LIST
2452: PUSH
2453: LD_INT 21
2455: PUSH
2456: LD_INT 3
2458: PUSH
2459: EMPTY
2460: LIST
2461: LIST
2462: PUSH
2463: EMPTY
2464: LIST
2465: LIST
2466: PPUSH
2467: CALL_OW 70
2471: PPUSH
2472: LD_INT 6
2474: PUSH
2475: LD_INT 1000
2477: PUSH
2478: EMPTY
2479: LIST
2480: LIST
2481: PUSH
2482: EMPTY
2483: LIST
2484: PPUSH
2485: CALL_OW 414
2489: ST_TO_ADDR
2490: GO 2583
2492: LD_INT 3
2494: DOUBLE
2495: EQUAL
2496: IFTRUE 2500
2498: GO 2582
2500: POP
// if not ExistMc ( RepairC ) then
2501: LD_EXP 11
2505: PPUSH
2506: CALL_OW 386
2510: NOT
2511: IFFALSE 2580
// RepairC = McRepair ( 1 , Engineers [ 3 ] , FilterUnitsInArea ( BaseC , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) , [ [ mcr_bui_limit , 1000 ] ] ) ; end ;
2513: LD_ADDR_EXP 11
2517: PUSH
2518: LD_INT 1
2520: PPUSH
2521: LD_EXP 8
2525: PUSH
2526: LD_INT 3
2528: ARRAY
2529: PPUSH
2530: LD_INT 5
2532: PPUSH
2533: LD_INT 22
2535: PUSH
2536: LD_INT 2
2538: PUSH
2539: EMPTY
2540: LIST
2541: LIST
2542: PUSH
2543: LD_INT 21
2545: PUSH
2546: LD_INT 3
2548: PUSH
2549: EMPTY
2550: LIST
2551: LIST
2552: PUSH
2553: EMPTY
2554: LIST
2555: LIST
2556: PPUSH
2557: CALL_OW 70
2561: PPUSH
2562: LD_INT 6
2564: PUSH
2565: LD_INT 1000
2567: PUSH
2568: EMPTY
2569: LIST
2570: LIST
2571: PUSH
2572: EMPTY
2573: LIST
2574: PPUSH
2575: CALL_OW 414
2579: ST_TO_ADDR
2580: GO 2583
2582: POP
// if not GetLives ( Engineers [ 1 ] ) > 650 or See ( 1 , Engineers [ i ] ) then
2583: LD_EXP 8
2587: PUSH
2588: LD_INT 1
2590: ARRAY
2591: PPUSH
2592: CALL_OW 256
2596: PUSH
2597: LD_INT 650
2599: GREATER
2600: NOT
2601: PUSH
2602: LD_INT 1
2604: PPUSH
2605: LD_EXP 8
2609: PUSH
2610: LD_VAR 0 1
2614: ARRAY
2615: PPUSH
2616: CALL_OW 292
2620: OR
2621: IFFALSE 2791
// begin case i of 1 :
2623: LD_VAR 0 1
2627: PUSH
2628: LD_INT 1
2630: DOUBLE
2631: EQUAL
2632: IFTRUE 2636
2634: GO 2648
2636: POP
// KillMc ( RepairA ) ; 2 :
2637: LD_EXP 9
2641: PPUSH
2642: CALL_OW 387
2646: GO 2689
2648: LD_INT 2
2650: DOUBLE
2651: EQUAL
2652: IFTRUE 2656
2654: GO 2668
2656: POP
// KillMc ( RepairB ) ; 3 :
2657: LD_EXP 10
2661: PPUSH
2662: CALL_OW 387
2666: GO 2689
2668: LD_INT 3
2670: DOUBLE
2671: EQUAL
2672: IFTRUE 2676
2674: GO 2688
2676: POP
// KillMc ( RepairC ) ; end ;
2677: LD_EXP 11
2681: PPUSH
2682: CALL_OW 387
2686: GO 2689
2688: POP
// if IsOK ( Engineers [ i ] ) then
2689: LD_EXP 8
2693: PUSH
2694: LD_VAR 0 1
2698: ARRAY
2699: PPUSH
2700: CALL_OW 302
2704: IFFALSE 2791
// ComMoveXY ( Engineers [ i ] , GetX ( NearestUnitToUnit ( [ dam1 , dam2 , dam3 ] , Engineers [ i ] ) ) , GetY ( NearestUnitToUnit ( [ dam1 , dam2 , dam3 ] , Engineers [ i ] ) ) ) ;
2706: LD_EXP 8
2710: PUSH
2711: LD_VAR 0 1
2715: ARRAY
2716: PPUSH
2717: LD_INT 61
2719: PUSH
2720: LD_INT 103
2722: PUSH
2723: LD_INT 63
2725: PUSH
2726: EMPTY
2727: LIST
2728: LIST
2729: LIST
2730: PPUSH
2731: LD_EXP 8
2735: PUSH
2736: LD_VAR 0 1
2740: ARRAY
2741: PPUSH
2742: CALL_OW 74
2746: PPUSH
2747: CALL_OW 250
2751: PPUSH
2752: LD_INT 61
2754: PUSH
2755: LD_INT 103
2757: PUSH
2758: LD_INT 63
2760: PUSH
2761: EMPTY
2762: LIST
2763: LIST
2764: LIST
2765: PPUSH
2766: LD_EXP 8
2770: PUSH
2771: LD_VAR 0 1
2775: ARRAY
2776: PPUSH
2777: CALL_OW 74
2781: PPUSH
2782: CALL_OW 251
2786: PPUSH
2787: CALL_OW 111
// end ; if not HasTask ( Engineers [ i ] ) and GetListOfCratesInArea ( [ BaseA , BaseB , BaseC ] [ i ] ) then
2791: LD_EXP 8
2795: PUSH
2796: LD_VAR 0 1
2800: ARRAY
2801: PPUSH
2802: CALL_OW 314
2806: NOT
2807: PUSH
2808: LD_INT 3
2810: PUSH
2811: LD_INT 4
2813: PUSH
2814: LD_INT 5
2816: PUSH
2817: EMPTY
2818: LIST
2819: LIST
2820: LIST
2821: PUSH
2822: LD_VAR 0 1
2826: ARRAY
2827: PPUSH
2828: CALL_OW 435
2832: AND
2833: IFFALSE 2908
// AddComCollect ( Engineers [ i ] , GetListOfCratesInArea ( [ BaseA , BaseB , BaseC ] [ i ] ) [ 1 ] , GetListOfCratesInArea ( [ BaseA , BaseB , BaseC ] [ i ] ) [ 2 ] ) ;
2835: LD_EXP 8
2839: PUSH
2840: LD_VAR 0 1
2844: ARRAY
2845: PPUSH
2846: LD_INT 3
2848: PUSH
2849: LD_INT 4
2851: PUSH
2852: LD_INT 5
2854: PUSH
2855: EMPTY
2856: LIST
2857: LIST
2858: LIST
2859: PUSH
2860: LD_VAR 0 1
2864: ARRAY
2865: PPUSH
2866: CALL_OW 435
2870: PUSH
2871: LD_INT 1
2873: ARRAY
2874: PPUSH
2875: LD_INT 3
2877: PUSH
2878: LD_INT 4
2880: PUSH
2881: LD_INT 5
2883: PUSH
2884: EMPTY
2885: LIST
2886: LIST
2887: LIST
2888: PUSH
2889: LD_VAR 0 1
2893: ARRAY
2894: PPUSH
2895: CALL_OW 435
2899: PUSH
2900: LD_INT 2
2902: ARRAY
2903: PPUSH
2904: CALL_OW 177
// end ;
2908: GO 2266
2910: POP
2911: POP
// end ;
2912: PPOPN 1
2914: END
// every 0 0$1 do
2915: GO 2917
2917: DISABLE
// begin EnemiesAB = McRegistry ( 2 , [ [ mc_reg_area_to_protect , SectorAB ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
2918: LD_ADDR_EXP 12
2922: PUSH
2923: LD_INT 2
2925: PPUSH
2926: LD_INT 3
2928: PUSH
2929: LD_INT 7
2931: PUSH
2932: EMPTY
2933: LIST
2934: LIST
2935: PUSH
2936: LD_INT 1
2938: PUSH
2939: LD_INT 35
2941: PUSH
2942: EMPTY
2943: LIST
2944: LIST
2945: PUSH
2946: EMPTY
2947: LIST
2948: LIST
2949: PPUSH
2950: CALL_OW 399
2954: ST_TO_ADDR
// EnemiesBC = McRegistry ( 2 , [ [ mc_reg_area_to_protect , SectorBC ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
2955: LD_ADDR_EXP 13
2959: PUSH
2960: LD_INT 2
2962: PPUSH
2963: LD_INT 3
2965: PUSH
2966: LD_INT 8
2968: PUSH
2969: EMPTY
2970: LIST
2971: LIST
2972: PUSH
2973: LD_INT 1
2975: PUSH
2976: LD_INT 35
2978: PUSH
2979: EMPTY
2980: LIST
2981: LIST
2982: PUSH
2983: EMPTY
2984: LIST
2985: LIST
2986: PPUSH
2987: CALL_OW 399
2991: ST_TO_ADDR
// end ;
2992: END
// every 0 0$1 do var i ;
2993: GO 2995
2995: DISABLE
2996: LD_INT 0
2998: PPUSH
// begin enable ;
2999: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
3000: LD_ADDR_VAR 0 1
3004: PUSH
3005: LD_INT 22
3007: PUSH
3008: LD_INT 2
3010: PUSH
3011: EMPTY
3012: LIST
3013: LIST
3014: PUSH
3015: LD_INT 21
3017: PUSH
3018: LD_INT 2
3020: PUSH
3021: EMPTY
3022: LIST
3023: LIST
3024: PUSH
3025: LD_INT 24
3027: PUSH
3028: LD_INT 1000
3030: PUSH
3031: EMPTY
3032: LIST
3033: LIST
3034: PUSH
3035: EMPTY
3036: LIST
3037: LIST
3038: LIST
3039: PPUSH
3040: CALL_OW 69
3044: PUSH
3045: FOR_IN
3046: IFFALSE 3206
// begin if IsInArea ( i , SectorAB ) and not GetUnitMc ( i ) then
3048: LD_VAR 0 1
3052: PPUSH
3053: LD_INT 7
3055: PPUSH
3056: CALL_OW 308
3060: PUSH
3061: LD_VAR 0 1
3065: PPUSH
3066: CALL_OW 388
3070: NOT
3071: AND
3072: IFFALSE 3126
// if ExistMc ( DefendAB ) then
3074: LD_EXP 14
3078: PPUSH
3079: CALL_OW 386
3083: IFFALSE 3101
// AddMcUnits ( DefendAB , i ) else
3085: LD_EXP 14
3089: PPUSH
3090: LD_VAR 0 1
3094: PPUSH
3095: CALL_OW 390
3099: GO 3126
// DefendAB = McDefend ( 2 , EnemiesAB , i , [ ] ) ;
3101: LD_ADDR_EXP 14
3105: PUSH
3106: LD_INT 2
3108: PPUSH
3109: LD_EXP 12
3113: PPUSH
3114: LD_VAR 0 1
3118: PPUSH
3119: EMPTY
3120: PPUSH
3121: CALL_OW 401
3125: ST_TO_ADDR
// if IsInArea ( i , SectorBC ) and not GetUnitMc ( i ) then
3126: LD_VAR 0 1
3130: PPUSH
3131: LD_INT 8
3133: PPUSH
3134: CALL_OW 308
3138: PUSH
3139: LD_VAR 0 1
3143: PPUSH
3144: CALL_OW 388
3148: NOT
3149: AND
3150: IFFALSE 3204
// if ExistMc ( DefendBC ) then
3152: LD_EXP 15
3156: PPUSH
3157: CALL_OW 386
3161: IFFALSE 3179
// AddMcUnits ( DefendBC , i ) else
3163: LD_EXP 15
3167: PPUSH
3168: LD_VAR 0 1
3172: PPUSH
3173: CALL_OW 390
3177: GO 3204
// DefendBC = McDefend ( 1 , EnemiesBC , i , [ ] ) ;
3179: LD_ADDR_EXP 15
3183: PUSH
3184: LD_INT 1
3186: PPUSH
3187: LD_EXP 13
3191: PPUSH
3192: LD_VAR 0 1
3196: PPUSH
3197: EMPTY
3198: PPUSH
3199: CALL_OW 401
3203: ST_TO_ADDR
// end ;
3204: GO 3045
3206: POP
3207: POP
// end ;
3208: PPOPN 1
3210: END
// every 0 0$1 do var i , j ;
3211: GO 3213
3213: DISABLE
3214: LD_INT 0
3216: PPUSH
3217: PPUSH
// begin enable ;
3218: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
3219: LD_ADDR_VAR 0 1
3223: PUSH
3224: LD_INT 22
3226: PUSH
3227: LD_INT 2
3229: PUSH
3230: EMPTY
3231: LIST
3232: LIST
3233: PUSH
3234: LD_INT 21
3236: PUSH
3237: LD_INT 2
3239: PUSH
3240: EMPTY
3241: LIST
3242: LIST
3243: PUSH
3244: EMPTY
3245: LIST
3246: LIST
3247: PPUSH
3248: CALL_OW 69
3252: PUSH
3253: FOR_IN
3254: IFFALSE 3493
// begin if GetLives ( i ) < 650 then
3256: LD_VAR 0 1
3260: PPUSH
3261: CALL_OW 256
3265: PUSH
3266: LD_INT 650
3268: LESS
3269: IFFALSE 3328
// begin for j in GetUnitMc ( i ) do
3271: LD_ADDR_VAR 0 2
3275: PUSH
3276: LD_VAR 0 1
3280: PPUSH
3281: CALL_OW 388
3285: PUSH
3286: FOR_IN
3287: IFFALSE 3305
// RemoveMcUnits ( j , i ) ;
3289: LD_VAR 0 2
3293: PPUSH
3294: LD_VAR 0 1
3298: PPUSH
3299: CALL_OW 391
3303: GO 3286
3305: POP
3306: POP
// ComMoveToArea ( i , RepairSpots ) ;
3307: LD_VAR 0 1
3311: PPUSH
3312: LD_INT 6
3314: PPUSH
3315: CALL_OW 113
// AddComExitVehicle ( i ) ;
3319: LD_VAR 0 1
3323: PPUSH
3324: CALL_OW 181
// end ; if GetLives ( i ) = 1000 then
3328: LD_VAR 0 1
3332: PPUSH
3333: CALL_OW 256
3337: PUSH
3338: LD_INT 1000
3340: EQUAL
3341: IFFALSE 3420
// if not IsDrivenBy ( i ) then
3343: LD_VAR 0 1
3347: PPUSH
3348: CALL_OW 311
3352: NOT
3353: IFFALSE 3420
// ComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_mechanic ] , [ f_dist , i , 10 ] ] ) , i ) , i ) ;
3355: LD_INT 22
3357: PUSH
3358: LD_INT 2
3360: PUSH
3361: EMPTY
3362: LIST
3363: LIST
3364: PUSH
3365: LD_INT 25
3367: PUSH
3368: LD_INT 3
3370: PUSH
3371: EMPTY
3372: LIST
3373: LIST
3374: PUSH
3375: LD_INT 91
3377: PUSH
3378: LD_VAR 0 1
3382: PUSH
3383: LD_INT 10
3385: PUSH
3386: EMPTY
3387: LIST
3388: LIST
3389: LIST
3390: PUSH
3391: EMPTY
3392: LIST
3393: LIST
3394: LIST
3395: PPUSH
3396: CALL_OW 69
3400: PPUSH
3401: LD_VAR 0 1
3405: PPUSH
3406: CALL_OW 74
3410: PPUSH
3411: LD_VAR 0 1
3415: PPUSH
3416: CALL_OW 120
// if GetFuel ( i ) < 40 and GetEngine ( i ) = engine_combustion and not See ( 1 , i ) and IsInArea ( i , BaseA ) then
3420: LD_VAR 0 1
3424: PPUSH
3425: CALL_OW 261
3429: PUSH
3430: LD_INT 40
3432: LESS
3433: PUSH
3434: LD_VAR 0 1
3438: PPUSH
3439: CALL_OW 262
3443: PUSH
3444: LD_INT 1
3446: EQUAL
3447: AND
3448: PUSH
3449: LD_INT 1
3451: PPUSH
3452: LD_VAR 0 1
3456: PPUSH
3457: CALL_OW 292
3461: NOT
3462: AND
3463: PUSH
3464: LD_VAR 0 1
3468: PPUSH
3469: LD_INT 3
3471: PPUSH
3472: CALL_OW 308
3476: AND
3477: IFFALSE 3491
// SetFuel ( i , 95 ) ;
3479: LD_VAR 0 1
3483: PPUSH
3484: LD_INT 95
3486: PPUSH
3487: CALL_OW 240
// end ;
3491: GO 3253
3493: POP
3494: POP
// for i in [ af1 , af2 ] do
3495: LD_ADDR_VAR 0 1
3499: PUSH
3500: LD_INT 127
3502: PUSH
3503: LD_INT 70
3505: PUSH
3506: EMPTY
3507: LIST
3508: LIST
3509: PUSH
3510: FOR_IN
3511: IFFALSE 3669
// if UnitsInside ( i ) and not IsBusy ( i ) then
3513: LD_VAR 0 1
3517: PPUSH
3518: CALL_OW 313
3522: PUSH
3523: LD_VAR 0 1
3527: PPUSH
3528: CALL_OW 315
3532: NOT
3533: AND
3534: IFFALSE 3667
// case i of af1 :
3536: LD_VAR 0 1
3540: PUSH
3541: LD_INT 127
3543: DOUBLE
3544: EQUAL
3545: IFTRUE 3549
3547: GO 3596
3549: POP
// ComConstruct ( i , ar_medium_trike , engine_combustion , control_manual , [ ar_flame_thrower , ar_multimissile_ballista , ar_gatling_gun ] [ Rand ( 1 , 3 ) ] ) ; af2 :
3550: LD_VAR 0 1
3554: PPUSH
3555: LD_INT 13
3557: PPUSH
3558: LD_INT 1
3560: PPUSH
3561: LD_INT 1
3563: PPUSH
3564: LD_INT 26
3566: PUSH
3567: LD_INT 22
3569: PUSH
3570: LD_INT 25
3572: PUSH
3573: EMPTY
3574: LIST
3575: LIST
3576: LIST
3577: PUSH
3578: LD_INT 1
3580: PPUSH
3581: LD_INT 3
3583: PPUSH
3584: CALL_OW 12
3588: ARRAY
3589: PPUSH
3590: CALL_OW 125
3594: GO 3667
3596: LD_INT 70
3598: DOUBLE
3599: EQUAL
3600: IFTRUE 3604
3602: GO 3666
3604: POP
// ComConstruct ( i , [ ar_hovercraft , ar_light_trike ] [ Rand ( 1 , 2 ) ] , engine_solar , control_manual , [ ar_multimissile_ballista , ar_double_machine_gun ] [ Rand ( 1 , 2 ) ] ) ; end ;
3605: LD_VAR 0 1
3609: PPUSH
3610: LD_INT 11
3612: PUSH
3613: LD_INT 12
3615: PUSH
3616: EMPTY
3617: LIST
3618: LIST
3619: PUSH
3620: LD_INT 1
3622: PPUSH
3623: LD_INT 2
3625: PPUSH
3626: CALL_OW 12
3630: ARRAY
3631: PPUSH
3632: LD_INT 2
3634: PPUSH
3635: LD_INT 1
3637: PPUSH
3638: LD_INT 22
3640: PUSH
3641: LD_INT 24
3643: PUSH
3644: EMPTY
3645: LIST
3646: LIST
3647: PUSH
3648: LD_INT 1
3650: PPUSH
3651: LD_INT 2
3653: PPUSH
3654: CALL_OW 12
3658: ARRAY
3659: PPUSH
3660: CALL_OW 125
3664: GO 3667
3666: POP
3667: GO 3510
3669: POP
3670: POP
// end ;
3671: PPOPN 2
3673: END
// on LeaveVehicle ( v , u ) do begin if GetSide ( v ) = 2 and GetLives ( v ) < 250 then
3674: LD_VAR 0 1
3678: PPUSH
3679: CALL_OW 255
3683: PUSH
3684: LD_INT 2
3686: EQUAL
3687: PUSH
3688: LD_VAR 0 1
3692: PPUSH
3693: CALL_OW 256
3697: PUSH
3698: LD_INT 250
3700: LESS
3701: AND
3702: IFFALSE 3748
// ComEnterUnit ( u , NearestUnitToUnit ( UnitFilter ( [ af1 , af2 ] , [ f_side , 2 ] ) , u ) ) ;
3704: LD_VAR 0 2
3708: PPUSH
3709: LD_INT 127
3711: PUSH
3712: LD_INT 70
3714: PUSH
3715: EMPTY
3716: LIST
3717: LIST
3718: PPUSH
3719: LD_INT 22
3721: PUSH
3722: LD_INT 2
3724: PUSH
3725: EMPTY
3726: LIST
3727: LIST
3728: PPUSH
3729: CALL_OW 72
3733: PPUSH
3734: LD_VAR 0 2
3738: PPUSH
3739: CALL_OW 74
3743: PPUSH
3744: CALL_OW 120
// end ;
3748: PPOPN 2
3750: END
// export Escapers ; on LeaveBuilding ( b , u ) do begin if GetSide ( b ) = 2 and GetLives ( b ) < 250 then
3751: LD_VAR 0 1
3755: PPUSH
3756: CALL_OW 255
3760: PUSH
3761: LD_INT 2
3763: EQUAL
3764: PUSH
3765: LD_VAR 0 1
3769: PPUSH
3770: CALL_OW 256
3774: PUSH
3775: LD_INT 250
3777: LESS
3778: AND
3779: IFFALSE 3797
// Escapers = Escapers ^ u ;
3781: LD_ADDR_EXP 16
3785: PUSH
3786: LD_EXP 16
3790: PUSH
3791: LD_VAR 0 2
3795: ADD
3796: ST_TO_ADDR
// end ;
3797: PPOPN 2
3799: END
// on UnitGoesToRed ( u ) do var i , x ;
3800: LD_INT 0
3802: PPUSH
3803: PPUSH
// begin if u in [ dam1 , dam2 , dam3 ] then
3804: LD_VAR 0 1
3808: PUSH
3809: LD_INT 61
3811: PUSH
3812: LD_INT 103
3814: PUSH
3815: LD_INT 63
3817: PUSH
3818: EMPTY
3819: LIST
3820: LIST
3821: LIST
3822: IN
3823: IFFALSE 3948
// begin x = GetBase ( u ) ;
3825: LD_ADDR_VAR 0 3
3829: PUSH
3830: LD_VAR 0 1
3834: PPUSH
3835: CALL_OW 274
3839: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_btype , b_bunker ] ] ) ^ [ al , af1 , af2 ] do
3840: LD_ADDR_VAR 0 2
3844: PUSH
3845: LD_INT 22
3847: PUSH
3848: LD_INT 2
3850: PUSH
3851: EMPTY
3852: LIST
3853: LIST
3854: PUSH
3855: LD_INT 30
3857: PUSH
3858: LD_INT 32
3860: PUSH
3861: EMPTY
3862: LIST
3863: LIST
3864: PUSH
3865: EMPTY
3866: LIST
3867: LIST
3868: PPUSH
3869: CALL_OW 69
3873: PUSH
3874: LD_INT 96
3876: PUSH
3877: LD_INT 127
3879: PUSH
3880: LD_INT 70
3882: PUSH
3883: EMPTY
3884: LIST
3885: LIST
3886: LIST
3887: ADD
3888: PUSH
3889: FOR_IN
3890: IFFALSE 3946
// if GetBase ( i ) = x then
3892: LD_VAR 0 2
3896: PPUSH
3897: CALL_OW 274
3901: PUSH
3902: LD_VAR 0 3
3906: EQUAL
3907: IFFALSE 3944
// begin Escapers = Escapers ^ UnitsInside ( i ) ;
3909: LD_ADDR_EXP 16
3913: PUSH
3914: LD_EXP 16
3918: PUSH
3919: LD_VAR 0 2
3923: PPUSH
3924: CALL_OW 313
3928: ADD
3929: ST_TO_ADDR
// ComExitBuilding ( UnitsInside ( i ) ) ;
3930: LD_VAR 0 2
3934: PPUSH
3935: CALL_OW 313
3939: PPUSH
3940: CALL_OW 122
// end ;
3944: GO 3889
3946: POP
3947: POP
// end ; end ;
3948: PPOPN 3
3950: END
// every 0 0$1 trigger AmericansSpotted = true do var i ;
3951: LD_EXP 5
3955: PUSH
3956: LD_INT 1
3958: EQUAL
3959: IFFALSE 4113
3961: GO 3963
3963: DISABLE
3964: LD_INT 0
3966: PPUSH
// begin enable ;
3967: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_soldier ] ] ) do
3968: LD_ADDR_VAR 0 1
3972: PUSH
3973: LD_INT 22
3975: PUSH
3976: LD_INT 2
3978: PUSH
3979: EMPTY
3980: LIST
3981: LIST
3982: PUSH
3983: LD_INT 25
3985: PUSH
3986: LD_INT 1
3988: PUSH
3989: EMPTY
3990: LIST
3991: LIST
3992: PUSH
3993: EMPTY
3994: LIST
3995: LIST
3996: PPUSH
3997: CALL_OW 69
4001: PUSH
4002: FOR_IN
4003: IFFALSE 4111
// if not i in Escapers then
4005: LD_VAR 0 1
4009: PUSH
4010: LD_EXP 16
4014: IN
4015: NOT
4016: IFFALSE 4109
// ComEnterUnit ( i , NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] , [ f_btype , b_barracks ] ] , [ f_ok ] , [ f_empty ] ] ) , i ) ) ;
4018: LD_VAR 0 1
4022: PPUSH
4023: LD_INT 22
4025: PUSH
4026: LD_INT 2
4028: PUSH
4029: EMPTY
4030: LIST
4031: LIST
4032: PUSH
4033: LD_INT 2
4035: PUSH
4036: LD_INT 30
4038: PUSH
4039: LD_INT 32
4041: PUSH
4042: EMPTY
4043: LIST
4044: LIST
4045: PUSH
4046: LD_INT 30
4048: PUSH
4049: LD_INT 31
4051: PUSH
4052: EMPTY
4053: LIST
4054: LIST
4055: PUSH
4056: LD_INT 30
4058: PUSH
4059: LD_INT 5
4061: PUSH
4062: EMPTY
4063: LIST
4064: LIST
4065: PUSH
4066: EMPTY
4067: LIST
4068: LIST
4069: LIST
4070: LIST
4071: PUSH
4072: LD_INT 50
4074: PUSH
4075: EMPTY
4076: LIST
4077: PUSH
4078: LD_INT 58
4080: PUSH
4081: EMPTY
4082: LIST
4083: PUSH
4084: EMPTY
4085: LIST
4086: LIST
4087: LIST
4088: LIST
4089: PPUSH
4090: CALL_OW 69
4094: PPUSH
4095: LD_VAR 0 1
4099: PPUSH
4100: CALL_OW 74
4104: PPUSH
4105: CALL_OW 120
4109: GO 4002
4111: POP
4112: POP
// end ;
4113: PPOPN 1
4115: END
// every 0 0$1 do var i , j , x ;
4116: GO 4118
4118: DISABLE
4119: LD_INT 0
4121: PPUSH
4122: PPUSH
4123: PPUSH
// begin enable ;
4124: ENABLE
// if Escapers then
4125: LD_EXP 16
4129: IFFALSE 4541
// for i in Escapers do
4131: LD_ADDR_VAR 0 1
4135: PUSH
4136: LD_EXP 16
4140: PUSH
4141: FOR_IN
4142: IFFALSE 4539
// begin if IsInArea ( i , EscapeArea ) and IsOK ( i ) then
4144: LD_VAR 0 1
4148: PPUSH
4149: LD_INT 1
4151: PPUSH
4152: CALL_OW 308
4156: PUSH
4157: LD_VAR 0 1
4161: PPUSH
4162: CALL_OW 302
4166: AND
4167: IFFALSE 4178
// RemoveUnit ( i ) ;
4169: LD_VAR 0 1
4173: PPUSH
4174: CALL_OW 64
// if GetClass ( i ) = class_soldier then
4178: LD_VAR 0 1
4182: PPUSH
4183: CALL_OW 257
4187: PUSH
4188: LD_INT 1
4190: EQUAL
4191: IFFALSE 4525
// begin for j = 1 to 3 do
4193: LD_ADDR_VAR 0 2
4197: PUSH
4198: DOUBLE
4199: LD_INT 1
4201: DEC
4202: ST_TO_ADDR
4203: LD_INT 3
4205: PUSH
4206: FOR_TO
4207: IFFALSE 4438
// if IsInArea ( i , [ BaseA , BaseB , BaseC ] [ j ] ) and IsOK ( [ dam1 , dam2 , dam3 ] [ j ] ) then
4209: LD_VAR 0 1
4213: PPUSH
4214: LD_INT 3
4216: PUSH
4217: LD_INT 4
4219: PUSH
4220: LD_INT 5
4222: PUSH
4223: EMPTY
4224: LIST
4225: LIST
4226: LIST
4227: PUSH
4228: LD_VAR 0 2
4232: ARRAY
4233: PPUSH
4234: CALL_OW 308
4238: PUSH
4239: LD_INT 61
4241: PUSH
4242: LD_INT 103
4244: PUSH
4245: LD_INT 63
4247: PUSH
4248: EMPTY
4249: LIST
4250: LIST
4251: LIST
4252: PUSH
4253: LD_VAR 0 2
4257: ARRAY
4258: PPUSH
4259: CALL_OW 302
4263: AND
4264: IFFALSE 4361
// x = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_dist , i , 20 ] , [ f_ok ] , [ f_empty ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) , i ) else
4266: LD_ADDR_VAR 0 3
4270: PUSH
4271: LD_INT 22
4273: PUSH
4274: LD_INT 2
4276: PUSH
4277: EMPTY
4278: LIST
4279: LIST
4280: PUSH
4281: LD_INT 91
4283: PUSH
4284: LD_VAR 0 1
4288: PUSH
4289: LD_INT 20
4291: PUSH
4292: EMPTY
4293: LIST
4294: LIST
4295: LIST
4296: PUSH
4297: LD_INT 50
4299: PUSH
4300: EMPTY
4301: LIST
4302: PUSH
4303: LD_INT 58
4305: PUSH
4306: EMPTY
4307: LIST
4308: PUSH
4309: LD_INT 2
4311: PUSH
4312: LD_INT 30
4314: PUSH
4315: LD_INT 32
4317: PUSH
4318: EMPTY
4319: LIST
4320: LIST
4321: PUSH
4322: LD_INT 30
4324: PUSH
4325: LD_INT 31
4327: PUSH
4328: EMPTY
4329: LIST
4330: LIST
4331: PUSH
4332: EMPTY
4333: LIST
4334: LIST
4335: LIST
4336: PUSH
4337: EMPTY
4338: LIST
4339: LIST
4340: LIST
4341: LIST
4342: LIST
4343: PPUSH
4344: CALL_OW 69
4348: PPUSH
4349: LD_VAR 0 1
4353: PPUSH
4354: CALL_OW 74
4358: ST_TO_ADDR
4359: GO 4436
// x = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_dist , i , 20 ] , [ f_ok ] , [ f_empty ] , [ f_btype , b_breastwork ] ] ) , i ) ;
4361: LD_ADDR_VAR 0 3
4365: PUSH
4366: LD_INT 22
4368: PUSH
4369: LD_INT 2
4371: PUSH
4372: EMPTY
4373: LIST
4374: LIST
4375: PUSH
4376: LD_INT 91
4378: PUSH
4379: LD_VAR 0 1
4383: PUSH
4384: LD_INT 20
4386: PUSH
4387: EMPTY
4388: LIST
4389: LIST
4390: LIST
4391: PUSH
4392: LD_INT 50
4394: PUSH
4395: EMPTY
4396: LIST
4397: PUSH
4398: LD_INT 58
4400: PUSH
4401: EMPTY
4402: LIST
4403: PUSH
4404: LD_INT 30
4406: PUSH
4407: LD_INT 31
4409: PUSH
4410: EMPTY
4411: LIST
4412: LIST
4413: PUSH
4414: EMPTY
4415: LIST
4416: LIST
4417: LIST
4418: LIST
4419: LIST
4420: PPUSH
4421: CALL_OW 69
4425: PPUSH
4426: LD_VAR 0 1
4430: PPUSH
4431: CALL_OW 74
4435: ST_TO_ADDR
4436: GO 4206
4438: POP
4439: POP
// if not x then
4440: LD_VAR 0 3
4444: NOT
4445: IFFALSE 4473
// if GetDistUnits ( i , arm ) <= 20 then
4447: LD_VAR 0 1
4451: PPUSH
4452: LD_INT 98
4454: PPUSH
4455: CALL_OW 296
4459: PUSH
4460: LD_INT 20
4462: LESSEQUAL
4463: IFFALSE 4473
// x = arm ;
4465: LD_ADDR_VAR 0 3
4469: PUSH
4470: LD_INT 98
4472: ST_TO_ADDR
// if x then
4473: LD_VAR 0 3
4477: IFFALSE 4511
// begin Escapers = Escapers diff i ;
4479: LD_ADDR_EXP 16
4483: PUSH
4484: LD_EXP 16
4488: PUSH
4489: LD_VAR 0 1
4493: DIFF
4494: ST_TO_ADDR
// ComEnterUnit ( i , x ) ;
4495: LD_VAR 0 1
4499: PPUSH
4500: LD_VAR 0 3
4504: PPUSH
4505: CALL_OW 120
// end else
4509: GO 4523
// ComMoveToArea ( i , EscapeArea ) ;
4511: LD_VAR 0 1
4515: PPUSH
4516: LD_INT 1
4518: PPUSH
4519: CALL_OW 113
// end else
4523: GO 4537
// ComMoveToArea ( i , EscapeArea ) ;
4525: LD_VAR 0 1
4529: PPUSH
4530: LD_INT 1
4532: PPUSH
4533: CALL_OW 113
// end ;
4537: GO 4141
4539: POP
4540: POP
// end ; end_of_file
4541: PPOPN 3
4543: END
// every 0 0$1 do var i ;
4544: GO 4546
4546: DISABLE
4547: LD_INT 0
4549: PPUSH
// begin case tick of 1 .. 25 25$0 :
4550: LD_OWVAR 1
4554: PUSH
4555: LD_INT 1
4557: DOUBLE
4558: GREATEREQUAL
4559: IFFALSE 4567
4561: LD_INT 52500
4563: DOUBLE
4564: LESSEQUAL
4565: IFTRUE 4569
4567: GO 4620
4569: POP
// Wait ( [ Rand ( 1 1$30 , 2 2$30 ) , Rand ( 1 1$30 , 2 2$45 ) , Rand ( 1 1$45 , 3 3$0 ) ] [ difficulty ] ) ; else
4570: LD_INT 3150
4572: PPUSH
4573: LD_INT 5250
4575: PPUSH
4576: CALL_OW 12
4580: PUSH
4581: LD_INT 3150
4583: PPUSH
4584: LD_INT 5775
4586: PPUSH
4587: CALL_OW 12
4591: PUSH
4592: LD_INT 3675
4594: PPUSH
4595: LD_INT 6300
4597: PPUSH
4598: CALL_OW 12
4602: PUSH
4603: EMPTY
4604: LIST
4605: LIST
4606: LIST
4607: PUSH
4608: LD_OWVAR 67
4612: ARRAY
4613: PPUSH
4614: CALL_OW 67
4618: GO 4669
4620: POP
// Wait ( [ Rand ( 2 2$30 , 4 4$30 ) , Rand ( 2 2$30 , 5 5$0 ) , Rand ( 3 3$30 , 6 6$0 ) ] [ difficulty ] ) ; end ;
4621: LD_INT 5250
4623: PPUSH
4624: LD_INT 9450
4626: PPUSH
4627: CALL_OW 12
4631: PUSH
4632: LD_INT 5250
4634: PPUSH
4635: LD_INT 10500
4637: PPUSH
4638: CALL_OW 12
4642: PUSH
4643: LD_INT 7350
4645: PPUSH
4646: LD_INT 12600
4648: PPUSH
4649: CALL_OW 12
4653: PUSH
4654: EMPTY
4655: LIST
4656: LIST
4657: LIST
4658: PUSH
4659: LD_OWVAR 67
4663: ARRAY
4664: PPUSH
4665: CALL_OW 67
// for i in [ NCrates , SCrates ] do
4669: LD_ADDR_VAR 0 1
4673: PUSH
4674: LD_INT 9
4676: PUSH
4677: LD_INT 10
4679: PUSH
4680: EMPTY
4681: LIST
4682: LIST
4683: PUSH
4684: FOR_IN
4685: IFFALSE 4727
// begin CreateCratesArea ( Rand ( 2 , 5 ) , i , true ) ;
4687: LD_INT 2
4689: PPUSH
4690: LD_INT 5
4692: PPUSH
4693: CALL_OW 12
4697: PPUSH
4698: LD_VAR 0 1
4702: PPUSH
4703: LD_INT 1
4705: PPUSH
4706: CALL_OW 55
// Wait ( Rand ( 0 0$5 , 0 0$20 ) ) ;
4710: LD_INT 175
4712: PPUSH
4713: LD_INT 700
4715: PPUSH
4716: CALL_OW 12
4720: PPUSH
4721: CALL_OW 67
// end ;
4725: GO 4684
4727: POP
4728: POP
// enable ;
4729: ENABLE
// end ;
4730: PPOPN 1
4732: END
// export Points ; on UnitDestroyed ( u ) do begin if u = Steve then
4733: LD_VAR 0 1
4737: PUSH
4738: LD_EXP 2
4742: EQUAL
4743: IFFALSE 4752
// YouLost ( SteveDead ) ;
4745: LD_STRING SteveDead
4747: PPUSH
4748: CALL_OW 104
// if GetSide ( u ) = 2 and GetType ( u ) = unit_human then
4752: LD_VAR 0 1
4756: PPUSH
4757: CALL_OW 255
4761: PUSH
4762: LD_INT 2
4764: EQUAL
4765: PUSH
4766: LD_VAR 0 1
4770: PPUSH
4771: CALL_OW 247
4775: PUSH
4776: LD_INT 1
4778: EQUAL
4779: AND
4780: IFFALSE 4796
// Points = Points + 1 ;
4782: LD_ADDR_EXP 17
4786: PUSH
4787: LD_EXP 17
4791: PUSH
4792: LD_INT 1
4794: PLUS
4795: ST_TO_ADDR
// end ;
4796: PPOPN 1
4798: END
// every 1 1$0 trigger Phase = 2 do
4799: LD_EXP 6
4803: PUSH
4804: LD_INT 2
4806: EQUAL
4807: IFFALSE 4837
4809: GO 4811
4811: DISABLE
// begin enable ;
4812: ENABLE
// if Points >= 1 then
4813: LD_EXP 17
4817: PUSH
4818: LD_INT 1
4820: GREATEREQUAL
4821: IFFALSE 4837
// Points = Points - 1 ;
4823: LD_ADDR_EXP 17
4827: PUSH
4828: LD_EXP 17
4832: PUSH
4833: LD_INT 1
4835: MINUS
4836: ST_TO_ADDR
// end ;
4837: END
