// export Bojan , Gom , Steve ; export function PrepareOurs ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// uc_side = 2 ;
   4: LD_ADDR_OWVAR 20
   8: PUSH
   9: LD_INT 2
  11: ST_TO_ADDR
// uc_nation = nation_arabian ;
  12: LD_ADDR_OWVAR 21
  16: PUSH
  17: LD_INT 2
  19: ST_TO_ADDR
// InitHc ;
  20: CALL_OW 19
// Gom = NewCharacter ( Gom ) ;
  24: LD_ADDR_EXP 2
  28: PUSH
  29: LD_STRING Gom
  31: PPUSH
  32: CALL_OW 25
  36: ST_TO_ADDR
// PlaceUnitXY ( Gom , 25 , 19 , false ) ;
  37: LD_EXP 2
  41: PPUSH
  42: LD_INT 25
  44: PPUSH
  45: LD_INT 19
  47: PPUSH
  48: LD_INT 0
  50: PPUSH
  51: CALL_OW 48
// for i = 1 to [ 5 , 4 , 4 ] [ difficulty ] do
  55: LD_ADDR_VAR 0 2
  59: PUSH
  60: DOUBLE
  61: LD_INT 1
  63: DEC
  64: ST_TO_ADDR
  65: LD_INT 5
  67: PUSH
  68: LD_INT 4
  70: PUSH
  71: LD_INT 4
  73: PUSH
  74: EMPTY
  75: LIST
  76: LIST
  77: LIST
  78: PUSH
  79: LD_OWVAR 67
  83: ARRAY
  84: PUSH
  85: FOR_TO
  86: IFFALSE 166
// begin PrepareHuman ( false , [ 4 , 4 , 3 , 1 , 2 ] [ i ] , [ 4 , 3 , 3 ] [ difficulty ] ) ;
  88: LD_INT 0
  90: PPUSH
  91: LD_INT 4
  93: PUSH
  94: LD_INT 4
  96: PUSH
  97: LD_INT 3
  99: PUSH
 100: LD_INT 1
 102: PUSH
 103: LD_INT 2
 105: PUSH
 106: EMPTY
 107: LIST
 108: LIST
 109: LIST
 110: LIST
 111: LIST
 112: PUSH
 113: LD_VAR 0 2
 117: ARRAY
 118: PPUSH
 119: LD_INT 4
 121: PUSH
 122: LD_INT 3
 124: PUSH
 125: LD_INT 3
 127: PUSH
 128: EMPTY
 129: LIST
 130: LIST
 131: LIST
 132: PUSH
 133: LD_OWVAR 67
 137: ARRAY
 138: PPUSH
 139: CALL_OW 380
// PlaceUnitXYR ( CreateHuman , 30 , 17 , 5 , false ) ;
 143: CALL_OW 44
 147: PPUSH
 148: LD_INT 30
 150: PPUSH
 151: LD_INT 17
 153: PPUSH
 154: LD_INT 5
 156: PPUSH
 157: LD_INT 0
 159: PPUSH
 160: CALL_OW 50
// end ;
 164: GO 85
 166: POP
 167: POP
// uc_side = 5 ;
 168: LD_ADDR_OWVAR 20
 172: PUSH
 173: LD_INT 5
 175: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
 176: LD_ADDR_EXP 1
 180: PUSH
 181: LD_STRING Bojan
 183: PPUSH
 184: CALL_OW 25
 188: ST_TO_ADDR
// end ;
 189: LD_VAR 0 1
 193: RET
// starting begin RandomizeAll ;
 194: CALL_OW 11
// difficulty = GetMultiplayerSetting ( 0 ) + 1 ;
 198: LD_ADDR_OWVAR 67
 202: PUSH
 203: LD_INT 0
 205: PPUSH
 206: CALL_OW 426
 210: PUSH
 211: LD_INT 1
 213: PLUS
 214: ST_TO_ADDR
// RevealFogArea ( 2 , RevealArea ) ;
 215: LD_INT 2
 217: PPUSH
 218: LD_INT 6
 220: PPUSH
 221: CALL_OW 332
// SetBName ( ad , atlas ) ;
 225: LD_INT 45
 227: PPUSH
 228: LD_STRING atlas
 230: PPUSH
 231: CALL_OW 500
// PrepareOurs ;
 235: CALL 0 0 0
// PrepareAmericans ;
 239: CALL 986 0 0
// DIntro ;
 243: CALL 248 0 0
// end ; end_of_file
 247: END
// export SupportUnit , CountPoints ; export function DIntro ; begin
 248: LD_INT 0
 250: PPUSH
// InGameOn ;
 251: CALL_OW 8
// CenterNowOnUnits ( Gom ) ;
 255: LD_EXP 2
 259: PPUSH
 260: CALL_OW 87
// SayRadio ( Bojan , di-b-1 ) ;
 264: LD_EXP 1
 268: PPUSH
 269: LD_STRING di-b-1
 271: PPUSH
 272: CALL_OW 94
// Say ( Gom , di-l-1 ) ;
 276: LD_EXP 2
 280: PPUSH
 281: LD_STRING di-l-1
 283: PPUSH
 284: CALL_OW 88
// SayRadio ( Bojan , di-b-2 ) ;
 288: LD_EXP 1
 292: PPUSH
 293: LD_STRING di-b-2
 295: PPUSH
 296: CALL_OW 94
// Say ( Gom , di-l-2 ) ;
 300: LD_EXP 2
 304: PPUSH
 305: LD_STRING di-l-2
 307: PPUSH
 308: CALL_OW 88
// SayRadio ( Bojan , di-b-3 ) ;
 312: LD_EXP 1
 316: PPUSH
 317: LD_STRING di-b-3
 319: PPUSH
 320: CALL_OW 94
// Say ( Gom , di-l-3 ) ;
 324: LD_EXP 2
 328: PPUSH
 329: LD_STRING di-l-3
 331: PPUSH
 332: CALL_OW 88
// InGameOff ;
 336: CALL_OW 9
// ChangeMissionObjectives ( OHold ) ;
 340: LD_STRING OHold
 342: PPUSH
 343: CALL_OW 337
// end ;
 347: LD_VAR 0 1
 351: RET
// export function DAmericans ; begin
 352: LD_INT 0
 354: PPUSH
// DialogueOn ;
 355: CALL_OW 6
// SayRadio ( Steve , ds-s-1 ) ;
 359: LD_EXP 3
 363: PPUSH
 364: LD_STRING ds-s-1
 366: PPUSH
 367: CALL_OW 94
// Say ( Gom , ds-l-1 ) ;
 371: LD_EXP 2
 375: PPUSH
 376: LD_STRING ds-l-1
 378: PPUSH
 379: CALL_OW 88
// SayRadio ( Steve , ds-s-2 ) ;
 383: LD_EXP 3
 387: PPUSH
 388: LD_STRING ds-s-2
 390: PPUSH
 391: CALL_OW 94
// DialogueOff ;
 395: CALL_OW 7
// end ;
 399: LD_VAR 0 1
 403: RET
// export function DHelp ; var i ; begin
 404: LD_INT 0
 406: PPUSH
 407: PPUSH
// DialogueOn ;
 408: CALL_OW 6
// if IsInUnit ( Gom ) then
 412: LD_EXP 2
 416: PPUSH
 417: CALL_OW 310
 421: IFFALSE 439
// CenterOnUnits ( IsInUnit ( Gom ) ) else
 423: LD_EXP 2
 427: PPUSH
 428: CALL_OW 310
 432: PPUSH
 433: CALL_OW 85
 437: GO 448
// CenterOnUnits ( Gom ) ;
 439: LD_EXP 2
 443: PPUSH
 444: CALL_OW 85
// Say ( Gom , dh-l-1 ) ;
 448: LD_EXP 2
 452: PPUSH
 453: LD_STRING dh-l-1
 455: PPUSH
 456: CALL_OW 88
// SayRadio ( Bojan , dh-b-1 ) ;
 460: LD_EXP 1
 464: PPUSH
 465: LD_STRING dh-b-1
 467: PPUSH
 468: CALL_OW 94
// SupportUnit = [ ] ;
 472: LD_ADDR_EXP 4
 476: PUSH
 477: EMPTY
 478: ST_TO_ADDR
// uc_side = 5 ;
 479: LD_ADDR_OWVAR 20
 483: PUSH
 484: LD_INT 5
 486: ST_TO_ADDR
// uc_nation = nation_arabian ;
 487: LD_ADDR_OWVAR 21
 491: PUSH
 492: LD_INT 2
 494: ST_TO_ADDR
// for i = 1 to 2 do
 495: LD_ADDR_VAR 0 2
 499: PUSH
 500: DOUBLE
 501: LD_INT 1
 503: DEC
 504: ST_TO_ADDR
 505: LD_INT 2
 507: PUSH
 508: FOR_TO
 509: IFFALSE 556
// begin PrepareSoldier ( false , [ 4 , 3 , 2 ] [ difficulty ] ) ;
 511: LD_INT 0
 513: PPUSH
 514: LD_INT 4
 516: PUSH
 517: LD_INT 3
 519: PUSH
 520: LD_INT 2
 522: PUSH
 523: EMPTY
 524: LIST
 525: LIST
 526: LIST
 527: PUSH
 528: LD_OWVAR 67
 532: ARRAY
 533: PPUSH
 534: CALL_OW 381
// SupportUnit = SupportUnit ^ CreateHuman ;
 538: LD_ADDR_EXP 4
 542: PUSH
 543: LD_EXP 4
 547: PUSH
 548: CALL_OW 44
 552: ADD
 553: ST_TO_ADDR
// end ;
 554: GO 508
 556: POP
 557: POP
// for i in SupportUnit do
 558: LD_ADDR_VAR 0 2
 562: PUSH
 563: LD_EXP 4
 567: PUSH
 568: FOR_IN
 569: IFFALSE 594
// PlaceUnitXYR ( i , 160 , 150 , 2 , false ) ;
 571: LD_VAR 0 2
 575: PPUSH
 576: LD_INT 160
 578: PPUSH
 579: LD_INT 150
 581: PPUSH
 582: LD_INT 2
 584: PPUSH
 585: LD_INT 0
 587: PPUSH
 588: CALL_OW 50
 592: GO 568
 594: POP
 595: POP
// SayRadio ( SupportUnit [ 1 ] , dh-s-1 ) ;
 596: LD_EXP 4
 600: PUSH
 601: LD_INT 1
 603: ARRAY
 604: PPUSH
 605: LD_STRING dh-s-1
 607: PPUSH
 608: CALL_OW 94
// Say ( Gom , dh-l-2 ) ;
 612: LD_EXP 2
 616: PPUSH
 617: LD_STRING dh-l-2
 619: PPUSH
 620: CALL_OW 88
// SayRadio ( SupportUnit [ 1 ] , dh-s-2 ) ;
 624: LD_EXP 4
 628: PUSH
 629: LD_INT 1
 631: ARRAY
 632: PPUSH
 633: LD_STRING dh-s-2
 635: PPUSH
 636: CALL_OW 94
// SayRadio ( Bojan , dh-b-2 ) ;
 640: LD_EXP 1
 644: PPUSH
 645: LD_STRING dh-b-2
 647: PPUSH
 648: CALL_OW 94
// Say ( Gom , dh-l-3 ) ;
 652: LD_EXP 2
 656: PPUSH
 657: LD_STRING dh-l-3
 659: PPUSH
 660: CALL_OW 88
// DialogueOff ;
 664: CALL_OW 7
// ChangeMissionObjectives ( OSave ) ;
 668: LD_STRING OSave
 670: PPUSH
 671: CALL_OW 337
// end ;
 675: LD_VAR 0 1
 679: RET
// every 0 0$1 trigger tick = 8 8$0 do
 680: LD_OWVAR 1
 684: PUSH
 685: LD_INT 16800
 687: EQUAL
 688: IFFALSE 697
 690: GO 692
 692: DISABLE
// DHelp ;
 693: CALL 404 0 0
 697: END
// every 0 0$1 trigger UnitFilter ( SupportUnit , [ f_see , 2 ] ) do
 698: LD_EXP 4
 702: PPUSH
 703: LD_INT 101
 705: PUSH
 706: LD_INT 2
 708: PUSH
 709: EMPTY
 710: LIST
 711: LIST
 712: PPUSH
 713: CALL_OW 72
 717: IFFALSE 741
 719: GO 721
 721: DISABLE
// begin SetSide ( SupportUnit , 2 ) ;
 722: LD_EXP 4
 726: PPUSH
 727: LD_INT 2
 729: PPUSH
 730: CALL_OW 235
// ChangeMissionObjectives ( OSaveOut ) ;
 734: LD_STRING OSaveOut
 736: PPUSH
 737: CALL_OW 337
// end ;
 741: END
// export function DWithdraw ; var s ; begin
 742: LD_INT 0
 744: PPUSH
 745: PPUSH
// s = FindMaxSkill ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] ] ) diff Gom , skill_mechanical ) ;
 746: LD_ADDR_VAR 0 2
 750: PUSH
 751: LD_INT 22
 753: PUSH
 754: LD_INT 2
 756: PUSH
 757: EMPTY
 758: LIST
 759: LIST
 760: PUSH
 761: LD_INT 21
 763: PUSH
 764: LD_INT 1
 766: PUSH
 767: EMPTY
 768: LIST
 769: LIST
 770: PUSH
 771: LD_INT 23
 773: PUSH
 774: LD_INT 2
 776: PUSH
 777: EMPTY
 778: LIST
 779: LIST
 780: PUSH
 781: EMPTY
 782: LIST
 783: LIST
 784: LIST
 785: PPUSH
 786: CALL_OW 69
 790: PUSH
 791: LD_EXP 2
 795: DIFF
 796: PPUSH
 797: LD_INT 3
 799: PPUSH
 800: CALL_OW 433
 804: ST_TO_ADDR
// DialogueOn ;
 805: CALL_OW 6
// Say ( s , dw-s-1 ) ;
 809: LD_VAR 0 2
 813: PPUSH
 814: LD_STRING dw-s-1
 816: PPUSH
 817: CALL_OW 88
// Say ( Gom , dw-l-1 ) ;
 821: LD_EXP 2
 825: PPUSH
 826: LD_STRING dw-l-1
 828: PPUSH
 829: CALL_OW 88
// Say ( s , dw-s-2 ) ;
 833: LD_VAR 0 2
 837: PPUSH
 838: LD_STRING dw-s-2
 840: PPUSH
 841: CALL_OW 88
// Say ( Gom , dw-l-2 ) ;
 845: LD_EXP 2
 849: PPUSH
 850: LD_STRING dw-l-2
 852: PPUSH
 853: CALL_OW 88
// DialogueOff ;
 857: CALL_OW 7
// Query ( QYouDecide ) ;
 861: LD_STRING QYouDecide
 863: PPUSH
 864: CALL_OW 97
// CountPoints = true ;
 868: LD_ADDR_EXP 5
 872: PUSH
 873: LD_INT 1
 875: ST_TO_ADDR
// end_the_mission_allowed = true ;
 876: LD_ADDR_OWVAR 57
 880: PUSH
 881: LD_INT 1
 883: ST_TO_ADDR
// ComExitBuilding ( s ) ;
 884: LD_VAR 0 2
 888: PPUSH
 889: CALL_OW 122
// ComExitVehicle ( s ) ;
 893: LD_VAR 0 2
 897: PPUSH
 898: CALL_OW 121
// Wait ( 1 ) ;
 902: LD_INT 1
 904: PPUSH
 905: CALL_OW 67
// SetSide ( s , 5 ) ;
 909: LD_VAR 0 2
 913: PPUSH
 914: LD_INT 5
 916: PPUSH
 917: CALL_OW 235
// ComMoveToArea ( s , ExitArea ) ;
 921: LD_VAR 0 2
 925: PPUSH
 926: LD_INT 1
 928: PPUSH
 929: CALL_OW 113
// repeat Wait ( 0 0$1 ) until IsInArea ( s , ExitArea ) ;
 933: LD_INT 35
 935: PPUSH
 936: CALL_OW 67
 940: LD_VAR 0 2
 944: PPUSH
 945: LD_INT 1
 947: PPUSH
 948: CALL_OW 308
 952: IFFALSE 933
// RemoveUnit ( s ) ;
 954: LD_VAR 0 2
 958: PPUSH
 959: CALL_OW 64
// end ;
 963: LD_VAR 0 1
 967: RET
// every 0 0$1 trigger tick = 15 15$0 do
 968: LD_OWVAR 1
 972: PUSH
 973: LD_INT 31500
 975: EQUAL
 976: IFFALSE 985
 978: GO 980
 980: DISABLE
// DWithdraw ; end_of_file
 981: CALL 742 0 0
 985: END
// export AEngineer , ADefences , ARepairStrategy ; export function PrepareAmericans ; var i ; begin
 986: LD_INT 0
 988: PPUSH
 989: PPUSH
// uc_side = 1 ;
 990: LD_ADDR_OWVAR 20
 994: PUSH
 995: LD_INT 1
 997: ST_TO_ADDR
// uc_nation = 1 ;
 998: LD_ADDR_OWVAR 21
1002: PUSH
1003: LD_INT 1
1005: ST_TO_ADDR
// Steve = NewCharacter ( Steve ) ;
1006: LD_ADDR_EXP 3
1010: PUSH
1011: LD_STRING Steve
1013: PPUSH
1014: CALL_OW 25
1018: ST_TO_ADDR
// PrepareBase ( 1 , AmericanBaseArea , [ Rand ( 2 , 4 ) , Rand ( 3 , 5 ) , Rand ( 3 , 5 ) ] [ difficulty ] , 0 , 0 , 2 , 2 ) ;
1019: LD_INT 1
1021: PPUSH
1022: LD_INT 5
1024: PPUSH
1025: LD_INT 2
1027: PPUSH
1028: LD_INT 4
1030: PPUSH
1031: CALL_OW 12
1035: PUSH
1036: LD_INT 3
1038: PPUSH
1039: LD_INT 5
1041: PPUSH
1042: CALL_OW 12
1046: PUSH
1047: LD_INT 3
1049: PPUSH
1050: LD_INT 5
1052: PPUSH
1053: CALL_OW 12
1057: PUSH
1058: EMPTY
1059: LIST
1060: LIST
1061: LIST
1062: PUSH
1063: LD_OWVAR 67
1067: ARRAY
1068: PPUSH
1069: LD_INT 0
1071: PPUSH
1072: LD_INT 0
1074: PPUSH
1075: LD_INT 2
1077: PPUSH
1078: LD_INT 2
1080: PPUSH
1081: CALL 4096 0 7
// for i in FilterUnitsInArea ( AmericanBaseArea , [ f_type , unit_vehicle ] ) do
1085: LD_ADDR_VAR 0 2
1089: PUSH
1090: LD_INT 5
1092: PPUSH
1093: LD_INT 21
1095: PUSH
1096: LD_INT 2
1098: PUSH
1099: EMPTY
1100: LIST
1101: LIST
1102: PPUSH
1103: CALL_OW 70
1107: PUSH
1108: FOR_IN
1109: IFFALSE 1158
// begin InitHc ;
1111: CALL_OW 19
// PrepareMechanic ( false , [ 3 , 4 , 5 ] [ difficulty ] ) ;
1115: LD_INT 0
1117: PPUSH
1118: LD_INT 3
1120: PUSH
1121: LD_INT 4
1123: PUSH
1124: LD_INT 5
1126: PUSH
1127: EMPTY
1128: LIST
1129: LIST
1130: LIST
1131: PUSH
1132: LD_OWVAR 67
1136: ARRAY
1137: PPUSH
1138: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
1142: CALL_OW 44
1146: PPUSH
1147: LD_VAR 0 2
1151: PPUSH
1152: CALL_OW 52
// end ;
1156: GO 1108
1158: POP
1159: POP
// AEngineer = FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_engineer ] ] ) ;
1160: LD_ADDR_EXP 6
1164: PUSH
1165: LD_INT 22
1167: PUSH
1168: LD_INT 1
1170: PUSH
1171: EMPTY
1172: LIST
1173: LIST
1174: PUSH
1175: LD_INT 25
1177: PUSH
1178: LD_INT 2
1180: PUSH
1181: EMPTY
1182: LIST
1183: LIST
1184: PUSH
1185: EMPTY
1186: LIST
1187: LIST
1188: PPUSH
1189: CALL_OW 69
1193: ST_TO_ADDR
// ADefences = FilterUnitsInArea ( AmericanBaseArea , [ f_type , unit_building ] ) ;
1194: LD_ADDR_EXP 7
1198: PUSH
1199: LD_INT 5
1201: PPUSH
1202: LD_INT 21
1204: PUSH
1205: LD_INT 3
1207: PUSH
1208: EMPTY
1209: LIST
1210: LIST
1211: PPUSH
1212: CALL_OW 70
1216: ST_TO_ADDR
// end ;
1217: LD_VAR 0 1
1221: RET
// every 0 0$1 do var i ;
1222: GO 1224
1224: DISABLE
1225: LD_INT 0
1227: PPUSH
// begin enable ;
1228: ENABLE
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_dist , am_d , 25 ] , [ f_see , 1 ] ] ) then
1229: LD_INT 22
1231: PUSH
1232: LD_INT 2
1234: PUSH
1235: EMPTY
1236: LIST
1237: LIST
1238: PUSH
1239: LD_INT 91
1241: PUSH
1242: LD_INT 231
1244: PUSH
1245: LD_INT 25
1247: PUSH
1248: EMPTY
1249: LIST
1250: LIST
1251: LIST
1252: PUSH
1253: LD_INT 101
1255: PUSH
1256: LD_INT 1
1258: PUSH
1259: EMPTY
1260: LIST
1261: LIST
1262: PUSH
1263: EMPTY
1264: LIST
1265: LIST
1266: LIST
1267: PPUSH
1268: CALL_OW 69
1272: IFFALSE 1323
// begin if ExistMc ( ARepairStrategy ) then
1274: LD_EXP 8
1278: PPUSH
1279: CALL_OW 386
1283: IFFALSE 1294
// KillMc ( ARepairStrategy ) ;
1285: LD_EXP 8
1289: PPUSH
1290: CALL_OW 387
// for i in AEngineer do
1294: LD_ADDR_VAR 0 1
1298: PUSH
1299: LD_EXP 6
1303: PUSH
1304: FOR_IN
1305: IFFALSE 1321
// ComEnterUnit ( i , am_d ) ;
1307: LD_VAR 0 1
1311: PPUSH
1312: LD_INT 231
1314: PPUSH
1315: CALL_OW 120
1319: GO 1304
1321: POP
1322: POP
// end ; if not FilterAllUnits ( [ [ f_side , 2 ] , [ f_dist , am_d , 25 ] , [ f_see , 1 ] ] ) then
1323: LD_INT 22
1325: PUSH
1326: LD_INT 2
1328: PUSH
1329: EMPTY
1330: LIST
1331: LIST
1332: PUSH
1333: LD_INT 91
1335: PUSH
1336: LD_INT 231
1338: PUSH
1339: LD_INT 25
1341: PUSH
1342: EMPTY
1343: LIST
1344: LIST
1345: LIST
1346: PUSH
1347: LD_INT 101
1349: PUSH
1350: LD_INT 1
1352: PUSH
1353: EMPTY
1354: LIST
1355: LIST
1356: PUSH
1357: EMPTY
1358: LIST
1359: LIST
1360: LIST
1361: PPUSH
1362: CALL_OW 69
1366: NOT
1367: IFFALSE 1459
// for i in AEngineer do
1369: LD_ADDR_VAR 0 1
1373: PUSH
1374: LD_EXP 6
1378: PUSH
1379: FOR_IN
1380: IFFALSE 1457
// begin ComExitBuilding ( i ) ;
1382: LD_VAR 0 1
1386: PPUSH
1387: CALL_OW 122
// if not ExistMc ( ARepairStrategy ) then
1391: LD_EXP 8
1395: PPUSH
1396: CALL_OW 386
1400: NOT
1401: IFFALSE 1441
// ARepairStrategy = McRepair ( 1 , i , ADefences , [ [ mcr_bui_limit , 1000 ] ] ) else
1403: LD_ADDR_EXP 8
1407: PUSH
1408: LD_INT 1
1410: PPUSH
1411: LD_VAR 0 1
1415: PPUSH
1416: LD_EXP 7
1420: PPUSH
1421: LD_INT 6
1423: PUSH
1424: LD_INT 1000
1426: PUSH
1427: EMPTY
1428: LIST
1429: LIST
1430: PUSH
1431: EMPTY
1432: LIST
1433: PPUSH
1434: CALL_OW 414
1438: ST_TO_ADDR
1439: GO 1455
// AddMcUnits ( ARepairStrategy , i ) ;
1441: LD_EXP 8
1445: PPUSH
1446: LD_VAR 0 1
1450: PPUSH
1451: CALL_OW 390
// end ;
1455: GO 1379
1457: POP
1458: POP
// end ;
1459: PPOPN 1
1461: END
// every 0 0$1 trigger IsDead ( am_d ) or GetSide ( am_d ) <> 1 do
1462: LD_INT 231
1464: PPUSH
1465: CALL_OW 301
1469: PUSH
1470: LD_INT 231
1472: PPUSH
1473: CALL_OW 255
1477: PUSH
1478: LD_INT 1
1480: NONEQUAL
1481: OR
1482: IFFALSE 1524
1484: GO 1486
1486: DISABLE
// begin KillMc ( ARepairStrategy ) ;
1487: LD_EXP 8
1491: PPUSH
1492: CALL_OW 387
// MaxVehs = MaxVehs + 4 ;
1496: LD_ADDR_EXP 11
1500: PUSH
1501: LD_EXP 11
1505: PUSH
1506: LD_INT 4
1508: PLUS
1509: ST_TO_ADDR
// MaxSols = MaxSols + 2 ;
1510: LD_ADDR_EXP 12
1514: PUSH
1515: LD_EXP 12
1519: PUSH
1520: LD_INT 2
1522: PLUS
1523: ST_TO_ADDR
// end ; end_of_file
1524: END
// export ATargets , AAttack ; every 0 0$1 do
1525: GO 1527
1527: DISABLE
// ATargets = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , RevealArea ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
1528: LD_ADDR_EXP 9
1532: PUSH
1533: LD_INT 1
1535: PPUSH
1536: LD_INT 1
1538: PUSH
1539: LD_INT 105
1541: PUSH
1542: EMPTY
1543: LIST
1544: LIST
1545: PUSH
1546: LD_INT 2
1548: PUSH
1549: LD_INT 6
1551: PUSH
1552: EMPTY
1553: LIST
1554: LIST
1555: PUSH
1556: LD_INT 7
1558: PUSH
1559: LD_INT 9
1561: PUSH
1562: EMPTY
1563: LIST
1564: LIST
1565: LIST
1566: LIST
1567: PPUSH
1568: CALL_OW 399
1572: ST_TO_ADDR
1573: END
// export function PrepareAttack ( h , v , s , area ) ; var i , tmp ; begin
1574: LD_INT 0
1576: PPUSH
1577: PPUSH
1578: PPUSH
// uc_side = 1 ;
1579: LD_ADDR_OWVAR 20
1583: PUSH
1584: LD_INT 1
1586: ST_TO_ADDR
// uc_nation = 1 ;
1587: LD_ADDR_OWVAR 21
1591: PUSH
1592: LD_INT 1
1594: ST_TO_ADDR
// InitHc ;
1595: CALL_OW 19
// InitVc ;
1599: CALL_OW 20
// tmp = [ ] ;
1603: LD_ADDR_VAR 0 7
1607: PUSH
1608: EMPTY
1609: ST_TO_ADDR
// for i = 1 to h do
1610: LD_ADDR_VAR 0 6
1614: PUSH
1615: DOUBLE
1616: LD_INT 1
1618: DEC
1619: ST_TO_ADDR
1620: LD_VAR 0 1
1624: PUSH
1625: FOR_TO
1626: IFFALSE 1658
// begin PrepareSoldier ( false , s ) ;
1628: LD_INT 0
1630: PPUSH
1631: LD_VAR 0 3
1635: PPUSH
1636: CALL_OW 381
// tmp = tmp ^ CreateHuman ;
1640: LD_ADDR_VAR 0 7
1644: PUSH
1645: LD_VAR 0 7
1649: PUSH
1650: CALL_OW 44
1654: ADD
1655: ST_TO_ADDR
// end ;
1656: GO 1625
1658: POP
1659: POP
// vc_control = control_manual ;
1660: LD_ADDR_OWVAR 38
1664: PUSH
1665: LD_INT 1
1667: ST_TO_ADDR
// for i = 1 to v do
1668: LD_ADDR_VAR 0 6
1672: PUSH
1673: DOUBLE
1674: LD_INT 1
1676: DEC
1677: ST_TO_ADDR
1678: LD_VAR 0 2
1682: PUSH
1683: FOR_TO
1684: IFFALSE 1948
// begin vc_engine = Rand ( 1 , 2 ) ;
1686: LD_ADDR_OWVAR 39
1690: PUSH
1691: LD_INT 1
1693: PPUSH
1694: LD_INT 2
1696: PPUSH
1697: CALL_OW 12
1701: ST_TO_ADDR
// if tick < 30 30$0 then
1702: LD_OWVAR 1
1706: PUSH
1707: LD_INT 63000
1709: LESS
1710: IFFALSE 1780
// case Rand ( 1 , 2 ) of 1 :
1712: LD_INT 1
1714: PPUSH
1715: LD_INT 2
1717: PPUSH
1718: CALL_OW 12
1722: PUSH
1723: LD_INT 1
1725: DOUBLE
1726: EQUAL
1727: IFTRUE 1731
1729: GO 1750
1731: POP
// begin vc_chassis = us_light_wheeled ;
1732: LD_ADDR_OWVAR 37
1736: PUSH
1737: LD_INT 1
1739: ST_TO_ADDR
// vc_weapon = us_light_gun ;
1740: LD_ADDR_OWVAR 40
1744: PUSH
1745: LD_INT 3
1747: ST_TO_ADDR
// end ; 2 :
1748: GO 1778
1750: LD_INT 2
1752: DOUBLE
1753: EQUAL
1754: IFTRUE 1758
1756: GO 1777
1758: POP
// begin vc_chassis = us_medium_tracked ;
1759: LD_ADDR_OWVAR 37
1763: PUSH
1764: LD_INT 3
1766: ST_TO_ADDR
// vc_weapon = us_gatling_gun ;
1767: LD_ADDR_OWVAR 40
1771: PUSH
1772: LD_INT 4
1774: ST_TO_ADDR
// end ; end else
1775: GO 1778
1777: POP
1778: GO 1930
// case Rand ( 1 , 3 ) of 1 :
1780: LD_INT 1
1782: PPUSH
1783: LD_INT 3
1785: PPUSH
1786: CALL_OW 12
1790: PUSH
1791: LD_INT 1
1793: DOUBLE
1794: EQUAL
1795: IFTRUE 1799
1797: GO 1837
1799: POP
// begin vc_chassis = [ us_medium_wheeled , us_medium_tracked ] [ Rand ( 1 , 2 ) ] ;
1800: LD_ADDR_OWVAR 37
1804: PUSH
1805: LD_INT 2
1807: PUSH
1808: LD_INT 3
1810: PUSH
1811: EMPTY
1812: LIST
1813: LIST
1814: PUSH
1815: LD_INT 1
1817: PPUSH
1818: LD_INT 2
1820: PPUSH
1821: CALL_OW 12
1825: ARRAY
1826: ST_TO_ADDR
// vc_weapon = us_gatling_gun ;
1827: LD_ADDR_OWVAR 40
1831: PUSH
1832: LD_INT 4
1834: ST_TO_ADDR
// end ; 2 :
1835: GO 1930
1837: LD_INT 2
1839: DOUBLE
1840: EQUAL
1841: IFTRUE 1845
1843: GO 1883
1845: POP
// begin vc_chassis = [ us_medium_wheeled , us_medium_tracked ] [ Rand ( 1 , 2 ) ] ;
1846: LD_ADDR_OWVAR 37
1850: PUSH
1851: LD_INT 2
1853: PUSH
1854: LD_INT 3
1856: PUSH
1857: EMPTY
1858: LIST
1859: LIST
1860: PUSH
1861: LD_INT 1
1863: PPUSH
1864: LD_INT 2
1866: PPUSH
1867: CALL_OW 12
1871: ARRAY
1872: ST_TO_ADDR
// vc_weapon = us_light_gun ;
1873: LD_ADDR_OWVAR 40
1877: PUSH
1878: LD_INT 3
1880: ST_TO_ADDR
// end ; 3 :
1881: GO 1930
1883: LD_INT 3
1885: DOUBLE
1886: EQUAL
1887: IFTRUE 1891
1889: GO 1929
1891: POP
// begin vc_chassis = [ us_medium_wheeled , us_medium_tracked ] [ Rand ( 1 , 2 ) ] ;
1892: LD_ADDR_OWVAR 37
1896: PUSH
1897: LD_INT 2
1899: PUSH
1900: LD_INT 3
1902: PUSH
1903: EMPTY
1904: LIST
1905: LIST
1906: PUSH
1907: LD_INT 1
1909: PPUSH
1910: LD_INT 2
1912: PPUSH
1913: CALL_OW 12
1917: ARRAY
1918: ST_TO_ADDR
// vc_weapon = us_double_gun ;
1919: LD_ADDR_OWVAR 40
1923: PUSH
1924: LD_INT 5
1926: ST_TO_ADDR
// end ; end ;
1927: GO 1930
1929: POP
// tmp = tmp ^ CreateVehicle ;
1930: LD_ADDR_VAR 0 7
1934: PUSH
1935: LD_VAR 0 7
1939: PUSH
1940: CALL_OW 45
1944: ADD
1945: ST_TO_ADDR
// end ;
1946: GO 1683
1948: POP
1949: POP
// for i in tmp do
1950: LD_ADDR_VAR 0 6
1954: PUSH
1955: LD_VAR 0 7
1959: PUSH
1960: FOR_IN
1961: IFFALSE 2038
// begin PlaceUnitArea ( i , [ EnterA , EnterB , EnterC ] [ area ] , false ) ;
1963: LD_VAR 0 6
1967: PPUSH
1968: LD_INT 2
1970: PUSH
1971: LD_INT 3
1973: PUSH
1974: LD_INT 4
1976: PUSH
1977: EMPTY
1978: LIST
1979: LIST
1980: LIST
1981: PUSH
1982: LD_VAR 0 4
1986: ARRAY
1987: PPUSH
1988: LD_INT 0
1990: PPUSH
1991: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
1995: LD_VAR 0 6
1999: PPUSH
2000: CALL_OW 247
2004: PUSH
2005: LD_INT 2
2007: EQUAL
2008: IFFALSE 2036
// begin PrepareMechanic ( false , s ) ;
2010: LD_INT 0
2012: PPUSH
2013: LD_VAR 0 3
2017: PPUSH
2018: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
2022: CALL_OW 44
2026: PPUSH
2027: LD_VAR 0 6
2031: PPUSH
2032: CALL_OW 52
// end ; end ;
2036: GO 1960
2038: POP
2039: POP
// end ;
2040: LD_VAR 0 5
2044: RET
// every 0 0$1 do var i , j ;
2045: GO 2047
2047: DISABLE
2048: LD_INT 0
2050: PPUSH
2051: PPUSH
// begin enable ;
2052: ENABLE
// if ExistMc ( AAttack ) and GetMcUnits ( AAttack ) = 0 then
2053: LD_EXP 10
2057: PPUSH
2058: CALL_OW 386
2062: PUSH
2063: LD_EXP 10
2067: PPUSH
2068: CALL_OW 389
2072: PUSH
2073: LD_INT 0
2075: EQUAL
2076: AND
2077: IFFALSE 2088
// KillMc ( AAttack ) ;
2079: LD_EXP 10
2083: PPUSH
2084: CALL_OW 387
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) do
2088: LD_ADDR_VAR 0 1
2092: PUSH
2093: LD_INT 22
2095: PUSH
2096: LD_INT 1
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 2418
// begin if GetLives ( i ) < 500 then
2125: LD_VAR 0 1
2129: PPUSH
2130: CALL_OW 256
2134: PUSH
2135: LD_INT 500
2137: LESS
2138: IFFALSE 2197
// begin for j in GetUnitMc ( i ) do
2140: LD_ADDR_VAR 0 2
2144: PUSH
2145: LD_VAR 0 1
2149: PPUSH
2150: CALL_OW 388
2154: PUSH
2155: FOR_IN
2156: IFFALSE 2174
// RemoveMcUnits ( j , i ) ;
2158: LD_VAR 0 2
2162: PPUSH
2163: LD_VAR 0 1
2167: PPUSH
2168: CALL_OW 391
2172: GO 2155
2174: POP
2175: POP
// ComMoveToArea ( i , AmericanRepairs ) ;
2176: LD_VAR 0 1
2180: PPUSH
2181: LD_INT 7
2183: PPUSH
2184: CALL_OW 113
// AddComExitVehicle ( i ) ;
2188: LD_VAR 0 1
2192: PPUSH
2193: CALL_OW 181
// end ; if GetLives ( i ) = 1000 then
2197: LD_VAR 0 1
2201: PPUSH
2202: CALL_OW 256
2206: PUSH
2207: LD_INT 1000
2209: EQUAL
2210: IFFALSE 2345
// begin if not IsDrivenBy ( i ) then
2212: LD_VAR 0 1
2216: PPUSH
2217: CALL_OW 311
2221: NOT
2222: IFFALSE 2289
// ComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_mechanic ] , [ f_dist , i , 10 ] ] ) , i ) , i ) ;
2224: LD_INT 22
2226: PUSH
2227: LD_INT 1
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: PUSH
2234: LD_INT 25
2236: PUSH
2237: LD_INT 3
2239: PUSH
2240: EMPTY
2241: LIST
2242: LIST
2243: PUSH
2244: LD_INT 91
2246: PUSH
2247: LD_VAR 0 1
2251: PUSH
2252: LD_INT 10
2254: PUSH
2255: EMPTY
2256: LIST
2257: LIST
2258: LIST
2259: PUSH
2260: EMPTY
2261: LIST
2262: LIST
2263: LIST
2264: PPUSH
2265: CALL_OW 69
2269: PPUSH
2270: LD_VAR 0 1
2274: PPUSH
2275: CALL_OW 74
2279: PPUSH
2280: LD_VAR 0 1
2284: PPUSH
2285: CALL_OW 120
// if ExistMc ( AAttack ) then
2289: LD_EXP 10
2293: PPUSH
2294: CALL_OW 386
2298: IFFALSE 2316
// AddMcUnits ( AAttack , i ) else
2300: LD_EXP 10
2304: PPUSH
2305: LD_VAR 0 1
2309: PPUSH
2310: CALL_OW 390
2314: GO 2345
// AAttack = McAttack ( 1 , ATargets , i , [ mc_murder ] ) ;
2316: LD_ADDR_EXP 10
2320: PUSH
2321: LD_INT 1
2323: PPUSH
2324: LD_EXP 9
2328: PPUSH
2329: LD_VAR 0 1
2333: PPUSH
2334: LD_INT 12
2336: PUSH
2337: EMPTY
2338: LIST
2339: PPUSH
2340: CALL_OW 402
2344: ST_TO_ADDR
// end ; if GetFuel ( i ) < 40 and GetEngine ( i ) = engine_combustion and IsInArea ( i , AmericanRepairs ) and not See ( 2 , i ) then
2345: LD_VAR 0 1
2349: PPUSH
2350: CALL_OW 261
2354: PUSH
2355: LD_INT 40
2357: LESS
2358: PUSH
2359: LD_VAR 0 1
2363: PPUSH
2364: CALL_OW 262
2368: PUSH
2369: LD_INT 1
2371: EQUAL
2372: AND
2373: PUSH
2374: LD_VAR 0 1
2378: PPUSH
2379: LD_INT 7
2381: PPUSH
2382: CALL_OW 308
2386: AND
2387: PUSH
2388: LD_INT 2
2390: PPUSH
2391: LD_VAR 0 1
2395: PPUSH
2396: CALL_OW 292
2400: NOT
2401: AND
2402: IFFALSE 2416
// SetFuel ( i , 100 ) ;
2404: LD_VAR 0 1
2408: PPUSH
2409: LD_INT 100
2411: PPUSH
2412: CALL_OW 240
// end ;
2416: GO 2122
2418: POP
2419: POP
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_soldier ] , [ f_outside ] ] ) do
2420: LD_ADDR_VAR 0 1
2424: PUSH
2425: LD_INT 22
2427: PUSH
2428: LD_INT 1
2430: PUSH
2431: EMPTY
2432: LIST
2433: LIST
2434: PUSH
2435: LD_INT 25
2437: PUSH
2438: LD_INT 1
2440: PUSH
2441: EMPTY
2442: LIST
2443: LIST
2444: PUSH
2445: LD_INT 56
2447: PUSH
2448: EMPTY
2449: LIST
2450: PUSH
2451: EMPTY
2452: LIST
2453: LIST
2454: LIST
2455: PPUSH
2456: CALL_OW 69
2460: PUSH
2461: FOR_IN
2462: IFFALSE 2522
// if ExistMc ( AAttack ) then
2464: LD_EXP 10
2468: PPUSH
2469: CALL_OW 386
2473: IFFALSE 2491
// AddMcUnits ( AAttack , i ) else
2475: LD_EXP 10
2479: PPUSH
2480: LD_VAR 0 1
2484: PPUSH
2485: CALL_OW 390
2489: GO 2520
// AAttack = McAttack ( 1 , ATargets , i , [ mc_murder ] ) ;
2491: LD_ADDR_EXP 10
2495: PUSH
2496: LD_INT 1
2498: PPUSH
2499: LD_EXP 9
2503: PPUSH
2504: LD_VAR 0 1
2508: PPUSH
2509: LD_INT 12
2511: PUSH
2512: EMPTY
2513: LIST
2514: PPUSH
2515: CALL_OW 402
2519: ST_TO_ADDR
2520: GO 2461
2522: POP
2523: POP
// for i in FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , 2 ] , [ f_empty ] ] ) do
2524: LD_ADDR_VAR 0 1
2528: PUSH
2529: LD_INT 21
2531: PUSH
2532: LD_INT 2
2534: PUSH
2535: EMPTY
2536: LIST
2537: LIST
2538: PUSH
2539: LD_INT 22
2541: PUSH
2542: LD_INT 2
2544: PUSH
2545: EMPTY
2546: LIST
2547: LIST
2548: PUSH
2549: LD_INT 58
2551: PUSH
2552: EMPTY
2553: LIST
2554: PUSH
2555: EMPTY
2556: LIST
2557: LIST
2558: LIST
2559: PPUSH
2560: CALL_OW 69
2564: PUSH
2565: FOR_IN
2566: IFFALSE 2682
// if FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_dist , i , 8 ] ] ) then
2568: LD_INT 22
2570: PUSH
2571: LD_INT 1
2573: PUSH
2574: EMPTY
2575: LIST
2576: LIST
2577: PUSH
2578: LD_INT 21
2580: PUSH
2581: LD_INT 1
2583: PUSH
2584: EMPTY
2585: LIST
2586: LIST
2587: PUSH
2588: LD_INT 91
2590: PUSH
2591: LD_VAR 0 1
2595: PUSH
2596: LD_INT 8
2598: PUSH
2599: EMPTY
2600: LIST
2601: LIST
2602: LIST
2603: PUSH
2604: EMPTY
2605: LIST
2606: LIST
2607: LIST
2608: PPUSH
2609: CALL_OW 69
2613: IFFALSE 2680
// ComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_dist , i , 8 ] ] ) , i ) , i ) ;
2615: LD_INT 22
2617: PUSH
2618: LD_INT 1
2620: PUSH
2621: EMPTY
2622: LIST
2623: LIST
2624: PUSH
2625: LD_INT 21
2627: PUSH
2628: LD_INT 1
2630: PUSH
2631: EMPTY
2632: LIST
2633: LIST
2634: PUSH
2635: LD_INT 91
2637: PUSH
2638: LD_VAR 0 1
2642: PUSH
2643: LD_INT 8
2645: PUSH
2646: EMPTY
2647: LIST
2648: LIST
2649: LIST
2650: PUSH
2651: EMPTY
2652: LIST
2653: LIST
2654: LIST
2655: PPUSH
2656: CALL_OW 69
2660: PPUSH
2661: LD_VAR 0 1
2665: PPUSH
2666: CALL_OW 74
2670: PPUSH
2671: LD_VAR 0 1
2675: PPUSH
2676: CALL_OW 120
2680: GO 2565
2682: POP
2683: POP
// end ;
2684: PPOPN 2
2686: END
// export MaxVehs , MaxSols , MaxSkill ; every 0 0$1 do
2687: GO 2689
2689: DISABLE
// begin MaxVehs = [ 2 , 3 , 3 ] [ difficulty ] ;
2690: LD_ADDR_EXP 11
2694: PUSH
2695: LD_INT 2
2697: PUSH
2698: LD_INT 3
2700: PUSH
2701: LD_INT 3
2703: PUSH
2704: EMPTY
2705: LIST
2706: LIST
2707: LIST
2708: PUSH
2709: LD_OWVAR 67
2713: ARRAY
2714: ST_TO_ADDR
// MaxSols = [ 2 , 3 , 3 ] [ difficulty ] ;
2715: LD_ADDR_EXP 12
2719: PUSH
2720: LD_INT 2
2722: PUSH
2723: LD_INT 3
2725: PUSH
2726: LD_INT 3
2728: PUSH
2729: EMPTY
2730: LIST
2731: LIST
2732: LIST
2733: PUSH
2734: LD_OWVAR 67
2738: ARRAY
2739: ST_TO_ADDR
// MaxSkill = [ 3 , 4 , 6 ] [ difficulty ] ;
2740: LD_ADDR_EXP 13
2744: PUSH
2745: LD_INT 3
2747: PUSH
2748: LD_INT 4
2750: PUSH
2751: LD_INT 6
2753: PUSH
2754: EMPTY
2755: LIST
2756: LIST
2757: LIST
2758: PUSH
2759: LD_OWVAR 67
2763: ARRAY
2764: ST_TO_ADDR
// end ;
2765: END
// every 0 0$1 trigger CountPoints = true do
2766: LD_EXP 5
2770: PUSH
2771: LD_INT 1
2773: EQUAL
2774: IFFALSE 2866
2776: GO 2778
2778: DISABLE
// begin Wait ( [ Rand ( 6 6$0 , 10 10$0 ) , Rand ( 6 6$0 , 8 8$0 ) , Rand ( 5 5$0 , 6 6$30 ) ] [ difficulty ] ) ;
2779: LD_INT 12600
2781: PPUSH
2782: LD_INT 21000
2784: PPUSH
2785: CALL_OW 12
2789: PUSH
2790: LD_INT 12600
2792: PPUSH
2793: LD_INT 16800
2795: PPUSH
2796: CALL_OW 12
2800: PUSH
2801: LD_INT 10500
2803: PPUSH
2804: LD_INT 13650
2806: PPUSH
2807: CALL_OW 12
2811: PUSH
2812: EMPTY
2813: LIST
2814: LIST
2815: LIST
2816: PUSH
2817: LD_OWVAR 67
2821: ARRAY
2822: PPUSH
2823: CALL_OW 67
// MaxVehs = MaxVehs + 1 ;
2827: LD_ADDR_EXP 11
2831: PUSH
2832: LD_EXP 11
2836: PUSH
2837: LD_INT 1
2839: PLUS
2840: ST_TO_ADDR
// if MaxSkill < 10 then
2841: LD_EXP 13
2845: PUSH
2846: LD_INT 10
2848: LESS
2849: IFFALSE 2865
// MaxSkill = MaxSkill + 1 ;
2851: LD_ADDR_EXP 13
2855: PUSH
2856: LD_EXP 13
2860: PUSH
2861: LD_INT 1
2863: PLUS
2864: ST_TO_ADDR
// enable ;
2865: ENABLE
// end ;
2866: END
// every 0 0$1 trigger CountPoints = true do
2867: LD_EXP 5
2871: PUSH
2872: LD_INT 1
2874: EQUAL
2875: IFFALSE 2943
2877: GO 2879
2879: DISABLE
// begin Wait ( [ Rand ( 12 12$0 , 15 15$0 ) , Rand ( 10 10$0 , 13 13$0 ) , Rand ( 8 8$30 , 12 12$0 ) ] [ difficulty ] ) ;
2880: LD_INT 25200
2882: PPUSH
2883: LD_INT 31500
2885: PPUSH
2886: CALL_OW 12
2890: PUSH
2891: LD_INT 21000
2893: PPUSH
2894: LD_INT 27300
2896: PPUSH
2897: CALL_OW 12
2901: PUSH
2902: LD_INT 17850
2904: PPUSH
2905: LD_INT 25200
2907: PPUSH
2908: CALL_OW 12
2912: PUSH
2913: EMPTY
2914: LIST
2915: LIST
2916: LIST
2917: PUSH
2918: LD_OWVAR 67
2922: ARRAY
2923: PPUSH
2924: CALL_OW 67
// MaxSols = MaxSols + 1 ;
2928: LD_ADDR_EXP 12
2932: PUSH
2933: LD_EXP 12
2937: PUSH
2938: LD_INT 1
2940: PLUS
2941: ST_TO_ADDR
// enable ;
2942: ENABLE
// end ;
2943: END
// every 0 0$1 do
2944: GO 2946
2946: DISABLE
// begin enable ;
2947: ENABLE
// case tick of 3 3$30 :
2948: LD_OWVAR 1
2952: PUSH
2953: LD_INT 7350
2955: DOUBLE
2956: EQUAL
2957: IFTRUE 2961
2959: GO 2984
2961: POP
// begin DAmericans ;
2962: CALL 352 0 0
// PrepareAttack ( 0 , 2 , 3 , 1 ) ;
2966: LD_INT 0
2968: PPUSH
2969: LD_INT 2
2971: PPUSH
2972: LD_INT 3
2974: PPUSH
2975: LD_INT 1
2977: PPUSH
2978: CALL 1574 0 4
// end ; 6 6$0 :
2982: GO 3072
2984: LD_INT 12600
2986: DOUBLE
2987: EQUAL
2988: IFTRUE 2992
2990: GO 3027
2992: POP
// begin PrepareAttack ( 2 , 0 , 4 , 3 ) ;
2993: LD_INT 2
2995: PPUSH
2996: LD_INT 0
2998: PPUSH
2999: LD_INT 4
3001: PPUSH
3002: LD_INT 3
3004: PPUSH
3005: CALL 1574 0 4
// PrepareAttack ( 0 , 1 , 3 , 2 ) ;
3009: LD_INT 0
3011: PPUSH
3012: LD_INT 1
3014: PPUSH
3015: LD_INT 3
3017: PPUSH
3018: LD_INT 2
3020: PPUSH
3021: CALL 1574 0 4
// end ; 12 12$30 :
3025: GO 3072
3027: LD_INT 26250
3029: DOUBLE
3030: EQUAL
3031: IFTRUE 3035
3033: GO 3071
3035: POP
// PrepareAttack ( 2 , [ 2 , 3 , 3 ] [ difficulty ] , 4 , 1 ) ; end ;
3036: LD_INT 2
3038: PPUSH
3039: LD_INT 2
3041: PUSH
3042: LD_INT 3
3044: PUSH
3045: LD_INT 3
3047: PUSH
3048: EMPTY
3049: LIST
3050: LIST
3051: LIST
3052: PUSH
3053: LD_OWVAR 67
3057: ARRAY
3058: PPUSH
3059: LD_INT 4
3061: PPUSH
3062: LD_INT 1
3064: PPUSH
3065: CALL 1574 0 4
3069: GO 3072
3071: POP
// end ;
3072: END
// every 0 0$1 trigger tick > 15 15$0 do
3073: LD_OWVAR 1
3077: PUSH
3078: LD_INT 31500
3080: GREATER
3081: IFFALSE 3706
3083: GO 3085
3085: DISABLE
// begin case tick of 15 15$0 + 1 .. 30 30$0 :
3086: LD_OWVAR 1
3090: PUSH
3091: LD_INT 31500
3093: PUSH
3094: LD_INT 1
3096: PLUS
3097: DOUBLE
3098: GREATEREQUAL
3099: IFFALSE 3107
3101: LD_INT 63000
3103: DOUBLE
3104: LESSEQUAL
3105: IFTRUE 3109
3107: GO 3160
3109: POP
// Wait ( [ Rand ( 2 2$0 , 3 3$30 ) , Rand ( 2 2$0 , 3 3$0 ) , Rand ( 1 1$45 , 2 2$30 ) ] [ difficulty ] ) ; 30 30$0 + 1 .. 40 40$0 :
3110: LD_INT 4200
3112: PPUSH
3113: LD_INT 7350
3115: PPUSH
3116: CALL_OW 12
3120: PUSH
3121: LD_INT 4200
3123: PPUSH
3124: LD_INT 6300
3126: PPUSH
3127: CALL_OW 12
3131: PUSH
3132: LD_INT 3675
3134: PPUSH
3135: LD_INT 5250
3137: PPUSH
3138: CALL_OW 12
3142: PUSH
3143: EMPTY
3144: LIST
3145: LIST
3146: LIST
3147: PUSH
3148: LD_OWVAR 67
3152: ARRAY
3153: PPUSH
3154: CALL_OW 67
3158: GO 3278
3160: LD_INT 63000
3162: PUSH
3163: LD_INT 1
3165: PLUS
3166: DOUBLE
3167: GREATEREQUAL
3168: IFFALSE 3176
3170: LD_INT 84000
3172: DOUBLE
3173: LESSEQUAL
3174: IFTRUE 3178
3176: GO 3229
3178: POP
// Wait ( [ Rand ( 6 6$0 , 8 8$0 ) , Rand ( 5 5$0 , 6 6$30 ) , Rand ( 5 5$0 , 6 6$0 ) ] [ difficulty ] ) ; else
3179: LD_INT 12600
3181: PPUSH
3182: LD_INT 16800
3184: PPUSH
3185: CALL_OW 12
3189: PUSH
3190: LD_INT 10500
3192: PPUSH
3193: LD_INT 13650
3195: PPUSH
3196: CALL_OW 12
3200: PUSH
3201: LD_INT 10500
3203: PPUSH
3204: LD_INT 12600
3206: PPUSH
3207: CALL_OW 12
3211: PUSH
3212: EMPTY
3213: LIST
3214: LIST
3215: LIST
3216: PUSH
3217: LD_OWVAR 67
3221: ARRAY
3222: PPUSH
3223: CALL_OW 67
3227: GO 3278
3229: POP
// Wait ( [ Rand ( 3 3$0 , 5 5$30 ) , Rand ( 2 2$30 , 5 5$0 ) , Rand ( 2 2$0 , 4 4$0 ) ] [ difficulty ] ) ; end ;
3230: LD_INT 6300
3232: PPUSH
3233: LD_INT 11550
3235: PPUSH
3236: CALL_OW 12
3240: PUSH
3241: LD_INT 5250
3243: PPUSH
3244: LD_INT 10500
3246: PPUSH
3247: CALL_OW 12
3251: PUSH
3252: LD_INT 4200
3254: PPUSH
3255: LD_INT 8400
3257: PPUSH
3258: CALL_OW 12
3262: PUSH
3263: EMPTY
3264: LIST
3265: LIST
3266: LIST
3267: PUSH
3268: LD_OWVAR 67
3272: ARRAY
3273: PPUSH
3274: CALL_OW 67
// case Rand ( 1 , 5 ) of 1 :
3278: LD_INT 1
3280: PPUSH
3281: LD_INT 5
3283: PPUSH
3284: CALL_OW 12
3288: PUSH
3289: LD_INT 1
3291: DOUBLE
3292: EQUAL
3293: IFTRUE 3297
3295: GO 3348
3297: POP
// PrepareAttack ( 0 , Rand ( MaxVehs div 2 , MaxVehs ) , Rand ( MaxSkill div 2 , MaxSkill ) , 1 ) ; 2 :
3298: LD_INT 0
3300: PPUSH
3301: LD_EXP 11
3305: PUSH
3306: LD_INT 2
3308: DIV
3309: PPUSH
3310: LD_EXP 11
3314: PPUSH
3315: CALL_OW 12
3319: PPUSH
3320: LD_EXP 13
3324: PUSH
3325: LD_INT 2
3327: DIV
3328: PPUSH
3329: LD_EXP 13
3333: PPUSH
3334: CALL_OW 12
3338: PPUSH
3339: LD_INT 1
3341: PPUSH
3342: CALL 1574 0 4
3346: GO 3705
3348: LD_INT 2
3350: DOUBLE
3351: EQUAL
3352: IFTRUE 3356
3354: GO 3419
3356: POP
// PrepareAttack ( Rand ( 1 , 3 ) , Rand ( MaxVehs div 2 , MaxVehs - 1 ) , Rand ( MaxSkill div 2 , MaxSkill ) , 2 ) ; 3 :
3357: LD_INT 1
3359: PPUSH
3360: LD_INT 3
3362: PPUSH
3363: CALL_OW 12
3367: PPUSH
3368: LD_EXP 11
3372: PUSH
3373: LD_INT 2
3375: DIV
3376: PPUSH
3377: LD_EXP 11
3381: PUSH
3382: LD_INT 1
3384: MINUS
3385: PPUSH
3386: CALL_OW 12
3390: PPUSH
3391: LD_EXP 13
3395: PUSH
3396: LD_INT 2
3398: DIV
3399: PPUSH
3400: LD_EXP 13
3404: PPUSH
3405: CALL_OW 12
3409: PPUSH
3410: LD_INT 2
3412: PPUSH
3413: CALL 1574 0 4
3417: GO 3705
3419: LD_INT 3
3421: DOUBLE
3422: EQUAL
3423: IFTRUE 3427
3425: GO 3478
3427: POP
// PrepareAttack ( Rand ( MaxSols div 2 , MaxSols ) , 0 , Rand ( MaxSkill div 2 , MaxSkill ) , 3 ) ; 4 :
3428: LD_EXP 12
3432: PUSH
3433: LD_INT 2
3435: DIV
3436: PPUSH
3437: LD_EXP 12
3441: PPUSH
3442: CALL_OW 12
3446: PPUSH
3447: LD_INT 0
3449: PPUSH
3450: LD_EXP 13
3454: PUSH
3455: LD_INT 2
3457: DIV
3458: PPUSH
3459: LD_EXP 13
3463: PPUSH
3464: CALL_OW 12
3468: PPUSH
3469: LD_INT 3
3471: PPUSH
3472: CALL 1574 0 4
3476: GO 3705
3478: LD_INT 4
3480: DOUBLE
3481: EQUAL
3482: IFTRUE 3486
3484: GO 3585
3486: POP
// begin PrepareAttack ( 0 , Rand ( MaxVehs div 2 , MaxVehs ) , Rand ( MaxSkill div 2 , MaxSkill ) , 1 ) ;
3487: LD_INT 0
3489: PPUSH
3490: LD_EXP 11
3494: PUSH
3495: LD_INT 2
3497: DIV
3498: PPUSH
3499: LD_EXP 11
3503: PPUSH
3504: CALL_OW 12
3508: PPUSH
3509: LD_EXP 13
3513: PUSH
3514: LD_INT 2
3516: DIV
3517: PPUSH
3518: LD_EXP 13
3522: PPUSH
3523: CALL_OW 12
3527: PPUSH
3528: LD_INT 1
3530: PPUSH
3531: CALL 1574 0 4
// PrepareAttack ( Rand ( MaxSols div 2 , MaxSols ) , 0 , Rand ( MaxSkill div 2 , MaxSkill ) , 3 ) ;
3535: LD_EXP 12
3539: PUSH
3540: LD_INT 2
3542: DIV
3543: PPUSH
3544: LD_EXP 12
3548: PPUSH
3549: CALL_OW 12
3553: PPUSH
3554: LD_INT 0
3556: PPUSH
3557: LD_EXP 13
3561: PUSH
3562: LD_INT 2
3564: DIV
3565: PPUSH
3566: LD_EXP 13
3570: PPUSH
3571: CALL_OW 12
3575: PPUSH
3576: LD_INT 3
3578: PPUSH
3579: CALL 1574 0 4
// end ; 5 :
3583: GO 3705
3585: LD_INT 5
3587: DOUBLE
3588: EQUAL
3589: IFTRUE 3593
3591: GO 3704
3593: POP
// begin PrepareAttack ( Rand ( 2 , 3 ) , Rand ( MaxVehs div 2 , MaxVehs - 1 ) , Rand ( MaxSkill div 2 , MaxSkill ) , 2 ) ;
3594: LD_INT 2
3596: PPUSH
3597: LD_INT 3
3599: PPUSH
3600: CALL_OW 12
3604: PPUSH
3605: LD_EXP 11
3609: PUSH
3610: LD_INT 2
3612: DIV
3613: PPUSH
3614: LD_EXP 11
3618: PUSH
3619: LD_INT 1
3621: MINUS
3622: PPUSH
3623: CALL_OW 12
3627: PPUSH
3628: LD_EXP 13
3632: PUSH
3633: LD_INT 2
3635: DIV
3636: PPUSH
3637: LD_EXP 13
3641: PPUSH
3642: CALL_OW 12
3646: PPUSH
3647: LD_INT 2
3649: PPUSH
3650: CALL 1574 0 4
// PrepareAttack ( Rand ( MaxSols div 2 , MaxSols ) , 0 , Rand ( MaxSkill div 2 , MaxSkill ) , 3 ) ;
3654: LD_EXP 12
3658: PUSH
3659: LD_INT 2
3661: DIV
3662: PPUSH
3663: LD_EXP 12
3667: PPUSH
3668: CALL_OW 12
3672: PPUSH
3673: LD_INT 0
3675: PPUSH
3676: LD_EXP 13
3680: PUSH
3681: LD_INT 2
3683: DIV
3684: PPUSH
3685: LD_EXP 13
3689: PPUSH
3690: CALL_OW 12
3694: PPUSH
3695: LD_INT 3
3697: PPUSH
3698: CALL 1574 0 4
// end ; end ;
3702: GO 3705
3704: POP
// enable ;
3705: ENABLE
// end ;
3706: END
// on DestinationUnreachable ( u ) do begin if GetSide ( u ) = 1 then
3707: LD_VAR 0 1
3711: PPUSH
3712: CALL_OW 255
3716: PUSH
3717: LD_INT 1
3719: EQUAL
3720: IFFALSE 3756
// ComAttackUnit ( u , NearestUnitToUnit ( FilterAllUnits ( [ f_side , 2 ] ) , u ) ) ;
3722: LD_VAR 0 1
3726: PPUSH
3727: LD_INT 22
3729: PUSH
3730: LD_INT 2
3732: PUSH
3733: EMPTY
3734: LIST
3735: LIST
3736: PPUSH
3737: CALL_OW 69
3741: PPUSH
3742: LD_VAR 0 1
3746: PPUSH
3747: CALL_OW 74
3751: PPUSH
3752: CALL_OW 115
// end ; end_of_file
3756: PPOPN 1
3758: END
// every 0 0$1 do
3759: GO 3761
3761: DISABLE
// begin case tick of 1 .. 15 15$0 :
3762: LD_OWVAR 1
3766: PUSH
3767: LD_INT 1
3769: DOUBLE
3770: GREATEREQUAL
3771: IFFALSE 3779
3773: LD_INT 31500
3775: DOUBLE
3776: LESSEQUAL
3777: IFTRUE 3781
3779: GO 3799
3781: POP
// Wait ( Rand ( 3 3$30 , 6 6$0 ) ) ; 15 15$0 + 1 .. 45 45$0 :
3782: LD_INT 7350
3784: PPUSH
3785: LD_INT 12600
3787: PPUSH
3788: CALL_OW 12
3792: PPUSH
3793: CALL_OW 67
3797: GO 3851
3799: LD_INT 31500
3801: PUSH
3802: LD_INT 1
3804: PLUS
3805: DOUBLE
3806: GREATEREQUAL
3807: IFFALSE 3815
3809: LD_INT 94500
3811: DOUBLE
3812: LESSEQUAL
3813: IFTRUE 3817
3815: GO 3835
3817: POP
// Wait ( Rand ( 2 2$0 , 5 5$0 ) ) ; else
3818: LD_INT 4200
3820: PPUSH
3821: LD_INT 10500
3823: PPUSH
3824: CALL_OW 12
3828: PPUSH
3829: CALL_OW 67
3833: GO 3851
3835: POP
// Wait ( Rand ( 3 3$0 , 6 6$0 ) ) ; end ;
3836: LD_INT 6300
3838: PPUSH
3839: LD_INT 12600
3841: PPUSH
3842: CALL_OW 12
3846: PPUSH
3847: CALL_OW 67
// CreateCratesArea ( Rand ( 3 , 5 ) , RevealArea , true ) ;
3851: LD_INT 3
3853: PPUSH
3854: LD_INT 5
3856: PPUSH
3857: CALL_OW 12
3861: PPUSH
3862: LD_INT 6
3864: PPUSH
3865: LD_INT 1
3867: PPUSH
3868: CALL_OW 55
// enable ;
3872: ENABLE
// end ;
3873: END
// every 4 4$0 do
3874: GO 3876
3876: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
3877: LD_INT 4
3879: PPUSH
3880: LD_INT 5
3882: PPUSH
3883: CALL_OW 12
3887: PPUSH
3888: LD_INT 1
3890: PPUSH
3891: CALL_OW 57
// enable ;
3895: ENABLE
// end ;
3896: END
// export Points ; on VehicleCaptured ( nid , oid , os , un ) do if CountPoints = true and os = 1 then
3897: LD_EXP 5
3901: PUSH
3902: LD_INT 1
3904: EQUAL
3905: PUSH
3906: LD_VAR 0 3
3910: PUSH
3911: LD_INT 1
3913: EQUAL
3914: AND
3915: IFFALSE 3931
// Points = Points + 2 ;
3917: LD_ADDR_EXP 14
3921: PUSH
3922: LD_EXP 14
3926: PUSH
3927: LD_INT 2
3929: PLUS
3930: ST_TO_ADDR
3931: PPOPN 4
3933: END
// every 1 1$0 trigger CountPoints = true do
3934: LD_EXP 5
3938: PUSH
3939: LD_INT 1
3941: EQUAL
3942: IFFALSE 3962
3944: GO 3946
3946: DISABLE
// begin Points = Points + 1 ;
3947: LD_ADDR_EXP 14
3951: PUSH
3952: LD_EXP 14
3956: PUSH
3957: LD_INT 1
3959: PLUS
3960: ST_TO_ADDR
// enable ;
3961: ENABLE
// end ;
3962: END
// every 0 0$1 trigger CountPoints = true do
3963: LD_EXP 5
3967: PUSH
3968: LD_INT 1
3970: EQUAL
3971: IFFALSE 4004
3973: GO 3975
3975: DISABLE
// begin enable ;
3976: ENABLE
// display_strings = [ #Time , tick , #Points , Points ] ;
3977: LD_ADDR_OWVAR 47
3981: PUSH
3982: LD_STRING #Time
3984: PUSH
3985: LD_OWVAR 1
3989: PUSH
3990: LD_STRING #Points
3992: PUSH
3993: LD_EXP 14
3997: PUSH
3998: EMPTY
3999: LIST
4000: LIST
4001: LIST
4002: LIST
4003: ST_TO_ADDR
// end ;
4004: END
// on EndTheMissionRaised ( x ) do begin InGameOn ;
4005: CALL_OW 8
// DialogueOn ;
4009: CALL_OW 6
// Say ( Gom , de-l-1 ) ;
4013: LD_EXP 2
4017: PPUSH
4018: LD_STRING de-l-1
4020: PPUSH
4021: CALL_OW 88
// DialogueOff ;
4025: CALL_OW 7
// InGameOff ;
4029: CALL_OW 9
// ToLua ( setPointsSkirmish(1,  & Points & ); ) ;
4033: LD_STRING setPointsSkirmish(1, 
4035: PUSH
4036: LD_EXP 14
4040: STR
4041: PUSH
4042: LD_STRING );
4044: STR
4045: PPUSH
4046: CALL_OW 559
// YouWin ;
4050: CALL_OW 103
// end ;
4054: PPOPN 1
4056: END
// on UnitDestroyed ( un ) do begin if un = Gom then
4057: LD_VAR 0 1
4061: PUSH
4062: LD_EXP 2
4066: EQUAL
4067: IFFALSE 4076
// YouLost ( LucyDead ) ;
4069: LD_STRING LucyDead
4071: PPUSH
4072: CALL_OW 104
// if un = ad then
4076: LD_VAR 0 1
4080: PUSH
4081: LD_INT 45
4083: EQUAL
4084: IFFALSE 4093
// YouLost ( AtlasDestroyed ) ;
4086: LD_STRING AtlasDestroyed
4088: PPUSH
4089: CALL_OW 104
// end ; end_of_file
4093: PPOPN 1
4095: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
4096: LD_INT 0
4098: PPUSH
4099: PPUSH
4100: PPUSH
4101: PPUSH
// InitHc ;
4102: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
4106: LD_ADDR_VAR 0 9
4110: PUSH
4111: LD_VAR 0 2
4115: PPUSH
4116: LD_INT 22
4118: PUSH
4119: LD_VAR 0 1
4123: PUSH
4124: EMPTY
4125: LIST
4126: LIST
4127: PUSH
4128: LD_INT 21
4130: PUSH
4131: LD_INT 3
4133: PUSH
4134: EMPTY
4135: LIST
4136: LIST
4137: PUSH
4138: EMPTY
4139: LIST
4140: LIST
4141: PPUSH
4142: CALL_OW 70
4146: PUSH
4147: FOR_IN
4148: IFFALSE 4635
// case GetBType ( i ) of b_depot , b_warehouse :
4150: LD_VAR 0 9
4154: PPUSH
4155: CALL_OW 266
4159: PUSH
4160: LD_INT 0
4162: DOUBLE
4163: EQUAL
4164: IFTRUE 4174
4166: LD_INT 1
4168: DOUBLE
4169: EQUAL
4170: IFTRUE 4174
4172: GO 4316
4174: POP
// for j = 1 to engineers do
4175: LD_ADDR_VAR 0 10
4179: PUSH
4180: DOUBLE
4181: LD_INT 1
4183: DEC
4184: ST_TO_ADDR
4185: LD_VAR 0 7
4189: PUSH
4190: FOR_TO
4191: IFFALSE 4312
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
4193: LD_INT 1
4195: PPUSH
4196: LD_INT 2
4198: PPUSH
4199: CALL_OW 12
4203: PPUSH
4204: LD_VAR 0 3
4208: PPUSH
4209: CALL_OW 382
// h = CreateHuman ;
4213: LD_ADDR_VAR 0 11
4217: PUSH
4218: CALL_OW 44
4222: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
4223: LD_VAR 0 11
4227: PPUSH
4228: LD_VAR 0 9
4232: PPUSH
4233: CALL_OW 250
4237: PPUSH
4238: LD_VAR 0 9
4242: PPUSH
4243: CALL_OW 254
4247: PPUSH
4248: LD_INT 4
4250: PPUSH
4251: LD_INT 10
4253: PPUSH
4254: CALL_OW 12
4258: PPUSH
4259: CALL_OW 272
4263: PPUSH
4264: LD_VAR 0 9
4268: PPUSH
4269: CALL_OW 251
4273: PPUSH
4274: LD_VAR 0 9
4278: PPUSH
4279: CALL_OW 254
4283: PPUSH
4284: LD_INT 4
4286: PPUSH
4287: LD_INT 10
4289: PPUSH
4290: CALL_OW 12
4294: PPUSH
4295: CALL_OW 273
4299: PPUSH
4300: LD_INT 8
4302: PPUSH
4303: LD_INT 0
4305: PPUSH
4306: CALL_OW 50
// end ; b_armoury , b_barracks :
4310: GO 4190
4312: POP
4313: POP
4314: GO 4633
4316: LD_INT 4
4318: DOUBLE
4319: EQUAL
4320: IFTRUE 4330
4322: LD_INT 5
4324: DOUBLE
4325: EQUAL
4326: IFTRUE 4330
4328: GO 4399
4330: POP
// for j = 1 to armoury do
4331: LD_ADDR_VAR 0 10
4335: PUSH
4336: DOUBLE
4337: LD_INT 1
4339: DEC
4340: ST_TO_ADDR
4341: LD_VAR 0 6
4345: PUSH
4346: FOR_TO
4347: IFFALSE 4395
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
4349: LD_INT 1
4351: PPUSH
4352: LD_INT 2
4354: PPUSH
4355: CALL_OW 12
4359: PPUSH
4360: LD_VAR 0 3
4364: PPUSH
4365: CALL_OW 381
// h = CreateHuman ;
4369: LD_ADDR_VAR 0 11
4373: PUSH
4374: CALL_OW 44
4378: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4379: LD_VAR 0 11
4383: PPUSH
4384: LD_VAR 0 9
4388: PPUSH
4389: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
4393: GO 4346
4395: POP
4396: POP
4397: GO 4633
4399: LD_INT 9
4401: DOUBLE
4402: EQUAL
4403: IFTRUE 4419
4405: LD_INT 7
4407: DOUBLE
4408: EQUAL
4409: IFTRUE 4419
4411: LD_INT 8
4413: DOUBLE
4414: EQUAL
4415: IFTRUE 4419
4417: GO 4488
4419: POP
// for j = 1 to lab do
4420: LD_ADDR_VAR 0 10
4424: PUSH
4425: DOUBLE
4426: LD_INT 1
4428: DEC
4429: ST_TO_ADDR
4430: LD_VAR 0 5
4434: PUSH
4435: FOR_TO
4436: IFFALSE 4484
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
4438: LD_INT 1
4440: PPUSH
4441: LD_INT 2
4443: PPUSH
4444: CALL_OW 12
4448: PPUSH
4449: LD_VAR 0 3
4453: PPUSH
4454: CALL_OW 384
// h = CreateHuman ;
4458: LD_ADDR_VAR 0 11
4462: PUSH
4463: CALL_OW 44
4467: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4468: LD_VAR 0 11
4472: PPUSH
4473: LD_VAR 0 9
4477: PPUSH
4478: CALL_OW 52
// end ; b_workshop , b_factory :
4482: GO 4435
4484: POP
4485: POP
4486: GO 4633
4488: LD_INT 2
4490: DOUBLE
4491: EQUAL
4492: IFTRUE 4502
4494: LD_INT 3
4496: DOUBLE
4497: EQUAL
4498: IFTRUE 4502
4500: GO 4571
4502: POP
// for j = 1 to workshop do
4503: LD_ADDR_VAR 0 10
4507: PUSH
4508: DOUBLE
4509: LD_INT 1
4511: DEC
4512: ST_TO_ADDR
4513: LD_VAR 0 4
4517: PUSH
4518: FOR_TO
4519: IFFALSE 4567
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
4521: LD_INT 1
4523: PPUSH
4524: LD_INT 2
4526: PPUSH
4527: CALL_OW 12
4531: PPUSH
4532: LD_VAR 0 3
4536: PPUSH
4537: CALL_OW 383
// h = CreateHuman ;
4541: LD_ADDR_VAR 0 11
4545: PUSH
4546: CALL_OW 44
4550: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4551: LD_VAR 0 11
4555: PPUSH
4556: LD_VAR 0 9
4560: PPUSH
4561: CALL_OW 52
// end ; b_breastwork , b_bunker :
4565: GO 4518
4567: POP
4568: POP
4569: GO 4633
4571: LD_INT 31
4573: DOUBLE
4574: EQUAL
4575: IFTRUE 4585
4577: LD_INT 32
4579: DOUBLE
4580: EQUAL
4581: IFTRUE 4585
4583: GO 4632
4585: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
4586: LD_INT 1
4588: PPUSH
4589: LD_INT 2
4591: PPUSH
4592: CALL_OW 12
4596: PPUSH
4597: LD_VAR 0 3
4601: PPUSH
4602: CALL_OW 381
// h = CreateHuman ;
4606: LD_ADDR_VAR 0 11
4610: PUSH
4611: CALL_OW 44
4615: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4616: LD_VAR 0 11
4620: PPUSH
4621: LD_VAR 0 9
4625: PPUSH
4626: CALL_OW 52
// end ; end ;
4630: GO 4633
4632: POP
4633: GO 4147
4635: POP
4636: POP
// end ;
4637: LD_VAR 0 8
4641: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
4642: LD_INT 0
4644: PPUSH
4645: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
4646: LD_ADDR_VAR 0 4
4650: PUSH
4651: LD_INT 22
4653: PUSH
4654: LD_VAR 0 1
4658: PUSH
4659: EMPTY
4660: LIST
4661: LIST
4662: PUSH
4663: LD_INT 3
4665: PUSH
4666: LD_INT 23
4668: PUSH
4669: LD_INT 0
4671: PUSH
4672: EMPTY
4673: LIST
4674: LIST
4675: PUSH
4676: EMPTY
4677: LIST
4678: LIST
4679: PUSH
4680: EMPTY
4681: LIST
4682: LIST
4683: PPUSH
4684: CALL_OW 69
4688: PPUSH
4689: LD_VAR 0 2
4693: PUSH
4694: LD_INT 1
4696: ARRAY
4697: PPUSH
4698: CALL_OW 74
4702: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
4703: LD_VAR 0 4
4707: PPUSH
4708: CALL_OW 247
4712: PUSH
4713: LD_INT 2
4715: EQUAL
4716: IFFALSE 4780
// if GetControl ( i ) = control_manual then
4718: LD_VAR 0 4
4722: PPUSH
4723: CALL_OW 263
4727: PUSH
4728: LD_INT 1
4730: EQUAL
4731: IFFALSE 4750
// i = IsDrivenBy ( i ) else
4733: LD_ADDR_VAR 0 4
4737: PUSH
4738: LD_VAR 0 4
4742: PPUSH
4743: CALL_OW 311
4747: ST_TO_ADDR
4748: GO 4780
// if GetControl ( i ) = control_remote then
4750: LD_VAR 0 4
4754: PPUSH
4755: CALL_OW 263
4759: PUSH
4760: LD_INT 2
4762: EQUAL
4763: IFFALSE 4780
// i = IsControledBy ( i ) ;
4765: LD_ADDR_VAR 0 4
4769: PUSH
4770: LD_VAR 0 4
4774: PPUSH
4775: CALL_OW 312
4779: ST_TO_ADDR
// if GetType ( i ) = unit_building then
4780: LD_VAR 0 4
4784: PPUSH
4785: CALL_OW 247
4789: PUSH
4790: LD_INT 3
4792: EQUAL
4793: IFFALSE 4836
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
4795: LD_ADDR_VAR 0 4
4799: PUSH
4800: LD_VAR 0 4
4804: PPUSH
4805: CALL_OW 313
4809: PPUSH
4810: LD_INT 3
4812: PUSH
4813: LD_INT 23
4815: PUSH
4816: LD_INT 0
4818: PUSH
4819: EMPTY
4820: LIST
4821: LIST
4822: PUSH
4823: EMPTY
4824: LIST
4825: LIST
4826: PPUSH
4827: CALL_OW 72
4831: PUSH
4832: LD_INT 1
4834: ARRAY
4835: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
4836: LD_VAR 0 4
4840: PPUSH
4841: CALL_OW 247
4845: PUSH
4846: LD_INT 1
4848: EQUAL
4849: NOT
4850: IFFALSE 4910
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
4852: LD_ADDR_VAR 0 4
4856: PUSH
4857: LD_INT 22
4859: PUSH
4860: LD_VAR 0 1
4864: PUSH
4865: EMPTY
4866: LIST
4867: LIST
4868: PUSH
4869: LD_INT 21
4871: PUSH
4872: LD_INT 1
4874: PUSH
4875: EMPTY
4876: LIST
4877: LIST
4878: PUSH
4879: LD_INT 3
4881: PUSH
4882: LD_INT 23
4884: PUSH
4885: LD_INT 0
4887: PUSH
4888: EMPTY
4889: LIST
4890: LIST
4891: PUSH
4892: EMPTY
4893: LIST
4894: LIST
4895: PUSH
4896: EMPTY
4897: LIST
4898: LIST
4899: LIST
4900: PPUSH
4901: CALL_OW 69
4905: PUSH
4906: LD_INT 1
4908: ARRAY
4909: ST_TO_ADDR
// result = i ;
4910: LD_ADDR_VAR 0 3
4914: PUSH
4915: LD_VAR 0 4
4919: ST_TO_ADDR
// end ;
4920: LD_VAR 0 3
4924: RET
