// export you , americans , arabians , neutral ; export rulive ; starting begin interface_hidden := true ;
   0: LD_ADDR_OWVAR 54
   4: PUSH
   5: LD_INT 1
   7: ST_TO_ADDR
// disable ( 10 ) ;
   8: LD_INT 10
  10: DISABLE_MARKED
// set_sides ;
  11: CALL 49 0 0
// load_chars ;
  15: CALL 89 0 0
// place_in_ru_cars ;
  19: CALL 753 0 0
// place_ru_cars ( ru_place ) ;
  23: LD_INT 1
  25: PPUSH
  26: CALL 1058 0 1
// DIntro ;
  30: CALL 1337 0 0
// Save ;
  34: CALL 1188 0 0
// ChangeMap ( %_cont , %_cont ) ;
  38: LD_STRING %_cont
  40: PPUSH
  41: LD_STRING %_cont
  43: PPUSH
  44: CALL_OW 340
// end ;
  48: END
// function set_sides ; begin
  49: LD_INT 0
  51: PPUSH
// you := 3 ;
  52: LD_ADDR_EXP 1
  56: PUSH
  57: LD_INT 3
  59: ST_TO_ADDR
// americans := 1 ;
  60: LD_ADDR_EXP 2
  64: PUSH
  65: LD_INT 1
  67: ST_TO_ADDR
// arabians := 2 ;
  68: LD_ADDR_EXP 3
  72: PUSH
  73: LD_INT 2
  75: ST_TO_ADDR
// neutral := 0 ;
  76: LD_ADDR_EXP 4
  80: PUSH
  81: LD_INT 0
  83: ST_TO_ADDR
// end ; end_of_file
  84: LD_VAR 0 1
  88: RET
// export Burlak , Platonov , Karamazov , Petrovova , Gleb , Petrosyan , Dolgov , Lipshchin , Titov ; export used , ru_cars , other_from6i ; export function load_chars ; var i , so , en , me , sc ; begin
  89: LD_INT 0
  91: PPUSH
  92: PPUSH
  93: PPUSH
  94: PPUSH
  95: PPUSH
  96: PPUSH
// InitUc ;
  97: CALL_OW 18
// InitHc ;
 101: CALL_OW 19
// uc_side := you ;
 105: LD_ADDR_OWVAR 20
 109: PUSH
 110: LD_EXP 1
 114: ST_TO_ADDR
// uc_nation := nation_russian ;
 115: LD_ADDR_OWVAR 21
 119: PUSH
 120: LD_INT 3
 122: ST_TO_ADDR
// Platonov := MyCreateCharacter ( Platonov , 0 , class_soldier , true ) ;
 123: LD_ADDR_EXP 7
 127: PUSH
 128: LD_STRING Platonov
 130: PPUSH
 131: LD_INT 0
 133: PPUSH
 134: LD_INT 1
 136: PPUSH
 137: LD_INT 1
 139: PPUSH
 140: CALL 1101 0 4
 144: ST_TO_ADDR
// Burlak := MyCreateCharacter ( Burlak , 0 , class_mechanic , false ) ;
 145: LD_ADDR_EXP 6
 149: PUSH
 150: LD_STRING Burlak
 152: PPUSH
 153: LD_INT 0
 155: PPUSH
 156: LD_INT 3
 158: PPUSH
 159: LD_INT 0
 161: PPUSH
 162: CALL 1101 0 4
 166: ST_TO_ADDR
// Karamazov := MyCreateCharacter ( Karamazov , 0 , class_engineer , true ) ;
 167: LD_ADDR_EXP 8
 171: PUSH
 172: LD_STRING Karamazov
 174: PPUSH
 175: LD_INT 0
 177: PPUSH
 178: LD_INT 2
 180: PPUSH
 181: LD_INT 1
 183: PPUSH
 184: CALL 1101 0 4
 188: ST_TO_ADDR
// Petrovova := MyCreateCharacter ( Petrovova , 0 , class_soldier , true ) ;
 189: LD_ADDR_EXP 9
 193: PUSH
 194: LD_STRING Petrovova
 196: PPUSH
 197: LD_INT 0
 199: PPUSH
 200: LD_INT 1
 202: PPUSH
 203: LD_INT 1
 205: PPUSH
 206: CALL 1101 0 4
 210: ST_TO_ADDR
// Gleb := MyCreateCharacter ( Gleb , 0 , class_soldier , true ) ;
 211: LD_ADDR_EXP 10
 215: PUSH
 216: LD_STRING Gleb
 218: PPUSH
 219: LD_INT 0
 221: PPUSH
 222: LD_INT 1
 224: PPUSH
 225: LD_INT 1
 227: PPUSH
 228: CALL 1101 0 4
 232: ST_TO_ADDR
// Petrosyan := MyCreateCharacter ( Petrosyan , 0 , class_scientistic , true ) ;
 233: LD_ADDR_EXP 11
 237: PUSH
 238: LD_STRING Petrosyan
 240: PPUSH
 241: LD_INT 0
 243: PPUSH
 244: LD_INT 4
 246: PPUSH
 247: LD_INT 1
 249: PPUSH
 250: CALL 1101 0 4
 254: ST_TO_ADDR
// Dolgov := MyCreateCharacter ( Dolgov , 0 , class_scientistic , true ) ;
 255: LD_ADDR_EXP 12
 259: PUSH
 260: LD_STRING Dolgov
 262: PPUSH
 263: LD_INT 0
 265: PPUSH
 266: LD_INT 4
 268: PPUSH
 269: LD_INT 1
 271: PPUSH
 272: CALL 1101 0 4
 276: ST_TO_ADDR
// Lipshchin := MyCreateCharacter ( Lipshchin , 0 , class_soldier , true ) ;
 277: LD_ADDR_EXP 13
 281: PUSH
 282: LD_STRING Lipshchin
 284: PPUSH
 285: LD_INT 0
 287: PPUSH
 288: LD_INT 1
 290: PPUSH
 291: LD_INT 1
 293: PPUSH
 294: CALL 1101 0 4
 298: ST_TO_ADDR
// Titov := MyCreateCharacter ( Titov , 0 , class_soldier , true ) ;
 299: LD_ADDR_EXP 14
 303: PUSH
 304: LD_STRING Titov
 306: PPUSH
 307: LD_INT 0
 309: PPUSH
 310: LD_INT 1
 312: PPUSH
 313: LD_INT 1
 315: PPUSH
 316: CALL 1101 0 4
 320: ST_TO_ADDR
// used := [ Burlak , Karamazov , Petrovova , Gleb , Petrosyan , Lipshchin , Dolgov , Titov ] diff 0 ;
 321: LD_ADDR_EXP 15
 325: PUSH
 326: LD_EXP 6
 330: PUSH
 331: LD_EXP 8
 335: PUSH
 336: LD_EXP 9
 340: PUSH
 341: LD_EXP 10
 345: PUSH
 346: LD_EXP 11
 350: PUSH
 351: LD_EXP 13
 355: PUSH
 356: LD_EXP 12
 360: PUSH
 361: LD_EXP 14
 365: PUSH
 366: EMPTY
 367: LIST
 368: LIST
 369: LIST
 370: LIST
 371: LIST
 372: LIST
 373: LIST
 374: LIST
 375: PUSH
 376: LD_INT 0
 378: DIFF
 379: ST_TO_ADDR
// so := ( UnitFilter ( used , [ [ f_class , class_soldier ] ] ) + 0 ) ;
 380: LD_ADDR_VAR 0 3
 384: PUSH
 385: LD_EXP 15
 389: PPUSH
 390: LD_INT 25
 392: PUSH
 393: LD_INT 1
 395: PUSH
 396: EMPTY
 397: LIST
 398: LIST
 399: PUSH
 400: EMPTY
 401: LIST
 402: PPUSH
 403: CALL_OW 72
 407: PUSH
 408: LD_INT 0
 410: PLUS
 411: ST_TO_ADDR
// en := ( UnitFilter ( used , [ [ f_class , class_engineer ] ] ) + 0 ) ;
 412: LD_ADDR_VAR 0 4
 416: PUSH
 417: LD_EXP 15
 421: PPUSH
 422: LD_INT 25
 424: PUSH
 425: LD_INT 2
 427: PUSH
 428: EMPTY
 429: LIST
 430: LIST
 431: PUSH
 432: EMPTY
 433: LIST
 434: PPUSH
 435: CALL_OW 72
 439: PUSH
 440: LD_INT 0
 442: PLUS
 443: ST_TO_ADDR
// me := ( UnitFilter ( used , [ [ f_class , class_mechanic ] ] ) + 0 ) ;
 444: LD_ADDR_VAR 0 5
 448: PUSH
 449: LD_EXP 15
 453: PPUSH
 454: LD_INT 25
 456: PUSH
 457: LD_INT 3
 459: PUSH
 460: EMPTY
 461: LIST
 462: LIST
 463: PUSH
 464: EMPTY
 465: LIST
 466: PPUSH
 467: CALL_OW 72
 471: PUSH
 472: LD_INT 0
 474: PLUS
 475: ST_TO_ADDR
// sc := ( UnitFilter ( used , [ [ f_class , class_scientistic ] ] ) + 0 ) ;
 476: LD_ADDR_VAR 0 6
 480: PUSH
 481: LD_EXP 15
 485: PPUSH
 486: LD_INT 25
 488: PUSH
 489: LD_INT 4
 491: PUSH
 492: EMPTY
 493: LIST
 494: LIST
 495: PUSH
 496: EMPTY
 497: LIST
 498: PPUSH
 499: CALL_OW 72
 503: PUSH
 504: LD_INT 0
 506: PLUS
 507: ST_TO_ADDR
// for i := so to 4 do
 508: LD_ADDR_VAR 0 2
 512: PUSH
 513: DOUBLE
 514: LD_VAR 0 3
 518: DEC
 519: ST_TO_ADDR
 520: LD_INT 4
 522: PUSH
 523: FOR_TO
 524: IFFALSE 566
// begin PrepareSoldier ( Rand ( 10 , 23 ) div 10 , 3 ) ;
 526: LD_INT 10
 528: PPUSH
 529: LD_INT 23
 531: PPUSH
 532: CALL_OW 12
 536: PUSH
 537: LD_INT 10
 539: DIV
 540: PPUSH
 541: LD_INT 3
 543: PPUSH
 544: CALL_OW 381
// used := used ^ CreateHuman ;
 548: LD_ADDR_EXP 15
 552: PUSH
 553: LD_EXP 15
 557: PUSH
 558: CALL_OW 44
 562: ADD
 563: ST_TO_ADDR
// end ;
 564: GO 523
 566: POP
 567: POP
// for i := en to 1 do
 568: LD_ADDR_VAR 0 2
 572: PUSH
 573: DOUBLE
 574: LD_VAR 0 4
 578: DEC
 579: ST_TO_ADDR
 580: LD_INT 1
 582: PUSH
 583: FOR_TO
 584: IFFALSE 626
// begin PrepareEngineer ( Rand ( 10 , 23 ) div 10 , 3 ) ;
 586: LD_INT 10
 588: PPUSH
 589: LD_INT 23
 591: PPUSH
 592: CALL_OW 12
 596: PUSH
 597: LD_INT 10
 599: DIV
 600: PPUSH
 601: LD_INT 3
 603: PPUSH
 604: CALL_OW 382
// used := used ^ CreateHuman ;
 608: LD_ADDR_EXP 15
 612: PUSH
 613: LD_EXP 15
 617: PUSH
 618: CALL_OW 44
 622: ADD
 623: ST_TO_ADDR
// end ;
 624: GO 583
 626: POP
 627: POP
// for i := me to 1 do
 628: LD_ADDR_VAR 0 2
 632: PUSH
 633: DOUBLE
 634: LD_VAR 0 5
 638: DEC
 639: ST_TO_ADDR
 640: LD_INT 1
 642: PUSH
 643: FOR_TO
 644: IFFALSE 686
// begin PrepareMechanic ( Rand ( 10 , 23 ) div 10 , 3 ) ;
 646: LD_INT 10
 648: PPUSH
 649: LD_INT 23
 651: PPUSH
 652: CALL_OW 12
 656: PUSH
 657: LD_INT 10
 659: DIV
 660: PPUSH
 661: LD_INT 3
 663: PPUSH
 664: CALL_OW 383
// used := used ^ CreateHuman ;
 668: LD_ADDR_EXP 15
 672: PUSH
 673: LD_EXP 15
 677: PUSH
 678: CALL_OW 44
 682: ADD
 683: ST_TO_ADDR
// end ;
 684: GO 643
 686: POP
 687: POP
// for i := sc to 2 do
 688: LD_ADDR_VAR 0 2
 692: PUSH
 693: DOUBLE
 694: LD_VAR 0 6
 698: DEC
 699: ST_TO_ADDR
 700: LD_INT 2
 702: PUSH
 703: FOR_TO
 704: IFFALSE 746
// begin PrepareScientist ( Rand ( 10 , 23 ) div 10 , 3 ) ;
 706: LD_INT 10
 708: PPUSH
 709: LD_INT 23
 711: PPUSH
 712: CALL_OW 12
 716: PUSH
 717: LD_INT 10
 719: DIV
 720: PPUSH
 721: LD_INT 3
 723: PPUSH
 724: CALL_OW 384
// used := used ^ CreateHuman ;
 728: LD_ADDR_EXP 15
 732: PUSH
 733: LD_EXP 15
 737: PUSH
 738: CALL_OW 44
 742: ADD
 743: ST_TO_ADDR
// end ;
 744: GO 703
 746: POP
 747: POP
// end ;
 748: LD_VAR 0 1
 752: RET
// export function place_in_ru_cars ; var cars , car , i ; begin
 753: LD_INT 0
 755: PPUSH
 756: PPUSH
 757: PPUSH
 758: PPUSH
// cars := [ [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] , [ ru_medium_tracked , ru_heavy_machine_gun ] ] ;
 759: LD_ADDR_VAR 0 2
 763: PUSH
 764: LD_INT 22
 766: PUSH
 767: LD_INT 42
 769: PUSH
 770: EMPTY
 771: LIST
 772: LIST
 773: PUSH
 774: LD_INT 22
 776: PUSH
 777: LD_INT 42
 779: PUSH
 780: EMPTY
 781: LIST
 782: LIST
 783: PUSH
 784: LD_INT 22
 786: PUSH
 787: LD_INT 42
 789: PUSH
 790: EMPTY
 791: LIST
 792: LIST
 793: PUSH
 794: LD_INT 22
 796: PUSH
 797: LD_INT 42
 799: PUSH
 800: EMPTY
 801: LIST
 802: LIST
 803: PUSH
 804: LD_INT 22
 806: PUSH
 807: LD_INT 42
 809: PUSH
 810: EMPTY
 811: LIST
 812: LIST
 813: PUSH
 814: LD_INT 22
 816: PUSH
 817: LD_INT 42
 819: PUSH
 820: EMPTY
 821: LIST
 822: LIST
 823: PUSH
 824: LD_INT 22
 826: PUSH
 827: LD_INT 42
 829: PUSH
 830: EMPTY
 831: LIST
 832: LIST
 833: PUSH
 834: LD_INT 22
 836: PUSH
 837: LD_INT 42
 839: PUSH
 840: EMPTY
 841: LIST
 842: LIST
 843: PUSH
 844: EMPTY
 845: LIST
 846: LIST
 847: LIST
 848: LIST
 849: LIST
 850: LIST
 851: LIST
 852: LIST
 853: ST_TO_ADDR
// InitUc ;
 854: CALL_OW 18
// InitVc ;
 858: CALL_OW 20
// vc_control := control_manual ;
 862: LD_ADDR_OWVAR 38
 866: PUSH
 867: LD_INT 1
 869: ST_TO_ADDR
// vc_engine := engine_combustion ;
 870: LD_ADDR_OWVAR 39
 874: PUSH
 875: LD_INT 1
 877: ST_TO_ADDR
// uc_side := you ;
 878: LD_ADDR_OWVAR 20
 882: PUSH
 883: LD_EXP 1
 887: ST_TO_ADDR
// uc_nation := nation_russian ;
 888: LD_ADDR_OWVAR 21
 892: PUSH
 893: LD_INT 3
 895: ST_TO_ADDR
// ru_cars := [ ] ;
 896: LD_ADDR_EXP 16
 900: PUSH
 901: EMPTY
 902: ST_TO_ADDR
// for i := 1 to 8 do
 903: LD_ADDR_VAR 0 4
 907: PUSH
 908: DOUBLE
 909: LD_INT 1
 911: DEC
 912: ST_TO_ADDR
 913: LD_INT 8
 915: PUSH
 916: FOR_TO
 917: IFFALSE 1051
// begin vc_chassis := cars [ i ] [ 1 ] ;
 919: LD_ADDR_OWVAR 37
 923: PUSH
 924: LD_VAR 0 2
 928: PUSH
 929: LD_VAR 0 4
 933: ARRAY
 934: PUSH
 935: LD_INT 1
 937: ARRAY
 938: ST_TO_ADDR
// vc_weapon := cars [ i ] [ 2 ] ;
 939: LD_ADDR_OWVAR 40
 943: PUSH
 944: LD_VAR 0 2
 948: PUSH
 949: LD_VAR 0 4
 953: ARRAY
 954: PUSH
 955: LD_INT 2
 957: ARRAY
 958: ST_TO_ADDR
// uc_direction := 5 ;
 959: LD_ADDR_OWVAR 24
 963: PUSH
 964: LD_INT 5
 966: ST_TO_ADDR
// vc_fuel_battery := Rand ( 70 , 90 ) ;
 967: LD_ADDR_OWVAR 41
 971: PUSH
 972: LD_INT 70
 974: PPUSH
 975: LD_INT 90
 977: PPUSH
 978: CALL_OW 12
 982: ST_TO_ADDR
// car := CreateVehicle ;
 983: LD_ADDR_VAR 0 3
 987: PUSH
 988: CALL_OW 45
 992: ST_TO_ADDR
// ru_cars := ru_cars ^ car ;
 993: LD_ADDR_EXP 16
 997: PUSH
 998: LD_EXP 16
1002: PUSH
1003: LD_VAR 0 3
1007: ADD
1008: ST_TO_ADDR
// PlaceHumanInUnit ( used [ i ] , car ) ;
1009: LD_EXP 15
1013: PUSH
1014: LD_VAR 0 4
1018: ARRAY
1019: PPUSH
1020: LD_VAR 0 3
1024: PPUSH
1025: CALL_OW 52
// SetLives ( car , Rand ( 750 , 1000 ) ) ;
1029: LD_VAR 0 3
1033: PPUSH
1034: LD_INT 750
1036: PPUSH
1037: LD_INT 1000
1039: PPUSH
1040: CALL_OW 12
1044: PPUSH
1045: CALL_OW 234
// end ;
1049: GO 916
1051: POP
1052: POP
// end ;
1053: LD_VAR 0 1
1057: RET
// export function place_ru_cars ( area ) ; var i ; begin
1058: LD_INT 0
1060: PPUSH
1061: PPUSH
// for i in ru_cars do
1062: LD_ADDR_VAR 0 3
1066: PUSH
1067: LD_EXP 16
1071: PUSH
1072: FOR_IN
1073: IFFALSE 1094
// PlaceUnitArea ( i , area , false ) ;
1075: LD_VAR 0 3
1079: PPUSH
1080: LD_VAR 0 1
1084: PPUSH
1085: LD_INT 0
1087: PPUSH
1088: CALL_OW 49
1092: GO 1072
1094: POP
1095: POP
// end ;
1096: LD_VAR 0 2
1100: RET
// function MyCreateCharacter ( name , loc , unclass , new ) ; begin
1101: LD_INT 0
1103: PPUSH
// if new then
1104: LD_VAR 0 4
1108: IFFALSE 1127
// result := NewCharacter ( name ) else
1110: LD_ADDR_VAR 0 5
1114: PUSH
1115: LD_VAR 0 1
1119: PPUSH
1120: CALL_OW 25
1124: ST_TO_ADDR
1125: GO 1163
// begin if CheckCharacterSet ( name ) then
1127: LD_VAR 0 1
1131: PPUSH
1132: CALL_OW 29
1136: IFFALSE 1155
// result := CreateCharacter ( name ) else
1138: LD_ADDR_VAR 0 5
1142: PUSH
1143: LD_VAR 0 1
1147: PPUSH
1148: CALL_OW 34
1152: ST_TO_ADDR
1153: GO 1163
// result := 0 ;
1155: LD_ADDR_VAR 0 5
1159: PUSH
1160: LD_INT 0
1162: ST_TO_ADDR
// end ; if unclass then
1163: LD_VAR 0 3
1167: IFFALSE 1183
// SetClass ( result , unclass ) ;
1169: LD_VAR 0 5
1173: PPUSH
1174: LD_VAR 0 3
1178: PPUSH
1179: CALL_OW 336
// end ;
1183: LD_VAR 0 5
1187: RET
// export function Save ; begin
1188: LD_INT 0
1190: PPUSH
// end ; end_of_file
1191: LD_VAR 0 1
1195: RET
// var Bur , Bel , Pla , Kar , Ptr , Glb , Pet , Stv , Dol , Lip , Tit ; var donttalk ; function set_shorts ; begin
1196: LD_INT 0
1198: PPUSH
// Bur := Burlak ;
1199: LD_ADDR_LOC 1
1203: PUSH
1204: LD_EXP 6
1208: ST_TO_ADDR
// Pla := Platonov ;
1209: LD_ADDR_LOC 3
1213: PUSH
1214: LD_EXP 7
1218: ST_TO_ADDR
// Kar := Karamazov ;
1219: LD_ADDR_LOC 4
1223: PUSH
1224: LD_EXP 8
1228: ST_TO_ADDR
// Ptr := Petrovova ;
1229: LD_ADDR_LOC 5
1233: PUSH
1234: LD_EXP 9
1238: ST_TO_ADDR
// Glb := Gleb ;
1239: LD_ADDR_LOC 6
1243: PUSH
1244: LD_EXP 10
1248: ST_TO_ADDR
// Pet := Petrosyan ;
1249: LD_ADDR_LOC 7
1253: PUSH
1254: LD_EXP 11
1258: ST_TO_ADDR
// Dol := Dolgov ;
1259: LD_ADDR_LOC 9
1263: PUSH
1264: LD_EXP 12
1268: ST_TO_ADDR
// Lip := Lipshchin ;
1269: LD_ADDR_LOC 10
1273: PUSH
1274: LD_EXP 13
1278: ST_TO_ADDR
// Tit := Titov ;
1279: LD_ADDR_LOC 11
1283: PUSH
1284: LD_EXP 14
1288: ST_TO_ADDR
// donttalk := used diff [ Burlak , Karamazov , Petrovova , Gleb , Petrosyan ] ;
1289: LD_ADDR_LOC 12
1293: PUSH
1294: LD_EXP 15
1298: PUSH
1299: LD_EXP 6
1303: PUSH
1304: LD_EXP 8
1308: PUSH
1309: LD_EXP 9
1313: PUSH
1314: LD_EXP 10
1318: PUSH
1319: LD_EXP 11
1323: PUSH
1324: EMPTY
1325: LIST
1326: LIST
1327: LIST
1328: LIST
1329: LIST
1330: DIFF
1331: ST_TO_ADDR
// end ;
1332: LD_VAR 0 1
1336: RET
// export function DIntro ; var pos , auta , i , hex , rcars , mt , vzdal ; begin
1337: LD_INT 0
1339: PPUSH
1340: PPUSH
1341: PPUSH
1342: PPUSH
1343: PPUSH
1344: PPUSH
1345: PPUSH
1346: PPUSH
// set_shorts ;
1347: CALL 1196 0 0
// auta := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ;
1351: LD_ADDR_VAR 0 3
1355: PUSH
1356: LD_INT 22
1358: PUSH
1359: LD_EXP 1
1363: PUSH
1364: EMPTY
1365: LIST
1366: LIST
1367: PUSH
1368: LD_INT 21
1370: PUSH
1371: LD_INT 2
1373: PUSH
1374: EMPTY
1375: LIST
1376: LIST
1377: PUSH
1378: EMPTY
1379: LIST
1380: LIST
1381: PPUSH
1382: CALL_OW 69
1386: ST_TO_ADDR
// vzdal := [ ] ;
1387: LD_ADDR_VAR 0 8
1391: PUSH
1392: EMPTY
1393: ST_TO_ADDR
// for i in auta do
1394: LD_ADDR_VAR 0 4
1398: PUSH
1399: LD_VAR 0 3
1403: PUSH
1404: FOR_IN
1405: IFFALSE 1439
// begin vzdal := vzdal ^ [ GetDistUnitXY ( i , 20 , 2 ) ] ;
1407: LD_ADDR_VAR 0 8
1411: PUSH
1412: LD_VAR 0 8
1416: PUSH
1417: LD_VAR 0 4
1421: PPUSH
1422: LD_INT 20
1424: PPUSH
1425: LD_INT 2
1427: PPUSH
1428: CALL_OW 297
1432: PUSH
1433: EMPTY
1434: LIST
1435: ADD
1436: ST_TO_ADDR
// end ;
1437: GO 1404
1439: POP
1440: POP
// auta := SortListByListAsc ( auta , vzdal ) ;
1441: LD_ADDR_VAR 0 3
1445: PUSH
1446: LD_VAR 0 3
1450: PPUSH
1451: LD_VAR 0 8
1455: PPUSH
1456: CALL_OW 76
1460: ST_TO_ADDR
// interface_hidden := true ;
1461: LD_ADDR_OWVAR 54
1465: PUSH
1466: LD_INT 1
1468: ST_TO_ADDR
// CenterNowOnUnits ( auta ) ;
1469: LD_VAR 0 3
1473: PPUSH
1474: CALL_OW 87
// RevealFogArea ( you , co_vidi ) ;
1478: LD_EXP 1
1482: PPUSH
1483: LD_INT 3
1485: PPUSH
1486: CALL_OW 332
// enable ( 10 ) ;
1490: LD_INT 10
1492: ENABLE_MARKED
// wait ( 0 0$1 ) ;
1493: LD_INT 35
1495: PPUSH
1496: CALL_OW 67
// SayRadio ( Pla , DIntro-Pla-1 ) ;
1500: LD_LOC 3
1504: PPUSH
1505: LD_STRING DIntro-Pla-1
1507: PPUSH
1508: CALL_OW 94
// Say ( Bur , DIntro-Bur-1 ) ;
1512: LD_LOC 1
1516: PPUSH
1517: LD_STRING DIntro-Bur-1
1519: PPUSH
1520: CALL_OW 88
// SayRadio ( Pla , DIntro-Pla-2 ) ;
1524: LD_LOC 3
1528: PPUSH
1529: LD_STRING DIntro-Pla-2
1531: PPUSH
1532: CALL_OW 94
// Say ( Bur , DIntro-Bur-2 ) ;
1536: LD_LOC 1
1540: PPUSH
1541: LD_STRING DIntro-Bur-2
1543: PPUSH
1544: CALL_OW 88
// SayRadio ( Pla , DIntro-Pla-3 ) ;
1548: LD_LOC 3
1552: PPUSH
1553: LD_STRING DIntro-Pla-3
1555: PPUSH
1556: CALL_OW 94
// ComMoveToArea ( auta [ 1 ] , ru_exit ) ;
1560: LD_VAR 0 3
1564: PUSH
1565: LD_INT 1
1567: ARRAY
1568: PPUSH
1569: LD_INT 2
1571: PPUSH
1572: CALL_OW 113
// for i := 1 to auta - 1 do
1576: LD_ADDR_VAR 0 4
1580: PUSH
1581: DOUBLE
1582: LD_INT 1
1584: DEC
1585: ST_TO_ADDR
1586: LD_VAR 0 3
1590: PUSH
1591: LD_INT 1
1593: MINUS
1594: PUSH
1595: FOR_TO
1596: IFFALSE 1630
// begin ComMoveUnit ( auta [ i + 1 ] , auta [ i ] ) ;
1598: LD_VAR 0 3
1602: PUSH
1603: LD_VAR 0 4
1607: PUSH
1608: LD_INT 1
1610: PLUS
1611: ARRAY
1612: PPUSH
1613: LD_VAR 0 3
1617: PUSH
1618: LD_VAR 0 4
1622: ARRAY
1623: PPUSH
1624: CALL_OW 112
// end ;
1628: GO 1595
1630: POP
1631: POP
// AddComMoveToArea ( auta , ru_exit ) ;
1632: LD_VAR 0 3
1636: PPUSH
1637: LD_INT 2
1639: PPUSH
1640: CALL_OW 173
// mt := tick + 0 0$2 ;
1644: LD_ADDR_VAR 0 7
1648: PUSH
1649: LD_OWVAR 1
1653: PUSH
1654: LD_INT 70
1656: PLUS
1657: ST_TO_ADDR
// while FilterAllUnits ( [ [ f_side , you ] , [ f_placed ] ] ) do
1658: LD_INT 22
1660: PUSH
1661: LD_EXP 1
1665: PUSH
1666: EMPTY
1667: LIST
1668: LIST
1669: PUSH
1670: LD_INT 52
1672: PUSH
1673: EMPTY
1674: LIST
1675: PUSH
1676: EMPTY
1677: LIST
1678: LIST
1679: PPUSH
1680: CALL_OW 69
1684: IFFALSE 1833
// begin wait ( 0 0$0.2 ) ;
1686: LD_INT 7
1688: PPUSH
1689: CALL_OW 67
// for i in auta do
1693: LD_ADDR_VAR 0 4
1697: PUSH
1698: LD_VAR 0 3
1702: PUSH
1703: FOR_IN
1704: IFFALSE 1759
// begin if GetLives ( i ) < 500 then
1706: LD_VAR 0 4
1710: PPUSH
1711: CALL_OW 256
1715: PUSH
1716: LD_INT 500
1718: LESS
1719: IFFALSE 1733
// SetLives ( i , 500 ) ;
1721: LD_VAR 0 4
1725: PPUSH
1726: LD_INT 500
1728: PPUSH
1729: CALL_OW 234
// if not HasTask ( i ) then
1733: LD_VAR 0 4
1737: PPUSH
1738: CALL_OW 314
1742: NOT
1743: IFFALSE 1757
// ComMoveToArea ( i , ru_exit ) ;
1745: LD_VAR 0 4
1749: PPUSH
1750: LD_INT 2
1752: PPUSH
1753: CALL_OW 113
// end ;
1757: GO 1703
1759: POP
1760: POP
// for i in FilterUnitsInArea ( ru_exit , [ ] ) do
1761: LD_ADDR_VAR 0 4
1765: PUSH
1766: LD_INT 2
1768: PPUSH
1769: EMPTY
1770: PPUSH
1771: CALL_OW 70
1775: PUSH
1776: FOR_IN
1777: IFFALSE 1790
// RemoveUnit ( i ) ;
1779: LD_VAR 0 4
1783: PPUSH
1784: CALL_OW 64
1788: GO 1776
1790: POP
1791: POP
// if tick > mt then
1792: LD_OWVAR 1
1796: PUSH
1797: LD_VAR 0 7
1801: GREATER
1802: IFFALSE 1831
// begin CenterOnUnits ( auta [ 3 ] ) ;
1804: LD_VAR 0 3
1808: PUSH
1809: LD_INT 3
1811: ARRAY
1812: PPUSH
1813: CALL_OW 85
// mt := tick + 0 0$2 ;
1817: LD_ADDR_VAR 0 7
1821: PUSH
1822: LD_OWVAR 1
1826: PUSH
1827: LD_INT 70
1829: PLUS
1830: ST_TO_ADDR
// end ; end ;
1831: GO 1658
// ingame_video := false ;
1833: LD_ADDR_OWVAR 52
1837: PUSH
1838: LD_INT 0
1840: ST_TO_ADDR
// interface_hidden := false ;
1841: LD_ADDR_OWVAR 54
1845: PUSH
1846: LD_INT 0
1848: ST_TO_ADDR
// end ;
1849: LD_VAR 0 1
1853: RET
// every 0 0$0.5 marked 10 do var arabsc , arabsp , i ;
1854: GO 1856
1856: DISABLE
1857: LD_INT 0
1859: PPUSH
1860: PPUSH
1861: PPUSH
// begin ComEnterUnit ( ar1 , b1 ) ;
1862: LD_INT 26
1864: PPUSH
1865: LD_INT 1
1867: PPUSH
1868: CALL_OW 120
// ComEnterUnit ( ar2 , b2 ) ;
1872: LD_INT 16
1874: PPUSH
1875: LD_INT 2
1877: PPUSH
1878: CALL_OW 120
// arabsc := FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_vehicle ] ] ) ;
1882: LD_ADDR_VAR 0 1
1886: PUSH
1887: LD_INT 22
1889: PUSH
1890: LD_EXP 3
1894: PUSH
1895: EMPTY
1896: LIST
1897: LIST
1898: PUSH
1899: LD_INT 21
1901: PUSH
1902: LD_INT 2
1904: PUSH
1905: EMPTY
1906: LIST
1907: LIST
1908: PUSH
1909: EMPTY
1910: LIST
1911: LIST
1912: PPUSH
1913: CALL_OW 69
1917: ST_TO_ADDR
// arabsp := FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_human ] ] ) diff [ ar1 , ar2 ] ;
1918: LD_ADDR_VAR 0 2
1922: PUSH
1923: LD_INT 22
1925: PUSH
1926: LD_EXP 3
1930: PUSH
1931: EMPTY
1932: LIST
1933: LIST
1934: PUSH
1935: LD_INT 21
1937: PUSH
1938: LD_INT 1
1940: PUSH
1941: EMPTY
1942: LIST
1943: LIST
1944: PUSH
1945: EMPTY
1946: LIST
1947: LIST
1948: PPUSH
1949: CALL_OW 69
1953: PUSH
1954: LD_INT 26
1956: PUSH
1957: LD_INT 16
1959: PUSH
1960: EMPTY
1961: LIST
1962: LIST
1963: DIFF
1964: ST_TO_ADDR
// for i := 1 to arabsc do
1965: LD_ADDR_VAR 0 3
1969: PUSH
1970: DOUBLE
1971: LD_INT 1
1973: DEC
1974: ST_TO_ADDR
1975: LD_VAR 0 1
1979: PUSH
1980: FOR_TO
1981: IFFALSE 2011
// begin ComEnterUnit ( arabsp [ i ] , arabsc [ i ] ) ;
1983: LD_VAR 0 2
1987: PUSH
1988: LD_VAR 0 3
1992: ARRAY
1993: PPUSH
1994: LD_VAR 0 1
1998: PUSH
1999: LD_VAR 0 3
2003: ARRAY
2004: PPUSH
2005: CALL_OW 120
// end ;
2009: GO 1980
2011: POP
2012: POP
// while not UnitFilter ( arabsc , [ [ f_occupied ] ] ) do
2013: LD_VAR 0 1
2017: PPUSH
2018: LD_INT 59
2020: PUSH
2021: EMPTY
2022: LIST
2023: PUSH
2024: EMPTY
2025: LIST
2026: PPUSH
2027: CALL_OW 72
2031: NOT
2032: IFFALSE 2043
// wait ( 0 0$1 ) ;
2034: LD_INT 35
2036: PPUSH
2037: CALL_OW 67
2041: GO 2013
// wait ( 0 0$3 ) ;
2043: LD_INT 105
2045: PPUSH
2046: CALL_OW 67
// ComMoveToArea ( arabsc , ru_exit ) ;
2050: LD_VAR 0 1
2054: PPUSH
2055: LD_INT 2
2057: PPUSH
2058: CALL_OW 113
// wait ( 0 0$2 ) ;
2062: LD_INT 70
2064: PPUSH
2065: CALL_OW 67
// ComStop ( arabsc ) ;
2069: LD_VAR 0 1
2073: PPUSH
2074: CALL_OW 141
// wait ( 0 0$1 ) ;
2078: LD_INT 35
2080: PPUSH
2081: CALL_OW 67
// ComMoveToArea ( arabsc , ru_exit ) ;
2085: LD_VAR 0 1
2089: PPUSH
2090: LD_INT 2
2092: PPUSH
2093: CALL_OW 113
// end ;
2097: PPOPN 3
2099: END
// on DestinationUnreachable ( un ) do begin ComStop ( un ) ;
2100: LD_VAR 0 1
2104: PPUSH
2105: CALL_OW 141
// wait ( 0 0$0.5 ) ;
2109: LD_INT 18
2111: PPUSH
2112: CALL_OW 67
// AddComMoveToArea ( un , ru_exit ) ;
2116: LD_VAR 0 1
2120: PPUSH
2121: LD_INT 2
2123: PPUSH
2124: CALL_OW 173
// end ;
2128: PPOPN 1
2130: END
// on Contact ( side1 , side2 ) do begin if ( ( side1 = you ) and ( side2 = arabians ) ) or ( ( side2 = you ) and ( side1 = arabians ) ) then
2131: LD_VAR 0 1
2135: PUSH
2136: LD_EXP 1
2140: EQUAL
2141: PUSH
2142: LD_VAR 0 2
2146: PUSH
2147: LD_EXP 3
2151: EQUAL
2152: AND
2153: PUSH
2154: LD_VAR 0 2
2158: PUSH
2159: LD_EXP 1
2163: EQUAL
2164: PUSH
2165: LD_VAR 0 1
2169: PUSH
2170: LD_EXP 3
2174: EQUAL
2175: AND
2176: OR
2177: IFFALSE 2195
// begin music_nat := nation_arabian_music ;
2179: LD_ADDR_OWVAR 71
2183: PUSH
2184: LD_INT 4
2186: ST_TO_ADDR
// music_class := music_combat ;
2187: LD_ADDR_OWVAR 72
2191: PUSH
2192: LD_INT 1
2194: ST_TO_ADDR
// end ; end ;
2195: PPOPN 2
2197: END
