// export Alex , Anne , TeamAlex , TeamAnne ; export Hayes ; export function SetTechs ; var ApemenAllowed ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// ApemenAllowed = LoadVariable ( ApemenAllowed , 0 ) ;
   4: LD_ADDR_VAR 0 2
   8: PUSH
   9: LD_STRING ApemenAllowed
  11: PPUSH
  12: LD_INT 0
  14: PPUSH
  15: CALL_OW 30
  19: ST_TO_ADDR
// if ApemenAllowed then
  20: LD_VAR 0 2
  24: IFFALSE 52
// begin SetTech ( tech_ApeLang , 1 , state_enabled ) ;
  26: LD_INT 1
  28: PPUSH
  29: LD_INT 1
  31: PPUSH
  32: LD_INT 1
  34: PPUSH
  35: CALL_OW 322
// SetTech ( tech_ApePsych , 1 , state_enabled ) ;
  39: LD_INT 2
  41: PPUSH
  42: LD_INT 1
  44: PPUSH
  45: LD_INT 1
  47: PPUSH
  48: CALL_OW 322
// end ; end ;
  52: LD_VAR 0 1
  56: RET
// export function PrepareOurs ; var i , h ; begin
  57: LD_INT 0
  59: PPUSH
  60: PPUSH
  61: PPUSH
// uc_side = 1 ;
  62: LD_ADDR_OWVAR 20
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// uc_nation = 1 ;
  70: LD_ADDR_OWVAR 21
  74: PUSH
  75: LD_INT 1
  77: ST_TO_ADDR
// Alex = LoadCharacter ( Alex , 2 , 0 ) ;
  78: LD_ADDR_EXP 1
  82: PUSH
  83: LD_STRING Alex
  85: PPUSH
  86: LD_INT 2
  88: PPUSH
  89: LD_INT 0
  91: PPUSH
  92: CALL_OW 527
  96: ST_TO_ADDR
// PlaceUnitXY ( Alex , 96 , 137 , false ) ;
  97: LD_EXP 1
 101: PPUSH
 102: LD_INT 96
 104: PPUSH
 105: LD_INT 137
 107: PPUSH
 108: LD_INT 0
 110: PPUSH
 111: CALL_OW 48
// TeamAlex = LoadCharacter ( TeamAlex , 0 , 0 ) ;
 115: LD_ADDR_EXP 3
 119: PUSH
 120: LD_STRING TeamAlex
 122: PPUSH
 123: LD_INT 0
 125: PPUSH
 126: LD_INT 0
 128: PPUSH
 129: CALL_OW 527
 133: ST_TO_ADDR
// for i in TeamAlex do
 134: LD_ADDR_VAR 0 2
 138: PUSH
 139: LD_EXP 3
 143: PUSH
 144: FOR_IN
 145: IFFALSE 170
// PlaceUnitXYR ( i , 100 , 135 , 3 , false ) ;
 147: LD_VAR 0 2
 151: PPUSH
 152: LD_INT 100
 154: PPUSH
 155: LD_INT 135
 157: PPUSH
 158: LD_INT 3
 160: PPUSH
 161: LD_INT 0
 163: PPUSH
 164: CALL_OW 50
 168: GO 144
 170: POP
 171: POP
// uc_side = 4 ;
 172: LD_ADDR_OWVAR 20
 176: PUSH
 177: LD_INT 4
 179: ST_TO_ADDR
// Anne = LoadCharacter ( Anne , 1 , 0 ) ;
 180: LD_ADDR_EXP 2
 184: PUSH
 185: LD_STRING Anne
 187: PPUSH
 188: LD_INT 1
 190: PPUSH
 191: LD_INT 0
 193: PPUSH
 194: CALL_OW 527
 198: ST_TO_ADDR
// PlaceUnitXY ( Anne , 91 , 119 , false ) ;
 199: LD_EXP 2
 203: PPUSH
 204: LD_INT 91
 206: PPUSH
 207: LD_INT 119
 209: PPUSH
 210: LD_INT 0
 212: PPUSH
 213: CALL_OW 48
// TeamAnne = LoadCharacter ( AmOthers , 0 , 0 ) ;
 217: LD_ADDR_EXP 4
 221: PUSH
 222: LD_STRING AmOthers
 224: PPUSH
 225: LD_INT 0
 227: PPUSH
 228: LD_INT 0
 230: PPUSH
 231: CALL_OW 527
 235: ST_TO_ADDR
// InitHc ;
 236: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , 4 ) ;
 240: LD_INT 1
 242: PPUSH
 243: LD_INT 2
 245: PPUSH
 246: CALL_OW 12
 250: PPUSH
 251: LD_INT 4
 253: PPUSH
 254: CALL_OW 381
// TeamAnne = TeamAnne ^ CreateHuman ;
 258: LD_ADDR_EXP 4
 262: PUSH
 263: LD_EXP 4
 267: PUSH
 268: CALL_OW 44
 272: ADD
 273: ST_TO_ADDR
// for i in TeamAnne do
 274: LD_ADDR_VAR 0 2
 278: PUSH
 279: LD_EXP 4
 283: PUSH
 284: FOR_IN
 285: IFFALSE 322
// begin PlaceUnitXYR ( i , 101 , 116 , 3 , false ) ;
 287: LD_VAR 0 2
 291: PPUSH
 292: LD_INT 101
 294: PPUSH
 295: LD_INT 116
 297: PPUSH
 298: LD_INT 3
 300: PPUSH
 301: LD_INT 0
 303: PPUSH
 304: CALL_OW 50
// SetClass ( i , 1 ) ;
 308: LD_VAR 0 2
 312: PPUSH
 313: LD_INT 1
 315: PPUSH
 316: CALL_OW 336
// end ;
 320: GO 284
 322: POP
 323: POP
// Hayes = NewCharacter ( Hayes ) ;
 324: LD_ADDR_EXP 5
 328: PUSH
 329: LD_STRING Hayes
 331: PPUSH
 332: CALL_OW 25
 336: ST_TO_ADDR
// end ;
 337: LD_VAR 0 1
 341: RET
// starting begin PrepareOurs ;
 342: CALL 57 0 0
// SetTechs ;
 346: CALL 0 0 0
// ChangeSideFog ( 1 , 4 ) ;
 350: LD_INT 1
 352: PPUSH
 353: LD_INT 4
 355: PPUSH
 356: CALL_OW 343
// RevealFogArea ( 4 , RevealArea ) ;
 360: LD_INT 4
 362: PPUSH
 363: LD_INT 3
 365: PPUSH
 366: CALL_OW 332
// Randomize ;
 370: CALL_OW 10
// InGameOn ;
 374: CALL_OW 8
// CenterNowOnUnits ( [ Alex , Anne ] ) ;
 378: LD_EXP 1
 382: PUSH
 383: LD_EXP 2
 387: PUSH
 388: EMPTY
 389: LIST
 390: LIST
 391: PPUSH
 392: CALL_OW 87
// ComMoveUnit ( Alex , Anne ) ;
 396: LD_EXP 1
 400: PPUSH
 401: LD_EXP 2
 405: PPUSH
 406: CALL_OW 112
// ComMoveXY ( TeamAlex , 97 , 126 ) ;
 410: LD_EXP 3
 414: PPUSH
 415: LD_INT 97
 417: PPUSH
 418: LD_INT 126
 420: PPUSH
 421: CALL_OW 111
// Wait ( 0 0$10 ) ;
 425: LD_INT 350
 427: PPUSH
 428: CALL_OW 67
// ComStop ( Alex ) ;
 432: LD_EXP 1
 436: PPUSH
 437: CALL_OW 141
// CenterOnUnits ( [ Alex , Anne ] ) ;
 441: LD_EXP 1
 445: PUSH
 446: LD_EXP 2
 450: PUSH
 451: EMPTY
 452: LIST
 453: LIST
 454: PPUSH
 455: CALL_OW 85
// ComTurnUnit ( Alex , Anne ) ;
 459: LD_EXP 1
 463: PPUSH
 464: LD_EXP 2
 468: PPUSH
 469: CALL_OW 119
// ComTurnUnit ( Anne , Alex ) ;
 473: LD_EXP 2
 477: PPUSH
 478: LD_EXP 1
 482: PPUSH
 483: CALL_OW 119
// Wait ( 0 0$0.5 ) ;
 487: LD_INT 18
 489: PPUSH
 490: CALL_OW 67
// DialogueOn ;
 494: CALL_OW 6
// Say ( Alex , di-a-1 ) ;
 498: LD_EXP 1
 502: PPUSH
 503: LD_STRING di-a-1
 505: PPUSH
 506: CALL_OW 88
// Say ( Anne , di-n-1 ) ;
 510: LD_EXP 2
 514: PPUSH
 515: LD_STRING di-n-1
 517: PPUSH
 518: CALL_OW 88
// CenterOnXY ( 74 , 56 ) ;
 522: LD_INT 74
 524: PPUSH
 525: LD_INT 56
 527: PPUSH
 528: CALL_OW 84
// Say ( Anne , di-n-2 ) ;
 532: LD_EXP 2
 536: PPUSH
 537: LD_STRING di-n-2
 539: PPUSH
 540: CALL_OW 88
// CenterOnXY ( 122 , 61 ) ;
 544: LD_INT 122
 546: PPUSH
 547: LD_INT 61
 549: PPUSH
 550: CALL_OW 84
// Say ( Anne , di-n-3 ) ;
 554: LD_EXP 2
 558: PPUSH
 559: LD_STRING di-n-3
 561: PPUSH
 562: CALL_OW 88
// CenterOnUnits ( [ Alex , Anne ] ) ;
 566: LD_EXP 1
 570: PUSH
 571: LD_EXP 2
 575: PUSH
 576: EMPTY
 577: LIST
 578: LIST
 579: PPUSH
 580: CALL_OW 85
// Say ( Alex , di-a-2 ) ;
 584: LD_EXP 1
 588: PPUSH
 589: LD_STRING di-a-2
 591: PPUSH
 592: CALL_OW 88
// Say ( Anne , di-n-4 ) ;
 596: LD_EXP 2
 600: PPUSH
 601: LD_STRING di-n-4
 603: PPUSH
 604: CALL_OW 88
// Say ( Alex , di-a-3 ) ;
 608: LD_EXP 1
 612: PPUSH
 613: LD_STRING di-a-3
 615: PPUSH
 616: CALL_OW 88
// SetSide ( FilterAllUnits ( [ f_side , 4 ] ) , 1 ) ;
 620: LD_INT 22
 622: PUSH
 623: LD_INT 4
 625: PUSH
 626: EMPTY
 627: LIST
 628: LIST
 629: PPUSH
 630: CALL_OW 69
 634: PPUSH
 635: LD_INT 1
 637: PPUSH
 638: CALL_OW 235
// DIalogueOff ;
 642: CALL_OW 7
// InGameOff ;
 646: CALL_OW 9
// SaveForQuickRestart ;
 650: CALL_OW 22
// ChangeMissionObjectives ( ODestroy ) ;
 654: LD_STRING ODestroy
 656: PPUSH
 657: CALL_OW 337
// end ; end_of_file
 661: END
// every 2 2$30 do
 662: GO 664
 664: DISABLE
// begin DialogueOn ;
 665: CALL_OW 6
// SayRadio ( Bojan , dt-b-1 ) ;
 669: LD_EXP 11
 673: PPUSH
 674: LD_STRING dt-b-1
 676: PPUSH
 677: CALL_OW 94
// Say ( Alex , dt-a-1 ) ;
 681: LD_EXP 1
 685: PPUSH
 686: LD_STRING dt-a-1
 688: PPUSH
 689: CALL_OW 88
// if IsOK ( Anne ) then
 693: LD_EXP 2
 697: PPUSH
 698: CALL_OW 302
 702: IFFALSE 718
// Say ( Anne , dt-n-1 ) else
 704: LD_EXP 2
 708: PPUSH
 709: LD_STRING dt-n-1
 711: PPUSH
 712: CALL_OW 88
 716: GO 745
// Say ( UnitFilter ( TeamAnne , [ f_ok ] ) [ 1 ] , dt-n-1 ) ;
 718: LD_EXP 4
 722: PPUSH
 723: LD_INT 50
 725: PUSH
 726: EMPTY
 727: LIST
 728: PPUSH
 729: CALL_OW 72
 733: PUSH
 734: LD_INT 1
 736: ARRAY
 737: PPUSH
 738: LD_STRING dt-n-1
 740: PPUSH
 741: CALL_OW 88
// Say ( Alex , dt-a-2 ) ;
 745: LD_EXP 1
 749: PPUSH
 750: LD_STRING dt-a-2
 752: PPUSH
 753: CALL_OW 88
// SayRadio ( Bojan , dt-b-2 ) ;
 757: LD_EXP 11
 761: PPUSH
 762: LD_STRING dt-b-2
 764: PPUSH
 765: CALL_OW 94
// DialogueOff ;
 769: CALL_OW 7
// end ;
 773: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 4 ] , [ f_or , [ f_weapon , ar_gun ] , [ f_weapon , ar_light_gun ] , [ f_weapon , ar_flame_thrower ] ] ] ) do var a ;
 774: LD_INT 101
 776: PUSH
 777: LD_INT 4
 779: PUSH
 780: EMPTY
 781: LIST
 782: LIST
 783: PUSH
 784: LD_INT 2
 786: PUSH
 787: LD_INT 34
 789: PUSH
 790: LD_INT 27
 792: PUSH
 793: EMPTY
 794: LIST
 795: LIST
 796: PUSH
 797: LD_INT 34
 799: PUSH
 800: LD_INT 23
 802: PUSH
 803: EMPTY
 804: LIST
 805: LIST
 806: PUSH
 807: LD_INT 34
 809: PUSH
 810: LD_INT 26
 812: PUSH
 813: EMPTY
 814: LIST
 815: LIST
 816: PUSH
 817: EMPTY
 818: LIST
 819: LIST
 820: LIST
 821: LIST
 822: PUSH
 823: EMPTY
 824: LIST
 825: LIST
 826: PPUSH
 827: CALL_OW 69
 831: IFFALSE 1111
 833: GO 835
 835: DISABLE
 836: LD_INT 0
 838: PPUSH
// begin a = FilterAllUnits ( [ [ f_see , 4 ] , [ f_or , [ f_weapon , ar_gun ] , [ f_weapon , ar_light_gun ] , [ f_weapon , ar_flame_thrower ] ] ] ) ;
 839: LD_ADDR_VAR 0 1
 843: PUSH
 844: LD_INT 101
 846: PUSH
 847: LD_INT 4
 849: PUSH
 850: EMPTY
 851: LIST
 852: LIST
 853: PUSH
 854: LD_INT 2
 856: PUSH
 857: LD_INT 34
 859: PUSH
 860: LD_INT 27
 862: PUSH
 863: EMPTY
 864: LIST
 865: LIST
 866: PUSH
 867: LD_INT 34
 869: PUSH
 870: LD_INT 23
 872: PUSH
 873: EMPTY
 874: LIST
 875: LIST
 876: PUSH
 877: LD_INT 34
 879: PUSH
 880: LD_INT 26
 882: PUSH
 883: EMPTY
 884: LIST
 885: LIST
 886: PUSH
 887: EMPTY
 888: LIST
 889: LIST
 890: LIST
 891: LIST
 892: PUSH
 893: EMPTY
 894: LIST
 895: LIST
 896: PPUSH
 897: CALL_OW 69
 901: ST_TO_ADDR
// DialogueOn ;
 902: CALL_OW 6
// CenterOnUnits ( a ) ;
 906: LD_VAR 0 1
 910: PPUSH
 911: CALL_OW 85
// Say ( Alex , df-a-1 ) ;
 915: LD_EXP 1
 919: PPUSH
 920: LD_STRING df-a-1
 922: PPUSH
 923: CALL_OW 88
// if GetWeapon ( a [ 1 ] ) = ar_flame_thrower then
 927: LD_VAR 0 1
 931: PUSH
 932: LD_INT 1
 934: ARRAY
 935: PPUSH
 936: CALL_OW 264
 940: PUSH
 941: LD_INT 26
 943: EQUAL
 944: IFFALSE 998
// if IsOK ( Anne ) then
 946: LD_EXP 2
 950: PPUSH
 951: CALL_OW 302
 955: IFFALSE 971
// Say ( Anne , df-n-1 ) else
 957: LD_EXP 2
 961: PPUSH
 962: LD_STRING df-n-1
 964: PPUSH
 965: CALL_OW 88
 969: GO 998
// Say ( UnitFilter ( TeamAnne , [ f_ok ] ) [ 1 ] , df-n-1 ) ;
 971: LD_EXP 4
 975: PPUSH
 976: LD_INT 50
 978: PUSH
 979: EMPTY
 980: LIST
 981: PPUSH
 982: CALL_OW 72
 986: PUSH
 987: LD_INT 1
 989: ARRAY
 990: PPUSH
 991: LD_STRING df-n-1
 993: PPUSH
 994: CALL_OW 88
// if GetWeapon ( a [ 1 ] ) = ar_gun or GetWeapon ( a [ 1 ] ) = ar_light_gun then
 998: LD_VAR 0 1
1002: PUSH
1003: LD_INT 1
1005: ARRAY
1006: PPUSH
1007: CALL_OW 264
1011: PUSH
1012: LD_INT 27
1014: EQUAL
1015: PUSH
1016: LD_VAR 0 1
1020: PUSH
1021: LD_INT 1
1023: ARRAY
1024: PPUSH
1025: CALL_OW 264
1029: PUSH
1030: LD_INT 23
1032: EQUAL
1033: OR
1034: IFFALSE 1088
// if IsOK ( Anne ) then
1036: LD_EXP 2
1040: PPUSH
1041: CALL_OW 302
1045: IFFALSE 1061
// Say ( Anne , df-n-1a ) else
1047: LD_EXP 2
1051: PPUSH
1052: LD_STRING df-n-1a
1054: PPUSH
1055: CALL_OW 88
1059: GO 1088
// Say ( UnitFilter ( TeamAnne , [ f_ok ] ) [ 1 ] , df-n-1a ) ;
1061: LD_EXP 4
1065: PPUSH
1066: LD_INT 50
1068: PUSH
1069: EMPTY
1070: LIST
1071: PPUSH
1072: CALL_OW 72
1076: PUSH
1077: LD_INT 1
1079: ARRAY
1080: PPUSH
1081: LD_STRING df-n-1a
1083: PPUSH
1084: CALL_OW 88
// Say ( Alex , df-a-2 ) ;
1088: LD_EXP 1
1092: PPUSH
1093: LD_STRING df-a-2
1095: PPUSH
1096: CALL_OW 88
// DialogueOff ;
1100: CALL_OW 7
// ChangeMissionObjectives ( OGun ) ;
1104: LD_STRING OGun
1106: PPUSH
1107: CALL_OW 337
// end ;
1111: PPOPN 1
1113: END
// export GunRecycled , GunConstructed ; on VehicleRecycled ( f , v , s , n , x , y , d , ch , c , e , w ) do var u ;
1114: LD_INT 0
1116: PPUSH
// begin u = UnitsInside ( f ) [ 1 ] ;
1117: LD_ADDR_VAR 0 12
1121: PUSH
1122: LD_VAR 0 1
1126: PPUSH
1127: CALL_OW 313
1131: PUSH
1132: LD_INT 1
1134: ARRAY
1135: ST_TO_ADDR
// if GetSide ( v ) = 1 and GunRecycled = false then
1136: LD_VAR 0 2
1140: PPUSH
1141: CALL_OW 255
1145: PUSH
1146: LD_INT 1
1148: EQUAL
1149: PUSH
1150: LD_EXP 6
1154: PUSH
1155: LD_INT 0
1157: EQUAL
1158: AND
1159: IFFALSE 1280
// if w = ar_light_gun or w = ar_gun then
1161: LD_VAR 0 11
1165: PUSH
1166: LD_INT 23
1168: EQUAL
1169: PUSH
1170: LD_VAR 0 11
1174: PUSH
1175: LD_INT 27
1177: EQUAL
1178: OR
1179: IFFALSE 1280
// begin DialogueOn ;
1181: CALL_OW 6
// if u = Alex then
1185: LD_VAR 0 12
1189: PUSH
1190: LD_EXP 1
1194: EQUAL
1195: IFFALSE 1211
// Say ( Alex , dg-a-1a ) else
1197: LD_EXP 1
1201: PPUSH
1202: LD_STRING dg-a-1a
1204: PPUSH
1205: CALL_OW 88
1209: GO 1235
// begin Say ( u , dg-m-1 ) ;
1211: LD_VAR 0 12
1215: PPUSH
1216: LD_STRING dg-m-1
1218: PPUSH
1219: CALL_OW 88
// Say ( Alex , dg-a-1 ) ;
1223: LD_EXP 1
1227: PPUSH
1228: LD_STRING dg-a-1
1230: PPUSH
1231: CALL_OW 88
// end ; DialogueOff ;
1235: CALL_OW 7
// ChangeMissionObjectives ( OBuildGun ) ;
1239: LD_STRING OBuildGun
1241: PPUSH
1242: CALL_OW 337
// GunRecycled = true ;
1246: LD_ADDR_EXP 6
1250: PUSH
1251: LD_INT 1
1253: ST_TO_ADDR
// SetTech ( Tech_Gun , 1 , state_researched ) ;
1254: LD_INT 39
1256: PPUSH
1257: LD_INT 1
1259: PPUSH
1260: LD_INT 2
1262: PPUSH
1263: CALL_OW 322
// SetRestrict ( b_ext_gun , 1 , true ) ;
1267: LD_INT 17
1269: PPUSH
1270: LD_INT 1
1272: PPUSH
1273: LD_INT 1
1275: PPUSH
1276: CALL_OW 324
// end ; end ;
1280: PPOPN 12
1282: END
// on VehicleConstructed ( v , f ) do begin if GetSide ( v ) = 1 and not GunConstructed then
1283: LD_VAR 0 1
1287: PPUSH
1288: CALL_OW 255
1292: PUSH
1293: LD_INT 1
1295: EQUAL
1296: PUSH
1297: LD_EXP 7
1301: NOT
1302: AND
1303: IFFALSE 1350
// if GetWeapon ( v ) = us_light_gun or GetWeapon ( v ) = us_double_gun then
1305: LD_VAR 0 1
1309: PPUSH
1310: CALL_OW 264
1314: PUSH
1315: LD_INT 3
1317: EQUAL
1318: PUSH
1319: LD_VAR 0 1
1323: PPUSH
1324: CALL_OW 264
1328: PUSH
1329: LD_INT 5
1331: EQUAL
1332: OR
1333: IFFALSE 1350
// begin GunConstructed = true ;
1335: LD_ADDR_EXP 7
1339: PUSH
1340: LD_INT 1
1342: ST_TO_ADDR
// ChangeMissionObjectives ( OBuildGunOut ) ;
1343: LD_STRING OBuildGunOut
1345: PPUSH
1346: CALL_OW 337
// end ; end ;
1350: PPOPN 2
1352: END
// export SiberiteSpotted , SiberiteTaken ; every 0 0$1 trigger See ( 4 , asib ) do
1353: LD_INT 4
1355: PPUSH
1356: LD_INT 48
1358: PPUSH
1359: CALL_OW 292
1363: IFFALSE 1499
1365: GO 1367
1367: DISABLE
// begin DialogueOn ;
1368: CALL_OW 6
// CenterOnUnits ( asib ) ;
1372: LD_INT 48
1374: PPUSH
1375: CALL_OW 85
// Say ( Alex , ds-a-1 ) ;
1379: LD_EXP 1
1383: PPUSH
1384: LD_STRING ds-a-1
1386: PPUSH
1387: CALL_OW 88
// if IsOK ( Anne ) then
1391: LD_EXP 2
1395: PPUSH
1396: CALL_OW 302
1400: IFFALSE 1416
// Say ( Anne , ds-n-1 ) else
1402: LD_EXP 2
1406: PPUSH
1407: LD_STRING ds-n-1
1409: PPUSH
1410: CALL_OW 88
1414: GO 1443
// Say ( UnitFilter ( TeamAnne , [ f_ok ] ) [ 1 ] , ds-n-1 ) ;
1416: LD_EXP 4
1420: PPUSH
1421: LD_INT 50
1423: PUSH
1424: EMPTY
1425: LIST
1426: PPUSH
1427: CALL_OW 72
1431: PUSH
1432: LD_INT 1
1434: ARRAY
1435: PPUSH
1436: LD_STRING ds-n-1
1438: PPUSH
1439: CALL_OW 88
// Say ( Alex , ds-a-2 ) ;
1443: LD_EXP 1
1447: PPUSH
1448: LD_STRING ds-a-2
1450: PPUSH
1451: CALL_OW 88
// SayRadio ( Hayes , ds-h-1 ) ;
1455: LD_EXP 5
1459: PPUSH
1460: LD_STRING ds-h-1
1462: PPUSH
1463: CALL_OW 94
// DialogueOff ;
1467: CALL_OW 7
// ChangeMissionObjectives ( OSiberite ) ;
1471: LD_STRING OSiberite
1473: PPUSH
1474: CALL_OW 337
// SetTech ( tech_SibDet , 1 , state_enabled ) ;
1478: LD_INT 20
1480: PPUSH
1481: LD_INT 1
1483: PPUSH
1484: LD_INT 1
1486: PPUSH
1487: CALL_OW 322
// SiberiteSpotted = true ;
1491: LD_ADDR_EXP 8
1495: PUSH
1496: LD_INT 1
1498: ST_TO_ADDR
// end ;
1499: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_siberite_mine ] , [ f_ok ] ] ) do
1500: LD_INT 22
1502: PUSH
1503: LD_INT 1
1505: PUSH
1506: EMPTY
1507: LIST
1508: LIST
1509: PUSH
1510: LD_INT 30
1512: PUSH
1513: LD_INT 30
1515: PUSH
1516: EMPTY
1517: LIST
1518: LIST
1519: PUSH
1520: LD_INT 50
1522: PUSH
1523: EMPTY
1524: LIST
1525: PUSH
1526: EMPTY
1527: LIST
1528: LIST
1529: LIST
1530: PPUSH
1531: CALL_OW 69
1535: IFFALSE 1555
1537: GO 1539
1539: DISABLE
// begin SiberiteTaken = true ;
1540: LD_ADDR_EXP 9
1544: PUSH
1545: LD_INT 1
1547: ST_TO_ADDR
// ChangeMissionObjectives ( OSiberiteOut ) ;
1548: LD_STRING OSiberiteOut
1550: PPUSH
1551: CALL_OW 337
// end ;
1555: END
// every 0 0$1 trigger FirstMineGone do
1556: LD_EXP 25
1560: IFFALSE 1714
1562: GO 1564
1564: DISABLE
// begin DialogueOn ;
1565: CALL_OW 6
// CenterOnXY ( FirstMineX , FirstMineY ) ;
1569: LD_EXP 26
1573: PPUSH
1574: LD_EXP 27
1578: PPUSH
1579: CALL_OW 84
// if IsOK ( Alex ) then
1583: LD_EXP 1
1587: PPUSH
1588: CALL_OW 302
1592: IFFALSE 1608
// Say ( Alex , dm-a-1 ) else
1594: LD_EXP 1
1598: PPUSH
1599: LD_STRING dm-a-1
1601: PPUSH
1602: CALL_OW 88
1606: GO 1635
// Say ( UnitFilter ( TeamAlex , [ f_ok ] ) [ 1 ] , dm-a-1 ) ;
1608: LD_EXP 3
1612: PPUSH
1613: LD_INT 50
1615: PUSH
1616: EMPTY
1617: LIST
1618: PPUSH
1619: CALL_OW 72
1623: PUSH
1624: LD_INT 1
1626: ARRAY
1627: PPUSH
1628: LD_STRING dm-a-1
1630: PPUSH
1631: CALL_OW 88
// if IsOK ( Anne ) then
1635: LD_EXP 2
1639: PPUSH
1640: CALL_OW 302
1644: IFFALSE 1660
// Say ( Anne , dm-n-1 ) else
1646: LD_EXP 2
1650: PPUSH
1651: LD_STRING dm-n-1
1653: PPUSH
1654: CALL_OW 88
1658: GO 1687
// Say ( UnitFilter ( TeamAnne , [ f_ok ] ) [ 1 ] , dm-s-1 ) ;
1660: LD_EXP 4
1664: PPUSH
1665: LD_INT 50
1667: PUSH
1668: EMPTY
1669: LIST
1670: PPUSH
1671: CALL_OW 72
1675: PUSH
1676: LD_INT 1
1678: ARRAY
1679: PPUSH
1680: LD_STRING dm-s-1
1682: PPUSH
1683: CALL_OW 88
// if IsOK ( Alex ) then
1687: LD_EXP 1
1691: PPUSH
1692: CALL_OW 302
1696: IFFALSE 1710
// Say ( Alex , dm-a-2 ) ;
1698: LD_EXP 1
1702: PPUSH
1703: LD_STRING dm-a-2
1705: PPUSH
1706: CALL_OW 88
// DialogueOff ;
1710: CALL_OW 7
// end ;
1714: END
// export SupportRequested ; every 35 35$0 do
1715: GO 1717
1717: DISABLE
// begin DialogueOn ;
1718: CALL_OW 6
// SayRadio ( Hayes , dk-h-1 ) ;
1722: LD_EXP 5
1726: PPUSH
1727: LD_STRING dk-h-1
1729: PPUSH
1730: CALL_OW 94
// case Query ( QHelp ) of 1 :
1734: LD_STRING QHelp
1736: PPUSH
1737: CALL_OW 97
1741: PUSH
1742: LD_INT 1
1744: DOUBLE
1745: EQUAL
1746: IFTRUE 1750
1748: GO 1785
1750: POP
// begin Say ( Alex , dk-a-1 ) ;
1751: LD_EXP 1
1755: PPUSH
1756: LD_STRING dk-a-1
1758: PPUSH
1759: CALL_OW 88
// SayRadio ( Hayes , dk-h-2 ) ;
1763: LD_EXP 5
1767: PPUSH
1768: LD_STRING dk-h-2
1770: PPUSH
1771: CALL_OW 94
// SupportRequested = true ;
1775: LD_ADDR_EXP 10
1779: PUSH
1780: LD_INT 1
1782: ST_TO_ADDR
// end ; 2 :
1783: GO 1821
1785: LD_INT 2
1787: DOUBLE
1788: EQUAL
1789: IFTRUE 1793
1791: GO 1820
1793: POP
// begin Say ( Alex , dk-a-1a ) ;
1794: LD_EXP 1
1798: PPUSH
1799: LD_STRING dk-a-1a
1801: PPUSH
1802: CALL_OW 88
// SayRadio ( Hayes , dk-h-2a ) ;
1806: LD_EXP 5
1810: PPUSH
1811: LD_STRING dk-h-2a
1813: PPUSH
1814: CALL_OW 94
// end ; end ;
1818: GO 1821
1820: POP
// DialogueOff ;
1821: CALL_OW 7
// end ;
1825: END
// every 40 40$0 trigger SupportRequested do var i , h , v ; var w ;
1826: LD_EXP 10
1830: IFFALSE 2135
1832: GO 1834
1834: DISABLE
1835: LD_INT 0
1837: PPUSH
1838: PPUSH
1839: PPUSH
1840: PPUSH
// begin uc_side = 1 ;
1841: LD_ADDR_OWVAR 20
1845: PUSH
1846: LD_INT 1
1848: ST_TO_ADDR
// uc_nation = 1 ;
1849: LD_ADDR_OWVAR 21
1853: PUSH
1854: LD_INT 1
1856: ST_TO_ADDR
// InitHc ;
1857: CALL_OW 19
// for i = 1 to 2 do
1861: LD_ADDR_VAR 0 1
1865: PUSH
1866: DOUBLE
1867: LD_INT 1
1869: DEC
1870: ST_TO_ADDR
1871: LD_INT 2
1873: PUSH
1874: FOR_TO
1875: IFFALSE 1931
// begin PrepareSoldier ( false , [ 4 , 4 , 3 ] [ difficulty ] ) ;
1877: LD_INT 0
1879: PPUSH
1880: LD_INT 4
1882: PUSH
1883: LD_INT 4
1885: PUSH
1886: LD_INT 3
1888: PUSH
1889: EMPTY
1890: LIST
1891: LIST
1892: LIST
1893: PUSH
1894: LD_OWVAR 67
1898: ARRAY
1899: PPUSH
1900: CALL_OW 381
// h = CreateHuman ;
1904: LD_ADDR_VAR 0 2
1908: PUSH
1909: CALL_OW 44
1913: ST_TO_ADDR
// PlaceUnitArea ( h , SupportArea , false ) ;
1914: LD_VAR 0 2
1918: PPUSH
1919: LD_INT 8
1921: PPUSH
1922: LD_INT 0
1924: PPUSH
1925: CALL_OW 49
// end ;
1929: GO 1874
1931: POP
1932: POP
// vc_engine = engine_solar ;
1933: LD_ADDR_OWVAR 39
1937: PUSH
1938: LD_INT 2
1940: ST_TO_ADDR
// vc_control = control_manual ;
1941: LD_ADDR_OWVAR 38
1945: PUSH
1946: LD_INT 1
1948: ST_TO_ADDR
// vc_chassis = us_medium_wheeled ;
1949: LD_ADDR_OWVAR 37
1953: PUSH
1954: LD_INT 2
1956: ST_TO_ADDR
// w = [ us_double_gun , us_machine_gun ] ;
1957: LD_ADDR_VAR 0 4
1961: PUSH
1962: LD_INT 5
1964: PUSH
1965: LD_INT 2
1967: PUSH
1968: EMPTY
1969: LIST
1970: LIST
1971: ST_TO_ADDR
// for i = 1 to [ 2 , 1 , 1 ] [ difficulty ] do
1972: LD_ADDR_VAR 0 1
1976: PUSH
1977: DOUBLE
1978: LD_INT 1
1980: DEC
1981: ST_TO_ADDR
1982: LD_INT 2
1984: PUSH
1985: LD_INT 1
1987: PUSH
1988: LD_INT 1
1990: PUSH
1991: EMPTY
1992: LIST
1993: LIST
1994: LIST
1995: PUSH
1996: LD_OWVAR 67
2000: ARRAY
2001: PUSH
2002: FOR_TO
2003: IFFALSE 2097
// begin vc_weapon = w [ i ] ;
2005: LD_ADDR_OWVAR 40
2009: PUSH
2010: LD_VAR 0 4
2014: PUSH
2015: LD_VAR 0 1
2019: ARRAY
2020: ST_TO_ADDR
// v = CreateVehicle ;
2021: LD_ADDR_VAR 0 3
2025: PUSH
2026: CALL_OW 45
2030: ST_TO_ADDR
// PlaceUnitArea ( v , SupportArea , false ) ;
2031: LD_VAR 0 3
2035: PPUSH
2036: LD_INT 8
2038: PPUSH
2039: LD_INT 0
2041: PPUSH
2042: CALL_OW 49
// PrepareMechanic ( false , [ Rand ( 3 , 4 ) , 3 , 3 ] [ difficulty ] ) ;
2046: LD_INT 0
2048: PPUSH
2049: LD_INT 3
2051: PPUSH
2052: LD_INT 4
2054: PPUSH
2055: CALL_OW 12
2059: PUSH
2060: LD_INT 3
2062: PUSH
2063: LD_INT 3
2065: PUSH
2066: EMPTY
2067: LIST
2068: LIST
2069: LIST
2070: PUSH
2071: LD_OWVAR 67
2075: ARRAY
2076: PPUSH
2077: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , v ) ;
2081: CALL_OW 44
2085: PPUSH
2086: LD_VAR 0 3
2090: PPUSH
2091: CALL_OW 52
// end ;
2095: GO 2002
2097: POP
2098: POP
// DialogueOn ;
2099: CALL_OW 6
// Wait ( 0 0$0.5 ) ;
2103: LD_INT 18
2105: PPUSH
2106: CALL_OW 67
// SayRadio ( h , dk-s-1 ) ;
2110: LD_VAR 0 2
2114: PPUSH
2115: LD_STRING dk-s-1
2117: PPUSH
2118: CALL_OW 94
// CenterOnUnits ( v ) ;
2122: LD_VAR 0 3
2126: PPUSH
2127: CALL_OW 85
// DialogueOff ;
2131: CALL_OW 7
// end ; end_of_file
2135: PPOPN 4
2137: END
// export Bojan ; every 0 0$1 do
2138: GO 2140
2140: DISABLE
// begin uc_side = 2 ;
2141: LD_ADDR_OWVAR 20
2145: PUSH
2146: LD_INT 2
2148: ST_TO_ADDR
// uc_nation = 2 ;
2149: LD_ADDR_OWVAR 21
2153: PUSH
2154: LD_INT 2
2156: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
2157: LD_ADDR_EXP 11
2161: PUSH
2162: LD_STRING Bojan
2164: PPUSH
2165: CALL_OW 25
2169: ST_TO_ADDR
// end ;
2170: END
// every 0 0$1 do var h , i ;
2171: GO 2173
2173: DISABLE
2174: LD_INT 0
2176: PPUSH
2177: PPUSH
// begin uc_side = 2 ;
2178: LD_ADDR_OWVAR 20
2182: PUSH
2183: LD_INT 2
2185: ST_TO_ADDR
// uc_nation = 2 ;
2186: LD_ADDR_OWVAR 21
2190: PUSH
2191: LD_INT 2
2193: ST_TO_ADDR
// PrepareBase ( 2 , AlQudsArea , [ Rand ( 3 , 5 ) , Rand ( 4 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] , [ 2 , 3 , 4 ] [ difficulty ] , 2 , 2 , 2 ) ;
2194: LD_INT 2
2196: PPUSH
2197: LD_INT 4
2199: PPUSH
2200: LD_INT 3
2202: PPUSH
2203: LD_INT 5
2205: PPUSH
2206: CALL_OW 12
2210: PUSH
2211: LD_INT 4
2213: PPUSH
2214: LD_INT 5
2216: PPUSH
2217: CALL_OW 12
2221: PUSH
2222: LD_INT 4
2224: PPUSH
2225: LD_INT 5
2227: PPUSH
2228: CALL_OW 12
2232: PUSH
2233: EMPTY
2234: LIST
2235: LIST
2236: LIST
2237: PUSH
2238: LD_OWVAR 67
2242: ARRAY
2243: PPUSH
2244: LD_INT 2
2246: PUSH
2247: LD_INT 3
2249: PUSH
2250: LD_INT 4
2252: PUSH
2253: EMPTY
2254: LIST
2255: LIST
2256: LIST
2257: PUSH
2258: LD_OWVAR 67
2262: ARRAY
2263: PPUSH
2264: LD_INT 2
2266: PPUSH
2267: LD_INT 2
2269: PPUSH
2270: LD_INT 2
2272: PPUSH
2273: CALL 7519 0 7
// PrepareBase ( 2 , OtherArea , [ Rand ( 2 , 4 ) , Rand ( 2 , 5 ) , Rand ( 3 , 4 ) ] [ difficulty ] , 2 , 0 , 2 , 1 ) ;
2277: LD_INT 2
2279: PPUSH
2280: LD_INT 5
2282: PPUSH
2283: LD_INT 2
2285: PPUSH
2286: LD_INT 4
2288: PPUSH
2289: CALL_OW 12
2293: PUSH
2294: LD_INT 2
2296: PPUSH
2297: LD_INT 5
2299: PPUSH
2300: CALL_OW 12
2304: PUSH
2305: LD_INT 3
2307: PPUSH
2308: LD_INT 4
2310: PPUSH
2311: CALL_OW 12
2315: PUSH
2316: EMPTY
2317: LIST
2318: LIST
2319: LIST
2320: PUSH
2321: LD_OWVAR 67
2325: ARRAY
2326: PPUSH
2327: LD_INT 2
2329: PPUSH
2330: LD_INT 0
2332: PPUSH
2333: LD_INT 2
2335: PPUSH
2336: LD_INT 1
2338: PPUSH
2339: CALL 7519 0 7
// SetBName ( qd , quds ) ;
2343: LD_INT 3
2345: PPUSH
2346: LD_STRING quds
2348: PPUSH
2349: CALL_OW 500
// for i in FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
2353: LD_ADDR_VAR 0 2
2357: PUSH
2358: LD_INT 4
2360: PPUSH
2361: LD_INT 22
2363: PUSH
2364: LD_INT 2
2366: PUSH
2367: EMPTY
2368: LIST
2369: LIST
2370: PUSH
2371: LD_INT 21
2373: PUSH
2374: LD_INT 2
2376: PUSH
2377: EMPTY
2378: LIST
2379: LIST
2380: PUSH
2381: EMPTY
2382: LIST
2383: LIST
2384: PPUSH
2385: CALL_OW 70
2389: PUSH
2390: FOR_IN
2391: IFFALSE 2478
// begin PrepareMechanic ( Rand ( 1 , 2 ) , [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ) ;
2393: LD_INT 1
2395: PPUSH
2396: LD_INT 2
2398: PPUSH
2399: CALL_OW 12
2403: PPUSH
2404: LD_INT 3
2406: PPUSH
2407: LD_INT 4
2409: PPUSH
2410: CALL_OW 12
2414: PUSH
2415: LD_INT 3
2417: PPUSH
2418: LD_INT 5
2420: PPUSH
2421: CALL_OW 12
2425: PUSH
2426: LD_INT 4
2428: PPUSH
2429: LD_INT 5
2431: PPUSH
2432: CALL_OW 12
2436: PUSH
2437: EMPTY
2438: LIST
2439: LIST
2440: LIST
2441: PUSH
2442: LD_OWVAR 67
2446: ARRAY
2447: PPUSH
2448: CALL_OW 383
// h = CreateHuman ;
2452: LD_ADDR_VAR 0 1
2456: PUSH
2457: CALL_OW 44
2461: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
2462: LD_VAR 0 1
2466: PPUSH
2467: LD_VAR 0 2
2471: PPUSH
2472: CALL_OW 52
// end ;
2476: GO 2390
2478: POP
2479: POP
// for i in [ tech_Tech2 , tech_Bio1 , tech_Weap1 ] do
2480: LD_ADDR_VAR 0 2
2484: PUSH
2485: LD_INT 49
2487: PUSH
2488: LD_INT 66
2490: PUSH
2491: LD_INT 51
2493: PUSH
2494: EMPTY
2495: LIST
2496: LIST
2497: LIST
2498: PUSH
2499: FOR_IN
2500: IFFALSE 2516
// AddComResearch ( ql , i ) ;
2502: LD_INT 5
2504: PPUSH
2505: LD_VAR 0 2
2509: PPUSH
2510: CALL_OW 184
2514: GO 2499
2516: POP
2517: POP
// end ;
2518: PPOPN 2
2520: END
// export AlQudsEngineers , AlQudsBuildings , AlQudsStrategy ; export AlQudsRepairStrategy ; every 0 0$1 do var i ;
2521: GO 2523
2523: DISABLE
2524: LD_INT 0
2526: PPUSH
// begin enable ;
2527: ENABLE
// AlQudsEngineers = FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) ^ UnitFilter ( UnitsInside ( qd ) , [ f_side , 2 ] ) ;
2528: LD_ADDR_EXP 12
2532: PUSH
2533: LD_INT 4
2535: PPUSH
2536: LD_INT 22
2538: PUSH
2539: LD_INT 2
2541: PUSH
2542: EMPTY
2543: LIST
2544: LIST
2545: PUSH
2546: LD_INT 25
2548: PUSH
2549: LD_INT 2
2551: PUSH
2552: EMPTY
2553: LIST
2554: LIST
2555: PUSH
2556: EMPTY
2557: LIST
2558: LIST
2559: PPUSH
2560: CALL_OW 70
2564: PUSH
2565: LD_INT 3
2567: PPUSH
2568: CALL_OW 313
2572: PPUSH
2573: LD_INT 22
2575: PUSH
2576: LD_INT 2
2578: PUSH
2579: EMPTY
2580: LIST
2581: LIST
2582: PPUSH
2583: CALL_OW 72
2587: ADD
2588: ST_TO_ADDR
// AlQudsBuildings = FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) ;
2589: LD_ADDR_EXP 13
2593: PUSH
2594: LD_INT 4
2596: PPUSH
2597: LD_INT 22
2599: PUSH
2600: LD_INT 2
2602: PUSH
2603: EMPTY
2604: LIST
2605: LIST
2606: PUSH
2607: LD_INT 21
2609: PUSH
2610: LD_INT 3
2612: PUSH
2613: EMPTY
2614: LIST
2615: LIST
2616: PUSH
2617: EMPTY
2618: LIST
2619: LIST
2620: PPUSH
2621: CALL_OW 70
2625: ST_TO_ADDR
// if not ExistMc ( AlQudsStrategy ) then
2626: LD_EXP 14
2630: PPUSH
2631: CALL_OW 386
2635: NOT
2636: IFFALSE 2679
// AlQudsStrategy = McBase ( 1 , AlQudsEngineers , GetBuildList ( GetBase ( qd ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
2638: LD_ADDR_EXP 14
2642: PUSH
2643: LD_INT 1
2645: PPUSH
2646: LD_EXP 12
2650: PPUSH
2651: LD_INT 3
2653: PPUSH
2654: CALL_OW 274
2658: PPUSH
2659: CALL_OW 417
2663: PPUSH
2664: EMPTY
2665: PPUSH
2666: EMPTY
2667: PPUSH
2668: LD_INT 1
2670: PUSH
2671: EMPTY
2672: LIST
2673: PPUSH
2674: CALL_OW 397
2678: ST_TO_ADDR
// if not ExistMc ( AlQudsRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
2679: LD_EXP 15
2683: PPUSH
2684: CALL_OW 386
2688: NOT
2689: PUSH
2690: LD_INT 22
2692: PUSH
2693: LD_INT 1
2695: PUSH
2696: EMPTY
2697: LIST
2698: LIST
2699: PUSH
2700: LD_INT 101
2702: PUSH
2703: LD_INT 2
2705: PUSH
2706: EMPTY
2707: LIST
2708: LIST
2709: PUSH
2710: EMPTY
2711: LIST
2712: LIST
2713: PPUSH
2714: CALL_OW 69
2718: NOT
2719: AND
2720: IFFALSE 2784
// begin for i in AlQudsEngineers do
2722: LD_ADDR_VAR 0 1
2726: PUSH
2727: LD_EXP 12
2731: PUSH
2732: FOR_IN
2733: IFFALSE 2746
// ComExitBuilding ( i ) ;
2735: LD_VAR 0 1
2739: PPUSH
2740: CALL_OW 122
2744: GO 2732
2746: POP
2747: POP
// AlQudsRepairStrategy = McRepair ( 2 , AlQudsEngineers , AlQudsBuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
2748: LD_ADDR_EXP 15
2752: PUSH
2753: LD_INT 2
2755: PPUSH
2756: LD_EXP 12
2760: PPUSH
2761: LD_EXP 13
2765: PPUSH
2766: LD_INT 6
2768: PUSH
2769: LD_INT 1000
2771: PUSH
2772: EMPTY
2773: LIST
2774: LIST
2775: PUSH
2776: EMPTY
2777: LIST
2778: PPUSH
2779: CALL_OW 414
2783: ST_TO_ADDR
// end ; if FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
2784: LD_INT 22
2786: PUSH
2787: LD_INT 1
2789: PUSH
2790: EMPTY
2791: LIST
2792: LIST
2793: PUSH
2794: LD_INT 101
2796: PUSH
2797: LD_INT 2
2799: PUSH
2800: EMPTY
2801: LIST
2802: LIST
2803: PUSH
2804: EMPTY
2805: LIST
2806: LIST
2807: PPUSH
2808: CALL_OW 69
2812: IFFALSE 2852
// begin KillMc ( AlQudsRepairStrategy ) ;
2814: LD_EXP 15
2818: PPUSH
2819: CALL_OW 387
// for i in AlQudsEngineers do
2823: LD_ADDR_VAR 0 1
2827: PUSH
2828: LD_EXP 12
2832: PUSH
2833: FOR_IN
2834: IFFALSE 2850
// ComEnterUnit ( i , qd ) ;
2836: LD_VAR 0 1
2840: PPUSH
2841: LD_INT 3
2843: PPUSH
2844: CALL_OW 120
2848: GO 2833
2850: POP
2851: POP
// end ; end ;
2852: PPOPN 1
2854: END
// every 0 0$15 trigger FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var a , i , u ;
2855: LD_INT 4
2857: PPUSH
2858: LD_INT 22
2860: PUSH
2861: LD_INT 2
2863: PUSH
2864: EMPTY
2865: LIST
2866: LIST
2867: PUSH
2868: LD_INT 58
2870: PUSH
2871: EMPTY
2872: LIST
2873: PUSH
2874: LD_INT 53
2876: PUSH
2877: EMPTY
2878: LIST
2879: PUSH
2880: LD_INT 50
2882: PUSH
2883: EMPTY
2884: LIST
2885: PUSH
2886: LD_INT 2
2888: PUSH
2889: LD_INT 30
2891: PUSH
2892: LD_INT 32
2894: PUSH
2895: EMPTY
2896: LIST
2897: LIST
2898: PUSH
2899: LD_INT 30
2901: PUSH
2902: LD_INT 31
2904: PUSH
2905: EMPTY
2906: LIST
2907: LIST
2908: PUSH
2909: EMPTY
2910: LIST
2911: LIST
2912: LIST
2913: PUSH
2914: EMPTY
2915: LIST
2916: LIST
2917: LIST
2918: LIST
2919: LIST
2920: PPUSH
2921: CALL_OW 70
2925: IFFALSE 3061
2927: GO 2929
2929: DISABLE
2930: LD_INT 0
2932: PPUSH
2933: PPUSH
2934: PPUSH
// begin a = FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
2935: LD_ADDR_VAR 0 1
2939: PUSH
2940: LD_INT 4
2942: PPUSH
2943: LD_INT 22
2945: PUSH
2946: LD_INT 2
2948: PUSH
2949: EMPTY
2950: LIST
2951: LIST
2952: PUSH
2953: LD_INT 58
2955: PUSH
2956: EMPTY
2957: LIST
2958: PUSH
2959: LD_INT 50
2961: PUSH
2962: EMPTY
2963: LIST
2964: PUSH
2965: LD_INT 2
2967: PUSH
2968: LD_INT 30
2970: PUSH
2971: LD_INT 32
2973: PUSH
2974: EMPTY
2975: LIST
2976: LIST
2977: PUSH
2978: LD_INT 30
2980: PUSH
2981: LD_INT 31
2983: PUSH
2984: EMPTY
2985: LIST
2986: LIST
2987: PUSH
2988: EMPTY
2989: LIST
2990: LIST
2991: LIST
2992: PUSH
2993: EMPTY
2994: LIST
2995: LIST
2996: LIST
2997: LIST
2998: PPUSH
2999: CALL_OW 70
3003: ST_TO_ADDR
// for i in a do
3004: LD_ADDR_VAR 0 2
3008: PUSH
3009: LD_VAR 0 1
3013: PUSH
3014: FOR_IN
3015: IFFALSE 3059
// begin u = UnitsInside ( qa ) [ 1 ] ;
3017: LD_ADDR_VAR 0 3
3021: PUSH
3022: LD_INT 14
3024: PPUSH
3025: CALL_OW 313
3029: PUSH
3030: LD_INT 1
3032: ARRAY
3033: ST_TO_ADDR
// ComExitBuilding ( u ) ;
3034: LD_VAR 0 3
3038: PPUSH
3039: CALL_OW 122
// AddComEnterUnit ( u , i ) ;
3043: LD_VAR 0 3
3047: PPUSH
3048: LD_VAR 0 2
3052: PPUSH
3053: CALL_OW 180
// end ;
3057: GO 3014
3059: POP
3060: POP
// end ;
3061: PPOPN 3
3063: END
// export AlQudsEnemies , AlQudsDefenders , AlQudsDefenceStrategy ; every 0 0$1 do
3064: GO 3066
3066: DISABLE
// AlQudsEnemies = McRegistry ( 2 , [ [ mc_reg_area_to_protect , AlQudsArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
3067: LD_ADDR_EXP 16
3071: PUSH
3072: LD_INT 2
3074: PPUSH
3075: LD_INT 3
3077: PUSH
3078: LD_INT 4
3080: PUSH
3081: EMPTY
3082: LIST
3083: LIST
3084: PUSH
3085: LD_INT 1
3087: PUSH
3088: LD_INT 35
3090: PUSH
3091: EMPTY
3092: LIST
3093: LIST
3094: PUSH
3095: EMPTY
3096: LIST
3097: LIST
3098: PPUSH
3099: CALL_OW 399
3103: ST_TO_ADDR
3104: END
// every 0 0$1 do var i , j , m ;
3105: GO 3107
3107: DISABLE
3108: LD_INT 0
3110: PPUSH
3111: PPUSH
3112: PPUSH
// begin enable ;
3113: ENABLE
// if not ExistMc ( AlQudsDefenceStrategy ) and FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
3114: LD_EXP 18
3118: PPUSH
3119: CALL_OW 386
3123: NOT
3124: PUSH
3125: LD_INT 22
3127: PUSH
3128: LD_INT 1
3130: PUSH
3131: EMPTY
3132: LIST
3133: LIST
3134: PUSH
3135: LD_INT 101
3137: PUSH
3138: LD_INT 2
3140: PUSH
3141: EMPTY
3142: LIST
3143: LIST
3144: PUSH
3145: EMPTY
3146: LIST
3147: LIST
3148: PPUSH
3149: CALL_OW 69
3153: AND
3154: IFFALSE 3247
// begin AlQudsDefenders = FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
3156: LD_ADDR_EXP 17
3160: PUSH
3161: LD_INT 4
3163: PPUSH
3164: LD_INT 22
3166: PUSH
3167: LD_INT 2
3169: PUSH
3170: EMPTY
3171: LIST
3172: LIST
3173: PUSH
3174: LD_INT 21
3176: PUSH
3177: LD_INT 2
3179: PUSH
3180: EMPTY
3181: LIST
3182: LIST
3183: PUSH
3184: LD_INT 50
3186: PUSH
3187: EMPTY
3188: LIST
3189: PUSH
3190: EMPTY
3191: LIST
3192: LIST
3193: LIST
3194: PPUSH
3195: CALL_OW 70
3199: ST_TO_ADDR
// AlQudsDefenceStrategy = McDefend ( 3 , AlQudsEnemies , AlQudsDefenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , AlQudsArea ] ] ) ;
3200: LD_ADDR_EXP 18
3204: PUSH
3205: LD_INT 3
3207: PPUSH
3208: LD_EXP 16
3212: PPUSH
3213: LD_EXP 17
3217: PPUSH
3218: LD_INT 1
3220: PUSH
3221: LD_INT 200
3223: PUSH
3224: EMPTY
3225: LIST
3226: LIST
3227: PUSH
3228: LD_INT 2
3230: PUSH
3231: LD_INT 4
3233: PUSH
3234: EMPTY
3235: LIST
3236: LIST
3237: PUSH
3238: EMPTY
3239: LIST
3240: LIST
3241: PPUSH
3242: CALL_OW 401
3246: ST_TO_ADDR
// end ; if ExistMc ( AlQudsDefenceStrategy ) and not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
3247: LD_EXP 18
3251: PPUSH
3252: CALL_OW 386
3256: PUSH
3257: LD_INT 22
3259: PUSH
3260: LD_INT 1
3262: PUSH
3263: EMPTY
3264: LIST
3265: LIST
3266: PUSH
3267: LD_INT 101
3269: PUSH
3270: LD_INT 2
3272: PUSH
3273: EMPTY
3274: LIST
3275: LIST
3276: PUSH
3277: EMPTY
3278: LIST
3279: LIST
3280: PPUSH
3281: CALL_OW 69
3285: NOT
3286: AND
3287: IFFALSE 3359
// begin for i in GetMcUnits ( AlQudsDefenceStrategy ) do
3289: LD_ADDR_VAR 0 1
3293: PUSH
3294: LD_EXP 18
3298: PPUSH
3299: CALL_OW 389
3303: PUSH
3304: FOR_IN
3305: IFFALSE 3348
// begin ComMoveToArea ( i , AlQudsArea ) ;
3307: LD_VAR 0 1
3311: PPUSH
3312: LD_INT 4
3314: PPUSH
3315: CALL_OW 113
// if not See ( 1 , i ) then
3319: LD_INT 1
3321: PPUSH
3322: LD_VAR 0 1
3326: PPUSH
3327: CALL_OW 292
3331: NOT
3332: IFFALSE 3346
// SetFuel ( i , 90 ) ;
3334: LD_VAR 0 1
3338: PPUSH
3339: LD_INT 90
3341: PPUSH
3342: CALL_OW 240
// end ;
3346: GO 3304
3348: POP
3349: POP
// KillMc ( AlQudsDefenceStrategy ) ;
3350: LD_EXP 18
3354: PPUSH
3355: CALL_OW 387
// end ; for i in AlQudsDefenders do
3359: LD_ADDR_VAR 0 1
3363: PUSH
3364: LD_EXP 17
3368: PUSH
3369: FOR_IN
3370: IFFALSE 3545
// begin if GetLives ( i ) < 500 then
3372: LD_VAR 0 1
3376: PPUSH
3377: CALL_OW 256
3381: PUSH
3382: LD_INT 500
3384: LESS
3385: IFFALSE 3451
// begin m = IsDrivenBy ( i ) ;
3387: LD_ADDR_VAR 0 3
3391: PUSH
3392: LD_VAR 0 1
3396: PPUSH
3397: CALL_OW 311
3401: ST_TO_ADDR
// ComMoveToArea ( i , AlQudsRepairs ) ;
3402: LD_VAR 0 1
3406: PPUSH
3407: LD_INT 6
3409: PPUSH
3410: CALL_OW 113
// AddComExitVehicle ( m ) ;
3414: LD_VAR 0 3
3418: PPUSH
3419: CALL_OW 181
// AddComRepairVehicle ( m , i ) ;
3423: LD_VAR 0 3
3427: PPUSH
3428: LD_VAR 0 1
3432: PPUSH
3433: CALL_OW 189
// AddComEnterUnit ( m , i ) ;
3437: LD_VAR 0 3
3441: PPUSH
3442: LD_VAR 0 1
3446: PPUSH
3447: CALL_OW 180
// end ; if not IsDrivenBy ( i ) and GetLives ( i ) = 1000 then
3451: LD_VAR 0 1
3455: PPUSH
3456: CALL_OW 311
3460: NOT
3461: PUSH
3462: LD_VAR 0 1
3466: PPUSH
3467: CALL_OW 256
3471: PUSH
3472: LD_INT 1000
3474: EQUAL
3475: AND
3476: IFFALSE 3543
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3478: LD_ADDR_VAR 0 3
3482: PUSH
3483: LD_INT 22
3485: PUSH
3486: LD_VAR 0 1
3490: PPUSH
3491: CALL_OW 255
3495: PUSH
3496: EMPTY
3497: LIST
3498: LIST
3499: PUSH
3500: LD_INT 25
3502: PUSH
3503: LD_INT 3
3505: PUSH
3506: EMPTY
3507: LIST
3508: LIST
3509: PUSH
3510: EMPTY
3511: LIST
3512: LIST
3513: PPUSH
3514: CALL_OW 69
3518: PPUSH
3519: LD_VAR 0 1
3523: PPUSH
3524: CALL_OW 74
3528: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3529: LD_VAR 0 3
3533: PPUSH
3534: LD_VAR 0 1
3538: PPUSH
3539: CALL_OW 120
// end ; end ;
3543: GO 3369
3545: POP
3546: POP
// for i in FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_outside ] ] ) do
3547: LD_ADDR_VAR 0 1
3551: PUSH
3552: LD_INT 4
3554: PPUSH
3555: LD_INT 22
3557: PUSH
3558: LD_INT 2
3560: PUSH
3561: EMPTY
3562: LIST
3563: LIST
3564: PUSH
3565: LD_INT 21
3567: PUSH
3568: LD_INT 1
3570: PUSH
3571: EMPTY
3572: LIST
3573: LIST
3574: PUSH
3575: LD_INT 56
3577: PUSH
3578: EMPTY
3579: LIST
3580: PUSH
3581: EMPTY
3582: LIST
3583: LIST
3584: LIST
3585: PPUSH
3586: CALL_OW 70
3590: PUSH
3591: FOR_IN
3592: IFFALSE 3825
// begin if GetClass ( i ) = class_soldier then
3594: LD_VAR 0 1
3598: PPUSH
3599: CALL_OW 257
3603: PUSH
3604: LD_INT 1
3606: EQUAL
3607: IFFALSE 3691
// if not FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_lives , 1000 ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) then
3609: LD_INT 4
3611: PPUSH
3612: LD_INT 22
3614: PUSH
3615: LD_INT 2
3617: PUSH
3618: EMPTY
3619: LIST
3620: LIST
3621: PUSH
3622: LD_INT 58
3624: PUSH
3625: EMPTY
3626: LIST
3627: PUSH
3628: LD_INT 24
3630: PUSH
3631: LD_INT 1000
3633: PUSH
3634: EMPTY
3635: LIST
3636: LIST
3637: PUSH
3638: LD_INT 2
3640: PUSH
3641: LD_INT 30
3643: PUSH
3644: LD_INT 32
3646: PUSH
3647: EMPTY
3648: LIST
3649: LIST
3650: PUSH
3651: LD_INT 30
3653: PUSH
3654: LD_INT 31
3656: PUSH
3657: EMPTY
3658: LIST
3659: LIST
3660: PUSH
3661: EMPTY
3662: LIST
3663: LIST
3664: LIST
3665: PUSH
3666: EMPTY
3667: LIST
3668: LIST
3669: LIST
3670: LIST
3671: PPUSH
3672: CALL_OW 70
3676: NOT
3677: IFFALSE 3691
// ComEnterUnit ( i , qa ) ;
3679: LD_VAR 0 1
3683: PPUSH
3684: LD_INT 14
3686: PPUSH
3687: CALL_OW 120
// if GetClass ( i ) = class_mechanic then
3691: LD_VAR 0 1
3695: PPUSH
3696: CALL_OW 257
3700: PUSH
3701: LD_INT 3
3703: EQUAL
3704: IFFALSE 3823
// if FilterUnitsInArea ( AlQudsArea , [ [ f_side , GetSide ( i ) ] , [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] , [ f_lives , 1000 ] ] ) = FilterUnitsInArea ( AlQudsArea , [ [ f_side , GetSide ( i ) ] , [ f_type , unit_vehicle ] ] ) then
3706: LD_INT 4
3708: PPUSH
3709: LD_INT 22
3711: PUSH
3712: LD_VAR 0 1
3716: PPUSH
3717: CALL_OW 255
3721: PUSH
3722: EMPTY
3723: LIST
3724: LIST
3725: PUSH
3726: LD_INT 21
3728: PUSH
3729: LD_INT 2
3731: PUSH
3732: EMPTY
3733: LIST
3734: LIST
3735: PUSH
3736: LD_INT 3
3738: PUSH
3739: LD_INT 58
3741: PUSH
3742: EMPTY
3743: LIST
3744: PUSH
3745: EMPTY
3746: LIST
3747: LIST
3748: PUSH
3749: LD_INT 24
3751: PUSH
3752: LD_INT 1000
3754: PUSH
3755: EMPTY
3756: LIST
3757: LIST
3758: PUSH
3759: EMPTY
3760: LIST
3761: LIST
3762: LIST
3763: LIST
3764: PPUSH
3765: CALL_OW 70
3769: PUSH
3770: LD_INT 4
3772: PPUSH
3773: LD_INT 22
3775: PUSH
3776: LD_VAR 0 1
3780: PPUSH
3781: CALL_OW 255
3785: PUSH
3786: EMPTY
3787: LIST
3788: LIST
3789: PUSH
3790: LD_INT 21
3792: PUSH
3793: LD_INT 2
3795: PUSH
3796: EMPTY
3797: LIST
3798: LIST
3799: PUSH
3800: EMPTY
3801: LIST
3802: LIST
3803: PPUSH
3804: CALL_OW 70
3808: EQUAL
3809: IFFALSE 3823
// ComEnterUnit ( i , qf ) ;
3811: LD_VAR 0 1
3815: PPUSH
3816: LD_INT 6
3818: PPUSH
3819: CALL_OW 120
// end ;
3823: GO 3591
3825: POP
3826: POP
// end ;
3827: PPOPN 3
3829: END
// every 0 0$1 trigger FilterUnitsInArea ( AlQudsArea , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) < [ 3 , 4 , 5 ] [ difficulty ] and GetSide ( qf ) = 2 do
3830: LD_INT 4
3832: PPUSH
3833: LD_INT 22
3835: PUSH
3836: LD_INT 2
3838: PUSH
3839: EMPTY
3840: LIST
3841: LIST
3842: PUSH
3843: LD_INT 21
3845: PUSH
3846: LD_INT 2
3848: PUSH
3849: EMPTY
3850: LIST
3851: LIST
3852: PUSH
3853: LD_INT 50
3855: PUSH
3856: EMPTY
3857: LIST
3858: PUSH
3859: EMPTY
3860: LIST
3861: LIST
3862: LIST
3863: PPUSH
3864: CALL_OW 70
3868: PUSH
3869: LD_INT 3
3871: PUSH
3872: LD_INT 4
3874: PUSH
3875: LD_INT 5
3877: PUSH
3878: EMPTY
3879: LIST
3880: LIST
3881: LIST
3882: PUSH
3883: LD_OWVAR 67
3887: ARRAY
3888: LESS
3889: PUSH
3890: LD_INT 6
3892: PPUSH
3893: CALL_OW 255
3897: PUSH
3898: LD_INT 2
3900: EQUAL
3901: AND
3902: IFFALSE 4001
3904: GO 3906
3906: DISABLE
// begin enable ;
3907: ENABLE
// if not UnitsInside ( qf ) or HasTask ( qf ) then
3908: LD_INT 6
3910: PPUSH
3911: CALL_OW 313
3915: NOT
3916: PUSH
3917: LD_INT 6
3919: PPUSH
3920: CALL_OW 314
3924: OR
3925: IFFALSE 3929
// exit ;
3927: GO 4001
// case Rand ( 1 , 2 ) of 1 :
3929: LD_INT 1
3931: PPUSH
3932: LD_INT 2
3934: PPUSH
3935: CALL_OW 12
3939: PUSH
3940: LD_INT 1
3942: DOUBLE
3943: EQUAL
3944: IFTRUE 3948
3946: GO 3970
3948: POP
// AddComConstruct ( qf , ar_medium_trike , engine_combustion , control_manual , ar_gun ) ; 2 :
3949: LD_INT 6
3951: PPUSH
3952: LD_INT 13
3954: PPUSH
3955: LD_INT 1
3957: PPUSH
3958: LD_INT 1
3960: PPUSH
3961: LD_INT 27
3963: PPUSH
3964: CALL_OW 185
3968: GO 4001
3970: LD_INT 2
3972: DOUBLE
3973: EQUAL
3974: IFTRUE 3978
3976: GO 4000
3978: POP
// AddComConstruct ( qf , ar_medium_trike , engine_combustion , control_manual , ar_flame_thrower ) ; end ;
3979: LD_INT 6
3981: PPUSH
3982: LD_INT 13
3984: PPUSH
3985: LD_INT 1
3987: PPUSH
3988: LD_INT 1
3990: PPUSH
3991: LD_INT 26
3993: PPUSH
3994: CALL_OW 185
3998: GO 4001
4000: POP
// end ;
4001: END
// export OtherEngineers , OtherBuildings , OtherStrategy ; export OtherRepairStrategy ; every 0 0$1 do var i ;
4002: GO 4004
4004: DISABLE
4005: LD_INT 0
4007: PPUSH
// begin enable ;
4008: ENABLE
// OtherEngineers = FilterUnitsInArea ( OtherArea , [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) ^ UnitFilter ( UnitsInside ( od ) , [ f_side , 2 ] ) ;
4009: LD_ADDR_EXP 19
4013: PUSH
4014: LD_INT 5
4016: PPUSH
4017: LD_INT 22
4019: PUSH
4020: LD_INT 2
4022: PUSH
4023: EMPTY
4024: LIST
4025: LIST
4026: PUSH
4027: LD_INT 25
4029: PUSH
4030: LD_INT 2
4032: PUSH
4033: EMPTY
4034: LIST
4035: LIST
4036: PUSH
4037: EMPTY
4038: LIST
4039: LIST
4040: PPUSH
4041: CALL_OW 70
4045: PUSH
4046: LD_INT 118
4048: PPUSH
4049: CALL_OW 313
4053: PPUSH
4054: LD_INT 22
4056: PUSH
4057: LD_INT 2
4059: PUSH
4060: EMPTY
4061: LIST
4062: LIST
4063: PPUSH
4064: CALL_OW 72
4068: ADD
4069: ST_TO_ADDR
// OtherBuildings = FilterUnitsInArea ( OtherArea , [ [ f_side , 2 ] , [ f_type , unit_building ] ] ) ;
4070: LD_ADDR_EXP 20
4074: PUSH
4075: LD_INT 5
4077: PPUSH
4078: LD_INT 22
4080: PUSH
4081: LD_INT 2
4083: PUSH
4084: EMPTY
4085: LIST
4086: LIST
4087: PUSH
4088: LD_INT 21
4090: PUSH
4091: LD_INT 3
4093: PUSH
4094: EMPTY
4095: LIST
4096: LIST
4097: PUSH
4098: EMPTY
4099: LIST
4100: LIST
4101: PPUSH
4102: CALL_OW 70
4106: ST_TO_ADDR
// if not ExistMc ( OtherStrategy ) then
4107: LD_EXP 21
4111: PPUSH
4112: CALL_OW 386
4116: NOT
4117: IFFALSE 4160
// OtherStrategy = McBase ( 1 , OtherEngineers , GetBuildList ( GetBase ( od ) ) , [ ] , [ ] , [ mc_base_cont ] ) ;
4119: LD_ADDR_EXP 21
4123: PUSH
4124: LD_INT 1
4126: PPUSH
4127: LD_EXP 19
4131: PPUSH
4132: LD_INT 118
4134: PPUSH
4135: CALL_OW 274
4139: PPUSH
4140: CALL_OW 417
4144: PPUSH
4145: EMPTY
4146: PPUSH
4147: EMPTY
4148: PPUSH
4149: LD_INT 1
4151: PUSH
4152: EMPTY
4153: LIST
4154: PPUSH
4155: CALL_OW 397
4159: ST_TO_ADDR
// if not ExistMc ( OtherRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
4160: LD_EXP 22
4164: PPUSH
4165: CALL_OW 386
4169: NOT
4170: PUSH
4171: LD_INT 22
4173: PUSH
4174: LD_INT 1
4176: PUSH
4177: EMPTY
4178: LIST
4179: LIST
4180: PUSH
4181: LD_INT 101
4183: PUSH
4184: LD_INT 2
4186: PUSH
4187: EMPTY
4188: LIST
4189: LIST
4190: PUSH
4191: EMPTY
4192: LIST
4193: LIST
4194: PPUSH
4195: CALL_OW 69
4199: NOT
4200: AND
4201: IFFALSE 4265
// begin for i in OtherEngineers do
4203: LD_ADDR_VAR 0 1
4207: PUSH
4208: LD_EXP 19
4212: PUSH
4213: FOR_IN
4214: IFFALSE 4227
// ComExitBuilding ( i ) ;
4216: LD_VAR 0 1
4220: PPUSH
4221: CALL_OW 122
4225: GO 4213
4227: POP
4228: POP
// OtherRepairStrategy = McRepair ( 2 , OtherEngineers , OtherBuildings , [ [ mcr_bui_limit , 1000 ] ] ) ;
4229: LD_ADDR_EXP 22
4233: PUSH
4234: LD_INT 2
4236: PPUSH
4237: LD_EXP 19
4241: PPUSH
4242: LD_EXP 20
4246: PPUSH
4247: LD_INT 6
4249: PUSH
4250: LD_INT 1000
4252: PUSH
4253: EMPTY
4254: LIST
4255: LIST
4256: PUSH
4257: EMPTY
4258: LIST
4259: PPUSH
4260: CALL_OW 414
4264: ST_TO_ADDR
// end ; if FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) then
4265: LD_INT 22
4267: PUSH
4268: LD_INT 1
4270: PUSH
4271: EMPTY
4272: LIST
4273: LIST
4274: PUSH
4275: LD_INT 101
4277: PUSH
4278: LD_INT 2
4280: PUSH
4281: EMPTY
4282: LIST
4283: LIST
4284: PUSH
4285: EMPTY
4286: LIST
4287: LIST
4288: PPUSH
4289: CALL_OW 69
4293: IFFALSE 4333
// begin KillMc ( OtherRepairStrategy ) ;
4295: LD_EXP 22
4299: PPUSH
4300: CALL_OW 387
// for i in OtherEngineers do
4304: LD_ADDR_VAR 0 1
4308: PUSH
4309: LD_EXP 19
4313: PUSH
4314: FOR_IN
4315: IFFALSE 4331
// ComEnterUnit ( i , od ) ;
4317: LD_VAR 0 1
4321: PPUSH
4322: LD_INT 118
4324: PPUSH
4325: CALL_OW 120
4329: GO 4314
4331: POP
4332: POP
// end ; end ;
4333: PPOPN 1
4335: END
// every 0 0$15 trigger FilterUnitsInArea ( OtherArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var a , i , u ;
4336: LD_INT 5
4338: PPUSH
4339: LD_INT 22
4341: PUSH
4342: LD_INT 2
4344: PUSH
4345: EMPTY
4346: LIST
4347: LIST
4348: PUSH
4349: LD_INT 58
4351: PUSH
4352: EMPTY
4353: LIST
4354: PUSH
4355: LD_INT 53
4357: PUSH
4358: EMPTY
4359: LIST
4360: PUSH
4361: LD_INT 50
4363: PUSH
4364: EMPTY
4365: LIST
4366: PUSH
4367: LD_INT 2
4369: PUSH
4370: LD_INT 30
4372: PUSH
4373: LD_INT 32
4375: PUSH
4376: EMPTY
4377: LIST
4378: LIST
4379: PUSH
4380: LD_INT 30
4382: PUSH
4383: LD_INT 31
4385: PUSH
4386: EMPTY
4387: LIST
4388: LIST
4389: PUSH
4390: EMPTY
4391: LIST
4392: LIST
4393: LIST
4394: PUSH
4395: EMPTY
4396: LIST
4397: LIST
4398: LIST
4399: LIST
4400: LIST
4401: PPUSH
4402: CALL_OW 70
4406: IFFALSE 4580
4408: GO 4410
4410: DISABLE
4411: LD_INT 0
4413: PPUSH
4414: PPUSH
4415: PPUSH
// begin a = FilterUnitsInArea ( OtherArea , [ [ f_side , 2 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
4416: LD_ADDR_VAR 0 1
4420: PUSH
4421: LD_INT 5
4423: PPUSH
4424: LD_INT 22
4426: PUSH
4427: LD_INT 2
4429: PUSH
4430: EMPTY
4431: LIST
4432: LIST
4433: PUSH
4434: LD_INT 58
4436: PUSH
4437: EMPTY
4438: LIST
4439: PUSH
4440: LD_INT 53
4442: PUSH
4443: EMPTY
4444: LIST
4445: PUSH
4446: LD_INT 50
4448: PUSH
4449: EMPTY
4450: LIST
4451: PUSH
4452: LD_INT 2
4454: PUSH
4455: LD_INT 30
4457: PUSH
4458: LD_INT 32
4460: PUSH
4461: EMPTY
4462: LIST
4463: LIST
4464: PUSH
4465: LD_INT 30
4467: PUSH
4468: LD_INT 31
4470: PUSH
4471: EMPTY
4472: LIST
4473: LIST
4474: PUSH
4475: EMPTY
4476: LIST
4477: LIST
4478: LIST
4479: PUSH
4480: EMPTY
4481: LIST
4482: LIST
4483: LIST
4484: LIST
4485: LIST
4486: PPUSH
4487: CALL_OW 70
4491: ST_TO_ADDR
// for i in a do
4492: LD_ADDR_VAR 0 2
4496: PUSH
4497: LD_VAR 0 1
4501: PUSH
4502: FOR_IN
4503: IFFALSE 4578
// begin u = FilterUnitsInArea ( OtherArea , [ [ f_side , 2 ] , [ f_class , class_soldier ] , [ f_outside ] ] ) [ 1 ] ;
4505: LD_ADDR_VAR 0 3
4509: PUSH
4510: LD_INT 5
4512: PPUSH
4513: LD_INT 22
4515: PUSH
4516: LD_INT 2
4518: PUSH
4519: EMPTY
4520: LIST
4521: LIST
4522: PUSH
4523: LD_INT 25
4525: PUSH
4526: LD_INT 1
4528: PUSH
4529: EMPTY
4530: LIST
4531: LIST
4532: PUSH
4533: LD_INT 56
4535: PUSH
4536: EMPTY
4537: LIST
4538: PUSH
4539: EMPTY
4540: LIST
4541: LIST
4542: LIST
4543: PPUSH
4544: CALL_OW 70
4548: PUSH
4549: LD_INT 1
4551: ARRAY
4552: ST_TO_ADDR
// ComExitBuilding ( u ) ;
4553: LD_VAR 0 3
4557: PPUSH
4558: CALL_OW 122
// ComEnterUnit ( u , i ) ;
4562: LD_VAR 0 3
4566: PPUSH
4567: LD_VAR 0 2
4571: PPUSH
4572: CALL_OW 120
// end ;
4576: GO 4502
4578: POP
4579: POP
// end ;
4580: PPOPN 3
4582: END
// every 0 0$1 trigger UnitFilter ( OtherBuildings , [ [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_depot ] , [ f_btype , b_factory ] ] , [ f_ok ] ] ) < 3 and SiberiteSpotted = true do
4583: LD_EXP 20
4587: PPUSH
4588: LD_INT 2
4590: PUSH
4591: LD_INT 30
4593: PUSH
4594: LD_INT 5
4596: PUSH
4597: EMPTY
4598: LIST
4599: LIST
4600: PUSH
4601: LD_INT 30
4603: PUSH
4604: LD_INT 0
4606: PUSH
4607: EMPTY
4608: LIST
4609: LIST
4610: PUSH
4611: LD_INT 30
4613: PUSH
4614: LD_INT 3
4616: PUSH
4617: EMPTY
4618: LIST
4619: LIST
4620: PUSH
4621: EMPTY
4622: LIST
4623: LIST
4624: LIST
4625: LIST
4626: PUSH
4627: LD_INT 50
4629: PUSH
4630: EMPTY
4631: LIST
4632: PUSH
4633: EMPTY
4634: LIST
4635: LIST
4636: PPUSH
4637: CALL_OW 72
4641: PUSH
4642: LD_INT 3
4644: LESS
4645: PUSH
4646: LD_EXP 8
4650: PUSH
4651: LD_INT 1
4653: EQUAL
4654: AND
4655: IFFALSE 4673
4657: GO 4659
4659: DISABLE
// MineExplosion ( 135 , 45 , 3 ) ;
4660: LD_INT 135
4662: PPUSH
4663: LD_INT 45
4665: PPUSH
4666: LD_INT 3
4668: PPUSH
4669: CALL_OW 453
4673: END
// export BojanAttackers ; export function PrepareBojanAttack ( h , v , path ) ; var i , BojanAttack ; begin
4674: LD_INT 0
4676: PPUSH
4677: PPUSH
4678: PPUSH
// uc_side = 2 ;
4679: LD_ADDR_OWVAR 20
4683: PUSH
4684: LD_INT 2
4686: ST_TO_ADDR
// uc_nation = nation_arabian ;
4687: LD_ADDR_OWVAR 21
4691: PUSH
4692: LD_INT 2
4694: ST_TO_ADDR
// InitHc ;
4695: CALL_OW 19
// for i = 1 to h do
4699: LD_ADDR_VAR 0 5
4703: PUSH
4704: DOUBLE
4705: LD_INT 1
4707: DEC
4708: ST_TO_ADDR
4709: LD_VAR 0 1
4713: PUSH
4714: FOR_TO
4715: IFFALSE 4762
// begin PrepareSoldier ( false , [ 3 , 3 , 4 ] [ difficulty ] ) ;
4717: LD_INT 0
4719: PPUSH
4720: LD_INT 3
4722: PUSH
4723: LD_INT 3
4725: PUSH
4726: LD_INT 4
4728: PUSH
4729: EMPTY
4730: LIST
4731: LIST
4732: LIST
4733: PUSH
4734: LD_OWVAR 67
4738: ARRAY
4739: PPUSH
4740: CALL_OW 381
// BojanAttackers = BojanAttackers ^ CreateHuman ;
4744: LD_ADDR_EXP 23
4748: PUSH
4749: LD_EXP 23
4753: PUSH
4754: CALL_OW 44
4758: ADD
4759: ST_TO_ADDR
// end ;
4760: GO 4714
4762: POP
4763: POP
// for i = 1 to v do
4764: LD_ADDR_VAR 0 5
4768: PUSH
4769: DOUBLE
4770: LD_INT 1
4772: DEC
4773: ST_TO_ADDR
4774: LD_VAR 0 2
4778: PUSH
4779: FOR_TO
4780: IFFALSE 4917
// begin case Rand ( 1 , 2 ) of 1 :
4782: LD_INT 1
4784: PPUSH
4785: LD_INT 2
4787: PPUSH
4788: CALL_OW 12
4792: PUSH
4793: LD_INT 1
4795: DOUBLE
4796: EQUAL
4797: IFTRUE 4801
4799: GO 4836
4801: POP
// begin vc_chassis = ar_light_trike ;
4802: LD_ADDR_OWVAR 37
4806: PUSH
4807: LD_INT 12
4809: ST_TO_ADDR
// vc_engine = engine_solar ;
4810: LD_ADDR_OWVAR 39
4814: PUSH
4815: LD_INT 2
4817: ST_TO_ADDR
// vc_control = control_manual ;
4818: LD_ADDR_OWVAR 38
4822: PUSH
4823: LD_INT 1
4825: ST_TO_ADDR
// vc_weapon = ar_light_gun ;
4826: LD_ADDR_OWVAR 40
4830: PUSH
4831: LD_INT 23
4833: ST_TO_ADDR
// end ; 2 :
4834: GO 4899
4836: LD_INT 2
4838: DOUBLE
4839: EQUAL
4840: IFTRUE 4844
4842: GO 4898
4844: POP
// begin vc_chassis = ar_medium_trike ;
4845: LD_ADDR_OWVAR 37
4849: PUSH
4850: LD_INT 13
4852: ST_TO_ADDR
// vc_engine = engine_solar ;
4853: LD_ADDR_OWVAR 39
4857: PUSH
4858: LD_INT 2
4860: ST_TO_ADDR
// vc_control = control_manual ;
4861: LD_ADDR_OWVAR 38
4865: PUSH
4866: LD_INT 1
4868: ST_TO_ADDR
// vc_weapon = [ ar_gun , ar_flame_thrower ] [ Rand ( 1 , 2 ) ] ;
4869: LD_ADDR_OWVAR 40
4873: PUSH
4874: LD_INT 27
4876: PUSH
4877: LD_INT 26
4879: PUSH
4880: EMPTY
4881: LIST
4882: LIST
4883: PUSH
4884: LD_INT 1
4886: PPUSH
4887: LD_INT 2
4889: PPUSH
4890: CALL_OW 12
4894: ARRAY
4895: ST_TO_ADDR
// end ; end ;
4896: GO 4899
4898: POP
// BojanAttackers = BojanAttackers ^ CreateVehicle ;
4899: LD_ADDR_EXP 23
4903: PUSH
4904: LD_EXP 23
4908: PUSH
4909: CALL_OW 45
4913: ADD
4914: ST_TO_ADDR
// end ;
4915: GO 4779
4917: POP
4918: POP
// for i in BojanAttackers do
4919: LD_ADDR_VAR 0 5
4923: PUSH
4924: LD_EXP 23
4928: PUSH
4929: FOR_IN
4930: IFFALSE 5005
// begin PlaceUnitArea ( i , BojanEnterArea , false ) ;
4932: LD_VAR 0 5
4936: PPUSH
4937: LD_INT 7
4939: PPUSH
4940: LD_INT 0
4942: PPUSH
4943: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
4947: LD_VAR 0 5
4951: PPUSH
4952: CALL_OW 247
4956: PUSH
4957: LD_INT 2
4959: EQUAL
4960: IFFALSE 5003
// begin PrepareMechanic ( false , [ 2 , 3 , 4 ] [ difficulty ] ) ;
4962: LD_INT 0
4964: PPUSH
4965: LD_INT 2
4967: PUSH
4968: LD_INT 3
4970: PUSH
4971: LD_INT 4
4973: PUSH
4974: EMPTY
4975: LIST
4976: LIST
4977: LIST
4978: PUSH
4979: LD_OWVAR 67
4983: ARRAY
4984: PPUSH
4985: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
4989: CALL_OW 44
4993: PPUSH
4994: LD_VAR 0 5
4998: PPUSH
4999: CALL_OW 52
// end ; end ;
5003: GO 4929
5005: POP
5006: POP
// BojanAttack = McMove ( 1 , BojanAttackers , path , [ [ mc_move_agressive ] , [ mc_move_wait , 10 ] ] ) ;
5007: LD_ADDR_VAR 0 6
5011: PUSH
5012: LD_INT 1
5014: PPUSH
5015: LD_EXP 23
5019: PPUSH
5020: LD_VAR 0 3
5024: PPUSH
5025: LD_INT 6
5027: PUSH
5028: EMPTY
5029: LIST
5030: PUSH
5031: LD_INT 1
5033: PUSH
5034: LD_INT 10
5036: PUSH
5037: EMPTY
5038: LIST
5039: LIST
5040: PUSH
5041: EMPTY
5042: LIST
5043: LIST
5044: PPUSH
5045: CALL_OW 398
5049: ST_TO_ADDR
// end ;
5050: LD_VAR 0 4
5054: RET
// every 0 0$1 do
5055: GO 5057
5057: DISABLE
// begin enable ;
5058: ENABLE
// case tick of 7 7$30 :
5059: LD_OWVAR 1
5063: PUSH
5064: LD_INT 15750
5066: DOUBLE
5067: EQUAL
5068: IFTRUE 5072
5070: GO 5187
5072: POP
// PrepareBojanAttack ( [ 0 , 2 , 2 ] [ difficulty ] , [ 2 , 2 , 3 ] [ difficulty ] , [ [ 113 , 29 ] , [ 100 , 53 ] , [ 121 , 75 ] , [ 119 , 109 ] , [ 104 , 122 ] , [ 70 , 110 ] ] ) ; 12 12$30 :
5073: LD_INT 0
5075: PUSH
5076: LD_INT 2
5078: PUSH
5079: LD_INT 2
5081: PUSH
5082: EMPTY
5083: LIST
5084: LIST
5085: LIST
5086: PUSH
5087: LD_OWVAR 67
5091: ARRAY
5092: PPUSH
5093: LD_INT 2
5095: PUSH
5096: LD_INT 2
5098: PUSH
5099: LD_INT 3
5101: PUSH
5102: EMPTY
5103: LIST
5104: LIST
5105: LIST
5106: PUSH
5107: LD_OWVAR 67
5111: ARRAY
5112: PPUSH
5113: LD_INT 113
5115: PUSH
5116: LD_INT 29
5118: PUSH
5119: EMPTY
5120: LIST
5121: LIST
5122: PUSH
5123: LD_INT 100
5125: PUSH
5126: LD_INT 53
5128: PUSH
5129: EMPTY
5130: LIST
5131: LIST
5132: PUSH
5133: LD_INT 121
5135: PUSH
5136: LD_INT 75
5138: PUSH
5139: EMPTY
5140: LIST
5141: LIST
5142: PUSH
5143: LD_INT 119
5145: PUSH
5146: LD_INT 109
5148: PUSH
5149: EMPTY
5150: LIST
5151: LIST
5152: PUSH
5153: LD_INT 104
5155: PUSH
5156: LD_INT 122
5158: PUSH
5159: EMPTY
5160: LIST
5161: LIST
5162: PUSH
5163: LD_INT 70
5165: PUSH
5166: LD_INT 110
5168: PUSH
5169: EMPTY
5170: LIST
5171: LIST
5172: PUSH
5173: EMPTY
5174: LIST
5175: LIST
5176: LIST
5177: LIST
5178: LIST
5179: LIST
5180: PPUSH
5181: CALL 4674 0 3
5185: GO 5311
5187: LD_INT 26250
5189: DOUBLE
5190: EQUAL
5191: IFTRUE 5195
5193: GO 5310
5195: POP
// PrepareBojanAttack ( [ 1 , 2 , 2 ] [ difficulty ] , [ 1 , 2 , 4 ] [ difficulty ] , [ [ 113 , 29 ] , [ 100 , 53 ] , [ 121 , 75 ] , [ 119 , 109 ] , [ 104 , 122 ] , [ 70 , 110 ] ] ) ; end ;
5196: LD_INT 1
5198: PUSH
5199: LD_INT 2
5201: PUSH
5202: LD_INT 2
5204: PUSH
5205: EMPTY
5206: LIST
5207: LIST
5208: LIST
5209: PUSH
5210: LD_OWVAR 67
5214: ARRAY
5215: PPUSH
5216: LD_INT 1
5218: PUSH
5219: LD_INT 2
5221: PUSH
5222: LD_INT 4
5224: PUSH
5225: EMPTY
5226: LIST
5227: LIST
5228: LIST
5229: PUSH
5230: LD_OWVAR 67
5234: ARRAY
5235: PPUSH
5236: LD_INT 113
5238: PUSH
5239: LD_INT 29
5241: PUSH
5242: EMPTY
5243: LIST
5244: LIST
5245: PUSH
5246: LD_INT 100
5248: PUSH
5249: LD_INT 53
5251: PUSH
5252: EMPTY
5253: LIST
5254: LIST
5255: PUSH
5256: LD_INT 121
5258: PUSH
5259: LD_INT 75
5261: PUSH
5262: EMPTY
5263: LIST
5264: LIST
5265: PUSH
5266: LD_INT 119
5268: PUSH
5269: LD_INT 109
5271: PUSH
5272: EMPTY
5273: LIST
5274: LIST
5275: PUSH
5276: LD_INT 104
5278: PUSH
5279: LD_INT 122
5281: PUSH
5282: EMPTY
5283: LIST
5284: LIST
5285: PUSH
5286: LD_INT 70
5288: PUSH
5289: LD_INT 110
5291: PUSH
5292: EMPTY
5293: LIST
5294: LIST
5295: PUSH
5296: EMPTY
5297: LIST
5298: LIST
5299: LIST
5300: LIST
5301: LIST
5302: LIST
5303: PPUSH
5304: CALL 4674 0 3
5308: GO 5311
5310: POP
// end ;
5311: END
// every 0 0$1 trigger BojanAttackers do var i , u ;
5312: LD_EXP 23
5316: IFFALSE 5533
5318: GO 5320
5320: DISABLE
5321: LD_INT 0
5323: PPUSH
5324: PPUSH
// begin enable ;
5325: ENABLE
// for i in UnitFilter ( BojanAttackers , [ f_type , unit_vehicle ] ) do
5326: LD_ADDR_VAR 0 1
5330: PUSH
5331: LD_EXP 23
5335: PPUSH
5336: LD_INT 21
5338: PUSH
5339: LD_INT 2
5341: PUSH
5342: EMPTY
5343: LIST
5344: LIST
5345: PPUSH
5346: CALL_OW 72
5350: PUSH
5351: FOR_IN
5352: IFFALSE 5531
// begin if GetLives ( i ) < 500 then
5354: LD_VAR 0 1
5358: PPUSH
5359: CALL_OW 256
5363: PUSH
5364: LD_INT 500
5366: LESS
5367: IFFALSE 5440
// if not IsInArea ( i , BojanRepairs ) then
5369: LD_VAR 0 1
5373: PPUSH
5374: LD_INT 9
5376: PPUSH
5377: CALL_OW 308
5381: NOT
5382: IFFALSE 5398
// ComMoveToArea ( i , BojanRepairs ) else
5384: LD_VAR 0 1
5388: PPUSH
5389: LD_INT 9
5391: PPUSH
5392: CALL_OW 113
5396: GO 5440
// begin u = UnitsInside ( i ) [ 1 ] ;
5398: LD_ADDR_VAR 0 2
5402: PUSH
5403: LD_VAR 0 1
5407: PPUSH
5408: CALL_OW 313
5412: PUSH
5413: LD_INT 1
5415: ARRAY
5416: ST_TO_ADDR
// ComExitVehicle ( i ) ;
5417: LD_VAR 0 1
5421: PPUSH
5422: CALL_OW 121
// AddComRepairVehicle ( u , i ) ;
5426: LD_VAR 0 2
5430: PPUSH
5431: LD_VAR 0 1
5435: PPUSH
5436: CALL_OW 189
// end ; if not IsDrivenBy ( i ) then
5440: LD_VAR 0 1
5444: PPUSH
5445: CALL_OW 311
5449: NOT
5450: IFFALSE 5529
// if GetLives ( i ) = 1000 or See ( 4 , i ) then
5452: LD_VAR 0 1
5456: PPUSH
5457: CALL_OW 256
5461: PUSH
5462: LD_INT 1000
5464: EQUAL
5465: PUSH
5466: LD_INT 4
5468: PPUSH
5469: LD_VAR 0 1
5473: PPUSH
5474: CALL_OW 292
5478: OR
5479: IFFALSE 5529
// ComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_mechanic ] ] ) , i ) , i ) ;
5481: LD_INT 22
5483: PUSH
5484: LD_INT 2
5486: PUSH
5487: EMPTY
5488: LIST
5489: LIST
5490: PUSH
5491: LD_INT 25
5493: PUSH
5494: LD_INT 3
5496: PUSH
5497: EMPTY
5498: LIST
5499: LIST
5500: PUSH
5501: EMPTY
5502: LIST
5503: LIST
5504: PPUSH
5505: CALL_OW 69
5509: PPUSH
5510: LD_VAR 0 1
5514: PPUSH
5515: CALL_OW 74
5519: PPUSH
5520: LD_VAR 0 1
5524: PPUSH
5525: CALL_OW 120
// end ;
5529: GO 5351
5531: POP
5532: POP
// end ; end_of_file
5533: PPOPN 2
5535: END
// export MinePositions ; every 0 0$1 do
5536: GO 5538
5538: DISABLE
// MinePositions = [ [ 60 , 54 ] , [ 69 , 32 ] , [ 67 , 27 ] , [ 122 , 65 ] , [ 106 , 45 ] , [ 125 , 62 ] ] ;
5539: LD_ADDR_EXP 24
5543: PUSH
5544: LD_INT 60
5546: PUSH
5547: LD_INT 54
5549: PUSH
5550: EMPTY
5551: LIST
5552: LIST
5553: PUSH
5554: LD_INT 69
5556: PUSH
5557: LD_INT 32
5559: PUSH
5560: EMPTY
5561: LIST
5562: LIST
5563: PUSH
5564: LD_INT 67
5566: PUSH
5567: LD_INT 27
5569: PUSH
5570: EMPTY
5571: LIST
5572: LIST
5573: PUSH
5574: LD_INT 122
5576: PUSH
5577: LD_INT 65
5579: PUSH
5580: EMPTY
5581: LIST
5582: LIST
5583: PUSH
5584: LD_INT 106
5586: PUSH
5587: LD_INT 45
5589: PUSH
5590: EMPTY
5591: LIST
5592: LIST
5593: PUSH
5594: LD_INT 125
5596: PUSH
5597: LD_INT 62
5599: PUSH
5600: EMPTY
5601: LIST
5602: LIST
5603: PUSH
5604: EMPTY
5605: LIST
5606: LIST
5607: LIST
5608: LIST
5609: LIST
5610: LIST
5611: ST_TO_ADDR
5612: END
// export FirstMineGone , FirstMineX , FirstMineY ; export function TestTheMine ( x , y ) ; var t ; begin
5613: LD_INT 0
5615: PPUSH
5616: PPUSH
// t = FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] , [ f_distxy , x , y , 2 ] ] ) ;
5617: LD_ADDR_VAR 0 4
5621: PUSH
5622: LD_INT 22
5624: PUSH
5625: LD_INT 1
5627: PUSH
5628: EMPTY
5629: LIST
5630: LIST
5631: PUSH
5632: LD_INT 2
5634: PUSH
5635: LD_INT 21
5637: PUSH
5638: LD_INT 1
5640: PUSH
5641: EMPTY
5642: LIST
5643: LIST
5644: PUSH
5645: LD_INT 21
5647: PUSH
5648: LD_INT 2
5650: PUSH
5651: EMPTY
5652: LIST
5653: LIST
5654: PUSH
5655: EMPTY
5656: LIST
5657: LIST
5658: LIST
5659: PUSH
5660: LD_INT 92
5662: PUSH
5663: LD_VAR 0 1
5667: PUSH
5668: LD_VAR 0 2
5672: PUSH
5673: LD_INT 2
5675: PUSH
5676: EMPTY
5677: LIST
5678: LIST
5679: LIST
5680: LIST
5681: PUSH
5682: EMPTY
5683: LIST
5684: LIST
5685: LIST
5686: PPUSH
5687: CALL_OW 69
5691: ST_TO_ADDR
// if t and SeeXY ( 2 , x , y ) then
5692: LD_VAR 0 4
5696: PUSH
5697: LD_INT 2
5699: PPUSH
5700: LD_VAR 0 1
5704: PPUSH
5705: LD_VAR 0 2
5709: PPUSH
5710: CALL_OW 293
5714: AND
5715: IFFALSE 5779
// begin MineExplosion ( x , y , 1 ) ;
5717: LD_VAR 0 1
5721: PPUSH
5722: LD_VAR 0 2
5726: PPUSH
5727: LD_INT 1
5729: PPUSH
5730: CALL_OW 453
// Result = true ;
5734: LD_ADDR_VAR 0 3
5738: PUSH
5739: LD_INT 1
5741: ST_TO_ADDR
// if not FirstMineGone then
5742: LD_EXP 25
5746: NOT
5747: IFFALSE 5777
// begin FirstMineGone = true ;
5749: LD_ADDR_EXP 25
5753: PUSH
5754: LD_INT 1
5756: ST_TO_ADDR
// FirstMineX = x ;
5757: LD_ADDR_EXP 26
5761: PUSH
5762: LD_VAR 0 1
5766: ST_TO_ADDR
// FirstMineY = y ;
5767: LD_ADDR_EXP 27
5771: PUSH
5772: LD_VAR 0 2
5776: ST_TO_ADDR
// end ; end else
5777: GO 5787
// Result = false ;
5779: LD_ADDR_VAR 0 3
5783: PUSH
5784: LD_INT 0
5786: ST_TO_ADDR
// end ;
5787: LD_VAR 0 3
5791: RET
// every 0 0$2 do var MineOut , i ;
5792: GO 5794
5794: DISABLE
5795: LD_INT 0
5797: PPUSH
5798: PPUSH
// begin MineOut = [ ] ;
5799: LD_ADDR_VAR 0 1
5803: PUSH
5804: EMPTY
5805: ST_TO_ADDR
// for i in MinePositions do
5806: LD_ADDR_VAR 0 2
5810: PUSH
5811: LD_EXP 24
5815: PUSH
5816: FOR_IN
5817: IFFALSE 5864
// if TestTheMine ( i [ 1 ] , i [ 2 ] ) then
5819: LD_VAR 0 2
5823: PUSH
5824: LD_INT 1
5826: ARRAY
5827: PPUSH
5828: LD_VAR 0 2
5832: PUSH
5833: LD_INT 2
5835: ARRAY
5836: PPUSH
5837: CALL 5613 0 2
5841: IFFALSE 5862
// MineOut = MineOut ^ [ i ] ;
5843: LD_ADDR_VAR 0 1
5847: PUSH
5848: LD_VAR 0 1
5852: PUSH
5853: LD_VAR 0 2
5857: PUSH
5858: EMPTY
5859: LIST
5860: ADD
5861: ST_TO_ADDR
5862: GO 5816
5864: POP
5865: POP
// if MineOut then
5866: LD_VAR 0 1
5870: IFFALSE 5888
// MinePositions = MinePositions diff MineOut ;
5872: LD_ADDR_EXP 24
5876: PUSH
5877: LD_EXP 24
5881: PUSH
5882: LD_VAR 0 1
5886: DIFF
5887: ST_TO_ADDR
// if MinePositions then
5888: LD_EXP 24
5892: IFFALSE 5895
// enable ;
5894: ENABLE
// end ; end_of_file
5895: PPOPN 2
5897: END
// export ArabLosses ; every 0 0$1 do
5898: GO 5900
5900: DISABLE
// begin case tick of 1 .. 15 15$0 :
5901: LD_OWVAR 1
5905: PUSH
5906: LD_INT 1
5908: DOUBLE
5909: GREATEREQUAL
5910: IFFALSE 5918
5912: LD_INT 31500
5914: DOUBLE
5915: LESSEQUAL
5916: IFTRUE 5920
5918: GO 5938
5920: POP
// Wait ( Rand ( 1 1$0 , 2 2$30 ) ) ; 15 15$0 + 1 .. 20 20$0 :
5921: LD_INT 2100
5923: PPUSH
5924: LD_INT 5250
5926: PPUSH
5927: CALL_OW 12
5931: PPUSH
5932: CALL_OW 67
5936: GO 5990
5938: LD_INT 31500
5940: PUSH
5941: LD_INT 1
5943: PLUS
5944: DOUBLE
5945: GREATEREQUAL
5946: IFFALSE 5954
5948: LD_INT 42000
5950: DOUBLE
5951: LESSEQUAL
5952: IFTRUE 5956
5954: GO 5974
5956: POP
// Wait ( Rand ( 0 0$30 , 1 1$0 ) ) ; else
5957: LD_INT 1050
5959: PPUSH
5960: LD_INT 2100
5962: PPUSH
5963: CALL_OW 12
5967: PPUSH
5968: CALL_OW 67
5972: GO 5990
5974: POP
// Wait ( Rand ( 2 2$0 , 3 3$0 ) ) ; end ;
5975: LD_INT 4200
5977: PPUSH
5978: LD_INT 6300
5980: PPUSH
5981: CALL_OW 12
5985: PPUSH
5986: CALL_OW 67
// CreateCratesArea ( Rand ( 3 , 5 ) , CratesArea , true ) ;
5990: LD_INT 3
5992: PPUSH
5993: LD_INT 5
5995: PPUSH
5996: CALL_OW 12
6000: PPUSH
6001: LD_INT 2
6003: PPUSH
6004: LD_INT 1
6006: PPUSH
6007: CALL_OW 55
// enable ;
6011: ENABLE
// end ;
6012: END
// every 3 3$0 do
6013: GO 6015
6015: DISABLE
// begin enable ;
6016: ENABLE
// CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
6017: LD_INT 4
6019: PPUSH
6020: LD_INT 5
6022: PPUSH
6023: CALL_OW 12
6027: PPUSH
6028: LD_INT 1
6030: PPUSH
6031: CALL_OW 57
// end ;
6035: END
// on BuildingComplete ( b ) do begin if GetSide ( b ) = 2 and GetBType ( b ) = b_bunker then
6036: LD_VAR 0 1
6040: PPUSH
6041: CALL_OW 255
6045: PUSH
6046: LD_INT 2
6048: EQUAL
6049: PUSH
6050: LD_VAR 0 1
6054: PPUSH
6055: CALL_OW 266
6059: PUSH
6060: LD_INT 32
6062: EQUAL
6063: AND
6064: IFFALSE 6145
// begin case Rand ( 1 , 2 ) of 1 :
6066: LD_INT 1
6068: PPUSH
6069: LD_INT 2
6071: PPUSH
6072: CALL_OW 12
6076: PUSH
6077: LD_INT 1
6079: DOUBLE
6080: EQUAL
6081: IFTRUE 6085
6083: GO 6100
6085: POP
// ComPlaceWeapon ( b , ar_gun ) ; 2 :
6086: LD_VAR 0 1
6090: PPUSH
6091: LD_INT 27
6093: PPUSH
6094: CALL_OW 148
6098: GO 6124
6100: LD_INT 2
6102: DOUBLE
6103: EQUAL
6104: IFTRUE 6108
6106: GO 6123
6108: POP
// ComPlaceWeapon ( b , ar_light_gun ) ; end ;
6109: LD_VAR 0 1
6113: PPUSH
6114: LD_INT 23
6116: PPUSH
6117: CALL_OW 148
6121: GO 6124
6123: POP
// ComEnterUnit ( UnitsInside ( qa ) [ 1 ] , b ) ;
6124: LD_INT 14
6126: PPUSH
6127: CALL_OW 313
6131: PUSH
6132: LD_INT 1
6134: ARRAY
6135: PPUSH
6136: LD_VAR 0 1
6140: PPUSH
6141: CALL_OW 120
// end ; end ;
6145: PPOPN 1
6147: END
// on UnitDestroyed ( u ) do begin if u = Alex then
6148: LD_VAR 0 1
6152: PUSH
6153: LD_EXP 1
6157: EQUAL
6158: IFFALSE 6167
// YouLost ( AlexDead ) ;
6160: LD_STRING AlexDead
6162: PPUSH
6163: CALL_OW 104
// if GetSide ( u ) = 2 and GetType ( u ) = unit_human then
6167: LD_VAR 0 1
6171: PPUSH
6172: CALL_OW 255
6176: PUSH
6177: LD_INT 2
6179: EQUAL
6180: PUSH
6181: LD_VAR 0 1
6185: PPUSH
6186: CALL_OW 247
6190: PUSH
6191: LD_INT 1
6193: EQUAL
6194: AND
6195: IFFALSE 6211
// ArabLosses = ArabLosses + 1 ;
6197: LD_ADDR_EXP 28
6201: PUSH
6202: LD_EXP 28
6206: PUSH
6207: LD_INT 1
6209: PLUS
6210: ST_TO_ADDR
// end ; end_of_file
6211: PPOPN 1
6213: END
// export AlQudsCore ; every 0 0$1 do
6214: GO 6216
6216: DISABLE
// begin enable ;
6217: ENABLE
// AlQudsCore = [ qd , ql , qf ] ^ FilterUnitsInArea ( AlQudsFinalCheck , [ [ f_side , 2 ] , [ f_or , [ [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] , [ [ f_type , unit_human ] , [ f_outside ] ] ] ] ) ;
6218: LD_ADDR_EXP 29
6222: PUSH
6223: LD_INT 3
6225: PUSH
6226: LD_INT 5
6228: PUSH
6229: LD_INT 6
6231: PUSH
6232: EMPTY
6233: LIST
6234: LIST
6235: LIST
6236: PUSH
6237: LD_INT 10
6239: PPUSH
6240: LD_INT 22
6242: PUSH
6243: LD_INT 2
6245: PUSH
6246: EMPTY
6247: LIST
6248: LIST
6249: PUSH
6250: LD_INT 2
6252: PUSH
6253: LD_INT 21
6255: PUSH
6256: LD_INT 2
6258: PUSH
6259: EMPTY
6260: LIST
6261: LIST
6262: PUSH
6263: LD_INT 3
6265: PUSH
6266: LD_INT 58
6268: PUSH
6269: EMPTY
6270: LIST
6271: PUSH
6272: EMPTY
6273: LIST
6274: LIST
6275: PUSH
6276: EMPTY
6277: LIST
6278: LIST
6279: PUSH
6280: LD_INT 21
6282: PUSH
6283: LD_INT 1
6285: PUSH
6286: EMPTY
6287: LIST
6288: LIST
6289: PUSH
6290: LD_INT 56
6292: PUSH
6293: EMPTY
6294: LIST
6295: PUSH
6296: EMPTY
6297: LIST
6298: LIST
6299: PUSH
6300: EMPTY
6301: LIST
6302: LIST
6303: LIST
6304: PUSH
6305: EMPTY
6306: LIST
6307: LIST
6308: PPUSH
6309: CALL_OW 70
6313: ADD
6314: ST_TO_ADDR
// end ;
6315: END
// every 0 0$3 trigger UnitFilter ( AlQudsCore , [ f_ok ] ) = 0 do
6316: LD_EXP 29
6320: PPUSH
6321: LD_INT 50
6323: PUSH
6324: EMPTY
6325: LIST
6326: PPUSH
6327: CALL_OW 72
6331: PUSH
6332: LD_INT 0
6334: EQUAL
6335: IFFALSE 6732
6337: GO 6339
6339: DISABLE
// begin InGameOn ;
6340: CALL_OW 8
// DialogueOn ;
6344: CALL_OW 6
// if IsInUnit ( Alex ) then
6348: LD_EXP 1
6352: PPUSH
6353: CALL_OW 310
6357: IFFALSE 6375
// CenterOnUnits ( IsInUnit ( Alex ) ) else
6359: LD_EXP 1
6363: PPUSH
6364: CALL_OW 310
6368: PPUSH
6369: CALL_OW 85
6373: GO 6384
// CenterOnUnits ( Alex ) ;
6375: LD_EXP 1
6379: PPUSH
6380: CALL_OW 85
// DWait ( 0 0$0.5 ) ;
6384: LD_INT 18
6386: PPUSH
6387: CALL_OW 68
// Say ( Alex , de-a-1 ) ;
6391: LD_EXP 1
6395: PPUSH
6396: LD_STRING de-a-1
6398: PPUSH
6399: CALL_OW 88
// SayRadio ( Hayes , de-h-1 ) ;
6403: LD_EXP 5
6407: PPUSH
6408: LD_STRING de-h-1
6410: PPUSH
6411: CALL_OW 94
// SayRadio ( Bojan , de-b-1 ) ;
6415: LD_EXP 11
6419: PPUSH
6420: LD_STRING de-b-1
6422: PPUSH
6423: CALL_OW 94
// Say ( Alex , de-a-2 ) ;
6427: LD_EXP 1
6431: PPUSH
6432: LD_STRING de-a-2
6434: PPUSH
6435: CALL_OW 88
// InGameOff ;
6439: CALL_OW 9
// DialogueOff ;
6443: CALL_OW 7
// if not SupportRequested then
6447: LD_EXP 10
6451: NOT
6452: IFFALSE 6466
// AddMedal ( MHelp , 1 ) else
6454: LD_STRING MHelp
6456: PPUSH
6457: LD_INT 1
6459: PPUSH
6460: CALL_OW 101
6464: GO 6477
// AddMedal ( MHelp , - 1 ) ;
6466: LD_STRING MHelp
6468: PPUSH
6469: LD_INT 1
6471: NEG
6472: PPUSH
6473: CALL_OW 101
// if SiberiteTaken then
6477: LD_EXP 9
6481: IFFALSE 6495
// AddMedal ( MSiberite , 1 ) else
6483: LD_STRING MSiberite
6485: PPUSH
6486: LD_INT 1
6488: PPUSH
6489: CALL_OW 101
6493: GO 6525
// if SiberiteSpotted then
6495: LD_EXP 8
6499: IFFALSE 6514
// AddMedal ( MSiberite , - 1 ) else
6501: LD_STRING MSiberite
6503: PPUSH
6504: LD_INT 1
6506: NEG
6507: PPUSH
6508: CALL_OW 101
6512: GO 6525
// AddMedal ( MSiberite , - 2 ) ;
6514: LD_STRING MSiberite
6516: PPUSH
6517: LD_INT 2
6519: NEG
6520: PPUSH
6521: CALL_OW 101
// if ArabLosses > [ 20 , 25 , 30 ] [ difficulty ] then
6525: LD_EXP 28
6529: PUSH
6530: LD_INT 20
6532: PUSH
6533: LD_INT 25
6535: PUSH
6536: LD_INT 30
6538: PUSH
6539: EMPTY
6540: LIST
6541: LIST
6542: LIST
6543: PUSH
6544: LD_OWVAR 67
6548: ARRAY
6549: GREATER
6550: IFFALSE 6574
// begin AddMedal ( MKills , 1 ) ;
6552: LD_STRING MKills
6554: PPUSH
6555: LD_INT 1
6557: PPUSH
6558: CALL_OW 101
// SaveVariable ( 1 , ArabLosses ) ;
6562: LD_INT 1
6564: PPUSH
6565: LD_STRING ArabLosses
6567: PPUSH
6568: CALL_OW 39
// end else
6572: GO 6585
// AddMedal ( MKills , - 1 ) ;
6574: LD_STRING MKills
6576: PPUSH
6577: LD_INT 1
6579: NEG
6580: PPUSH
6581: CALL_OW 101
// GiveMedals ( Main ) ;
6585: LD_STRING Main
6587: PPUSH
6588: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_type , nation_american ] ] ) ) ;
6592: LD_INT 22
6594: PUSH
6595: LD_INT 1
6597: PUSH
6598: EMPTY
6599: LIST
6600: LIST
6601: PUSH
6602: LD_INT 21
6604: PUSH
6605: LD_INT 1
6607: PUSH
6608: EMPTY
6609: LIST
6610: LIST
6611: PUSH
6612: LD_INT 21
6614: PUSH
6615: LD_INT 1
6617: PUSH
6618: EMPTY
6619: LIST
6620: LIST
6621: PUSH
6622: EMPTY
6623: LIST
6624: LIST
6625: LIST
6626: PPUSH
6627: CALL_OW 69
6631: PPUSH
6632: CALL_OW 43
// SaveCharacters ( Alex , Alex ) ;
6636: LD_EXP 1
6640: PPUSH
6641: LD_STRING Alex
6643: PPUSH
6644: CALL_OW 38
// if Anne then
6648: LD_EXP 2
6652: IFFALSE 6666
// SaveCharacters ( Anne , Anne ) ;
6654: LD_EXP 2
6658: PPUSH
6659: LD_STRING Anne
6661: PPUSH
6662: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_type , nation_american ] ] ) diff [ Alex , Anne ] , TeamAlex ) ;
6666: LD_INT 22
6668: PUSH
6669: LD_INT 1
6671: PUSH
6672: EMPTY
6673: LIST
6674: LIST
6675: PUSH
6676: LD_INT 21
6678: PUSH
6679: LD_INT 1
6681: PUSH
6682: EMPTY
6683: LIST
6684: LIST
6685: PUSH
6686: LD_INT 21
6688: PUSH
6689: LD_INT 1
6691: PUSH
6692: EMPTY
6693: LIST
6694: LIST
6695: PUSH
6696: EMPTY
6697: LIST
6698: LIST
6699: LIST
6700: PPUSH
6701: CALL_OW 69
6705: PUSH
6706: LD_EXP 1
6710: PUSH
6711: LD_EXP 2
6715: PUSH
6716: EMPTY
6717: LIST
6718: LIST
6719: DIFF
6720: PPUSH
6721: LD_STRING TeamAlex
6723: PPUSH
6724: CALL_OW 38
// YouWin ;
6728: CALL_OW 103
// end ; end_of_file
6732: END
// every 22 22$0 do
6733: GO 6735
6735: DISABLE
// begin DialogueOn ;
6736: CALL_OW 6
// SayRadio ( Hayes , dc-h-1 ) ;
6740: LD_EXP 5
6744: PPUSH
6745: LD_STRING dc-h-1
6747: PPUSH
6748: CALL_OW 94
// Say ( Alex , dc-a-1 ) ;
6752: LD_EXP 1
6756: PPUSH
6757: LD_STRING dc-a-1
6759: PPUSH
6760: CALL_OW 88
// if IsOK ( Anne ) and not GunConstructed = true then
6764: LD_EXP 2
6768: PPUSH
6769: CALL_OW 302
6773: PUSH
6774: LD_EXP 7
6778: PUSH
6779: LD_INT 1
6781: EQUAL
6782: NOT
6783: AND
6784: IFFALSE 6810
// begin Say ( Anne , dc-n-1 ) ;
6786: LD_EXP 2
6790: PPUSH
6791: LD_STRING dc-n-1
6793: PPUSH
6794: CALL_OW 88
// Say ( Alex , dc-a-2 ) ;
6798: LD_EXP 1
6802: PPUSH
6803: LD_STRING dc-a-2
6805: PPUSH
6806: CALL_OW 88
// end ; DialogueOff ;
6810: CALL_OW 7
// ChangeMissionObjectives ( OCatch ) ;
6814: LD_STRING OCatch
6816: PPUSH
6817: CALL_OW 337
// Wait ( 3 3$0 ) ;
6821: LD_INT 6300
6823: PPUSH
6824: CALL_OW 67
// PlaceArabSupport ( [ 3 , 4 , 5 ] , 0 ) ;
6828: LD_INT 3
6830: PUSH
6831: LD_INT 4
6833: PUSH
6834: LD_INT 5
6836: PUSH
6837: EMPTY
6838: LIST
6839: LIST
6840: LIST
6841: PPUSH
6842: LD_INT 0
6844: PPUSH
6845: CALL 6892 0 2
// Wait ( 2 2$30 ) ;
6849: LD_INT 5250
6851: PPUSH
6852: CALL_OW 67
// PlaceArabSupport ( 0 , [ 2 , 2 , 3 ] [ difficulty ] ) ;
6856: LD_INT 0
6858: PPUSH
6859: LD_INT 2
6861: PUSH
6862: LD_INT 2
6864: PUSH
6865: LD_INT 3
6867: PUSH
6868: EMPTY
6869: LIST
6870: LIST
6871: LIST
6872: PUSH
6873: LD_OWVAR 67
6877: ARRAY
6878: PPUSH
6879: CALL 6892 0 2
// CheckIfSupportIsDead = true ;
6883: LD_ADDR_EXP 31
6887: PUSH
6888: LD_INT 1
6890: ST_TO_ADDR
// end ;
6891: END
// export ArabSupport , CheckIfSupportIsDead ; function PlaceArabSupport ( h , v ) ; var i , j , tmp ; begin
6892: LD_INT 0
6894: PPUSH
6895: PPUSH
6896: PPUSH
6897: PPUSH
// uc_side = 2 ;
6898: LD_ADDR_OWVAR 20
6902: PUSH
6903: LD_INT 2
6905: ST_TO_ADDR
// uc_nation = nation_arabian ;
6906: LD_ADDR_OWVAR 21
6910: PUSH
6911: LD_INT 2
6913: ST_TO_ADDR
// Randomize ;
6914: CALL_OW 10
// InitHc ;
6918: CALL_OW 19
// for i = 1 to h do
6922: LD_ADDR_VAR 0 4
6926: PUSH
6927: DOUBLE
6928: LD_INT 1
6930: DEC
6931: ST_TO_ADDR
6932: LD_VAR 0 1
6936: PUSH
6937: FOR_TO
6938: IFFALSE 7008
// begin PrepareHuman ( false , [ 1 , Rand ( 2 , 4 ) ] [ ( i mod 2 ) + 1 ] , Rand ( 2 , 5 ) ) ;
6940: LD_INT 0
6942: PPUSH
6943: LD_INT 1
6945: PUSH
6946: LD_INT 2
6948: PPUSH
6949: LD_INT 4
6951: PPUSH
6952: CALL_OW 12
6956: PUSH
6957: EMPTY
6958: LIST
6959: LIST
6960: PUSH
6961: LD_VAR 0 4
6965: PUSH
6966: LD_INT 2
6968: MOD
6969: PUSH
6970: LD_INT 1
6972: PLUS
6973: ARRAY
6974: PPUSH
6975: LD_INT 2
6977: PPUSH
6978: LD_INT 5
6980: PPUSH
6981: CALL_OW 12
6985: PPUSH
6986: CALL_OW 380
// tmp = tmp ^ CreateHuman ;
6990: LD_ADDR_VAR 0 6
6994: PUSH
6995: LD_VAR 0 6
6999: PUSH
7000: CALL_OW 44
7004: ADD
7005: ST_TO_ADDR
// end ;
7006: GO 6937
7008: POP
7009: POP
// for i = 1 to v do
7010: LD_ADDR_VAR 0 4
7014: PUSH
7015: DOUBLE
7016: LD_INT 1
7018: DEC
7019: ST_TO_ADDR
7020: LD_VAR 0 2
7024: PUSH
7025: FOR_TO
7026: IFFALSE 7139
// begin vc_chassis = [ ar_medium_trike , ar_half_tracked ] [ Rand ( 1 , 2 ) ] ;
7028: LD_ADDR_OWVAR 37
7032: PUSH
7033: LD_INT 13
7035: PUSH
7036: LD_INT 14
7038: PUSH
7039: EMPTY
7040: LIST
7041: LIST
7042: PUSH
7043: LD_INT 1
7045: PPUSH
7046: LD_INT 2
7048: PPUSH
7049: CALL_OW 12
7053: ARRAY
7054: ST_TO_ADDR
// vc_control = control_manual ;
7055: LD_ADDR_OWVAR 38
7059: PUSH
7060: LD_INT 1
7062: ST_TO_ADDR
// vc_engine = [ engine_solar , engine_combustion ] [ Rand ( 1 , 2 ) ] ;
7063: LD_ADDR_OWVAR 39
7067: PUSH
7068: LD_INT 2
7070: PUSH
7071: LD_INT 1
7073: PUSH
7074: EMPTY
7075: LIST
7076: LIST
7077: PUSH
7078: LD_INT 1
7080: PPUSH
7081: LD_INT 2
7083: PPUSH
7084: CALL_OW 12
7088: ARRAY
7089: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower , ar_gun ] [ Rand ( 1 , 3 ) ] ;
7090: LD_ADDR_OWVAR 40
7094: PUSH
7095: LD_INT 25
7097: PUSH
7098: LD_INT 26
7100: PUSH
7101: LD_INT 27
7103: PUSH
7104: EMPTY
7105: LIST
7106: LIST
7107: LIST
7108: PUSH
7109: LD_INT 1
7111: PPUSH
7112: LD_INT 3
7114: PPUSH
7115: CALL_OW 12
7119: ARRAY
7120: ST_TO_ADDR
// tmp = tmp ^ CreateVehicle ;
7121: LD_ADDR_VAR 0 6
7125: PUSH
7126: LD_VAR 0 6
7130: PUSH
7131: CALL_OW 45
7135: ADD
7136: ST_TO_ADDR
// end ;
7137: GO 7025
7139: POP
7140: POP
// for i in tmp do
7141: LD_ADDR_VAR 0 4
7145: PUSH
7146: LD_VAR 0 6
7150: PUSH
7151: FOR_IN
7152: IFFALSE 7334
// begin PlaceUnitArea ( i , SupportArea , false ) ;
7154: LD_VAR 0 4
7158: PPUSH
7159: LD_INT 8
7161: PPUSH
7162: LD_INT 0
7164: PPUSH
7165: CALL_OW 49
// SetLives ( i , Rand ( 450 , 1000 ) ) ;
7169: LD_VAR 0 4
7173: PPUSH
7174: LD_INT 450
7176: PPUSH
7177: LD_INT 1000
7179: PPUSH
7180: CALL_OW 12
7184: PPUSH
7185: CALL_OW 234
// if GetType ( i ) = unit_vehicle then
7189: LD_VAR 0 4
7193: PPUSH
7194: CALL_OW 247
7198: PUSH
7199: LD_INT 2
7201: EQUAL
7202: IFFALSE 7236
// begin PrepareMechanic ( false , Rand ( 3 , 4 ) ) ;
7204: LD_INT 0
7206: PPUSH
7207: LD_INT 3
7209: PPUSH
7210: LD_INT 4
7212: PPUSH
7213: CALL_OW 12
7217: PPUSH
7218: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
7222: CALL_OW 44
7226: PPUSH
7227: LD_VAR 0 4
7231: PPUSH
7232: CALL_OW 52
// end ; for j in [ [ 140 , 94 ] , [ 109 , 62 ] , [ 84 , 40 ] , [ 61 , 27 ] , [ 43 , 30 ] ] do
7236: LD_ADDR_VAR 0 5
7240: PUSH
7241: LD_INT 140
7243: PUSH
7244: LD_INT 94
7246: PUSH
7247: EMPTY
7248: LIST
7249: LIST
7250: PUSH
7251: LD_INT 109
7253: PUSH
7254: LD_INT 62
7256: PUSH
7257: EMPTY
7258: LIST
7259: LIST
7260: PUSH
7261: LD_INT 84
7263: PUSH
7264: LD_INT 40
7266: PUSH
7267: EMPTY
7268: LIST
7269: LIST
7270: PUSH
7271: LD_INT 61
7273: PUSH
7274: LD_INT 27
7276: PUSH
7277: EMPTY
7278: LIST
7279: LIST
7280: PUSH
7281: LD_INT 43
7283: PUSH
7284: LD_INT 30
7286: PUSH
7287: EMPTY
7288: LIST
7289: LIST
7290: PUSH
7291: EMPTY
7292: LIST
7293: LIST
7294: LIST
7295: LIST
7296: LIST
7297: PUSH
7298: FOR_IN
7299: IFFALSE 7330
// AddComAgressiveMove ( i , j [ 1 ] , j [ 2 ] ) ;
7301: LD_VAR 0 4
7305: PPUSH
7306: LD_VAR 0 5
7310: PUSH
7311: LD_INT 1
7313: ARRAY
7314: PPUSH
7315: LD_VAR 0 5
7319: PUSH
7320: LD_INT 2
7322: ARRAY
7323: PPUSH
7324: CALL_OW 174
7328: GO 7298
7330: POP
7331: POP
// end ;
7332: GO 7151
7334: POP
7335: POP
// ArabSupport = ArabSupport ^ tmp ;
7336: LD_ADDR_EXP 30
7340: PUSH
7341: LD_EXP 30
7345: PUSH
7346: LD_VAR 0 6
7350: ADD
7351: ST_TO_ADDR
// end ;
7352: LD_VAR 0 3
7356: RET
// every 0 0$1 trigger CheckIfSupportIsDead and UnitFilter ( ArabSupport , [ f_ok ] ) = 0 do
7357: LD_EXP 31
7361: PUSH
7362: LD_EXP 30
7366: PPUSH
7367: LD_INT 50
7369: PUSH
7370: EMPTY
7371: LIST
7372: PPUSH
7373: CALL_OW 72
7377: PUSH
7378: LD_INT 0
7380: EQUAL
7381: AND
7382: IFFALSE 7394
7384: GO 7386
7386: DISABLE
// ChangeMissionObjectives ( OCatchOut ) ;
7387: LD_STRING OCatchOut
7389: PPUSH
7390: CALL_OW 337
7394: END
// every 0 0$1 trigger ArabSupport do var i ;
7395: LD_EXP 30
7399: IFFALSE 7516
7401: GO 7403
7403: DISABLE
7404: LD_INT 0
7406: PPUSH
// begin enable ;
7407: ENABLE
// for i in ArabSupport do
7408: LD_ADDR_VAR 0 1
7412: PUSH
7413: LD_EXP 30
7417: PUSH
7418: FOR_IN
7419: IFFALSE 7514
// if IsInArea ( i , AlQudsArea ) then
7421: LD_VAR 0 1
7425: PPUSH
7426: LD_INT 4
7428: PPUSH
7429: CALL_OW 308
7433: IFFALSE 7512
// begin CheckIfSupportIsDead = false ;
7435: LD_ADDR_EXP 31
7439: PUSH
7440: LD_INT 0
7442: ST_TO_ADDR
// ArabSupport = ArabSupport diff i ;
7443: LD_ADDR_EXP 30
7447: PUSH
7448: LD_EXP 30
7452: PUSH
7453: LD_VAR 0 1
7457: DIFF
7458: ST_TO_ADDR
// if GetType ( i ) = unit_human then
7459: LD_VAR 0 1
7463: PPUSH
7464: CALL_OW 247
7468: PUSH
7469: LD_INT 1
7471: EQUAL
7472: IFFALSE 7512
// ComEnterUnit ( i , [ qa , qd , qf , ql ] [ GetClass ( i ) ] ) ;
7474: LD_VAR 0 1
7478: PPUSH
7479: LD_INT 14
7481: PUSH
7482: LD_INT 3
7484: PUSH
7485: LD_INT 6
7487: PUSH
7488: LD_INT 5
7490: PUSH
7491: EMPTY
7492: LIST
7493: LIST
7494: LIST
7495: LIST
7496: PUSH
7497: LD_VAR 0 1
7501: PPUSH
7502: CALL_OW 257
7506: ARRAY
7507: PPUSH
7508: CALL_OW 120
// end ;
7512: GO 7418
7514: POP
7515: POP
// end ; end_of_file
7516: PPOPN 1
7518: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
7519: LD_INT 0
7521: PPUSH
7522: PPUSH
7523: PPUSH
7524: PPUSH
// InitHc ;
7525: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
7529: LD_ADDR_VAR 0 9
7533: PUSH
7534: LD_VAR 0 2
7538: PPUSH
7539: LD_INT 22
7541: PUSH
7542: LD_VAR 0 1
7546: PUSH
7547: EMPTY
7548: LIST
7549: LIST
7550: PUSH
7551: LD_INT 21
7553: PUSH
7554: LD_INT 3
7556: PUSH
7557: EMPTY
7558: LIST
7559: LIST
7560: PUSH
7561: EMPTY
7562: LIST
7563: LIST
7564: PPUSH
7565: CALL_OW 70
7569: PUSH
7570: FOR_IN
7571: IFFALSE 8058
// case GetBType ( i ) of b_depot , b_warehouse :
7573: LD_VAR 0 9
7577: PPUSH
7578: CALL_OW 266
7582: PUSH
7583: LD_INT 0
7585: DOUBLE
7586: EQUAL
7587: IFTRUE 7597
7589: LD_INT 1
7591: DOUBLE
7592: EQUAL
7593: IFTRUE 7597
7595: GO 7739
7597: POP
// for j = 1 to engineers do
7598: LD_ADDR_VAR 0 10
7602: PUSH
7603: DOUBLE
7604: LD_INT 1
7606: DEC
7607: ST_TO_ADDR
7608: LD_VAR 0 7
7612: PUSH
7613: FOR_TO
7614: IFFALSE 7735
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
7616: LD_INT 1
7618: PPUSH
7619: LD_INT 2
7621: PPUSH
7622: CALL_OW 12
7626: PPUSH
7627: LD_VAR 0 3
7631: PPUSH
7632: CALL_OW 382
// h = CreateHuman ;
7636: LD_ADDR_VAR 0 11
7640: PUSH
7641: CALL_OW 44
7645: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
7646: LD_VAR 0 11
7650: PPUSH
7651: LD_VAR 0 9
7655: PPUSH
7656: CALL_OW 250
7660: PPUSH
7661: LD_VAR 0 9
7665: PPUSH
7666: CALL_OW 254
7670: PPUSH
7671: LD_INT 4
7673: PPUSH
7674: LD_INT 10
7676: PPUSH
7677: CALL_OW 12
7681: PPUSH
7682: CALL_OW 272
7686: PPUSH
7687: LD_VAR 0 9
7691: PPUSH
7692: CALL_OW 251
7696: PPUSH
7697: LD_VAR 0 9
7701: PPUSH
7702: CALL_OW 254
7706: PPUSH
7707: LD_INT 4
7709: PPUSH
7710: LD_INT 10
7712: PPUSH
7713: CALL_OW 12
7717: PPUSH
7718: CALL_OW 273
7722: PPUSH
7723: LD_INT 8
7725: PPUSH
7726: LD_INT 0
7728: PPUSH
7729: CALL_OW 50
// end ; b_armoury , b_barracks :
7733: GO 7613
7735: POP
7736: POP
7737: GO 8056
7739: LD_INT 4
7741: DOUBLE
7742: EQUAL
7743: IFTRUE 7753
7745: LD_INT 5
7747: DOUBLE
7748: EQUAL
7749: IFTRUE 7753
7751: GO 7822
7753: POP
// for j = 1 to armoury do
7754: LD_ADDR_VAR 0 10
7758: PUSH
7759: DOUBLE
7760: LD_INT 1
7762: DEC
7763: ST_TO_ADDR
7764: LD_VAR 0 6
7768: PUSH
7769: FOR_TO
7770: IFFALSE 7818
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
7772: LD_INT 1
7774: PPUSH
7775: LD_INT 2
7777: PPUSH
7778: CALL_OW 12
7782: PPUSH
7783: LD_VAR 0 3
7787: PPUSH
7788: CALL_OW 381
// h = CreateHuman ;
7792: LD_ADDR_VAR 0 11
7796: PUSH
7797: CALL_OW 44
7801: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
7802: LD_VAR 0 11
7806: PPUSH
7807: LD_VAR 0 9
7811: PPUSH
7812: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
7816: GO 7769
7818: POP
7819: POP
7820: GO 8056
7822: LD_INT 9
7824: DOUBLE
7825: EQUAL
7826: IFTRUE 7842
7828: LD_INT 7
7830: DOUBLE
7831: EQUAL
7832: IFTRUE 7842
7834: LD_INT 8
7836: DOUBLE
7837: EQUAL
7838: IFTRUE 7842
7840: GO 7911
7842: POP
// for j = 1 to lab do
7843: LD_ADDR_VAR 0 10
7847: PUSH
7848: DOUBLE
7849: LD_INT 1
7851: DEC
7852: ST_TO_ADDR
7853: LD_VAR 0 5
7857: PUSH
7858: FOR_TO
7859: IFFALSE 7907
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
7861: LD_INT 1
7863: PPUSH
7864: LD_INT 2
7866: PPUSH
7867: CALL_OW 12
7871: PPUSH
7872: LD_VAR 0 3
7876: PPUSH
7877: CALL_OW 384
// h = CreateHuman ;
7881: LD_ADDR_VAR 0 11
7885: PUSH
7886: CALL_OW 44
7890: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
7891: LD_VAR 0 11
7895: PPUSH
7896: LD_VAR 0 9
7900: PPUSH
7901: CALL_OW 52
// end ; b_workshop , b_factory :
7905: GO 7858
7907: POP
7908: POP
7909: GO 8056
7911: LD_INT 2
7913: DOUBLE
7914: EQUAL
7915: IFTRUE 7925
7917: LD_INT 3
7919: DOUBLE
7920: EQUAL
7921: IFTRUE 7925
7923: GO 7994
7925: POP
// for j = 1 to workshop do
7926: LD_ADDR_VAR 0 10
7930: PUSH
7931: DOUBLE
7932: LD_INT 1
7934: DEC
7935: ST_TO_ADDR
7936: LD_VAR 0 4
7940: PUSH
7941: FOR_TO
7942: IFFALSE 7990
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
7944: LD_INT 1
7946: PPUSH
7947: LD_INT 2
7949: PPUSH
7950: CALL_OW 12
7954: PPUSH
7955: LD_VAR 0 3
7959: PPUSH
7960: CALL_OW 383
// h = CreateHuman ;
7964: LD_ADDR_VAR 0 11
7968: PUSH
7969: CALL_OW 44
7973: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
7974: LD_VAR 0 11
7978: PPUSH
7979: LD_VAR 0 9
7983: PPUSH
7984: CALL_OW 52
// end ; b_breastwork , b_bunker :
7988: GO 7941
7990: POP
7991: POP
7992: GO 8056
7994: LD_INT 31
7996: DOUBLE
7997: EQUAL
7998: IFTRUE 8008
8000: LD_INT 32
8002: DOUBLE
8003: EQUAL
8004: IFTRUE 8008
8006: GO 8055
8008: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
8009: LD_INT 1
8011: PPUSH
8012: LD_INT 2
8014: PPUSH
8015: CALL_OW 12
8019: PPUSH
8020: LD_VAR 0 3
8024: PPUSH
8025: CALL_OW 381
// h = CreateHuman ;
8029: LD_ADDR_VAR 0 11
8033: PUSH
8034: CALL_OW 44
8038: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
8039: LD_VAR 0 11
8043: PPUSH
8044: LD_VAR 0 9
8048: PPUSH
8049: CALL_OW 52
// end ; end ;
8053: GO 8056
8055: POP
8056: GO 7570
8058: POP
8059: POP
// end ;
8060: LD_VAR 0 8
8064: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
8065: LD_INT 0
8067: PPUSH
8068: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
8069: LD_ADDR_VAR 0 4
8073: PUSH
8074: LD_INT 22
8076: PUSH
8077: LD_VAR 0 1
8081: PUSH
8082: EMPTY
8083: LIST
8084: LIST
8085: PUSH
8086: LD_INT 3
8088: PUSH
8089: LD_INT 23
8091: PUSH
8092: LD_INT 0
8094: PUSH
8095: EMPTY
8096: LIST
8097: LIST
8098: PUSH
8099: EMPTY
8100: LIST
8101: LIST
8102: PUSH
8103: EMPTY
8104: LIST
8105: LIST
8106: PPUSH
8107: CALL_OW 69
8111: PPUSH
8112: LD_VAR 0 2
8116: PUSH
8117: LD_INT 1
8119: ARRAY
8120: PPUSH
8121: CALL_OW 74
8125: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
8126: LD_VAR 0 4
8130: PPUSH
8131: CALL_OW 247
8135: PUSH
8136: LD_INT 2
8138: EQUAL
8139: IFFALSE 8203
// if GetControl ( i ) = control_manual then
8141: LD_VAR 0 4
8145: PPUSH
8146: CALL_OW 263
8150: PUSH
8151: LD_INT 1
8153: EQUAL
8154: IFFALSE 8173
// i = IsDrivenBy ( i ) else
8156: LD_ADDR_VAR 0 4
8160: PUSH
8161: LD_VAR 0 4
8165: PPUSH
8166: CALL_OW 311
8170: ST_TO_ADDR
8171: GO 8203
// if GetControl ( i ) = control_remote then
8173: LD_VAR 0 4
8177: PPUSH
8178: CALL_OW 263
8182: PUSH
8183: LD_INT 2
8185: EQUAL
8186: IFFALSE 8203
// i = IsControledBy ( i ) ;
8188: LD_ADDR_VAR 0 4
8192: PUSH
8193: LD_VAR 0 4
8197: PPUSH
8198: CALL_OW 312
8202: ST_TO_ADDR
// if GetType ( i ) = unit_building then
8203: LD_VAR 0 4
8207: PPUSH
8208: CALL_OW 247
8212: PUSH
8213: LD_INT 3
8215: EQUAL
8216: IFFALSE 8259
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
8218: LD_ADDR_VAR 0 4
8222: PUSH
8223: LD_VAR 0 4
8227: PPUSH
8228: CALL_OW 313
8232: PPUSH
8233: LD_INT 3
8235: PUSH
8236: LD_INT 23
8238: PUSH
8239: LD_INT 0
8241: PUSH
8242: EMPTY
8243: LIST
8244: LIST
8245: PUSH
8246: EMPTY
8247: LIST
8248: LIST
8249: PPUSH
8250: CALL_OW 72
8254: PUSH
8255: LD_INT 1
8257: ARRAY
8258: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
8259: LD_VAR 0 4
8263: PPUSH
8264: CALL_OW 247
8268: PUSH
8269: LD_INT 1
8271: EQUAL
8272: NOT
8273: IFFALSE 8333
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
8275: LD_ADDR_VAR 0 4
8279: PUSH
8280: LD_INT 22
8282: PUSH
8283: LD_VAR 0 1
8287: PUSH
8288: EMPTY
8289: LIST
8290: LIST
8291: PUSH
8292: LD_INT 21
8294: PUSH
8295: LD_INT 1
8297: PUSH
8298: EMPTY
8299: LIST
8300: LIST
8301: PUSH
8302: LD_INT 3
8304: PUSH
8305: LD_INT 23
8307: PUSH
8308: LD_INT 0
8310: PUSH
8311: EMPTY
8312: LIST
8313: LIST
8314: PUSH
8315: EMPTY
8316: LIST
8317: LIST
8318: PUSH
8319: EMPTY
8320: LIST
8321: LIST
8322: LIST
8323: PPUSH
8324: CALL_OW 69
8328: PUSH
8329: LD_INT 1
8331: ARRAY
8332: ST_TO_ADDR
// result = i ;
8333: LD_ADDR_VAR 0 3
8337: PUSH
8338: LD_VAR 0 4
8342: ST_TO_ADDR
// end ;
8343: LD_VAR 0 3
8347: RET
