// export you , you2 , americans , arabians , neutral ; export ai , ai_nation ; export apemans , rulive ; export cargo_am ; export Vsevolod_vstoupil ; export Vsevolod_uderna_group ; export belkovfreed ; export OvsyenkoTaken ; export OvsyenkoCaptured ; export mcdef_difficulty ; export mcatt_difficulty ; export na_kopci_mcdef_difficulty ; export b1_levels , b2_levels , b3_levels , b4_levels , b5_levels ; export normal1_utok , normal2_utok , normal3_utok , normal4_utok , vsevolod_attack , vsevolod_final_attack ; export mine_obj_completed ; export cas_mezi_utoky ; export cas_prvniho_utoku ; export kolik_ma_vsevolod_casu ; export kolik_ma_vsevolod_mezi_utoky ; export kolik_je_v_depotu ; export kolik_je_sib_v_hornim ; export zivoty_armoury , zivoty_armoury2 ; export utoci_max ; export all_labs ; export function Vyhra ; begin
   0: LD_INT 0
   2: PPUSH
// end ;
   3: LD_VAR 0 1
   7: RET
// function set_sides ; begin
   8: LD_INT 0
  10: PPUSH
// you := 3 ;
  11: LD_ADDR_EXP 1
  15: PUSH
  16: LD_INT 3
  18: ST_TO_ADDR
// you2 := 6 ;
  19: LD_ADDR_EXP 2
  23: PUSH
  24: LD_INT 6
  26: ST_TO_ADDR
// americans := 1 ;
  27: LD_ADDR_EXP 3
  31: PUSH
  32: LD_INT 1
  34: ST_TO_ADDR
// arabians := 2 ;
  35: LD_ADDR_EXP 4
  39: PUSH
  40: LD_INT 2
  42: ST_TO_ADDR
// neutral := 0 ;
  43: LD_ADDR_EXP 5
  47: PUSH
  48: LD_INT 0
  50: ST_TO_ADDR
// OvsyenkoTaken = 0 ;
  51: LD_ADDR_EXP 14
  55: PUSH
  56: LD_INT 0
  58: ST_TO_ADDR
// ai := americans ;
  59: LD_ADDR_EXP 6
  63: PUSH
  64: LD_EXP 3
  68: ST_TO_ADDR
// ai_nation := nation_american ;
  69: LD_ADDR_EXP 7
  73: PUSH
  74: LD_INT 1
  76: ST_TO_ADDR
// end ;
  77: LD_VAR 0 1
  81: RET
// var gleb_lives ; every 0 0$1 trigger gleb_lives <> GetLives ( gleb ) do var i ;
  82: LD_LOC 1
  86: PUSH
  87: LD_EXP 65
  91: PPUSH
  92: CALL_OW 256
  96: NONEQUAL
  97: IFFALSE 173
  99: GO 101
 101: DISABLE
 102: LD_INT 0
 104: PPUSH
// begin for i in FilterAllUnits ( [ f_side , you ] ) do
 105: LD_ADDR_VAR 0 1
 109: PUSH
 110: LD_INT 22
 112: PUSH
 113: LD_EXP 1
 117: PUSH
 118: EMPTY
 119: LIST
 120: LIST
 121: PPUSH
 122: CALL_OW 69
 126: PUSH
 127: FOR_IN
 128: IFFALSE 156
// if WantsToAttack ( i ) = Gleb then
 130: LD_VAR 0 1
 134: PPUSH
 135: CALL_OW 319
 139: PUSH
 140: LD_EXP 65
 144: EQUAL
 145: IFFALSE 154
// YouLost ( Gleb ) ;
 147: LD_STRING Gleb
 149: PPUSH
 150: CALL_OW 104
 154: GO 127
 156: POP
 157: POP
// gleb_lives := GetLives ( gleb ) ;
 158: LD_ADDR_LOC 1
 162: PUSH
 163: LD_EXP 65
 167: PPUSH
 168: CALL_OW 256
 172: ST_TO_ADDR
// end ;
 173: PPOPN 1
 175: END
// every 0 0$5 trigger not FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_class , class_engineer ] , [ f_btype , b_warehouse ] , [ f_btype , b_depot ] , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) do
 176: LD_INT 22
 178: PUSH
 179: LD_EXP 1
 183: PUSH
 184: EMPTY
 185: LIST
 186: LIST
 187: PUSH
 188: LD_INT 2
 190: PUSH
 191: LD_INT 25
 193: PUSH
 194: LD_INT 2
 196: PUSH
 197: EMPTY
 198: LIST
 199: LIST
 200: PUSH
 201: LD_INT 30
 203: PUSH
 204: LD_INT 1
 206: PUSH
 207: EMPTY
 208: LIST
 209: LIST
 210: PUSH
 211: LD_INT 30
 213: PUSH
 214: LD_INT 0
 216: PUSH
 217: EMPTY
 218: LIST
 219: LIST
 220: PUSH
 221: LD_INT 30
 223: PUSH
 224: LD_INT 6
 226: PUSH
 227: EMPTY
 228: LIST
 229: LIST
 230: PUSH
 231: LD_INT 30
 233: PUSH
 234: LD_INT 7
 236: PUSH
 237: EMPTY
 238: LIST
 239: LIST
 240: PUSH
 241: LD_INT 30
 243: PUSH
 244: LD_INT 8
 246: PUSH
 247: EMPTY
 248: LIST
 249: LIST
 250: PUSH
 251: EMPTY
 252: LIST
 253: LIST
 254: LIST
 255: LIST
 256: LIST
 257: LIST
 258: LIST
 259: PUSH
 260: EMPTY
 261: LIST
 262: LIST
 263: PPUSH
 264: CALL_OW 69
 268: NOT
 269: IFFALSE 281
 271: GO 273
 273: DISABLE
// begin YouLost ( NoDepotNoEngineerNoLab ) ;
 274: LD_STRING NoDepotNoEngineerNoLab
 276: PPUSH
 277: CALL_OW 104
// end ;
 281: END
// every 1 trigger OvsyenkoTaken = 0 do
 282: LD_EXP 14
 286: PUSH
 287: LD_INT 0
 289: EQUAL
 290: IFFALSE 300
 292: GO 294
 294: DISABLE
// begin BlockMarchNorth ;
 295: CALL 11843 0 0
// enable ;
 299: ENABLE
// end ;
 300: END
// export function VyhraResearch ; begin
 301: LD_INT 0
 303: PPUSH
// set_medals ;
 304: CALL 447 0 0
// GiveMedals ( Research ) ;
 308: LD_STRING Research
 310: PPUSH
 311: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) ) ;
 315: LD_INT 22
 317: PUSH
 318: LD_EXP 1
 322: PUSH
 323: EMPTY
 324: LIST
 325: LIST
 326: PUSH
 327: LD_INT 21
 329: PUSH
 330: LD_INT 1
 332: PUSH
 333: EMPTY
 334: LIST
 335: LIST
 336: PUSH
 337: LD_INT 23
 339: PUSH
 340: LD_INT 3
 342: PUSH
 343: EMPTY
 344: LIST
 345: LIST
 346: PUSH
 347: EMPTY
 348: LIST
 349: LIST
 350: LIST
 351: PPUSH
 352: CALL_OW 69
 356: PPUSH
 357: CALL_OW 43
// Save ;
 361: CALL 8537 0 0
// YouWin ;
 365: CALL_OW 103
// end ;
 369: LD_VAR 0 1
 373: RET
// export function VyhraExit ; begin
 374: LD_INT 0
 376: PPUSH
// set_medals ;
 377: CALL 447 0 0
// GiveMedals ( Exit ) ;
 381: LD_STRING Exit
 383: PPUSH
 384: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) ) ;
 388: LD_INT 22
 390: PUSH
 391: LD_EXP 1
 395: PUSH
 396: EMPTY
 397: LIST
 398: LIST
 399: PUSH
 400: LD_INT 21
 402: PUSH
 403: LD_INT 1
 405: PUSH
 406: EMPTY
 407: LIST
 408: LIST
 409: PUSH
 410: LD_INT 23
 412: PUSH
 413: LD_INT 3
 415: PUSH
 416: EMPTY
 417: LIST
 418: LIST
 419: PUSH
 420: EMPTY
 421: LIST
 422: LIST
 423: LIST
 424: PPUSH
 425: CALL_OW 69
 429: PPUSH
 430: CALL_OW 43
// Save ;
 434: CALL 8537 0 0
// YouWin ;
 438: CALL_OW 103
// end ;
 442: LD_VAR 0 1
 446: RET
// export function set_medals ; begin
 447: LD_INT 0
 449: PPUSH
// SA_EndMission ( 3 , 6 , VsevolodSaved , OvsyenkoTaken and not OvsyenkoCaptured , GetTech ( tech_MatPred , you ) = state_researched ) ;
 450: LD_INT 3
 452: PPUSH
 453: LD_INT 6
 455: PPUSH
 456: LD_EXP 56
 460: PPUSH
 461: LD_EXP 14
 465: PUSH
 466: LD_EXP 15
 470: NOT
 471: AND
 472: PPUSH
 473: LD_INT 9
 475: PPUSH
 476: LD_EXP 1
 480: PPUSH
 481: CALL_OW 321
 485: PUSH
 486: LD_INT 2
 488: EQUAL
 489: PPUSH
 490: CALL 32945 0 5
// AddMedal ( Vsevolod , VsevolodSaved ) ;
 494: LD_STRING Vsevolod
 496: PPUSH
 497: LD_EXP 56
 501: PPUSH
 502: CALL_OW 101
// AddMedal ( Ovsyenko , OvsyenkoTaken and not OvsyenkoCaptured ) ;
 506: LD_STRING Ovsyenko
 508: PPUSH
 509: LD_EXP 14
 513: PUSH
 514: LD_EXP 15
 518: NOT
 519: AND
 520: PPUSH
 521: CALL_OW 101
// AddMedal ( Prediction , GetTech ( tech_MatPred , you ) = state_researched ) ;
 525: LD_STRING Prediction
 527: PPUSH
 528: LD_INT 9
 530: PPUSH
 531: LD_EXP 1
 535: PPUSH
 536: CALL_OW 321
 540: PUSH
 541: LD_INT 2
 543: EQUAL
 544: PPUSH
 545: CALL_OW 101
// end ;
 549: LD_VAR 0 1
 553: RET
// export function set_difficulty ; var d ; begin
 554: LD_INT 0
 556: PPUSH
 557: PPUSH
// d := difficulty ;
 558: LD_ADDR_VAR 0 2
 562: PUSH
 563: LD_OWVAR 67
 567: ST_TO_ADDR
// b1_levels := [ [ 1 , 3 , 5 ] [ d ] , [ 2 , 3 , 5 ] [ d ] ] ;
 568: LD_ADDR_EXP 19
 572: PUSH
 573: LD_INT 1
 575: PUSH
 576: LD_INT 3
 578: PUSH
 579: LD_INT 5
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: LIST
 586: PUSH
 587: LD_VAR 0 2
 591: ARRAY
 592: PUSH
 593: LD_INT 2
 595: PUSH
 596: LD_INT 3
 598: PUSH
 599: LD_INT 5
 601: PUSH
 602: EMPTY
 603: LIST
 604: LIST
 605: LIST
 606: PUSH
 607: LD_VAR 0 2
 611: ARRAY
 612: PUSH
 613: EMPTY
 614: LIST
 615: LIST
 616: ST_TO_ADDR
// b2_levels := [ [ 2 , 3 , 5 ] [ d ] , [ 3 , 4 , 6 ] [ d ] ] ;
 617: LD_ADDR_EXP 20
 621: PUSH
 622: LD_INT 2
 624: PUSH
 625: LD_INT 3
 627: PUSH
 628: LD_INT 5
 630: PUSH
 631: EMPTY
 632: LIST
 633: LIST
 634: LIST
 635: PUSH
 636: LD_VAR 0 2
 640: ARRAY
 641: PUSH
 642: LD_INT 3
 644: PUSH
 645: LD_INT 4
 647: PUSH
 648: LD_INT 6
 650: PUSH
 651: EMPTY
 652: LIST
 653: LIST
 654: LIST
 655: PUSH
 656: LD_VAR 0 2
 660: ARRAY
 661: PUSH
 662: EMPTY
 663: LIST
 664: LIST
 665: ST_TO_ADDR
// b3_levels := [ [ 2 , 5 , 8 ] [ d ] , [ 7 , 8 , 10 ] [ d ] ] ;
 666: LD_ADDR_EXP 21
 670: PUSH
 671: LD_INT 2
 673: PUSH
 674: LD_INT 5
 676: PUSH
 677: LD_INT 8
 679: PUSH
 680: EMPTY
 681: LIST
 682: LIST
 683: LIST
 684: PUSH
 685: LD_VAR 0 2
 689: ARRAY
 690: PUSH
 691: LD_INT 7
 693: PUSH
 694: LD_INT 8
 696: PUSH
 697: LD_INT 10
 699: PUSH
 700: EMPTY
 701: LIST
 702: LIST
 703: LIST
 704: PUSH
 705: LD_VAR 0 2
 709: ARRAY
 710: PUSH
 711: EMPTY
 712: LIST
 713: LIST
 714: ST_TO_ADDR
// b4_levels := [ [ 5 , 7 , 10 ] [ d ] , [ 7 , 8 , 10 ] [ d ] ] ;
 715: LD_ADDR_EXP 22
 719: PUSH
 720: LD_INT 5
 722: PUSH
 723: LD_INT 7
 725: PUSH
 726: LD_INT 10
 728: PUSH
 729: EMPTY
 730: LIST
 731: LIST
 732: LIST
 733: PUSH
 734: LD_VAR 0 2
 738: ARRAY
 739: PUSH
 740: LD_INT 7
 742: PUSH
 743: LD_INT 8
 745: PUSH
 746: LD_INT 10
 748: PUSH
 749: EMPTY
 750: LIST
 751: LIST
 752: LIST
 753: PUSH
 754: LD_VAR 0 2
 758: ARRAY
 759: PUSH
 760: EMPTY
 761: LIST
 762: LIST
 763: ST_TO_ADDR
// b5_levels := [ [ 3 , 6 , 9 ] [ d ] , [ 3 , 6 , 9 ] [ d ] ] ;
 764: LD_ADDR_EXP 23
 768: PUSH
 769: LD_INT 3
 771: PUSH
 772: LD_INT 6
 774: PUSH
 775: LD_INT 9
 777: PUSH
 778: EMPTY
 779: LIST
 780: LIST
 781: LIST
 782: PUSH
 783: LD_VAR 0 2
 787: ARRAY
 788: PUSH
 789: LD_INT 3
 791: PUSH
 792: LD_INT 6
 794: PUSH
 795: LD_INT 9
 797: PUSH
 798: EMPTY
 799: LIST
 800: LIST
 801: LIST
 802: PUSH
 803: LD_VAR 0 2
 807: ARRAY
 808: PUSH
 809: EMPTY
 810: LIST
 811: LIST
 812: ST_TO_ADDR
// mcatt_difficulty := [ 200 , 250 , 300 ] [ d ] ;
 813: LD_ADDR_EXP 17
 817: PUSH
 818: LD_INT 200
 820: PUSH
 821: LD_INT 250
 823: PUSH
 824: LD_INT 300
 826: PUSH
 827: EMPTY
 828: LIST
 829: LIST
 830: LIST
 831: PUSH
 832: LD_VAR 0 2
 836: ARRAY
 837: ST_TO_ADDR
// mcdef_difficulty := [ 270 , 350 , 450 ] [ d ] ;
 838: LD_ADDR_EXP 16
 842: PUSH
 843: LD_INT 270
 845: PUSH
 846: LD_INT 350
 848: PUSH
 849: LD_INT 450
 851: PUSH
 852: EMPTY
 853: LIST
 854: LIST
 855: LIST
 856: PUSH
 857: LD_VAR 0 2
 861: ARRAY
 862: ST_TO_ADDR
// na_kopci_mcdef_difficulty := [ 200 , 230 , 260 ] [ d ] ;
 863: LD_ADDR_EXP 18
 867: PUSH
 868: LD_INT 200
 870: PUSH
 871: LD_INT 230
 873: PUSH
 874: LD_INT 260
 876: PUSH
 877: EMPTY
 878: LIST
 879: LIST
 880: LIST
 881: PUSH
 882: LD_VAR 0 2
 886: ARRAY
 887: ST_TO_ADDR
// kolik_ma_vsevolod_casu := [ 46 46$0 , 39 39$0 , 32 32$0 ] [ d ] ;
 888: LD_ADDR_EXP 33
 892: PUSH
 893: LD_INT 96600
 895: PUSH
 896: LD_INT 81900
 898: PUSH
 899: LD_INT 67200
 901: PUSH
 902: EMPTY
 903: LIST
 904: LIST
 905: LIST
 906: PUSH
 907: LD_VAR 0 2
 911: ARRAY
 912: ST_TO_ADDR
// kolik_ma_vsevolod_mezi_utoky := [ 10 10$0 , 8 8$0 , 5 5$0 ] [ d ] ;
 913: LD_ADDR_EXP 34
 917: PUSH
 918: LD_INT 21000
 920: PUSH
 921: LD_INT 16800
 923: PUSH
 924: LD_INT 10500
 926: PUSH
 927: EMPTY
 928: LIST
 929: LIST
 930: LIST
 931: PUSH
 932: LD_VAR 0 2
 936: ARRAY
 937: ST_TO_ADDR
// kolik_je_v_depotu := [ 220 , 180 , 120 ] [ d ] ;
 938: LD_ADDR_EXP 35
 942: PUSH
 943: LD_INT 220
 945: PUSH
 946: LD_INT 180
 948: PUSH
 949: LD_INT 120
 951: PUSH
 952: EMPTY
 953: LIST
 954: LIST
 955: LIST
 956: PUSH
 957: LD_VAR 0 2
 961: ARRAY
 962: ST_TO_ADDR
// kolik_je_sib_v_hornim := [ 130 , 90 , 65 ] [ d ] ;
 963: LD_ADDR_EXP 36
 967: PUSH
 968: LD_INT 130
 970: PUSH
 971: LD_INT 90
 973: PUSH
 974: LD_INT 65
 976: PUSH
 977: EMPTY
 978: LIST
 979: LIST
 980: LIST
 981: PUSH
 982: LD_VAR 0 2
 986: ARRAY
 987: ST_TO_ADDR
// zivoty_armoury := [ hranice_umirani + 50 , hranice_umirani + 150 , hranice_umirani + 350 ] [ d ] ;
 988: LD_ADDR_EXP 37
 992: PUSH
 993: LD_INT 250
 995: PUSH
 996: LD_INT 50
 998: PLUS
 999: PUSH
1000: LD_INT 250
1002: PUSH
1003: LD_INT 150
1005: PLUS
1006: PUSH
1007: LD_INT 250
1009: PUSH
1010: LD_INT 350
1012: PLUS
1013: PUSH
1014: EMPTY
1015: LIST
1016: LIST
1017: LIST
1018: PUSH
1019: LD_VAR 0 2
1023: ARRAY
1024: ST_TO_ADDR
// zivoty_armoury2 := [ hranice_umirani + 150 , hranice_umirani + 350 , hranice_umirani + 550 ] [ d ] ;
1025: LD_ADDR_EXP 38
1029: PUSH
1030: LD_INT 250
1032: PUSH
1033: LD_INT 150
1035: PLUS
1036: PUSH
1037: LD_INT 250
1039: PUSH
1040: LD_INT 350
1042: PLUS
1043: PUSH
1044: LD_INT 250
1046: PUSH
1047: LD_INT 550
1049: PLUS
1050: PUSH
1051: EMPTY
1052: LIST
1053: LIST
1054: LIST
1055: PUSH
1056: LD_VAR 0 2
1060: ARRAY
1061: ST_TO_ADDR
// cas_mezi_utoky := [ 6 6$0 , 3 3$0 , 0 0$30 ] [ d ] ;
1062: LD_ADDR_EXP 31
1066: PUSH
1067: LD_INT 12600
1069: PUSH
1070: LD_INT 6300
1072: PUSH
1073: LD_INT 1050
1075: PUSH
1076: EMPTY
1077: LIST
1078: LIST
1079: LIST
1080: PUSH
1081: LD_VAR 0 2
1085: ARRAY
1086: ST_TO_ADDR
// utoci_max := [ 3 , 6 , 9 ] [ d ] ;
1087: LD_ADDR_EXP 39
1091: PUSH
1092: LD_INT 3
1094: PUSH
1095: LD_INT 6
1097: PUSH
1098: LD_INT 9
1100: PUSH
1101: EMPTY
1102: LIST
1103: LIST
1104: LIST
1105: PUSH
1106: LD_VAR 0 2
1110: ARRAY
1111: ST_TO_ADDR
// cas_prvniho_utoku := [ 5 5$0 , 3 3$30 , 1 1$0 ] [ d ] ;
1112: LD_ADDR_EXP 32
1116: PUSH
1117: LD_INT 10500
1119: PUSH
1120: LD_INT 7350
1122: PUSH
1123: LD_INT 2100
1125: PUSH
1126: EMPTY
1127: LIST
1128: LIST
1129: LIST
1130: PUSH
1131: LD_VAR 0 2
1135: ARRAY
1136: ST_TO_ADDR
// end ;
1137: LD_VAR 0 1
1141: RET
// export mrtvi_vsevolodaci ; every 0 0$1 do
1142: GO 1144
1144: DISABLE
// begin debug_strings := [ mrtvi_vsevolodaci , [ ( tick div 0 0$1 ) div 60 , ( tick div 0 0$1 ) mod 60 ] ] ;
1145: LD_ADDR_OWVAR 48
1149: PUSH
1150: LD_EXP 41
1154: PUSH
1155: LD_OWVAR 1
1159: PUSH
1160: LD_INT 35
1162: DIV
1163: PUSH
1164: LD_INT 60
1166: DIV
1167: PUSH
1168: LD_OWVAR 1
1172: PUSH
1173: LD_INT 35
1175: DIV
1176: PUSH
1177: LD_INT 60
1179: MOD
1180: PUSH
1181: EMPTY
1182: LIST
1183: LIST
1184: PUSH
1185: EMPTY
1186: LIST
1187: LIST
1188: ST_TO_ADDR
// enable ;
1189: ENABLE
// end ;
1190: END
// starting begin all_labs := [ b_lab , b_lab_half , b_lab_full ] ;
1191: LD_ADDR_EXP 40
1195: PUSH
1196: LD_INT 6
1198: PUSH
1199: LD_INT 7
1201: PUSH
1202: LD_INT 8
1204: PUSH
1205: EMPTY
1206: LIST
1207: LIST
1208: LIST
1209: ST_TO_ADDR
// normal1_utok := 7001 ;
1210: LD_ADDR_EXP 24
1214: PUSH
1215: LD_INT 7001
1217: ST_TO_ADDR
// normal2_utok := 7002 ;
1218: LD_ADDR_EXP 25
1222: PUSH
1223: LD_INT 7002
1225: ST_TO_ADDR
// normal3_utok := 7003 ;
1226: LD_ADDR_EXP 26
1230: PUSH
1231: LD_INT 7003
1233: ST_TO_ADDR
// normal4_utok := 7004 ;
1234: LD_ADDR_EXP 27
1238: PUSH
1239: LD_INT 7004
1241: ST_TO_ADDR
// vsevolod_attack := 7005 ;
1242: LD_ADDR_EXP 28
1246: PUSH
1247: LD_INT 7005
1249: ST_TO_ADDR
// vsevolod_final_attack := 7006 ;
1250: LD_ADDR_EXP 29
1254: PUSH
1255: LD_INT 7006
1257: ST_TO_ADDR
// SetBName ( RuDepot , ovsyenko ) ;
1258: LD_INT 58
1260: PPUSH
1261: LD_STRING ovsyenko
1263: PPUSH
1264: CALL_OW 500
// set_difficulty ;
1268: CALL 554 0 0
// set_sides ;
1272: CALL 8 0 0
// load ;
1276: CALL 7049 0 0
// place_b ;
1280: CALL 18990 0 0
// place_in_ru_cars ;
1284: CALL 7964 0 0
// place_ru_cars ;
1288: CALL 8314 0 0
// apemans := FilterAllUnits ( [ [ f_nation , nation_nature ] , [ f_type , unit_human ] ] ) ;
1292: LD_ADDR_EXP 8
1296: PUSH
1297: LD_INT 23
1299: PUSH
1300: LD_INT 0
1302: PUSH
1303: EMPTY
1304: LIST
1305: LIST
1306: PUSH
1307: LD_INT 21
1309: PUSH
1310: LD_INT 1
1312: PUSH
1313: EMPTY
1314: LIST
1315: LIST
1316: PUSH
1317: EMPTY
1318: LIST
1319: LIST
1320: PPUSH
1321: CALL_OW 69
1325: ST_TO_ADDR
// set_shorts ;
1326: CALL 1335 0 0
// DStart ;
1330: CALL 1443 0 0
// end ; end_of_file
1334: END
// export Kar , Lip , Bur , Pla , Ptr , Pty , Glb , Tit , Dol , Vse ; export donttalk ; export function set_shorts ; begin
1335: LD_INT 0
1337: PPUSH
// Kar := Karamazov ;
1338: LD_ADDR_EXP 42
1342: PUSH
1343: LD_EXP 63
1347: ST_TO_ADDR
// Lip := Lipshchin ;
1348: LD_ADDR_EXP 43
1352: PUSH
1353: LD_EXP 69
1357: ST_TO_ADDR
// Bur := Burlak ;
1358: LD_ADDR_EXP 44
1362: PUSH
1363: LD_EXP 61
1367: ST_TO_ADDR
// Pla := Platonov ;
1368: LD_ADDR_EXP 45
1372: PUSH
1373: LD_EXP 62
1377: ST_TO_ADDR
// Ptr := Petrovova ;
1378: LD_ADDR_EXP 46
1382: PUSH
1383: LD_EXP 64
1387: ST_TO_ADDR
// Pty := Petrosyan ;
1388: LD_ADDR_EXP 47
1392: PUSH
1393: LD_EXP 66
1397: ST_TO_ADDR
// Glb := Gleb ;
1398: LD_ADDR_EXP 48
1402: PUSH
1403: LD_EXP 65
1407: ST_TO_ADDR
// Tit := Titov ;
1408: LD_ADDR_EXP 49
1412: PUSH
1413: LD_EXP 67
1417: ST_TO_ADDR
// Dol := Dolgov ;
1418: LD_ADDR_EXP 50
1422: PUSH
1423: LD_EXP 68
1427: ST_TO_ADDR
// Vse := Vsevolod ;
1428: LD_ADDR_EXP 51
1432: PUSH
1433: LD_EXP 70
1437: ST_TO_ADDR
// end ;
1438: LD_VAR 0 1
1442: RET
// export function DStart ; begin
1443: LD_INT 0
1445: PPUSH
// CenterNowOnXY ( 120 , 140 ) ;
1446: LD_INT 120
1448: PPUSH
1449: LD_INT 140
1451: PPUSH
1452: CALL_OW 86
// CenterNowOnXY ( 120 , 140 ) ;
1456: LD_INT 120
1458: PPUSH
1459: LD_INT 140
1461: PPUSH
1462: CALL_OW 86
// DialogueOn ;
1466: CALL_OW 6
// if not Say ( Kar , DStart-Kar-1 ) then
1470: LD_EXP 42
1474: PPUSH
1475: LD_STRING DStart-Kar-1
1477: PPUSH
1478: CALL_OW 88
1482: NOT
1483: IFFALSE 1497
// Say ( Lip , DStart-Lip-1 ) ;
1485: LD_EXP 43
1489: PPUSH
1490: LD_STRING DStart-Lip-1
1492: PPUSH
1493: CALL_OW 88
// Say ( Bur , DStart-Bur-1 ) ;
1497: LD_EXP 44
1501: PPUSH
1502: LD_STRING DStart-Bur-1
1504: PPUSH
1505: CALL_OW 88
// Dwait ( 0 0$3 ) ;
1509: LD_INT 105
1511: PPUSH
1512: CALL_OW 68
// SayRadio ( Pla , DStart-Pla-1 ) ;
1516: LD_EXP 45
1520: PPUSH
1521: LD_STRING DStart-Pla-1
1523: PPUSH
1524: CALL_OW 94
// Say ( Bur , DStart-Bur-2 ) ;
1528: LD_EXP 44
1532: PPUSH
1533: LD_STRING DStart-Bur-2
1535: PPUSH
1536: CALL_OW 88
// Say ( Ptr , DStart-Ptr-2 ) ;
1540: LD_EXP 46
1544: PPUSH
1545: LD_STRING DStart-Ptr-2
1547: PPUSH
1548: CALL_OW 88
// SaveForQuickRestart ;
1552: CALL_OW 22
// ChangeMissionObjectives ( MStart ) ;
1556: LD_STRING MStart
1558: PPUSH
1559: CALL_OW 337
// DialogueOff ;
1563: CALL_OW 7
// end ;
1567: LD_VAR 0 1
1571: RET
// every 0 0$2 trigger GetSide ( RuDepot ) = you or not FilterHumansInArea ( ovsyenko_base , [ [ f_side , ai ] ] ) do
1572: LD_INT 58
1574: PPUSH
1575: CALL_OW 255
1579: PUSH
1580: LD_EXP 1
1584: EQUAL
1585: PUSH
1586: LD_INT 14
1588: PPUSH
1589: LD_INT 22
1591: PUSH
1592: LD_EXP 6
1596: PUSH
1597: EMPTY
1598: LIST
1599: LIST
1600: PUSH
1601: EMPTY
1602: LIST
1603: PPUSH
1604: CALL 10760 0 2
1608: NOT
1609: OR
1610: IFFALSE 1627
1612: GO 1614
1614: DISABLE
// begin DOvsyenkoTaken ;
1615: CALL 1628 0 0
// OvsyenkoTaken := 1 ;
1619: LD_ADDR_EXP 14
1623: PUSH
1624: LD_INT 1
1626: ST_TO_ADDR
// end ;
1627: END
// export function DOvsyenkoTaken ; begin
1628: LD_INT 0
1630: PPUSH
// DialogueOn ;
1631: CALL_OW 6
// Say ( Bur , DOvsyenkoTaken-Bur-1 ) ;
1635: LD_EXP 44
1639: PPUSH
1640: LD_STRING DOvsyenkoTaken-Bur-1
1642: PPUSH
1643: CALL_OW 88
// SayRadio ( Pla , DOvsyenkoTaken-Pla-1 ) ;
1647: LD_EXP 45
1651: PPUSH
1652: LD_STRING DOvsyenkoTaken-Pla-1
1654: PPUSH
1655: CALL_OW 94
// Say ( Kar , DOvsyenkoTaken-Kar-1 ) ;
1659: LD_EXP 42
1663: PPUSH
1664: LD_STRING DOvsyenkoTaken-Kar-1
1666: PPUSH
1667: CALL_OW 88
// Say ( Tit , DOvsyenkoTaken-Tit-1 ) ;
1671: LD_EXP 49
1675: PPUSH
1676: LD_STRING DOvsyenkoTaken-Tit-1
1678: PPUSH
1679: CALL_OW 88
// if Say ( Lip , DOvsyenkoTaken-Lip-1 ) then
1683: LD_EXP 43
1687: PPUSH
1688: LD_STRING DOvsyenkoTaken-Lip-1
1690: PPUSH
1691: CALL_OW 88
1695: IFFALSE 1709
// Say ( Glb , DOvsyenkoTaken-Glb-1 ) ;
1697: LD_EXP 48
1701: PPUSH
1702: LD_STRING DOvsyenkoTaken-Glb-1
1704: PPUSH
1705: CALL_OW 88
// ChangeMissionObjectives ( MOutCapture ) ;
1709: LD_STRING MOutCapture
1711: PPUSH
1712: CALL_OW 337
// ChangeMissionObjectives ( MAddMine ) ;
1716: LD_STRING MAddMine
1718: PPUSH
1719: CALL_OW 337
// DialogueOff ;
1723: CALL_OW 7
// MyHint ( Capturing ) ;
1727: LD_STRING Capturing
1729: PPUSH
1730: CALL 11783 0 1
// MyHint ( SibDet ) ;
1734: LD_STRING SibDet
1736: PPUSH
1737: CALL 11783 0 1
// end ;
1741: LD_VAR 0 1
1745: RET
// export function DMatPrediction ; begin
1746: LD_INT 0
1748: PPUSH
// DialogueOn ;
1749: CALL_OW 6
// if IsOK ( Pty ) or IsOk ( Dol ) then
1753: LD_EXP 47
1757: PPUSH
1758: CALL_OW 302
1762: PUSH
1763: LD_EXP 50
1767: PPUSH
1768: CALL_OW 302
1772: OR
1773: IFFALSE 1880
// begin if not Say ( Pty , DMatPrediction-Pty-1 ) then
1775: LD_EXP 47
1779: PPUSH
1780: LD_STRING DMatPrediction-Pty-1
1782: PPUSH
1783: CALL_OW 88
1787: NOT
1788: IFFALSE 1802
// Say ( Dol , DMatPrediction-Dol-1 ) ;
1790: LD_EXP 50
1794: PPUSH
1795: LD_STRING DMatPrediction-Dol-1
1797: PPUSH
1798: CALL_OW 88
// Say ( Bur , DMatPrediction-Bur-1 ) ;
1802: LD_EXP 44
1806: PPUSH
1807: LD_STRING DMatPrediction-Bur-1
1809: PPUSH
1810: CALL_OW 88
// if not Say ( Pty , DMatPrediction-Pty-2 ) then
1814: LD_EXP 47
1818: PPUSH
1819: LD_STRING DMatPrediction-Pty-2
1821: PPUSH
1822: CALL_OW 88
1826: NOT
1827: IFFALSE 1841
// Say ( Dol , DMatPrediction-Dol-2 ) ;
1829: LD_EXP 50
1833: PPUSH
1834: LD_STRING DMatPrediction-Dol-2
1836: PPUSH
1837: CALL_OW 88
// Say ( Bur , DMatPrediction-Bur-2 ) ;
1841: LD_EXP 44
1845: PPUSH
1846: LD_STRING DMatPrediction-Bur-2
1848: PPUSH
1849: CALL_OW 88
// if not Say ( Pty , DMatPrediction-Pty-3 ) then
1853: LD_EXP 47
1857: PPUSH
1858: LD_STRING DMatPrediction-Pty-3
1860: PPUSH
1861: CALL_OW 88
1865: NOT
1866: IFFALSE 1880
// Say ( Dol , DMatPrediction-Dol-3 ) ;
1868: LD_EXP 50
1872: PPUSH
1873: LD_STRING DMatPrediction-Dol-3
1875: PPUSH
1876: CALL_OW 88
// end ; ChangeMissionObjectives ( MPred ) ;
1880: LD_STRING MPred
1882: PPUSH
1883: CALL_OW 337
// DialogueOff ;
1887: CALL_OW 7
// end ;
1891: LD_VAR 0 1
1895: RET
// export function DNoMaterial ; begin
1896: LD_INT 0
1898: PPUSH
// DialogueOn ;
1899: CALL_OW 6
// if not Say ( Pty , DNoMaterial-Pty-1 ) then
1903: LD_EXP 47
1907: PPUSH
1908: LD_STRING DNoMaterial-Pty-1
1910: PPUSH
1911: CALL_OW 88
1915: NOT
1916: IFFALSE 1930
// Say ( Dol , DNoMaterial-Dol-1 ) ;
1918: LD_EXP 50
1922: PPUSH
1923: LD_STRING DNoMaterial-Dol-1
1925: PPUSH
1926: CALL_OW 88
// Say ( Bur , DNoMaterial-Bur-1 ) ;
1930: LD_EXP 44
1934: PPUSH
1935: LD_STRING DNoMaterial-Bur-1
1937: PPUSH
1938: CALL_OW 88
// if not Say ( Pty , DNoMaterial-Pty-2 ) then
1942: LD_EXP 47
1946: PPUSH
1947: LD_STRING DNoMaterial-Pty-2
1949: PPUSH
1950: CALL_OW 88
1954: NOT
1955: IFFALSE 1969
// Say ( Dol , DNoMaterial-Dol-2 ) ;
1957: LD_EXP 50
1961: PPUSH
1962: LD_STRING DNoMaterial-Dol-2
1964: PPUSH
1965: CALL_OW 88
// Say ( Bur , DNoMaterial-Bur-2 ) ;
1969: LD_EXP 44
1973: PPUSH
1974: LD_STRING DNoMaterial-Bur-2
1976: PPUSH
1977: CALL_OW 88
// ChangeMissionObjectives ( MOutPred ) ;
1981: LD_STRING MOutPred
1983: PPUSH
1984: CALL_OW 337
// DialogueOff ;
1988: CALL_OW 7
// MyHint ( Prediction ) ;
1992: LD_STRING Prediction
1994: PPUSH
1995: CALL 11783 0 1
// end ;
1999: LD_VAR 0 1
2003: RET
// export byl_sib_research ; every 0 0$2 trigger GetResourceVisibility ( 101 , 93 , you ) or GetResourceVisibility ( 53 , 55 , you ) or GetResourceVisibility ( 29 , 30 , you ) or FilterAllUnits ( [ [ f_side , you ] , [ f_btype , b_siberite_mine ] ] ) > 0 or DepotWithSiberite marked 66 do
2004: LD_INT 101
2006: PPUSH
2007: LD_INT 93
2009: PPUSH
2010: LD_EXP 1
2014: PPUSH
2015: CALL_OW 440
2019: PUSH
2020: LD_INT 53
2022: PPUSH
2023: LD_INT 55
2025: PPUSH
2026: LD_EXP 1
2030: PPUSH
2031: CALL_OW 440
2035: OR
2036: PUSH
2037: LD_INT 29
2039: PPUSH
2040: LD_INT 30
2042: PPUSH
2043: LD_EXP 1
2047: PPUSH
2048: CALL_OW 440
2052: OR
2053: PUSH
2054: LD_INT 22
2056: PUSH
2057: LD_EXP 1
2061: PUSH
2062: EMPTY
2063: LIST
2064: LIST
2065: PUSH
2066: LD_INT 30
2068: PUSH
2069: LD_INT 30
2071: PUSH
2072: EMPTY
2073: LIST
2074: LIST
2075: PUSH
2076: EMPTY
2077: LIST
2078: LIST
2079: PPUSH
2080: CALL_OW 69
2084: PUSH
2085: LD_INT 0
2087: GREATER
2088: OR
2089: PUSH
2090: CALL 11943 0 0
2094: OR
2095: IFFALSE 2104
2097: GO 2099
2099: DISABLE
// begin DSibResearch ;
2100: CALL 2105 0 0
// end ;
2104: END
// export function DSibResearch ; begin
2105: LD_INT 0
2107: PPUSH
// byl_sib_research := true ;
2108: LD_ADDR_EXP 53
2112: PUSH
2113: LD_INT 1
2115: ST_TO_ADDR
// DialogueOn ;
2116: CALL_OW 6
// if not Say ( Pty , DSibResearch-Pty-1 ) then
2120: LD_EXP 47
2124: PPUSH
2125: LD_STRING DSibResearch-Pty-1
2127: PPUSH
2128: CALL_OW 88
2132: NOT
2133: IFFALSE 2147
// Say ( Dol , DSibResearch-Dol-1 ) ;
2135: LD_EXP 50
2139: PPUSH
2140: LD_STRING DSibResearch-Dol-1
2142: PPUSH
2143: CALL_OW 88
// Say ( Bur , DSibResearch-Bur-1 ) ;
2147: LD_EXP 44
2151: PPUSH
2152: LD_STRING DSibResearch-Bur-1
2154: PPUSH
2155: CALL_OW 88
// SayRadio ( Pla , DSibResearch-Pla-1 ) ;
2159: LD_EXP 45
2163: PPUSH
2164: LD_STRING DSibResearch-Pla-1
2166: PPUSH
2167: CALL_OW 94
// ChangeMissionObjectives ( MResearch ) ;
2171: LD_STRING MResearch
2173: PPUSH
2174: CALL_OW 337
// DialogueOff ;
2178: CALL_OW 7
// end ;
2182: LD_VAR 0 1
2186: RET
// function AnyUnitOver ( y ) ; var res , i ; begin
2187: LD_INT 0
2189: PPUSH
2190: PPUSH
2191: PPUSH
// res := false ;
2192: LD_ADDR_VAR 0 3
2196: PUSH
2197: LD_INT 0
2199: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , you ] , [ f_not , [ f_type , unit_building ] ] ] ) do
2200: LD_ADDR_VAR 0 4
2204: PUSH
2205: LD_INT 22
2207: PUSH
2208: LD_EXP 1
2212: PUSH
2213: EMPTY
2214: LIST
2215: LIST
2216: PUSH
2217: LD_INT 3
2219: PUSH
2220: LD_INT 21
2222: PUSH
2223: LD_INT 3
2225: PUSH
2226: EMPTY
2227: LIST
2228: LIST
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: PUSH
2234: EMPTY
2235: LIST
2236: LIST
2237: PPUSH
2238: CALL_OW 69
2242: PUSH
2243: FOR_IN
2244: IFFALSE 2275
// if GetY ( i ) < y then
2246: LD_VAR 0 4
2250: PPUSH
2251: CALL_OW 251
2255: PUSH
2256: LD_VAR 0 1
2260: LESS
2261: IFFALSE 2273
// begin res := true ;
2263: LD_ADDR_VAR 0 3
2267: PUSH
2268: LD_INT 1
2270: ST_TO_ADDR
// break ;
2271: GO 2275
// end ;
2273: GO 2243
2275: POP
2276: POP
// result := res ;
2277: LD_ADDR_VAR 0 2
2281: PUSH
2282: LD_VAR 0 3
2286: ST_TO_ADDR
// end ;
2287: LD_VAR 0 2
2291: RET
// every 0 0$4 trigger ( OvsyenkoTaken and GetTechProgress ( tech_SibDet , you ) > 50 ) or AnyUnitOver ( 30 ) do var i ;
2292: LD_EXP 14
2296: PUSH
2297: LD_INT 20
2299: PPUSH
2300: LD_EXP 1
2304: PPUSH
2305: CALL_OW 326
2309: PUSH
2310: LD_INT 50
2312: GREATER
2313: AND
2314: PUSH
2315: LD_INT 30
2317: PPUSH
2318: CALL 2187 0 1
2322: OR
2323: IFFALSE 2724
2325: GO 2327
2327: DISABLE
2328: LD_INT 0
2330: PPUSH
// begin PlaceUnitArea ( Vsevolod , vsevolod_in , false ) ;
2331: LD_EXP 70
2335: PPUSH
2336: LD_INT 16
2338: PPUSH
2339: LD_INT 0
2341: PPUSH
2342: CALL_OW 49
// for i in Vsevolod_uderna_group do
2346: LD_ADDR_VAR 0 1
2350: PUSH
2351: LD_EXP 12
2355: PUSH
2356: FOR_IN
2357: IFFALSE 2376
// PlaceUnitArea ( i , vsevolod_in , false ) ;
2359: LD_VAR 0 1
2363: PPUSH
2364: LD_INT 16
2366: PPUSH
2367: LD_INT 0
2369: PPUSH
2370: CALL_OW 49
2374: GO 2356
2376: POP
2377: POP
// ComAgressiveMove ( Vsevolod_uderna_group ^ [ vsevolod ] , 51 , 11 ) ;
2378: LD_EXP 12
2382: PUSH
2383: LD_EXP 70
2387: PUSH
2388: EMPTY
2389: LIST
2390: ADD
2391: PPUSH
2392: LD_INT 51
2394: PPUSH
2395: LD_INT 11
2397: PPUSH
2398: CALL_OW 114
// DoNotAttack ( ai , Vsevolod ) ;
2402: LD_EXP 6
2406: PPUSH
2407: LD_EXP 70
2411: PPUSH
2412: CALL_OW 471
// for i in UnitFilter ( vsevolod_uderna_group , [ [ f_class , class_engineer ] ] ) do
2416: LD_ADDR_VAR 0 1
2420: PUSH
2421: LD_EXP 12
2425: PPUSH
2426: LD_INT 25
2428: PUSH
2429: LD_INT 2
2431: PUSH
2432: EMPTY
2433: LIST
2434: LIST
2435: PUSH
2436: EMPTY
2437: LIST
2438: PPUSH
2439: CALL_OW 72
2443: PUSH
2444: FOR_IN
2445: IFFALSE 2463
// DoNotAttack ( ai , i ) ;
2447: LD_EXP 6
2451: PPUSH
2452: LD_VAR 0 1
2456: PPUSH
2457: CALL_OW 471
2461: GO 2444
2463: POP
2464: POP
// wait ( 0 0$5 ) ;
2465: LD_INT 175
2467: PPUSH
2468: CALL_OW 67
// ComAgressiveMove ( FilterHumansInArea ( near_base2 , [ [ f_side , ai ] ] ) , 51 , 11 ) ;
2472: LD_INT 3
2474: PPUSH
2475: LD_INT 22
2477: PUSH
2478: LD_EXP 6
2482: PUSH
2483: EMPTY
2484: LIST
2485: LIST
2486: PUSH
2487: EMPTY
2488: LIST
2489: PPUSH
2490: CALL 10760 0 2
2494: PPUSH
2495: LD_INT 51
2497: PPUSH
2498: LD_INT 11
2500: PPUSH
2501: CALL_OW 114
// wait ( 0 0$10 ) ;
2505: LD_INT 350
2507: PPUSH
2508: CALL_OW 67
// ComMoveXY ( FilterHumansInArea ( near_base2 , [ [ f_side , ai ] ] ) , 23 , 28 ) ;
2512: LD_INT 3
2514: PPUSH
2515: LD_INT 22
2517: PUSH
2518: LD_EXP 6
2522: PUSH
2523: EMPTY
2524: LIST
2525: LIST
2526: PUSH
2527: EMPTY
2528: LIST
2529: PPUSH
2530: CALL 10760 0 2
2534: PPUSH
2535: LD_INT 23
2537: PPUSH
2538: LD_INT 28
2540: PPUSH
2541: CALL_OW 111
// SetSideBase ( GetBase ( vsevd1 ) , you2 ) ;
2545: LD_INT 182
2547: PPUSH
2548: CALL_OW 274
2552: PPUSH
2553: LD_EXP 2
2557: PPUSH
2558: CALL_OW 236
// SetBName ( vsevd1 , gorkij ) ;
2562: LD_INT 182
2564: PPUSH
2565: LD_STRING gorkij
2567: PPUSH
2568: CALL_OW 500
// ComEnterUnit ( Vsevolod , vseva1 ) ;
2572: LD_EXP 70
2576: PPUSH
2577: LD_INT 190
2579: PPUSH
2580: CALL_OW 120
// ComEnterUnit ( vsevolod_uderna_group , vseva1 ) ;
2584: LD_EXP 12
2588: PPUSH
2589: LD_INT 190
2591: PPUSH
2592: CALL_OW 120
// ComEnterUnit ( UnitFilter ( vsevolod_uderna_group , [ [ f_class , class_engineer ] ] ) , vseva1 ) ;
2596: LD_EXP 12
2600: PPUSH
2601: LD_INT 25
2603: PUSH
2604: LD_INT 2
2606: PUSH
2607: EMPTY
2608: LIST
2609: LIST
2610: PUSH
2611: EMPTY
2612: LIST
2613: PPUSH
2614: CALL_OW 72
2618: PPUSH
2619: LD_INT 190
2621: PPUSH
2622: CALL_OW 120
// for i in vsevolod_uderna_group do
2626: LD_ADDR_VAR 0 1
2630: PUSH
2631: LD_EXP 12
2635: PUSH
2636: FOR_IN
2637: IFFALSE 2655
// NormalAttack ( ai , i ) ;
2639: LD_EXP 6
2643: PPUSH
2644: LD_VAR 0 1
2648: PPUSH
2649: CALL_OW 472
2653: GO 2636
2655: POP
2656: POP
// AddComChangeProfession ( UnitFilter ( vsevolod_uderna_group , [ [ f_class , class_engineer ] ] ) , class_soldier ) ;
2657: LD_EXP 12
2661: PPUSH
2662: LD_INT 25
2664: PUSH
2665: LD_INT 2
2667: PUSH
2668: EMPTY
2669: LIST
2670: LIST
2671: PUSH
2672: EMPTY
2673: LIST
2674: PPUSH
2675: CALL_OW 72
2679: PPUSH
2680: LD_INT 1
2682: PPUSH
2683: CALL_OW 183
// ComEnterUnit ( vsevolod_uderna_group [ 2 ] , vsevb1 ) ;
2687: LD_EXP 12
2691: PUSH
2692: LD_INT 2
2694: ARRAY
2695: PPUSH
2696: LD_INT 193
2698: PPUSH
2699: CALL_OW 120
// wait ( 0 0$5 ) ;
2703: LD_INT 175
2705: PPUSH
2706: CALL_OW 67
// Vsevolod_vstoupil := tick ;
2710: LD_ADDR_EXP 11
2714: PUSH
2715: LD_OWVAR 1
2719: ST_TO_ADDR
// DVsevolod ;
2720: CALL 2727 0 0
// end ;
2724: PPOPN 1
2726: END
// export function DVsevolod ; var who ; begin
2727: LD_INT 0
2729: PPUSH
2730: PPUSH
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
2731: LD_ADDR_VAR 0 2
2735: PUSH
2736: LD_EXP 52
2740: PPUSH
2741: LD_EXP 1
2745: PPUSH
2746: LD_INT 1
2748: PPUSH
2749: LD_INT 0
2751: PPUSH
2752: LD_INT 0
2754: PPUSH
2755: CALL 10469 0 5
2759: ST_TO_ADDR
// DialogueOn ;
2760: CALL_OW 6
// Say ( Dol , DVsevolod-Dol-1 ) ;
2764: LD_EXP 50
2768: PPUSH
2769: LD_STRING DVsevolod-Dol-1
2771: PPUSH
2772: CALL_OW 88
// SayRadio ( Vse , DVsevolod-Vse-1 ) ;
2776: LD_EXP 51
2780: PPUSH
2781: LD_STRING DVsevolod-Vse-1
2783: PPUSH
2784: CALL_OW 94
// Say ( Bur , DVsevolod-Bur-1 ) ;
2788: LD_EXP 44
2792: PPUSH
2793: LD_STRING DVsevolod-Bur-1
2795: PPUSH
2796: CALL_OW 88
// Say ( Glb , DVsevolod-Glb-1 ) ;
2800: LD_EXP 48
2804: PPUSH
2805: LD_STRING DVsevolod-Glb-1
2807: PPUSH
2808: CALL_OW 88
// SayRadio ( Vse , DVsevolod-Vse-2 ) ;
2812: LD_EXP 51
2816: PPUSH
2817: LD_STRING DVsevolod-Vse-2
2819: PPUSH
2820: CALL_OW 94
// Say ( Bur , DVsevolod-Bur-2 ) ;
2824: LD_EXP 44
2828: PPUSH
2829: LD_STRING DVsevolod-Bur-2
2831: PPUSH
2832: CALL_OW 88
// SayRadio ( Vse , DVsevolod-Vse-3 ) ;
2836: LD_EXP 51
2840: PPUSH
2841: LD_STRING DVsevolod-Vse-3
2843: PPUSH
2844: CALL_OW 94
// Say ( Bur , DVsevolod-Bur-3 ) ;
2848: LD_EXP 44
2852: PPUSH
2853: LD_STRING DVsevolod-Bur-3
2855: PPUSH
2856: CALL_OW 88
// SayRadio ( Vse , DVsevolod-Vse-4 ) ;
2860: LD_EXP 51
2864: PPUSH
2865: LD_STRING DVsevolod-Vse-4
2867: PPUSH
2868: CALL_OW 94
// Say ( Bur , DVsevolod-Bur-4 ) ;
2872: LD_EXP 44
2876: PPUSH
2877: LD_STRING DVsevolod-Bur-4
2879: PPUSH
2880: CALL_OW 88
// if Say ( Glb , DVsevolod-Glb-4 ) then
2884: LD_EXP 48
2888: PPUSH
2889: LD_STRING DVsevolod-Glb-4
2891: PPUSH
2892: CALL_OW 88
2896: IFFALSE 2910
// Say ( Bur , DVsevolod-Bur-5 ) ;
2898: LD_EXP 44
2902: PPUSH
2903: LD_STRING DVsevolod-Bur-5
2905: PPUSH
2906: CALL_OW 88
// if not IsOk ( Glb ) then
2910: LD_EXP 48
2914: PPUSH
2915: CALL_OW 302
2919: NOT
2920: IFFALSE 2934
// Say ( who , DVsevolod-RSol1-5 ) ;
2922: LD_VAR 0 2
2926: PPUSH
2927: LD_STRING DVsevolod-RSol1-5
2929: PPUSH
2930: CALL_OW 88
// Say ( Bur , DVsevolod-Bur-6 ) ;
2934: LD_EXP 44
2938: PPUSH
2939: LD_STRING DVsevolod-Bur-6
2941: PPUSH
2942: CALL_OW 88
// Say ( Dol , DVsevolod-Dol-6 ) ;
2946: LD_EXP 50
2950: PPUSH
2951: LD_STRING DVsevolod-Dol-6
2953: PPUSH
2954: CALL_OW 88
// RevealFogArea ( you , near_base2 ) ;
2958: LD_EXP 1
2962: PPUSH
2963: LD_INT 3
2965: PPUSH
2966: CALL_OW 332
// CenterNowOnXY ( 51 , 13 ) ;
2970: LD_INT 51
2972: PPUSH
2973: LD_INT 13
2975: PPUSH
2976: CALL_OW 86
// dwait ( 0 0$1 ) ;
2980: LD_INT 35
2982: PPUSH
2983: CALL_OW 68
// Say ( Bur , DVsevolod-Bur-7 ) ;
2987: LD_EXP 44
2991: PPUSH
2992: LD_STRING DVsevolod-Bur-7
2994: PPUSH
2995: CALL_OW 88
// SayRadio ( Vse , DVsevolod-Vse-7 ) ;
2999: LD_EXP 51
3003: PPUSH
3004: LD_STRING DVsevolod-Vse-7
3006: PPUSH
3007: CALL_OW 94
// Say ( Bur , DVsevolod-Bur-8 ) ;
3011: LD_EXP 44
3015: PPUSH
3016: LD_STRING DVsevolod-Bur-8
3018: PPUSH
3019: CALL_OW 88
// DialogueOff ;
3023: CALL_OW 7
// ChangeMissionObjectives ( MVsevolod ) ;
3027: LD_STRING MVsevolod
3029: PPUSH
3030: CALL_OW 337
// end ;
3034: LD_VAR 0 1
3038: RET
// every 0 0$2 trigger vsevolod_vstoupil and tick > ( vsevolod_vstoupil + 0 0$6 ) do
3039: LD_EXP 11
3043: PUSH
3044: LD_OWVAR 1
3048: PUSH
3049: LD_EXP 11
3053: PUSH
3054: LD_INT 210
3056: PLUS
3057: GREATER
3058: AND
3059: IFFALSE 3084
3061: GO 3063
3063: DISABLE
// begin if belkovfreed then
3064: LD_EXP 13
3068: IFFALSE 3076
// DHelp1 else
3070: CALL 3085 0 0
3074: GO 3080
// DHelp2 ;
3076: CALL 3197 0 0
// DHelp3 ;
3080: CALL 3339 0 0
// end ;
3084: END
// export function DHelp1 ; var who ; begin
3085: LD_INT 0
3087: PPUSH
3088: PPUSH
// DialogueOn ;
3089: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
3093: LD_ADDR_VAR 0 2
3097: PUSH
3098: LD_EXP 52
3102: PPUSH
3103: LD_EXP 1
3107: PPUSH
3108: LD_INT 1
3110: PPUSH
3111: LD_INT 0
3113: PPUSH
3114: LD_INT 0
3116: PPUSH
3117: CALL 10469 0 5
3121: ST_TO_ADDR
// if ( not Say ( Glb , DHelp1-Glb-1 ) ) and ( not Say ( Dol , DHelp1-Dol-1 ) ) then
3122: LD_EXP 48
3126: PPUSH
3127: LD_STRING DHelp1-Glb-1
3129: PPUSH
3130: CALL_OW 88
3134: NOT
3135: PUSH
3136: LD_EXP 50
3140: PPUSH
3141: LD_STRING DHelp1-Dol-1
3143: PPUSH
3144: CALL_OW 88
3148: NOT
3149: AND
3150: IFFALSE 3164
// Say ( who , DHelp1-RSol1-1 ) ;
3152: LD_VAR 0 2
3156: PPUSH
3157: LD_STRING DHelp1-RSol1-1
3159: PPUSH
3160: CALL_OW 88
// Say ( Tit , DHelp1-Tit-1 ) ;
3164: LD_EXP 49
3168: PPUSH
3169: LD_STRING DHelp1-Tit-1
3171: PPUSH
3172: CALL_OW 88
// Say ( Glb , DHelp1-Glb-2 ) ;
3176: LD_EXP 48
3180: PPUSH
3181: LD_STRING DHelp1-Glb-2
3183: PPUSH
3184: CALL_OW 88
// DialogueOff ;
3188: CALL_OW 7
// end ;
3192: LD_VAR 0 1
3196: RET
// export function DHelp2 ; var who , who2 ; begin
3197: LD_INT 0
3199: PPUSH
3200: PPUSH
3201: PPUSH
// DialogueOn ;
3202: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 1 ) ;
3206: LD_ADDR_VAR 0 2
3210: PUSH
3211: LD_EXP 52
3215: PPUSH
3216: LD_EXP 1
3220: PPUSH
3221: LD_INT 1
3223: PPUSH
3224: LD_INT 0
3226: PPUSH
3227: LD_INT 1
3229: PPUSH
3230: CALL 10469 0 5
3234: ST_TO_ADDR
// who2 := WhoSayAny ( donttalk , you , sex_male , 0 , 2 ) ;
3235: LD_ADDR_VAR 0 3
3239: PUSH
3240: LD_EXP 52
3244: PPUSH
3245: LD_EXP 1
3249: PPUSH
3250: LD_INT 1
3252: PPUSH
3253: LD_INT 0
3255: PPUSH
3256: LD_INT 2
3258: PPUSH
3259: CALL 10469 0 5
3263: ST_TO_ADDR
// if not Say ( Tit , DHelp2-Tit-1 ) then
3264: LD_EXP 49
3268: PPUSH
3269: LD_STRING DHelp2-Tit-1
3271: PPUSH
3272: CALL_OW 88
3276: NOT
3277: IFFALSE 3291
// Say ( who , DHelp2-RSol1-1 ) ;
3279: LD_VAR 0 2
3283: PPUSH
3284: LD_STRING DHelp2-RSol1-1
3286: PPUSH
3287: CALL_OW 88
// if not Say ( Glb , DHelp2-Glb-1 ) then
3291: LD_EXP 48
3295: PPUSH
3296: LD_STRING DHelp2-Glb-1
3298: PPUSH
3299: CALL_OW 88
3303: NOT
3304: IFFALSE 3318
// Say ( who2 , DHelp2-RSol2-1 ) ;
3306: LD_VAR 0 3
3310: PPUSH
3311: LD_STRING DHelp2-RSol2-1
3313: PPUSH
3314: CALL_OW 88
// Say ( Tit , DHelp2-Tit-2 ) ;
3318: LD_EXP 49
3322: PPUSH
3323: LD_STRING DHelp2-Tit-2
3325: PPUSH
3326: CALL_OW 88
// DialogueOff ;
3330: CALL_OW 7
// end ;
3334: LD_VAR 0 1
3338: RET
// export function DHelp3 ; var who ; begin
3339: LD_INT 0
3341: PPUSH
3342: PPUSH
// DialogueOn ;
3343: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
3347: LD_ADDR_VAR 0 2
3351: PUSH
3352: LD_EXP 52
3356: PPUSH
3357: LD_EXP 1
3361: PPUSH
3362: LD_INT 1
3364: PPUSH
3365: LD_INT 0
3367: PPUSH
3368: LD_INT 0
3370: PPUSH
3371: CALL 10469 0 5
3375: ST_TO_ADDR
// Say ( Bur , DHelp3-Bur-1 ) ;
3376: LD_EXP 44
3380: PPUSH
3381: LD_STRING DHelp3-Bur-1
3383: PPUSH
3384: CALL_OW 88
// if not Say ( Lip , DHelp3-Lip-1 ) then
3388: LD_EXP 43
3392: PPUSH
3393: LD_STRING DHelp3-Lip-1
3395: PPUSH
3396: CALL_OW 88
3400: NOT
3401: IFFALSE 3415
// Say ( who , DHelp3-RSol1-1 ) ;
3403: LD_VAR 0 2
3407: PPUSH
3408: LD_STRING DHelp3-RSol1-1
3410: PPUSH
3411: CALL_OW 88
// Say ( Bur , DHelp3-Bur-2 ) ;
3415: LD_EXP 44
3419: PPUSH
3420: LD_STRING DHelp3-Bur-2
3422: PPUSH
3423: CALL_OW 88
// DialogueOff ;
3427: CALL_OW 7
// end ;
3431: LD_VAR 0 1
3435: RET
// every 0 0$5 trigger vsevolod_vstoupil and not FilterHumansInArea ( ovsyenko_base , [ [ f_side , you ] ] ) do var b , i ;
3436: LD_EXP 11
3440: PUSH
3441: LD_INT 14
3443: PPUSH
3444: LD_INT 22
3446: PUSH
3447: LD_EXP 1
3451: PUSH
3452: EMPTY
3453: LIST
3454: LIST
3455: PUSH
3456: EMPTY
3457: LIST
3458: PPUSH
3459: CALL 10760 0 2
3463: NOT
3464: AND
3465: IFFALSE 3603
3467: GO 3469
3469: DISABLE
3470: LD_INT 0
3472: PPUSH
3473: PPUSH
// begin if FilterUnitsInArea ( ovsyenko_base , [ [ f_side , ai ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) >= 1 then
3474: LD_INT 14
3476: PPUSH
3477: LD_INT 22
3479: PUSH
3480: LD_EXP 6
3484: PUSH
3485: EMPTY
3486: LIST
3487: LIST
3488: PUSH
3489: LD_INT 2
3491: PUSH
3492: LD_INT 21
3494: PUSH
3495: LD_INT 1
3497: PUSH
3498: EMPTY
3499: LIST
3500: LIST
3501: PUSH
3502: LD_INT 21
3504: PUSH
3505: LD_INT 2
3507: PUSH
3508: EMPTY
3509: LIST
3510: LIST
3511: PUSH
3512: EMPTY
3513: LIST
3514: LIST
3515: LIST
3516: PUSH
3517: EMPTY
3518: LIST
3519: LIST
3520: PPUSH
3521: CALL_OW 70
3525: PUSH
3526: LD_INT 1
3528: GREATEREQUAL
3529: IFFALSE 3602
// begin DOvsyenkoCaptured ;
3531: CALL 3606 0 0
// OvsyenkoCaptured := true ;
3535: LD_ADDR_EXP 15
3539: PUSH
3540: LD_INT 1
3542: ST_TO_ADDR
// b := FilterUnitsInArea ( ovsyenko_base , [ [ f_type , unit_building ] ] ) ;
3543: LD_ADDR_VAR 0 1
3547: PUSH
3548: LD_INT 14
3550: PPUSH
3551: LD_INT 21
3553: PUSH
3554: LD_INT 3
3556: PUSH
3557: EMPTY
3558: LIST
3559: LIST
3560: PUSH
3561: EMPTY
3562: LIST
3563: PPUSH
3564: CALL_OW 70
3568: ST_TO_ADDR
// for i in b do
3569: LD_ADDR_VAR 0 2
3573: PUSH
3574: LD_VAR 0 1
3578: PUSH
3579: FOR_IN
3580: IFFALSE 3598
// begin SetSide ( i , ai ) ;
3582: LD_VAR 0 2
3586: PPUSH
3587: LD_EXP 6
3591: PPUSH
3592: CALL_OW 235
// end ;
3596: GO 3579
3598: POP
3599: POP
// end else
3600: GO 3603
// enable ;
3602: ENABLE
// end ;
3603: PPOPN 2
3605: END
// export function DOvsyenkoCaptured ; var who ; begin
3606: LD_INT 0
3608: PPUSH
3609: PPUSH
// DialogueOn ;
3610: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
3614: LD_ADDR_VAR 0 2
3618: PUSH
3619: LD_EXP 52
3623: PPUSH
3624: LD_EXP 1
3628: PPUSH
3629: LD_INT 1
3631: PPUSH
3632: LD_INT 0
3634: PPUSH
3635: LD_INT 0
3637: PPUSH
3638: CALL 10469 0 5
3642: ST_TO_ADDR
// if Say ( Glb , DOvsyenkoCaptured-Glb-1 ) then
3643: LD_EXP 48
3647: PPUSH
3648: LD_STRING DOvsyenkoCaptured-Glb-1
3650: PPUSH
3651: CALL_OW 88
3655: IFFALSE 3671
// Say ( Bur , DOvsyenkoCaptured-Bur-1 ) else
3657: LD_EXP 44
3661: PPUSH
3662: LD_STRING DOvsyenkoCaptured-Bur-1
3664: PPUSH
3665: CALL_OW 88
3669: GO 3683
// Say ( who , DOvsyenkoCaptured-RSol1-1 ) ;
3671: LD_VAR 0 2
3675: PPUSH
3676: LD_STRING DOvsyenkoCaptured-RSol1-1
3678: PPUSH
3679: CALL_OW 88
// DialogueOff ;
3683: CALL_OW 7
// end ;
3687: LD_VAR 0 1
3691: RET
// every 0 0$2 trigger false do var a ;
3692: LD_INT 0
3694: IFFALSE 3789
3696: GO 3698
3698: DISABLE
3699: LD_INT 0
3701: PPUSH
// begin a := FilterHumansInArea ( to_north , [ f_side , you ] ) ;
3702: LD_ADDR_VAR 0 1
3706: PUSH
3707: LD_INT 15
3709: PPUSH
3710: LD_INT 22
3712: PUSH
3713: LD_EXP 1
3717: PUSH
3718: EMPTY
3719: LIST
3720: LIST
3721: PPUSH
3722: CALL 10760 0 2
3726: ST_TO_ADDR
// if UnitFilter ( a , [ f_or , [ f_distxy , 67 , 37 , 10 ] , [ f_distxy , 83 , 38 , 10 ] ] ) then
3727: LD_VAR 0 1
3731: PPUSH
3732: LD_INT 2
3734: PUSH
3735: LD_INT 92
3737: PUSH
3738: LD_INT 67
3740: PUSH
3741: LD_INT 37
3743: PUSH
3744: LD_INT 10
3746: PUSH
3747: EMPTY
3748: LIST
3749: LIST
3750: LIST
3751: LIST
3752: PUSH
3753: LD_INT 92
3755: PUSH
3756: LD_INT 83
3758: PUSH
3759: LD_INT 38
3761: PUSH
3762: LD_INT 10
3764: PUSH
3765: EMPTY
3766: LIST
3767: LIST
3768: LIST
3769: LIST
3770: PUSH
3771: EMPTY
3772: LIST
3773: LIST
3774: LIST
3775: PPUSH
3776: CALL_OW 72
3780: IFFALSE 3788
// DPartyAttacked else
3782: CALL 3792 0 0
3786: GO 3789
// enable ;
3788: ENABLE
// end ;
3789: PPOPN 1
3791: END
// export function DPartyAttacked ; var who , who2 ; begin
3792: LD_INT 0
3794: PPUSH
3795: PPUSH
3796: PPUSH
// DialogueOn ;
3797: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 1 ) ;
3801: LD_ADDR_VAR 0 2
3805: PUSH
3806: LD_EXP 52
3810: PPUSH
3811: LD_EXP 1
3815: PPUSH
3816: LD_INT 1
3818: PPUSH
3819: LD_INT 0
3821: PPUSH
3822: LD_INT 1
3824: PPUSH
3825: CALL 10469 0 5
3829: ST_TO_ADDR
// who2 := WhoSayAny ( donttalk , you , sex_male , 0 , 2 ) ;
3830: LD_ADDR_VAR 0 3
3834: PUSH
3835: LD_EXP 52
3839: PPUSH
3840: LD_EXP 1
3844: PPUSH
3845: LD_INT 1
3847: PPUSH
3848: LD_INT 0
3850: PPUSH
3851: LD_INT 2
3853: PPUSH
3854: CALL 10469 0 5
3858: ST_TO_ADDR
// Say ( who , DPartyAttacked-RSol1-1 ) ;
3859: LD_VAR 0 2
3863: PPUSH
3864: LD_STRING DPartyAttacked-RSol1-1
3866: PPUSH
3867: CALL_OW 88
// if not Say ( Glb , DPartyAttacked-Glb-1 ) then
3871: LD_EXP 48
3875: PPUSH
3876: LD_STRING DPartyAttacked-Glb-1
3878: PPUSH
3879: CALL_OW 88
3883: NOT
3884: IFFALSE 3898
// Say ( who2 , DPartyAttacked-RSol2-1 ) ;
3886: LD_VAR 0 3
3890: PPUSH
3891: LD_STRING DPartyAttacked-RSol2-1
3893: PPUSH
3894: CALL_OW 88
// DialogueOff ;
3898: CALL_OW 7
// end ;
3902: LD_VAR 0 1
3906: RET
// export kecali ; export otherkecali ; export VsevolodSaved ; every 0 0$3 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_dist , Vsevolod , 10 ] ] ) do var mt , i ;
3907: LD_INT 22
3909: PUSH
3910: LD_EXP 1
3914: PUSH
3915: EMPTY
3916: LIST
3917: LIST
3918: PUSH
3919: LD_INT 91
3921: PUSH
3922: LD_EXP 70
3926: PUSH
3927: LD_INT 10
3929: PUSH
3930: EMPTY
3931: LIST
3932: LIST
3933: LIST
3934: PUSH
3935: EMPTY
3936: LIST
3937: LIST
3938: PPUSH
3939: CALL_OW 69
3943: IFFALSE 4387
3945: GO 3947
3947: DISABLE
3948: LD_INT 0
3950: PPUSH
3951: PPUSH
// begin if IsLive ( vsevolod ) and GetDistUnits ( Vsevolod , Burlak ) <= 10 and not kecali then
3952: LD_EXP 70
3956: PPUSH
3957: CALL_OW 300
3961: PUSH
3962: LD_EXP 70
3966: PPUSH
3967: LD_EXP 61
3971: PPUSH
3972: CALL_OW 296
3976: PUSH
3977: LD_INT 10
3979: LESSEQUAL
3980: AND
3981: PUSH
3982: LD_EXP 54
3986: NOT
3987: AND
3988: IFFALSE 4231
// begin mt := tick + 0 0$20 ;
3990: LD_ADDR_VAR 0 1
3994: PUSH
3995: LD_OWVAR 1
3999: PUSH
4000: LD_INT 700
4002: PLUS
4003: ST_TO_ADDR
// while IsInUnit ( Vsevolod ) = vseva1 and mt < tick do
4004: LD_EXP 70
4008: PPUSH
4009: CALL_OW 310
4013: PUSH
4014: LD_INT 190
4016: EQUAL
4017: PUSH
4018: LD_VAR 0 1
4022: PUSH
4023: LD_OWVAR 1
4027: LESS
4028: AND
4029: IFFALSE 4052
// begin ComExitBuilding ( UnitsInside ( vseva1 ) ) ;
4031: LD_INT 190
4033: PPUSH
4034: CALL_OW 313
4038: PPUSH
4039: CALL_OW 122
// wait ( 0 0$1 ) ;
4043: LD_INT 35
4045: PPUSH
4046: CALL_OW 67
// end ;
4050: GO 4004
// wait ( 0 0$2 ) ;
4052: LD_INT 70
4054: PPUSH
4055: CALL_OW 67
// ComStop ( FilterAllUnits ( [ [ f_side , you2 ] ] ) ) ;
4059: LD_INT 22
4061: PUSH
4062: LD_EXP 2
4066: PUSH
4067: EMPTY
4068: LIST
4069: LIST
4070: PUSH
4071: EMPTY
4072: LIST
4073: PPUSH
4074: CALL_OW 69
4078: PPUSH
4079: CALL_OW 141
// SetSide ( FilterAllUnits ( [ [ f_side , you2 ] ] ) , you ) ;
4083: LD_INT 22
4085: PUSH
4086: LD_EXP 2
4090: PUSH
4091: EMPTY
4092: LIST
4093: LIST
4094: PUSH
4095: EMPTY
4096: LIST
4097: PPUSH
4098: CALL_OW 69
4102: PPUSH
4103: LD_EXP 1
4107: PPUSH
4108: CALL_OW 235
// for i in FilterAllUnits ( [ [ f_side , you ] ] ) do
4112: LD_ADDR_VAR 0 2
4116: PUSH
4117: LD_INT 22
4119: PUSH
4120: LD_EXP 1
4124: PUSH
4125: EMPTY
4126: LIST
4127: LIST
4128: PUSH
4129: EMPTY
4130: LIST
4131: PPUSH
4132: CALL_OW 69
4136: PUSH
4137: FOR_IN
4138: IFFALSE 4156
// NormalAttack ( ai , i ) ;
4140: LD_EXP 6
4144: PPUSH
4145: LD_VAR 0 2
4149: PPUSH
4150: CALL_OW 472
4154: GO 4137
4156: POP
4157: POP
// DMeetVsev ;
4158: CALL 4462 0 0
// if OvsyenkoCaptured then
4162: LD_EXP 15
4166: IFFALSE 4174
// DMeetVsev2 else
4168: CALL 4504 0 0
4172: GO 4178
// DMeetVsev2a ;
4174: CALL 4560 0 0
// DMeetVsev3 ;
4178: CALL 4616 0 0
// if stevens_Killed then
4182: LD_EXP 76
4186: IFFALSE 4194
// DMeetVsev4 else
4188: CALL 4700 0 0
4192: GO 4198
// DMeetVsev5 ;
4194: CALL 4728 0 0
// DMeetVsev6 ;
4198: CALL 4784 0 0
// kecali := true ;
4202: LD_ADDR_EXP 54
4206: PUSH
4207: LD_INT 1
4209: ST_TO_ADDR
// VsevolodSaved := true ;
4210: LD_ADDR_EXP 56
4214: PUSH
4215: LD_INT 1
4217: ST_TO_ADDR
// SA_SaveVsevolod ;
4218: CALL 32915 0 0
// ChangeMissionObjectives ( MVsevolodOut ) ;
4222: LD_STRING MVsevolodOut
4224: PPUSH
4225: CALL_OW 337
// end else
4229: GO 4387
// begin if IsLive ( vsevolod ) and not otherkecali then
4231: LD_EXP 70
4235: PPUSH
4236: CALL_OW 300
4240: PUSH
4241: LD_EXP 55
4245: NOT
4246: AND
4247: IFFALSE 4386
// begin ComStop ( FilterAllUnits ( [ [ f_side , you2 ] ] ) ) ;
4249: LD_INT 22
4251: PUSH
4252: LD_EXP 2
4256: PUSH
4257: EMPTY
4258: LIST
4259: LIST
4260: PUSH
4261: EMPTY
4262: LIST
4263: PPUSH
4264: CALL_OW 69
4268: PPUSH
4269: CALL_OW 141
// SetSide ( FilterAllUnits ( [ [ f_side , you2 ] ] ) , you ) ;
4273: LD_INT 22
4275: PUSH
4276: LD_EXP 2
4280: PUSH
4281: EMPTY
4282: LIST
4283: LIST
4284: PUSH
4285: EMPTY
4286: LIST
4287: PPUSH
4288: CALL_OW 69
4292: PPUSH
4293: LD_EXP 1
4297: PPUSH
4298: CALL_OW 235
// for i in FilterAllUnits ( [ [ f_side , you ] ] ) do
4302: LD_ADDR_VAR 0 2
4306: PUSH
4307: LD_INT 22
4309: PUSH
4310: LD_EXP 1
4314: PUSH
4315: EMPTY
4316: LIST
4317: LIST
4318: PUSH
4319: EMPTY
4320: LIST
4321: PPUSH
4322: CALL_OW 69
4326: PUSH
4327: FOR_IN
4328: IFFALSE 4346
// NormalAttack ( ai , i ) ;
4330: LD_EXP 6
4334: PPUSH
4335: LD_VAR 0 2
4339: PPUSH
4340: CALL_OW 472
4344: GO 4327
4346: POP
4347: POP
// DOtherMeetVsev ;
4348: CALL 4390 0 0
// ComExitBuilding ( vseva1 ) ;
4352: LD_INT 190
4354: PPUSH
4355: CALL_OW 122
// VsevolodSaved := true ;
4359: LD_ADDR_EXP 56
4363: PUSH
4364: LD_INT 1
4366: ST_TO_ADDR
// SA_SaveVsevolod ;
4367: CALL 32915 0 0
// otherkecali := true ;
4371: LD_ADDR_EXP 55
4375: PUSH
4376: LD_INT 1
4378: ST_TO_ADDR
// ChangeMissionObjectives ( MVsevolodOut ) ;
4379: LD_STRING MVsevolodOut
4381: PPUSH
4382: CALL_OW 337
// end ; enable ;
4386: ENABLE
// end ; end ;
4387: PPOPN 2
4389: END
// export function DOtherMeetVsev ; var who ; begin
4390: LD_INT 0
4392: PPUSH
4393: PPUSH
// DialogueOn ;
4394: CALL_OW 6
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
4398: LD_ADDR_VAR 0 2
4402: PUSH
4403: LD_EXP 52
4407: PPUSH
4408: LD_EXP 1
4412: PPUSH
4413: LD_INT 1
4415: PPUSH
4416: LD_INT 0
4418: PPUSH
4419: LD_INT 0
4421: PPUSH
4422: CALL 10469 0 5
4426: ST_TO_ADDR
// if Say ( Vse , DOtherMeetVsev-Vse-1 ) then
4427: LD_EXP 51
4431: PPUSH
4432: LD_STRING DOtherMeetVsev-Vse-1
4434: PPUSH
4435: CALL_OW 88
4439: IFFALSE 4453
// Say ( who , DOtherMeetVsev-RSol1-1 ) ;
4441: LD_VAR 0 2
4445: PPUSH
4446: LD_STRING DOtherMeetVsev-RSol1-1
4448: PPUSH
4449: CALL_OW 88
// DialogueOff ;
4453: CALL_OW 7
// end ;
4457: LD_VAR 0 1
4461: RET
// export function DMeetVsev ; begin
4462: LD_INT 0
4464: PPUSH
// DialogueOn ;
4465: CALL_OW 6
// if Say ( Vse , DMeetVsev-Vse-1 ) then
4469: LD_EXP 51
4473: PPUSH
4474: LD_STRING DMeetVsev-Vse-1
4476: PPUSH
4477: CALL_OW 88
4481: IFFALSE 4495
// Say ( Bur , DMeetVsev-Bur-1 ) ;
4483: LD_EXP 44
4487: PPUSH
4488: LD_STRING DMeetVsev-Bur-1
4490: PPUSH
4491: CALL_OW 88
// DialogueOff ;
4495: CALL_OW 7
// end ;
4499: LD_VAR 0 1
4503: RET
// export function DMeetVsev2 ; begin
4504: LD_INT 0
4506: PPUSH
// DialogueOn ;
4507: CALL_OW 6
// if Say ( Vse , DMeetVsev2-Vse-1 ) then
4511: LD_EXP 51
4515: PPUSH
4516: LD_STRING DMeetVsev2-Vse-1
4518: PPUSH
4519: CALL_OW 88
4523: IFFALSE 4551
// if Say ( Bur , DMeetVsev2-Bur-1 ) then
4525: LD_EXP 44
4529: PPUSH
4530: LD_STRING DMeetVsev2-Bur-1
4532: PPUSH
4533: CALL_OW 88
4537: IFFALSE 4551
// Say ( Vse , DMeetVsev2-Vse-2 ) ;
4539: LD_EXP 51
4543: PPUSH
4544: LD_STRING DMeetVsev2-Vse-2
4546: PPUSH
4547: CALL_OW 88
// DialogueOff ;
4551: CALL_OW 7
// end ;
4555: LD_VAR 0 1
4559: RET
// export function DMeetVsev2a ; begin
4560: LD_INT 0
4562: PPUSH
// DialogueOn ;
4563: CALL_OW 6
// if Say ( Vse , DMeetVsev2-Vse-2a ) then
4567: LD_EXP 51
4571: PPUSH
4572: LD_STRING DMeetVsev2-Vse-2a
4574: PPUSH
4575: CALL_OW 88
4579: IFFALSE 4607
// if Say ( Bur , DMeetVsev2-Bur-2 ) then
4581: LD_EXP 44
4585: PPUSH
4586: LD_STRING DMeetVsev2-Bur-2
4588: PPUSH
4589: CALL_OW 88
4593: IFFALSE 4607
// Say ( Vse , DMeetVsev2-Vse-3 ) ;
4595: LD_EXP 51
4599: PPUSH
4600: LD_STRING DMeetVsev2-Vse-3
4602: PPUSH
4603: CALL_OW 88
// DialogueOff ;
4607: CALL_OW 7
// end ;
4611: LD_VAR 0 1
4615: RET
// export function DMeetVsev3 ; begin
4616: LD_INT 0
4618: PPUSH
// DialogueOn ;
4619: CALL_OW 6
// if Say ( Bur , DMeetVsev3-Bur-1 ) then
4623: LD_EXP 44
4627: PPUSH
4628: LD_STRING DMeetVsev3-Bur-1
4630: PPUSH
4631: CALL_OW 88
4635: IFFALSE 4691
// if Say ( Vse , DMeetVsev3-Vse-1 ) then
4637: LD_EXP 51
4641: PPUSH
4642: LD_STRING DMeetVsev3-Vse-1
4644: PPUSH
4645: CALL_OW 88
4649: IFFALSE 4691
// if Say ( Bur , DMeetVsev3-Bur-2 ) then
4651: LD_EXP 44
4655: PPUSH
4656: LD_STRING DMeetVsev3-Bur-2
4658: PPUSH
4659: CALL_OW 88
4663: IFFALSE 4691
// if Say ( Vse , DMeetVsev3-Vse-2 ) then
4665: LD_EXP 51
4669: PPUSH
4670: LD_STRING DMeetVsev3-Vse-2
4672: PPUSH
4673: CALL_OW 88
4677: IFFALSE 4691
// Say ( Bur , DMeetVsev3-Bur-3 ) ;
4679: LD_EXP 44
4683: PPUSH
4684: LD_STRING DMeetVsev3-Bur-3
4686: PPUSH
4687: CALL_OW 88
// DialogueOff ;
4691: CALL_OW 7
// end ;
4695: LD_VAR 0 1
4699: RET
// export function DMeetVsev4 ; begin
4700: LD_INT 0
4702: PPUSH
// DialogueOn ;
4703: CALL_OW 6
// Say ( Bur , DMeetVsev4-Bur-1 ) ;
4707: LD_EXP 44
4711: PPUSH
4712: LD_STRING DMeetVsev4-Bur-1
4714: PPUSH
4715: CALL_OW 88
// DialogueOff ;
4719: CALL_OW 7
// end ;
4723: LD_VAR 0 1
4727: RET
// export function DMeetVsev5 ; begin
4728: LD_INT 0
4730: PPUSH
// DialogueOn ;
4731: CALL_OW 6
// if Say ( Bur , DMeetVsev5-Bur-1 ) then
4735: LD_EXP 44
4739: PPUSH
4740: LD_STRING DMeetVsev5-Bur-1
4742: PPUSH
4743: CALL_OW 88
4747: IFFALSE 4775
// if Say ( Vse , DMeetVsev5-Vse-1 ) then
4749: LD_EXP 51
4753: PPUSH
4754: LD_STRING DMeetVsev5-Vse-1
4756: PPUSH
4757: CALL_OW 88
4761: IFFALSE 4775
// Say ( Bur , DMeetVsev5-Bur-2 ) ;
4763: LD_EXP 44
4767: PPUSH
4768: LD_STRING DMeetVsev5-Bur-2
4770: PPUSH
4771: CALL_OW 88
// DialogueOff ;
4775: CALL_OW 7
// end ;
4779: LD_VAR 0 1
4783: RET
// export function DMeetVsev6 ; begin
4784: LD_INT 0
4786: PPUSH
// DialogueOn ;
4787: CALL_OW 6
// if Say ( Vse , DMeetVsev6-Vse-1 ) then
4791: LD_EXP 51
4795: PPUSH
4796: LD_STRING DMeetVsev6-Vse-1
4798: PPUSH
4799: CALL_OW 88
4803: IFFALSE 4817
// Say ( Bur , DMeetVsev6-Bur-1 ) ;
4805: LD_EXP 44
4809: PPUSH
4810: LD_STRING DMeetVsev6-Bur-1
4812: PPUSH
4813: CALL_OW 88
// DialogueOff ;
4817: CALL_OW 7
// end ;
4821: LD_VAR 0 1
4825: RET
// every 0 0$5 trigger kecali and FilterUnitsInArea ( north_base , [ [ f_side , you ] ] ) do
4826: LD_EXP 54
4830: PUSH
4831: LD_INT 22
4833: PPUSH
4834: LD_INT 22
4836: PUSH
4837: LD_EXP 1
4841: PUSH
4842: EMPTY
4843: LIST
4844: LIST
4845: PUSH
4846: EMPTY
4847: LIST
4848: PPUSH
4849: CALL_OW 70
4853: AND
4854: IFFALSE 5080
4856: GO 4858
4858: DISABLE
// begin wait ( 0 0$10 ) ;
4859: LD_INT 350
4861: PPUSH
4862: CALL_OW 67
// nakladaky ;
4866: CALL 9623 0 0
// ComMoveXY ( [ accar1 , accar2 ] , 53 , 8 ) ;
4870: LD_EXP 80
4874: PUSH
4875: LD_EXP 81
4879: PUSH
4880: EMPTY
4881: LIST
4882: LIST
4883: PPUSH
4884: LD_INT 53
4886: PPUSH
4887: LD_INT 8
4889: PPUSH
4890: CALL_OW 111
// DTruck ;
4894: CALL 5081 0 0
// AddComMoveXY ( [ accar1 , accar2 ] , 45 , 14 ) ;
4898: LD_EXP 80
4902: PUSH
4903: LD_EXP 81
4907: PUSH
4908: EMPTY
4909: LIST
4910: LIST
4911: PPUSH
4912: LD_INT 45
4914: PPUSH
4915: LD_INT 14
4917: PPUSH
4918: CALL_OW 171
// AddComMoveXY ( [ accar1 , accar2 ] , 33 , 14 ) ;
4922: LD_EXP 80
4926: PUSH
4927: LD_EXP 81
4931: PUSH
4932: EMPTY
4933: LIST
4934: LIST
4935: PPUSH
4936: LD_INT 33
4938: PPUSH
4939: LD_INT 14
4941: PPUSH
4942: CALL_OW 171
// AddComMoveXY ( [ accar1 , accar2 ] , 27 , 32 ) ;
4946: LD_EXP 80
4950: PUSH
4951: LD_EXP 81
4955: PUSH
4956: EMPTY
4957: LIST
4958: LIST
4959: PPUSH
4960: LD_INT 27
4962: PPUSH
4963: LD_INT 32
4965: PPUSH
4966: CALL_OW 171
// AddComUnload ( [ accar1 , accar2 ] ) ;
4970: LD_EXP 80
4974: PUSH
4975: LD_EXP 81
4979: PUSH
4980: EMPTY
4981: LIST
4982: LIST
4983: PPUSH
4984: CALL_OW 219
// AddComMoveXY ( [ accar1 , accar2 ] , 42 , 79 ) ;
4988: LD_EXP 80
4992: PUSH
4993: LD_EXP 81
4997: PUSH
4998: EMPTY
4999: LIST
5000: LIST
5001: PPUSH
5002: LD_INT 42
5004: PPUSH
5005: LD_INT 79
5007: PPUSH
5008: CALL_OW 171
// AddComExitVehicle ( [ acman1 , acman2 ] ) ;
5012: LD_EXP 82
5016: PUSH
5017: LD_EXP 83
5021: PUSH
5022: EMPTY
5023: LIST
5024: LIST
5025: PPUSH
5026: CALL_OW 181
// sol := sol union [ acman1 , acman2 ] ;
5030: LD_ADDR_EXP 121
5034: PUSH
5035: LD_EXP 121
5039: PUSH
5040: LD_EXP 82
5044: PUSH
5045: LD_EXP 83
5049: PUSH
5050: EMPTY
5051: LIST
5052: LIST
5053: UNION
5054: ST_TO_ADDR
// a3 := a3 union [ acman1 , acman2 ] ;
5055: LD_ADDR_EXP 135
5059: PUSH
5060: LD_EXP 135
5064: PUSH
5065: LD_EXP 82
5069: PUSH
5070: LD_EXP 83
5074: PUSH
5075: EMPTY
5076: LIST
5077: LIST
5078: UNION
5079: ST_TO_ADDR
// end ;
5080: END
// export function DTruck ; var who ; begin
5081: LD_INT 0
5083: PPUSH
5084: PPUSH
// who := acman1 ;
5085: LD_ADDR_VAR 0 2
5089: PUSH
5090: LD_EXP 82
5094: ST_TO_ADDR
// DialogueOn ;
5095: CALL_OW 6
// if Say ( who , DTruck-Sol1-1 ) then
5099: LD_VAR 0 2
5103: PPUSH
5104: LD_STRING DTruck-Sol1-1
5106: PPUSH
5107: CALL_OW 88
5111: IFFALSE 5125
// Say ( Bur , DTruck-Bur-1 ) ;
5113: LD_EXP 44
5117: PPUSH
5118: LD_STRING DTruck-Bur-1
5120: PPUSH
5121: CALL_OW 88
// DialogueOff ;
5125: CALL_OW 7
// end ;
5129: LD_VAR 0 1
5133: RET
// export function DDieVsev1 ; begin
5134: LD_INT 0
5136: PPUSH
// SetLives ( vsevd1 , 0 ) ;
5137: LD_INT 182
5139: PPUSH
5140: LD_INT 0
5142: PPUSH
5143: CALL_OW 234
// ChangeMissionObjectives ( MVsevolodDel ) ;
5147: LD_STRING MVsevolodDel
5149: PPUSH
5150: CALL_OW 337
// DialogueOn ;
5154: CALL_OW 6
// Say ( Vsevolod2 , DDieVsev1-Vse-1 ) ;
5158: LD_EXP 71
5162: PPUSH
5163: LD_STRING DDieVsev1-Vse-1
5165: PPUSH
5166: CALL_OW 88
// DialogueOff ;
5170: CALL_OW 7
// end ;
5174: LD_VAR 0 1
5178: RET
// export function DDieVsev2 ; begin
5179: LD_INT 0
5181: PPUSH
// DialogueOn ;
5182: CALL_OW 6
// Say ( Vsevolod2 , DDieVsev2-Vse-1 ) ;
5186: LD_EXP 71
5190: PPUSH
5191: LD_STRING DDieVsev2-Vse-1
5193: PPUSH
5194: CALL_OW 88
// DialogueOff ;
5198: CALL_OW 7
// end ;
5202: LD_VAR 0 1
5206: RET
// export function DStasis ; var who ; begin
5207: LD_INT 0
5209: PPUSH
5210: PPUSH
// who := WhoSayAny ( donttalk , you , sex_male , 0 , 0 ) ;
5211: LD_ADDR_VAR 0 2
5215: PUSH
5216: LD_EXP 52
5220: PPUSH
5221: LD_EXP 1
5225: PPUSH
5226: LD_INT 1
5228: PPUSH
5229: LD_INT 0
5231: PPUSH
5232: LD_INT 0
5234: PPUSH
5235: CALL 10469 0 5
5239: ST_TO_ADDR
// DialogueOn ;
5240: CALL_OW 6
// if not Say ( Pty , DStasis-Pty-1 ) then
5244: LD_EXP 47
5248: PPUSH
5249: LD_STRING DStasis-Pty-1
5251: PPUSH
5252: CALL_OW 88
5256: NOT
5257: IFFALSE 5286
// if not Say ( Dol , DStasis-Dol-1 ) then
5259: LD_EXP 50
5263: PPUSH
5264: LD_STRING DStasis-Dol-1
5266: PPUSH
5267: CALL_OW 88
5271: NOT
5272: IFFALSE 5286
// Say ( who , DStasis-RSol1-1 ) ;
5274: LD_VAR 0 2
5278: PPUSH
5279: LD_STRING DStasis-RSol1-1
5281: PPUSH
5282: CALL_OW 88
// Say ( Bur , DStasis-Bur-1 ) ;
5286: LD_EXP 44
5290: PPUSH
5291: LD_STRING DStasis-Bur-1
5293: PPUSH
5294: CALL_OW 88
// if not Say ( Pty , DStasis-Pty-2 ) then
5298: LD_EXP 47
5302: PPUSH
5303: LD_STRING DStasis-Pty-2
5305: PPUSH
5306: CALL_OW 88
5310: NOT
5311: IFFALSE 5340
// if not Say ( Dol , DStasis-Dol-2 ) then
5313: LD_EXP 50
5317: PPUSH
5318: LD_STRING DStasis-Dol-2
5320: PPUSH
5321: CALL_OW 88
5325: NOT
5326: IFFALSE 5340
// Say ( who , DStasis-RSol1-2 ) ;
5328: LD_VAR 0 2
5332: PPUSH
5333: LD_STRING DStasis-RSol1-2
5335: PPUSH
5336: CALL_OW 88
// Say ( Bur , DStasis-Bur-2 ) ;
5340: LD_EXP 44
5344: PPUSH
5345: LD_STRING DStasis-Bur-2
5347: PPUSH
5348: CALL_OW 88
// DialogueOff ;
5352: CALL_OW 7
// MyHint ( Stasis ) ;
5356: LD_STRING Stasis
5358: PPUSH
5359: CALL 11783 0 1
// end ;
5363: LD_VAR 0 1
5367: RET
// every 0 0$2 trigger GetTech ( tech_TauField , you ) = state_researched and GetTech ( tech_SibDet , you ) = state_researched and GetTech ( tech_SibPow , you ) = state_researched and GetTech ( tech_SibEng , you ) = state_researched do
5368: LD_INT 30
5370: PPUSH
5371: LD_EXP 1
5375: PPUSH
5376: CALL_OW 321
5380: PUSH
5381: LD_INT 2
5383: EQUAL
5384: PUSH
5385: LD_INT 20
5387: PPUSH
5388: LD_EXP 1
5392: PPUSH
5393: CALL_OW 321
5397: PUSH
5398: LD_INT 2
5400: EQUAL
5401: AND
5402: PUSH
5403: LD_INT 21
5405: PPUSH
5406: LD_EXP 1
5410: PPUSH
5411: CALL_OW 321
5415: PUSH
5416: LD_INT 2
5418: EQUAL
5419: AND
5420: PUSH
5421: LD_INT 22
5423: PPUSH
5424: LD_EXP 1
5428: PPUSH
5429: CALL_OW 321
5433: PUSH
5434: LD_INT 2
5436: EQUAL
5437: AND
5438: IFFALSE 5450
5440: GO 5442
5442: DISABLE
// begin ChangeMissionObjectives ( MOutResearch ) ;
5443: LD_STRING MOutResearch
5445: PPUSH
5446: CALL_OW 337
// end ;
5450: END
// export exit_enabled ; every 0 0$2 trigger GetTech ( tech_TauField , you ) = state_researched and GetTech ( tech_SibDet , you ) = state_researched and GetTech ( tech_SibPow , you ) = state_researched and GetTech ( tech_SibEng , you ) = state_researched and mine_obj_completed do var plidi , lidi , min , max , i , go_pryc , go_pryc_tmp , zustavaj , utek , povol_povol , mt ;
5451: LD_INT 30
5453: PPUSH
5454: LD_EXP 1
5458: PPUSH
5459: CALL_OW 321
5463: PUSH
5464: LD_INT 2
5466: EQUAL
5467: PUSH
5468: LD_INT 20
5470: PPUSH
5471: LD_EXP 1
5475: PPUSH
5476: CALL_OW 321
5480: PUSH
5481: LD_INT 2
5483: EQUAL
5484: AND
5485: PUSH
5486: LD_INT 21
5488: PPUSH
5489: LD_EXP 1
5493: PPUSH
5494: CALL_OW 321
5498: PUSH
5499: LD_INT 2
5501: EQUAL
5502: AND
5503: PUSH
5504: LD_INT 22
5506: PPUSH
5507: LD_EXP 1
5511: PPUSH
5512: CALL_OW 321
5516: PUSH
5517: LD_INT 2
5519: EQUAL
5520: AND
5521: PUSH
5522: LD_EXP 30
5526: AND
5527: IFFALSE 6412
5529: GO 5531
5531: DISABLE
5532: LD_INT 0
5534: PPUSH
5535: PPUSH
5536: PPUSH
5537: PPUSH
5538: PPUSH
5539: PPUSH
5540: PPUSH
5541: PPUSH
5542: PPUSH
5543: PPUSH
5544: PPUSH
// begin if IsLive ( Vsevolod ) and GetSide ( Vsevolod ) = you2 then
5545: LD_EXP 70
5549: PPUSH
5550: CALL_OW 300
5554: PUSH
5555: LD_EXP 70
5559: PPUSH
5560: CALL_OW 255
5564: PUSH
5565: LD_EXP 2
5569: EQUAL
5570: AND
5571: IFFALSE 5847
// begin kolik_ma_vsevolod_casu := 0 ;
5573: LD_ADDR_EXP 33
5577: PUSH
5578: LD_INT 0
5580: ST_TO_ADDR
// utek := [ Vsevolod ] union vsevolod_uderna_group ;
5581: LD_ADDR_VAR 0 9
5585: PUSH
5586: LD_EXP 70
5590: PUSH
5591: EMPTY
5592: LIST
5593: PUSH
5594: LD_EXP 12
5598: UNION
5599: ST_TO_ADDR
// utek := UnitFilter ( utek , [ [ f_placed ] , [ f_side , you2 ] ] ) ;
5600: LD_ADDR_VAR 0 9
5604: PUSH
5605: LD_VAR 0 9
5609: PPUSH
5610: LD_INT 52
5612: PUSH
5613: EMPTY
5614: LIST
5615: PUSH
5616: LD_INT 22
5618: PUSH
5619: LD_EXP 2
5623: PUSH
5624: EMPTY
5625: LIST
5626: LIST
5627: PUSH
5628: EMPTY
5629: LIST
5630: LIST
5631: PPUSH
5632: CALL_OW 72
5636: ST_TO_ADDR
// mt := tick + 0 0$20 ;
5637: LD_ADDR_VAR 0 11
5641: PUSH
5642: LD_OWVAR 1
5646: PUSH
5647: LD_INT 700
5649: PLUS
5650: ST_TO_ADDR
// while utek and tick < mt do
5651: LD_VAR 0 9
5655: PUSH
5656: LD_OWVAR 1
5660: PUSH
5661: LD_VAR 0 11
5665: LESS
5666: AND
5667: IFFALSE 5806
// begin for i in utek do
5669: LD_ADDR_VAR 0 5
5673: PUSH
5674: LD_VAR 0 9
5678: PUSH
5679: FOR_IN
5680: IFFALSE 5735
// if IsInArea ( i , vsevolod_in ) or not IsPlaced ( i ) then
5682: LD_VAR 0 5
5686: PPUSH
5687: LD_INT 16
5689: PPUSH
5690: CALL_OW 308
5694: PUSH
5695: LD_VAR 0 5
5699: PPUSH
5700: CALL_OW 305
5704: NOT
5705: OR
5706: IFFALSE 5733
// begin RemoveUnit ( i ) ;
5708: LD_VAR 0 5
5712: PPUSH
5713: CALL_OW 64
// utek := utek diff i ;
5717: LD_ADDR_VAR 0 9
5721: PUSH
5722: LD_VAR 0 9
5726: PUSH
5727: LD_VAR 0 5
5731: DIFF
5732: ST_TO_ADDR
// end ;
5733: GO 5679
5735: POP
5736: POP
// utek := UnitFilter ( utek , [ [ f_placed ] ] ) ;
5737: LD_ADDR_VAR 0 9
5741: PUSH
5742: LD_VAR 0 9
5746: PPUSH
5747: LD_INT 52
5749: PUSH
5750: EMPTY
5751: LIST
5752: PUSH
5753: EMPTY
5754: LIST
5755: PPUSH
5756: CALL_OW 72
5760: ST_TO_ADDR
// wait ( 0 0$1 ) ;
5761: LD_INT 35
5763: PPUSH
5764: CALL_OW 67
// ComExitVehicle ( utek ) ;
5768: LD_VAR 0 9
5772: PPUSH
5773: CALL_OW 121
// AddComMoveToArea ( utek , vsevolod_in ) ;
5777: LD_VAR 0 9
5781: PPUSH
5782: LD_INT 16
5784: PPUSH
5785: CALL_OW 173
// AddComMoveXY ( utek , 53 , 1 ) ;
5789: LD_VAR 0 9
5793: PPUSH
5794: LD_INT 53
5796: PPUSH
5797: LD_INT 1
5799: PPUSH
5800: CALL_OW 171
// end ;
5804: GO 5651
// SetLives ( Vsevolod , 0 ) ;
5806: LD_EXP 70
5810: PPUSH
5811: LD_INT 0
5813: PPUSH
5814: CALL_OW 234
// for i in vsevolod_uderna_group do
5818: LD_ADDR_VAR 0 5
5822: PUSH
5823: LD_EXP 12
5827: PUSH
5828: FOR_IN
5829: IFFALSE 5845
// SetLives ( i , 0 ) ;
5831: LD_VAR 0 5
5835: PPUSH
5836: LD_INT 0
5838: PPUSH
5839: CALL_OW 234
5843: GO 5828
5845: POP
5846: POP
// end ; wait ( 0 0$15 ) ;
5847: LD_INT 525
5849: PPUSH
5850: CALL_OW 67
// DNextMiss1 ;
5854: CALL 6436 0 0
// if IsLive ( Vsevolod ) and kecali then
5858: LD_EXP 70
5862: PPUSH
5863: CALL_OW 300
5867: PUSH
5868: LD_EXP 54
5872: AND
5873: IFFALSE 5881
// DNextMiss3 else
5875: CALL 6492 0 0
5879: GO 5889
// begin DNextMiss2 ;
5881: CALL 6464 0 0
// VyhraResearch ;
5885: CALL 301 0 0
// end ; DNextMiss4 ;
5889: CALL 6532 0 0
// ChangeMissionObjectives ( MCars ) ;
5893: LD_STRING MCars
5895: PPUSH
5896: CALL_OW 337
// SetAreaMapShow ( ru_exit , 1 ) ;
5900: LD_INT 21
5902: PPUSH
5903: LD_INT 1
5905: PPUSH
5906: CALL_OW 424
// exit_enabled := true ;
5910: LD_ADDR_EXP 57
5914: PUSH
5915: LD_INT 1
5917: ST_TO_ADDR
// convoy_can_go := true ;
5918: LD_ADDR_EXP 58
5922: PUSH
5923: LD_INT 1
5925: ST_TO_ADDR
// if IsLive ( Vsevolod ) then
5926: LD_EXP 70
5930: PPUSH
5931: CALL_OW 300
5935: IFFALSE 6412
// begin lidi := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) diff [ Vsevolod , Burlak ] ;
5937: LD_ADDR_VAR 0 2
5941: PUSH
5942: LD_INT 22
5944: PUSH
5945: LD_EXP 1
5949: PUSH
5950: EMPTY
5951: LIST
5952: LIST
5953: PUSH
5954: LD_INT 21
5956: PUSH
5957: LD_INT 1
5959: PUSH
5960: EMPTY
5961: LIST
5962: LIST
5963: PUSH
5964: LD_INT 23
5966: PUSH
5967: LD_INT 3
5969: PUSH
5970: EMPTY
5971: LIST
5972: LIST
5973: PUSH
5974: EMPTY
5975: LIST
5976: LIST
5977: LIST
5978: PPUSH
5979: CALL_OW 69
5983: PUSH
5984: LD_EXP 70
5988: PUSH
5989: LD_EXP 61
5993: PUSH
5994: EMPTY
5995: LIST
5996: LIST
5997: DIFF
5998: ST_TO_ADDR
// max := lidi div 2 + lidi mod 2 ;
5999: LD_ADDR_VAR 0 4
6003: PUSH
6004: LD_VAR 0 2
6008: PUSH
6009: LD_INT 2
6011: DIV
6012: PUSH
6013: LD_VAR 0 2
6017: PUSH
6018: LD_INT 2
6020: MOD
6021: PLUS
6022: ST_TO_ADDR
// min := 0 ;
6023: LD_ADDR_VAR 0 3
6027: PUSH
6028: LD_INT 0
6030: ST_TO_ADDR
// povol_povol := [ class_soldier , class_engineer , class_mechanic , class_scientistic ] ;
6031: LD_ADDR_VAR 0 10
6035: PUSH
6036: LD_INT 1
6038: PUSH
6039: LD_INT 2
6041: PUSH
6042: LD_INT 3
6044: PUSH
6045: LD_INT 4
6047: PUSH
6048: EMPTY
6049: LIST
6050: LIST
6051: LIST
6052: LIST
6053: ST_TO_ADDR
// if max > 1 then
6054: LD_VAR 0 4
6058: PUSH
6059: LD_INT 1
6061: GREATER
6062: IFFALSE 6182
// begin zustavaj := [ Burlak ] ^ CharacterSelection ( 1 , min , max , [ Burlak , sel_changeable , sel_change_class ] ^ ( lidi diff vsevolod_uderna_group ) ^ [ sel_not_hired ] ^ vsevolod_uderna_group ^ [ sel_not_changeable , Vsevolod ] , povol_povol ) ;
6064: LD_ADDR_VAR 0 8
6068: PUSH
6069: LD_EXP 61
6073: PUSH
6074: EMPTY
6075: LIST
6076: PUSH
6077: LD_STRING 1
6079: PPUSH
6080: LD_VAR 0 3
6084: PPUSH
6085: LD_VAR 0 4
6089: PPUSH
6090: LD_EXP 61
6094: PUSH
6095: LD_INT -3
6097: PUSH
6098: LD_INT -5
6100: PUSH
6101: EMPTY
6102: LIST
6103: LIST
6104: LIST
6105: PUSH
6106: LD_VAR 0 2
6110: PUSH
6111: LD_EXP 12
6115: DIFF
6116: ADD
6117: PUSH
6118: LD_INT -2
6120: PUSH
6121: EMPTY
6122: LIST
6123: ADD
6124: PUSH
6125: LD_EXP 12
6129: ADD
6130: PUSH
6131: LD_INT -4
6133: PUSH
6134: LD_EXP 70
6138: PUSH
6139: EMPTY
6140: LIST
6141: LIST
6142: ADD
6143: PPUSH
6144: LD_VAR 0 10
6148: PPUSH
6149: CALL_OW 42
6153: ADD
6154: ST_TO_ADDR
// go_pryc := [ Vsevolod ] ^ ( lidi diff zustavaj ) ;
6155: LD_ADDR_VAR 0 6
6159: PUSH
6160: LD_EXP 70
6164: PUSH
6165: EMPTY
6166: LIST
6167: PUSH
6168: LD_VAR 0 2
6172: PUSH
6173: LD_VAR 0 8
6177: DIFF
6178: ADD
6179: ST_TO_ADDR
// end else
6180: GO 6214
// begin zustavaj := [ Burlak ] ;
6182: LD_ADDR_VAR 0 8
6186: PUSH
6187: LD_EXP 61
6191: PUSH
6192: EMPTY
6193: LIST
6194: ST_TO_ADDR
// go_pryc := [ Vsevolod ] ^ lidi ;
6195: LD_ADDR_VAR 0 6
6199: PUSH
6200: LD_EXP 70
6204: PUSH
6205: EMPTY
6206: LIST
6207: PUSH
6208: LD_VAR 0 2
6212: ADD
6213: ST_TO_ADDR
// end ; SetSide ( go_pryc , you2 ) ;
6214: LD_VAR 0 6
6218: PPUSH
6219: LD_EXP 2
6223: PPUSH
6224: CALL_OW 235
// for i in go_pryc do
6228: LD_ADDR_VAR 0 5
6232: PUSH
6233: LD_VAR 0 6
6237: PUSH
6238: FOR_IN
6239: IFFALSE 6257
// DoNotAttack ( ai , i ) ;
6241: LD_EXP 6
6245: PPUSH
6246: LD_VAR 0 5
6250: PPUSH
6251: CALL_OW 471
6255: GO 6238
6257: POP
6258: POP
// sli_pryc := [ ] ;
6259: LD_ADDR_EXP 77
6263: PUSH
6264: EMPTY
6265: ST_TO_ADDR
// go_pryc_tmp := go_pryc ;
6266: LD_ADDR_VAR 0 7
6270: PUSH
6271: LD_VAR 0 6
6275: ST_TO_ADDR
// while go_pryc_tmp do
6276: LD_VAR 0 7
6280: IFFALSE 6405
// begin for i in go_pryc_tmp do
6282: LD_ADDR_VAR 0 5
6286: PUSH
6287: LD_VAR 0 7
6291: PUSH
6292: FOR_IN
6293: IFFALSE 6358
// if IsInArea ( i , exit_a ) then
6295: LD_VAR 0 5
6299: PPUSH
6300: LD_INT 20
6302: PPUSH
6303: CALL_OW 308
6307: IFFALSE 6356
// begin RemoveUnit ( i ) ;
6309: LD_VAR 0 5
6313: PPUSH
6314: CALL_OW 64
// go_pryc_tmp := go_pryc_tmp diff [ i ] ;
6318: LD_ADDR_VAR 0 7
6322: PUSH
6323: LD_VAR 0 7
6327: PUSH
6328: LD_VAR 0 5
6332: PUSH
6333: EMPTY
6334: LIST
6335: DIFF
6336: ST_TO_ADDR
// sli_pryc := sli_pryc union [ i ] ;
6337: LD_ADDR_EXP 77
6341: PUSH
6342: LD_EXP 77
6346: PUSH
6347: LD_VAR 0 5
6351: PUSH
6352: EMPTY
6353: LIST
6354: UNION
6355: ST_TO_ADDR
// end ;
6356: GO 6292
6358: POP
6359: POP
// wait ( 0 0$1 ) ;
6360: LD_INT 35
6362: PPUSH
6363: CALL_OW 67
// ComExitVehicle ( go_pryc_tmp ) ;
6367: LD_VAR 0 7
6371: PPUSH
6372: CALL_OW 121
// AddComMoveToArea ( go_pryc_tmp , exit_a ) ;
6376: LD_VAR 0 7
6380: PPUSH
6381: LD_INT 20
6383: PPUSH
6384: CALL_OW 173
// AddComMoveXY ( go_pryc_tmp , 104 , 71 ) ;
6388: LD_VAR 0 7
6392: PPUSH
6393: LD_INT 104
6395: PPUSH
6396: LD_INT 71
6398: PPUSH
6399: CALL_OW 171
// end ;
6403: GO 6276
// wait ( 0 0$3 ) ;
6405: LD_INT 105
6407: PPUSH
6408: CALL_OW 67
// end ; end ;
6412: PPOPN 11
6414: END
// export convoy_can_go ; every 0 0$10 trigger convoy_can_go do
6415: LD_EXP 58
6419: IFFALSE 6435
6421: GO 6423
6423: DISABLE
// begin wait ( 0 0$25 ) ;
6424: LD_INT 875
6426: PPUSH
6427: CALL_OW 67
// convoy ;
6431: CALL 9841 0 0
// end ;
6435: END
// export function DNextMiss1 ; begin
6436: LD_INT 0
6438: PPUSH
// DialogueOn ;
6439: CALL_OW 6
// SayRadio ( Pla , DNextMiss1-Pla-1 ) ;
6443: LD_EXP 45
6447: PPUSH
6448: LD_STRING DNextMiss1-Pla-1
6450: PPUSH
6451: CALL_OW 94
// DialogueOff ;
6455: CALL_OW 7
// end ;
6459: LD_VAR 0 1
6463: RET
// export function DNextMiss2 ; begin
6464: LD_INT 0
6466: PPUSH
// DialogueOn ;
6467: CALL_OW 6
// SayRadio ( Pla , DNextMiss2-Pla-1 ) ;
6471: LD_EXP 45
6475: PPUSH
6476: LD_STRING DNextMiss2-Pla-1
6478: PPUSH
6479: CALL_OW 94
// DialogueOff ;
6483: CALL_OW 7
// end ;
6487: LD_VAR 0 1
6491: RET
// export function DNextMiss3 ; begin
6492: LD_INT 0
6494: PPUSH
// DialogueOn ;
6495: CALL_OW 6
// SayRadio ( Pla , DNextMiss3-Pla-1 ) ;
6499: LD_EXP 45
6503: PPUSH
6504: LD_STRING DNextMiss3-Pla-1
6506: PPUSH
6507: CALL_OW 94
// SayRadio ( Pla , DNextMiss3-Pla-1a ) ;
6511: LD_EXP 45
6515: PPUSH
6516: LD_STRING DNextMiss3-Pla-1a
6518: PPUSH
6519: CALL_OW 94
// DialogueOff ;
6523: CALL_OW 7
// end ;
6527: LD_VAR 0 1
6531: RET
// export function DNextMiss4 ; begin
6532: LD_INT 0
6534: PPUSH
// DialogueOn ;
6535: CALL_OW 6
// Say ( Bur , DNextMiss4-Bur-1 ) ;
6539: LD_EXP 44
6543: PPUSH
6544: LD_STRING DNextMiss4-Bur-1
6546: PPUSH
6547: CALL_OW 88
// DialogueOff ;
6551: CALL_OW 7
// end ;
6555: LD_VAR 0 1
6559: RET
// var was_end_query ; every 0 0$5 trigger exit_enabled do var a , qr ;
6560: LD_EXP 57
6564: IFFALSE 6682
6566: GO 6568
6568: DISABLE
6569: LD_INT 0
6571: PPUSH
6572: PPUSH
// begin a := FilterHumansInArea ( ru_exit , [ [ f_side , you ] ] ) ;
6573: LD_ADDR_VAR 0 1
6577: PUSH
6578: LD_INT 21
6580: PPUSH
6581: LD_INT 22
6583: PUSH
6584: LD_EXP 1
6588: PUSH
6589: EMPTY
6590: LIST
6591: LIST
6592: PUSH
6593: EMPTY
6594: LIST
6595: PPUSH
6596: CALL 10760 0 2
6600: ST_TO_ADDR
// if ( Burlak in a ) then
6601: LD_EXP 61
6605: PUSH
6606: LD_VAR 0 1
6610: IN
6611: IFFALSE 6665
// begin end_the_mission_allowed := true ;
6613: LD_ADDR_OWVAR 57
6617: PUSH
6618: LD_INT 1
6620: ST_TO_ADDR
// if not was_end_query then
6621: LD_LOC 2
6625: NOT
6626: IFFALSE 6663
// begin qr := Query ( QEndGame ) ;
6628: LD_ADDR_VAR 0 2
6632: PUSH
6633: LD_STRING QEndGame
6635: PPUSH
6636: CALL_OW 97
6640: ST_TO_ADDR
// was_end_query := true ;
6641: LD_ADDR_LOC 2
6645: PUSH
6646: LD_INT 1
6648: ST_TO_ADDR
// if qr = 1 then
6649: LD_VAR 0 2
6653: PUSH
6654: LD_INT 1
6656: EQUAL
6657: IFFALSE 6663
// VyhraExit ;
6659: CALL 374 0 0
// end ; end else
6663: GO 6681
// begin end_the_mission_allowed := false ;
6665: LD_ADDR_OWVAR 57
6669: PUSH
6670: LD_INT 0
6672: ST_TO_ADDR
// was_end_query := false ;
6673: LD_ADDR_LOC 2
6677: PUSH
6678: LD_INT 0
6680: ST_TO_ADDR
// end ; enable ;
6681: ENABLE
// end ;
6682: PPOPN 2
6684: END
// export gleb_lives , utok_na_gleba ; every 0 0$1 trigger gleb and gleb_lives <> GetLives ( gleb ) do var i ;
6685: LD_EXP 65
6689: PUSH
6690: LD_EXP 59
6694: PUSH
6695: LD_EXP 65
6699: PPUSH
6700: CALL_OW 256
6704: NONEQUAL
6705: AND
6706: IFFALSE 6772
6708: GO 6710
6710: DISABLE
6711: LD_INT 0
6713: PPUSH
// begin for i in FilterAllUnits ( [ [ f_side , you ] ] ) do
6714: LD_ADDR_VAR 0 1
6718: PUSH
6719: LD_INT 22
6721: PUSH
6722: LD_EXP 1
6726: PUSH
6727: EMPTY
6728: LIST
6729: LIST
6730: PUSH
6731: EMPTY
6732: LIST
6733: PPUSH
6734: CALL_OW 69
6738: PUSH
6739: FOR_IN
6740: IFFALSE 6769
// if WantsToAttack ( i ) = Gleb then
6742: LD_VAR 0 1
6746: PPUSH
6747: CALL_OW 319
6751: PUSH
6752: LD_EXP 65
6756: EQUAL
6757: IFFALSE 6767
// utok_na_gleba := true ;
6759: LD_ADDR_EXP 60
6763: PUSH
6764: LD_INT 1
6766: ST_TO_ADDR
6767: GO 6739
6769: POP
6770: POP
// enable ;
6771: ENABLE
// end ;
6772: PPOPN 1
6774: END
// export function DKillGleb ; begin
6775: LD_INT 0
6777: PPUSH
// DialogueOn ;
6778: CALL_OW 6
// SayRadio ( Pla , DKillGleb-Pla-1 ) ;
6782: LD_EXP 45
6786: PPUSH
6787: LD_STRING DKillGleb-Pla-1
6789: PPUSH
6790: CALL_OW 94
// DialogueOff ;
6794: CALL_OW 7
// end ;
6798: LD_VAR 0 1
6802: RET
// every 0 0$5 do var i , a ;
6803: GO 6805
6805: DISABLE
6806: LD_INT 0
6808: PPUSH
6809: PPUSH
// begin a := 0 ;
6810: LD_ADDR_VAR 0 2
6814: PUSH
6815: LD_INT 0
6817: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , you ] ] ) do
6818: LD_ADDR_VAR 0 1
6822: PUSH
6823: LD_INT 2
6825: PUSH
6826: LD_INT 30
6828: PUSH
6829: LD_INT 0
6831: PUSH
6832: EMPTY
6833: LIST
6834: LIST
6835: PUSH
6836: LD_INT 30
6838: PUSH
6839: LD_INT 1
6841: PUSH
6842: EMPTY
6843: LIST
6844: LIST
6845: PUSH
6846: EMPTY
6847: LIST
6848: LIST
6849: LIST
6850: PUSH
6851: LD_INT 22
6853: PUSH
6854: LD_EXP 1
6858: PUSH
6859: EMPTY
6860: LIST
6861: LIST
6862: PUSH
6863: EMPTY
6864: LIST
6865: LIST
6866: PPUSH
6867: CALL_OW 69
6871: PUSH
6872: FOR_IN
6873: IFFALSE 6906
// a := a + GetResourceType ( Getbase ( i ) , mat_siberit ) ;
6875: LD_ADDR_VAR 0 2
6879: PUSH
6880: LD_VAR 0 2
6884: PUSH
6885: LD_VAR 0 1
6889: PPUSH
6890: CALL_OW 274
6894: PPUSH
6895: LD_INT 3
6897: PPUSH
6898: CALL_OW 275
6902: PLUS
6903: ST_TO_ADDR
6904: GO 6872
6906: POP
6907: POP
// if a >= 100 then
6908: LD_VAR 0 2
6912: PUSH
6913: LD_INT 100
6915: GREATEREQUAL
6916: IFFALSE 6935
// begin ChangeMissionObjectives ( MOutMine ) ;
6918: LD_STRING MOutMine
6920: PPUSH
6921: CALL_OW 337
// mine_obj_completed := true ;
6925: LD_ADDR_EXP 30
6929: PUSH
6930: LD_INT 1
6932: ST_TO_ADDR
// end else
6933: GO 6936
// enable ;
6935: ENABLE
// end ;
6936: PPOPN 2
6938: END
// every 0 0$5 trigger GetResourceType ( GetBase ( RuDepot ) , mat_siberit ) > 15 do
6939: LD_INT 58
6941: PPUSH
6942: CALL_OW 274
6946: PPUSH
6947: LD_INT 3
6949: PPUSH
6950: CALL_OW 275
6954: PUSH
6955: LD_INT 15
6957: GREATER
6958: IFFALSE 7004
6960: GO 6962
6962: DISABLE
// begin if not Ovsyenkotaken then
6963: LD_EXP 14
6967: NOT
6968: IFFALSE 7004
// begin if GetSide ( RuDepot ) <> you then
6970: LD_INT 58
6972: PPUSH
6973: CALL_OW 255
6977: PUSH
6978: LD_EXP 1
6982: NONEQUAL
6983: IFFALSE 7003
// SetResourceType ( GetBase ( RuDepot ) , mat_siberit , 5 ) ;
6985: LD_INT 58
6987: PPUSH
6988: CALL_OW 274
6992: PPUSH
6993: LD_INT 3
6995: PPUSH
6996: LD_INT 5
6998: PPUSH
6999: CALL_OW 277
// enable ;
7003: ENABLE
// end ; end ;
7004: END
// every 0 0$10 trigger UnitFilter ( zbytek , [ [ f_see , you ] ] ) do
7005: LD_EXP 91
7009: PPUSH
7010: LD_INT 101
7012: PUSH
7013: LD_EXP 1
7017: PUSH
7018: EMPTY
7019: LIST
7020: LIST
7021: PUSH
7022: EMPTY
7023: LIST
7024: PPUSH
7025: CALL_OW 72
7029: IFFALSE 7048
7031: GO 7033
7033: DISABLE
// begin wait ( 0 0$10 ) ;
7034: LD_INT 350
7036: PPUSH
7037: CALL_OW 67
// MyHint ( RemoteControl ) ;
7041: LD_STRING RemoteControl
7043: PPUSH
7044: CALL 11783 0 1
// end ; end_of_file
7048: END
// export Burlak , Platonov , Karamazov , Petrovova , Gleb , Petrosyan , Titov , Dolgov , Lipshchin ; export Vsevolod , Vsevolod2 ; export used , ru_cars , cars , other_ru_5_6 , stevens_killed , sli_pryc ; export fast_braketrough ; export function Load ; var i , k1 , k2 ; begin
7049: LD_INT 0
7051: PPUSH
7052: PPUSH
7053: PPUSH
7054: PPUSH
// belkovfreed := LoadVariable ( belkovfreed , true ) ;
7055: LD_ADDR_EXP 13
7059: PUSH
7060: LD_STRING belkovfreed
7062: PPUSH
7063: LD_INT 1
7065: PPUSH
7066: CALL_OW 30
7070: ST_TO_ADDR
// cars := LoadVariable ( cars_ru_6 , [ [ ru_heavy_wheeled , ru_gatling_gun , nation_russian , 0 , 0 ] , [ ru_heavy_wheeled , ru_heavy_gun , nation_russian , 0 , 0 ] , [ ru_heavy_wheeled , ru_heavy_gun , nation_russian , 0 , 0 ] , [ ru_heavy_tracked , ru_heavy_gun , nation_russian , 0 , 0 ] , [ ru_heavy_tracked , ru_gatling_gun , nation_russian , 0 , 0 ] , [ ru_heavy_tracked , ru_gatling_gun , nation_russian , 0 , 0 ] , [ ru_heavy_tracked , ru_gatling_gun , nation_russian , 0 , 0 ] , [ ru_heavy_tracked , ru_gatling_gun , nation_russian , 0 , 0 ] ] ) ;
7071: LD_ADDR_EXP 74
7075: PUSH
7076: LD_STRING cars_ru_6
7078: PPUSH
7079: LD_INT 23
7081: PUSH
7082: LD_INT 43
7084: PUSH
7085: LD_INT 3
7087: PUSH
7088: LD_INT 0
7090: PUSH
7091: LD_INT 0
7093: PUSH
7094: EMPTY
7095: LIST
7096: LIST
7097: LIST
7098: LIST
7099: LIST
7100: PUSH
7101: LD_INT 23
7103: PUSH
7104: LD_INT 46
7106: PUSH
7107: LD_INT 3
7109: PUSH
7110: LD_INT 0
7112: PUSH
7113: LD_INT 0
7115: PUSH
7116: EMPTY
7117: LIST
7118: LIST
7119: LIST
7120: LIST
7121: LIST
7122: PUSH
7123: LD_INT 23
7125: PUSH
7126: LD_INT 46
7128: PUSH
7129: LD_INT 3
7131: PUSH
7132: LD_INT 0
7134: PUSH
7135: LD_INT 0
7137: PUSH
7138: EMPTY
7139: LIST
7140: LIST
7141: LIST
7142: LIST
7143: LIST
7144: PUSH
7145: LD_INT 24
7147: PUSH
7148: LD_INT 46
7150: PUSH
7151: LD_INT 3
7153: PUSH
7154: LD_INT 0
7156: PUSH
7157: LD_INT 0
7159: PUSH
7160: EMPTY
7161: LIST
7162: LIST
7163: LIST
7164: LIST
7165: LIST
7166: PUSH
7167: LD_INT 24
7169: PUSH
7170: LD_INT 43
7172: PUSH
7173: LD_INT 3
7175: PUSH
7176: LD_INT 0
7178: PUSH
7179: LD_INT 0
7181: PUSH
7182: EMPTY
7183: LIST
7184: LIST
7185: LIST
7186: LIST
7187: LIST
7188: PUSH
7189: LD_INT 24
7191: PUSH
7192: LD_INT 43
7194: PUSH
7195: LD_INT 3
7197: PUSH
7198: LD_INT 0
7200: PUSH
7201: LD_INT 0
7203: PUSH
7204: EMPTY
7205: LIST
7206: LIST
7207: LIST
7208: LIST
7209: LIST
7210: PUSH
7211: LD_INT 24
7213: PUSH
7214: LD_INT 43
7216: PUSH
7217: LD_INT 3
7219: PUSH
7220: LD_INT 0
7222: PUSH
7223: LD_INT 0
7225: PUSH
7226: EMPTY
7227: LIST
7228: LIST
7229: LIST
7230: LIST
7231: LIST
7232: PUSH
7233: LD_INT 24
7235: PUSH
7236: LD_INT 43
7238: PUSH
7239: LD_INT 3
7241: PUSH
7242: LD_INT 0
7244: PUSH
7245: LD_INT 0
7247: PUSH
7248: EMPTY
7249: LIST
7250: LIST
7251: LIST
7252: LIST
7253: LIST
7254: PUSH
7255: EMPTY
7256: LIST
7257: LIST
7258: LIST
7259: LIST
7260: LIST
7261: LIST
7262: LIST
7263: LIST
7264: PPUSH
7265: CALL_OW 30
7269: ST_TO_ADDR
// stevens_killed := LoadVariable ( stevens_killed , false ) ;
7270: LD_ADDR_EXP 76
7274: PUSH
7275: LD_STRING stevens_killed
7277: PPUSH
7278: LD_INT 0
7280: PPUSH
7281: CALL_OW 30
7285: ST_TO_ADDR
// fast_braketrough := LoadVariable ( OvesyenkoTime , false ) ;
7286: LD_ADDR_EXP 78
7290: PUSH
7291: LD_STRING OvesyenkoTime
7293: PPUSH
7294: LD_INT 0
7296: PPUSH
7297: CALL_OW 30
7301: ST_TO_ADDR
// InitUc ;
7302: CALL_OW 18
// InitHc ;
7306: CALL_OW 19
// uc_side := you ;
7310: LD_ADDR_OWVAR 20
7314: PUSH
7315: LD_EXP 1
7319: ST_TO_ADDR
// uc_nation := nation_russian ;
7320: LD_ADDR_OWVAR 21
7324: PUSH
7325: LD_INT 3
7327: ST_TO_ADDR
// Platonov := MyCreateCharacter ( Platonov , 0 , class_soldier , true ) ;
7328: LD_ADDR_EXP 62
7332: PUSH
7333: LD_STRING Platonov
7335: PPUSH
7336: LD_INT 0
7338: PPUSH
7339: LD_INT 1
7341: PPUSH
7342: LD_INT 1
7344: PPUSH
7345: CALL 8355 0 4
7349: ST_TO_ADDR
// if difficulty = 3 then
7350: LD_OWVAR 67
7354: PUSH
7355: LD_INT 3
7357: EQUAL
7358: IFFALSE 7382
// Burlak := MyCreateCharacter ( Burlak , 0 , class_mechanic , false ) ;
7360: LD_ADDR_EXP 61
7364: PUSH
7365: LD_STRING Burlak
7367: PPUSH
7368: LD_INT 0
7370: PPUSH
7371: LD_INT 3
7373: PPUSH
7374: LD_INT 0
7376: PPUSH
7377: CALL 8355 0 4
7381: ST_TO_ADDR
// Titov := MyCreateCharacter ( Titov , 0 , class_soldier , false ) ;
7382: LD_ADDR_EXP 67
7386: PUSH
7387: LD_STRING Titov
7389: PPUSH
7390: LD_INT 0
7392: PPUSH
7393: LD_INT 1
7395: PPUSH
7396: LD_INT 0
7398: PPUSH
7399: CALL 8355 0 4
7403: ST_TO_ADDR
// Dolgov := MyCreateCharacter ( Dolgov , 0 , class_scientistic , false ) ;
7404: LD_ADDR_EXP 68
7408: PUSH
7409: LD_STRING Dolgov
7411: PPUSH
7412: LD_INT 0
7414: PPUSH
7415: LD_INT 4
7417: PPUSH
7418: LD_INT 0
7420: PPUSH
7421: CALL 8355 0 4
7425: ST_TO_ADDR
// Lipshchin := MyCreateCharacter ( Lipshchin , 0 , class_soldier , false ) ;
7426: LD_ADDR_EXP 69
7430: PUSH
7431: LD_STRING Lipshchin
7433: PPUSH
7434: LD_INT 0
7436: PPUSH
7437: LD_INT 1
7439: PPUSH
7440: LD_INT 0
7442: PPUSH
7443: CALL 8355 0 4
7447: ST_TO_ADDR
// Karamazov := MyCreateCharacter ( Karamazov , 0 , class_engineer , false ) ;
7448: LD_ADDR_EXP 63
7452: PUSH
7453: LD_STRING Karamazov
7455: PPUSH
7456: LD_INT 0
7458: PPUSH
7459: LD_INT 2
7461: PPUSH
7462: LD_INT 0
7464: PPUSH
7465: CALL 8355 0 4
7469: ST_TO_ADDR
// Petrovova := MyCreateCharacter ( Petrovova , 0 , class_soldier , false ) ;
7470: LD_ADDR_EXP 64
7474: PUSH
7475: LD_STRING Petrovova
7477: PPUSH
7478: LD_INT 0
7480: PPUSH
7481: LD_INT 1
7483: PPUSH
7484: LD_INT 0
7486: PPUSH
7487: CALL 8355 0 4
7491: ST_TO_ADDR
// Gleb := MyCreateCharacter ( Gleb , 0 , class_soldier , false ) ;
7492: LD_ADDR_EXP 65
7496: PUSH
7497: LD_STRING Gleb
7499: PPUSH
7500: LD_INT 0
7502: PPUSH
7503: LD_INT 1
7505: PPUSH
7506: LD_INT 0
7508: PPUSH
7509: CALL 8355 0 4
7513: ST_TO_ADDR
// Petrosyan := MyCreateCharacter ( Petrosyan , 0 , class_scientistic , false ) ;
7514: LD_ADDR_EXP 66
7518: PUSH
7519: LD_STRING Petrosyan
7521: PPUSH
7522: LD_INT 0
7524: PPUSH
7525: LD_INT 4
7527: PPUSH
7528: LD_INT 0
7530: PPUSH
7531: CALL 8355 0 4
7535: ST_TO_ADDR
// if difficulty < 3 then
7536: LD_OWVAR 67
7540: PUSH
7541: LD_INT 3
7543: LESS
7544: IFFALSE 7568
// Burlak := MyCreateCharacter ( Burlak , 0 , class_mechanic , false ) ;
7546: LD_ADDR_EXP 61
7550: PUSH
7551: LD_STRING Burlak
7553: PPUSH
7554: LD_INT 0
7556: PPUSH
7557: LD_INT 3
7559: PPUSH
7560: LD_INT 0
7562: PPUSH
7563: CALL 8355 0 4
7567: ST_TO_ADDR
// used := [ Burlak , Lipshchin , Titov , Dolgov , Karamazov , Petrovova , Gleb , Petrosyan ] diff 0 ;
7568: LD_ADDR_EXP 72
7572: PUSH
7573: LD_EXP 61
7577: PUSH
7578: LD_EXP 69
7582: PUSH
7583: LD_EXP 67
7587: PUSH
7588: LD_EXP 68
7592: PUSH
7593: LD_EXP 63
7597: PUSH
7598: LD_EXP 64
7602: PUSH
7603: LD_EXP 65
7607: PUSH
7608: LD_EXP 66
7612: PUSH
7613: EMPTY
7614: LIST
7615: LIST
7616: LIST
7617: LIST
7618: LIST
7619: LIST
7620: LIST
7621: LIST
7622: PUSH
7623: LD_INT 0
7625: DIFF
7626: ST_TO_ADDR
// other_ru_5_6 := CreateCharacterSet ( other_ru_5_6 ) ;
7627: LD_ADDR_EXP 75
7631: PUSH
7632: LD_STRING other_ru_5_6
7634: PPUSH
7635: CALL_OW 31
7639: ST_TO_ADDR
// used := used ^ other_ru_5_6 ;
7640: LD_ADDR_EXP 72
7644: PUSH
7645: LD_EXP 72
7649: PUSH
7650: LD_EXP 75
7654: ADD
7655: ST_TO_ADDR
// rulive := used ;
7656: LD_ADDR_EXP 9
7660: PUSH
7661: LD_EXP 72
7665: ST_TO_ADDR
// k1 := Rand ( 1 , used ) ;
7666: LD_ADDR_VAR 0 3
7670: PUSH
7671: LD_INT 1
7673: PPUSH
7674: LD_EXP 72
7678: PPUSH
7679: CALL_OW 12
7683: ST_TO_ADDR
// if not UnitFilter ( used , [ [ f_class , class_engineer ] ] ) then
7684: LD_EXP 72
7688: PPUSH
7689: LD_INT 25
7691: PUSH
7692: LD_INT 2
7694: PUSH
7695: EMPTY
7696: LIST
7697: LIST
7698: PUSH
7699: EMPTY
7700: LIST
7701: PPUSH
7702: CALL_OW 72
7706: NOT
7707: IFFALSE 7727
// SetClass ( used [ k1 ] , class_engineer ) ;
7709: LD_EXP 72
7713: PUSH
7714: LD_VAR 0 3
7718: ARRAY
7719: PPUSH
7720: LD_INT 2
7722: PPUSH
7723: CALL_OW 336
// k2 := Rand ( 1 , used ) ;
7727: LD_ADDR_VAR 0 4
7731: PUSH
7732: LD_INT 1
7734: PPUSH
7735: LD_EXP 72
7739: PPUSH
7740: CALL_OW 12
7744: ST_TO_ADDR
// while k1 = k2 do
7745: LD_VAR 0 3
7749: PUSH
7750: LD_VAR 0 4
7754: EQUAL
7755: IFFALSE 7777
// k2 := Rand ( 1 , used ) ;
7757: LD_ADDR_VAR 0 4
7761: PUSH
7762: LD_INT 1
7764: PPUSH
7765: LD_EXP 72
7769: PPUSH
7770: CALL_OW 12
7774: ST_TO_ADDR
7775: GO 7745
// if difficulty = 1 and not UnitFilter ( used , [ [ f_class , class_scientistic ] ] ) then
7777: LD_OWVAR 67
7781: PUSH
7782: LD_INT 1
7784: EQUAL
7785: PUSH
7786: LD_EXP 72
7790: PPUSH
7791: LD_INT 25
7793: PUSH
7794: LD_INT 4
7796: PUSH
7797: EMPTY
7798: LIST
7799: LIST
7800: PUSH
7801: EMPTY
7802: LIST
7803: PPUSH
7804: CALL_OW 72
7808: NOT
7809: AND
7810: IFFALSE 7830
// SetClass ( used [ k2 ] , class_scientistic ) ;
7812: LD_EXP 72
7816: PUSH
7817: LD_VAR 0 4
7821: ARRAY
7822: PPUSH
7823: LD_INT 4
7825: PPUSH
7826: CALL_OW 336
// uc_side := you2 ;
7830: LD_ADDR_OWVAR 20
7834: PUSH
7835: LD_EXP 2
7839: ST_TO_ADDR
// Vsevolod := MyCreateCharacter ( Vsevolod , 0 , class_soldier , true ) ;
7840: LD_ADDR_EXP 70
7844: PUSH
7845: LD_STRING Vsevolod
7847: PPUSH
7848: LD_INT 0
7850: PPUSH
7851: LD_INT 1
7853: PPUSH
7854: LD_INT 1
7856: PPUSH
7857: CALL 8355 0 4
7861: ST_TO_ADDR
// Vsevolod2 := MyCreateCharacter ( Vsevolod , 0 , class_soldier , true ) ;
7862: LD_ADDR_EXP 71
7866: PUSH
7867: LD_STRING Vsevolod
7869: PPUSH
7870: LD_INT 0
7872: PPUSH
7873: LD_INT 1
7875: PPUSH
7876: LD_INT 1
7878: PPUSH
7879: CALL 8355 0 4
7883: ST_TO_ADDR
// for i := 1 to 3 do
7884: LD_ADDR_VAR 0 2
7888: PUSH
7889: DOUBLE
7890: LD_INT 1
7892: DEC
7893: ST_TO_ADDR
7894: LD_INT 3
7896: PUSH
7897: FOR_TO
7898: IFFALSE 7931
// begin PrepareSoldier ( sex_male , 3 ) ;
7900: LD_INT 1
7902: PPUSH
7903: LD_INT 3
7905: PPUSH
7906: CALL_OW 381
// vsevolod_uderna_group := vsevolod_uderna_group ^ [ CreateHuman ] ;
7910: LD_ADDR_EXP 12
7914: PUSH
7915: LD_EXP 12
7919: PUSH
7920: CALL_OW 44
7924: PUSH
7925: EMPTY
7926: LIST
7927: ADD
7928: ST_TO_ADDR
// end ;
7929: GO 7897
7931: POP
7932: POP
// SetClass ( vsevolod_uderna_group [ 1 ] , class_engineer ) ;
7933: LD_EXP 12
7937: PUSH
7938: LD_INT 1
7940: ARRAY
7941: PPUSH
7942: LD_INT 2
7944: PPUSH
7945: CALL_OW 336
// vsevolod_uderna_group := vsevolod_uderna_group ;
7949: LD_ADDR_EXP 12
7953: PUSH
7954: LD_EXP 12
7958: ST_TO_ADDR
// end ;
7959: LD_VAR 0 1
7963: RET
// export function place_in_ru_cars ; var car , i ; begin
7964: LD_INT 0
7966: PPUSH
7967: PPUSH
7968: PPUSH
// InitUc ;
7969: CALL_OW 18
// InitVc ;
7973: CALL_OW 20
// vc_control := control_manual ;
7977: LD_ADDR_OWVAR 38
7981: PUSH
7982: LD_INT 1
7984: ST_TO_ADDR
// vc_engine := engine_combustion ;
7985: LD_ADDR_OWVAR 39
7989: PUSH
7990: LD_INT 1
7992: ST_TO_ADDR
// uc_side := you ;
7993: LD_ADDR_OWVAR 20
7997: PUSH
7998: LD_EXP 1
8002: ST_TO_ADDR
// ru_cars := [ ] ;
8003: LD_ADDR_EXP 73
8007: PUSH
8008: EMPTY
8009: ST_TO_ADDR
// if ( ( cars + 0 ) < ( used + 0 ) ) or ( ( used + 0 ) < 6 ) then
8010: LD_EXP 74
8014: PUSH
8015: LD_INT 0
8017: PLUS
8018: PUSH
8019: LD_EXP 72
8023: PUSH
8024: LD_INT 0
8026: PLUS
8027: LESS
8028: PUSH
8029: LD_EXP 72
8033: PUSH
8034: LD_INT 0
8036: PLUS
8037: PUSH
8038: LD_INT 6
8040: LESS
8041: OR
8042: IFFALSE 8051
// begin Msg ( spatny save ) ;
8044: LD_STRING spatny save
8046: PPUSH
8047: CALL_OW 100
// end ; for i := 1 to used do
8051: LD_ADDR_VAR 0 3
8055: PUSH
8056: DOUBLE
8057: LD_INT 1
8059: DEC
8060: ST_TO_ADDR
8061: LD_EXP 72
8065: PUSH
8066: FOR_TO
8067: IFFALSE 8307
// begin uc_nation := cars [ i ] [ 3 ] ;
8069: LD_ADDR_OWVAR 21
8073: PUSH
8074: LD_EXP 74
8078: PUSH
8079: LD_VAR 0 3
8083: ARRAY
8084: PUSH
8085: LD_INT 3
8087: ARRAY
8088: ST_TO_ADDR
// vc_chassis := cars [ i ] [ 1 ] ;
8089: LD_ADDR_OWVAR 37
8093: PUSH
8094: LD_EXP 74
8098: PUSH
8099: LD_VAR 0 3
8103: ARRAY
8104: PUSH
8105: LD_INT 1
8107: ARRAY
8108: ST_TO_ADDR
// vc_weapon := cars [ i ] [ 2 ] ;
8109: LD_ADDR_OWVAR 40
8113: PUSH
8114: LD_EXP 74
8118: PUSH
8119: LD_VAR 0 3
8123: ARRAY
8124: PUSH
8125: LD_INT 2
8127: ARRAY
8128: ST_TO_ADDR
// uc_direction := Rand ( 3 , 4 ) ;
8129: LD_ADDR_OWVAR 24
8133: PUSH
8134: LD_INT 3
8136: PPUSH
8137: LD_INT 4
8139: PPUSH
8140: CALL_OW 12
8144: ST_TO_ADDR
// vc_fuel_battery := Rand ( 3 , 6 ) ;
8145: LD_ADDR_OWVAR 41
8149: PUSH
8150: LD_INT 3
8152: PPUSH
8153: LD_INT 6
8155: PPUSH
8156: CALL_OW 12
8160: ST_TO_ADDR
// uc_direction := 5 ;
8161: LD_ADDR_OWVAR 24
8165: PUSH
8166: LD_INT 5
8168: ST_TO_ADDR
// car := CreateVehicle ;
8169: LD_ADDR_VAR 0 2
8173: PUSH
8174: CALL_OW 45
8178: ST_TO_ADDR
// if ( cars [ i ] [ 2 ] in [ ar_cargo_bay , ru_cargo_bay , us_cargo_bay ] ) then
8179: LD_EXP 74
8183: PUSH
8184: LD_VAR 0 3
8188: ARRAY
8189: PUSH
8190: LD_INT 2
8192: ARRAY
8193: PUSH
8194: LD_INT 32
8196: PUSH
8197: LD_INT 51
8199: PUSH
8200: LD_INT 12
8202: PUSH
8203: EMPTY
8204: LIST
8205: LIST
8206: LIST
8207: IN
8208: IFFALSE 8269
// if ( cars [ i ] [ 4 ] <> 0 ) then
8210: LD_EXP 74
8214: PUSH
8215: LD_VAR 0 3
8219: ARRAY
8220: PUSH
8221: LD_INT 4
8223: ARRAY
8224: PUSH
8225: LD_INT 0
8227: NONEQUAL
8228: IFFALSE 8269
// SetCargo ( car , cars [ i ] [ 4 ] , cars [ i ] [ 5 ] ) ;
8230: LD_VAR 0 2
8234: PPUSH
8235: LD_EXP 74
8239: PUSH
8240: LD_VAR 0 3
8244: ARRAY
8245: PUSH
8246: LD_INT 4
8248: ARRAY
8249: PPUSH
8250: LD_EXP 74
8254: PUSH
8255: LD_VAR 0 3
8259: ARRAY
8260: PUSH
8261: LD_INT 5
8263: ARRAY
8264: PPUSH
8265: CALL_OW 290
// ru_cars := ru_cars ^ car ;
8269: LD_ADDR_EXP 73
8273: PUSH
8274: LD_EXP 73
8278: PUSH
8279: LD_VAR 0 2
8283: ADD
8284: ST_TO_ADDR
// PlaceHumanInUnit ( used [ i ] , car ) ;
8285: LD_EXP 72
8289: PUSH
8290: LD_VAR 0 3
8294: ARRAY
8295: PPUSH
8296: LD_VAR 0 2
8300: PPUSH
8301: CALL_OW 52
// end ;
8305: GO 8066
8307: POP
8308: POP
// end ;
8309: LD_VAR 0 1
8313: RET
// export function place_ru_cars ; var i ; begin
8314: LD_INT 0
8316: PPUSH
8317: PPUSH
// for i in ru_cars do
8318: LD_ADDR_VAR 0 2
8322: PUSH
8323: LD_EXP 73
8327: PUSH
8328: FOR_IN
8329: IFFALSE 8348
// PlaceUnitArea ( i , ru_place , false ) ;
8331: LD_VAR 0 2
8335: PPUSH
8336: LD_INT 5
8338: PPUSH
8339: LD_INT 0
8341: PPUSH
8342: CALL_OW 49
8346: GO 8328
8348: POP
8349: POP
// end ;
8350: LD_VAR 0 1
8354: RET
// function MyCreateCharacter ( name , unclass , unclass_gen , new ) ; begin
8355: LD_INT 0
8357: PPUSH
// if new or TestCharacters ( name ) then
8358: LD_VAR 0 4
8362: PUSH
8363: LD_VAR 0 1
8367: PPUSH
8368: CALL_OW 28
8372: OR
8373: IFFALSE 8456
// begin if new then
8375: LD_VAR 0 4
8379: IFFALSE 8398
// result := NewCharacter ( name ) else
8381: LD_ADDR_VAR 0 5
8385: PUSH
8386: LD_VAR 0 1
8390: PPUSH
8391: CALL_OW 25
8395: ST_TO_ADDR
8396: GO 8434
// begin if CheckCharacterSet ( name ) then
8398: LD_VAR 0 1
8402: PPUSH
8403: CALL_OW 29
8407: IFFALSE 8426
// result := CreateCharacter ( name ) else
8409: LD_ADDR_VAR 0 5
8413: PUSH
8414: LD_VAR 0 1
8418: PPUSH
8419: CALL_OW 34
8423: ST_TO_ADDR
8424: GO 8434
// result := 0 ;
8426: LD_ADDR_VAR 0 5
8430: PUSH
8431: LD_INT 0
8433: ST_TO_ADDR
// end ; if unclass then
8434: LD_VAR 0 2
8438: IFFALSE 8454
// SetClass ( result , unclass ) ;
8440: LD_VAR 0 5
8444: PPUSH
8445: LD_VAR 0 2
8449: PPUSH
8450: CALL_OW 336
// end else
8454: GO 8532
// begin Msg ( Chybi  & name & ! ) ;
8456: LD_STRING Chybi 
8458: PUSH
8459: LD_VAR 0 1
8463: STR
8464: PUSH
8465: LD_STRING !
8467: STR
8468: PPUSH
8469: CALL_OW 100
// hc_name := name ;
8473: LD_ADDR_OWVAR 26
8477: PUSH
8478: LD_VAR 0 1
8482: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 3 ) ;
8483: LD_INT 1
8485: PPUSH
8486: LD_INT 0
8488: PPUSH
8489: LD_INT 3
8491: PPUSH
8492: CALL_OW 380
// if unclass_gen then
8496: LD_VAR 0 3
8500: IFFALSE 8514
// hc_class := unclass_gen else
8502: LD_ADDR_OWVAR 28
8506: PUSH
8507: LD_VAR 0 3
8511: ST_TO_ADDR
8512: GO 8522
// hc_class := class_soldier ;
8514: LD_ADDR_OWVAR 28
8518: PUSH
8519: LD_INT 1
8521: ST_TO_ADDR
// result := CreateHuman ;
8522: LD_ADDR_VAR 0 5
8526: PUSH
8527: CALL_OW 44
8531: ST_TO_ADDR
// end ; end ;
8532: LD_VAR 0 5
8536: RET
// export convoy_06 ; export function Save ; var i , zustali , tmp_conv ; begin
8537: LD_INT 0
8539: PPUSH
8540: PPUSH
8541: PPUSH
8542: PPUSH
// DeleteVariable ( cars_ru_6 ) ;
8543: LD_STRING cars_ru_6
8545: PPUSH
8546: CALL_OW 41
// DeleteVariable ( other_ru_5_6 ) ;
8550: LD_STRING other_ru_5_6
8552: PPUSH
8553: CALL_OW 41
// SaveCharacters ( Burlak , Burlak ) ;
8557: LD_EXP 61
8561: PPUSH
8562: LD_STRING Burlak
8564: PPUSH
8565: CALL_OW 38
// if Titov then
8569: LD_EXP 67
8573: IFFALSE 8633
// if IsDead ( titov ) then
8575: LD_EXP 67
8579: PPUSH
8580: CALL_OW 301
8584: IFFALSE 8598
// SaveVariable ( 0 , TitovLoc ) else
8586: LD_INT 0
8588: PPUSH
8589: LD_STRING TitovLoc
8591: PPUSH
8592: CALL_OW 39
8596: GO 8633
// if titov in sli_pryc then
8598: LD_EXP 67
8602: PUSH
8603: LD_EXP 77
8607: IN
8608: IFFALSE 8623
// SaveVariable ( - 7 , TitovLoc ) else
8610: LD_INT 7
8612: NEG
8613: PPUSH
8614: LD_STRING TitovLoc
8616: PPUSH
8617: CALL_OW 39
8621: GO 8633
// SaveVariable ( 7 , TitovLoc ) ;
8623: LD_INT 7
8625: PPUSH
8626: LD_STRING TitovLoc
8628: PPUSH
8629: CALL_OW 39
// SaveCharacters ( Titov , Titov ) ;
8633: LD_EXP 67
8637: PPUSH
8638: LD_STRING Titov
8640: PPUSH
8641: CALL_OW 38
// if Dolgov then
8645: LD_EXP 68
8649: IFFALSE 8709
// if IsDead ( Dolgov ) then
8651: LD_EXP 68
8655: PPUSH
8656: CALL_OW 301
8660: IFFALSE 8674
// SaveVariable ( 0 , DolgovLoc ) else
8662: LD_INT 0
8664: PPUSH
8665: LD_STRING DolgovLoc
8667: PPUSH
8668: CALL_OW 39
8672: GO 8709
// if Dolgov in sli_pryc then
8674: LD_EXP 68
8678: PUSH
8679: LD_EXP 77
8683: IN
8684: IFFALSE 8699
// SaveVariable ( - 7 , DolgovLoc ) else
8686: LD_INT 7
8688: NEG
8689: PPUSH
8690: LD_STRING DolgovLoc
8692: PPUSH
8693: CALL_OW 39
8697: GO 8709
// SaveVariable ( 7 , DolgovLoc ) ;
8699: LD_INT 7
8701: PPUSH
8702: LD_STRING DolgovLoc
8704: PPUSH
8705: CALL_OW 39
// if Dolgov then
8709: LD_EXP 68
8713: IFFALSE 8727
// SaveCharacters ( Dolgov , Dolgov ) ;
8715: LD_EXP 68
8719: PPUSH
8720: LD_STRING Dolgov
8722: PPUSH
8723: CALL_OW 38
// if Lipshchin then
8727: LD_EXP 69
8731: IFFALSE 8791
// if IsDead ( Lipshchin ) then
8733: LD_EXP 69
8737: PPUSH
8738: CALL_OW 301
8742: IFFALSE 8756
// SaveVariable ( 0 , LipshchinLoc ) else
8744: LD_INT 0
8746: PPUSH
8747: LD_STRING LipshchinLoc
8749: PPUSH
8750: CALL_OW 39
8754: GO 8791
// if Lipshchin in sli_pryc then
8756: LD_EXP 69
8760: PUSH
8761: LD_EXP 77
8765: IN
8766: IFFALSE 8781
// SaveVariable ( - 7 , LipshchinLoc ) else
8768: LD_INT 7
8770: NEG
8771: PPUSH
8772: LD_STRING LipshchinLoc
8774: PPUSH
8775: CALL_OW 39
8779: GO 8791
// SaveVariable ( 7 , LipshchinLoc ) ;
8781: LD_INT 7
8783: PPUSH
8784: LD_STRING LipshchinLoc
8786: PPUSH
8787: CALL_OW 39
// if Lipshchin then
8791: LD_EXP 69
8795: IFFALSE 8809
// SaveCharacters ( Lipshchin , Lipshchin ) ;
8797: LD_EXP 69
8801: PPUSH
8802: LD_STRING Lipshchin
8804: PPUSH
8805: CALL_OW 38
// if Karamazov then
8809: LD_EXP 63
8813: IFFALSE 8873
// if IsDead ( Karamazov ) then
8815: LD_EXP 63
8819: PPUSH
8820: CALL_OW 301
8824: IFFALSE 8838
// SaveVariable ( 0 , KaramazovLoc ) else
8826: LD_INT 0
8828: PPUSH
8829: LD_STRING KaramazovLoc
8831: PPUSH
8832: CALL_OW 39
8836: GO 8873
// if Karamazov in sli_pryc then
8838: LD_EXP 63
8842: PUSH
8843: LD_EXP 77
8847: IN
8848: IFFALSE 8863
// SaveVariable ( - 7 , KaramazovLoc ) else
8850: LD_INT 7
8852: NEG
8853: PPUSH
8854: LD_STRING KaramazovLoc
8856: PPUSH
8857: CALL_OW 39
8861: GO 8873
// SaveVariable ( 7 , KaramazovLoc ) ;
8863: LD_INT 7
8865: PPUSH
8866: LD_STRING KaramazovLoc
8868: PPUSH
8869: CALL_OW 39
// if Karamazov then
8873: LD_EXP 63
8877: IFFALSE 8891
// SaveCharacters ( Karamazov , Karamazov ) ;
8879: LD_EXP 63
8883: PPUSH
8884: LD_STRING Karamazov
8886: PPUSH
8887: CALL_OW 38
// if Petrovova then
8891: LD_EXP 64
8895: IFFALSE 8955
// if IsDead ( Petrovova ) then
8897: LD_EXP 64
8901: PPUSH
8902: CALL_OW 301
8906: IFFALSE 8920
// SaveVariable ( 0 , PetrovovaLoc ) else
8908: LD_INT 0
8910: PPUSH
8911: LD_STRING PetrovovaLoc
8913: PPUSH
8914: CALL_OW 39
8918: GO 8955
// if Petrovova in sli_pryc then
8920: LD_EXP 64
8924: PUSH
8925: LD_EXP 77
8929: IN
8930: IFFALSE 8945
// SaveVariable ( - 7 , PetrovovaLoc ) else
8932: LD_INT 7
8934: NEG
8935: PPUSH
8936: LD_STRING PetrovovaLoc
8938: PPUSH
8939: CALL_OW 39
8943: GO 8955
// SaveVariable ( 7 , PetrovovaLoc ) ;
8945: LD_INT 7
8947: PPUSH
8948: LD_STRING PetrovovaLoc
8950: PPUSH
8951: CALL_OW 39
// if Petrovova then
8955: LD_EXP 64
8959: IFFALSE 8973
// SaveCharacters ( Petrovova , Petrovova ) ;
8961: LD_EXP 64
8965: PPUSH
8966: LD_STRING Petrovova
8968: PPUSH
8969: CALL_OW 38
// if Gleb then
8973: LD_EXP 65
8977: IFFALSE 9037
// if IsDead ( Gleb ) then
8979: LD_EXP 65
8983: PPUSH
8984: CALL_OW 301
8988: IFFALSE 9002
// SaveVariable ( 0 , GlebLoc ) else
8990: LD_INT 0
8992: PPUSH
8993: LD_STRING GlebLoc
8995: PPUSH
8996: CALL_OW 39
9000: GO 9037
// if Gleb in sli_pryc then
9002: LD_EXP 65
9006: PUSH
9007: LD_EXP 77
9011: IN
9012: IFFALSE 9027
// SaveVariable ( - 7 , GlebLoc ) else
9014: LD_INT 7
9016: NEG
9017: PPUSH
9018: LD_STRING GlebLoc
9020: PPUSH
9021: CALL_OW 39
9025: GO 9037
// SaveVariable ( 7 , GlebLoc ) ;
9027: LD_INT 7
9029: PPUSH
9030: LD_STRING GlebLoc
9032: PPUSH
9033: CALL_OW 39
// if Gleb then
9037: LD_EXP 65
9041: IFFALSE 9055
// SaveCharacters ( Gleb , Gleb ) ;
9043: LD_EXP 65
9047: PPUSH
9048: LD_STRING Gleb
9050: PPUSH
9051: CALL_OW 38
// if Petrosyan then
9055: LD_EXP 66
9059: IFFALSE 9119
// if IsDead ( Petrosyan ) then
9061: LD_EXP 66
9065: PPUSH
9066: CALL_OW 301
9070: IFFALSE 9084
// SaveVariable ( 0 , PetrosyanLoc ) else
9072: LD_INT 0
9074: PPUSH
9075: LD_STRING PetrosyanLoc
9077: PPUSH
9078: CALL_OW 39
9082: GO 9119
// if Petrosyan in sli_pryc then
9084: LD_EXP 66
9088: PUSH
9089: LD_EXP 77
9093: IN
9094: IFFALSE 9109
// SaveVariable ( - 7 , PetrosyanLoc ) else
9096: LD_INT 7
9098: NEG
9099: PPUSH
9100: LD_STRING PetrosyanLoc
9102: PPUSH
9103: CALL_OW 39
9107: GO 9119
// SaveVariable ( 7 , PetrosyanLoc ) ;
9109: LD_INT 7
9111: PPUSH
9112: LD_STRING PetrosyanLoc
9114: PPUSH
9115: CALL_OW 39
// if Petrosyan then
9119: LD_EXP 66
9123: IFFALSE 9137
// SaveCharacters ( Petrosyan , Petrosyan ) ;
9125: LD_EXP 66
9129: PPUSH
9130: LD_STRING Petrosyan
9132: PPUSH
9133: CALL_OW 38
// SaveCharacters ( Vsevolod , Vsevolod ) ;
9137: LD_EXP 70
9141: PPUSH
9142: LD_STRING Vsevolod
9144: PPUSH
9145: CALL_OW 38
// SaveVariable ( not IsDead ( vsevolod ) , VsevSaved ) ;
9149: LD_EXP 70
9153: PPUSH
9154: CALL_OW 301
9158: NOT
9159: PPUSH
9160: LD_STRING VsevSaved
9162: PPUSH
9163: CALL_OW 39
// zustali := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , you ] , [ f_nation , nation_russian ] ] ) ;
9167: LD_ADDR_VAR 0 3
9171: PUSH
9172: LD_INT 21
9174: PUSH
9175: LD_INT 1
9177: PUSH
9178: EMPTY
9179: LIST
9180: LIST
9181: PUSH
9182: LD_INT 22
9184: PUSH
9185: LD_EXP 1
9189: PUSH
9190: EMPTY
9191: LIST
9192: LIST
9193: PUSH
9194: LD_INT 23
9196: PUSH
9197: LD_INT 3
9199: PUSH
9200: EMPTY
9201: LIST
9202: LIST
9203: PUSH
9204: EMPTY
9205: LIST
9206: LIST
9207: LIST
9208: PPUSH
9209: CALL_OW 69
9213: ST_TO_ADDR
// SaveCharacters ( zustali diff [ Burlak , Titov , Dolgov , Lipshchin , Karamazov , Petrovova , Gleb , Petrosyan , Vsevolod ] , survivors2 ) ;
9214: LD_VAR 0 3
9218: PUSH
9219: LD_EXP 61
9223: PUSH
9224: LD_EXP 67
9228: PUSH
9229: LD_EXP 68
9233: PUSH
9234: LD_EXP 69
9238: PUSH
9239: LD_EXP 63
9243: PUSH
9244: LD_EXP 64
9248: PUSH
9249: LD_EXP 65
9253: PUSH
9254: LD_EXP 66
9258: PUSH
9259: LD_EXP 70
9263: PUSH
9264: EMPTY
9265: LIST
9266: LIST
9267: LIST
9268: LIST
9269: LIST
9270: LIST
9271: LIST
9272: LIST
9273: LIST
9274: DIFF
9275: PPUSH
9276: LD_STRING survivors2
9278: PPUSH
9279: CALL_OW 38
// SaveCharacters ( sli_pryc diff [ Burlak , Titov , Dolgov , Lipshchin , Karamazov , Petrovova , Gleb , Petrosyan , Vsevolod ] , WithVsevolod ) ;
9283: LD_EXP 77
9287: PUSH
9288: LD_EXP 61
9292: PUSH
9293: LD_EXP 67
9297: PUSH
9298: LD_EXP 68
9302: PUSH
9303: LD_EXP 69
9307: PUSH
9308: LD_EXP 63
9312: PUSH
9313: LD_EXP 64
9317: PUSH
9318: LD_EXP 65
9322: PUSH
9323: LD_EXP 66
9327: PUSH
9328: LD_EXP 70
9332: PUSH
9333: EMPTY
9334: LIST
9335: LIST
9336: LIST
9337: LIST
9338: LIST
9339: LIST
9340: LIST
9341: LIST
9342: LIST
9343: DIFF
9344: PPUSH
9345: LD_STRING WithVsevolod
9347: PPUSH
9348: CALL_OW 38
// convoy_06 := [ ] ;
9352: LD_ADDR_EXP 79
9356: PUSH
9357: EMPTY
9358: ST_TO_ADDR
// tmp_conv := FilterUnitsInArea ( ru_exit , [ [ f_occupied ] , [ f_type , unit_vehicle ] , [ f_side , you ] ] ) ^ FilterUnitsInArea ( ru_exit , [ [ f_not , [ f_occupied ] ] , [ f_type , unit_vehicle ] , [ f_side , you ] ] ) ;
9359: LD_ADDR_VAR 0 4
9363: PUSH
9364: LD_INT 21
9366: PPUSH
9367: LD_INT 59
9369: PUSH
9370: EMPTY
9371: LIST
9372: PUSH
9373: LD_INT 21
9375: PUSH
9376: LD_INT 2
9378: PUSH
9379: EMPTY
9380: LIST
9381: LIST
9382: PUSH
9383: LD_INT 22
9385: PUSH
9386: LD_EXP 1
9390: PUSH
9391: EMPTY
9392: LIST
9393: LIST
9394: PUSH
9395: EMPTY
9396: LIST
9397: LIST
9398: LIST
9399: PPUSH
9400: CALL_OW 70
9404: PUSH
9405: LD_INT 21
9407: PPUSH
9408: LD_INT 3
9410: PUSH
9411: LD_INT 59
9413: PUSH
9414: EMPTY
9415: LIST
9416: PUSH
9417: EMPTY
9418: LIST
9419: LIST
9420: PUSH
9421: LD_INT 21
9423: PUSH
9424: LD_INT 2
9426: PUSH
9427: EMPTY
9428: LIST
9429: LIST
9430: PUSH
9431: LD_INT 22
9433: PUSH
9434: LD_EXP 1
9438: PUSH
9439: EMPTY
9440: LIST
9441: LIST
9442: PUSH
9443: EMPTY
9444: LIST
9445: LIST
9446: LIST
9447: PPUSH
9448: CALL_OW 70
9452: ADD
9453: ST_TO_ADDR
// for i in tmp_conv do
9454: LD_ADDR_VAR 0 2
9458: PUSH
9459: LD_VAR 0 4
9463: PUSH
9464: FOR_IN
9465: IFFALSE 9604
// begin convoy_06 := convoy_06 ^ [ [ GetNation ( i ) , GetWeapon ( i ) , GetControl ( i ) , GetEngine ( i ) , GetChassis ( i ) , GetCargo ( i , mat_cans ) , GetCargo ( i , mat_oil ) , GetCargo ( i , mat_siberit ) ] ] ;
9467: LD_ADDR_EXP 79
9471: PUSH
9472: LD_EXP 79
9476: PUSH
9477: LD_VAR 0 2
9481: PPUSH
9482: CALL_OW 248
9486: PUSH
9487: LD_VAR 0 2
9491: PPUSH
9492: CALL_OW 264
9496: PUSH
9497: LD_VAR 0 2
9501: PPUSH
9502: CALL_OW 263
9506: PUSH
9507: LD_VAR 0 2
9511: PPUSH
9512: CALL_OW 262
9516: PUSH
9517: LD_VAR 0 2
9521: PPUSH
9522: CALL_OW 265
9526: PUSH
9527: LD_VAR 0 2
9531: PPUSH
9532: LD_INT 1
9534: PPUSH
9535: CALL_OW 289
9539: PUSH
9540: LD_VAR 0 2
9544: PPUSH
9545: LD_INT 2
9547: PPUSH
9548: CALL_OW 289
9552: PUSH
9553: LD_VAR 0 2
9557: PPUSH
9558: LD_INT 3
9560: PPUSH
9561: CALL_OW 289
9565: PUSH
9566: EMPTY
9567: LIST
9568: LIST
9569: LIST
9570: LIST
9571: LIST
9572: LIST
9573: LIST
9574: LIST
9575: PUSH
9576: EMPTY
9577: LIST
9578: ADD
9579: ST_TO_ADDR
// if ( convoy_06 + 0 ) = ( zustali + 0 ) then
9580: LD_EXP 79
9584: PUSH
9585: LD_INT 0
9587: PLUS
9588: PUSH
9589: LD_VAR 0 3
9593: PUSH
9594: LD_INT 0
9596: PLUS
9597: EQUAL
9598: IFFALSE 9602
// break ;
9600: GO 9604
// end ;
9602: GO 9464
9604: POP
9605: POP
// SaveVariable ( convoy_06 , Convoy_06 ) ;
9606: LD_EXP 79
9610: PPUSH
9611: LD_STRING Convoy_06
9613: PPUSH
9614: CALL_OW 39
// end ;
9618: LD_VAR 0 1
9622: RET
// export accar1 , accar2 , acman1 , acman2 ; export function nakladaky ; begin
9623: LD_INT 0
9625: PPUSH
// InitUc ;
9626: CALL_OW 18
// InitHc ;
9630: CALL_OW 19
// InitVc ;
9634: CALL_OW 20
// uc_side := ai ;
9638: LD_ADDR_OWVAR 20
9642: PUSH
9643: LD_EXP 6
9647: ST_TO_ADDR
// uc_nation := nation_american ;
9648: LD_ADDR_OWVAR 21
9652: PUSH
9653: LD_INT 1
9655: ST_TO_ADDR
// vc_chassis := us_medium_tracked ;
9656: LD_ADDR_OWVAR 37
9660: PUSH
9661: LD_INT 3
9663: ST_TO_ADDR
// vc_weapon := us_cargo_bay ;
9664: LD_ADDR_OWVAR 40
9668: PUSH
9669: LD_INT 12
9671: ST_TO_ADDR
// vc_control := control_manual ;
9672: LD_ADDR_OWVAR 38
9676: PUSH
9677: LD_INT 1
9679: ST_TO_ADDR
// vc_engine := engine_solar ;
9680: LD_ADDR_OWVAR 39
9684: PUSH
9685: LD_INT 2
9687: ST_TO_ADDR
// uc_direction := 3 ;
9688: LD_ADDR_OWVAR 24
9692: PUSH
9693: LD_INT 3
9695: ST_TO_ADDR
// vc_fuel_battery := 80 ;
9696: LD_ADDR_OWVAR 41
9700: PUSH
9701: LD_INT 80
9703: ST_TO_ADDR
// accar1 := CreateVehicle ;
9704: LD_ADDR_EXP 80
9708: PUSH
9709: CALL_OW 45
9713: ST_TO_ADDR
// accar2 := CreateVehicle ;
9714: LD_ADDR_EXP 81
9718: PUSH
9719: CALL_OW 45
9723: ST_TO_ADDR
// PrepareSoldier ( sex_male , 2 ) ;
9724: LD_INT 1
9726: PPUSH
9727: LD_INT 2
9729: PPUSH
9730: CALL_OW 381
// acman1 := CreateHuman ;
9734: LD_ADDR_EXP 82
9738: PUSH
9739: CALL_OW 44
9743: ST_TO_ADDR
// acman2 := CreateHuman ;
9744: LD_ADDR_EXP 83
9748: PUSH
9749: CALL_OW 44
9753: ST_TO_ADDR
// PlaceHumanInUnit ( acman1 , accar1 ) ;
9754: LD_EXP 82
9758: PPUSH
9759: LD_EXP 80
9763: PPUSH
9764: CALL_OW 52
// PlaceHumanInUnit ( acman2 , accar2 ) ;
9768: LD_EXP 83
9772: PPUSH
9773: LD_EXP 81
9777: PPUSH
9778: CALL_OW 52
// SetCargo ( [ accar1 , accar2 ] , mat_cans , 100 ) ;
9782: LD_EXP 80
9786: PUSH
9787: LD_EXP 81
9791: PUSH
9792: EMPTY
9793: LIST
9794: LIST
9795: PPUSH
9796: LD_INT 1
9798: PPUSH
9799: LD_INT 100
9801: PPUSH
9802: CALL_OW 290
// PlaceUnitArea ( accar1 , vsevolod_in , false ) ;
9806: LD_EXP 80
9810: PPUSH
9811: LD_INT 16
9813: PPUSH
9814: LD_INT 0
9816: PPUSH
9817: CALL_OW 49
// PlaceUnitArea ( accar2 , vsevolod_in , false ) ;
9821: LD_EXP 81
9825: PPUSH
9826: LD_INT 16
9828: PPUSH
9829: LD_INT 0
9831: PPUSH
9832: CALL_OW 49
// end ;
9836: LD_VAR 0 1
9840: RET
// export rccar1 , rccar2 , rccar3 , rcman1 , rcman2 , rcman3 ; export function convoy ; begin
9841: LD_INT 0
9843: PPUSH
// InitUc ;
9844: CALL_OW 18
// InitHc ;
9848: CALL_OW 19
// InitVc ;
9852: CALL_OW 20
// uc_side := you ;
9856: LD_ADDR_OWVAR 20
9860: PUSH
9861: LD_EXP 1
9865: ST_TO_ADDR
// uc_nation := nation_russian ;
9866: LD_ADDR_OWVAR 21
9870: PUSH
9871: LD_INT 3
9873: ST_TO_ADDR
// vc_chassis := ru_medium_tracked ;
9874: LD_ADDR_OWVAR 37
9878: PUSH
9879: LD_INT 22
9881: ST_TO_ADDR
// vc_weapon := ru_cargo_bay ;
9882: LD_ADDR_OWVAR 40
9886: PUSH
9887: LD_INT 51
9889: ST_TO_ADDR
// vc_control := control_manual ;
9890: LD_ADDR_OWVAR 38
9894: PUSH
9895: LD_INT 1
9897: ST_TO_ADDR
// vc_engine := engine_combustion ;
9898: LD_ADDR_OWVAR 39
9902: PUSH
9903: LD_INT 1
9905: ST_TO_ADDR
// uc_direction := 3 ;
9906: LD_ADDR_OWVAR 24
9910: PUSH
9911: LD_INT 3
9913: ST_TO_ADDR
// vc_fuel_battery := 60 ;
9914: LD_ADDR_OWVAR 41
9918: PUSH
9919: LD_INT 60
9921: ST_TO_ADDR
// rccar1 := CreateVehicle ;
9922: LD_ADDR_EXP 84
9926: PUSH
9927: CALL_OW 45
9931: ST_TO_ADDR
// rccar2 := CreateVehicle ;
9932: LD_ADDR_EXP 85
9936: PUSH
9937: CALL_OW 45
9941: ST_TO_ADDR
// rccar2 := CreateVehicle ;
9942: LD_ADDR_EXP 85
9946: PUSH
9947: CALL_OW 45
9951: ST_TO_ADDR
// PrepareSoldier ( sex_male , 3 ) ;
9952: LD_INT 1
9954: PPUSH
9955: LD_INT 3
9957: PPUSH
9958: CALL_OW 381
// rcman1 := CreateHuman ;
9962: LD_ADDR_EXP 87
9966: PUSH
9967: CALL_OW 44
9971: ST_TO_ADDR
// rcman2 := CreateHuman ;
9972: LD_ADDR_EXP 88
9976: PUSH
9977: CALL_OW 44
9981: ST_TO_ADDR
// rcman2 := CreateHuman ;
9982: LD_ADDR_EXP 88
9986: PUSH
9987: CALL_OW 44
9991: ST_TO_ADDR
// PlaceHumanInUnit ( rcman1 , rccar1 ) ;
9992: LD_EXP 87
9996: PPUSH
9997: LD_EXP 84
10001: PPUSH
10002: CALL_OW 52
// PlaceHumanInUnit ( rcman2 , rccar2 ) ;
10006: LD_EXP 88
10010: PPUSH
10011: LD_EXP 85
10015: PPUSH
10016: CALL_OW 52
// PlaceHumanInUnit ( rcman3 , rccar3 ) ;
10020: LD_EXP 89
10024: PPUSH
10025: LD_EXP 86
10029: PPUSH
10030: CALL_OW 52
// SetCargo ( [ rccar1 , rccar2 , rccar3 ] , mat_cans , 90 ) ;
10034: LD_EXP 84
10038: PUSH
10039: LD_EXP 85
10043: PUSH
10044: LD_EXP 86
10048: PUSH
10049: EMPTY
10050: LIST
10051: LIST
10052: LIST
10053: PPUSH
10054: LD_INT 1
10056: PPUSH
10057: LD_INT 90
10059: PPUSH
10060: CALL_OW 290
// PlaceUnitArea ( rccar1 , exit_a , false ) ;
10064: LD_EXP 84
10068: PPUSH
10069: LD_INT 20
10071: PPUSH
10072: LD_INT 0
10074: PPUSH
10075: CALL_OW 49
// PlaceUnitArea ( rccar2 , exit_a , false ) ;
10079: LD_EXP 85
10083: PPUSH
10084: LD_INT 20
10086: PPUSH
10087: LD_INT 0
10089: PPUSH
10090: CALL_OW 49
// PlaceUnitArea ( rccar3 , exit_a , false ) ;
10094: LD_EXP 86
10098: PPUSH
10099: LD_INT 20
10101: PPUSH
10102: LD_INT 0
10104: PPUSH
10105: CALL_OW 49
// end ; end_of_file
10109: LD_VAR 0 1
10113: RET
// export function get_x_best ( lidi , num , skill , mclass , idle ) ; var i , skills ; begin
10114: LD_INT 0
10116: PPUSH
10117: PPUSH
10118: PPUSH
// if mclass then
10119: LD_VAR 0 4
10123: IFFALSE 10155
// lidi := UnitFilter ( lidi , [ [ f_class , mclass ] ] ) ;
10125: LD_ADDR_VAR 0 1
10129: PUSH
10130: LD_VAR 0 1
10134: PPUSH
10135: LD_INT 25
10137: PUSH
10138: LD_VAR 0 4
10142: PUSH
10143: EMPTY
10144: LIST
10145: LIST
10146: PUSH
10147: EMPTY
10148: LIST
10149: PPUSH
10150: CALL_OW 72
10154: ST_TO_ADDR
// skills := [ ] ;
10155: LD_ADDR_VAR 0 8
10159: PUSH
10160: EMPTY
10161: ST_TO_ADDR
// for i in lidi do
10162: LD_ADDR_VAR 0 7
10166: PUSH
10167: LD_VAR 0 1
10171: PUSH
10172: FOR_IN
10173: IFFALSE 10206
// skills := skills ^ [ GetSkill ( i , skill ) ] ;
10175: LD_ADDR_VAR 0 8
10179: PUSH
10180: LD_VAR 0 8
10184: PUSH
10185: LD_VAR 0 7
10189: PPUSH
10190: LD_VAR 0 3
10194: PPUSH
10195: CALL_OW 259
10199: PUSH
10200: EMPTY
10201: LIST
10202: ADD
10203: ST_TO_ADDR
10204: GO 10172
10206: POP
10207: POP
// lidi := SortListByListDesc ( lidi , skills ) ;
10208: LD_ADDR_VAR 0 1
10212: PUSH
10213: LD_VAR 0 1
10217: PPUSH
10218: LD_VAR 0 8
10222: PPUSH
10223: CALL_OW 77
10227: ST_TO_ADDR
// if num > lidi then
10228: LD_VAR 0 2
10232: PUSH
10233: LD_VAR 0 1
10237: GREATER
10238: IFFALSE 10254
// num := lidi + 0 ;
10240: LD_ADDR_VAR 0 2
10244: PUSH
10245: LD_VAR 0 1
10249: PUSH
10250: LD_INT 0
10252: PLUS
10253: ST_TO_ADDR
// i := 1 ;
10254: LD_ADDR_VAR 0 7
10258: PUSH
10259: LD_INT 1
10261: ST_TO_ADDR
// result := [ ] ;
10262: LD_ADDR_VAR 0 6
10266: PUSH
10267: EMPTY
10268: ST_TO_ADDR
// while i <= lidi and result < num do
10269: LD_VAR 0 7
10273: PUSH
10274: LD_VAR 0 1
10278: LESSEQUAL
10279: PUSH
10280: LD_VAR 0 6
10284: PUSH
10285: LD_VAR 0 2
10289: LESS
10290: AND
10291: IFFALSE 10384
// begin if idle then
10293: LD_VAR 0 5
10297: IFFALSE 10343
// begin if IsIdle ( lidi [ i ] ) then
10299: LD_VAR 0 1
10303: PUSH
10304: LD_VAR 0 7
10308: ARRAY
10309: PPUSH
10310: CALL_OW 316
10314: IFFALSE 10341
// result := result ^ [ lidi [ i ] ] ;
10316: LD_ADDR_VAR 0 6
10320: PUSH
10321: LD_VAR 0 6
10325: PUSH
10326: LD_VAR 0 1
10330: PUSH
10331: LD_VAR 0 7
10335: ARRAY
10336: PUSH
10337: EMPTY
10338: LIST
10339: ADD
10340: ST_TO_ADDR
// end else
10341: GO 10368
// result := result ^ [ lidi [ i ] ] ;
10343: LD_ADDR_VAR 0 6
10347: PUSH
10348: LD_VAR 0 6
10352: PUSH
10353: LD_VAR 0 1
10357: PUSH
10358: LD_VAR 0 7
10362: ARRAY
10363: PUSH
10364: EMPTY
10365: LIST
10366: ADD
10367: ST_TO_ADDR
// i := i + 1 ;
10368: LD_ADDR_VAR 0 7
10372: PUSH
10373: LD_VAR 0 7
10377: PUSH
10378: LD_INT 1
10380: PLUS
10381: ST_TO_ADDR
// end ;
10382: GO 10269
// end ;
10384: LD_VAR 0 6
10388: RET
// export function SayAny ( lidi , ident , side , sex , Hclass , index ) ; var kdo ; begin
10389: LD_INT 0
10391: PPUSH
10392: PPUSH
// kdo := WhoSayAny ( lidi , side , sex , Hclass , index ) ;
10393: LD_ADDR_VAR 0 8
10397: PUSH
10398: LD_VAR 0 1
10402: PPUSH
10403: LD_VAR 0 3
10407: PPUSH
10408: LD_VAR 0 4
10412: PPUSH
10413: LD_VAR 0 5
10417: PPUSH
10418: LD_VAR 0 6
10422: PPUSH
10423: CALL 10469 0 5
10427: ST_TO_ADDR
// if kdo then
10428: LD_VAR 0 8
10432: IFFALSE 10456
// result := Say ( kdo , ident ) else
10434: LD_ADDR_VAR 0 7
10438: PUSH
10439: LD_VAR 0 8
10443: PPUSH
10444: LD_VAR 0 2
10448: PPUSH
10449: CALL_OW 88
10453: ST_TO_ADDR
10454: GO 10464
// result := false ;
10456: LD_ADDR_VAR 0 7
10460: PUSH
10461: LD_INT 0
10463: ST_TO_ADDR
// end ;
10464: LD_VAR 0 7
10468: RET
// export function WhoSayAny ( lidi , side , sex , Hclass , index ) ; begin
10469: LD_INT 0
10471: PPUSH
// lidi := UnitFilter ( lidi , [ [ f_type , unit_human ] , [ f_side , side ] , f_not , [ f_nation , nation_nature ] ] ) ;
10472: LD_ADDR_VAR 0 1
10476: PUSH
10477: LD_VAR 0 1
10481: PPUSH
10482: LD_INT 21
10484: PUSH
10485: LD_INT 1
10487: PUSH
10488: EMPTY
10489: LIST
10490: LIST
10491: PUSH
10492: LD_INT 22
10494: PUSH
10495: LD_VAR 0 2
10499: PUSH
10500: EMPTY
10501: LIST
10502: LIST
10503: PUSH
10504: LD_INT 3
10506: PUSH
10507: LD_INT 23
10509: PUSH
10510: LD_INT 0
10512: PUSH
10513: EMPTY
10514: LIST
10515: LIST
10516: PUSH
10517: EMPTY
10518: LIST
10519: LIST
10520: LIST
10521: LIST
10522: PPUSH
10523: CALL_OW 72
10527: ST_TO_ADDR
// if sex <> 0 then
10528: LD_VAR 0 3
10532: PUSH
10533: LD_INT 0
10535: NONEQUAL
10536: IFFALSE 10565
// lidi := UnitFilter ( lidi , [ f_sex , sex ] ) ;
10538: LD_ADDR_VAR 0 1
10542: PUSH
10543: LD_VAR 0 1
10547: PPUSH
10548: LD_INT 26
10550: PUSH
10551: LD_VAR 0 3
10555: PUSH
10556: EMPTY
10557: LIST
10558: LIST
10559: PPUSH
10560: CALL_OW 72
10564: ST_TO_ADDR
// if Hclass <> 0 then
10565: LD_VAR 0 4
10569: PUSH
10570: LD_INT 0
10572: NONEQUAL
10573: IFFALSE 10602
// lidi := UnitFilter ( lidi , [ f_class , Hclass ] ) ;
10575: LD_ADDR_VAR 0 1
10579: PUSH
10580: LD_VAR 0 1
10584: PPUSH
10585: LD_INT 25
10587: PUSH
10588: LD_VAR 0 4
10592: PUSH
10593: EMPTY
10594: LIST
10595: LIST
10596: PPUSH
10597: CALL_OW 72
10601: ST_TO_ADDR
// if index <= 0 then
10602: LD_VAR 0 5
10606: PUSH
10607: LD_INT 0
10609: LESSEQUAL
10610: IFFALSE 10620
// index := 1 ;
10612: LD_ADDR_VAR 0 5
10616: PUSH
10617: LD_INT 1
10619: ST_TO_ADDR
// if lidi >= index then
10620: LD_VAR 0 1
10624: PUSH
10625: LD_VAR 0 5
10629: GREATEREQUAL
10630: IFFALSE 10650
// result := lidi [ index ] else
10632: LD_ADDR_VAR 0 6
10636: PUSH
10637: LD_VAR 0 1
10641: PUSH
10642: LD_VAR 0 5
10646: ARRAY
10647: ST_TO_ADDR
10648: GO 10658
// result := 0 ;
10650: LD_ADDR_VAR 0 6
10654: PUSH
10655: LD_INT 0
10657: ST_TO_ADDR
// end ;
10658: LD_VAR 0 6
10662: RET
// export function see_any ( strana , sez ) ; var i ; begin
10663: LD_INT 0
10665: PPUSH
10666: PPUSH
// result := [ ] ;
10667: LD_ADDR_VAR 0 3
10671: PUSH
10672: EMPTY
10673: ST_TO_ADDR
// for i in sez do
10674: LD_ADDR_VAR 0 4
10678: PUSH
10679: LD_VAR 0 2
10683: PUSH
10684: FOR_IN
10685: IFFALSE 10721
// if See ( strana , i ) then
10687: LD_VAR 0 1
10691: PPUSH
10692: LD_VAR 0 4
10696: PPUSH
10697: CALL_OW 292
10701: IFFALSE 10719
// begin result := result ^ i ;
10703: LD_ADDR_VAR 0 3
10707: PUSH
10708: LD_VAR 0 3
10712: PUSH
10713: LD_VAR 0 4
10717: ADD
10718: ST_TO_ADDR
// end ;
10719: GO 10684
10721: POP
10722: POP
// ; end ;
10723: LD_VAR 0 3
10727: RET
// export function TalkOn ; begin
10728: LD_INT 0
10730: PPUSH
// stop_talking := true ;
10731: LD_ADDR_OWVAR 56
10735: PUSH
10736: LD_INT 1
10738: ST_TO_ADDR
// end ;
10739: LD_VAR 0 1
10743: RET
// export function TalkOff ; begin
10744: LD_INT 0
10746: PPUSH
// stop_talking := false ;
10747: LD_ADDR_OWVAR 56
10751: PUSH
10752: LD_INT 0
10754: ST_TO_ADDR
// end ;
10755: LD_VAR 0 1
10759: RET
// export function FilterHumansInArea ( area , filter ) ; var inbase , i ; begin
10760: LD_INT 0
10762: PPUSH
10763: PPUSH
10764: PPUSH
// result := [ ] ;
10765: LD_ADDR_VAR 0 3
10769: PUSH
10770: EMPTY
10771: ST_TO_ADDR
// inbase := FilterUnitsInArea ( area , [ ] ) ;
10772: LD_ADDR_VAR 0 4
10776: PUSH
10777: LD_VAR 0 1
10781: PPUSH
10782: EMPTY
10783: PPUSH
10784: CALL_OW 70
10788: ST_TO_ADDR
// for i in inbase do
10789: LD_ADDR_VAR 0 5
10793: PUSH
10794: LD_VAR 0 4
10798: PUSH
10799: FOR_IN
10800: IFFALSE 10876
// begin if GetType ( i ) = unit_building or GetType ( i ) = unit_vehicle then
10802: LD_VAR 0 5
10806: PPUSH
10807: CALL_OW 247
10811: PUSH
10812: LD_INT 3
10814: EQUAL
10815: PUSH
10816: LD_VAR 0 5
10820: PPUSH
10821: CALL_OW 247
10825: PUSH
10826: LD_INT 2
10828: EQUAL
10829: OR
10830: IFFALSE 10855
// begin result := result ^ UnitsInside ( i ) ;
10832: LD_ADDR_VAR 0 3
10836: PUSH
10837: LD_VAR 0 3
10841: PUSH
10842: LD_VAR 0 5
10846: PPUSH
10847: CALL_OW 313
10851: ADD
10852: ST_TO_ADDR
// end else
10853: GO 10874
// begin result := result ^ [ i ] ;
10855: LD_ADDR_VAR 0 3
10859: PUSH
10860: LD_VAR 0 3
10864: PUSH
10865: LD_VAR 0 5
10869: PUSH
10870: EMPTY
10871: LIST
10872: ADD
10873: ST_TO_ADDR
// end ; end ;
10874: GO 10799
10876: POP
10877: POP
// result := UnitFilter ( result , filter ) ;
10878: LD_ADDR_VAR 0 3
10882: PUSH
10883: LD_VAR 0 3
10887: PPUSH
10888: LD_VAR 0 2
10892: PPUSH
10893: CALL_OW 72
10897: ST_TO_ADDR
// end ;
10898: LD_VAR 0 3
10902: RET
// export function inside_units ( uns ) ; var i ; begin
10903: LD_INT 0
10905: PPUSH
10906: PPUSH
// result := [ ] ;
10907: LD_ADDR_VAR 0 2
10911: PUSH
10912: EMPTY
10913: ST_TO_ADDR
// for i in uns do
10914: LD_ADDR_VAR 0 3
10918: PUSH
10919: LD_VAR 0 1
10923: PUSH
10924: FOR_IN
10925: IFFALSE 10950
// result := result ^ UnitsInside ( i ) ;
10927: LD_ADDR_VAR 0 2
10931: PUSH
10932: LD_VAR 0 2
10936: PUSH
10937: LD_VAR 0 3
10941: PPUSH
10942: CALL_OW 313
10946: ADD
10947: ST_TO_ADDR
10948: GO 10924
10950: POP
10951: POP
// end ;
10952: LD_VAR 0 2
10956: RET
// export function find_drivers ( cars , drivers , take_out ) ; var empty , free , i , konec ; begin
10957: LD_INT 0
10959: PPUSH
10960: PPUSH
10961: PPUSH
10962: PPUSH
10963: PPUSH
// cars := UnitFilter ( cars , [ f_alive ] ) union [ ] ;
10964: LD_ADDR_VAR 0 1
10968: PUSH
10969: LD_VAR 0 1
10973: PPUSH
10974: LD_INT 51
10976: PUSH
10977: EMPTY
10978: LIST
10979: PPUSH
10980: CALL_OW 72
10984: PUSH
10985: EMPTY
10986: UNION
10987: ST_TO_ADDR
// drivers := UnitFilter ( drivers , [ f_alive ] ) union [ ] ;
10988: LD_ADDR_VAR 0 2
10992: PUSH
10993: LD_VAR 0 2
10997: PPUSH
10998: LD_INT 51
11000: PUSH
11001: EMPTY
11002: LIST
11003: PPUSH
11004: CALL_OW 72
11008: PUSH
11009: EMPTY
11010: UNION
11011: ST_TO_ADDR
// for i in cars do
11012: LD_ADDR_VAR 0 7
11016: PUSH
11017: LD_VAR 0 1
11021: PUSH
11022: FOR_IN
11023: IFFALSE 11059
// if not IsDrivenBy ( i ) then
11025: LD_VAR 0 7
11029: PPUSH
11030: CALL_OW 311
11034: NOT
11035: IFFALSE 11057
// empty := add ( empty , i ) ;
11037: LD_ADDR_VAR 0 5
11041: PUSH
11042: LD_VAR 0 5
11046: PPUSH
11047: LD_VAR 0 7
11051: PPUSH
11052: CALL 11651 0 2
11056: ST_TO_ADDR
11057: GO 11022
11059: POP
11060: POP
// if take_out then
11061: LD_VAR 0 3
11065: IFFALSE 11124
// begin for i in drivers do
11067: LD_ADDR_VAR 0 7
11071: PUSH
11072: LD_VAR 0 2
11076: PUSH
11077: FOR_IN
11078: IFFALSE 11120
// if not ( IsInUnit ( i ) in cars ) then
11080: LD_VAR 0 7
11084: PPUSH
11085: CALL_OW 310
11089: PUSH
11090: LD_VAR 0 1
11094: IN
11095: NOT
11096: IFFALSE 11118
// free := add ( free , i ) ;
11098: LD_ADDR_VAR 0 6
11102: PUSH
11103: LD_VAR 0 6
11107: PPUSH
11108: LD_VAR 0 7
11112: PPUSH
11113: CALL 11651 0 2
11117: ST_TO_ADDR
11118: GO 11077
11120: POP
11121: POP
// end else
11122: GO 11173
// begin for i in drivers do
11124: LD_ADDR_VAR 0 7
11128: PUSH
11129: LD_VAR 0 2
11133: PUSH
11134: FOR_IN
11135: IFFALSE 11171
// if not IsInUnit ( i ) then
11137: LD_VAR 0 7
11141: PPUSH
11142: CALL_OW 310
11146: NOT
11147: IFFALSE 11169
// free := add ( free , i ) ;
11149: LD_ADDR_VAR 0 6
11153: PUSH
11154: LD_VAR 0 6
11158: PPUSH
11159: LD_VAR 0 7
11163: PPUSH
11164: CALL 11651 0 2
11168: ST_TO_ADDR
11169: GO 11134
11171: POP
11172: POP
// end ; result := cars diff empty ;
11173: LD_ADDR_VAR 0 4
11177: PUSH
11178: LD_VAR 0 1
11182: PUSH
11183: LD_VAR 0 5
11187: DIFF
11188: ST_TO_ADDR
// if empty <= free then
11189: LD_VAR 0 5
11193: PUSH
11194: LD_VAR 0 6
11198: LESSEQUAL
11199: IFFALSE 11213
// konec := empty else
11201: LD_ADDR_VAR 0 8
11205: PUSH
11206: LD_VAR 0 5
11210: ST_TO_ADDR
11211: GO 11223
// konec := free ;
11213: LD_ADDR_VAR 0 8
11217: PUSH
11218: LD_VAR 0 6
11222: ST_TO_ADDR
// for i := 1 to konec do
11223: LD_ADDR_VAR 0 7
11227: PUSH
11228: DOUBLE
11229: LD_INT 1
11231: DEC
11232: ST_TO_ADDR
11233: LD_VAR 0 8
11237: PUSH
11238: FOR_TO
11239: IFFALSE 11295
// begin ComEnterUnit ( free [ i ] , empty [ i ] ) ;
11241: LD_VAR 0 6
11245: PUSH
11246: LD_VAR 0 7
11250: ARRAY
11251: PPUSH
11252: LD_VAR 0 5
11256: PUSH
11257: LD_VAR 0 7
11261: ARRAY
11262: PPUSH
11263: CALL_OW 120
// result := add ( result , empty [ i ] ) ;
11267: LD_ADDR_VAR 0 4
11271: PUSH
11272: LD_VAR 0 4
11276: PPUSH
11277: LD_VAR 0 5
11281: PUSH
11282: LD_VAR 0 7
11286: ARRAY
11287: PPUSH
11288: CALL 11651 0 2
11292: ST_TO_ADDR
// end ;
11293: GO 11238
11295: POP
11296: POP
// end ;
11297: LD_VAR 0 4
11301: RET
// export function find_remotes ( cars , mechs , remotes ) ; var cas , i ; begin
11302: LD_INT 0
11304: PPUSH
11305: PPUSH
11306: PPUSH
// while remotes > mechs do
11307: LD_VAR 0 3
11311: PUSH
11312: LD_VAR 0 2
11316: GREATER
11317: IFFALSE 11333
// delete ( remotes , 1 ) ;
11319: LD_VAR 0 3
11323: PPUSH
11324: LD_INT 1
11326: PPUSH
11327: CALL_OW 3
11331: GO 11307
// for i := 1 to remotes do
11333: LD_ADDR_VAR 0 6
11337: PUSH
11338: DOUBLE
11339: LD_INT 1
11341: DEC
11342: ST_TO_ADDR
11343: LD_VAR 0 3
11347: PUSH
11348: FOR_TO
11349: IFFALSE 11379
// ComEnterUnit ( mechs [ i ] , remotes [ i ] ) ;
11351: LD_VAR 0 2
11355: PUSH
11356: LD_VAR 0 6
11360: ARRAY
11361: PPUSH
11362: LD_VAR 0 3
11366: PUSH
11367: LD_VAR 0 6
11371: ARRAY
11372: PPUSH
11373: CALL_OW 120
11377: GO 11348
11379: POP
11380: POP
// end ;
11381: LD_VAR 0 4
11385: RET
// export function wait_for_remotes ( cars , remotes , cas ) ; var c , unlinked , i ; begin
11386: LD_INT 0
11388: PPUSH
11389: PPUSH
11390: PPUSH
11391: PPUSH
// c := tick + cas ;
11392: LD_ADDR_VAR 0 5
11396: PUSH
11397: LD_OWVAR 1
11401: PUSH
11402: LD_VAR 0 3
11406: PLUS
11407: ST_TO_ADDR
// while tick < c and ( not ( inside_units ( remotes ) + 0 ) = remotes ) do
11408: LD_OWVAR 1
11412: PUSH
11413: LD_VAR 0 5
11417: LESS
11418: PUSH
11419: LD_VAR 0 2
11423: PPUSH
11424: CALL 10903 0 1
11428: PUSH
11429: LD_INT 0
11431: PLUS
11432: PUSH
11433: LD_VAR 0 2
11437: EQUAL
11438: NOT
11439: AND
11440: IFFALSE 11451
// wait ( 0 0$1 ) ;
11442: LD_INT 35
11444: PPUSH
11445: CALL_OW 67
11449: GO 11408
// unlinked := cars ;
11451: LD_ADDR_VAR 0 6
11455: PUSH
11456: LD_VAR 0 1
11460: ST_TO_ADDR
// for i in remotes do
11461: LD_ADDR_VAR 0 7
11465: PUSH
11466: LD_VAR 0 2
11470: PUSH
11471: FOR_IN
11472: IFFALSE 11521
// begin ComLinkTo ( unlinked , UnitsInside ( i ) ) ;
11474: LD_VAR 0 6
11478: PPUSH
11479: LD_VAR 0 7
11483: PPUSH
11484: CALL_OW 313
11488: PPUSH
11489: CALL_OW 135
// unlinked := unlinked diff UnitsLinked ( UnitsInside ( i ) ) ;
11493: LD_ADDR_VAR 0 6
11497: PUSH
11498: LD_VAR 0 6
11502: PUSH
11503: LD_VAR 0 7
11507: PPUSH
11508: CALL_OW 313
11512: PPUSH
11513: CALL_OW 432
11517: DIFF
11518: ST_TO_ADDR
// end ;
11519: GO 11471
11521: POP
11522: POP
// end ;
11523: LD_VAR 0 4
11527: RET
// export function wait_for_drivers ( cars , cas ) ; var i , vsichni_ready , k , pockat ; begin
11528: LD_INT 0
11530: PPUSH
11531: PPUSH
11532: PPUSH
11533: PPUSH
11534: PPUSH
// k := 0 ;
11535: LD_ADDR_VAR 0 6
11539: PUSH
11540: LD_INT 0
11542: ST_TO_ADDR
// pockat := tick + cas ;
11543: LD_ADDR_VAR 0 7
11547: PUSH
11548: LD_OWVAR 1
11552: PUSH
11553: LD_VAR 0 2
11557: PLUS
11558: ST_TO_ADDR
// while not vsichni_ready and tick < pockat do
11559: LD_VAR 0 5
11563: NOT
11564: PUSH
11565: LD_OWVAR 1
11569: PUSH
11570: LD_VAR 0 7
11574: LESS
11575: AND
11576: IFFALSE 11646
// begin vsichni_ready := true ;
11578: LD_ADDR_VAR 0 5
11582: PUSH
11583: LD_INT 1
11585: ST_TO_ADDR
// k := k + 1 ;
11586: LD_ADDR_VAR 0 6
11590: PUSH
11591: LD_VAR 0 6
11595: PUSH
11596: LD_INT 1
11598: PLUS
11599: ST_TO_ADDR
// for i in cars do
11600: LD_ADDR_VAR 0 4
11604: PUSH
11605: LD_VAR 0 1
11609: PUSH
11610: FOR_IN
11611: IFFALSE 11635
// if not IsDrivenBy ( i ) then
11613: LD_VAR 0 4
11617: PPUSH
11618: CALL_OW 311
11622: NOT
11623: IFFALSE 11633
// vsichni_ready := false ;
11625: LD_ADDR_VAR 0 5
11629: PUSH
11630: LD_INT 0
11632: ST_TO_ADDR
11633: GO 11610
11635: POP
11636: POP
// wait ( 0 0$1.0 ) ;
11637: LD_INT 35
11639: PPUSH
11640: CALL_OW 67
// end ;
11644: GO 11559
// end ;
11646: LD_VAR 0 3
11650: RET
// export function add ( list , list1 ) ; begin
11651: LD_INT 0
11653: PPUSH
// if list = 0 then
11654: LD_VAR 0 1
11658: PUSH
11659: LD_INT 0
11661: EQUAL
11662: IFFALSE 11671
// list := [ ] ;
11664: LD_ADDR_VAR 0 1
11668: PUSH
11669: EMPTY
11670: ST_TO_ADDR
// if list1 = 0 then
11671: LD_VAR 0 2
11675: PUSH
11676: LD_INT 0
11678: EQUAL
11679: IFFALSE 11688
// list1 := [ ] ;
11681: LD_ADDR_VAR 0 2
11685: PUSH
11686: EMPTY
11687: ST_TO_ADDR
// result := list ^ list1 ;
11688: LD_ADDR_VAR 0 3
11692: PUSH
11693: LD_VAR 0 1
11697: PUSH
11698: LD_VAR 0 2
11702: ADD
11703: ST_TO_ADDR
// end ;
11704: LD_VAR 0 3
11708: RET
// export function take_x ( list , x ) ; var i , r ; begin
11709: LD_INT 0
11711: PPUSH
11712: PPUSH
11713: PPUSH
// r := [ ] ;
11714: LD_ADDR_VAR 0 5
11718: PUSH
11719: EMPTY
11720: ST_TO_ADDR
// for i := 1 to x do
11721: LD_ADDR_VAR 0 4
11725: PUSH
11726: DOUBLE
11727: LD_INT 1
11729: DEC
11730: ST_TO_ADDR
11731: LD_VAR 0 2
11735: PUSH
11736: FOR_TO
11737: IFFALSE 11766
// r := r ^ [ list [ i ] ] ;
11739: LD_ADDR_VAR 0 5
11743: PUSH
11744: LD_VAR 0 5
11748: PUSH
11749: LD_VAR 0 1
11753: PUSH
11754: LD_VAR 0 4
11758: ARRAY
11759: PUSH
11760: EMPTY
11761: LIST
11762: ADD
11763: ST_TO_ADDR
11764: GO 11736
11766: POP
11767: POP
// result := r ;
11768: LD_ADDR_VAR 0 3
11772: PUSH
11773: LD_VAR 0 5
11777: ST_TO_ADDR
// end ;
11778: LD_VAR 0 3
11782: RET
// export hinty_co_byli ; export function MyHint ( ident ) ; begin
11783: LD_INT 0
11785: PPUSH
// if not hinty_co_byli then
11786: LD_EXP 90
11790: NOT
11791: IFFALSE 11800
// hinty_co_byli := [ ] ;
11793: LD_ADDR_EXP 90
11797: PUSH
11798: EMPTY
11799: ST_TO_ADDR
// if not ( ident in hinty_co_byli ) then
11800: LD_VAR 0 1
11804: PUSH
11805: LD_EXP 90
11809: IN
11810: NOT
11811: IFFALSE 11838
// begin hinty_co_byli := hinty_co_byli ^ ident ;
11813: LD_ADDR_EXP 90
11817: PUSH
11818: LD_EXP 90
11822: PUSH
11823: LD_VAR 0 1
11827: ADD
11828: ST_TO_ADDR
// Hint ( ident ) ;
11829: LD_VAR 0 1
11833: PPUSH
11834: CALL_OW 339
// end ; end ;
11838: LD_VAR 0 2
11842: RET
// export function BlockMarchNorth ; var i , x , y ; begin
11843: LD_INT 0
11845: PPUSH
11846: PPUSH
11847: PPUSH
11848: PPUSH
// for i in FilterUnitsInArea ( block_march , [ f_side , you ] ) do
11849: LD_ADDR_VAR 0 2
11853: PUSH
11854: LD_INT 30
11856: PPUSH
11857: LD_INT 22
11859: PUSH
11860: LD_EXP 1
11864: PUSH
11865: EMPTY
11866: LIST
11867: LIST
11868: PPUSH
11869: CALL_OW 70
11873: PUSH
11874: FOR_IN
11875: IFFALSE 11936
// begin x = GetX ( i ) ;
11877: LD_ADDR_VAR 0 3
11881: PUSH
11882: LD_VAR 0 2
11886: PPUSH
11887: CALL_OW 250
11891: ST_TO_ADDR
// y = GetY ( i ) ;
11892: LD_ADDR_VAR 0 4
11896: PUSH
11897: LD_VAR 0 2
11901: PPUSH
11902: CALL_OW 251
11906: ST_TO_ADDR
// ComMoveXY ( i , x + 3 , y + 5 ) ;
11907: LD_VAR 0 2
11911: PPUSH
11912: LD_VAR 0 3
11916: PUSH
11917: LD_INT 3
11919: PLUS
11920: PPUSH
11921: LD_VAR 0 4
11925: PUSH
11926: LD_INT 5
11928: PLUS
11929: PPUSH
11930: CALL_OW 111
// end ;
11934: GO 11874
11936: POP
11937: POP
// end ;
11938: LD_VAR 0 1
11942: RET
// export function DepotWithSiberite ; var i , your_depots ; begin
11943: LD_INT 0
11945: PPUSH
11946: PPUSH
11947: PPUSH
// your_depots = FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
11948: LD_ADDR_VAR 0 3
11952: PUSH
11953: LD_INT 22
11955: PUSH
11956: LD_EXP 1
11960: PUSH
11961: EMPTY
11962: LIST
11963: LIST
11964: PUSH
11965: LD_INT 2
11967: PUSH
11968: LD_INT 30
11970: PUSH
11971: LD_INT 0
11973: PUSH
11974: EMPTY
11975: LIST
11976: LIST
11977: PUSH
11978: LD_INT 30
11980: PUSH
11981: LD_INT 1
11983: PUSH
11984: EMPTY
11985: LIST
11986: LIST
11987: PUSH
11988: EMPTY
11989: LIST
11990: LIST
11991: LIST
11992: PUSH
11993: EMPTY
11994: LIST
11995: LIST
11996: PPUSH
11997: CALL_OW 69
12001: ST_TO_ADDR
// for i in your_depots do
12002: LD_ADDR_VAR 0 2
12006: PUSH
12007: LD_VAR 0 3
12011: PUSH
12012: FOR_IN
12013: IFFALSE 12048
// begin if GetResourceType ( GetBase ( i ) , mat_siberit ) > 0 then
12015: LD_VAR 0 2
12019: PPUSH
12020: CALL_OW 274
12024: PPUSH
12025: LD_INT 3
12027: PPUSH
12028: CALL_OW 275
12032: PUSH
12033: LD_INT 0
12035: GREATER
12036: IFFALSE 12046
// begin result = true ;
12038: LD_ADDR_VAR 0 1
12042: PUSH
12043: LD_INT 1
12045: ST_TO_ADDR
// end ; end ;
12046: GO 12012
12048: POP
12049: POP
// end ;
12050: LD_VAR 0 1
12054: RET
// export function AttackVehicles ( side , vehicles ) ; var i , j , vehiclesOK , target1 , target2 , seeEnemy ; begin
12055: LD_INT 0
12057: PPUSH
12058: PPUSH
12059: PPUSH
12060: PPUSH
12061: PPUSH
12062: PPUSH
12063: PPUSH
// if vehicles > 0 then
12064: LD_VAR 0 2
12068: PUSH
12069: LD_INT 0
12071: GREATER
12072: IFFALSE 12308
// repeat wait ( 0 0$1 ) ;
12074: LD_INT 35
12076: PPUSH
12077: CALL_OW 67
// vehiclesOK = UnitFilter ( vehicles , [ f_lives , 600 ] ) ;
12081: LD_ADDR_VAR 0 6
12085: PUSH
12086: LD_VAR 0 2
12090: PPUSH
12091: LD_INT 24
12093: PUSH
12094: LD_INT 600
12096: PUSH
12097: EMPTY
12098: LIST
12099: LIST
12100: PPUSH
12101: CALL_OW 72
12105: ST_TO_ADDR
// for j in vehiclesOK do
12106: LD_ADDR_VAR 0 5
12110: PUSH
12111: LD_VAR 0 6
12115: PUSH
12116: FOR_IN
12117: IFFALSE 12296
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] ] ) , j ) ;
12119: LD_ADDR_VAR 0 7
12123: PUSH
12124: LD_INT 22
12126: PUSH
12127: LD_VAR 0 1
12131: PUSH
12132: EMPTY
12133: LIST
12134: LIST
12135: PUSH
12136: EMPTY
12137: LIST
12138: PPUSH
12139: CALL_OW 69
12143: PPUSH
12144: LD_VAR 0 5
12148: PPUSH
12149: CALL_OW 74
12153: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_side , side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , j ) ;
12154: LD_ADDR_VAR 0 8
12158: PUSH
12159: LD_INT 22
12161: PUSH
12162: LD_VAR 0 1
12166: PUSH
12167: EMPTY
12168: LIST
12169: LIST
12170: PUSH
12171: LD_INT 2
12173: PUSH
12174: LD_INT 59
12176: PUSH
12177: EMPTY
12178: LIST
12179: PUSH
12180: LD_INT 21
12182: PUSH
12183: LD_INT 1
12185: PUSH
12186: EMPTY
12187: LIST
12188: LIST
12189: PUSH
12190: LD_INT 21
12192: PUSH
12193: LD_INT 2
12195: PUSH
12196: EMPTY
12197: LIST
12198: LIST
12199: PUSH
12200: EMPTY
12201: LIST
12202: LIST
12203: LIST
12204: LIST
12205: PUSH
12206: EMPTY
12207: LIST
12208: LIST
12209: PUSH
12210: EMPTY
12211: LIST
12212: PPUSH
12213: CALL_OW 69
12217: PPUSH
12218: LD_VAR 0 5
12222: PPUSH
12223: CALL_OW 74
12227: ST_TO_ADDR
// if GetDistUnits ( j , target1 ) + 8 < GetDistUnits ( j , target2 ) then
12228: LD_VAR 0 5
12232: PPUSH
12233: LD_VAR 0 7
12237: PPUSH
12238: CALL_OW 296
12242: PUSH
12243: LD_INT 8
12245: PLUS
12246: PUSH
12247: LD_VAR 0 5
12251: PPUSH
12252: LD_VAR 0 8
12256: PPUSH
12257: CALL_OW 296
12261: LESS
12262: IFFALSE 12280
// ComAttackUnit ( j , target1 ) else
12264: LD_VAR 0 5
12268: PPUSH
12269: LD_VAR 0 7
12273: PPUSH
12274: CALL_OW 115
12278: GO 12294
// ComAttackUnit ( j , target2 ) ;
12280: LD_VAR 0 5
12284: PPUSH
12285: LD_VAR 0 8
12289: PPUSH
12290: CALL_OW 115
// end ;
12294: GO 12116
12296: POP
12297: POP
// until vehiclesOK = 0 ;
12298: LD_VAR 0 6
12302: PUSH
12303: LD_INT 0
12305: EQUAL
12306: IFFALSE 12074
// end ; end_of_file
12308: LD_VAR 0 3
12312: RET
// every 0 0$55 trigger vsevolod_vstoupil and not VsevolodSaved do var tmp ;
12313: LD_EXP 11
12317: PUSH
12318: LD_EXP 56
12322: NOT
12323: AND
12324: IFFALSE 12536
12326: GO 12328
12328: DISABLE
12329: LD_INT 0
12331: PPUSH
// begin while tmp <= 2 do
12332: LD_VAR 0 1
12336: PUSH
12337: LD_INT 2
12339: LESSEQUAL
12340: IFFALSE 12403
// begin tmp := UnitFilter ( attack , [ [ f_inarea , top_attack ] , [ f_side , ai ] , [ f_control , control_remote ] ] ) ;
12342: LD_ADDR_VAR 0 1
12346: PUSH
12347: LD_EXP 138
12351: PPUSH
12352: LD_INT 95
12354: PUSH
12355: LD_INT 23
12357: PUSH
12358: EMPTY
12359: LIST
12360: LIST
12361: PUSH
12362: LD_INT 22
12364: PUSH
12365: LD_EXP 6
12369: PUSH
12370: EMPTY
12371: LIST
12372: LIST
12373: PUSH
12374: LD_INT 33
12376: PUSH
12377: LD_INT 2
12379: PUSH
12380: EMPTY
12381: LIST
12382: LIST
12383: PUSH
12384: EMPTY
12385: LIST
12386: LIST
12387: LIST
12388: PPUSH
12389: CALL_OW 72
12393: ST_TO_ADDR
// wait ( 0 0$1 ) ;
12394: LD_INT 35
12396: PPUSH
12397: CALL_OW 67
// end ;
12401: GO 12332
// if tmp > 1 then
12403: LD_VAR 0 1
12407: PUSH
12408: LD_INT 1
12410: GREATER
12411: IFFALSE 12465
// if difficulty > 1 then
12413: LD_OWVAR 67
12417: PUSH
12418: LD_INT 1
12420: GREATER
12421: IFFALSE 12449
// zbytek := tmp [ 1 ] ^ tmp [ 2 ] else
12423: LD_ADDR_EXP 91
12427: PUSH
12428: LD_VAR 0 1
12432: PUSH
12433: LD_INT 1
12435: ARRAY
12436: PUSH
12437: LD_VAR 0 1
12441: PUSH
12442: LD_INT 2
12444: ARRAY
12445: ADD
12446: ST_TO_ADDR
12447: GO 12463
// zbytek := tmp [ 1 ] else
12449: LD_ADDR_EXP 91
12453: PUSH
12454: LD_VAR 0 1
12458: PUSH
12459: LD_INT 1
12461: ARRAY
12462: ST_TO_ADDR
12463: GO 12475
// zbytek := tmp ;
12465: LD_ADDR_EXP 91
12469: PUSH
12470: LD_VAR 0 1
12474: ST_TO_ADDR
// if tick > ( ( vsevolod_vstoupil + kolik_ma_vsevolod_casu ) - ( 2 2$0 * Vsevolod_uderna_group ) ) then
12475: LD_OWVAR 1
12479: PUSH
12480: LD_EXP 11
12484: PUSH
12485: LD_EXP 33
12489: PLUS
12490: PUSH
12491: LD_INT 4200
12493: PUSH
12494: LD_EXP 12
12498: MUL
12499: MINUS
12500: GREATER
12501: IFFALSE 12526
// ComExitBuilding ( Vsevolod_uderna_group [ Rand ( 1 , Vsevolod_uderna_group ) ] ) ;
12503: LD_EXP 12
12507: PUSH
12508: LD_INT 1
12510: PPUSH
12511: LD_EXP 12
12515: PPUSH
12516: CALL_OW 12
12520: ARRAY
12521: PPUSH
12522: CALL_OW 122
// RaiseSailEvent ( f_vsevolod_utok ) ;
12526: CALL 14498 0 0
12530: PPUSH
12531: CALL_OW 427
// enable ;
12535: ENABLE
// end ;
12536: PPOPN 1
12538: END
// every 0 0$2 trigger ( vsevolod_vstoupil and tick > ( vsevolod_vstoupil + kolik_ma_vsevolod_casu ) ) do var i ;
12539: LD_EXP 11
12543: PUSH
12544: LD_OWVAR 1
12548: PUSH
12549: LD_EXP 11
12553: PUSH
12554: LD_EXP 33
12558: PLUS
12559: GREATER
12560: AND
12561: IFFALSE 12708
12563: GO 12565
12565: DISABLE
12566: LD_INT 0
12568: PPUSH
// begin while IsLive ( Vsevolod ) and not VsevolodSaved do
12569: LD_EXP 70
12573: PPUSH
12574: CALL_OW 300
12578: PUSH
12579: LD_EXP 56
12583: NOT
12584: AND
12585: IFFALSE 12708
// begin ComExitBuilding ( Vsevolod_uderna_group ^ [ Vsevolod ] ) ;
12587: LD_EXP 12
12591: PUSH
12592: LD_EXP 70
12596: PUSH
12597: EMPTY
12598: LIST
12599: ADD
12600: PPUSH
12601: CALL_OW 122
// for i in Vsevolod_uderna_group ^ [ Vsevolod ] do
12605: LD_ADDR_VAR 0 1
12609: PUSH
12610: LD_EXP 12
12614: PUSH
12615: LD_EXP 70
12619: PUSH
12620: EMPTY
12621: LIST
12622: ADD
12623: PUSH
12624: FOR_IN
12625: IFFALSE 12643
// PriorityAttack ( ai , i ) ;
12627: LD_EXP 6
12631: PPUSH
12632: LD_VAR 0 1
12636: PPUSH
12637: CALL_OW 470
12641: GO 12624
12643: POP
12644: POP
// zbytek := FilterUnitsInArea ( top_attack , [ [ f_side , ai ] , [ f_control , control_remote ] ] ) isect attack ;
12645: LD_ADDR_EXP 91
12649: PUSH
12650: LD_INT 23
12652: PPUSH
12653: LD_INT 22
12655: PUSH
12656: LD_EXP 6
12660: PUSH
12661: EMPTY
12662: LIST
12663: LIST
12664: PUSH
12665: LD_INT 33
12667: PUSH
12668: LD_INT 2
12670: PUSH
12671: EMPTY
12672: LIST
12673: LIST
12674: PUSH
12675: EMPTY
12676: LIST
12677: LIST
12678: PPUSH
12679: CALL_OW 70
12683: PUSH
12684: LD_EXP 138
12688: ISECT
12689: ST_TO_ADDR
// RaiseSailEvent ( f_vsevolod_final_utok ) ;
12690: CALL 14834 0 0
12694: PPUSH
12695: CALL_OW 427
// wait ( 0 0$30 ) ;
12699: LD_INT 1050
12701: PPUSH
12702: CALL_OW 67
// end ;
12706: GO 12569
// end ;
12708: PPOPN 1
12710: END
// export zbytek ; every 0 0$10 trigger ovsyenkotaken and tick > ( ovsyenkotaken + cas_prvniho_utoku ) and ( ( tick > 20 20$0 and attack >= 3 ) or attack >= 4 ) do var i , max ;
12711: LD_EXP 14
12715: PUSH
12716: LD_OWVAR 1
12720: PUSH
12721: LD_EXP 14
12725: PUSH
12726: LD_EXP 32
12730: PLUS
12731: GREATER
12732: AND
12733: PUSH
12734: LD_OWVAR 1
12738: PUSH
12739: LD_INT 42000
12741: GREATER
12742: PUSH
12743: LD_EXP 138
12747: PUSH
12748: LD_INT 3
12750: GREATEREQUAL
12751: AND
12752: PUSH
12753: LD_EXP 138
12757: PUSH
12758: LD_INT 4
12760: GREATEREQUAL
12761: OR
12762: AND
12763: IFFALSE 12970
12765: GO 12767
12767: DISABLE
12768: LD_INT 0
12770: PPUSH
12771: PPUSH
// begin zbytek := [ ] ;
12772: LD_ADDR_EXP 91
12776: PUSH
12777: EMPTY
12778: ST_TO_ADDR
// max := utoci_max ;
12779: LD_ADDR_VAR 0 2
12783: PUSH
12784: LD_EXP 39
12788: ST_TO_ADDR
// if max > attack then
12789: LD_VAR 0 2
12793: PUSH
12794: LD_EXP 138
12798: GREATER
12799: IFFALSE 12815
// max := attack + 0 ;
12801: LD_ADDR_VAR 0 2
12805: PUSH
12806: LD_EXP 138
12810: PUSH
12811: LD_INT 0
12813: PLUS
12814: ST_TO_ADDR
// for i := 1 to max do
12815: LD_ADDR_VAR 0 1
12819: PUSH
12820: DOUBLE
12821: LD_INT 1
12823: DEC
12824: ST_TO_ADDR
12825: LD_VAR 0 2
12829: PUSH
12830: FOR_TO
12831: IFFALSE 12857
// zbytek := zbytek ^ attack [ i ] ;
12833: LD_ADDR_EXP 91
12837: PUSH
12838: LD_EXP 91
12842: PUSH
12843: LD_EXP 138
12847: PUSH
12848: LD_VAR 0 1
12852: ARRAY
12853: ADD
12854: ST_TO_ADDR
12855: GO 12830
12857: POP
12858: POP
// ComReturn ( mec ) ;
12859: LD_EXP 125
12863: PPUSH
12864: CALL_OW 144
// case Rand ( 1 , 4 ) of 1 :
12868: LD_INT 1
12870: PPUSH
12871: LD_INT 4
12873: PPUSH
12874: CALL_OW 12
12878: PUSH
12879: LD_INT 1
12881: DOUBLE
12882: EQUAL
12883: IFTRUE 12887
12885: GO 12899
12887: POP
// RaiseSailEvent ( normal1_utok ) ; 2 :
12888: LD_EXP 24
12892: PPUSH
12893: CALL_OW 427
12897: GO 12960
12899: LD_INT 2
12901: DOUBLE
12902: EQUAL
12903: IFTRUE 12907
12905: GO 12919
12907: POP
// RaiseSailEvent ( normal2_utok ) ; 3 :
12908: LD_EXP 25
12912: PPUSH
12913: CALL_OW 427
12917: GO 12960
12919: LD_INT 3
12921: DOUBLE
12922: EQUAL
12923: IFTRUE 12927
12925: GO 12939
12927: POP
// RaiseSailEvent ( normal3_utok ) ; 4 :
12928: LD_EXP 26
12932: PPUSH
12933: CALL_OW 427
12937: GO 12960
12939: LD_INT 4
12941: DOUBLE
12942: EQUAL
12943: IFTRUE 12947
12945: GO 12959
12947: POP
// RaiseSailEvent ( normal4_utok ) ; end ;
12948: LD_EXP 27
12952: PPUSH
12953: CALL_OW 427
12957: GO 12960
12959: POP
// wait ( cas_mezi_utoky ) ;
12960: LD_EXP 31
12964: PPUSH
12965: CALL_OW 67
// enable ;
12969: ENABLE
// end ;
12970: PPOPN 2
12972: END
// export rAtt1 , idAtt1 , toAtt1 ; every 0 0$1 do var i , a ;
12973: GO 12975
12975: DISABLE
12976: LD_INT 0
12978: PPUSH
12979: PPUSH
// begin rAtt1 := McRegistry ( ai , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , mc_attack ] , [ mc_reg_area_to_protect , def_base3 ] , mc_reg_only_important ] ) ;
12980: LD_ADDR_EXP 92
12984: PUSH
12985: LD_EXP 6
12989: PPUSH
12990: LD_INT 1
12992: PUSH
12993: LD_INT 70
12995: PUSH
12996: EMPTY
12997: LIST
12998: LIST
12999: PUSH
13000: LD_INT 2
13002: PUSH
13003: LD_INT 26
13005: PUSH
13006: EMPTY
13007: LIST
13008: LIST
13009: PUSH
13010: LD_INT 3
13012: PUSH
13013: LD_INT 18
13015: PUSH
13016: EMPTY
13017: LIST
13018: LIST
13019: PUSH
13020: LD_INT 8
13022: PUSH
13023: EMPTY
13024: LIST
13025: LIST
13026: LIST
13027: LIST
13028: PPUSH
13029: CALL_OW 399
13033: ST_TO_ADDR
// idAtt1 := McAttack ( 5 , rAtt1 , toAtt1 , [ mc_def_advantage , mcatt_difficulty ] ) ;
13034: LD_ADDR_EXP 93
13038: PUSH
13039: LD_INT 5
13041: PPUSH
13042: LD_EXP 92
13046: PPUSH
13047: LD_EXP 94
13051: PPUSH
13052: LD_INT 1
13054: PUSH
13055: LD_EXP 17
13059: PUSH
13060: EMPTY
13061: LIST
13062: LIST
13063: PPUSH
13064: CALL_OW 402
13068: ST_TO_ADDR
// end ;
13069: PPOPN 2
13071: END
// every 0 0$2 do
13072: GO 13074
13074: DISABLE
// begin toAtt1 := UnitFilter ( attack , [ [ f_inarea , mc_attack ] , [ f_side , ai ] ] ) ;
13075: LD_ADDR_EXP 94
13079: PUSH
13080: LD_EXP 138
13084: PPUSH
13085: LD_INT 95
13087: PUSH
13088: LD_INT 26
13090: PUSH
13091: EMPTY
13092: LIST
13093: LIST
13094: PUSH
13095: LD_INT 22
13097: PUSH
13098: LD_EXP 6
13102: PUSH
13103: EMPTY
13104: LIST
13105: LIST
13106: PUSH
13107: EMPTY
13108: LIST
13109: LIST
13110: PPUSH
13111: CALL_OW 72
13115: ST_TO_ADDR
// if OvsyenkoTaken then
13116: LD_EXP 14
13120: IFFALSE 13136
// AddMcUnits ( idAtt1 , toAtt1 ) ;
13122: LD_EXP 93
13126: PPUSH
13127: LD_EXP 94
13131: PPUSH
13132: CALL_OW 390
// enable ;
13136: ENABLE
// end ;
13137: END
// export function f_normal1_utok ; var path , i ; begin
13138: LD_INT 0
13140: PPUSH
13141: PPUSH
13142: PPUSH
// path := [ [ 66 , 86 ] , [ 91 , 95 ] ] ;
13143: LD_ADDR_VAR 0 2
13147: PUSH
13148: LD_INT 66
13150: PUSH
13151: LD_INT 86
13153: PUSH
13154: EMPTY
13155: LIST
13156: LIST
13157: PUSH
13158: LD_INT 91
13160: PUSH
13161: LD_INT 95
13163: PUSH
13164: EMPTY
13165: LIST
13166: LIST
13167: PUSH
13168: EMPTY
13169: LIST
13170: LIST
13171: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
13172: LD_EXP 91
13176: PPUSH
13177: LD_INT 3
13179: PUSH
13180: LD_INT 33
13182: PUSH
13183: LD_INT 2
13185: PUSH
13186: EMPTY
13187: LIST
13188: LIST
13189: PUSH
13190: EMPTY
13191: LIST
13192: LIST
13193: PPUSH
13194: CALL_OW 72
13198: PPUSH
13199: LD_INT 22
13201: PUSH
13202: LD_EXP 6
13206: PUSH
13207: EMPTY
13208: LIST
13209: LIST
13210: PUSH
13211: LD_INT 25
13213: PUSH
13214: LD_INT 1
13216: PUSH
13217: EMPTY
13218: LIST
13219: LIST
13220: PUSH
13221: EMPTY
13222: LIST
13223: LIST
13224: PPUSH
13225: CALL_OW 69
13229: PPUSH
13230: LD_INT 0
13232: PPUSH
13233: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
13237: LD_EXP 91
13241: PPUSH
13242: LD_INT 33
13244: PUSH
13245: LD_INT 2
13247: PUSH
13248: EMPTY
13249: LIST
13250: LIST
13251: PUSH
13252: EMPTY
13253: LIST
13254: PPUSH
13255: CALL_OW 72
13259: PPUSH
13260: LD_INT 22
13262: PUSH
13263: LD_EXP 6
13267: PUSH
13268: EMPTY
13269: LIST
13270: LIST
13271: PUSH
13272: LD_INT 25
13274: PUSH
13275: LD_INT 3
13277: PUSH
13278: EMPTY
13279: LIST
13280: LIST
13281: PUSH
13282: EMPTY
13283: LIST
13284: LIST
13285: PPUSH
13286: CALL_OW 69
13290: PPUSH
13291: LD_INT 34
13293: PUSH
13294: LD_INT 30
13296: PUSH
13297: EMPTY
13298: LIST
13299: LIST
13300: PUSH
13301: EMPTY
13302: LIST
13303: PPUSH
13304: CALL_OW 69
13308: PPUSH
13309: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
13313: LD_EXP 91
13317: PPUSH
13318: LD_INT 3
13320: PUSH
13321: LD_INT 33
13323: PUSH
13324: LD_INT 2
13326: PUSH
13327: EMPTY
13328: LIST
13329: LIST
13330: PUSH
13331: EMPTY
13332: LIST
13333: LIST
13334: PPUSH
13335: CALL_OW 72
13339: PPUSH
13340: LD_INT 1050
13342: PPUSH
13343: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
13347: LD_EXP 91
13351: PPUSH
13352: LD_INT 33
13354: PUSH
13355: LD_INT 2
13357: PUSH
13358: EMPTY
13359: LIST
13360: LIST
13361: PUSH
13362: EMPTY
13363: LIST
13364: PPUSH
13365: CALL_OW 72
13369: PPUSH
13370: LD_INT 34
13372: PUSH
13373: LD_INT 30
13375: PUSH
13376: EMPTY
13377: LIST
13378: LIST
13379: PUSH
13380: EMPTY
13381: LIST
13382: PPUSH
13383: CALL_OW 69
13387: PPUSH
13388: LD_INT 1050
13390: PPUSH
13391: CALL 11386 0 3
// ComStop ( zbytek ) ;
13395: LD_EXP 91
13399: PPUSH
13400: CALL_OW 141
// AttackVehicles ( 3 , zbytek ) ;
13404: LD_INT 3
13406: PPUSH
13407: LD_EXP 91
13411: PPUSH
13412: CALL 12055 0 2
// if not byl_hint_PA then
13416: LD_EXP 95
13420: NOT
13421: IFFALSE 13462
// begin while not ContactTime ( [ ai ] ) do
13423: LD_EXP 6
13427: PUSH
13428: EMPTY
13429: LIST
13430: PPUSH
13431: CALL_OW 462
13435: NOT
13436: IFFALSE 13447
// wait ( 0 0$1 ) ;
13438: LD_INT 35
13440: PPUSH
13441: CALL_OW 67
13445: GO 13423
// MyHint ( PriorityAttacks ) ;
13447: LD_STRING PriorityAttacks
13449: PPUSH
13450: CALL 11783 0 1
// byl_hint_PA := true ;
13454: LD_ADDR_EXP 95
13458: PUSH
13459: LD_INT 1
13461: ST_TO_ADDR
// end ; end ;
13462: LD_VAR 0 1
13466: RET
// export byl_hint_PA ; export function f_normal2_utok ; var path , i ; begin
13467: LD_INT 0
13469: PPUSH
13470: PPUSH
13471: PPUSH
// path := [ [ 66 , 86 ] , [ 109 , 128 ] , [ 91 , 95 ] ] ;
13472: LD_ADDR_VAR 0 2
13476: PUSH
13477: LD_INT 66
13479: PUSH
13480: LD_INT 86
13482: PUSH
13483: EMPTY
13484: LIST
13485: LIST
13486: PUSH
13487: LD_INT 109
13489: PUSH
13490: LD_INT 128
13492: PUSH
13493: EMPTY
13494: LIST
13495: LIST
13496: PUSH
13497: LD_INT 91
13499: PUSH
13500: LD_INT 95
13502: PUSH
13503: EMPTY
13504: LIST
13505: LIST
13506: PUSH
13507: EMPTY
13508: LIST
13509: LIST
13510: LIST
13511: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
13512: LD_EXP 91
13516: PPUSH
13517: LD_INT 3
13519: PUSH
13520: LD_INT 33
13522: PUSH
13523: LD_INT 2
13525: PUSH
13526: EMPTY
13527: LIST
13528: LIST
13529: PUSH
13530: EMPTY
13531: LIST
13532: LIST
13533: PPUSH
13534: CALL_OW 72
13538: PPUSH
13539: LD_INT 22
13541: PUSH
13542: LD_EXP 6
13546: PUSH
13547: EMPTY
13548: LIST
13549: LIST
13550: PUSH
13551: LD_INT 25
13553: PUSH
13554: LD_INT 1
13556: PUSH
13557: EMPTY
13558: LIST
13559: LIST
13560: PUSH
13561: EMPTY
13562: LIST
13563: LIST
13564: PPUSH
13565: CALL_OW 69
13569: PPUSH
13570: LD_INT 0
13572: PPUSH
13573: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
13577: LD_EXP 91
13581: PPUSH
13582: LD_INT 33
13584: PUSH
13585: LD_INT 2
13587: PUSH
13588: EMPTY
13589: LIST
13590: LIST
13591: PUSH
13592: EMPTY
13593: LIST
13594: PPUSH
13595: CALL_OW 72
13599: PPUSH
13600: LD_INT 22
13602: PUSH
13603: LD_EXP 6
13607: PUSH
13608: EMPTY
13609: LIST
13610: LIST
13611: PUSH
13612: LD_INT 25
13614: PUSH
13615: LD_INT 3
13617: PUSH
13618: EMPTY
13619: LIST
13620: LIST
13621: PUSH
13622: EMPTY
13623: LIST
13624: LIST
13625: PPUSH
13626: CALL_OW 69
13630: PPUSH
13631: LD_INT 34
13633: PUSH
13634: LD_INT 30
13636: PUSH
13637: EMPTY
13638: LIST
13639: LIST
13640: PUSH
13641: EMPTY
13642: LIST
13643: PPUSH
13644: CALL_OW 69
13648: PPUSH
13649: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
13653: LD_EXP 91
13657: PPUSH
13658: LD_INT 3
13660: PUSH
13661: LD_INT 33
13663: PUSH
13664: LD_INT 2
13666: PUSH
13667: EMPTY
13668: LIST
13669: LIST
13670: PUSH
13671: EMPTY
13672: LIST
13673: LIST
13674: PPUSH
13675: CALL_OW 72
13679: PPUSH
13680: LD_INT 1050
13682: PPUSH
13683: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
13687: LD_EXP 91
13691: PPUSH
13692: LD_INT 33
13694: PUSH
13695: LD_INT 2
13697: PUSH
13698: EMPTY
13699: LIST
13700: LIST
13701: PUSH
13702: EMPTY
13703: LIST
13704: PPUSH
13705: CALL_OW 72
13709: PPUSH
13710: LD_INT 34
13712: PUSH
13713: LD_INT 30
13715: PUSH
13716: EMPTY
13717: LIST
13718: LIST
13719: PUSH
13720: EMPTY
13721: LIST
13722: PPUSH
13723: CALL_OW 69
13727: PPUSH
13728: LD_INT 1050
13730: PPUSH
13731: CALL 11386 0 3
// ComStop ( zbytek ) ;
13735: LD_EXP 91
13739: PPUSH
13740: CALL_OW 141
// AttackVehicles ( 3 , zbytek ) ;
13744: LD_INT 3
13746: PPUSH
13747: LD_EXP 91
13751: PPUSH
13752: CALL 12055 0 2
// if not byl_hint_PA then
13756: LD_EXP 95
13760: NOT
13761: IFFALSE 13802
// begin while not ContactTime ( [ ai ] ) do
13763: LD_EXP 6
13767: PUSH
13768: EMPTY
13769: LIST
13770: PPUSH
13771: CALL_OW 462
13775: NOT
13776: IFFALSE 13787
// wait ( 0 0$1 ) ;
13778: LD_INT 35
13780: PPUSH
13781: CALL_OW 67
13785: GO 13763
// MyHint ( PriorityAttacks ) ;
13787: LD_STRING PriorityAttacks
13789: PPUSH
13790: CALL 11783 0 1
// byl_hint_PA := true ;
13794: LD_ADDR_EXP 95
13798: PUSH
13799: LD_INT 1
13801: ST_TO_ADDR
// end ; end ;
13802: LD_VAR 0 1
13806: RET
// export function f_normal3_utok ; var path , i ; begin
13807: LD_INT 0
13809: PPUSH
13810: PPUSH
13811: PPUSH
// path := [ [ 66 , 86 ] , [ 109 , 128 ] , [ 110 , 88 ] , [ 91 , 95 ] ] ;
13812: LD_ADDR_VAR 0 2
13816: PUSH
13817: LD_INT 66
13819: PUSH
13820: LD_INT 86
13822: PUSH
13823: EMPTY
13824: LIST
13825: LIST
13826: PUSH
13827: LD_INT 109
13829: PUSH
13830: LD_INT 128
13832: PUSH
13833: EMPTY
13834: LIST
13835: LIST
13836: PUSH
13837: LD_INT 110
13839: PUSH
13840: LD_INT 88
13842: PUSH
13843: EMPTY
13844: LIST
13845: LIST
13846: PUSH
13847: LD_INT 91
13849: PUSH
13850: LD_INT 95
13852: PUSH
13853: EMPTY
13854: LIST
13855: LIST
13856: PUSH
13857: EMPTY
13858: LIST
13859: LIST
13860: LIST
13861: LIST
13862: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
13863: LD_EXP 91
13867: PPUSH
13868: LD_INT 3
13870: PUSH
13871: LD_INT 33
13873: PUSH
13874: LD_INT 2
13876: PUSH
13877: EMPTY
13878: LIST
13879: LIST
13880: PUSH
13881: EMPTY
13882: LIST
13883: LIST
13884: PPUSH
13885: CALL_OW 72
13889: PPUSH
13890: LD_INT 22
13892: PUSH
13893: LD_EXP 6
13897: PUSH
13898: EMPTY
13899: LIST
13900: LIST
13901: PUSH
13902: LD_INT 25
13904: PUSH
13905: LD_INT 1
13907: PUSH
13908: EMPTY
13909: LIST
13910: LIST
13911: PUSH
13912: EMPTY
13913: LIST
13914: LIST
13915: PPUSH
13916: CALL_OW 69
13920: PPUSH
13921: LD_INT 0
13923: PPUSH
13924: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
13928: LD_EXP 91
13932: PPUSH
13933: LD_INT 33
13935: PUSH
13936: LD_INT 2
13938: PUSH
13939: EMPTY
13940: LIST
13941: LIST
13942: PUSH
13943: EMPTY
13944: LIST
13945: PPUSH
13946: CALL_OW 72
13950: PPUSH
13951: LD_INT 22
13953: PUSH
13954: LD_EXP 6
13958: PUSH
13959: EMPTY
13960: LIST
13961: LIST
13962: PUSH
13963: LD_INT 25
13965: PUSH
13966: LD_INT 3
13968: PUSH
13969: EMPTY
13970: LIST
13971: LIST
13972: PUSH
13973: EMPTY
13974: LIST
13975: LIST
13976: PPUSH
13977: CALL_OW 69
13981: PPUSH
13982: LD_INT 34
13984: PUSH
13985: LD_INT 30
13987: PUSH
13988: EMPTY
13989: LIST
13990: LIST
13991: PUSH
13992: EMPTY
13993: LIST
13994: PPUSH
13995: CALL_OW 69
13999: PPUSH
14000: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
14004: LD_EXP 91
14008: PPUSH
14009: LD_INT 3
14011: PUSH
14012: LD_INT 33
14014: PUSH
14015: LD_INT 2
14017: PUSH
14018: EMPTY
14019: LIST
14020: LIST
14021: PUSH
14022: EMPTY
14023: LIST
14024: LIST
14025: PPUSH
14026: CALL_OW 72
14030: PPUSH
14031: LD_INT 1050
14033: PPUSH
14034: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
14038: LD_EXP 91
14042: PPUSH
14043: LD_INT 33
14045: PUSH
14046: LD_INT 2
14048: PUSH
14049: EMPTY
14050: LIST
14051: LIST
14052: PUSH
14053: EMPTY
14054: LIST
14055: PPUSH
14056: CALL_OW 72
14060: PPUSH
14061: LD_INT 34
14063: PUSH
14064: LD_INT 30
14066: PUSH
14067: EMPTY
14068: LIST
14069: LIST
14070: PUSH
14071: EMPTY
14072: LIST
14073: PPUSH
14074: CALL_OW 69
14078: PPUSH
14079: LD_INT 1050
14081: PPUSH
14082: CALL 11386 0 3
// ComStop ( zbytek ) ;
14086: LD_EXP 91
14090: PPUSH
14091: CALL_OW 141
// AttackVehicles ( 3 , zbytek ) ;
14095: LD_INT 3
14097: PPUSH
14098: LD_EXP 91
14102: PPUSH
14103: CALL 12055 0 2
// if not byl_hint_PA then
14107: LD_EXP 95
14111: NOT
14112: IFFALSE 14153
// begin while not ContactTime ( [ ai ] ) do
14114: LD_EXP 6
14118: PUSH
14119: EMPTY
14120: LIST
14121: PPUSH
14122: CALL_OW 462
14126: NOT
14127: IFFALSE 14138
// wait ( 0 0$1 ) ;
14129: LD_INT 35
14131: PPUSH
14132: CALL_OW 67
14136: GO 14114
// MyHint ( PriorityAttacks ) ;
14138: LD_STRING PriorityAttacks
14140: PPUSH
14141: CALL 11783 0 1
// byl_hint_PA := true ;
14145: LD_ADDR_EXP 95
14149: PUSH
14150: LD_INT 1
14152: ST_TO_ADDR
// end ; end ;
14153: LD_VAR 0 1
14157: RET
// export function f_normal4_utok ; var path , i ; begin
14158: LD_INT 0
14160: PPUSH
14161: PPUSH
14162: PPUSH
// path := [ [ 38 , 16 ] , [ 75 , 36 ] , [ 91 , 95 ] ] ;
14163: LD_ADDR_VAR 0 2
14167: PUSH
14168: LD_INT 38
14170: PUSH
14171: LD_INT 16
14173: PUSH
14174: EMPTY
14175: LIST
14176: LIST
14177: PUSH
14178: LD_INT 75
14180: PUSH
14181: LD_INT 36
14183: PUSH
14184: EMPTY
14185: LIST
14186: LIST
14187: PUSH
14188: LD_INT 91
14190: PUSH
14191: LD_INT 95
14193: PUSH
14194: EMPTY
14195: LIST
14196: LIST
14197: PUSH
14198: EMPTY
14199: LIST
14200: LIST
14201: LIST
14202: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
14203: LD_EXP 91
14207: PPUSH
14208: LD_INT 3
14210: PUSH
14211: LD_INT 33
14213: PUSH
14214: LD_INT 2
14216: PUSH
14217: EMPTY
14218: LIST
14219: LIST
14220: PUSH
14221: EMPTY
14222: LIST
14223: LIST
14224: PPUSH
14225: CALL_OW 72
14229: PPUSH
14230: LD_INT 22
14232: PUSH
14233: LD_EXP 6
14237: PUSH
14238: EMPTY
14239: LIST
14240: LIST
14241: PUSH
14242: LD_INT 25
14244: PUSH
14245: LD_INT 1
14247: PUSH
14248: EMPTY
14249: LIST
14250: LIST
14251: PUSH
14252: EMPTY
14253: LIST
14254: LIST
14255: PPUSH
14256: CALL_OW 69
14260: PPUSH
14261: LD_INT 0
14263: PPUSH
14264: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
14268: LD_EXP 91
14272: PPUSH
14273: LD_INT 33
14275: PUSH
14276: LD_INT 2
14278: PUSH
14279: EMPTY
14280: LIST
14281: LIST
14282: PUSH
14283: EMPTY
14284: LIST
14285: PPUSH
14286: CALL_OW 72
14290: PPUSH
14291: LD_INT 22
14293: PUSH
14294: LD_EXP 6
14298: PUSH
14299: EMPTY
14300: LIST
14301: LIST
14302: PUSH
14303: LD_INT 25
14305: PUSH
14306: LD_INT 3
14308: PUSH
14309: EMPTY
14310: LIST
14311: LIST
14312: PUSH
14313: EMPTY
14314: LIST
14315: LIST
14316: PPUSH
14317: CALL_OW 69
14321: PPUSH
14322: LD_INT 34
14324: PUSH
14325: LD_INT 30
14327: PUSH
14328: EMPTY
14329: LIST
14330: LIST
14331: PUSH
14332: EMPTY
14333: LIST
14334: PPUSH
14335: CALL_OW 69
14339: PPUSH
14340: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
14344: LD_EXP 91
14348: PPUSH
14349: LD_INT 3
14351: PUSH
14352: LD_INT 33
14354: PUSH
14355: LD_INT 2
14357: PUSH
14358: EMPTY
14359: LIST
14360: LIST
14361: PUSH
14362: EMPTY
14363: LIST
14364: LIST
14365: PPUSH
14366: CALL_OW 72
14370: PPUSH
14371: LD_INT 1050
14373: PPUSH
14374: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
14378: LD_EXP 91
14382: PPUSH
14383: LD_INT 33
14385: PUSH
14386: LD_INT 2
14388: PUSH
14389: EMPTY
14390: LIST
14391: LIST
14392: PUSH
14393: EMPTY
14394: LIST
14395: PPUSH
14396: CALL_OW 72
14400: PPUSH
14401: LD_INT 34
14403: PUSH
14404: LD_INT 30
14406: PUSH
14407: EMPTY
14408: LIST
14409: LIST
14410: PUSH
14411: EMPTY
14412: LIST
14413: PPUSH
14414: CALL_OW 69
14418: PPUSH
14419: LD_INT 1050
14421: PPUSH
14422: CALL 11386 0 3
// ComStop ( zbytek ) ;
14426: LD_EXP 91
14430: PPUSH
14431: CALL_OW 141
// AttackVehicles ( 3 , zbytek ) ;
14435: LD_INT 3
14437: PPUSH
14438: LD_EXP 91
14442: PPUSH
14443: CALL 12055 0 2
// if not byl_hint_PA then
14447: LD_EXP 95
14451: NOT
14452: IFFALSE 14493
// begin while not ContactTime ( [ ai ] ) do
14454: LD_EXP 6
14458: PUSH
14459: EMPTY
14460: LIST
14461: PPUSH
14462: CALL_OW 462
14466: NOT
14467: IFFALSE 14478
// wait ( 0 0$1 ) ;
14469: LD_INT 35
14471: PPUSH
14472: CALL_OW 67
14476: GO 14454
// MyHint ( PriorityAttacks ) ;
14478: LD_STRING PriorityAttacks
14480: PPUSH
14481: CALL 11783 0 1
// byl_hint_PA := true ;
14485: LD_ADDR_EXP 95
14489: PUSH
14490: LD_INT 1
14492: ST_TO_ADDR
// end ; end ;
14493: LD_VAR 0 1
14497: RET
// export function f_vsevolod_utok ; var path , i ; begin
14498: LD_INT 0
14500: PPUSH
14501: PPUSH
14502: PPUSH
// path := [ [ 43 , 17 ] , [ 41 , 7 ] ] ;
14503: LD_ADDR_VAR 0 2
14507: PUSH
14508: LD_INT 43
14510: PUSH
14511: LD_INT 17
14513: PUSH
14514: EMPTY
14515: LIST
14516: LIST
14517: PUSH
14518: LD_INT 41
14520: PUSH
14521: LD_INT 7
14523: PUSH
14524: EMPTY
14525: LIST
14526: LIST
14527: PUSH
14528: EMPTY
14529: LIST
14530: LIST
14531: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
14532: LD_EXP 91
14536: PPUSH
14537: LD_INT 3
14539: PUSH
14540: LD_INT 33
14542: PUSH
14543: LD_INT 2
14545: PUSH
14546: EMPTY
14547: LIST
14548: LIST
14549: PUSH
14550: EMPTY
14551: LIST
14552: LIST
14553: PPUSH
14554: CALL_OW 72
14558: PPUSH
14559: LD_INT 22
14561: PUSH
14562: LD_EXP 6
14566: PUSH
14567: EMPTY
14568: LIST
14569: LIST
14570: PUSH
14571: LD_INT 25
14573: PUSH
14574: LD_INT 1
14576: PUSH
14577: EMPTY
14578: LIST
14579: LIST
14580: PUSH
14581: EMPTY
14582: LIST
14583: LIST
14584: PPUSH
14585: CALL_OW 69
14589: PPUSH
14590: LD_INT 0
14592: PPUSH
14593: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
14597: LD_EXP 91
14601: PPUSH
14602: LD_INT 33
14604: PUSH
14605: LD_INT 2
14607: PUSH
14608: EMPTY
14609: LIST
14610: LIST
14611: PUSH
14612: EMPTY
14613: LIST
14614: PPUSH
14615: CALL_OW 72
14619: PPUSH
14620: LD_INT 22
14622: PUSH
14623: LD_EXP 6
14627: PUSH
14628: EMPTY
14629: LIST
14630: LIST
14631: PUSH
14632: LD_INT 25
14634: PUSH
14635: LD_INT 3
14637: PUSH
14638: EMPTY
14639: LIST
14640: LIST
14641: PUSH
14642: EMPTY
14643: LIST
14644: LIST
14645: PPUSH
14646: CALL_OW 69
14650: PPUSH
14651: LD_INT 34
14653: PUSH
14654: LD_INT 30
14656: PUSH
14657: EMPTY
14658: LIST
14659: LIST
14660: PUSH
14661: EMPTY
14662: LIST
14663: PPUSH
14664: CALL_OW 69
14668: PPUSH
14669: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
14673: LD_EXP 91
14677: PPUSH
14678: LD_INT 3
14680: PUSH
14681: LD_INT 33
14683: PUSH
14684: LD_INT 2
14686: PUSH
14687: EMPTY
14688: LIST
14689: LIST
14690: PUSH
14691: EMPTY
14692: LIST
14693: LIST
14694: PPUSH
14695: CALL_OW 72
14699: PPUSH
14700: LD_INT 1050
14702: PPUSH
14703: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
14707: LD_EXP 91
14711: PPUSH
14712: LD_INT 33
14714: PUSH
14715: LD_INT 2
14717: PUSH
14718: EMPTY
14719: LIST
14720: LIST
14721: PUSH
14722: EMPTY
14723: LIST
14724: PPUSH
14725: CALL_OW 72
14729: PPUSH
14730: LD_INT 34
14732: PUSH
14733: LD_INT 30
14735: PUSH
14736: EMPTY
14737: LIST
14738: LIST
14739: PUSH
14740: EMPTY
14741: LIST
14742: PPUSH
14743: CALL_OW 69
14747: PPUSH
14748: LD_INT 1050
14750: PPUSH
14751: CALL 11386 0 3
// ComStop ( zbytek ) ;
14755: LD_EXP 91
14759: PPUSH
14760: CALL_OW 141
// for i in path do
14764: LD_ADDR_VAR 0 3
14768: PUSH
14769: LD_VAR 0 2
14773: PUSH
14774: FOR_IN
14775: IFFALSE 14806
// AddComAgressiveMove ( zbytek , i [ 1 ] , i [ 2 ] ) ;
14777: LD_EXP 91
14781: PPUSH
14782: LD_VAR 0 3
14786: PUSH
14787: LD_INT 1
14789: ARRAY
14790: PPUSH
14791: LD_VAR 0 3
14795: PUSH
14796: LD_INT 2
14798: ARRAY
14799: PPUSH
14800: CALL_OW 174
14804: GO 14774
14806: POP
14807: POP
// AddComWait ( zbytek , 0 0$5 ) ;
14808: LD_EXP 91
14812: PPUSH
14813: LD_INT 175
14815: PPUSH
14816: CALL_OW 202
// AddComReturn ( zbytek ) ;
14820: LD_EXP 91
14824: PPUSH
14825: CALL_OW 204
// end ;
14829: LD_VAR 0 1
14833: RET
// export function f_vsevolod_final_utok ; var path , i ; begin
14834: LD_INT 0
14836: PPUSH
14837: PPUSH
14838: PPUSH
// path := [ [ 43 , 17 ] , [ 41 , 7 ] , [ 52 , 7 ] ] ;
14839: LD_ADDR_VAR 0 2
14843: PUSH
14844: LD_INT 43
14846: PUSH
14847: LD_INT 17
14849: PUSH
14850: EMPTY
14851: LIST
14852: LIST
14853: PUSH
14854: LD_INT 41
14856: PUSH
14857: LD_INT 7
14859: PUSH
14860: EMPTY
14861: LIST
14862: LIST
14863: PUSH
14864: LD_INT 52
14866: PUSH
14867: LD_INT 7
14869: PUSH
14870: EMPTY
14871: LIST
14872: LIST
14873: PUSH
14874: EMPTY
14875: LIST
14876: LIST
14877: LIST
14878: ST_TO_ADDR
// find_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) , false ) ;
14879: LD_EXP 91
14883: PPUSH
14884: LD_INT 3
14886: PUSH
14887: LD_INT 33
14889: PUSH
14890: LD_INT 2
14892: PUSH
14893: EMPTY
14894: LIST
14895: LIST
14896: PUSH
14897: EMPTY
14898: LIST
14899: LIST
14900: PPUSH
14901: CALL_OW 72
14905: PPUSH
14906: LD_INT 22
14908: PUSH
14909: LD_EXP 6
14913: PUSH
14914: EMPTY
14915: LIST
14916: LIST
14917: PUSH
14918: LD_INT 25
14920: PUSH
14921: LD_INT 1
14923: PUSH
14924: EMPTY
14925: LIST
14926: LIST
14927: PUSH
14928: EMPTY
14929: LIST
14930: LIST
14931: PPUSH
14932: CALL_OW 69
14936: PPUSH
14937: LD_INT 0
14939: PPUSH
14940: CALL 10957 0 3
// find_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) ) ;
14944: LD_EXP 91
14948: PPUSH
14949: LD_INT 33
14951: PUSH
14952: LD_INT 2
14954: PUSH
14955: EMPTY
14956: LIST
14957: LIST
14958: PUSH
14959: EMPTY
14960: LIST
14961: PPUSH
14962: CALL_OW 72
14966: PPUSH
14967: LD_INT 22
14969: PUSH
14970: LD_EXP 6
14974: PUSH
14975: EMPTY
14976: LIST
14977: LIST
14978: PUSH
14979: LD_INT 25
14981: PUSH
14982: LD_INT 3
14984: PUSH
14985: EMPTY
14986: LIST
14987: LIST
14988: PUSH
14989: EMPTY
14990: LIST
14991: LIST
14992: PPUSH
14993: CALL_OW 69
14997: PPUSH
14998: LD_INT 34
15000: PUSH
15001: LD_INT 30
15003: PUSH
15004: EMPTY
15005: LIST
15006: LIST
15007: PUSH
15008: EMPTY
15009: LIST
15010: PPUSH
15011: CALL_OW 69
15015: PPUSH
15016: CALL 11302 0 3
// wait_for_drivers ( UnitFilter ( zbytek , [ f_not , [ f_control , control_remote ] ] ) , 0 0$30 ) ;
15020: LD_EXP 91
15024: PPUSH
15025: LD_INT 3
15027: PUSH
15028: LD_INT 33
15030: PUSH
15031: LD_INT 2
15033: PUSH
15034: EMPTY
15035: LIST
15036: LIST
15037: PUSH
15038: EMPTY
15039: LIST
15040: LIST
15041: PPUSH
15042: CALL_OW 72
15046: PPUSH
15047: LD_INT 1050
15049: PPUSH
15050: CALL 11528 0 2
// wait_for_remotes ( UnitFilter ( zbytek , [ [ f_control , control_remote ] ] ) , FilterAllUnits ( [ [ f_weapon , ar_radar ] ] ) , 0 0$30 ) ;
15054: LD_EXP 91
15058: PPUSH
15059: LD_INT 33
15061: PUSH
15062: LD_INT 2
15064: PUSH
15065: EMPTY
15066: LIST
15067: LIST
15068: PUSH
15069: EMPTY
15070: LIST
15071: PPUSH
15072: CALL_OW 72
15076: PPUSH
15077: LD_INT 34
15079: PUSH
15080: LD_INT 30
15082: PUSH
15083: EMPTY
15084: LIST
15085: LIST
15086: PUSH
15087: EMPTY
15088: LIST
15089: PPUSH
15090: CALL_OW 69
15094: PPUSH
15095: LD_INT 1050
15097: PPUSH
15098: CALL 11386 0 3
// ComRemember ( zbytek ) ;
15102: LD_EXP 91
15106: PPUSH
15107: CALL_OW 143
// for i in path do
15111: LD_ADDR_VAR 0 3
15115: PUSH
15116: LD_VAR 0 2
15120: PUSH
15121: FOR_IN
15122: IFFALSE 15153
// AddComAgressiveMove ( zbytek , i [ 1 ] , i [ 2 ] ) ;
15124: LD_EXP 91
15128: PPUSH
15129: LD_VAR 0 3
15133: PUSH
15134: LD_INT 1
15136: ARRAY
15137: PPUSH
15138: LD_VAR 0 3
15142: PUSH
15143: LD_INT 2
15145: ARRAY
15146: PPUSH
15147: CALL_OW 174
15151: GO 15121
15153: POP
15154: POP
// AddComAttackUnit ( zbytek , Vsevolod ) ;
15155: LD_EXP 91
15159: PPUSH
15160: LD_EXP 70
15164: PPUSH
15165: CALL_OW 175
// end ; end_of_file
15169: LD_VAR 0 1
15173: RET
// var rDef1 , rDef2 ; export idDef1 , idDef2 ; export toDef1 , toDef2 ; every 0 0$1 do
15174: GO 15176
15176: DISABLE
// begin rDef1 := McRegistry ( ai , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , def_base ] , [ mc_reg_area_to_protect , def_base ] ] ) ;
15177: LD_ADDR_LOC 3
15181: PUSH
15182: LD_EXP 6
15186: PPUSH
15187: LD_INT 1
15189: PUSH
15190: LD_INT 70
15192: PUSH
15193: EMPTY
15194: LIST
15195: LIST
15196: PUSH
15197: LD_INT 2
15199: PUSH
15200: LD_INT 19
15202: PUSH
15203: EMPTY
15204: LIST
15205: LIST
15206: PUSH
15207: LD_INT 3
15209: PUSH
15210: LD_INT 19
15212: PUSH
15213: EMPTY
15214: LIST
15215: LIST
15216: PUSH
15217: EMPTY
15218: LIST
15219: LIST
15220: LIST
15221: PPUSH
15222: CALL_OW 399
15226: ST_TO_ADDR
// rDef2 := McRegistry ( ai , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , def_base3 ] , [ mc_reg_area_to_protect , def_base3 ] ] ) ;
15227: LD_ADDR_LOC 4
15231: PUSH
15232: LD_EXP 6
15236: PPUSH
15237: LD_INT 1
15239: PUSH
15240: LD_INT 70
15242: PUSH
15243: EMPTY
15244: LIST
15245: LIST
15246: PUSH
15247: LD_INT 2
15249: PUSH
15250: LD_INT 18
15252: PUSH
15253: EMPTY
15254: LIST
15255: LIST
15256: PUSH
15257: LD_INT 3
15259: PUSH
15260: LD_INT 18
15262: PUSH
15263: EMPTY
15264: LIST
15265: LIST
15266: PUSH
15267: EMPTY
15268: LIST
15269: LIST
15270: LIST
15271: PPUSH
15272: CALL_OW 399
15276: ST_TO_ADDR
// idDef1 := McDefend ( 10 , rDef1 , toDef1 , [ mc_def_advantage , mcdef_difficulty ] ) ;
15277: LD_ADDR_EXP 96
15281: PUSH
15282: LD_INT 10
15284: PPUSH
15285: LD_LOC 3
15289: PPUSH
15290: LD_EXP 98
15294: PPUSH
15295: LD_INT 1
15297: PUSH
15298: LD_EXP 16
15302: PUSH
15303: EMPTY
15304: LIST
15305: LIST
15306: PPUSH
15307: CALL_OW 401
15311: ST_TO_ADDR
// idDef2 := McDefend ( 10 , rDef2 , toDef2 , [ mc_def_advantage , na_kopci_mcdef_difficulty ] ) ;
15312: LD_ADDR_EXP 97
15316: PUSH
15317: LD_INT 10
15319: PPUSH
15320: LD_LOC 4
15324: PPUSH
15325: LD_EXP 99
15329: PPUSH
15330: LD_INT 1
15332: PUSH
15333: LD_EXP 18
15337: PUSH
15338: EMPTY
15339: LIST
15340: LIST
15341: PPUSH
15342: CALL_OW 401
15346: ST_TO_ADDR
// end ;
15347: END
// every 0 0$2 do var r1 , r2 ;
15348: GO 15350
15350: DISABLE
15351: LD_INT 0
15353: PPUSH
15354: PPUSH
// begin todef1 := UnitFilter ( ( fort isect ( b3 ^ b4 ) ) ^ ( ( a3 ^ a4 ) isect sol ) ^ attack ^ defence , [ [ f_side , ai ] , [ f_ok ] ] ) ;
15355: LD_ADDR_EXP 98
15359: PUSH
15360: LD_EXP 119
15364: PUSH
15365: LD_EXP 130
15369: PUSH
15370: LD_EXP 131
15374: ADD
15375: ISECT
15376: PUSH
15377: LD_EXP 135
15381: PUSH
15382: LD_EXP 136
15386: ADD
15387: PUSH
15388: LD_EXP 121
15392: ISECT
15393: ADD
15394: PUSH
15395: LD_EXP 138
15399: ADD
15400: PUSH
15401: LD_EXP 139
15405: ADD
15406: PPUSH
15407: LD_INT 22
15409: PUSH
15410: LD_EXP 6
15414: PUSH
15415: EMPTY
15416: LIST
15417: LIST
15418: PUSH
15419: LD_INT 50
15421: PUSH
15422: EMPTY
15423: LIST
15424: PUSH
15425: EMPTY
15426: LIST
15427: LIST
15428: PPUSH
15429: CALL_OW 72
15433: ST_TO_ADDR
// todef2 := UnitFilter ( ( fort isect b1 ) ^ ( a1 isect sol ) , [ [ f_side , ai ] , [ f_ok ] ] ) ;
15434: LD_ADDR_EXP 99
15438: PUSH
15439: LD_EXP 119
15443: PUSH
15444: LD_EXP 128
15448: ISECT
15449: PUSH
15450: LD_EXP 133
15454: PUSH
15455: LD_EXP 121
15459: ISECT
15460: ADD
15461: PPUSH
15462: LD_INT 22
15464: PUSH
15465: LD_EXP 6
15469: PUSH
15470: EMPTY
15471: LIST
15472: LIST
15473: PUSH
15474: LD_INT 50
15476: PUSH
15477: EMPTY
15478: LIST
15479: PUSH
15480: EMPTY
15481: LIST
15482: LIST
15483: PPUSH
15484: CALL_OW 72
15488: ST_TO_ADDR
// r1 := GetMcUnits ( idDef1 ) diff todef1 ;
15489: LD_ADDR_VAR 0 1
15493: PUSH
15494: LD_EXP 96
15498: PPUSH
15499: CALL_OW 389
15503: PUSH
15504: LD_EXP 98
15508: DIFF
15509: ST_TO_ADDR
// add_to ( r1 ) ;
15510: LD_VAR 0 1
15514: PPUSH
15515: CALL 30441 0 1
// AddMcUnits ( idDef1 , todef1 ) ;
15519: LD_EXP 96
15523: PPUSH
15524: LD_EXP 98
15528: PPUSH
15529: CALL_OW 390
// r2 := GetMcUnits ( idDef2 ) diff todef2 ;
15533: LD_ADDR_VAR 0 2
15537: PUSH
15538: LD_EXP 97
15542: PPUSH
15543: CALL_OW 389
15547: PUSH
15548: LD_EXP 99
15552: DIFF
15553: ST_TO_ADDR
// add_to ( r2 ) ;
15554: LD_VAR 0 2
15558: PPUSH
15559: CALL 30441 0 1
// if not ovsyenkotaken or ovsyenkocaptured then
15563: LD_EXP 14
15567: NOT
15568: PUSH
15569: LD_EXP 15
15573: OR
15574: IFFALSE 15590
// AddMcUnits ( idDef2 , todef2 ) ;
15576: LD_EXP 97
15580: PPUSH
15581: LD_EXP 99
15585: PPUSH
15586: CALL_OW 390
// enable ;
15590: ENABLE
// end ; end_of_file
15591: PPOPN 2
15593: END
// export opravovat ; every 0 0$1.0 do var set_fuel , fuel ;
15594: GO 15596
15596: DISABLE
15597: LD_INT 0
15599: PPUSH
15600: PPUSH
// begin for set_fuel in FilterUnitsInArea ( near_base , [ [ f_type , unit_vehicle ] , [ f_side , ai ] ] ) do
15601: LD_ADDR_VAR 0 1
15605: PUSH
15606: LD_INT 2
15608: PPUSH
15609: LD_INT 21
15611: PUSH
15612: LD_INT 2
15614: PUSH
15615: EMPTY
15616: LIST
15617: LIST
15618: PUSH
15619: LD_INT 22
15621: PUSH
15622: LD_EXP 6
15626: PUSH
15627: EMPTY
15628: LIST
15629: LIST
15630: PUSH
15631: EMPTY
15632: LIST
15633: LIST
15634: PPUSH
15635: CALL_OW 70
15639: PUSH
15640: FOR_IN
15641: IFFALSE 15688
// begin fuel := GetFuel ( set_fuel ) ;
15643: LD_ADDR_VAR 0 2
15647: PUSH
15648: LD_VAR 0 1
15652: PPUSH
15653: CALL_OW 261
15657: ST_TO_ADDR
// if fuel <= 80 then
15658: LD_VAR 0 2
15662: PUSH
15663: LD_INT 80
15665: LESSEQUAL
15666: IFFALSE 15686
// SetFuel ( set_fuel , fuel + 20 ) ;
15668: LD_VAR 0 1
15672: PPUSH
15673: LD_VAR 0 2
15677: PUSH
15678: LD_INT 20
15680: PLUS
15681: PPUSH
15682: CALL_OW 240
// end ;
15686: GO 15640
15688: POP
15689: POP
// enable ;
15690: ENABLE
// end ;
15691: PPOPN 2
15693: END
// export rep_cars ; export brk_cars ; every 0 0$5 do var i ;
15694: GO 15696
15696: DISABLE
15697: LD_INT 0
15699: PPUSH
// begin for i in FilterAllUnits ( [ [ f_side , ai ] , [ f_type , unit_vehicle ] ] ) do
15700: LD_ADDR_VAR 0 1
15704: PUSH
15705: LD_INT 22
15707: PUSH
15708: LD_EXP 6
15712: PUSH
15713: EMPTY
15714: LIST
15715: LIST
15716: PUSH
15717: LD_INT 21
15719: PUSH
15720: LD_INT 2
15722: PUSH
15723: EMPTY
15724: LIST
15725: LIST
15726: PUSH
15727: EMPTY
15728: LIST
15729: LIST
15730: PPUSH
15731: CALL_OW 69
15735: PUSH
15736: FOR_IN
15737: IFFALSE 15820
// begin if GetLives ( i ) < 600 then
15739: LD_VAR 0 1
15743: PPUSH
15744: CALL_OW 256
15748: PUSH
15749: LD_INT 600
15751: LESS
15752: IFFALSE 15787
// begin ComMoveXY ( i , 37 , 59 ) ;
15754: LD_VAR 0 1
15758: PPUSH
15759: LD_INT 37
15761: PPUSH
15762: LD_INT 59
15764: PPUSH
15765: CALL_OW 111
// brk_cars := brk_cars union i ;
15769: LD_ADDR_EXP 102
15773: PUSH
15774: LD_EXP 102
15778: PUSH
15779: LD_VAR 0 1
15783: UNION
15784: ST_TO_ADDR
// end else
15785: GO 15818
// if GetLives ( i ) > 950 then
15787: LD_VAR 0 1
15791: PPUSH
15792: CALL_OW 256
15796: PUSH
15797: LD_INT 950
15799: GREATER
15800: IFFALSE 15818
// begin brk_cars := brk_cars diff i ;
15802: LD_ADDR_EXP 102
15806: PUSH
15807: LD_EXP 102
15811: PUSH
15812: LD_VAR 0 1
15816: DIFF
15817: ST_TO_ADDR
// end ; end ;
15818: GO 15736
15820: POP
15821: POP
// enable ;
15822: ENABLE
// end ;
15823: PPOPN 1
15825: END
// every 0 0$5 + 0 0$2 do var zivoty , i ;
15826: GO 15828
15828: DISABLE
15829: LD_INT 0
15831: PPUSH
15832: PPUSH
// begin rep_cars := [ ] ;
15833: LD_ADDR_EXP 101
15837: PUSH
15838: EMPTY
15839: ST_TO_ADDR
// for i in FilterUnitsInArea ( repair_bay1 , [ [ f_side , ai ] , [ f_type , unit_vehicle ] ] ) do
15840: LD_ADDR_VAR 0 2
15844: PUSH
15845: LD_INT 27
15847: PPUSH
15848: LD_INT 22
15850: PUSH
15851: LD_EXP 6
15855: PUSH
15856: EMPTY
15857: LIST
15858: LIST
15859: PUSH
15860: LD_INT 21
15862: PUSH
15863: LD_INT 2
15865: PUSH
15866: EMPTY
15867: LIST
15868: LIST
15869: PUSH
15870: EMPTY
15871: LIST
15872: LIST
15873: PPUSH
15874: CALL_OW 70
15878: PUSH
15879: FOR_IN
15880: IFFALSE 15936
// begin if GetLives ( i ) < 1000 then
15882: LD_VAR 0 2
15886: PPUSH
15887: CALL_OW 256
15891: PUSH
15892: LD_INT 1000
15894: LESS
15895: IFFALSE 15934
// begin rep_cars := rep_cars ^ i ;
15897: LD_ADDR_EXP 101
15901: PUSH
15902: LD_EXP 101
15906: PUSH
15907: LD_VAR 0 2
15911: ADD
15912: ST_TO_ADDR
// zivoty := zivoty ^ GetLives ( i ) ;
15913: LD_ADDR_VAR 0 1
15917: PUSH
15918: LD_VAR 0 1
15922: PUSH
15923: LD_VAR 0 2
15927: PPUSH
15928: CALL_OW 256
15932: ADD
15933: ST_TO_ADDR
// end ; end ;
15934: GO 15879
15936: POP
15937: POP
// SortListByListAsc ( rep_cars , zivoty ) ;
15938: LD_EXP 101
15942: PPUSH
15943: LD_VAR 0 1
15947: PPUSH
15948: CALL_OW 76
// enable ;
15952: ENABLE
// end ;
15953: PPOPN 2
15955: END
// export opr_mec ; every 0 0$5 + 0 0$4 trigger opravovat do var a ;
15956: LD_EXP 100
15960: IFFALSE 16135
15962: GO 15964
15964: DISABLE
15965: LD_INT 0
15967: PPUSH
// begin a := UnitFilter ( mec , [ f_not , [ f_hastask ] ] ) ;
15968: LD_ADDR_VAR 0 1
15972: PUSH
15973: LD_EXP 125
15977: PPUSH
15978: LD_INT 3
15980: PUSH
15981: LD_INT 60
15983: PUSH
15984: EMPTY
15985: LIST
15986: PUSH
15987: EMPTY
15988: LIST
15989: LIST
15990: PPUSH
15991: CALL_OW 72
15995: ST_TO_ADDR
// ComStop ( a ) ;
15996: LD_VAR 0 1
16000: PPUSH
16001: CALL_OW 141
// ComReturn ( a ) ;
16005: LD_VAR 0 1
16009: PPUSH
16010: CALL_OW 144
// opr_mec := opr_mec diff a ;
16014: LD_ADDR_EXP 103
16018: PUSH
16019: LD_EXP 103
16023: PUSH
16024: LD_VAR 0 1
16028: DIFF
16029: ST_TO_ADDR
// if rep_cars then
16030: LD_EXP 101
16034: IFFALSE 16134
// begin a := get_x_best ( UnitFilter ( mec , [ [ f_dist , rep_cars [ 1 ] , 20 ] ] ) , 2 , skill_mechanical , 0 , false ) ;
16036: LD_ADDR_VAR 0 1
16040: PUSH
16041: LD_EXP 125
16045: PPUSH
16046: LD_INT 91
16048: PUSH
16049: LD_EXP 101
16053: PUSH
16054: LD_INT 1
16056: ARRAY
16057: PUSH
16058: LD_INT 20
16060: PUSH
16061: EMPTY
16062: LIST
16063: LIST
16064: LIST
16065: PUSH
16066: EMPTY
16067: LIST
16068: PPUSH
16069: CALL_OW 72
16073: PPUSH
16074: LD_INT 2
16076: PPUSH
16077: LD_INT 3
16079: PPUSH
16080: LD_INT 0
16082: PPUSH
16083: LD_INT 0
16085: PPUSH
16086: CALL 10114 0 5
16090: ST_TO_ADDR
// opr_mec := opr_mec union a ;
16091: LD_ADDR_EXP 103
16095: PUSH
16096: LD_EXP 103
16100: PUSH
16101: LD_VAR 0 1
16105: UNION
16106: ST_TO_ADDR
// ComExitBuilding ( a ) ;
16107: LD_VAR 0 1
16111: PPUSH
16112: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 1 ] ) ;
16116: LD_VAR 0 1
16120: PPUSH
16121: LD_EXP 101
16125: PUSH
16126: LD_INT 1
16128: ARRAY
16129: PPUSH
16130: CALL_OW 189
// end ; enable ;
16134: ENABLE
// end ; end_of_file
16135: PPOPN 1
16137: END
// var d1 , d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9 , d10 ; every 0 0$2 do
16138: GO 16140
16140: DISABLE
// begin d1 := [ us_heavy_tracked , engine_combustion , control_manual , us_gatling_gun ] ;
16141: LD_ADDR_LOC 5
16145: PUSH
16146: LD_INT 4
16148: PUSH
16149: LD_INT 1
16151: PUSH
16152: LD_INT 1
16154: PUSH
16155: LD_INT 4
16157: PUSH
16158: EMPTY
16159: LIST
16160: LIST
16161: LIST
16162: LIST
16163: ST_TO_ADDR
// d2 := [ us_heavy_tracked , engine_combustion , control_manual , us_double_gun ] ;
16164: LD_ADDR_LOC 6
16168: PUSH
16169: LD_INT 4
16171: PUSH
16172: LD_INT 1
16174: PUSH
16175: LD_INT 1
16177: PUSH
16178: LD_INT 5
16180: PUSH
16181: EMPTY
16182: LIST
16183: LIST
16184: LIST
16185: LIST
16186: ST_TO_ADDR
// d3 := [ us_heavy_tracked , engine_combustion , control_manual , us_heavy_gun ] ;
16187: LD_ADDR_LOC 7
16191: PUSH
16192: LD_INT 4
16194: PUSH
16195: LD_INT 1
16197: PUSH
16198: LD_INT 1
16200: PUSH
16201: LD_INT 6
16203: PUSH
16204: EMPTY
16205: LIST
16206: LIST
16207: LIST
16208: LIST
16209: ST_TO_ADDR
// d5 := [ us_heavy_tracked , engine_combustion , control_remote , us_gatling_gun ] ;
16210: LD_ADDR_LOC 9
16214: PUSH
16215: LD_INT 4
16217: PUSH
16218: LD_INT 1
16220: PUSH
16221: LD_INT 2
16223: PUSH
16224: LD_INT 4
16226: PUSH
16227: EMPTY
16228: LIST
16229: LIST
16230: LIST
16231: LIST
16232: ST_TO_ADDR
// d6 := [ us_heavy_tracked , engine_combustion , control_remote , us_double_gun ] ;
16233: LD_ADDR_LOC 10
16237: PUSH
16238: LD_INT 4
16240: PUSH
16241: LD_INT 1
16243: PUSH
16244: LD_INT 2
16246: PUSH
16247: LD_INT 5
16249: PUSH
16250: EMPTY
16251: LIST
16252: LIST
16253: LIST
16254: LIST
16255: ST_TO_ADDR
// d7 := [ us_heavy_tracked , engine_combustion , control_remote , us_heavy_gun ] ;
16256: LD_ADDR_LOC 11
16260: PUSH
16261: LD_INT 4
16263: PUSH
16264: LD_INT 1
16266: PUSH
16267: LD_INT 2
16269: PUSH
16270: LD_INT 6
16272: PUSH
16273: EMPTY
16274: LIST
16275: LIST
16276: LIST
16277: LIST
16278: ST_TO_ADDR
// end ;
16279: END
// every 0 0$10 do
16280: GO 16282
16282: DISABLE
// begin defence := FilterAllUnits ( [ [ f_side , ai ] , [ f_control , control_manual ] ] ) ;
16283: LD_ADDR_EXP 139
16287: PUSH
16288: LD_INT 22
16290: PUSH
16291: LD_EXP 6
16295: PUSH
16296: EMPTY
16297: LIST
16298: LIST
16299: PUSH
16300: LD_INT 33
16302: PUSH
16303: LD_INT 1
16305: PUSH
16306: EMPTY
16307: LIST
16308: LIST
16309: PUSH
16310: EMPTY
16311: LIST
16312: LIST
16313: PPUSH
16314: CALL_OW 69
16318: ST_TO_ADDR
// attack := FilterAllUnits ( [ [ f_side , ai ] , [ f_control , control_remote ] ] ) ;
16319: LD_ADDR_EXP 138
16323: PUSH
16324: LD_INT 22
16326: PUSH
16327: LD_EXP 6
16331: PUSH
16332: EMPTY
16333: LIST
16334: LIST
16335: PUSH
16336: LD_INT 33
16338: PUSH
16339: LD_INT 2
16341: PUSH
16342: EMPTY
16343: LIST
16344: LIST
16345: PUSH
16346: EMPTY
16347: LIST
16348: LIST
16349: PPUSH
16350: CALL_OW 69
16354: ST_TO_ADDR
// end ;
16355: END
// var fact1 , fact2 ; every 0 0$1 do
16356: GO 16358
16358: DISABLE
// begin fact1 := fact isect b3 ;
16359: LD_ADDR_LOC 15
16363: PUSH
16364: LD_EXP 124
16368: PUSH
16369: LD_EXP 130
16373: ISECT
16374: ST_TO_ADDR
// if fact1 then
16375: LD_LOC 15
16379: IFFALSE 16395
// fact1 := fact1 [ 1 ] ;
16381: LD_ADDR_LOC 15
16385: PUSH
16386: LD_LOC 15
16390: PUSH
16391: LD_INT 1
16393: ARRAY
16394: ST_TO_ADDR
// fact2 := fact isect b4 ;
16395: LD_ADDR_LOC 16
16399: PUSH
16400: LD_EXP 124
16404: PUSH
16405: LD_EXP 131
16409: ISECT
16410: ST_TO_ADDR
// if fact2 then
16411: LD_LOC 16
16415: IFFALSE 16431
// fact2 := fact2 [ 1 ] ;
16417: LD_ADDR_LOC 16
16421: PUSH
16422: LD_LOC 16
16426: PUSH
16427: LD_INT 1
16429: ARRAY
16430: ST_TO_ADDR
// enable ;
16431: ENABLE
// end ;
16432: END
// every 0 0$5 trigger IsOk ( fact1 ) and fact1 in fact and IsIdle ( fact1 ) do var a , fact_attack ;
16433: LD_LOC 15
16437: PPUSH
16438: CALL_OW 302
16442: PUSH
16443: LD_LOC 15
16447: PUSH
16448: LD_EXP 124
16452: IN
16453: AND
16454: PUSH
16455: LD_LOC 15
16459: PPUSH
16460: CALL_OW 316
16464: AND
16465: IFFALSE 17487
16467: GO 16469
16469: DISABLE
16470: LD_INT 0
16472: PPUSH
16473: PPUSH
// begin fact_attack := FilterAllUnits ( [ [ f_side , ai ] , [ f_control , control_remote ] ] ) ;
16474: LD_ADDR_VAR 0 2
16478: PUSH
16479: LD_INT 22
16481: PUSH
16482: LD_EXP 6
16486: PUSH
16487: EMPTY
16488: LIST
16489: LIST
16490: PUSH
16491: LD_INT 33
16493: PUSH
16494: LD_INT 2
16496: PUSH
16497: EMPTY
16498: LIST
16499: LIST
16500: PUSH
16501: EMPTY
16502: LIST
16503: LIST
16504: PPUSH
16505: CALL_OW 69
16509: ST_TO_ADDR
// case true of ( tick < 15 15$0 and defence < 3 and CanBeConstructed ( fact1 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ) :
16510: LD_INT 1
16512: PUSH
16513: LD_OWVAR 1
16517: PUSH
16518: LD_INT 31500
16520: LESS
16521: PUSH
16522: LD_EXP 139
16526: PUSH
16527: LD_INT 3
16529: LESS
16530: AND
16531: PUSH
16532: LD_LOC 15
16536: PPUSH
16537: LD_LOC 5
16541: PUSH
16542: LD_INT 1
16544: ARRAY
16545: PPUSH
16546: LD_LOC 5
16550: PUSH
16551: LD_INT 2
16553: ARRAY
16554: PPUSH
16555: LD_LOC 5
16559: PUSH
16560: LD_INT 3
16562: ARRAY
16563: PPUSH
16564: LD_LOC 5
16568: PUSH
16569: LD_INT 4
16571: ARRAY
16572: PPUSH
16573: CALL_OW 448
16577: AND
16578: DOUBLE
16579: EQUAL
16580: IFTRUE 16584
16582: GO 16632
16584: POP
// begin ComConstruct ( fact1 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ;
16585: LD_LOC 15
16589: PPUSH
16590: LD_LOC 5
16594: PUSH
16595: LD_INT 1
16597: ARRAY
16598: PPUSH
16599: LD_LOC 5
16603: PUSH
16604: LD_INT 2
16606: ARRAY
16607: PPUSH
16608: LD_LOC 5
16612: PUSH
16613: LD_INT 3
16615: ARRAY
16616: PPUSH
16617: LD_LOC 5
16621: PUSH
16622: LD_INT 4
16624: ARRAY
16625: PPUSH
16626: CALL_OW 125
// end ; ( tick > 15 15$0 and tick < 30 30$0 and defence < 3 and CanBeConstructed ( fact1 , d2 [ 1 ] , d2 [ 2 ] , d2 [ 3 ] , d2 [ 4 ] ) ) :
16630: GO 17486
16632: LD_OWVAR 1
16636: PUSH
16637: LD_INT 31500
16639: GREATER
16640: PUSH
16641: LD_OWVAR 1
16645: PUSH
16646: LD_INT 63000
16648: LESS
16649: AND
16650: PUSH
16651: LD_EXP 139
16655: PUSH
16656: LD_INT 3
16658: LESS
16659: AND
16660: PUSH
16661: LD_LOC 15
16665: PPUSH
16666: LD_LOC 6
16670: PUSH
16671: LD_INT 1
16673: ARRAY
16674: PPUSH
16675: LD_LOC 6
16679: PUSH
16680: LD_INT 2
16682: ARRAY
16683: PPUSH
16684: LD_LOC 6
16688: PUSH
16689: LD_INT 3
16691: ARRAY
16692: PPUSH
16693: LD_LOC 6
16697: PUSH
16698: LD_INT 4
16700: ARRAY
16701: PPUSH
16702: CALL_OW 448
16706: AND
16707: DOUBLE
16708: EQUAL
16709: IFTRUE 16713
16711: GO 16761
16713: POP
// begin ComConstruct ( fact1 , d2 [ 1 ] , d2 [ 2 ] , d2 [ 3 ] , d2 [ 4 ] ) ;
16714: LD_LOC 15
16718: PPUSH
16719: LD_LOC 6
16723: PUSH
16724: LD_INT 1
16726: ARRAY
16727: PPUSH
16728: LD_LOC 6
16732: PUSH
16733: LD_INT 2
16735: ARRAY
16736: PPUSH
16737: LD_LOC 6
16741: PUSH
16742: LD_INT 3
16744: ARRAY
16745: PPUSH
16746: LD_LOC 6
16750: PUSH
16751: LD_INT 4
16753: ARRAY
16754: PPUSH
16755: CALL_OW 125
// end ; ( tick > 30 30$0 and defence < 2 and CanBeConstructed ( fact1 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ) :
16759: GO 17486
16761: LD_OWVAR 1
16765: PUSH
16766: LD_INT 63000
16768: GREATER
16769: PUSH
16770: LD_EXP 139
16774: PUSH
16775: LD_INT 2
16777: LESS
16778: AND
16779: PUSH
16780: LD_LOC 15
16784: PPUSH
16785: LD_LOC 5
16789: PUSH
16790: LD_INT 1
16792: ARRAY
16793: PPUSH
16794: LD_LOC 5
16798: PUSH
16799: LD_INT 2
16801: ARRAY
16802: PPUSH
16803: LD_LOC 5
16807: PUSH
16808: LD_INT 3
16810: ARRAY
16811: PPUSH
16812: LD_LOC 5
16816: PUSH
16817: LD_INT 4
16819: ARRAY
16820: PPUSH
16821: CALL_OW 448
16825: AND
16826: DOUBLE
16827: EQUAL
16828: IFTRUE 16832
16830: GO 16880
16832: POP
// begin ComConstruct ( fact1 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ;
16833: LD_LOC 15
16837: PPUSH
16838: LD_LOC 5
16842: PUSH
16843: LD_INT 1
16845: ARRAY
16846: PPUSH
16847: LD_LOC 5
16851: PUSH
16852: LD_INT 2
16854: ARRAY
16855: PPUSH
16856: LD_LOC 5
16860: PUSH
16861: LD_INT 3
16863: ARRAY
16864: PPUSH
16865: LD_LOC 5
16869: PUSH
16870: LD_INT 4
16872: ARRAY
16873: PPUSH
16874: CALL_OW 125
// end ; ( tick > 30 30$0 and defence < 4 and CanBeConstructed ( fact1 , d3 [ 1 ] , d3 [ 2 ] , d3 [ 3 ] , d3 [ 4 ] ) ) :
16878: GO 17486
16880: LD_OWVAR 1
16884: PUSH
16885: LD_INT 63000
16887: GREATER
16888: PUSH
16889: LD_EXP 139
16893: PUSH
16894: LD_INT 4
16896: LESS
16897: AND
16898: PUSH
16899: LD_LOC 15
16903: PPUSH
16904: LD_LOC 7
16908: PUSH
16909: LD_INT 1
16911: ARRAY
16912: PPUSH
16913: LD_LOC 7
16917: PUSH
16918: LD_INT 2
16920: ARRAY
16921: PPUSH
16922: LD_LOC 7
16926: PUSH
16927: LD_INT 3
16929: ARRAY
16930: PPUSH
16931: LD_LOC 7
16935: PUSH
16936: LD_INT 4
16938: ARRAY
16939: PPUSH
16940: CALL_OW 448
16944: AND
16945: DOUBLE
16946: EQUAL
16947: IFTRUE 16951
16949: GO 16999
16951: POP
// begin ComConstruct ( fact1 , d3 [ 1 ] , d3 [ 2 ] , d3 [ 3 ] , d3 [ 4 ] ) ;
16952: LD_LOC 15
16956: PPUSH
16957: LD_LOC 7
16961: PUSH
16962: LD_INT 1
16964: ARRAY
16965: PPUSH
16966: LD_LOC 7
16970: PUSH
16971: LD_INT 2
16973: ARRAY
16974: PPUSH
16975: LD_LOC 7
16979: PUSH
16980: LD_INT 3
16982: ARRAY
16983: PPUSH
16984: LD_LOC 7
16988: PUSH
16989: LD_INT 4
16991: ARRAY
16992: PPUSH
16993: CALL_OW 125
// end ; ( tick < 20 20$0 and fact_attack < 4 and CanBeConstructed ( fact1 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ) :
16997: GO 17486
16999: LD_OWVAR 1
17003: PUSH
17004: LD_INT 42000
17006: LESS
17007: PUSH
17008: LD_VAR 0 2
17012: PUSH
17013: LD_INT 4
17015: LESS
17016: AND
17017: PUSH
17018: LD_LOC 15
17022: PPUSH
17023: LD_LOC 10
17027: PUSH
17028: LD_INT 1
17030: ARRAY
17031: PPUSH
17032: LD_LOC 10
17036: PUSH
17037: LD_INT 2
17039: ARRAY
17040: PPUSH
17041: LD_LOC 10
17045: PUSH
17046: LD_INT 3
17048: ARRAY
17049: PPUSH
17050: LD_LOC 10
17054: PUSH
17055: LD_INT 4
17057: ARRAY
17058: PPUSH
17059: CALL_OW 448
17063: AND
17064: DOUBLE
17065: EQUAL
17066: IFTRUE 17070
17068: GO 17118
17070: POP
// begin ComConstruct ( fact1 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ;
17071: LD_LOC 15
17075: PPUSH
17076: LD_LOC 10
17080: PUSH
17081: LD_INT 1
17083: ARRAY
17084: PPUSH
17085: LD_LOC 10
17089: PUSH
17090: LD_INT 2
17092: ARRAY
17093: PPUSH
17094: LD_LOC 10
17098: PUSH
17099: LD_INT 3
17101: ARRAY
17102: PPUSH
17103: LD_LOC 10
17107: PUSH
17108: LD_INT 4
17110: ARRAY
17111: PPUSH
17112: CALL_OW 125
// end ; ( tick > 20 20$0 and tick < 30 30$0 and fact_attack < 3 and CanBeConstructed ( fact1 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ) :
17116: GO 17486
17118: LD_OWVAR 1
17122: PUSH
17123: LD_INT 42000
17125: GREATER
17126: PUSH
17127: LD_OWVAR 1
17131: PUSH
17132: LD_INT 63000
17134: LESS
17135: AND
17136: PUSH
17137: LD_VAR 0 2
17141: PUSH
17142: LD_INT 3
17144: LESS
17145: AND
17146: PUSH
17147: LD_LOC 15
17151: PPUSH
17152: LD_LOC 10
17156: PUSH
17157: LD_INT 1
17159: ARRAY
17160: PPUSH
17161: LD_LOC 10
17165: PUSH
17166: LD_INT 2
17168: ARRAY
17169: PPUSH
17170: LD_LOC 10
17174: PUSH
17175: LD_INT 3
17177: ARRAY
17178: PPUSH
17179: LD_LOC 10
17183: PUSH
17184: LD_INT 4
17186: ARRAY
17187: PPUSH
17188: CALL_OW 448
17192: AND
17193: DOUBLE
17194: EQUAL
17195: IFTRUE 17199
17197: GO 17247
17199: POP
// begin ComConstruct ( fact1 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ;
17200: LD_LOC 15
17204: PPUSH
17205: LD_LOC 10
17209: PUSH
17210: LD_INT 1
17212: ARRAY
17213: PPUSH
17214: LD_LOC 10
17218: PUSH
17219: LD_INT 2
17221: ARRAY
17222: PPUSH
17223: LD_LOC 10
17227: PUSH
17228: LD_INT 3
17230: ARRAY
17231: PPUSH
17232: LD_LOC 10
17236: PUSH
17237: LD_INT 4
17239: ARRAY
17240: PPUSH
17241: CALL_OW 125
// end ; ( tick > 30 30$0 and fact_attack < 4 and CanBeConstructed ( fact1 , d7 [ 1 ] , d7 [ 2 ] , d7 [ 3 ] , d7 [ 4 ] ) ) :
17245: GO 17486
17247: LD_OWVAR 1
17251: PUSH
17252: LD_INT 63000
17254: GREATER
17255: PUSH
17256: LD_VAR 0 2
17260: PUSH
17261: LD_INT 4
17263: LESS
17264: AND
17265: PUSH
17266: LD_LOC 15
17270: PPUSH
17271: LD_LOC 11
17275: PUSH
17276: LD_INT 1
17278: ARRAY
17279: PPUSH
17280: LD_LOC 11
17284: PUSH
17285: LD_INT 2
17287: ARRAY
17288: PPUSH
17289: LD_LOC 11
17293: PUSH
17294: LD_INT 3
17296: ARRAY
17297: PPUSH
17298: LD_LOC 11
17302: PUSH
17303: LD_INT 4
17305: ARRAY
17306: PPUSH
17307: CALL_OW 448
17311: AND
17312: DOUBLE
17313: EQUAL
17314: IFTRUE 17318
17316: GO 17366
17318: POP
// begin ComConstruct ( fact1 , d7 [ 1 ] , d7 [ 2 ] , d7 [ 3 ] , d7 [ 4 ] ) ;
17319: LD_LOC 15
17323: PPUSH
17324: LD_LOC 11
17328: PUSH
17329: LD_INT 1
17331: ARRAY
17332: PPUSH
17333: LD_LOC 11
17337: PUSH
17338: LD_INT 2
17340: ARRAY
17341: PPUSH
17342: LD_LOC 11
17346: PUSH
17347: LD_INT 3
17349: ARRAY
17350: PPUSH
17351: LD_LOC 11
17355: PUSH
17356: LD_INT 4
17358: ARRAY
17359: PPUSH
17360: CALL_OW 125
// end ; ( tick > 30 30$0 and fact_attack < 5 and CanBeConstructed ( fact1 , d5 [ 1 ] , d5 [ 2 ] , d5 [ 3 ] , d5 [ 4 ] ) ) :
17364: GO 17486
17366: LD_OWVAR 1
17370: PUSH
17371: LD_INT 63000
17373: GREATER
17374: PUSH
17375: LD_VAR 0 2
17379: PUSH
17380: LD_INT 5
17382: LESS
17383: AND
17384: PUSH
17385: LD_LOC 15
17389: PPUSH
17390: LD_LOC 9
17394: PUSH
17395: LD_INT 1
17397: ARRAY
17398: PPUSH
17399: LD_LOC 9
17403: PUSH
17404: LD_INT 2
17406: ARRAY
17407: PPUSH
17408: LD_LOC 9
17412: PUSH
17413: LD_INT 3
17415: ARRAY
17416: PPUSH
17417: LD_LOC 9
17421: PUSH
17422: LD_INT 4
17424: ARRAY
17425: PPUSH
17426: CALL_OW 448
17430: AND
17431: DOUBLE
17432: EQUAL
17433: IFTRUE 17437
17435: GO 17485
17437: POP
// begin ComConstruct ( fact1 , d5 [ 1 ] , d5 [ 2 ] , d5 [ 3 ] , d5 [ 4 ] ) ;
17438: LD_LOC 15
17442: PPUSH
17443: LD_LOC 9
17447: PUSH
17448: LD_INT 1
17450: ARRAY
17451: PPUSH
17452: LD_LOC 9
17456: PUSH
17457: LD_INT 2
17459: ARRAY
17460: PPUSH
17461: LD_LOC 9
17465: PUSH
17466: LD_INT 3
17468: ARRAY
17469: PPUSH
17470: LD_LOC 9
17474: PUSH
17475: LD_INT 4
17477: ARRAY
17478: PPUSH
17479: CALL_OW 125
// end ; end ;
17483: GO 17486
17485: POP
// enable ;
17486: ENABLE
// end ;
17487: PPOPN 2
17489: END
// every 0 0$5 trigger IsOk ( fact2 ) and fact2 in fact and IsIdle ( fact2 ) do var a , fact_attack ;
17490: LD_LOC 16
17494: PPUSH
17495: CALL_OW 302
17499: PUSH
17500: LD_LOC 16
17504: PUSH
17505: LD_EXP 124
17509: IN
17510: AND
17511: PUSH
17512: LD_LOC 16
17516: PPUSH
17517: CALL_OW 316
17521: AND
17522: IFFALSE 18544
17524: GO 17526
17526: DISABLE
17527: LD_INT 0
17529: PPUSH
17530: PPUSH
// begin fact_attack := FilterAllUnits ( [ [ f_side , ai ] , [ f_control , control_remote ] ] ) ;
17531: LD_ADDR_VAR 0 2
17535: PUSH
17536: LD_INT 22
17538: PUSH
17539: LD_EXP 6
17543: PUSH
17544: EMPTY
17545: LIST
17546: LIST
17547: PUSH
17548: LD_INT 33
17550: PUSH
17551: LD_INT 2
17553: PUSH
17554: EMPTY
17555: LIST
17556: LIST
17557: PUSH
17558: EMPTY
17559: LIST
17560: LIST
17561: PPUSH
17562: CALL_OW 69
17566: ST_TO_ADDR
// case true of ( tick < 15 15$0 and defence < 3 and CanBeConstructed ( fact2 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ) :
17567: LD_INT 1
17569: PUSH
17570: LD_OWVAR 1
17574: PUSH
17575: LD_INT 31500
17577: LESS
17578: PUSH
17579: LD_EXP 139
17583: PUSH
17584: LD_INT 3
17586: LESS
17587: AND
17588: PUSH
17589: LD_LOC 16
17593: PPUSH
17594: LD_LOC 5
17598: PUSH
17599: LD_INT 1
17601: ARRAY
17602: PPUSH
17603: LD_LOC 5
17607: PUSH
17608: LD_INT 2
17610: ARRAY
17611: PPUSH
17612: LD_LOC 5
17616: PUSH
17617: LD_INT 3
17619: ARRAY
17620: PPUSH
17621: LD_LOC 5
17625: PUSH
17626: LD_INT 4
17628: ARRAY
17629: PPUSH
17630: CALL_OW 448
17634: AND
17635: DOUBLE
17636: EQUAL
17637: IFTRUE 17641
17639: GO 17689
17641: POP
// begin ComConstruct ( fact2 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ;
17642: LD_LOC 16
17646: PPUSH
17647: LD_LOC 5
17651: PUSH
17652: LD_INT 1
17654: ARRAY
17655: PPUSH
17656: LD_LOC 5
17660: PUSH
17661: LD_INT 2
17663: ARRAY
17664: PPUSH
17665: LD_LOC 5
17669: PUSH
17670: LD_INT 3
17672: ARRAY
17673: PPUSH
17674: LD_LOC 5
17678: PUSH
17679: LD_INT 4
17681: ARRAY
17682: PPUSH
17683: CALL_OW 125
// end ; ( tick > 15 15$0 and tick < 30 30$0 and defence < 3 and CanBeConstructed ( fact2 , d2 [ 1 ] , d2 [ 2 ] , d2 [ 3 ] , d2 [ 4 ] ) ) :
17687: GO 18543
17689: LD_OWVAR 1
17693: PUSH
17694: LD_INT 31500
17696: GREATER
17697: PUSH
17698: LD_OWVAR 1
17702: PUSH
17703: LD_INT 63000
17705: LESS
17706: AND
17707: PUSH
17708: LD_EXP 139
17712: PUSH
17713: LD_INT 3
17715: LESS
17716: AND
17717: PUSH
17718: LD_LOC 16
17722: PPUSH
17723: LD_LOC 6
17727: PUSH
17728: LD_INT 1
17730: ARRAY
17731: PPUSH
17732: LD_LOC 6
17736: PUSH
17737: LD_INT 2
17739: ARRAY
17740: PPUSH
17741: LD_LOC 6
17745: PUSH
17746: LD_INT 3
17748: ARRAY
17749: PPUSH
17750: LD_LOC 6
17754: PUSH
17755: LD_INT 4
17757: ARRAY
17758: PPUSH
17759: CALL_OW 448
17763: AND
17764: DOUBLE
17765: EQUAL
17766: IFTRUE 17770
17768: GO 17818
17770: POP
// begin ComConstruct ( fact2 , d2 [ 1 ] , d2 [ 2 ] , d2 [ 3 ] , d2 [ 4 ] ) ;
17771: LD_LOC 16
17775: PPUSH
17776: LD_LOC 6
17780: PUSH
17781: LD_INT 1
17783: ARRAY
17784: PPUSH
17785: LD_LOC 6
17789: PUSH
17790: LD_INT 2
17792: ARRAY
17793: PPUSH
17794: LD_LOC 6
17798: PUSH
17799: LD_INT 3
17801: ARRAY
17802: PPUSH
17803: LD_LOC 6
17807: PUSH
17808: LD_INT 4
17810: ARRAY
17811: PPUSH
17812: CALL_OW 125
// end ; ( tick > 30 30$0 and defence < 2 and CanBeConstructed ( fact2 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ) :
17816: GO 18543
17818: LD_OWVAR 1
17822: PUSH
17823: LD_INT 63000
17825: GREATER
17826: PUSH
17827: LD_EXP 139
17831: PUSH
17832: LD_INT 2
17834: LESS
17835: AND
17836: PUSH
17837: LD_LOC 16
17841: PPUSH
17842: LD_LOC 5
17846: PUSH
17847: LD_INT 1
17849: ARRAY
17850: PPUSH
17851: LD_LOC 5
17855: PUSH
17856: LD_INT 2
17858: ARRAY
17859: PPUSH
17860: LD_LOC 5
17864: PUSH
17865: LD_INT 3
17867: ARRAY
17868: PPUSH
17869: LD_LOC 5
17873: PUSH
17874: LD_INT 4
17876: ARRAY
17877: PPUSH
17878: CALL_OW 448
17882: AND
17883: DOUBLE
17884: EQUAL
17885: IFTRUE 17889
17887: GO 17937
17889: POP
// begin ComConstruct ( fact2 , d1 [ 1 ] , d1 [ 2 ] , d1 [ 3 ] , d1 [ 4 ] ) ;
17890: LD_LOC 16
17894: PPUSH
17895: LD_LOC 5
17899: PUSH
17900: LD_INT 1
17902: ARRAY
17903: PPUSH
17904: LD_LOC 5
17908: PUSH
17909: LD_INT 2
17911: ARRAY
17912: PPUSH
17913: LD_LOC 5
17917: PUSH
17918: LD_INT 3
17920: ARRAY
17921: PPUSH
17922: LD_LOC 5
17926: PUSH
17927: LD_INT 4
17929: ARRAY
17930: PPUSH
17931: CALL_OW 125
// end ; ( tick > 30 30$0 and defence < 4 and CanBeConstructed ( fact2 , d3 [ 1 ] , d3 [ 2 ] , d3 [ 3 ] , d3 [ 4 ] ) ) :
17935: GO 18543
17937: LD_OWVAR 1
17941: PUSH
17942: LD_INT 63000
17944: GREATER
17945: PUSH
17946: LD_EXP 139
17950: PUSH
17951: LD_INT 4
17953: LESS
17954: AND
17955: PUSH
17956: LD_LOC 16
17960: PPUSH
17961: LD_LOC 7
17965: PUSH
17966: LD_INT 1
17968: ARRAY
17969: PPUSH
17970: LD_LOC 7
17974: PUSH
17975: LD_INT 2
17977: ARRAY
17978: PPUSH
17979: LD_LOC 7
17983: PUSH
17984: LD_INT 3
17986: ARRAY
17987: PPUSH
17988: LD_LOC 7
17992: PUSH
17993: LD_INT 4
17995: ARRAY
17996: PPUSH
17997: CALL_OW 448
18001: AND
18002: DOUBLE
18003: EQUAL
18004: IFTRUE 18008
18006: GO 18056
18008: POP
// begin ComConstruct ( fact2 , d3 [ 1 ] , d3 [ 2 ] , d3 [ 3 ] , d3 [ 4 ] ) ;
18009: LD_LOC 16
18013: PPUSH
18014: LD_LOC 7
18018: PUSH
18019: LD_INT 1
18021: ARRAY
18022: PPUSH
18023: LD_LOC 7
18027: PUSH
18028: LD_INT 2
18030: ARRAY
18031: PPUSH
18032: LD_LOC 7
18036: PUSH
18037: LD_INT 3
18039: ARRAY
18040: PPUSH
18041: LD_LOC 7
18045: PUSH
18046: LD_INT 4
18048: ARRAY
18049: PPUSH
18050: CALL_OW 125
// end ; ( tick < 15 15$0 and fact_attack < 4 and CanBeConstructed ( fact2 , d5 [ 1 ] , d5 [ 2 ] , d5 [ 3 ] , d5 [ 4 ] ) ) :
18054: GO 18543
18056: LD_OWVAR 1
18060: PUSH
18061: LD_INT 31500
18063: LESS
18064: PUSH
18065: LD_VAR 0 2
18069: PUSH
18070: LD_INT 4
18072: LESS
18073: AND
18074: PUSH
18075: LD_LOC 16
18079: PPUSH
18080: LD_LOC 9
18084: PUSH
18085: LD_INT 1
18087: ARRAY
18088: PPUSH
18089: LD_LOC 9
18093: PUSH
18094: LD_INT 2
18096: ARRAY
18097: PPUSH
18098: LD_LOC 9
18102: PUSH
18103: LD_INT 3
18105: ARRAY
18106: PPUSH
18107: LD_LOC 9
18111: PUSH
18112: LD_INT 4
18114: ARRAY
18115: PPUSH
18116: CALL_OW 448
18120: AND
18121: DOUBLE
18122: EQUAL
18123: IFTRUE 18127
18125: GO 18175
18127: POP
// begin ComConstruct ( fact2 , d5 [ 1 ] , d5 [ 2 ] , d5 [ 3 ] , d5 [ 4 ] ) ;
18128: LD_LOC 16
18132: PPUSH
18133: LD_LOC 9
18137: PUSH
18138: LD_INT 1
18140: ARRAY
18141: PPUSH
18142: LD_LOC 9
18146: PUSH
18147: LD_INT 2
18149: ARRAY
18150: PPUSH
18151: LD_LOC 9
18155: PUSH
18156: LD_INT 3
18158: ARRAY
18159: PPUSH
18160: LD_LOC 9
18164: PUSH
18165: LD_INT 4
18167: ARRAY
18168: PPUSH
18169: CALL_OW 125
// end ; ( tick > 15 15$0 and tick < 30 30$0 and fact_attack < 3 and CanBeConstructed ( fact2 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ) :
18173: GO 18543
18175: LD_OWVAR 1
18179: PUSH
18180: LD_INT 31500
18182: GREATER
18183: PUSH
18184: LD_OWVAR 1
18188: PUSH
18189: LD_INT 63000
18191: LESS
18192: AND
18193: PUSH
18194: LD_VAR 0 2
18198: PUSH
18199: LD_INT 3
18201: LESS
18202: AND
18203: PUSH
18204: LD_LOC 16
18208: PPUSH
18209: LD_LOC 10
18213: PUSH
18214: LD_INT 1
18216: ARRAY
18217: PPUSH
18218: LD_LOC 10
18222: PUSH
18223: LD_INT 2
18225: ARRAY
18226: PPUSH
18227: LD_LOC 10
18231: PUSH
18232: LD_INT 3
18234: ARRAY
18235: PPUSH
18236: LD_LOC 10
18240: PUSH
18241: LD_INT 4
18243: ARRAY
18244: PPUSH
18245: CALL_OW 448
18249: AND
18250: DOUBLE
18251: EQUAL
18252: IFTRUE 18256
18254: GO 18304
18256: POP
// begin ComConstruct ( fact2 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ;
18257: LD_LOC 16
18261: PPUSH
18262: LD_LOC 10
18266: PUSH
18267: LD_INT 1
18269: ARRAY
18270: PPUSH
18271: LD_LOC 10
18275: PUSH
18276: LD_INT 2
18278: ARRAY
18279: PPUSH
18280: LD_LOC 10
18284: PUSH
18285: LD_INT 3
18287: ARRAY
18288: PPUSH
18289: LD_LOC 10
18293: PUSH
18294: LD_INT 4
18296: ARRAY
18297: PPUSH
18298: CALL_OW 125
// end ; ( tick > 30 30$0 and fact_attack < 2 and CanBeConstructed ( fact2 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ) :
18302: GO 18543
18304: LD_OWVAR 1
18308: PUSH
18309: LD_INT 63000
18311: GREATER
18312: PUSH
18313: LD_VAR 0 2
18317: PUSH
18318: LD_INT 2
18320: LESS
18321: AND
18322: PUSH
18323: LD_LOC 16
18327: PPUSH
18328: LD_LOC 10
18332: PUSH
18333: LD_INT 1
18335: ARRAY
18336: PPUSH
18337: LD_LOC 10
18341: PUSH
18342: LD_INT 2
18344: ARRAY
18345: PPUSH
18346: LD_LOC 10
18350: PUSH
18351: LD_INT 3
18353: ARRAY
18354: PPUSH
18355: LD_LOC 10
18359: PUSH
18360: LD_INT 4
18362: ARRAY
18363: PPUSH
18364: CALL_OW 448
18368: AND
18369: DOUBLE
18370: EQUAL
18371: IFTRUE 18375
18373: GO 18423
18375: POP
// begin ComConstruct ( fact2 , d6 [ 1 ] , d6 [ 2 ] , d6 [ 3 ] , d6 [ 4 ] ) ;
18376: LD_LOC 16
18380: PPUSH
18381: LD_LOC 10
18385: PUSH
18386: LD_INT 1
18388: ARRAY
18389: PPUSH
18390: LD_LOC 10
18394: PUSH
18395: LD_INT 2
18397: ARRAY
18398: PPUSH
18399: LD_LOC 10
18403: PUSH
18404: LD_INT 3
18406: ARRAY
18407: PPUSH
18408: LD_LOC 10
18412: PUSH
18413: LD_INT 4
18415: ARRAY
18416: PPUSH
18417: CALL_OW 125
// end ; ( tick > 30 30$0 and fact_attack < 4 and CanBeConstructed ( fact2 , d7 [ 1 ] , d7 [ 2 ] , d7 [ 3 ] , d7 [ 4 ] ) ) :
18421: GO 18543
18423: LD_OWVAR 1
18427: PUSH
18428: LD_INT 63000
18430: GREATER
18431: PUSH
18432: LD_VAR 0 2
18436: PUSH
18437: LD_INT 4
18439: LESS
18440: AND
18441: PUSH
18442: LD_LOC 16
18446: PPUSH
18447: LD_LOC 11
18451: PUSH
18452: LD_INT 1
18454: ARRAY
18455: PPUSH
18456: LD_LOC 11
18460: PUSH
18461: LD_INT 2
18463: ARRAY
18464: PPUSH
18465: LD_LOC 11
18469: PUSH
18470: LD_INT 3
18472: ARRAY
18473: PPUSH
18474: LD_LOC 11
18478: PUSH
18479: LD_INT 4
18481: ARRAY
18482: PPUSH
18483: CALL_OW 448
18487: AND
18488: DOUBLE
18489: EQUAL
18490: IFTRUE 18494
18492: GO 18542
18494: POP
// begin ComConstruct ( fact2 , d7 [ 1 ] , d7 [ 2 ] , d7 [ 3 ] , d7 [ 4 ] ) ;
18495: LD_LOC 16
18499: PPUSH
18500: LD_LOC 11
18504: PUSH
18505: LD_INT 1
18507: ARRAY
18508: PPUSH
18509: LD_LOC 11
18513: PUSH
18514: LD_INT 2
18516: ARRAY
18517: PPUSH
18518: LD_LOC 11
18522: PUSH
18523: LD_INT 3
18525: ARRAY
18526: PPUSH
18527: LD_LOC 11
18531: PUSH
18532: LD_INT 4
18534: ARRAY
18535: PPUSH
18536: CALL_OW 125
// end ; end ;
18540: GO 18543
18542: POP
// enable ;
18543: ENABLE
// end ; end_of_file
18544: PPOPN 2
18546: END
// export builds1 , builds2 , builds3 , builds4 , builds5 ; export aici1 , aici2 , aici3 , aici4 , aici5 ; export a1eng ; export can_rebuild ; export can_repair ; export aici ; export stavi ; var upgradeable ; var trough_upgrade ; function UpgradeableTo ( b , up ) ; var i ; begin
18547: LD_INT 0
18549: PPUSH
18550: PPUSH
// result := 0 ;
18551: LD_ADDR_VAR 0 3
18555: PUSH
18556: LD_INT 0
18558: ST_TO_ADDR
// for i := 1 to upgradeable do
18559: LD_ADDR_VAR 0 4
18563: PUSH
18564: DOUBLE
18565: LD_INT 1
18567: DEC
18568: ST_TO_ADDR
18569: LD_LOC 17
18573: PUSH
18574: FOR_TO
18575: IFFALSE 18627
// if b = upgradeable [ i ] and up = trough_upgrade [ i ] then
18577: LD_VAR 0 1
18581: PUSH
18582: LD_LOC 17
18586: PUSH
18587: LD_VAR 0 4
18591: ARRAY
18592: EQUAL
18593: PUSH
18594: LD_VAR 0 2
18598: PUSH
18599: LD_LOC 18
18603: PUSH
18604: LD_VAR 0 4
18608: ARRAY
18609: EQUAL
18610: AND
18611: IFFALSE 18625
// begin result := up ;
18613: LD_ADDR_VAR 0 3
18617: PUSH
18618: LD_VAR 0 2
18622: ST_TO_ADDR
// break ;
18623: GO 18627
// end ;
18625: GO 18574
18627: POP
18628: POP
// end ;
18629: LD_VAR 0 3
18633: RET
// function IsUpgraded ( b ) ; begin
18634: LD_INT 0
18636: PPUSH
// result := 0 ;
18637: LD_ADDR_VAR 0 2
18641: PUSH
18642: LD_INT 0
18644: ST_TO_ADDR
// case b of trough_upgrade [ 1 ] :
18645: LD_VAR 0 1
18649: PUSH
18650: LD_LOC 18
18654: PUSH
18655: LD_INT 1
18657: ARRAY
18658: DOUBLE
18659: EQUAL
18660: IFTRUE 18664
18662: GO 18681
18664: POP
// result := upgradeable [ 1 ] ; trough_upgrade [ 2 ] :
18665: LD_ADDR_VAR 0 2
18669: PUSH
18670: LD_LOC 17
18674: PUSH
18675: LD_INT 1
18677: ARRAY
18678: ST_TO_ADDR
18679: GO 18806
18681: LD_LOC 18
18685: PUSH
18686: LD_INT 2
18688: ARRAY
18689: DOUBLE
18690: EQUAL
18691: IFTRUE 18695
18693: GO 18712
18695: POP
// result := upgradeable [ 2 ] ; trough_upgrade [ 3 ] :
18696: LD_ADDR_VAR 0 2
18700: PUSH
18701: LD_LOC 17
18705: PUSH
18706: LD_INT 2
18708: ARRAY
18709: ST_TO_ADDR
18710: GO 18806
18712: LD_LOC 18
18716: PUSH
18717: LD_INT 3
18719: ARRAY
18720: DOUBLE
18721: EQUAL
18722: IFTRUE 18726
18724: GO 18743
18726: POP
// result := upgradeable [ 3 ] ; trough_upgrade [ 4 ] :
18727: LD_ADDR_VAR 0 2
18731: PUSH
18732: LD_LOC 17
18736: PUSH
18737: LD_INT 3
18739: ARRAY
18740: ST_TO_ADDR
18741: GO 18806
18743: LD_LOC 18
18747: PUSH
18748: LD_INT 4
18750: ARRAY
18751: DOUBLE
18752: EQUAL
18753: IFTRUE 18757
18755: GO 18774
18757: POP
// result := upgradeable [ 4 ] ; trough_upgrade [ 5 ] :
18758: LD_ADDR_VAR 0 2
18762: PUSH
18763: LD_LOC 17
18767: PUSH
18768: LD_INT 4
18770: ARRAY
18771: ST_TO_ADDR
18772: GO 18806
18774: LD_LOC 18
18778: PUSH
18779: LD_INT 5
18781: ARRAY
18782: DOUBLE
18783: EQUAL
18784: IFTRUE 18788
18786: GO 18805
18788: POP
// result := upgradeable [ 5 ] ; end ;
18789: LD_ADDR_VAR 0 2
18793: PUSH
18794: LD_LOC 17
18798: PUSH
18799: LD_INT 5
18801: ARRAY
18802: ST_TO_ADDR
18803: GO 18806
18805: POP
// end ;
18806: LD_VAR 0 2
18810: RET
// function BasicFrom ( b ) ; begin
18811: LD_INT 0
18813: PPUSH
// result := b ;
18814: LD_ADDR_VAR 0 2
18818: PUSH
18819: LD_VAR 0 1
18823: ST_TO_ADDR
// case b of trough_upgrade [ 1 ] :
18824: LD_VAR 0 1
18828: PUSH
18829: LD_LOC 18
18833: PUSH
18834: LD_INT 1
18836: ARRAY
18837: DOUBLE
18838: EQUAL
18839: IFTRUE 18843
18841: GO 18860
18843: POP
// result := upgradeable [ 1 ] ; trough_upgrade [ 2 ] :
18844: LD_ADDR_VAR 0 2
18848: PUSH
18849: LD_LOC 17
18853: PUSH
18854: LD_INT 1
18856: ARRAY
18857: ST_TO_ADDR
18858: GO 18985
18860: LD_LOC 18
18864: PUSH
18865: LD_INT 2
18867: ARRAY
18868: DOUBLE
18869: EQUAL
18870: IFTRUE 18874
18872: GO 18891
18874: POP
// result := upgradeable [ 2 ] ; trough_upgrade [ 3 ] :
18875: LD_ADDR_VAR 0 2
18879: PUSH
18880: LD_LOC 17
18884: PUSH
18885: LD_INT 2
18887: ARRAY
18888: ST_TO_ADDR
18889: GO 18985
18891: LD_LOC 18
18895: PUSH
18896: LD_INT 3
18898: ARRAY
18899: DOUBLE
18900: EQUAL
18901: IFTRUE 18905
18903: GO 18922
18905: POP
// result := upgradeable [ 3 ] ; trough_upgrade [ 4 ] :
18906: LD_ADDR_VAR 0 2
18910: PUSH
18911: LD_LOC 17
18915: PUSH
18916: LD_INT 3
18918: ARRAY
18919: ST_TO_ADDR
18920: GO 18985
18922: LD_LOC 18
18926: PUSH
18927: LD_INT 4
18929: ARRAY
18930: DOUBLE
18931: EQUAL
18932: IFTRUE 18936
18934: GO 18953
18936: POP
// result := upgradeable [ 4 ] ; trough_upgrade [ 6 ] :
18937: LD_ADDR_VAR 0 2
18941: PUSH
18942: LD_LOC 17
18946: PUSH
18947: LD_INT 4
18949: ARRAY
18950: ST_TO_ADDR
18951: GO 18985
18953: LD_LOC 18
18957: PUSH
18958: LD_INT 6
18960: ARRAY
18961: DOUBLE
18962: EQUAL
18963: IFTRUE 18967
18965: GO 18984
18967: POP
// result := upgradeable [ 6 ] ; end ;
18968: LD_ADDR_VAR 0 2
18972: PUSH
18973: LD_LOC 17
18977: PUSH
18978: LD_INT 6
18980: ARRAY
18981: ST_TO_ADDR
18982: GO 18985
18984: POP
// end ;
18985: LD_VAR 0 2
18989: RET
// export function place_b ; var i ; begin
18990: LD_INT 0
18992: PPUSH
18993: PPUSH
// upgradeable := [ b_depot , b_workshop , b_armoury , b_lab , b_lab_half , b_lab ] ;
18994: LD_ADDR_LOC 17
18998: PUSH
18999: LD_INT 0
19001: PUSH
19002: LD_INT 2
19004: PUSH
19005: LD_INT 4
19007: PUSH
19008: LD_INT 6
19010: PUSH
19011: LD_INT 7
19013: PUSH
19014: LD_INT 6
19016: PUSH
19017: EMPTY
19018: LIST
19019: LIST
19020: LIST
19021: LIST
19022: LIST
19023: LIST
19024: ST_TO_ADDR
// trough_upgrade := [ b_warehouse , b_factory , b_barracks , b_lab_half , b_lab_full , b_lab_full ] ;
19025: LD_ADDR_LOC 18
19029: PUSH
19030: LD_INT 1
19032: PUSH
19033: LD_INT 3
19035: PUSH
19036: LD_INT 5
19038: PUSH
19039: LD_INT 7
19041: PUSH
19042: LD_INT 8
19044: PUSH
19045: LD_INT 8
19047: PUSH
19048: EMPTY
19049: LIST
19050: LIST
19051: LIST
19052: LIST
19053: LIST
19054: LIST
19055: ST_TO_ADDR
// aici1 := [ [ [ 0 , class_engineer , 1 ] , [ 1 , class_scientistic , 3 ] , [ 2 , class_soldier , 2 ] , [ 0 , class_mechanic , 0 ] ] , [ [ 1 , class_engineer , 1 ] , [ 1 , class_scientistic , 3 ] , [ 2 , class_soldier , 3 ] , [ 0 , class_mechanic , 0 ] ] , [ [ 1 , class_engineer , 4 ] , [ 1 , class_scientistic , 3 ] , [ 3 , class_soldier , 5 ] , [ 0 , class_mechanic , 0 ] ] ] [ difficulty ] ;
19056: LD_ADDR_EXP 109
19060: PUSH
19061: LD_INT 0
19063: PUSH
19064: LD_INT 2
19066: PUSH
19067: LD_INT 1
19069: PUSH
19070: EMPTY
19071: LIST
19072: LIST
19073: LIST
19074: PUSH
19075: LD_INT 1
19077: PUSH
19078: LD_INT 4
19080: PUSH
19081: LD_INT 3
19083: PUSH
19084: EMPTY
19085: LIST
19086: LIST
19087: LIST
19088: PUSH
19089: LD_INT 2
19091: PUSH
19092: LD_INT 1
19094: PUSH
19095: LD_INT 2
19097: PUSH
19098: EMPTY
19099: LIST
19100: LIST
19101: LIST
19102: PUSH
19103: LD_INT 0
19105: PUSH
19106: LD_INT 3
19108: PUSH
19109: LD_INT 0
19111: PUSH
19112: EMPTY
19113: LIST
19114: LIST
19115: LIST
19116: PUSH
19117: EMPTY
19118: LIST
19119: LIST
19120: LIST
19121: LIST
19122: PUSH
19123: LD_INT 1
19125: PUSH
19126: LD_INT 2
19128: PUSH
19129: LD_INT 1
19131: PUSH
19132: EMPTY
19133: LIST
19134: LIST
19135: LIST
19136: PUSH
19137: LD_INT 1
19139: PUSH
19140: LD_INT 4
19142: PUSH
19143: LD_INT 3
19145: PUSH
19146: EMPTY
19147: LIST
19148: LIST
19149: LIST
19150: PUSH
19151: LD_INT 2
19153: PUSH
19154: LD_INT 1
19156: PUSH
19157: LD_INT 3
19159: PUSH
19160: EMPTY
19161: LIST
19162: LIST
19163: LIST
19164: PUSH
19165: LD_INT 0
19167: PUSH
19168: LD_INT 3
19170: PUSH
19171: LD_INT 0
19173: PUSH
19174: EMPTY
19175: LIST
19176: LIST
19177: LIST
19178: PUSH
19179: EMPTY
19180: LIST
19181: LIST
19182: LIST
19183: LIST
19184: PUSH
19185: LD_INT 1
19187: PUSH
19188: LD_INT 2
19190: PUSH
19191: LD_INT 4
19193: PUSH
19194: EMPTY
19195: LIST
19196: LIST
19197: LIST
19198: PUSH
19199: LD_INT 1
19201: PUSH
19202: LD_INT 4
19204: PUSH
19205: LD_INT 3
19207: PUSH
19208: EMPTY
19209: LIST
19210: LIST
19211: LIST
19212: PUSH
19213: LD_INT 3
19215: PUSH
19216: LD_INT 1
19218: PUSH
19219: LD_INT 5
19221: PUSH
19222: EMPTY
19223: LIST
19224: LIST
19225: LIST
19226: PUSH
19227: LD_INT 0
19229: PUSH
19230: LD_INT 3
19232: PUSH
19233: LD_INT 0
19235: PUSH
19236: EMPTY
19237: LIST
19238: LIST
19239: LIST
19240: PUSH
19241: EMPTY
19242: LIST
19243: LIST
19244: LIST
19245: LIST
19246: PUSH
19247: EMPTY
19248: LIST
19249: LIST
19250: LIST
19251: PUSH
19252: LD_OWVAR 67
19256: ARRAY
19257: ST_TO_ADDR
// aici2 := [ [ [ 1 , class_engineer , 6 ] , [ 0 , class_scientistic , 4 ] , [ 2 , class_soldier , 3 ] , [ 0 , class_mechanic , 3 ] ] , [ [ 1 , class_engineer , 6 ] , [ 0 , class_scientistic , 5 ] , [ 2 , class_soldier , 3 ] , [ 0 , class_mechanic , 3 ] ] , [ [ 1 , class_engineer , 7 ] , [ 0 , class_scientistic , 5 ] , [ 2 , class_soldier , 3 ] , [ 0 , class_mechanic , 3 ] ] ] [ difficulty ] ;
19258: LD_ADDR_EXP 110
19262: PUSH
19263: LD_INT 1
19265: PUSH
19266: LD_INT 2
19268: PUSH
19269: LD_INT 6
19271: PUSH
19272: EMPTY
19273: LIST
19274: LIST
19275: LIST
19276: PUSH
19277: LD_INT 0
19279: PUSH
19280: LD_INT 4
19282: PUSH
19283: LD_INT 4
19285: PUSH
19286: EMPTY
19287: LIST
19288: LIST
19289: LIST
19290: PUSH
19291: LD_INT 2
19293: PUSH
19294: LD_INT 1
19296: PUSH
19297: LD_INT 3
19299: PUSH
19300: EMPTY
19301: LIST
19302: LIST
19303: LIST
19304: PUSH
19305: LD_INT 0
19307: PUSH
19308: LD_INT 3
19310: PUSH
19311: LD_INT 3
19313: PUSH
19314: EMPTY
19315: LIST
19316: LIST
19317: LIST
19318: PUSH
19319: EMPTY
19320: LIST
19321: LIST
19322: LIST
19323: LIST
19324: PUSH
19325: LD_INT 1
19327: PUSH
19328: LD_INT 2
19330: PUSH
19331: LD_INT 6
19333: PUSH
19334: EMPTY
19335: LIST
19336: LIST
19337: LIST
19338: PUSH
19339: LD_INT 0
19341: PUSH
19342: LD_INT 4
19344: PUSH
19345: LD_INT 5
19347: PUSH
19348: EMPTY
19349: LIST
19350: LIST
19351: LIST
19352: PUSH
19353: LD_INT 2
19355: PUSH
19356: LD_INT 1
19358: PUSH
19359: LD_INT 3
19361: PUSH
19362: EMPTY
19363: LIST
19364: LIST
19365: LIST
19366: PUSH
19367: LD_INT 0
19369: PUSH
19370: LD_INT 3
19372: PUSH
19373: LD_INT 3
19375: PUSH
19376: EMPTY
19377: LIST
19378: LIST
19379: LIST
19380: PUSH
19381: EMPTY
19382: LIST
19383: LIST
19384: LIST
19385: LIST
19386: PUSH
19387: LD_INT 1
19389: PUSH
19390: LD_INT 2
19392: PUSH
19393: LD_INT 7
19395: PUSH
19396: EMPTY
19397: LIST
19398: LIST
19399: LIST
19400: PUSH
19401: LD_INT 0
19403: PUSH
19404: LD_INT 4
19406: PUSH
19407: LD_INT 5
19409: PUSH
19410: EMPTY
19411: LIST
19412: LIST
19413: LIST
19414: PUSH
19415: LD_INT 2
19417: PUSH
19418: LD_INT 1
19420: PUSH
19421: LD_INT 3
19423: PUSH
19424: EMPTY
19425: LIST
19426: LIST
19427: LIST
19428: PUSH
19429: LD_INT 0
19431: PUSH
19432: LD_INT 3
19434: PUSH
19435: LD_INT 3
19437: PUSH
19438: EMPTY
19439: LIST
19440: LIST
19441: LIST
19442: PUSH
19443: EMPTY
19444: LIST
19445: LIST
19446: LIST
19447: LIST
19448: PUSH
19449: EMPTY
19450: LIST
19451: LIST
19452: LIST
19453: PUSH
19454: LD_OWVAR 67
19458: ARRAY
19459: ST_TO_ADDR
// aici3 := [ [ [ 2 , class_engineer , 5 ] , [ 3 , class_scientistic , 3 ] , [ 6 , class_soldier , 4 ] , [ 5 , class_mechanic , 5 ] ] , [ [ 2 , class_engineer , 6 ] , [ 3 , class_scientistic , 4 ] , [ 6 , class_soldier , 5 ] , [ 5 , class_mechanic , 6 ] ] , [ [ 2 , class_engineer , 6 ] , [ 3 , class_scientistic , 4 ] , [ 6 , class_soldier , 6 ] , [ 5 , class_mechanic , 7 ] ] ] [ difficulty ] ;
19460: LD_ADDR_EXP 111
19464: PUSH
19465: LD_INT 2
19467: PUSH
19468: LD_INT 2
19470: PUSH
19471: LD_INT 5
19473: PUSH
19474: EMPTY
19475: LIST
19476: LIST
19477: LIST
19478: PUSH
19479: LD_INT 3
19481: PUSH
19482: LD_INT 4
19484: PUSH
19485: LD_INT 3
19487: PUSH
19488: EMPTY
19489: LIST
19490: LIST
19491: LIST
19492: PUSH
19493: LD_INT 6
19495: PUSH
19496: LD_INT 1
19498: PUSH
19499: LD_INT 4
19501: PUSH
19502: EMPTY
19503: LIST
19504: LIST
19505: LIST
19506: PUSH
19507: LD_INT 5
19509: PUSH
19510: LD_INT 3
19512: PUSH
19513: LD_INT 5
19515: PUSH
19516: EMPTY
19517: LIST
19518: LIST
19519: LIST
19520: PUSH
19521: EMPTY
19522: LIST
19523: LIST
19524: LIST
19525: LIST
19526: PUSH
19527: LD_INT 2
19529: PUSH
19530: LD_INT 2
19532: PUSH
19533: LD_INT 6
19535: PUSH
19536: EMPTY
19537: LIST
19538: LIST
19539: LIST
19540: PUSH
19541: LD_INT 3
19543: PUSH
19544: LD_INT 4
19546: PUSH
19547: LD_INT 4
19549: PUSH
19550: EMPTY
19551: LIST
19552: LIST
19553: LIST
19554: PUSH
19555: LD_INT 6
19557: PUSH
19558: LD_INT 1
19560: PUSH
19561: LD_INT 5
19563: PUSH
19564: EMPTY
19565: LIST
19566: LIST
19567: LIST
19568: PUSH
19569: LD_INT 5
19571: PUSH
19572: LD_INT 3
19574: PUSH
19575: LD_INT 6
19577: PUSH
19578: EMPTY
19579: LIST
19580: LIST
19581: LIST
19582: PUSH
19583: EMPTY
19584: LIST
19585: LIST
19586: LIST
19587: LIST
19588: PUSH
19589: LD_INT 2
19591: PUSH
19592: LD_INT 2
19594: PUSH
19595: LD_INT 6
19597: PUSH
19598: EMPTY
19599: LIST
19600: LIST
19601: LIST
19602: PUSH
19603: LD_INT 3
19605: PUSH
19606: LD_INT 4
19608: PUSH
19609: LD_INT 4
19611: PUSH
19612: EMPTY
19613: LIST
19614: LIST
19615: LIST
19616: PUSH
19617: LD_INT 6
19619: PUSH
19620: LD_INT 1
19622: PUSH
19623: LD_INT 6
19625: PUSH
19626: EMPTY
19627: LIST
19628: LIST
19629: LIST
19630: PUSH
19631: LD_INT 5
19633: PUSH
19634: LD_INT 3
19636: PUSH
19637: LD_INT 7
19639: PUSH
19640: EMPTY
19641: LIST
19642: LIST
19643: LIST
19644: PUSH
19645: EMPTY
19646: LIST
19647: LIST
19648: LIST
19649: LIST
19650: PUSH
19651: EMPTY
19652: LIST
19653: LIST
19654: LIST
19655: PUSH
19656: LD_OWVAR 67
19660: ARRAY
19661: ST_TO_ADDR
// aici4 := [ [ [ 0 , class_engineer , 5 ] , [ 0 , class_scientistic , 3 ] , [ 8 , class_soldier , 3 ] , [ 3 , class_mechanic , 3 ] ] , [ [ 0 , class_engineer , 6 ] , [ 0 , class_scientistic , 4 ] , [ 8 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 0 , class_engineer , 6 ] , [ 0 , class_scientistic , 5 ] , [ 8 , class_soldier , 5 ] , [ 3 , class_mechanic , 5 ] ] ] [ difficulty ] ;
19662: LD_ADDR_EXP 112
19666: PUSH
19667: LD_INT 0
19669: PUSH
19670: LD_INT 2
19672: PUSH
19673: LD_INT 5
19675: PUSH
19676: EMPTY
19677: LIST
19678: LIST
19679: LIST
19680: PUSH
19681: LD_INT 0
19683: PUSH
19684: LD_INT 4
19686: PUSH
19687: LD_INT 3
19689: PUSH
19690: EMPTY
19691: LIST
19692: LIST
19693: LIST
19694: PUSH
19695: LD_INT 8
19697: PUSH
19698: LD_INT 1
19700: PUSH
19701: LD_INT 3
19703: PUSH
19704: EMPTY
19705: LIST
19706: LIST
19707: LIST
19708: PUSH
19709: LD_INT 3
19711: PUSH
19712: LD_INT 3
19714: PUSH
19715: LD_INT 3
19717: PUSH
19718: EMPTY
19719: LIST
19720: LIST
19721: LIST
19722: PUSH
19723: EMPTY
19724: LIST
19725: LIST
19726: LIST
19727: LIST
19728: PUSH
19729: LD_INT 0
19731: PUSH
19732: LD_INT 2
19734: PUSH
19735: LD_INT 6
19737: PUSH
19738: EMPTY
19739: LIST
19740: LIST
19741: LIST
19742: PUSH
19743: LD_INT 0
19745: PUSH
19746: LD_INT 4
19748: PUSH
19749: LD_INT 4
19751: PUSH
19752: EMPTY
19753: LIST
19754: LIST
19755: LIST
19756: PUSH
19757: LD_INT 8
19759: PUSH
19760: LD_INT 1
19762: PUSH
19763: LD_INT 4
19765: PUSH
19766: EMPTY
19767: LIST
19768: LIST
19769: LIST
19770: PUSH
19771: LD_INT 3
19773: PUSH
19774: LD_INT 3
19776: PUSH
19777: LD_INT 4
19779: PUSH
19780: EMPTY
19781: LIST
19782: LIST
19783: LIST
19784: PUSH
19785: EMPTY
19786: LIST
19787: LIST
19788: LIST
19789: LIST
19790: PUSH
19791: LD_INT 0
19793: PUSH
19794: LD_INT 2
19796: PUSH
19797: LD_INT 6
19799: PUSH
19800: EMPTY
19801: LIST
19802: LIST
19803: LIST
19804: PUSH
19805: LD_INT 0
19807: PUSH
19808: LD_INT 4
19810: PUSH
19811: LD_INT 5
19813: PUSH
19814: EMPTY
19815: LIST
19816: LIST
19817: LIST
19818: PUSH
19819: LD_INT 8
19821: PUSH
19822: LD_INT 1
19824: PUSH
19825: LD_INT 5
19827: PUSH
19828: EMPTY
19829: LIST
19830: LIST
19831: LIST
19832: PUSH
19833: LD_INT 3
19835: PUSH
19836: LD_INT 3
19838: PUSH
19839: LD_INT 5
19841: PUSH
19842: EMPTY
19843: LIST
19844: LIST
19845: LIST
19846: PUSH
19847: EMPTY
19848: LIST
19849: LIST
19850: LIST
19851: LIST
19852: PUSH
19853: EMPTY
19854: LIST
19855: LIST
19856: LIST
19857: PUSH
19858: LD_OWVAR 67
19862: ARRAY
19863: ST_TO_ADDR
// aici5 := [ [ [ 2 , class_soldier , 5 ] ] , [ [ 2 , class_soldier , 6 ] ] , [ [ 2 , class_soldier , 7 ] ] ] [ difficulty ] ;
19864: LD_ADDR_EXP 113
19868: PUSH
19869: LD_INT 2
19871: PUSH
19872: LD_INT 1
19874: PUSH
19875: LD_INT 5
19877: PUSH
19878: EMPTY
19879: LIST
19880: LIST
19881: LIST
19882: PUSH
19883: EMPTY
19884: LIST
19885: PUSH
19886: LD_INT 2
19888: PUSH
19889: LD_INT 1
19891: PUSH
19892: LD_INT 6
19894: PUSH
19895: EMPTY
19896: LIST
19897: LIST
19898: LIST
19899: PUSH
19900: EMPTY
19901: LIST
19902: PUSH
19903: LD_INT 2
19905: PUSH
19906: LD_INT 1
19908: PUSH
19909: LD_INT 7
19911: PUSH
19912: EMPTY
19913: LIST
19914: LIST
19915: LIST
19916: PUSH
19917: EMPTY
19918: LIST
19919: PUSH
19920: EMPTY
19921: LIST
19922: LIST
19923: LIST
19924: PUSH
19925: LD_OWVAR 67
19929: ARRAY
19930: ST_TO_ADDR
// builds1 := [ [ [ b_depot , 85 , 86 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_breastwork , 100 , 104 , 0 , [ ] , 0 , 0 , 0 , 0 , 1 ] , [ b_breastwork , 85 , 91 , 1 , [ ] , 0 , 0 , 0 , 0 , 1 ] , [ b_bunker , 91 , 101 , 0 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 1 ] , [ b_armoury , 91 , 86 , 3 , [ ] , 1 , 0 , 0 , 0 , 1 ] , [ b_siberite_mine , 101 , 93 , 3 , [ ] , 0 , 0 , 0 , 0 , 0 ] , [ b_oil_mine , 87 , 84 , 0 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_power , 101 , 96 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] ] , [ [ b_depot , 85 , 86 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_breastwork , 100 , 104 , 0 , [ ] , 1 , 1 , 1 , 1 , 1 ] , [ b_breastwork , 85 , 91 , 1 , [ ] , 0 , 0 , 0 , 0 , 1 ] , [ b_bunker , 91 , 101 , 0 , [ us_light_gun ] , 1 , 1 , 1 , 1 , 1 ] , [ b_armoury , 91 , 86 , 3 , [ ] , 1 , 1 , 0 , 0 , 1 ] , [ b_siberite_mine , 101 , 93 , 3 , [ ] , 1 , 1 , 1 , 1 , 0 ] , [ b_oil_mine , 87 , 84 , 0 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_power , 101 , 96 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] ] , [ [ b_depot , 85 , 86 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_breastwork , 100 , 104 , 0 , [ ] , 1 , 1 , 1 , 1 , 1 ] , [ b_breastwork , 85 , 91 , 1 , [ ] , 1 , 1 , 1 , 1 , 1 ] , [ b_bunker , 91 , 101 , 0 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 1 ] , [ b_armoury , 91 , 86 , 3 , [ ] , 1 , 1 , 1 , 1 , 1 ] , [ b_siberite_mine , 101 , 93 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_mine , 87 , 84 , 0 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_power , 101 , 96 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] ] ] [ difficulty ] ;
19931: LD_ADDR_EXP 104
19935: PUSH
19936: LD_INT 0
19938: PUSH
19939: LD_INT 85
19941: PUSH
19942: LD_INT 86
19944: PUSH
19945: LD_INT 2
19947: PUSH
19948: EMPTY
19949: PUSH
19950: LD_INT 1
19952: PUSH
19953: LD_INT 1
19955: PUSH
19956: LD_INT 1
19958: PUSH
19959: LD_INT 0
19961: PUSH
19962: LD_INT 0
19964: PUSH
19965: EMPTY
19966: LIST
19967: LIST
19968: LIST
19969: LIST
19970: LIST
19971: LIST
19972: LIST
19973: LIST
19974: LIST
19975: LIST
19976: PUSH
19977: LD_INT 31
19979: PUSH
19980: LD_INT 100
19982: PUSH
19983: LD_INT 104
19985: PUSH
19986: LD_INT 0
19988: PUSH
19989: EMPTY
19990: PUSH
19991: LD_INT 0
19993: PUSH
19994: LD_INT 0
19996: PUSH
19997: LD_INT 0
19999: PUSH
20000: LD_INT 0
20002: PUSH
20003: LD_INT 1
20005: PUSH
20006: EMPTY
20007: LIST
20008: LIST
20009: LIST
20010: LIST
20011: LIST
20012: LIST
20013: LIST
20014: LIST
20015: LIST
20016: LIST
20017: PUSH
20018: LD_INT 31
20020: PUSH
20021: LD_INT 85
20023: PUSH
20024: LD_INT 91
20026: PUSH
20027: LD_INT 1
20029: PUSH
20030: EMPTY
20031: PUSH
20032: LD_INT 0
20034: PUSH
20035: LD_INT 0
20037: PUSH
20038: LD_INT 0
20040: PUSH
20041: LD_INT 0
20043: PUSH
20044: LD_INT 1
20046: PUSH
20047: EMPTY
20048: LIST
20049: LIST
20050: LIST
20051: LIST
20052: LIST
20053: LIST
20054: LIST
20055: LIST
20056: LIST
20057: LIST
20058: PUSH
20059: LD_INT 32
20061: PUSH
20062: LD_INT 91
20064: PUSH
20065: LD_INT 101
20067: PUSH
20068: LD_INT 0
20070: PUSH
20071: LD_INT 5
20073: PUSH
20074: EMPTY
20075: LIST
20076: PUSH
20077: LD_INT 1
20079: PUSH
20080: LD_INT 1
20082: PUSH
20083: LD_INT 1
20085: PUSH
20086: LD_INT 1
20088: PUSH
20089: LD_INT 1
20091: PUSH
20092: EMPTY
20093: LIST
20094: LIST
20095: LIST
20096: LIST
20097: LIST
20098: LIST
20099: LIST
20100: LIST
20101: LIST
20102: LIST
20103: PUSH
20104: LD_INT 4
20106: PUSH
20107: LD_INT 91
20109: PUSH
20110: LD_INT 86
20112: PUSH
20113: LD_INT 3
20115: PUSH
20116: EMPTY
20117: PUSH
20118: LD_INT 1
20120: PUSH
20121: LD_INT 0
20123: PUSH
20124: LD_INT 0
20126: PUSH
20127: LD_INT 0
20129: PUSH
20130: LD_INT 1
20132: PUSH
20133: EMPTY
20134: LIST
20135: LIST
20136: LIST
20137: LIST
20138: LIST
20139: LIST
20140: LIST
20141: LIST
20142: LIST
20143: LIST
20144: PUSH
20145: LD_INT 30
20147: PUSH
20148: LD_INT 101
20150: PUSH
20151: LD_INT 93
20153: PUSH
20154: LD_INT 3
20156: PUSH
20157: EMPTY
20158: PUSH
20159: LD_INT 0
20161: PUSH
20162: LD_INT 0
20164: PUSH
20165: LD_INT 0
20167: PUSH
20168: LD_INT 0
20170: PUSH
20171: LD_INT 0
20173: PUSH
20174: EMPTY
20175: LIST
20176: LIST
20177: LIST
20178: LIST
20179: LIST
20180: LIST
20181: LIST
20182: LIST
20183: LIST
20184: LIST
20185: PUSH
20186: LD_INT 29
20188: PUSH
20189: LD_INT 87
20191: PUSH
20192: LD_INT 84
20194: PUSH
20195: LD_INT 0
20197: PUSH
20198: EMPTY
20199: PUSH
20200: LD_INT 1
20202: PUSH
20203: LD_INT 1
20205: PUSH
20206: LD_INT 1
20208: PUSH
20209: LD_INT 0
20211: PUSH
20212: LD_INT 0
20214: PUSH
20215: EMPTY
20216: LIST
20217: LIST
20218: LIST
20219: LIST
20220: LIST
20221: LIST
20222: LIST
20223: LIST
20224: LIST
20225: LIST
20226: PUSH
20227: LD_INT 26
20229: PUSH
20230: LD_INT 101
20232: PUSH
20233: LD_INT 96
20235: PUSH
20236: LD_INT 3
20238: PUSH
20239: EMPTY
20240: PUSH
20241: LD_INT 1
20243: PUSH
20244: LD_INT 1
20246: PUSH
20247: LD_INT 1
20249: PUSH
20250: LD_INT 0
20252: PUSH
20253: LD_INT 0
20255: PUSH
20256: EMPTY
20257: LIST
20258: LIST
20259: LIST
20260: LIST
20261: LIST
20262: LIST
20263: LIST
20264: LIST
20265: LIST
20266: LIST
20267: PUSH
20268: EMPTY
20269: LIST
20270: LIST
20271: LIST
20272: LIST
20273: LIST
20274: LIST
20275: LIST
20276: LIST
20277: PUSH
20278: LD_INT 0
20280: PUSH
20281: LD_INT 85
20283: PUSH
20284: LD_INT 86
20286: PUSH
20287: LD_INT 2
20289: PUSH
20290: EMPTY
20291: PUSH
20292: LD_INT 1
20294: PUSH
20295: LD_INT 1
20297: PUSH
20298: LD_INT 1
20300: PUSH
20301: LD_INT 0
20303: PUSH
20304: LD_INT 0
20306: PUSH
20307: EMPTY
20308: LIST
20309: LIST
20310: LIST
20311: LIST
20312: LIST
20313: LIST
20314: LIST
20315: LIST
20316: LIST
20317: LIST
20318: PUSH
20319: LD_INT 31
20321: PUSH
20322: LD_INT 100
20324: PUSH
20325: LD_INT 104
20327: PUSH
20328: LD_INT 0
20330: PUSH
20331: EMPTY
20332: PUSH
20333: LD_INT 1
20335: PUSH
20336: LD_INT 1
20338: PUSH
20339: LD_INT 1
20341: PUSH
20342: LD_INT 1
20344: PUSH
20345: LD_INT 1
20347: PUSH
20348: EMPTY
20349: LIST
20350: LIST
20351: LIST
20352: LIST
20353: LIST
20354: LIST
20355: LIST
20356: LIST
20357: LIST
20358: LIST
20359: PUSH
20360: LD_INT 31
20362: PUSH
20363: LD_INT 85
20365: PUSH
20366: LD_INT 91
20368: PUSH
20369: LD_INT 1
20371: PUSH
20372: EMPTY
20373: PUSH
20374: LD_INT 0
20376: PUSH
20377: LD_INT 0
20379: PUSH
20380: LD_INT 0
20382: PUSH
20383: LD_INT 0
20385: PUSH
20386: LD_INT 1
20388: PUSH
20389: EMPTY
20390: LIST
20391: LIST
20392: LIST
20393: LIST
20394: LIST
20395: LIST
20396: LIST
20397: LIST
20398: LIST
20399: LIST
20400: PUSH
20401: LD_INT 32
20403: PUSH
20404: LD_INT 91
20406: PUSH
20407: LD_INT 101
20409: PUSH
20410: LD_INT 0
20412: PUSH
20413: LD_INT 3
20415: PUSH
20416: EMPTY
20417: LIST
20418: PUSH
20419: LD_INT 1
20421: PUSH
20422: LD_INT 1
20424: PUSH
20425: LD_INT 1
20427: PUSH
20428: LD_INT 1
20430: PUSH
20431: LD_INT 1
20433: PUSH
20434: EMPTY
20435: LIST
20436: LIST
20437: LIST
20438: LIST
20439: LIST
20440: LIST
20441: LIST
20442: LIST
20443: LIST
20444: LIST
20445: PUSH
20446: LD_INT 4
20448: PUSH
20449: LD_INT 91
20451: PUSH
20452: LD_INT 86
20454: PUSH
20455: LD_INT 3
20457: PUSH
20458: EMPTY
20459: PUSH
20460: LD_INT 1
20462: PUSH
20463: LD_INT 1
20465: PUSH
20466: LD_INT 0
20468: PUSH
20469: LD_INT 0
20471: PUSH
20472: LD_INT 1
20474: PUSH
20475: EMPTY
20476: LIST
20477: LIST
20478: LIST
20479: LIST
20480: LIST
20481: LIST
20482: LIST
20483: LIST
20484: LIST
20485: LIST
20486: PUSH
20487: LD_INT 30
20489: PUSH
20490: LD_INT 101
20492: PUSH
20493: LD_INT 93
20495: PUSH
20496: LD_INT 3
20498: PUSH
20499: EMPTY
20500: PUSH
20501: LD_INT 1
20503: PUSH
20504: LD_INT 1
20506: PUSH
20507: LD_INT 1
20509: PUSH
20510: LD_INT 1
20512: PUSH
20513: LD_INT 0
20515: PUSH
20516: EMPTY
20517: LIST
20518: LIST
20519: LIST
20520: LIST
20521: LIST
20522: LIST
20523: LIST
20524: LIST
20525: LIST
20526: LIST
20527: PUSH
20528: LD_INT 29
20530: PUSH
20531: LD_INT 87
20533: PUSH
20534: LD_INT 84
20536: PUSH
20537: LD_INT 0
20539: PUSH
20540: EMPTY
20541: PUSH
20542: LD_INT 1
20544: PUSH
20545: LD_INT 1
20547: PUSH
20548: LD_INT 1
20550: PUSH
20551: LD_INT 0
20553: PUSH
20554: LD_INT 0
20556: PUSH
20557: EMPTY
20558: LIST
20559: LIST
20560: LIST
20561: LIST
20562: LIST
20563: LIST
20564: LIST
20565: LIST
20566: LIST
20567: LIST
20568: PUSH
20569: LD_INT 26
20571: PUSH
20572: LD_INT 101
20574: PUSH
20575: LD_INT 96
20577: PUSH
20578: LD_INT 3
20580: PUSH
20581: EMPTY
20582: PUSH
20583: LD_INT 1
20585: PUSH
20586: LD_INT 1
20588: PUSH
20589: LD_INT 1
20591: PUSH
20592: LD_INT 0
20594: PUSH
20595: LD_INT 0
20597: PUSH
20598: EMPTY
20599: LIST
20600: LIST
20601: LIST
20602: LIST
20603: LIST
20604: LIST
20605: LIST
20606: LIST
20607: LIST
20608: LIST
20609: PUSH
20610: EMPTY
20611: LIST
20612: LIST
20613: LIST
20614: LIST
20615: LIST
20616: LIST
20617: LIST
20618: LIST
20619: PUSH
20620: LD_INT 0
20622: PUSH
20623: LD_INT 85
20625: PUSH
20626: LD_INT 86
20628: PUSH
20629: LD_INT 2
20631: PUSH
20632: EMPTY
20633: PUSH
20634: LD_INT 1
20636: PUSH
20637: LD_INT 1
20639: PUSH
20640: LD_INT 1
20642: PUSH
20643: LD_INT 0
20645: PUSH
20646: LD_INT 0
20648: PUSH
20649: EMPTY
20650: LIST
20651: LIST
20652: LIST
20653: LIST
20654: LIST
20655: LIST
20656: LIST
20657: LIST
20658: LIST
20659: LIST
20660: PUSH
20661: LD_INT 31
20663: PUSH
20664: LD_INT 100
20666: PUSH
20667: LD_INT 104
20669: PUSH
20670: LD_INT 0
20672: PUSH
20673: EMPTY
20674: PUSH
20675: LD_INT 1
20677: PUSH
20678: LD_INT 1
20680: PUSH
20681: LD_INT 1
20683: PUSH
20684: LD_INT 1
20686: PUSH
20687: LD_INT 1
20689: PUSH
20690: EMPTY
20691: LIST
20692: LIST
20693: LIST
20694: LIST
20695: LIST
20696: LIST
20697: LIST
20698: LIST
20699: LIST
20700: LIST
20701: PUSH
20702: LD_INT 31
20704: PUSH
20705: LD_INT 85
20707: PUSH
20708: LD_INT 91
20710: PUSH
20711: LD_INT 1
20713: PUSH
20714: EMPTY
20715: PUSH
20716: LD_INT 1
20718: PUSH
20719: LD_INT 1
20721: PUSH
20722: LD_INT 1
20724: PUSH
20725: LD_INT 1
20727: PUSH
20728: LD_INT 1
20730: PUSH
20731: EMPTY
20732: LIST
20733: LIST
20734: LIST
20735: LIST
20736: LIST
20737: LIST
20738: LIST
20739: LIST
20740: LIST
20741: LIST
20742: PUSH
20743: LD_INT 32
20745: PUSH
20746: LD_INT 91
20748: PUSH
20749: LD_INT 101
20751: PUSH
20752: LD_INT 0
20754: PUSH
20755: LD_INT 4
20757: PUSH
20758: EMPTY
20759: LIST
20760: PUSH
20761: LD_INT 1
20763: PUSH
20764: LD_INT 1
20766: PUSH
20767: LD_INT 1
20769: PUSH
20770: LD_INT 1
20772: PUSH
20773: LD_INT 1
20775: PUSH
20776: EMPTY
20777: LIST
20778: LIST
20779: LIST
20780: LIST
20781: LIST
20782: LIST
20783: LIST
20784: LIST
20785: LIST
20786: LIST
20787: PUSH
20788: LD_INT 4
20790: PUSH
20791: LD_INT 91
20793: PUSH
20794: LD_INT 86
20796: PUSH
20797: LD_INT 3
20799: PUSH
20800: EMPTY
20801: PUSH
20802: LD_INT 1
20804: PUSH
20805: LD_INT 1
20807: PUSH
20808: LD_INT 1
20810: PUSH
20811: LD_INT 1
20813: PUSH
20814: LD_INT 1
20816: PUSH
20817: EMPTY
20818: LIST
20819: LIST
20820: LIST
20821: LIST
20822: LIST
20823: LIST
20824: LIST
20825: LIST
20826: LIST
20827: LIST
20828: PUSH
20829: LD_INT 30
20831: PUSH
20832: LD_INT 101
20834: PUSH
20835: LD_INT 93
20837: PUSH
20838: LD_INT 3
20840: PUSH
20841: EMPTY
20842: PUSH
20843: LD_INT 1
20845: PUSH
20846: LD_INT 1
20848: PUSH
20849: LD_INT 1
20851: PUSH
20852: LD_INT 0
20854: PUSH
20855: LD_INT 0
20857: PUSH
20858: EMPTY
20859: LIST
20860: LIST
20861: LIST
20862: LIST
20863: LIST
20864: LIST
20865: LIST
20866: LIST
20867: LIST
20868: LIST
20869: PUSH
20870: LD_INT 29
20872: PUSH
20873: LD_INT 87
20875: PUSH
20876: LD_INT 84
20878: PUSH
20879: LD_INT 0
20881: PUSH
20882: EMPTY
20883: PUSH
20884: LD_INT 1
20886: PUSH
20887: LD_INT 1
20889: PUSH
20890: LD_INT 1
20892: PUSH
20893: LD_INT 0
20895: PUSH
20896: LD_INT 0
20898: PUSH
20899: EMPTY
20900: LIST
20901: LIST
20902: LIST
20903: LIST
20904: LIST
20905: LIST
20906: LIST
20907: LIST
20908: LIST
20909: LIST
20910: PUSH
20911: LD_INT 26
20913: PUSH
20914: LD_INT 101
20916: PUSH
20917: LD_INT 96
20919: PUSH
20920: LD_INT 3
20922: PUSH
20923: EMPTY
20924: PUSH
20925: LD_INT 1
20927: PUSH
20928: LD_INT 1
20930: PUSH
20931: LD_INT 1
20933: PUSH
20934: LD_INT 0
20936: PUSH
20937: LD_INT 0
20939: PUSH
20940: EMPTY
20941: LIST
20942: LIST
20943: LIST
20944: LIST
20945: LIST
20946: LIST
20947: LIST
20948: LIST
20949: LIST
20950: LIST
20951: PUSH
20952: EMPTY
20953: LIST
20954: LIST
20955: LIST
20956: LIST
20957: LIST
20958: LIST
20959: LIST
20960: LIST
20961: PUSH
20962: EMPTY
20963: LIST
20964: LIST
20965: LIST
20966: PUSH
20967: LD_OWVAR 67
20971: ARRAY
20972: ST_TO_ADDR
// builds2 := [ [ b_workshop , 60 , 9 , 4 , [ ] , 1 , 0 , 0 , 0 , 0 ] , [ b_oil_mine , 53 , 13 , 2 , [ ] , 1 , 0 , 0 , 0 , 0 ] , [ b_oil_power , 50 , 3 , 4 , [ ] , 1 , 0 , 0 , 0 , 0 ] , [ b_depot , 46 , 5 , 2 , [ ] , 1 , 0 , 0 , 0 , 0 ] , [ b_armoury , 59 , 9 , 4 , [ ] , 1 , 0 , 0 , 1 , 1 ] , [ b_breastwork , 50 , 14 , 0 , [ ] , 1 , 0 , 0 , 1 , 1 ] ] ;
20973: LD_ADDR_EXP 105
20977: PUSH
20978: LD_INT 2
20980: PUSH
20981: LD_INT 60
20983: PUSH
20984: LD_INT 9
20986: PUSH
20987: LD_INT 4
20989: PUSH
20990: EMPTY
20991: PUSH
20992: LD_INT 1
20994: PUSH
20995: LD_INT 0
20997: PUSH
20998: LD_INT 0
21000: PUSH
21001: LD_INT 0
21003: PUSH
21004: LD_INT 0
21006: PUSH
21007: EMPTY
21008: LIST
21009: LIST
21010: LIST
21011: LIST
21012: LIST
21013: LIST
21014: LIST
21015: LIST
21016: LIST
21017: LIST
21018: PUSH
21019: LD_INT 29
21021: PUSH
21022: LD_INT 53
21024: PUSH
21025: LD_INT 13
21027: PUSH
21028: LD_INT 2
21030: PUSH
21031: EMPTY
21032: PUSH
21033: LD_INT 1
21035: PUSH
21036: LD_INT 0
21038: PUSH
21039: LD_INT 0
21041: PUSH
21042: LD_INT 0
21044: PUSH
21045: LD_INT 0
21047: PUSH
21048: EMPTY
21049: LIST
21050: LIST
21051: LIST
21052: LIST
21053: LIST
21054: LIST
21055: LIST
21056: LIST
21057: LIST
21058: LIST
21059: PUSH
21060: LD_INT 26
21062: PUSH
21063: LD_INT 50
21065: PUSH
21066: LD_INT 3
21068: PUSH
21069: LD_INT 4
21071: PUSH
21072: EMPTY
21073: PUSH
21074: LD_INT 1
21076: PUSH
21077: LD_INT 0
21079: PUSH
21080: LD_INT 0
21082: PUSH
21083: LD_INT 0
21085: PUSH
21086: LD_INT 0
21088: PUSH
21089: EMPTY
21090: LIST
21091: LIST
21092: LIST
21093: LIST
21094: LIST
21095: LIST
21096: LIST
21097: LIST
21098: LIST
21099: LIST
21100: PUSH
21101: LD_INT 0
21103: PUSH
21104: LD_INT 46
21106: PUSH
21107: LD_INT 5
21109: PUSH
21110: LD_INT 2
21112: PUSH
21113: EMPTY
21114: PUSH
21115: LD_INT 1
21117: PUSH
21118: LD_INT 0
21120: PUSH
21121: LD_INT 0
21123: PUSH
21124: LD_INT 0
21126: PUSH
21127: LD_INT 0
21129: PUSH
21130: EMPTY
21131: LIST
21132: LIST
21133: LIST
21134: LIST
21135: LIST
21136: LIST
21137: LIST
21138: LIST
21139: LIST
21140: LIST
21141: PUSH
21142: LD_INT 4
21144: PUSH
21145: LD_INT 59
21147: PUSH
21148: LD_INT 9
21150: PUSH
21151: LD_INT 4
21153: PUSH
21154: EMPTY
21155: PUSH
21156: LD_INT 1
21158: PUSH
21159: LD_INT 0
21161: PUSH
21162: LD_INT 0
21164: PUSH
21165: LD_INT 1
21167: PUSH
21168: LD_INT 1
21170: PUSH
21171: EMPTY
21172: LIST
21173: LIST
21174: LIST
21175: LIST
21176: LIST
21177: LIST
21178: LIST
21179: LIST
21180: LIST
21181: LIST
21182: PUSH
21183: LD_INT 31
21185: PUSH
21186: LD_INT 50
21188: PUSH
21189: LD_INT 14
21191: PUSH
21192: LD_INT 0
21194: PUSH
21195: EMPTY
21196: PUSH
21197: LD_INT 1
21199: PUSH
21200: LD_INT 0
21202: PUSH
21203: LD_INT 0
21205: PUSH
21206: LD_INT 1
21208: PUSH
21209: LD_INT 1
21211: PUSH
21212: EMPTY
21213: LIST
21214: LIST
21215: LIST
21216: LIST
21217: LIST
21218: LIST
21219: LIST
21220: LIST
21221: LIST
21222: LIST
21223: PUSH
21224: EMPTY
21225: LIST
21226: LIST
21227: LIST
21228: LIST
21229: LIST
21230: LIST
21231: ST_TO_ADDR
// if difficulty = 1 then
21232: LD_OWVAR 67
21236: PUSH
21237: LD_INT 1
21239: EQUAL
21240: IFFALSE 22039
// builds3 := [ [ b_breastwork , 41 , 23 , 5 , [ ] , 1 , 0 , 0 , 1 , 1 ] , [ b_bunker , 18 , 8 , 4 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 25 , 13 , 4 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 17 , 18 , 4 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 31 , 49 , 5 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 35 , 44 , 5 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 34 , 26 , 0 , [ us_radar ] , 1 , 1 , 1 , 1 , 0 ] , [ b_siberite_mine , 29 , 30 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_mine , 39 , 37 , 1 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_siberite_power , 24 , 44 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_siberite_power , 27 , 26 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_warehouse , 32 , 35 , 4 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_lab_full , 21 , 35 , 1 , [ b_lab_opto , b_lab_weapon ] , 1 , 1 , 1 , 0 , 0 ] , [ b_factory , 18 , 25 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_control_tower , 22 , 40 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_track , 14 , 21 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_gun , 15 , 25 , 1 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_radar , 18 , 29 , 0 , [ ] , 1 , 1 , 1 , 0 , 0 ] ] else
21242: LD_ADDR_EXP 106
21246: PUSH
21247: LD_INT 31
21249: PUSH
21250: LD_INT 41
21252: PUSH
21253: LD_INT 23
21255: PUSH
21256: LD_INT 5
21258: PUSH
21259: EMPTY
21260: PUSH
21261: LD_INT 1
21263: PUSH
21264: LD_INT 0
21266: PUSH
21267: LD_INT 0
21269: PUSH
21270: LD_INT 1
21272: PUSH
21273: LD_INT 1
21275: PUSH
21276: EMPTY
21277: LIST
21278: LIST
21279: LIST
21280: LIST
21281: LIST
21282: LIST
21283: LIST
21284: LIST
21285: LIST
21286: LIST
21287: PUSH
21288: LD_INT 32
21290: PUSH
21291: LD_INT 18
21293: PUSH
21294: LD_INT 8
21296: PUSH
21297: LD_INT 4
21299: PUSH
21300: LD_INT 4
21302: PUSH
21303: EMPTY
21304: LIST
21305: PUSH
21306: LD_INT 1
21308: PUSH
21309: LD_INT 1
21311: PUSH
21312: LD_INT 1
21314: PUSH
21315: LD_INT 1
21317: PUSH
21318: LD_INT 0
21320: PUSH
21321: EMPTY
21322: LIST
21323: LIST
21324: LIST
21325: LIST
21326: LIST
21327: LIST
21328: LIST
21329: LIST
21330: LIST
21331: LIST
21332: PUSH
21333: LD_INT 32
21335: PUSH
21336: LD_INT 25
21338: PUSH
21339: LD_INT 13
21341: PUSH
21342: LD_INT 4
21344: PUSH
21345: LD_INT 5
21347: PUSH
21348: EMPTY
21349: LIST
21350: PUSH
21351: LD_INT 1
21353: PUSH
21354: LD_INT 1
21356: PUSH
21357: LD_INT 1
21359: PUSH
21360: LD_INT 1
21362: PUSH
21363: LD_INT 0
21365: PUSH
21366: EMPTY
21367: LIST
21368: LIST
21369: LIST
21370: LIST
21371: LIST
21372: LIST
21373: LIST
21374: LIST
21375: LIST
21376: LIST
21377: PUSH
21378: LD_INT 32
21380: PUSH
21381: LD_INT 17
21383: PUSH
21384: LD_INT 18
21386: PUSH
21387: LD_INT 4
21389: PUSH
21390: LD_INT 4
21392: PUSH
21393: EMPTY
21394: LIST
21395: PUSH
21396: LD_INT 1
21398: PUSH
21399: LD_INT 1
21401: PUSH
21402: LD_INT 1
21404: PUSH
21405: LD_INT 1
21407: PUSH
21408: LD_INT 0
21410: PUSH
21411: EMPTY
21412: LIST
21413: LIST
21414: LIST
21415: LIST
21416: LIST
21417: LIST
21418: LIST
21419: LIST
21420: LIST
21421: LIST
21422: PUSH
21423: LD_INT 32
21425: PUSH
21426: LD_INT 31
21428: PUSH
21429: LD_INT 49
21431: PUSH
21432: LD_INT 5
21434: PUSH
21435: LD_INT 4
21437: PUSH
21438: EMPTY
21439: LIST
21440: PUSH
21441: LD_INT 1
21443: PUSH
21444: LD_INT 1
21446: PUSH
21447: LD_INT 1
21449: PUSH
21450: LD_INT 1
21452: PUSH
21453: LD_INT 0
21455: PUSH
21456: EMPTY
21457: LIST
21458: LIST
21459: LIST
21460: LIST
21461: LIST
21462: LIST
21463: LIST
21464: LIST
21465: LIST
21466: LIST
21467: PUSH
21468: LD_INT 32
21470: PUSH
21471: LD_INT 35
21473: PUSH
21474: LD_INT 44
21476: PUSH
21477: LD_INT 5
21479: PUSH
21480: LD_INT 5
21482: PUSH
21483: EMPTY
21484: LIST
21485: PUSH
21486: LD_INT 1
21488: PUSH
21489: LD_INT 1
21491: PUSH
21492: LD_INT 1
21494: PUSH
21495: LD_INT 1
21497: PUSH
21498: LD_INT 0
21500: PUSH
21501: EMPTY
21502: LIST
21503: LIST
21504: LIST
21505: LIST
21506: LIST
21507: LIST
21508: LIST
21509: LIST
21510: LIST
21511: LIST
21512: PUSH
21513: LD_INT 32
21515: PUSH
21516: LD_INT 34
21518: PUSH
21519: LD_INT 26
21521: PUSH
21522: LD_INT 0
21524: PUSH
21525: LD_INT 11
21527: PUSH
21528: EMPTY
21529: LIST
21530: PUSH
21531: LD_INT 1
21533: PUSH
21534: LD_INT 1
21536: PUSH
21537: LD_INT 1
21539: PUSH
21540: LD_INT 1
21542: PUSH
21543: LD_INT 0
21545: PUSH
21546: EMPTY
21547: LIST
21548: LIST
21549: LIST
21550: LIST
21551: LIST
21552: LIST
21553: LIST
21554: LIST
21555: LIST
21556: LIST
21557: PUSH
21558: LD_INT 30
21560: PUSH
21561: LD_INT 29
21563: PUSH
21564: LD_INT 30
21566: PUSH
21567: LD_INT 2
21569: PUSH
21570: EMPTY
21571: PUSH
21572: LD_INT 1
21574: PUSH
21575: LD_INT 1
21577: PUSH
21578: LD_INT 1
21580: PUSH
21581: LD_INT 0
21583: PUSH
21584: LD_INT 0
21586: PUSH
21587: EMPTY
21588: LIST
21589: LIST
21590: LIST
21591: LIST
21592: LIST
21593: LIST
21594: LIST
21595: LIST
21596: LIST
21597: LIST
21598: PUSH
21599: LD_INT 29
21601: PUSH
21602: LD_INT 39
21604: PUSH
21605: LD_INT 37
21607: PUSH
21608: LD_INT 1
21610: PUSH
21611: EMPTY
21612: PUSH
21613: LD_INT 1
21615: PUSH
21616: LD_INT 1
21618: PUSH
21619: LD_INT 1
21621: PUSH
21622: LD_INT 0
21624: PUSH
21625: LD_INT 0
21627: PUSH
21628: EMPTY
21629: LIST
21630: LIST
21631: LIST
21632: LIST
21633: LIST
21634: LIST
21635: LIST
21636: LIST
21637: LIST
21638: LIST
21639: PUSH
21640: LD_INT 28
21642: PUSH
21643: LD_INT 24
21645: PUSH
21646: LD_INT 44
21648: PUSH
21649: LD_INT 2
21651: PUSH
21652: EMPTY
21653: PUSH
21654: LD_INT 1
21656: PUSH
21657: LD_INT 1
21659: PUSH
21660: LD_INT 1
21662: PUSH
21663: LD_INT 0
21665: PUSH
21666: LD_INT 0
21668: PUSH
21669: EMPTY
21670: LIST
21671: LIST
21672: LIST
21673: LIST
21674: LIST
21675: LIST
21676: LIST
21677: LIST
21678: LIST
21679: LIST
21680: PUSH
21681: LD_INT 28
21683: PUSH
21684: LD_INT 27
21686: PUSH
21687: LD_INT 26
21689: PUSH
21690: LD_INT 2
21692: PUSH
21693: EMPTY
21694: PUSH
21695: LD_INT 1
21697: PUSH
21698: LD_INT 1
21700: PUSH
21701: LD_INT 1
21703: PUSH
21704: LD_INT 0
21706: PUSH
21707: LD_INT 0
21709: PUSH
21710: EMPTY
21711: LIST
21712: LIST
21713: LIST
21714: LIST
21715: LIST
21716: LIST
21717: LIST
21718: LIST
21719: LIST
21720: LIST
21721: PUSH
21722: LD_INT 1
21724: PUSH
21725: LD_INT 32
21727: PUSH
21728: LD_INT 35
21730: PUSH
21731: LD_INT 4
21733: PUSH
21734: EMPTY
21735: PUSH
21736: LD_INT 1
21738: PUSH
21739: LD_INT 1
21741: PUSH
21742: LD_INT 1
21744: PUSH
21745: LD_INT 0
21747: PUSH
21748: LD_INT 0
21750: PUSH
21751: EMPTY
21752: LIST
21753: LIST
21754: LIST
21755: LIST
21756: LIST
21757: LIST
21758: LIST
21759: LIST
21760: LIST
21761: LIST
21762: PUSH
21763: LD_INT 8
21765: PUSH
21766: LD_INT 21
21768: PUSH
21769: LD_INT 35
21771: PUSH
21772: LD_INT 1
21774: PUSH
21775: LD_INT 15
21777: PUSH
21778: LD_INT 10
21780: PUSH
21781: EMPTY
21782: LIST
21783: LIST
21784: PUSH
21785: LD_INT 1
21787: PUSH
21788: LD_INT 1
21790: PUSH
21791: LD_INT 1
21793: PUSH
21794: LD_INT 0
21796: PUSH
21797: LD_INT 0
21799: PUSH
21800: EMPTY
21801: LIST
21802: LIST
21803: LIST
21804: LIST
21805: LIST
21806: LIST
21807: LIST
21808: LIST
21809: LIST
21810: LIST
21811: PUSH
21812: LD_INT 3
21814: PUSH
21815: LD_INT 18
21817: PUSH
21818: LD_INT 25
21820: PUSH
21821: LD_INT 2
21823: PUSH
21824: EMPTY
21825: PUSH
21826: LD_INT 1
21828: PUSH
21829: LD_INT 1
21831: PUSH
21832: LD_INT 1
21834: PUSH
21835: LD_INT 0
21837: PUSH
21838: LD_INT 0
21840: PUSH
21841: EMPTY
21842: LIST
21843: LIST
21844: LIST
21845: LIST
21846: LIST
21847: LIST
21848: LIST
21849: LIST
21850: LIST
21851: LIST
21852: PUSH
21853: LD_INT 36
21855: PUSH
21856: LD_INT 22
21858: PUSH
21859: LD_INT 40
21861: PUSH
21862: LD_INT 2
21864: PUSH
21865: EMPTY
21866: PUSH
21867: LD_INT 1
21869: PUSH
21870: LD_INT 1
21872: PUSH
21873: LD_INT 1
21875: PUSH
21876: LD_INT 0
21878: PUSH
21879: LD_INT 0
21881: PUSH
21882: EMPTY
21883: LIST
21884: LIST
21885: LIST
21886: LIST
21887: LIST
21888: LIST
21889: LIST
21890: LIST
21891: LIST
21892: LIST
21893: PUSH
21894: LD_INT 16
21896: PUSH
21897: LD_INT 14
21899: PUSH
21900: LD_INT 21
21902: PUSH
21903: LD_INT 2
21905: PUSH
21906: EMPTY
21907: PUSH
21908: LD_INT 1
21910: PUSH
21911: LD_INT 1
21913: PUSH
21914: LD_INT 1
21916: PUSH
21917: LD_INT 0
21919: PUSH
21920: LD_INT 0
21922: PUSH
21923: EMPTY
21924: LIST
21925: LIST
21926: LIST
21927: LIST
21928: LIST
21929: LIST
21930: LIST
21931: LIST
21932: LIST
21933: LIST
21934: PUSH
21935: LD_INT 17
21937: PUSH
21938: LD_INT 15
21940: PUSH
21941: LD_INT 25
21943: PUSH
21944: LD_INT 1
21946: PUSH
21947: EMPTY
21948: PUSH
21949: LD_INT 1
21951: PUSH
21952: LD_INT 1
21954: PUSH
21955: LD_INT 1
21957: PUSH
21958: LD_INT 0
21960: PUSH
21961: LD_INT 0
21963: PUSH
21964: EMPTY
21965: LIST
21966: LIST
21967: LIST
21968: LIST
21969: LIST
21970: LIST
21971: LIST
21972: LIST
21973: LIST
21974: LIST
21975: PUSH
21976: LD_INT 20
21978: PUSH
21979: LD_INT 18
21981: PUSH
21982: LD_INT 29
21984: PUSH
21985: LD_INT 0
21987: PUSH
21988: EMPTY
21989: PUSH
21990: LD_INT 1
21992: PUSH
21993: LD_INT 1
21995: PUSH
21996: LD_INT 1
21998: PUSH
21999: LD_INT 0
22001: PUSH
22002: LD_INT 0
22004: PUSH
22005: EMPTY
22006: LIST
22007: LIST
22008: LIST
22009: LIST
22010: LIST
22011: LIST
22012: LIST
22013: LIST
22014: LIST
22015: LIST
22016: PUSH
22017: EMPTY
22018: LIST
22019: LIST
22020: LIST
22021: LIST
22022: LIST
22023: LIST
22024: LIST
22025: LIST
22026: LIST
22027: LIST
22028: LIST
22029: LIST
22030: LIST
22031: LIST
22032: LIST
22033: LIST
22034: LIST
22035: LIST
22036: ST_TO_ADDR
22037: GO 22834
// builds3 := [ [ b_breastwork , 41 , 23 , 5 , [ ] , 1 , 1 , 1 , 1 , 1 ] , [ b_bunker , 18 , 8 , 4 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 25 , 13 , 4 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 17 , 18 , 4 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 31 , 49 , 5 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 35 , 44 , 5 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 34 , 26 , 0 , [ us_radar ] , 1 , 1 , 1 , 1 , 0 ] , [ b_siberite_mine , 29 , 30 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_mine , 39 , 37 , 1 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_siberite_power , 24 , 44 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_siberite_power , 27 , 26 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_warehouse , 32 , 35 , 4 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_lab_full , 21 , 35 , 1 , [ b_lab_opto , b_lab_weapon ] , 1 , 1 , 1 , 0 , 0 ] , [ b_factory , 18 , 25 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_control_tower , 22 , 40 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_track , 14 , 21 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_gun , 15 , 25 , 1 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_radar , 18 , 29 , 0 , [ ] , 1 , 1 , 1 , 0 , 0 ] ] ;
22039: LD_ADDR_EXP 106
22043: PUSH
22044: LD_INT 31
22046: PUSH
22047: LD_INT 41
22049: PUSH
22050: LD_INT 23
22052: PUSH
22053: LD_INT 5
22055: PUSH
22056: EMPTY
22057: PUSH
22058: LD_INT 1
22060: PUSH
22061: LD_INT 1
22063: PUSH
22064: LD_INT 1
22066: PUSH
22067: LD_INT 1
22069: PUSH
22070: LD_INT 1
22072: PUSH
22073: EMPTY
22074: LIST
22075: LIST
22076: LIST
22077: LIST
22078: LIST
22079: LIST
22080: LIST
22081: LIST
22082: LIST
22083: LIST
22084: PUSH
22085: LD_INT 32
22087: PUSH
22088: LD_INT 18
22090: PUSH
22091: LD_INT 8
22093: PUSH
22094: LD_INT 4
22096: PUSH
22097: LD_INT 4
22099: PUSH
22100: EMPTY
22101: LIST
22102: PUSH
22103: LD_INT 1
22105: PUSH
22106: LD_INT 1
22108: PUSH
22109: LD_INT 1
22111: PUSH
22112: LD_INT 1
22114: PUSH
22115: LD_INT 0
22117: PUSH
22118: EMPTY
22119: LIST
22120: LIST
22121: LIST
22122: LIST
22123: LIST
22124: LIST
22125: LIST
22126: LIST
22127: LIST
22128: LIST
22129: PUSH
22130: LD_INT 32
22132: PUSH
22133: LD_INT 25
22135: PUSH
22136: LD_INT 13
22138: PUSH
22139: LD_INT 4
22141: PUSH
22142: LD_INT 5
22144: PUSH
22145: EMPTY
22146: LIST
22147: PUSH
22148: LD_INT 1
22150: PUSH
22151: LD_INT 1
22153: PUSH
22154: LD_INT 1
22156: PUSH
22157: LD_INT 1
22159: PUSH
22160: LD_INT 0
22162: PUSH
22163: EMPTY
22164: LIST
22165: LIST
22166: LIST
22167: LIST
22168: LIST
22169: LIST
22170: LIST
22171: LIST
22172: LIST
22173: LIST
22174: PUSH
22175: LD_INT 32
22177: PUSH
22178: LD_INT 17
22180: PUSH
22181: LD_INT 18
22183: PUSH
22184: LD_INT 4
22186: PUSH
22187: LD_INT 4
22189: PUSH
22190: EMPTY
22191: LIST
22192: PUSH
22193: LD_INT 1
22195: PUSH
22196: LD_INT 1
22198: PUSH
22199: LD_INT 1
22201: PUSH
22202: LD_INT 1
22204: PUSH
22205: LD_INT 0
22207: PUSH
22208: EMPTY
22209: LIST
22210: LIST
22211: LIST
22212: LIST
22213: LIST
22214: LIST
22215: LIST
22216: LIST
22217: LIST
22218: LIST
22219: PUSH
22220: LD_INT 32
22222: PUSH
22223: LD_INT 31
22225: PUSH
22226: LD_INT 49
22228: PUSH
22229: LD_INT 5
22231: PUSH
22232: LD_INT 4
22234: PUSH
22235: EMPTY
22236: LIST
22237: PUSH
22238: LD_INT 1
22240: PUSH
22241: LD_INT 1
22243: PUSH
22244: LD_INT 1
22246: PUSH
22247: LD_INT 1
22249: PUSH
22250: LD_INT 0
22252: PUSH
22253: EMPTY
22254: LIST
22255: LIST
22256: LIST
22257: LIST
22258: LIST
22259: LIST
22260: LIST
22261: LIST
22262: LIST
22263: LIST
22264: PUSH
22265: LD_INT 32
22267: PUSH
22268: LD_INT 35
22270: PUSH
22271: LD_INT 44
22273: PUSH
22274: LD_INT 5
22276: PUSH
22277: LD_INT 5
22279: PUSH
22280: EMPTY
22281: LIST
22282: PUSH
22283: LD_INT 1
22285: PUSH
22286: LD_INT 1
22288: PUSH
22289: LD_INT 1
22291: PUSH
22292: LD_INT 1
22294: PUSH
22295: LD_INT 0
22297: PUSH
22298: EMPTY
22299: LIST
22300: LIST
22301: LIST
22302: LIST
22303: LIST
22304: LIST
22305: LIST
22306: LIST
22307: LIST
22308: LIST
22309: PUSH
22310: LD_INT 32
22312: PUSH
22313: LD_INT 34
22315: PUSH
22316: LD_INT 26
22318: PUSH
22319: LD_INT 0
22321: PUSH
22322: LD_INT 11
22324: PUSH
22325: EMPTY
22326: LIST
22327: PUSH
22328: LD_INT 1
22330: PUSH
22331: LD_INT 1
22333: PUSH
22334: LD_INT 1
22336: PUSH
22337: LD_INT 1
22339: PUSH
22340: LD_INT 0
22342: PUSH
22343: EMPTY
22344: LIST
22345: LIST
22346: LIST
22347: LIST
22348: LIST
22349: LIST
22350: LIST
22351: LIST
22352: LIST
22353: LIST
22354: PUSH
22355: LD_INT 30
22357: PUSH
22358: LD_INT 29
22360: PUSH
22361: LD_INT 30
22363: PUSH
22364: LD_INT 2
22366: PUSH
22367: EMPTY
22368: PUSH
22369: LD_INT 1
22371: PUSH
22372: LD_INT 1
22374: PUSH
22375: LD_INT 1
22377: PUSH
22378: LD_INT 0
22380: PUSH
22381: LD_INT 0
22383: PUSH
22384: EMPTY
22385: LIST
22386: LIST
22387: LIST
22388: LIST
22389: LIST
22390: LIST
22391: LIST
22392: LIST
22393: LIST
22394: LIST
22395: PUSH
22396: LD_INT 29
22398: PUSH
22399: LD_INT 39
22401: PUSH
22402: LD_INT 37
22404: PUSH
22405: LD_INT 1
22407: PUSH
22408: EMPTY
22409: PUSH
22410: LD_INT 1
22412: PUSH
22413: LD_INT 1
22415: PUSH
22416: LD_INT 1
22418: PUSH
22419: LD_INT 0
22421: PUSH
22422: LD_INT 0
22424: PUSH
22425: EMPTY
22426: LIST
22427: LIST
22428: LIST
22429: LIST
22430: LIST
22431: LIST
22432: LIST
22433: LIST
22434: LIST
22435: LIST
22436: PUSH
22437: LD_INT 28
22439: PUSH
22440: LD_INT 24
22442: PUSH
22443: LD_INT 44
22445: PUSH
22446: LD_INT 2
22448: PUSH
22449: EMPTY
22450: PUSH
22451: LD_INT 1
22453: PUSH
22454: LD_INT 1
22456: PUSH
22457: LD_INT 1
22459: PUSH
22460: LD_INT 0
22462: PUSH
22463: LD_INT 0
22465: PUSH
22466: EMPTY
22467: LIST
22468: LIST
22469: LIST
22470: LIST
22471: LIST
22472: LIST
22473: LIST
22474: LIST
22475: LIST
22476: LIST
22477: PUSH
22478: LD_INT 28
22480: PUSH
22481: LD_INT 27
22483: PUSH
22484: LD_INT 26
22486: PUSH
22487: LD_INT 2
22489: PUSH
22490: EMPTY
22491: PUSH
22492: LD_INT 1
22494: PUSH
22495: LD_INT 1
22497: PUSH
22498: LD_INT 1
22500: PUSH
22501: LD_INT 0
22503: PUSH
22504: LD_INT 0
22506: PUSH
22507: EMPTY
22508: LIST
22509: LIST
22510: LIST
22511: LIST
22512: LIST
22513: LIST
22514: LIST
22515: LIST
22516: LIST
22517: LIST
22518: PUSH
22519: LD_INT 1
22521: PUSH
22522: LD_INT 32
22524: PUSH
22525: LD_INT 35
22527: PUSH
22528: LD_INT 4
22530: PUSH
22531: EMPTY
22532: PUSH
22533: LD_INT 1
22535: PUSH
22536: LD_INT 1
22538: PUSH
22539: LD_INT 1
22541: PUSH
22542: LD_INT 0
22544: PUSH
22545: LD_INT 0
22547: PUSH
22548: EMPTY
22549: LIST
22550: LIST
22551: LIST
22552: LIST
22553: LIST
22554: LIST
22555: LIST
22556: LIST
22557: LIST
22558: LIST
22559: PUSH
22560: LD_INT 8
22562: PUSH
22563: LD_INT 21
22565: PUSH
22566: LD_INT 35
22568: PUSH
22569: LD_INT 1
22571: PUSH
22572: LD_INT 15
22574: PUSH
22575: LD_INT 10
22577: PUSH
22578: EMPTY
22579: LIST
22580: LIST
22581: PUSH
22582: LD_INT 1
22584: PUSH
22585: LD_INT 1
22587: PUSH
22588: LD_INT 1
22590: PUSH
22591: LD_INT 0
22593: PUSH
22594: LD_INT 0
22596: PUSH
22597: EMPTY
22598: LIST
22599: LIST
22600: LIST
22601: LIST
22602: LIST
22603: LIST
22604: LIST
22605: LIST
22606: LIST
22607: LIST
22608: PUSH
22609: LD_INT 3
22611: PUSH
22612: LD_INT 18
22614: PUSH
22615: LD_INT 25
22617: PUSH
22618: LD_INT 2
22620: PUSH
22621: EMPTY
22622: PUSH
22623: LD_INT 1
22625: PUSH
22626: LD_INT 1
22628: PUSH
22629: LD_INT 1
22631: PUSH
22632: LD_INT 0
22634: PUSH
22635: LD_INT 0
22637: PUSH
22638: EMPTY
22639: LIST
22640: LIST
22641: LIST
22642: LIST
22643: LIST
22644: LIST
22645: LIST
22646: LIST
22647: LIST
22648: LIST
22649: PUSH
22650: LD_INT 36
22652: PUSH
22653: LD_INT 22
22655: PUSH
22656: LD_INT 40
22658: PUSH
22659: LD_INT 2
22661: PUSH
22662: EMPTY
22663: PUSH
22664: LD_INT 1
22666: PUSH
22667: LD_INT 1
22669: PUSH
22670: LD_INT 1
22672: PUSH
22673: LD_INT 0
22675: PUSH
22676: LD_INT 0
22678: PUSH
22679: EMPTY
22680: LIST
22681: LIST
22682: LIST
22683: LIST
22684: LIST
22685: LIST
22686: LIST
22687: LIST
22688: LIST
22689: LIST
22690: PUSH
22691: LD_INT 16
22693: PUSH
22694: LD_INT 14
22696: PUSH
22697: LD_INT 21
22699: PUSH
22700: LD_INT 2
22702: PUSH
22703: EMPTY
22704: PUSH
22705: LD_INT 1
22707: PUSH
22708: LD_INT 1
22710: PUSH
22711: LD_INT 1
22713: PUSH
22714: LD_INT 0
22716: PUSH
22717: LD_INT 0
22719: PUSH
22720: EMPTY
22721: LIST
22722: LIST
22723: LIST
22724: LIST
22725: LIST
22726: LIST
22727: LIST
22728: LIST
22729: LIST
22730: LIST
22731: PUSH
22732: LD_INT 17
22734: PUSH
22735: LD_INT 15
22737: PUSH
22738: LD_INT 25
22740: PUSH
22741: LD_INT 1
22743: PUSH
22744: EMPTY
22745: PUSH
22746: LD_INT 1
22748: PUSH
22749: LD_INT 1
22751: PUSH
22752: LD_INT 1
22754: PUSH
22755: LD_INT 0
22757: PUSH
22758: LD_INT 0
22760: PUSH
22761: EMPTY
22762: LIST
22763: LIST
22764: LIST
22765: LIST
22766: LIST
22767: LIST
22768: LIST
22769: LIST
22770: LIST
22771: LIST
22772: PUSH
22773: LD_INT 20
22775: PUSH
22776: LD_INT 18
22778: PUSH
22779: LD_INT 29
22781: PUSH
22782: LD_INT 0
22784: PUSH
22785: EMPTY
22786: PUSH
22787: LD_INT 1
22789: PUSH
22790: LD_INT 1
22792: PUSH
22793: LD_INT 1
22795: PUSH
22796: LD_INT 0
22798: PUSH
22799: LD_INT 0
22801: PUSH
22802: EMPTY
22803: LIST
22804: LIST
22805: LIST
22806: LIST
22807: LIST
22808: LIST
22809: LIST
22810: LIST
22811: LIST
22812: LIST
22813: PUSH
22814: EMPTY
22815: LIST
22816: LIST
22817: LIST
22818: LIST
22819: LIST
22820: LIST
22821: LIST
22822: LIST
22823: LIST
22824: LIST
22825: LIST
22826: LIST
22827: LIST
22828: LIST
22829: LIST
22830: LIST
22831: LIST
22832: LIST
22833: ST_TO_ADDR
// builds4 := [ [ b_factory , 45 , 57 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_track , 42 , 54 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_gun , 45 , 53 , 3 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_noncombat , 48 , 57 , 4 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_ext_radar , 49 , 61 , 5 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_oil_power , 39 , 50 , 2 , [ ] , 1 , 1 , 1 , 0 , 0 ] , [ b_barracks , 53 , 67 , 5 , [ ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 57 , 65 , 5 , [ us_radar ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 57 , 68 , 5 , [ us_double_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 52 , 47 , 3 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] , [ b_bunker , 60 , 59 , 4 , [ us_gatling_gun ] , 1 , 1 , 1 , 1 , 0 ] ] ;
22834: LD_ADDR_EXP 107
22838: PUSH
22839: LD_INT 3
22841: PUSH
22842: LD_INT 45
22844: PUSH
22845: LD_INT 57
22847: PUSH
22848: LD_INT 3
22850: PUSH
22851: EMPTY
22852: PUSH
22853: LD_INT 1
22855: PUSH
22856: LD_INT 1
22858: PUSH
22859: LD_INT 1
22861: PUSH
22862: LD_INT 0
22864: PUSH
22865: LD_INT 0
22867: PUSH
22868: EMPTY
22869: LIST
22870: LIST
22871: LIST
22872: LIST
22873: LIST
22874: LIST
22875: LIST
22876: LIST
22877: LIST
22878: LIST
22879: PUSH
22880: LD_INT 16
22882: PUSH
22883: LD_INT 42
22885: PUSH
22886: LD_INT 54
22888: PUSH
22889: LD_INT 2
22891: PUSH
22892: EMPTY
22893: PUSH
22894: LD_INT 1
22896: PUSH
22897: LD_INT 1
22899: PUSH
22900: LD_INT 1
22902: PUSH
22903: LD_INT 0
22905: PUSH
22906: LD_INT 0
22908: PUSH
22909: EMPTY
22910: LIST
22911: LIST
22912: LIST
22913: LIST
22914: LIST
22915: LIST
22916: LIST
22917: LIST
22918: LIST
22919: LIST
22920: PUSH
22921: LD_INT 17
22923: PUSH
22924: LD_INT 45
22926: PUSH
22927: LD_INT 53
22929: PUSH
22930: LD_INT 3
22932: PUSH
22933: EMPTY
22934: PUSH
22935: LD_INT 1
22937: PUSH
22938: LD_INT 1
22940: PUSH
22941: LD_INT 1
22943: PUSH
22944: LD_INT 0
22946: PUSH
22947: LD_INT 0
22949: PUSH
22950: EMPTY
22951: LIST
22952: LIST
22953: LIST
22954: LIST
22955: LIST
22956: LIST
22957: LIST
22958: LIST
22959: LIST
22960: LIST
22961: PUSH
22962: LD_INT 19
22964: PUSH
22965: LD_INT 48
22967: PUSH
22968: LD_INT 57
22970: PUSH
22971: LD_INT 4
22973: PUSH
22974: EMPTY
22975: PUSH
22976: LD_INT 1
22978: PUSH
22979: LD_INT 1
22981: PUSH
22982: LD_INT 1
22984: PUSH
22985: LD_INT 0
22987: PUSH
22988: LD_INT 0
22990: PUSH
22991: EMPTY
22992: LIST
22993: LIST
22994: LIST
22995: LIST
22996: LIST
22997: LIST
22998: LIST
22999: LIST
23000: LIST
23001: LIST
23002: PUSH
23003: LD_INT 20
23005: PUSH
23006: LD_INT 49
23008: PUSH
23009: LD_INT 61
23011: PUSH
23012: LD_INT 5
23014: PUSH
23015: EMPTY
23016: PUSH
23017: LD_INT 1
23019: PUSH
23020: LD_INT 1
23022: PUSH
23023: LD_INT 1
23025: PUSH
23026: LD_INT 0
23028: PUSH
23029: LD_INT 0
23031: PUSH
23032: EMPTY
23033: LIST
23034: LIST
23035: LIST
23036: LIST
23037: LIST
23038: LIST
23039: LIST
23040: LIST
23041: LIST
23042: LIST
23043: PUSH
23044: LD_INT 26
23046: PUSH
23047: LD_INT 39
23049: PUSH
23050: LD_INT 50
23052: PUSH
23053: LD_INT 2
23055: PUSH
23056: EMPTY
23057: PUSH
23058: LD_INT 1
23060: PUSH
23061: LD_INT 1
23063: PUSH
23064: LD_INT 1
23066: PUSH
23067: LD_INT 0
23069: PUSH
23070: LD_INT 0
23072: PUSH
23073: EMPTY
23074: LIST
23075: LIST
23076: LIST
23077: LIST
23078: LIST
23079: LIST
23080: LIST
23081: LIST
23082: LIST
23083: LIST
23084: PUSH
23085: LD_INT 5
23087: PUSH
23088: LD_INT 53
23090: PUSH
23091: LD_INT 67
23093: PUSH
23094: LD_INT 5
23096: PUSH
23097: EMPTY
23098: PUSH
23099: LD_INT 1
23101: PUSH
23102: LD_INT 1
23104: PUSH
23105: LD_INT 1
23107: PUSH
23108: LD_INT 1
23110: PUSH
23111: LD_INT 0
23113: PUSH
23114: EMPTY
23115: LIST
23116: LIST
23117: LIST
23118: LIST
23119: LIST
23120: LIST
23121: LIST
23122: LIST
23123: LIST
23124: LIST
23125: PUSH
23126: LD_INT 32
23128: PUSH
23129: LD_INT 57
23131: PUSH
23132: LD_INT 65
23134: PUSH
23135: LD_INT 5
23137: PUSH
23138: LD_INT 11
23140: PUSH
23141: EMPTY
23142: LIST
23143: PUSH
23144: LD_INT 1
23146: PUSH
23147: LD_INT 1
23149: PUSH
23150: LD_INT 1
23152: PUSH
23153: LD_INT 1
23155: PUSH
23156: LD_INT 0
23158: PUSH
23159: EMPTY
23160: LIST
23161: LIST
23162: LIST
23163: LIST
23164: LIST
23165: LIST
23166: LIST
23167: LIST
23168: LIST
23169: LIST
23170: PUSH
23171: LD_INT 32
23173: PUSH
23174: LD_INT 57
23176: PUSH
23177: LD_INT 68
23179: PUSH
23180: LD_INT 5
23182: PUSH
23183: LD_INT 5
23185: PUSH
23186: EMPTY
23187: LIST
23188: PUSH
23189: LD_INT 1
23191: PUSH
23192: LD_INT 1
23194: PUSH
23195: LD_INT 1
23197: PUSH
23198: LD_INT 1
23200: PUSH
23201: LD_INT 0
23203: PUSH
23204: EMPTY
23205: LIST
23206: LIST
23207: LIST
23208: LIST
23209: LIST
23210: LIST
23211: LIST
23212: LIST
23213: LIST
23214: LIST
23215: PUSH
23216: LD_INT 32
23218: PUSH
23219: LD_INT 52
23221: PUSH
23222: LD_INT 47
23224: PUSH
23225: LD_INT 3
23227: PUSH
23228: LD_INT 4
23230: PUSH
23231: EMPTY
23232: LIST
23233: PUSH
23234: LD_INT 1
23236: PUSH
23237: LD_INT 1
23239: PUSH
23240: LD_INT 1
23242: PUSH
23243: LD_INT 1
23245: PUSH
23246: LD_INT 0
23248: PUSH
23249: EMPTY
23250: LIST
23251: LIST
23252: LIST
23253: LIST
23254: LIST
23255: LIST
23256: LIST
23257: LIST
23258: LIST
23259: LIST
23260: PUSH
23261: LD_INT 32
23263: PUSH
23264: LD_INT 60
23266: PUSH
23267: LD_INT 59
23269: PUSH
23270: LD_INT 4
23272: PUSH
23273: LD_INT 4
23275: PUSH
23276: EMPTY
23277: LIST
23278: PUSH
23279: LD_INT 1
23281: PUSH
23282: LD_INT 1
23284: PUSH
23285: LD_INT 1
23287: PUSH
23288: LD_INT 1
23290: PUSH
23291: LD_INT 0
23293: PUSH
23294: EMPTY
23295: LIST
23296: LIST
23297: LIST
23298: LIST
23299: LIST
23300: LIST
23301: LIST
23302: LIST
23303: LIST
23304: LIST
23305: PUSH
23306: EMPTY
23307: LIST
23308: LIST
23309: LIST
23310: LIST
23311: LIST
23312: LIST
23313: LIST
23314: LIST
23315: LIST
23316: LIST
23317: LIST
23318: ST_TO_ADDR
// builds5 := [ [ b_breastwork , 67 , 34 , 5 , [ ] , 1 , 0 , 0 , 1 , 1 ] , [ b_breastwork , 83 , 38 , 1 , [ ] , 1 , 0 , 0 , 1 , 0 ] ] ;
23319: LD_ADDR_EXP 108
23323: PUSH
23324: LD_INT 31
23326: PUSH
23327: LD_INT 67
23329: PUSH
23330: LD_INT 34
23332: PUSH
23333: LD_INT 5
23335: PUSH
23336: EMPTY
23337: PUSH
23338: LD_INT 1
23340: PUSH
23341: LD_INT 0
23343: PUSH
23344: LD_INT 0
23346: PUSH
23347: LD_INT 1
23349: PUSH
23350: LD_INT 1
23352: PUSH
23353: EMPTY
23354: LIST
23355: LIST
23356: LIST
23357: LIST
23358: LIST
23359: LIST
23360: LIST
23361: LIST
23362: LIST
23363: LIST
23364: PUSH
23365: LD_INT 31
23367: PUSH
23368: LD_INT 83
23370: PUSH
23371: LD_INT 38
23373: PUSH
23374: LD_INT 1
23376: PUSH
23377: EMPTY
23378: PUSH
23379: LD_INT 1
23381: PUSH
23382: LD_INT 0
23384: PUSH
23385: LD_INT 0
23387: PUSH
23388: LD_INT 1
23390: PUSH
23391: LD_INT 0
23393: PUSH
23394: EMPTY
23395: LIST
23396: LIST
23397: LIST
23398: LIST
23399: LIST
23400: LIST
23401: LIST
23402: LIST
23403: LIST
23404: LIST
23405: PUSH
23406: EMPTY
23407: LIST
23408: LIST
23409: ST_TO_ADDR
// can_repair := [ ] ;
23410: LD_ADDR_EXP 116
23414: PUSH
23415: EMPTY
23416: ST_TO_ADDR
// can_rebuild := [ ] ;
23417: LD_ADDR_EXP 115
23421: PUSH
23422: EMPTY
23423: ST_TO_ADDR
// fort := [ ] ;
23424: LD_ADDR_EXP 119
23428: PUSH
23429: EMPTY
23430: ST_TO_ADDR
// SetResourceVisibility ( 101 , 93 , ai ) ;
23431: LD_INT 101
23433: PPUSH
23434: LD_INT 93
23436: PPUSH
23437: LD_EXP 6
23441: PPUSH
23442: CALL_OW 441
// b1 := place_base ( builds1 , kolik_je_v_depotu , 11 , 0 , b1_levels ) ;
23446: LD_ADDR_EXP 128
23450: PUSH
23451: LD_EXP 104
23455: PPUSH
23456: LD_EXP 35
23460: PPUSH
23461: LD_INT 11
23463: PPUSH
23464: LD_INT 0
23466: PPUSH
23467: LD_EXP 19
23471: PPUSH
23472: CALL 23987 0 5
23476: ST_TO_ADDR
// b2 := place_base ( builds2 , 250 , 94 , kolik_je_sib_v_hornim , b2_levels ) ;
23477: LD_ADDR_EXP 129
23481: PUSH
23482: LD_EXP 105
23486: PPUSH
23487: LD_INT 250
23489: PPUSH
23490: LD_INT 94
23492: PPUSH
23493: LD_EXP 36
23497: PPUSH
23498: LD_EXP 20
23502: PPUSH
23503: CALL 23987 0 5
23507: ST_TO_ADDR
// b3 := place_base ( builds3 , 4180 , 6400 , 500 , b3_levels ) ;
23508: LD_ADDR_EXP 130
23512: PUSH
23513: LD_EXP 106
23517: PPUSH
23518: LD_INT 4180
23520: PPUSH
23521: LD_INT 6400
23523: PPUSH
23524: LD_INT 500
23526: PPUSH
23527: LD_EXP 21
23531: PPUSH
23532: CALL 23987 0 5
23536: ST_TO_ADDR
// b4 := place_base ( builds4 , 0 , 0 , 0 , b4_levels ) ;
23537: LD_ADDR_EXP 131
23541: PUSH
23542: LD_EXP 107
23546: PPUSH
23547: LD_INT 0
23549: PPUSH
23550: LD_INT 0
23552: PPUSH
23553: LD_INT 0
23555: PPUSH
23556: LD_EXP 22
23560: PPUSH
23561: CALL 23987 0 5
23565: ST_TO_ADDR
// b5 := place_base ( builds5 , 0 , 0 , 0 , b5_levels ) ;
23566: LD_ADDR_EXP 132
23570: PUSH
23571: LD_EXP 108
23575: PPUSH
23576: LD_INT 0
23578: PPUSH
23579: LD_INT 0
23581: PPUSH
23582: LD_INT 0
23584: PPUSH
23585: LD_EXP 23
23589: PPUSH
23590: CALL 23987 0 5
23594: ST_TO_ADDR
// if fast_braketrough then
23595: LD_EXP 78
23599: IFFALSE 23632
// SetLives ( UnitFilter ( b1 , [ f_btype , b_armoury ] ) , zivoty_armoury ) else
23601: LD_EXP 128
23605: PPUSH
23606: LD_INT 30
23608: PUSH
23609: LD_INT 4
23611: PUSH
23612: EMPTY
23613: LIST
23614: LIST
23615: PPUSH
23616: CALL_OW 72
23620: PPUSH
23621: LD_EXP 37
23625: PPUSH
23626: CALL_OW 234
23630: GO 23661
// SetLives ( UnitFilter ( b1 , [ f_btype , b_armoury ] ) , zivoty_armoury2 ) ;
23632: LD_EXP 128
23636: PPUSH
23637: LD_INT 30
23639: PUSH
23640: LD_INT 4
23642: PUSH
23643: EMPTY
23644: LIST
23645: LIST
23646: PPUSH
23647: CALL_OW 72
23651: PPUSH
23652: LD_EXP 38
23656: PPUSH
23657: CALL_OW 234
// a1 := place_amici ( aici1 , abase1 ) ;
23661: LD_ADDR_EXP 133
23665: PUSH
23666: LD_EXP 109
23670: PPUSH
23671: LD_INT 9
23673: PPUSH
23674: CALL 24576 0 2
23678: ST_TO_ADDR
// for i in a1 do
23679: LD_ADDR_VAR 0 2
23683: PUSH
23684: LD_EXP 133
23688: PUSH
23689: FOR_IN
23690: IFFALSE 23706
// SetTag ( i , 1 ) ;
23692: LD_VAR 0 2
23696: PPUSH
23697: LD_INT 1
23699: PPUSH
23700: CALL_OW 109
23704: GO 23689
23706: POP
23707: POP
// a2 := place_amici ( aici2 , abase2 ) ;
23708: LD_ADDR_EXP 134
23712: PUSH
23713: LD_EXP 110
23717: PPUSH
23718: LD_INT 8
23720: PPUSH
23721: CALL 24576 0 2
23725: ST_TO_ADDR
// for i in a2 do
23726: LD_ADDR_VAR 0 2
23730: PUSH
23731: LD_EXP 134
23735: PUSH
23736: FOR_IN
23737: IFFALSE 23753
// SetTag ( i , 2 ) ;
23739: LD_VAR 0 2
23743: PPUSH
23744: LD_INT 2
23746: PPUSH
23747: CALL_OW 109
23751: GO 23736
23753: POP
23754: POP
// a3 := place_amici ( aici3 , abase3 ) ;
23755: LD_ADDR_EXP 135
23759: PUSH
23760: LD_EXP 111
23764: PPUSH
23765: LD_INT 6
23767: PPUSH
23768: CALL 24576 0 2
23772: ST_TO_ADDR
// for i in a3 do
23773: LD_ADDR_VAR 0 2
23777: PUSH
23778: LD_EXP 135
23782: PUSH
23783: FOR_IN
23784: IFFALSE 23800
// SetTag ( i , 3 ) ;
23786: LD_VAR 0 2
23790: PPUSH
23791: LD_INT 3
23793: PPUSH
23794: CALL_OW 109
23798: GO 23783
23800: POP
23801: POP
// a4 := place_amici ( aici4 , abase4 ) ;
23802: LD_ADDR_EXP 136
23806: PUSH
23807: LD_EXP 112
23811: PPUSH
23812: LD_INT 7
23814: PPUSH
23815: CALL 24576 0 2
23819: ST_TO_ADDR
// for i in a4 do
23820: LD_ADDR_VAR 0 2
23824: PUSH
23825: LD_EXP 136
23829: PUSH
23830: FOR_IN
23831: IFFALSE 23847
// SetTag ( i , 4 ) ;
23833: LD_VAR 0 2
23837: PPUSH
23838: LD_INT 4
23840: PPUSH
23841: CALL_OW 109
23845: GO 23830
23847: POP
23848: POP
// a5 := place_amici ( aici5 , abase5 ) ;
23849: LD_ADDR_EXP 137
23853: PUSH
23854: LD_EXP 113
23858: PPUSH
23859: LD_INT 10
23861: PPUSH
23862: CALL 24576 0 2
23866: ST_TO_ADDR
// for i in a5 do
23867: LD_ADDR_VAR 0 2
23871: PUSH
23872: LD_EXP 137
23876: PUSH
23877: FOR_IN
23878: IFFALSE 23894
// SetTag ( i , 5 ) ;
23880: LD_VAR 0 2
23884: PPUSH
23885: LD_INT 5
23887: PPUSH
23888: CALL_OW 109
23892: GO 23877
23894: POP
23895: POP
// a1eng := UnitFilter ( a1 , [ [ f_class , class_engineer ] ] ) ;
23896: LD_ADDR_EXP 114
23900: PUSH
23901: LD_EXP 133
23905: PPUSH
23906: LD_INT 25
23908: PUSH
23909: LD_INT 2
23911: PUSH
23912: EMPTY
23913: LIST
23914: LIST
23915: PUSH
23916: EMPTY
23917: LIST
23918: PPUSH
23919: CALL_OW 72
23923: ST_TO_ADDR
// if a1eng then
23924: LD_EXP 114
23928: IFFALSE 23944
// a1eng := a1eng [ 1 ] ;
23930: LD_ADDR_EXP 114
23934: PUSH
23935: LD_EXP 114
23939: PUSH
23940: LD_INT 1
23942: ARRAY
23943: ST_TO_ADDR
// InitUc ;
23944: CALL_OW 18
// InitHc ;
23948: CALL_OW 19
// uc_side := ai ;
23952: LD_ADDR_OWVAR 20
23956: PUSH
23957: LD_EXP 6
23961: ST_TO_ADDR
// uc_nation := americans ;
23962: LD_ADDR_OWVAR 21
23966: PUSH
23967: LD_EXP 3
23971: ST_TO_ADDR
// PrepareSoldier ( sex_male , 10 ) ;
23972: LD_INT 1
23974: PPUSH
23975: LD_INT 10
23977: PPUSH
23978: CALL_OW 381
// end ;
23982: LD_VAR 0 1
23986: RET
// function place_base ( builds , cans , oil , sib , levels ) ; var i , base , b , tb , bb ; begin
23987: LD_INT 0
23989: PPUSH
23990: PPUSH
23991: PPUSH
23992: PPUSH
23993: PPUSH
23994: PPUSH
// InitUc ;
23995: CALL_OW 18
// InitBc ;
23999: CALL_OW 21
// uc_side := americans ;
24003: LD_ADDR_OWVAR 20
24007: PUSH
24008: LD_EXP 3
24012: ST_TO_ADDR
// uc_nation := nation_american ;
24013: LD_ADDR_OWVAR 21
24017: PUSH
24018: LD_INT 1
24020: ST_TO_ADDR
// b := [ ] ;
24021: LD_ADDR_VAR 0 9
24025: PUSH
24026: EMPTY
24027: ST_TO_ADDR
// for i in builds do
24028: LD_ADDR_VAR 0 7
24032: PUSH
24033: LD_VAR 0 1
24037: PUSH
24038: FOR_IN
24039: IFFALSE 24440
// begin tb := get_build ( i [ 2 ] , i [ 3 ] , 0 ) ;
24041: LD_ADDR_VAR 0 10
24045: PUSH
24046: LD_VAR 0 7
24050: PUSH
24051: LD_INT 2
24053: ARRAY
24054: PPUSH
24055: LD_VAR 0 7
24059: PUSH
24060: LD_INT 3
24062: ARRAY
24063: PPUSH
24064: LD_INT 0
24066: PPUSH
24067: CALL 25922 0 3
24071: ST_TO_ADDR
// if tb and not i [ 6 ] then
24072: LD_VAR 0 10
24076: PUSH
24077: LD_VAR 0 7
24081: PUSH
24082: LD_INT 6
24084: ARRAY
24085: NOT
24086: AND
24087: IFFALSE 24098
// RemoveUnit ( tb ) ;
24089: LD_VAR 0 10
24093: PPUSH
24094: CALL_OW 64
// if not tb and i [ 6 ] then
24098: LD_VAR 0 10
24102: NOT
24103: PUSH
24104: LD_VAR 0 7
24108: PUSH
24109: LD_INT 6
24111: ARRAY
24112: AND
24113: IFFALSE 24274
// begin bc_type := i [ 1 ] ;
24115: LD_ADDR_OWVAR 42
24119: PUSH
24120: LD_VAR 0 7
24124: PUSH
24125: LD_INT 1
24127: ARRAY
24128: ST_TO_ADDR
// if bc_type = b_lab or bc_type = b_lab_half or bc_type = b_lab_full then
24129: LD_OWVAR 42
24133: PUSH
24134: LD_INT 6
24136: EQUAL
24137: PUSH
24138: LD_OWVAR 42
24142: PUSH
24143: LD_INT 7
24145: EQUAL
24146: OR
24147: PUSH
24148: LD_OWVAR 42
24152: PUSH
24153: LD_INT 8
24155: EQUAL
24156: OR
24157: IFFALSE 24195
// begin bc_kind1 := i [ 5 ] [ 1 ] ;
24159: LD_ADDR_OWVAR 44
24163: PUSH
24164: LD_VAR 0 7
24168: PUSH
24169: LD_INT 5
24171: ARRAY
24172: PUSH
24173: LD_INT 1
24175: ARRAY
24176: ST_TO_ADDR
// bc_kind2 := i [ 5 ] [ 2 ] ;
24177: LD_ADDR_OWVAR 45
24181: PUSH
24182: LD_VAR 0 7
24186: PUSH
24187: LD_INT 5
24189: ARRAY
24190: PUSH
24191: LD_INT 2
24193: ARRAY
24194: ST_TO_ADDR
// end ; tb := CreateAndPlaceBuildingXYD ( i [ 2 ] , i [ 3 ] , i [ 4 ] ) ;
24195: LD_ADDR_VAR 0 10
24199: PUSH
24200: LD_VAR 0 7
24204: PUSH
24205: LD_INT 2
24207: ARRAY
24208: PPUSH
24209: LD_VAR 0 7
24213: PUSH
24214: LD_INT 3
24216: ARRAY
24217: PPUSH
24218: LD_VAR 0 7
24222: PUSH
24223: LD_INT 4
24225: ARRAY
24226: PPUSH
24227: CALL_OW 47
24231: ST_TO_ADDR
// if bc_type = b_bunker or bc_type = b_turret then
24232: LD_OWVAR 42
24236: PUSH
24237: LD_INT 32
24239: EQUAL
24240: PUSH
24241: LD_OWVAR 42
24245: PUSH
24246: LD_INT 33
24248: EQUAL
24249: OR
24250: IFFALSE 24274
// PlaceWeaponTurret ( tb , i [ 5 ] [ 1 ] ) ;
24252: LD_VAR 0 10
24256: PPUSH
24257: LD_VAR 0 7
24261: PUSH
24262: LD_INT 5
24264: ARRAY
24265: PUSH
24266: LD_INT 1
24268: ARRAY
24269: PPUSH
24270: CALL_OW 431
// end ; if i [ 6 ] then
24274: LD_VAR 0 7
24278: PUSH
24279: LD_INT 6
24281: ARRAY
24282: IFFALSE 24303
// b := b ^ [ tb ] ;
24284: LD_ADDR_VAR 0 9
24288: PUSH
24289: LD_VAR 0 9
24293: PUSH
24294: LD_VAR 0 10
24298: PUSH
24299: EMPTY
24300: LIST
24301: ADD
24302: ST_TO_ADDR
// if i [ 7 ] then
24303: LD_VAR 0 7
24307: PUSH
24308: LD_INT 7
24310: ARRAY
24311: IFFALSE 24332
// can_rebuild := can_rebuild ^ [ tb ] ;
24313: LD_ADDR_EXP 115
24317: PUSH
24318: LD_EXP 115
24322: PUSH
24323: LD_VAR 0 10
24327: PUSH
24328: EMPTY
24329: LIST
24330: ADD
24331: ST_TO_ADDR
// if i [ 8 ] then
24332: LD_VAR 0 7
24336: PUSH
24337: LD_INT 8
24339: ARRAY
24340: IFFALSE 24361
// can_repair := can_rebuild ^ [ tb ] ;
24342: LD_ADDR_EXP 116
24346: PUSH
24347: LD_EXP 115
24351: PUSH
24352: LD_VAR 0 10
24356: PUSH
24357: EMPTY
24358: LIST
24359: ADD
24360: ST_TO_ADDR
// if i [ 9 ] then
24361: LD_VAR 0 7
24365: PUSH
24366: LD_INT 9
24368: ARRAY
24369: IFFALSE 24390
// fort := fort ^ [ tb ] ;
24371: LD_ADDR_EXP 119
24375: PUSH
24376: LD_EXP 119
24380: PUSH
24381: LD_VAR 0 10
24385: PUSH
24386: EMPTY
24387: LIST
24388: ADD
24389: ST_TO_ADDR
// if i [ 10 ] then
24390: LD_VAR 0 7
24394: PUSH
24395: LD_INT 10
24397: ARRAY
24398: IFFALSE 24420
// SetBLevel ( tb , levels [ 1 ] ) else
24400: LD_VAR 0 10
24404: PPUSH
24405: LD_VAR 0 5
24409: PUSH
24410: LD_INT 1
24412: ARRAY
24413: PPUSH
24414: CALL_OW 241
24418: GO 24438
// SetBLevel ( tb , levels [ 2 ] ) ;
24420: LD_VAR 0 10
24424: PPUSH
24425: LD_VAR 0 5
24429: PUSH
24430: LD_INT 2
24432: ARRAY
24433: PPUSH
24434: CALL_OW 241
// end ;
24438: GO 24038
24440: POP
24441: POP
// bb := UnitFilter ( b , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) ;
24442: LD_ADDR_VAR 0 11
24446: PUSH
24447: LD_VAR 0 9
24451: PPUSH
24452: LD_INT 2
24454: PUSH
24455: LD_INT 30
24457: PUSH
24458: LD_INT 0
24460: PUSH
24461: EMPTY
24462: LIST
24463: LIST
24464: PUSH
24465: LD_INT 30
24467: PUSH
24468: LD_INT 1
24470: PUSH
24471: EMPTY
24472: LIST
24473: LIST
24474: PUSH
24475: EMPTY
24476: LIST
24477: LIST
24478: LIST
24479: PPUSH
24480: CALL_OW 72
24484: ST_TO_ADDR
// if bb then
24485: LD_VAR 0 11
24489: IFFALSE 24561
// begin base := GetBase ( bb [ 1 ] ) ;
24491: LD_ADDR_VAR 0 8
24495: PUSH
24496: LD_VAR 0 11
24500: PUSH
24501: LD_INT 1
24503: ARRAY
24504: PPUSH
24505: CALL_OW 274
24509: ST_TO_ADDR
// SetResourceType ( base , mat_cans , cans ) ;
24510: LD_VAR 0 8
24514: PPUSH
24515: LD_INT 1
24517: PPUSH
24518: LD_VAR 0 2
24522: PPUSH
24523: CALL_OW 277
// SetResourceType ( base , mat_oil , oil ) ;
24527: LD_VAR 0 8
24531: PPUSH
24532: LD_INT 2
24534: PPUSH
24535: LD_VAR 0 3
24539: PPUSH
24540: CALL_OW 277
// SetResourceType ( base , mat_siberit , sib ) ;
24544: LD_VAR 0 8
24548: PPUSH
24549: LD_INT 3
24551: PPUSH
24552: LD_VAR 0 4
24556: PPUSH
24557: CALL_OW 277
// end ; result := b ;
24561: LD_ADDR_VAR 0 6
24565: PUSH
24566: LD_VAR 0 9
24570: ST_TO_ADDR
// end ;
24571: LD_VAR 0 6
24575: RET
// function place_amici ( amici , area ) ; var i , j , a ; begin
24576: LD_INT 0
24578: PPUSH
24579: PPUSH
24580: PPUSH
24581: PPUSH
// InitUc ;
24582: CALL_OW 18
// InitHc ;
24586: CALL_OW 19
// uc_side := americans ;
24590: LD_ADDR_OWVAR 20
24594: PUSH
24595: LD_EXP 3
24599: ST_TO_ADDR
// uc_nation := nation_american ;
24600: LD_ADDR_OWVAR 21
24604: PUSH
24605: LD_INT 1
24607: ST_TO_ADDR
// a := [ ] ;
24608: LD_ADDR_VAR 0 6
24612: PUSH
24613: EMPTY
24614: ST_TO_ADDR
// for i in amici do
24615: LD_ADDR_VAR 0 4
24619: PUSH
24620: LD_VAR 0 1
24624: PUSH
24625: FOR_IN
24626: IFFALSE 24700
// begin PrepareHuman ( 0 , i [ 2 ] , i [ 3 ] ) ;
24628: LD_INT 0
24630: PPUSH
24631: LD_VAR 0 4
24635: PUSH
24636: LD_INT 2
24638: ARRAY
24639: PPUSH
24640: LD_VAR 0 4
24644: PUSH
24645: LD_INT 3
24647: ARRAY
24648: PPUSH
24649: CALL_OW 380
// for j := 1 to i [ 1 ] do
24653: LD_ADDR_VAR 0 5
24657: PUSH
24658: DOUBLE
24659: LD_INT 1
24661: DEC
24662: ST_TO_ADDR
24663: LD_VAR 0 4
24667: PUSH
24668: LD_INT 1
24670: ARRAY
24671: PUSH
24672: FOR_TO
24673: IFFALSE 24696
// begin a := a ^ [ CreateHuman ] ;
24675: LD_ADDR_VAR 0 6
24679: PUSH
24680: LD_VAR 0 6
24684: PUSH
24685: CALL_OW 44
24689: PUSH
24690: EMPTY
24691: LIST
24692: ADD
24693: ST_TO_ADDR
// end ;
24694: GO 24672
24696: POP
24697: POP
// end ;
24698: GO 24625
24700: POP
24701: POP
// for i in a do
24702: LD_ADDR_VAR 0 4
24706: PUSH
24707: LD_VAR 0 6
24711: PUSH
24712: FOR_IN
24713: IFFALSE 24734
// PlaceUnitArea ( i , area , false ) ;
24715: LD_VAR 0 4
24719: PPUSH
24720: LD_VAR 0 2
24724: PPUSH
24725: LD_INT 0
24727: PPUSH
24728: CALL_OW 49
24732: GO 24712
24734: POP
24735: POP
// result := a ;
24736: LD_ADDR_VAR 0 3
24740: PUSH
24741: LD_VAR 0 6
24745: ST_TO_ADDR
// end ;
24746: LD_VAR 0 3
24750: RET
// every 0 0$4 + 0 0$3.5 do var i , j , weap , builds ;
24751: GO 24753
24753: DISABLE
24754: LD_INT 0
24756: PPUSH
24757: PPUSH
24758: PPUSH
24759: PPUSH
// begin for i in UnitFilter ( can_rebuild , [ [ f_side , ai ] , [ f_or , [ f_btype , b_turret ] , [ f_btype , b_bunker ] ] ] ) do
24760: LD_ADDR_VAR 0 1
24764: PUSH
24765: LD_EXP 115
24769: PPUSH
24770: LD_INT 22
24772: PUSH
24773: LD_EXP 6
24777: PUSH
24778: EMPTY
24779: LIST
24780: LIST
24781: PUSH
24782: LD_INT 2
24784: PUSH
24785: LD_INT 30
24787: PUSH
24788: LD_INT 33
24790: PUSH
24791: EMPTY
24792: LIST
24793: LIST
24794: PUSH
24795: LD_INT 30
24797: PUSH
24798: LD_INT 32
24800: PUSH
24801: EMPTY
24802: LIST
24803: LIST
24804: PUSH
24805: EMPTY
24806: LIST
24807: LIST
24808: LIST
24809: PUSH
24810: EMPTY
24811: LIST
24812: LIST
24813: PPUSH
24814: CALL_OW 72
24818: PUSH
24819: FOR_IN
24820: IFFALSE 24964
// if not GetBWeapon ( i ) then
24822: LD_VAR 0 1
24826: PPUSH
24827: CALL_OW 269
24831: NOT
24832: IFFALSE 24962
// begin weap := 0 ;
24834: LD_ADDR_VAR 0 3
24838: PUSH
24839: LD_INT 0
24841: ST_TO_ADDR
// for j in builds do
24842: LD_ADDR_VAR 0 2
24846: PUSH
24847: LD_VAR 0 4
24851: PUSH
24852: FOR_IN
24853: IFFALSE 24940
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] and GetBType ( i ) = j [ 1 ] then
24855: LD_VAR 0 1
24859: PPUSH
24860: CALL_OW 250
24864: PUSH
24865: LD_VAR 0 2
24869: PUSH
24870: LD_INT 2
24872: ARRAY
24873: EQUAL
24874: PUSH
24875: LD_VAR 0 1
24879: PPUSH
24880: CALL_OW 251
24884: PUSH
24885: LD_VAR 0 2
24889: PUSH
24890: LD_INT 3
24892: ARRAY
24893: EQUAL
24894: AND
24895: PUSH
24896: LD_VAR 0 1
24900: PPUSH
24901: CALL_OW 266
24905: PUSH
24906: LD_VAR 0 2
24910: PUSH
24911: LD_INT 1
24913: ARRAY
24914: EQUAL
24915: AND
24916: IFFALSE 24938
// begin weap := j [ 5 ] [ 1 ] ;
24918: LD_ADDR_VAR 0 3
24922: PUSH
24923: LD_VAR 0 2
24927: PUSH
24928: LD_INT 5
24930: ARRAY
24931: PUSH
24932: LD_INT 1
24934: ARRAY
24935: ST_TO_ADDR
// break ;
24936: GO 24940
// end ;
24938: GO 24852
24940: POP
24941: POP
// if weap then
24942: LD_VAR 0 3
24946: IFFALSE 24962
// ComPlaceWeapon ( j , weap ) ;
24948: LD_VAR 0 2
24952: PPUSH
24953: LD_VAR 0 3
24957: PPUSH
24958: CALL_OW 148
// end ;
24962: GO 24819
24964: POP
24965: POP
// enable ;
24966: ENABLE
// end ;
24967: PPOPN 4
24969: END
// every 0 0$4 + 0 0$0.5 do var i , j , to_up , to_b , builds , weap , co_tam_stoji ;
24970: GO 24972
24972: DISABLE
24973: LD_INT 0
24975: PPUSH
24976: PPUSH
24977: PPUSH
24978: PPUSH
24979: PPUSH
24980: PPUSH
24981: PPUSH
// begin for i in builds3 do
24982: LD_ADDR_VAR 0 1
24986: PUSH
24987: LD_EXP 106
24991: PUSH
24992: FOR_IN
24993: IFFALSE 25165
// begin if i [ 7 ] then
24995: LD_VAR 0 1
24999: PUSH
25000: LD_INT 7
25002: ARRAY
25003: IFFALSE 25163
// begin co_tam_stoji := GetBType ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25005: LD_ADDR_VAR 0 7
25009: PUSH
25010: LD_VAR 0 1
25014: PUSH
25015: LD_INT 2
25017: ARRAY
25018: PPUSH
25019: LD_VAR 0 1
25023: PUSH
25024: LD_INT 3
25026: ARRAY
25027: PPUSH
25028: LD_INT 0
25030: PPUSH
25031: CALL 25922 0 3
25035: PPUSH
25036: CALL_OW 266
25040: ST_TO_ADDR
// if GetSide ( co_tam_stoji ) = ai then
25041: LD_VAR 0 7
25045: PPUSH
25046: CALL_OW 255
25050: PUSH
25051: LD_EXP 6
25055: EQUAL
25056: IFFALSE 25163
// if co_tam_stoji = - 1 then
25058: LD_VAR 0 7
25062: PUSH
25063: LD_INT 1
25065: NEG
25066: EQUAL
25067: IFFALSE 25133
// begin to_b := [ BasicFrom ( i [ 1 ] ) , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] ] ;
25069: LD_ADDR_VAR 0 4
25073: PUSH
25074: LD_VAR 0 1
25078: PUSH
25079: LD_INT 1
25081: ARRAY
25082: PPUSH
25083: CALL 18811 0 1
25087: PUSH
25088: LD_VAR 0 1
25092: PUSH
25093: LD_INT 2
25095: ARRAY
25096: PUSH
25097: LD_VAR 0 1
25101: PUSH
25102: LD_INT 3
25104: ARRAY
25105: PUSH
25106: LD_VAR 0 1
25110: PUSH
25111: LD_INT 4
25113: ARRAY
25114: PUSH
25115: LD_VAR 0 1
25119: PUSH
25120: LD_INT 5
25122: ARRAY
25123: PUSH
25124: EMPTY
25125: LIST
25126: LIST
25127: LIST
25128: LIST
25129: LIST
25130: ST_TO_ADDR
// end else
25131: GO 25163
// if UpgradeableTo ( co_tam_stoji , i [ 1 ] ) then
25133: LD_VAR 0 7
25137: PPUSH
25138: LD_VAR 0 1
25142: PUSH
25143: LD_INT 1
25145: ARRAY
25146: PPUSH
25147: CALL 18547 0 2
25151: IFFALSE 25163
// begin to_up := i ;
25153: LD_ADDR_VAR 0 3
25157: PUSH
25158: LD_VAR 0 1
25162: ST_TO_ADDR
// end ; end ; end ;
25163: GO 24992
25165: POP
25166: POP
// if to_b then
25167: LD_VAR 0 4
25171: IFFALSE 25243
// ComBuild ( NearestUnitToXY ( eng , to_b [ 2 ] , to_b [ 3 ] ) , to_b [ 1 ] , to_b [ 2 ] , to_b [ 3 ] , to_b [ 4 ] ) else
25173: LD_EXP 123
25177: PPUSH
25178: LD_VAR 0 4
25182: PUSH
25183: LD_INT 2
25185: ARRAY
25186: PPUSH
25187: LD_VAR 0 4
25191: PUSH
25192: LD_INT 3
25194: ARRAY
25195: PPUSH
25196: CALL_OW 73
25200: PPUSH
25201: LD_VAR 0 4
25205: PUSH
25206: LD_INT 1
25208: ARRAY
25209: PPUSH
25210: LD_VAR 0 4
25214: PUSH
25215: LD_INT 2
25217: ARRAY
25218: PPUSH
25219: LD_VAR 0 4
25223: PUSH
25224: LD_INT 3
25226: ARRAY
25227: PPUSH
25228: LD_VAR 0 4
25232: PUSH
25233: LD_INT 4
25235: ARRAY
25236: PPUSH
25237: CALL_OW 145
25241: GO 25279
// if to_up then
25243: LD_VAR 0 3
25247: IFFALSE 25279
// ComUpgrade ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25249: LD_VAR 0 1
25253: PUSH
25254: LD_INT 2
25256: ARRAY
25257: PPUSH
25258: LD_VAR 0 1
25262: PUSH
25263: LD_INT 3
25265: ARRAY
25266: PPUSH
25267: LD_INT 0
25269: PPUSH
25270: CALL 25922 0 3
25274: PPUSH
25275: CALL_OW 146
// enable ;
25279: ENABLE
// end ;
25280: PPOPN 7
25282: END
// every 0 0$4 + 0 0$1.5 do var i , j , to_up , to_b , builds , weap , co_tam_stoji ;
25283: GO 25285
25285: DISABLE
25286: LD_INT 0
25288: PPUSH
25289: PPUSH
25290: PPUSH
25291: PPUSH
25292: PPUSH
25293: PPUSH
25294: PPUSH
// begin for i in builds4 do
25295: LD_ADDR_VAR 0 1
25299: PUSH
25300: LD_EXP 107
25304: PUSH
25305: FOR_IN
25306: IFFALSE 25478
// begin if i [ 7 ] then
25308: LD_VAR 0 1
25312: PUSH
25313: LD_INT 7
25315: ARRAY
25316: IFFALSE 25476
// begin co_tam_stoji := GetBType ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25318: LD_ADDR_VAR 0 7
25322: PUSH
25323: LD_VAR 0 1
25327: PUSH
25328: LD_INT 2
25330: ARRAY
25331: PPUSH
25332: LD_VAR 0 1
25336: PUSH
25337: LD_INT 3
25339: ARRAY
25340: PPUSH
25341: LD_INT 0
25343: PPUSH
25344: CALL 25922 0 3
25348: PPUSH
25349: CALL_OW 266
25353: ST_TO_ADDR
// if GetSide ( co_tam_stoji ) = ai then
25354: LD_VAR 0 7
25358: PPUSH
25359: CALL_OW 255
25363: PUSH
25364: LD_EXP 6
25368: EQUAL
25369: IFFALSE 25476
// if co_tam_stoji = - 1 then
25371: LD_VAR 0 7
25375: PUSH
25376: LD_INT 1
25378: NEG
25379: EQUAL
25380: IFFALSE 25446
// begin to_b := [ BasicFrom ( i [ 1 ] ) , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] ] ;
25382: LD_ADDR_VAR 0 4
25386: PUSH
25387: LD_VAR 0 1
25391: PUSH
25392: LD_INT 1
25394: ARRAY
25395: PPUSH
25396: CALL 18811 0 1
25400: PUSH
25401: LD_VAR 0 1
25405: PUSH
25406: LD_INT 2
25408: ARRAY
25409: PUSH
25410: LD_VAR 0 1
25414: PUSH
25415: LD_INT 3
25417: ARRAY
25418: PUSH
25419: LD_VAR 0 1
25423: PUSH
25424: LD_INT 4
25426: ARRAY
25427: PUSH
25428: LD_VAR 0 1
25432: PUSH
25433: LD_INT 5
25435: ARRAY
25436: PUSH
25437: EMPTY
25438: LIST
25439: LIST
25440: LIST
25441: LIST
25442: LIST
25443: ST_TO_ADDR
// end else
25444: GO 25476
// if UpgradeableTo ( co_tam_stoji , i [ 1 ] ) then
25446: LD_VAR 0 7
25450: PPUSH
25451: LD_VAR 0 1
25455: PUSH
25456: LD_INT 1
25458: ARRAY
25459: PPUSH
25460: CALL 18547 0 2
25464: IFFALSE 25476
// begin to_up := i ;
25466: LD_ADDR_VAR 0 3
25470: PUSH
25471: LD_VAR 0 1
25475: ST_TO_ADDR
// end ; end ; end ;
25476: GO 25305
25478: POP
25479: POP
// if to_b then
25480: LD_VAR 0 4
25484: IFFALSE 25556
// ComBuild ( NearestUnitToXY ( eng , to_b [ 2 ] , to_b [ 3 ] ) , to_b [ 1 ] , to_b [ 2 ] , to_b [ 3 ] , to_b [ 4 ] ) else
25486: LD_EXP 123
25490: PPUSH
25491: LD_VAR 0 4
25495: PUSH
25496: LD_INT 2
25498: ARRAY
25499: PPUSH
25500: LD_VAR 0 4
25504: PUSH
25505: LD_INT 3
25507: ARRAY
25508: PPUSH
25509: CALL_OW 73
25513: PPUSH
25514: LD_VAR 0 4
25518: PUSH
25519: LD_INT 1
25521: ARRAY
25522: PPUSH
25523: LD_VAR 0 4
25527: PUSH
25528: LD_INT 2
25530: ARRAY
25531: PPUSH
25532: LD_VAR 0 4
25536: PUSH
25537: LD_INT 3
25539: ARRAY
25540: PPUSH
25541: LD_VAR 0 4
25545: PUSH
25546: LD_INT 4
25548: ARRAY
25549: PPUSH
25550: CALL_OW 145
25554: GO 25592
// if to_up then
25556: LD_VAR 0 3
25560: IFFALSE 25592
// ComUpgrade ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25562: LD_VAR 0 1
25566: PUSH
25567: LD_INT 2
25569: ARRAY
25570: PPUSH
25571: LD_VAR 0 1
25575: PUSH
25576: LD_INT 3
25578: ARRAY
25579: PPUSH
25580: LD_INT 0
25582: PPUSH
25583: CALL 25922 0 3
25587: PPUSH
25588: CALL_OW 146
// enable ;
25592: ENABLE
// end ;
25593: PPOPN 7
25595: END
// every 0 0$4 + 0 0$2.5 trigger ( not OvsyenkoTaken ) or ( OvsyenkoCaptured ) do var i , j , to_up , to_b , builds , weap , co_tam_stoji ;
25596: LD_EXP 14
25600: NOT
25601: PUSH
25602: LD_EXP 15
25606: OR
25607: IFFALSE 25919
25609: GO 25611
25611: DISABLE
25612: LD_INT 0
25614: PPUSH
25615: PPUSH
25616: PPUSH
25617: PPUSH
25618: PPUSH
25619: PPUSH
25620: PPUSH
// begin for i in builds1 do
25621: LD_ADDR_VAR 0 1
25625: PUSH
25626: LD_EXP 104
25630: PUSH
25631: FOR_IN
25632: IFFALSE 25804
// begin if i [ 7 ] then
25634: LD_VAR 0 1
25638: PUSH
25639: LD_INT 7
25641: ARRAY
25642: IFFALSE 25802
// begin co_tam_stoji := GetBType ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25644: LD_ADDR_VAR 0 7
25648: PUSH
25649: LD_VAR 0 1
25653: PUSH
25654: LD_INT 2
25656: ARRAY
25657: PPUSH
25658: LD_VAR 0 1
25662: PUSH
25663: LD_INT 3
25665: ARRAY
25666: PPUSH
25667: LD_INT 0
25669: PPUSH
25670: CALL 25922 0 3
25674: PPUSH
25675: CALL_OW 266
25679: ST_TO_ADDR
// if GetSide ( co_tam_stoji ) = ai then
25680: LD_VAR 0 7
25684: PPUSH
25685: CALL_OW 255
25689: PUSH
25690: LD_EXP 6
25694: EQUAL
25695: IFFALSE 25802
// if co_tam_stoji = - 1 then
25697: LD_VAR 0 7
25701: PUSH
25702: LD_INT 1
25704: NEG
25705: EQUAL
25706: IFFALSE 25772
// begin to_b := [ BasicFrom ( i [ 1 ] ) , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] ] ;
25708: LD_ADDR_VAR 0 4
25712: PUSH
25713: LD_VAR 0 1
25717: PUSH
25718: LD_INT 1
25720: ARRAY
25721: PPUSH
25722: CALL 18811 0 1
25726: PUSH
25727: LD_VAR 0 1
25731: PUSH
25732: LD_INT 2
25734: ARRAY
25735: PUSH
25736: LD_VAR 0 1
25740: PUSH
25741: LD_INT 3
25743: ARRAY
25744: PUSH
25745: LD_VAR 0 1
25749: PUSH
25750: LD_INT 4
25752: ARRAY
25753: PUSH
25754: LD_VAR 0 1
25758: PUSH
25759: LD_INT 5
25761: ARRAY
25762: PUSH
25763: EMPTY
25764: LIST
25765: LIST
25766: LIST
25767: LIST
25768: LIST
25769: ST_TO_ADDR
// end else
25770: GO 25802
// if UpgradeableTo ( co_tam_stoji , i [ 1 ] ) then
25772: LD_VAR 0 7
25776: PPUSH
25777: LD_VAR 0 1
25781: PUSH
25782: LD_INT 1
25784: ARRAY
25785: PPUSH
25786: CALL 18547 0 2
25790: IFFALSE 25802
// begin to_up := i ;
25792: LD_ADDR_VAR 0 3
25796: PUSH
25797: LD_VAR 0 1
25801: ST_TO_ADDR
// end ; end ; end ;
25802: GO 25631
25804: POP
25805: POP
// if to_b then
25806: LD_VAR 0 4
25810: IFFALSE 25882
// ComBuild ( NearestUnitToXY ( eng , to_b [ 2 ] , to_b [ 3 ] ) , to_b [ 1 ] , to_b [ 2 ] , to_b [ 3 ] , to_b [ 4 ] ) else
25812: LD_EXP 123
25816: PPUSH
25817: LD_VAR 0 4
25821: PUSH
25822: LD_INT 2
25824: ARRAY
25825: PPUSH
25826: LD_VAR 0 4
25830: PUSH
25831: LD_INT 3
25833: ARRAY
25834: PPUSH
25835: CALL_OW 73
25839: PPUSH
25840: LD_VAR 0 4
25844: PUSH
25845: LD_INT 1
25847: ARRAY
25848: PPUSH
25849: LD_VAR 0 4
25853: PUSH
25854: LD_INT 2
25856: ARRAY
25857: PPUSH
25858: LD_VAR 0 4
25862: PUSH
25863: LD_INT 3
25865: ARRAY
25866: PPUSH
25867: LD_VAR 0 4
25871: PUSH
25872: LD_INT 4
25874: ARRAY
25875: PPUSH
25876: CALL_OW 145
25880: GO 25918
// if to_up then
25882: LD_VAR 0 3
25886: IFFALSE 25918
// ComUpgrade ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
25888: LD_VAR 0 1
25892: PUSH
25893: LD_INT 2
25895: ARRAY
25896: PPUSH
25897: LD_VAR 0 1
25901: PUSH
25902: LD_INT 3
25904: ARRAY
25905: PPUSH
25906: LD_INT 0
25908: PPUSH
25909: CALL 25922 0 3
25913: PPUSH
25914: CALL_OW 146
// enable ;
25918: ENABLE
// end ;
25919: PPOPN 7
25921: END
// function get_build ( x , y , btype ) ; begin
25922: LD_INT 0
25924: PPUSH
// result := HexInfo ( x , y ) ;
25925: LD_ADDR_VAR 0 4
25929: PUSH
25930: LD_VAR 0 1
25934: PPUSH
25935: LD_VAR 0 2
25939: PPUSH
25940: CALL_OW 428
25944: ST_TO_ADDR
// if result < 1 then
25945: LD_VAR 0 4
25949: PUSH
25950: LD_INT 1
25952: LESS
25953: IFFALSE 25963
// result := 0 ;
25955: LD_ADDR_VAR 0 4
25959: PUSH
25960: LD_INT 0
25962: ST_TO_ADDR
// if btype then
25963: LD_VAR 0 3
25967: IFFALSE 26019
// if btype <> GetBType ( result ) then
25969: LD_VAR 0 3
25973: PUSH
25974: LD_VAR 0 4
25978: PPUSH
25979: CALL_OW 266
25983: NONEQUAL
25984: IFFALSE 25996
// result := 0 else
25986: LD_ADDR_VAR 0 4
25990: PUSH
25991: LD_INT 0
25993: ST_TO_ADDR
25994: GO 26019
// if unit_building <> GetType ( result ) then
25996: LD_INT 3
25998: PUSH
25999: LD_VAR 0 4
26003: PPUSH
26004: CALL_OW 247
26008: NONEQUAL
26009: IFFALSE 26019
// result := 0 ;
26011: LD_ADDR_VAR 0 4
26015: PUSH
26016: LD_INT 0
26018: ST_TO_ADDR
// end ; end_of_file
26019: LD_VAR 0 4
26023: RET
// var opravit ; var opravari ; every 0 0$3 trigger not under_attack do var zivoty , i , bb ;
26024: LD_EXP 140
26028: NOT
26029: IFFALSE 26212
26031: GO 26033
26033: DISABLE
26034: LD_INT 0
26036: PPUSH
26037: PPUSH
26038: PPUSH
// begin opravit := [ ] ;
26039: LD_ADDR_LOC 19
26043: PUSH
26044: EMPTY
26045: ST_TO_ADDR
// zivoty := [ ] ;
26046: LD_ADDR_VAR 0 1
26050: PUSH
26051: EMPTY
26052: ST_TO_ADDR
// for i in UnitFilter ( can_repair , [ f_side , ai ] ) do
26053: LD_ADDR_VAR 0 2
26057: PUSH
26058: LD_EXP 116
26062: PPUSH
26063: LD_INT 22
26065: PUSH
26066: LD_EXP 6
26070: PUSH
26071: EMPTY
26072: LIST
26073: LIST
26074: PPUSH
26075: CALL_OW 72
26079: PUSH
26080: FOR_IN
26081: IFFALSE 26183
// begin if GetLives ( i ) < 1000 and ( difficulty > 2 and GetX ( i ) = 41 and GetX ( i ) = 23 ) then
26083: LD_VAR 0 2
26087: PPUSH
26088: CALL_OW 256
26092: PUSH
26093: LD_INT 1000
26095: LESS
26096: PUSH
26097: LD_OWVAR 67
26101: PUSH
26102: LD_INT 2
26104: GREATER
26105: PUSH
26106: LD_VAR 0 2
26110: PPUSH
26111: CALL_OW 250
26115: PUSH
26116: LD_INT 41
26118: EQUAL
26119: AND
26120: PUSH
26121: LD_VAR 0 2
26125: PPUSH
26126: CALL_OW 250
26130: PUSH
26131: LD_INT 23
26133: EQUAL
26134: AND
26135: AND
26136: IFFALSE 26181
// begin opravit := opravit ^ [ i ] ;
26138: LD_ADDR_LOC 19
26142: PUSH
26143: LD_LOC 19
26147: PUSH
26148: LD_VAR 0 2
26152: PUSH
26153: EMPTY
26154: LIST
26155: ADD
26156: ST_TO_ADDR
// zivoty := zivoty ^ [ GetLives ( i ) ] ;
26157: LD_ADDR_VAR 0 1
26161: PUSH
26162: LD_VAR 0 1
26166: PUSH
26167: LD_VAR 0 2
26171: PPUSH
26172: CALL_OW 256
26176: PUSH
26177: EMPTY
26178: LIST
26179: ADD
26180: ST_TO_ADDR
// end ; end ;
26181: GO 26080
26183: POP
26184: POP
// if opravit then
26185: LD_LOC 19
26189: IFFALSE 26211
// begin opravit := SortListByListAsc ( opravit , zivoty ) ;
26191: LD_ADDR_LOC 19
26195: PUSH
26196: LD_LOC 19
26200: PPUSH
26201: LD_VAR 0 1
26205: PPUSH
26206: CALL_OW 76
26210: ST_TO_ADDR
// end ; enable ;
26211: ENABLE
// end ;
26212: PPOPN 3
26214: END
// every 0 0$3 trigger not under_attack do
26215: LD_EXP 140
26219: NOT
26220: IFFALSE 26314
26222: GO 26224
26224: DISABLE
// begin if opravit then
26225: LD_LOC 19
26229: IFFALSE 26313
// begin if opravit [ 1 ] in can_repair then
26231: LD_LOC 19
26235: PUSH
26236: LD_INT 1
26238: ARRAY
26239: PUSH
26240: LD_EXP 116
26244: IN
26245: IFFALSE 26313
// ComRepairBuilding ( UnitFilter ( eng , [ f_dist , opravit [ 1 ] , ( 5 - GetLives ( opravit [ 1 ] ) div 200 ) * 7 ] ) , opravit [ 1 ] ) ;
26247: LD_EXP 123
26251: PPUSH
26252: LD_INT 91
26254: PUSH
26255: LD_LOC 19
26259: PUSH
26260: LD_INT 1
26262: ARRAY
26263: PUSH
26264: LD_INT 5
26266: PUSH
26267: LD_LOC 19
26271: PUSH
26272: LD_INT 1
26274: ARRAY
26275: PPUSH
26276: CALL_OW 256
26280: PUSH
26281: LD_INT 200
26283: DIV
26284: MINUS
26285: PUSH
26286: LD_INT 7
26288: MUL
26289: PUSH
26290: EMPTY
26291: LIST
26292: LIST
26293: LIST
26294: PPUSH
26295: CALL_OW 72
26299: PPUSH
26300: LD_LOC 19
26304: PUSH
26305: LD_INT 1
26307: ARRAY
26308: PPUSH
26309: CALL_OW 130
// end ; enable ;
26313: ENABLE
// end ; end_of_file
26314: END
// export fort , ctrl , sol , dep , eng , fact , mec , lab , sci ; export b1 , b2 , b3 , b4 , b5 ; export a1 , a2 , a3 , a4 , a5 ; export attack , defence ; export under_attack ; export mcdef ; export ct ; export sib_dul ; every 3 do
26315: GO 26317
26317: DISABLE
// begin sol := FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_soldier ] ] ) ;
26318: LD_ADDR_EXP 121
26322: PUSH
26323: LD_INT 22
26325: PUSH
26326: LD_EXP 6
26330: PUSH
26331: EMPTY
26332: LIST
26333: LIST
26334: PUSH
26335: LD_INT 25
26337: PUSH
26338: LD_INT 1
26340: PUSH
26341: EMPTY
26342: LIST
26343: LIST
26344: PUSH
26345: EMPTY
26346: LIST
26347: LIST
26348: PPUSH
26349: CALL_OW 69
26353: ST_TO_ADDR
// dep := FilterAllUnits ( [ [ f_side , ai ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
26354: LD_ADDR_EXP 122
26358: PUSH
26359: LD_INT 22
26361: PUSH
26362: LD_EXP 6
26366: PUSH
26367: EMPTY
26368: LIST
26369: LIST
26370: PUSH
26371: LD_INT 2
26373: PUSH
26374: LD_INT 30
26376: PUSH
26377: LD_INT 0
26379: PUSH
26380: EMPTY
26381: LIST
26382: LIST
26383: PUSH
26384: LD_INT 30
26386: PUSH
26387: LD_INT 1
26389: PUSH
26390: EMPTY
26391: LIST
26392: LIST
26393: PUSH
26394: EMPTY
26395: LIST
26396: LIST
26397: LIST
26398: PUSH
26399: EMPTY
26400: LIST
26401: LIST
26402: PPUSH
26403: CALL_OW 69
26407: ST_TO_ADDR
// eng := FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_engineer ] ] ) ;
26408: LD_ADDR_EXP 123
26412: PUSH
26413: LD_INT 22
26415: PUSH
26416: LD_EXP 6
26420: PUSH
26421: EMPTY
26422: LIST
26423: LIST
26424: PUSH
26425: LD_INT 25
26427: PUSH
26428: LD_INT 2
26430: PUSH
26431: EMPTY
26432: LIST
26433: LIST
26434: PUSH
26435: EMPTY
26436: LIST
26437: LIST
26438: PPUSH
26439: CALL_OW 69
26443: ST_TO_ADDR
// fact := FilterAllUnits ( [ [ f_side , ai ] , [ f_or , [ f_btype , b_factory ] , [ f_btype , b_workshop ] ] ] ) ;
26444: LD_ADDR_EXP 124
26448: PUSH
26449: LD_INT 22
26451: PUSH
26452: LD_EXP 6
26456: PUSH
26457: EMPTY
26458: LIST
26459: LIST
26460: PUSH
26461: LD_INT 2
26463: PUSH
26464: LD_INT 30
26466: PUSH
26467: LD_INT 3
26469: PUSH
26470: EMPTY
26471: LIST
26472: LIST
26473: PUSH
26474: LD_INT 30
26476: PUSH
26477: LD_INT 2
26479: PUSH
26480: EMPTY
26481: LIST
26482: LIST
26483: PUSH
26484: EMPTY
26485: LIST
26486: LIST
26487: LIST
26488: PUSH
26489: EMPTY
26490: LIST
26491: LIST
26492: PPUSH
26493: CALL_OW 69
26497: ST_TO_ADDR
// ctrl := FilterAllUnits ( [ [ f_side , ai ] , [ f_btype , b_control_tower ] ] ) ;
26498: LD_ADDR_EXP 120
26502: PUSH
26503: LD_INT 22
26505: PUSH
26506: LD_EXP 6
26510: PUSH
26511: EMPTY
26512: LIST
26513: LIST
26514: PUSH
26515: LD_INT 30
26517: PUSH
26518: LD_INT 36
26520: PUSH
26521: EMPTY
26522: LIST
26523: LIST
26524: PUSH
26525: EMPTY
26526: LIST
26527: LIST
26528: PPUSH
26529: CALL_OW 69
26533: ST_TO_ADDR
// mec := FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_mechanic ] ] ) ;
26534: LD_ADDR_EXP 125
26538: PUSH
26539: LD_INT 22
26541: PUSH
26542: LD_EXP 6
26546: PUSH
26547: EMPTY
26548: LIST
26549: LIST
26550: PUSH
26551: LD_INT 25
26553: PUSH
26554: LD_INT 3
26556: PUSH
26557: EMPTY
26558: LIST
26559: LIST
26560: PUSH
26561: EMPTY
26562: LIST
26563: LIST
26564: PPUSH
26565: CALL_OW 69
26569: ST_TO_ADDR
// lab := FilterAllUnits ( [ [ f_side , ai ] , [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) ;
26570: LD_ADDR_EXP 126
26574: PUSH
26575: LD_INT 22
26577: PUSH
26578: LD_EXP 6
26582: PUSH
26583: EMPTY
26584: LIST
26585: LIST
26586: PUSH
26587: LD_INT 2
26589: PUSH
26590: LD_INT 30
26592: PUSH
26593: LD_INT 6
26595: PUSH
26596: EMPTY
26597: LIST
26598: LIST
26599: PUSH
26600: LD_INT 30
26602: PUSH
26603: LD_INT 7
26605: PUSH
26606: EMPTY
26607: LIST
26608: LIST
26609: PUSH
26610: LD_INT 30
26612: PUSH
26613: LD_INT 8
26615: PUSH
26616: EMPTY
26617: LIST
26618: LIST
26619: PUSH
26620: EMPTY
26621: LIST
26622: LIST
26623: LIST
26624: LIST
26625: PUSH
26626: EMPTY
26627: LIST
26628: LIST
26629: PPUSH
26630: CALL_OW 69
26634: ST_TO_ADDR
// sci := FilterAllUnits ( [ [ f_side , ai ] , [ f_class , class_scientistic ] ] ) ;
26635: LD_ADDR_EXP 127
26639: PUSH
26640: LD_INT 22
26642: PUSH
26643: LD_EXP 6
26647: PUSH
26648: EMPTY
26649: LIST
26650: LIST
26651: PUSH
26652: LD_INT 25
26654: PUSH
26655: LD_INT 4
26657: PUSH
26658: EMPTY
26659: LIST
26660: LIST
26661: PUSH
26662: EMPTY
26663: LIST
26664: LIST
26665: PPUSH
26666: CALL_OW 69
26670: ST_TO_ADDR
// sib_dul := FilterAllUnits ( [ [ f_side , ai ] , [ f_btype , b_siberite_mine ] , [ f_distxy , 101 , 93 , 5 ] ] ) ;
26671: LD_ADDR_EXP 143
26675: PUSH
26676: LD_INT 22
26678: PUSH
26679: LD_EXP 6
26683: PUSH
26684: EMPTY
26685: LIST
26686: LIST
26687: PUSH
26688: LD_INT 30
26690: PUSH
26691: LD_INT 30
26693: PUSH
26694: EMPTY
26695: LIST
26696: LIST
26697: PUSH
26698: LD_INT 92
26700: PUSH
26701: LD_INT 101
26703: PUSH
26704: LD_INT 93
26706: PUSH
26707: LD_INT 5
26709: PUSH
26710: EMPTY
26711: LIST
26712: LIST
26713: LIST
26714: LIST
26715: PUSH
26716: EMPTY
26717: LIST
26718: LIST
26719: LIST
26720: PPUSH
26721: CALL_OW 69
26725: ST_TO_ADDR
// if sib_dul then
26726: LD_EXP 143
26730: IFFALSE 26746
// sib_dul := sib_dul [ 1 ] ;
26732: LD_ADDR_EXP 143
26736: PUSH
26737: LD_EXP 143
26741: PUSH
26742: LD_INT 1
26744: ARRAY
26745: ST_TO_ADDR
// end ;
26746: END
// every 20 20$0 do var a , i ;
26747: GO 26749
26749: DISABLE
26750: LD_INT 0
26752: PPUSH
26753: PPUSH
// begin InitUc ;
26754: CALL_OW 18
// InitHc ;
26758: CALL_OW 19
// uc_nation := nation_american ;
26762: LD_ADDR_OWVAR 21
26766: PUSH
26767: LD_INT 1
26769: ST_TO_ADDR
// uc_side := americans ;
26770: LD_ADDR_OWVAR 20
26774: PUSH
26775: LD_EXP 3
26779: ST_TO_ADDR
// for i := 1 to 5 do
26780: LD_ADDR_VAR 0 2
26784: PUSH
26785: DOUBLE
26786: LD_INT 1
26788: DEC
26789: ST_TO_ADDR
26790: LD_INT 5
26792: PUSH
26793: FOR_TO
26794: IFFALSE 26878
// begin PrepareMechanic ( 0 , 5 ) ;
26796: LD_INT 0
26798: PPUSH
26799: LD_INT 5
26801: PPUSH
26802: CALL_OW 383
// hc_class := class_soldier ;
26806: LD_ADDR_OWVAR 28
26810: PUSH
26811: LD_INT 1
26813: ST_TO_ADDR
// a := CreateHuman ;
26814: LD_ADDR_VAR 0 1
26818: PUSH
26819: CALL_OW 44
26823: ST_TO_ADDR
// PlaceUnitXYR ( a , 21 , 2 , 5 , false ) ;
26824: LD_VAR 0 1
26828: PPUSH
26829: LD_INT 21
26831: PPUSH
26832: LD_INT 2
26834: PPUSH
26835: LD_INT 5
26837: PPUSH
26838: LD_INT 0
26840: PPUSH
26841: CALL_OW 50
// ComMoveXY ( a , 25 , 32 ) ;
26845: LD_VAR 0 1
26849: PPUSH
26850: LD_INT 25
26852: PPUSH
26853: LD_INT 32
26855: PPUSH
26856: CALL_OW 111
// sol := sol ^ a ;
26860: LD_ADDR_EXP 121
26864: PUSH
26865: LD_EXP 121
26869: PUSH
26870: LD_VAR 0 1
26874: ADD
26875: ST_TO_ADDR
// end ;
26876: GO 26793
26878: POP
26879: POP
// end ;
26880: PPOPN 2
26882: END
// every 0 0$3 do var i , cm ;
26883: GO 26885
26885: DISABLE
26886: LD_INT 0
26888: PPUSH
26889: PPUSH
// begin if ctrl then
26890: LD_EXP 120
26894: IFFALSE 27313
// begin cm := UnitFilter ( UnitsInside ( ctrl [ 1 ] ) , [ [ f_class , class_mechanic ] ] ) ;
26896: LD_ADDR_VAR 0 2
26900: PUSH
26901: LD_EXP 120
26905: PUSH
26906: LD_INT 1
26908: ARRAY
26909: PPUSH
26910: CALL_OW 313
26914: PPUSH
26915: LD_INT 25
26917: PUSH
26918: LD_INT 3
26920: PUSH
26921: EMPTY
26922: LIST
26923: LIST
26924: PUSH
26925: EMPTY
26926: LIST
26927: PPUSH
26928: CALL_OW 72
26932: ST_TO_ADDR
// for i in cm do
26933: LD_ADDR_VAR 0 1
26937: PUSH
26938: LD_VAR 0 2
26942: PUSH
26943: FOR_IN
26944: IFFALSE 26989
// if UnitsLinked ( i ) >= GetSkill ( i , skill_mechanical ) then
26946: LD_VAR 0 1
26950: PPUSH
26951: CALL_OW 432
26955: PUSH
26956: LD_VAR 0 1
26960: PPUSH
26961: LD_INT 3
26963: PPUSH
26964: CALL_OW 259
26968: GREATEREQUAL
26969: IFFALSE 26987
// cm := cm diff i ;
26971: LD_ADDR_VAR 0 2
26975: PUSH
26976: LD_VAR 0 2
26980: PUSH
26981: LD_VAR 0 1
26985: DIFF
26986: ST_TO_ADDR
26987: GO 26943
26989: POP
26990: POP
// for i in attack do
26991: LD_ADDR_VAR 0 1
26995: PUSH
26996: LD_EXP 138
27000: PUSH
27001: FOR_IN
27002: IFFALSE 27311
// begin if not IsControledBy ( i ) then
27004: LD_VAR 0 1
27008: PPUSH
27009: CALL_OW 312
27013: NOT
27014: IFFALSE 27309
// case cm of 1 :
27016: LD_VAR 0 2
27020: PUSH
27021: LD_INT 1
27023: DOUBLE
27024: EQUAL
27025: IFTRUE 27029
27027: GO 27050
27029: POP
// ComLinkTo ( i , cm [ 1 ] ) ; 2 :
27030: LD_VAR 0 1
27034: PPUSH
27035: LD_VAR 0 2
27039: PUSH
27040: LD_INT 1
27042: ARRAY
27043: PPUSH
27044: CALL_OW 135
27048: GO 27309
27050: LD_INT 2
27052: DOUBLE
27053: EQUAL
27054: IFTRUE 27058
27056: GO 27129
27058: POP
// if UnitsLinked ( cm [ 1 ] ) <= UnitsLinked ( cm [ 2 ] ) then
27059: LD_VAR 0 2
27063: PUSH
27064: LD_INT 1
27066: ARRAY
27067: PPUSH
27068: CALL_OW 432
27072: PUSH
27073: LD_VAR 0 2
27077: PUSH
27078: LD_INT 2
27080: ARRAY
27081: PPUSH
27082: CALL_OW 432
27086: LESSEQUAL
27087: IFFALSE 27109
// ComLinkTo ( i , cm [ 1 ] ) else
27089: LD_VAR 0 1
27093: PPUSH
27094: LD_VAR 0 2
27098: PUSH
27099: LD_INT 1
27101: ARRAY
27102: PPUSH
27103: CALL_OW 135
27107: GO 27127
// ComLinkTo ( i , cm [ 2 ] ) ; 3 :
27109: LD_VAR 0 1
27113: PPUSH
27114: LD_VAR 0 2
27118: PUSH
27119: LD_INT 2
27121: ARRAY
27122: PPUSH
27123: CALL_OW 135
27127: GO 27309
27129: LD_INT 3
27131: DOUBLE
27132: EQUAL
27133: IFTRUE 27137
27135: GO 27308
27137: POP
// if UnitsLinked ( cm [ 1 ] ) <= UnitsLinked ( cm [ 2 ] ) then
27138: LD_VAR 0 2
27142: PUSH
27143: LD_INT 1
27145: ARRAY
27146: PPUSH
27147: CALL_OW 432
27151: PUSH
27152: LD_VAR 0 2
27156: PUSH
27157: LD_INT 2
27159: ARRAY
27160: PPUSH
27161: CALL_OW 432
27165: LESSEQUAL
27166: IFFALSE 27238
// if UnitsLinked ( cm [ 1 ] ) <= UnitsLinked ( cm [ 3 ] ) then
27168: LD_VAR 0 2
27172: PUSH
27173: LD_INT 1
27175: ARRAY
27176: PPUSH
27177: CALL_OW 432
27181: PUSH
27182: LD_VAR 0 2
27186: PUSH
27187: LD_INT 3
27189: ARRAY
27190: PPUSH
27191: CALL_OW 432
27195: LESSEQUAL
27196: IFFALSE 27218
// ComLinkTo ( i , cm [ 1 ] ) else
27198: LD_VAR 0 1
27202: PPUSH
27203: LD_VAR 0 2
27207: PUSH
27208: LD_INT 1
27210: ARRAY
27211: PPUSH
27212: CALL_OW 135
27216: GO 27236
// ComLinkTo ( i , cm [ 3 ] ) else
27218: LD_VAR 0 1
27222: PPUSH
27223: LD_VAR 0 2
27227: PUSH
27228: LD_INT 3
27230: ARRAY
27231: PPUSH
27232: CALL_OW 135
27236: GO 27306
// if UnitsLinked ( cm [ 2 ] ) <= UnitsLinked ( cm [ 3 ] ) then
27238: LD_VAR 0 2
27242: PUSH
27243: LD_INT 2
27245: ARRAY
27246: PPUSH
27247: CALL_OW 432
27251: PUSH
27252: LD_VAR 0 2
27256: PUSH
27257: LD_INT 3
27259: ARRAY
27260: PPUSH
27261: CALL_OW 432
27265: LESSEQUAL
27266: IFFALSE 27288
// ComLinkTo ( i , cm [ 2 ] ) else
27268: LD_VAR 0 1
27272: PPUSH
27273: LD_VAR 0 2
27277: PUSH
27278: LD_INT 2
27280: ARRAY
27281: PPUSH
27282: CALL_OW 135
27286: GO 27306
// ComLinkTo ( i , cm [ 3 ] ) ; end ;
27288: LD_VAR 0 1
27292: PPUSH
27293: LD_VAR 0 2
27297: PUSH
27298: LD_INT 3
27300: ARRAY
27301: PPUSH
27302: CALL_OW 135
27306: GO 27309
27308: POP
// end ;
27309: GO 27001
27311: POP
27312: POP
// end ; enable ;
27313: ENABLE
// end ;
27314: PPOPN 2
27316: END
// every 0 0$2 + 0 0$0.1 do var i , j , blds , hums , cars ;
27317: GO 27319
27319: DISABLE
27320: LD_INT 0
27322: PPUSH
27323: PPUSH
27324: PPUSH
27325: PPUSH
27326: PPUSH
// begin blds := UnitFilter ( fort , [ [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] , [ f_not , [ f_occupied ] ] ] ) ;
27327: LD_ADDR_VAR 0 3
27331: PUSH
27332: LD_EXP 119
27336: PPUSH
27337: LD_INT 2
27339: PUSH
27340: LD_INT 30
27342: PUSH
27343: LD_INT 32
27345: PUSH
27346: EMPTY
27347: LIST
27348: LIST
27349: PUSH
27350: LD_INT 30
27352: PUSH
27353: LD_INT 31
27355: PUSH
27356: EMPTY
27357: LIST
27358: LIST
27359: PUSH
27360: EMPTY
27361: LIST
27362: LIST
27363: LIST
27364: PUSH
27365: LD_INT 3
27367: PUSH
27368: LD_INT 59
27370: PUSH
27371: EMPTY
27372: LIST
27373: PUSH
27374: EMPTY
27375: LIST
27376: LIST
27377: PUSH
27378: EMPTY
27379: LIST
27380: LIST
27381: PPUSH
27382: CALL_OW 72
27386: ST_TO_ADDR
// hums := [ ] ;
27387: LD_ADDR_VAR 0 4
27391: PUSH
27392: EMPTY
27393: ST_TO_ADDR
// for i in sol do
27394: LD_ADDR_VAR 0 1
27398: PUSH
27399: LD_EXP 121
27403: PUSH
27404: FOR_IN
27405: IFFALSE 27519
// if ( IsIdle ( i ) and GetBType ( IsInUnit ( i ) ) <> b_bunker and GetBType ( IsInUnit ( i ) ) <> b_breastwork ) or GetBType ( IsInUnit ( i ) ) = b_barracks or GetBType ( IsInUnit ( i ) ) = b_armoury then
27407: LD_VAR 0 1
27411: PPUSH
27412: CALL_OW 316
27416: PUSH
27417: LD_VAR 0 1
27421: PPUSH
27422: CALL_OW 310
27426: PPUSH
27427: CALL_OW 266
27431: PUSH
27432: LD_INT 32
27434: NONEQUAL
27435: AND
27436: PUSH
27437: LD_VAR 0 1
27441: PPUSH
27442: CALL_OW 310
27446: PPUSH
27447: CALL_OW 266
27451: PUSH
27452: LD_INT 31
27454: NONEQUAL
27455: AND
27456: PUSH
27457: LD_VAR 0 1
27461: PPUSH
27462: CALL_OW 310
27466: PPUSH
27467: CALL_OW 266
27471: PUSH
27472: LD_INT 5
27474: EQUAL
27475: OR
27476: PUSH
27477: LD_VAR 0 1
27481: PPUSH
27482: CALL_OW 310
27486: PPUSH
27487: CALL_OW 266
27491: PUSH
27492: LD_INT 4
27494: EQUAL
27495: OR
27496: IFFALSE 27517
// hums := hums ^ [ i ] ;
27498: LD_ADDR_VAR 0 4
27502: PUSH
27503: LD_VAR 0 4
27507: PUSH
27508: LD_VAR 0 1
27512: PUSH
27513: EMPTY
27514: LIST
27515: ADD
27516: ST_TO_ADDR
27517: GO 27404
27519: POP
27520: POP
// for i in blds do
27521: LD_ADDR_VAR 0 1
27525: PUSH
27526: LD_VAR 0 3
27530: PUSH
27531: FOR_IN
27532: IFFALSE 27637
// begin j := NearestUnitToUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
27534: LD_ADDR_VAR 0 2
27538: PUSH
27539: LD_VAR 0 4
27543: PPUSH
27544: LD_INT 22
27546: PUSH
27547: LD_VAR 0 1
27551: PPUSH
27552: CALL_OW 255
27556: PUSH
27557: EMPTY
27558: LIST
27559: LIST
27560: PUSH
27561: LD_INT 91
27563: PUSH
27564: LD_VAR 0 1
27568: PUSH
27569: LD_INT 30
27571: PUSH
27572: EMPTY
27573: LIST
27574: LIST
27575: LIST
27576: PUSH
27577: EMPTY
27578: LIST
27579: LIST
27580: PPUSH
27581: CALL_OW 72
27585: PPUSH
27586: LD_VAR 0 1
27590: PPUSH
27591: CALL_OW 74
27595: ST_TO_ADDR
// ComExitBuilding ( j ) ;
27596: LD_VAR 0 2
27600: PPUSH
27601: CALL_OW 122
// AddComEnterUnit ( j , i ) ;
27605: LD_VAR 0 2
27609: PPUSH
27610: LD_VAR 0 1
27614: PPUSH
27615: CALL_OW 180
// hums := hums diff j ;
27619: LD_ADDR_VAR 0 4
27623: PUSH
27624: LD_VAR 0 4
27628: PUSH
27629: LD_VAR 0 2
27633: DIFF
27634: ST_TO_ADDR
// end ;
27635: GO 27531
27637: POP
27638: POP
// cars := UnitFilter ( defence , [ f_not , [ f_occupied ] ] ) ;
27639: LD_ADDR_VAR 0 5
27643: PUSH
27644: LD_EXP 139
27648: PPUSH
27649: LD_INT 3
27651: PUSH
27652: LD_INT 59
27654: PUSH
27655: EMPTY
27656: LIST
27657: PUSH
27658: EMPTY
27659: LIST
27660: LIST
27661: PPUSH
27662: CALL_OW 72
27666: ST_TO_ADDR
// for i in cars do
27667: LD_ADDR_VAR 0 1
27671: PUSH
27672: LD_VAR 0 5
27676: PUSH
27677: FOR_IN
27678: IFFALSE 27783
// begin j := NearestUnitToUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 20 ] ] ) , i ) ;
27680: LD_ADDR_VAR 0 2
27684: PUSH
27685: LD_VAR 0 4
27689: PPUSH
27690: LD_INT 22
27692: PUSH
27693: LD_VAR 0 1
27697: PPUSH
27698: CALL_OW 255
27702: PUSH
27703: EMPTY
27704: LIST
27705: LIST
27706: PUSH
27707: LD_INT 91
27709: PUSH
27710: LD_VAR 0 1
27714: PUSH
27715: LD_INT 20
27717: PUSH
27718: EMPTY
27719: LIST
27720: LIST
27721: LIST
27722: PUSH
27723: EMPTY
27724: LIST
27725: LIST
27726: PPUSH
27727: CALL_OW 72
27731: PPUSH
27732: LD_VAR 0 1
27736: PPUSH
27737: CALL_OW 74
27741: ST_TO_ADDR
// ComExitBuilding ( j ) ;
27742: LD_VAR 0 2
27746: PPUSH
27747: CALL_OW 122
// AddComEnterUnit ( j , i ) ;
27751: LD_VAR 0 2
27755: PPUSH
27756: LD_VAR 0 1
27760: PPUSH
27761: CALL_OW 180
// hums := hums diff j ;
27765: LD_ADDR_VAR 0 4
27769: PUSH
27770: LD_VAR 0 4
27774: PUSH
27775: LD_VAR 0 2
27779: DIFF
27780: ST_TO_ADDR
// end ;
27781: GO 27677
27783: POP
27784: POP
// blds := UnitFilter ( fort diff blds , [ f_not , [ f_occupied ] ] ) ;
27785: LD_ADDR_VAR 0 3
27789: PUSH
27790: LD_EXP 119
27794: PUSH
27795: LD_VAR 0 3
27799: DIFF
27800: PPUSH
27801: LD_INT 3
27803: PUSH
27804: LD_INT 59
27806: PUSH
27807: EMPTY
27808: LIST
27809: PUSH
27810: EMPTY
27811: LIST
27812: LIST
27813: PPUSH
27814: CALL_OW 72
27818: ST_TO_ADDR
// for i in blds do
27819: LD_ADDR_VAR 0 1
27823: PUSH
27824: LD_VAR 0 3
27828: PUSH
27829: FOR_IN
27830: IFFALSE 27890
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
27832: LD_VAR 0 4
27836: PPUSH
27837: LD_INT 22
27839: PUSH
27840: LD_VAR 0 1
27844: PPUSH
27845: CALL_OW 255
27849: PUSH
27850: EMPTY
27851: LIST
27852: LIST
27853: PUSH
27854: LD_INT 91
27856: PUSH
27857: LD_VAR 0 1
27861: PUSH
27862: LD_INT 30
27864: PUSH
27865: EMPTY
27866: LIST
27867: LIST
27868: LIST
27869: PUSH
27870: EMPTY
27871: LIST
27872: LIST
27873: PPUSH
27874: CALL_OW 72
27878: PPUSH
27879: LD_VAR 0 1
27883: PPUSH
27884: CALL_OW 120
27888: GO 27829
27890: POP
27891: POP
// enable ;
27892: ENABLE
// end ;
27893: PPOPN 5
27895: END
// every 0 0$2 + 0 0$0.5 do var i , j , blds , hums ;
27896: GO 27898
27898: DISABLE
27899: LD_INT 0
27901: PPUSH
27902: PPUSH
27903: PPUSH
27904: PPUSH
// begin blds := dep ;
27905: LD_ADDR_VAR 0 3
27909: PUSH
27910: LD_EXP 122
27914: ST_TO_ADDR
// hums := [ ] ;
27915: LD_ADDR_VAR 0 4
27919: PUSH
27920: EMPTY
27921: ST_TO_ADDR
// for i in eng do
27922: LD_ADDR_VAR 0 1
27926: PUSH
27927: LD_EXP 123
27931: PUSH
27932: FOR_IN
27933: IFFALSE 27979
// if IsIdle ( i ) and not IsInUnit ( i ) then
27935: LD_VAR 0 1
27939: PPUSH
27940: CALL_OW 316
27944: PUSH
27945: LD_VAR 0 1
27949: PPUSH
27950: CALL_OW 310
27954: NOT
27955: AND
27956: IFFALSE 27977
// hums := hums ^ [ i ] ;
27958: LD_ADDR_VAR 0 4
27962: PUSH
27963: LD_VAR 0 4
27967: PUSH
27968: LD_VAR 0 1
27972: PUSH
27973: EMPTY
27974: LIST
27975: ADD
27976: ST_TO_ADDR
27977: GO 27932
27979: POP
27980: POP
// for i in blds do
27981: LD_ADDR_VAR 0 1
27985: PUSH
27986: LD_VAR 0 3
27990: PUSH
27991: FOR_IN
27992: IFFALSE 28052
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
27994: LD_VAR 0 4
27998: PPUSH
27999: LD_INT 22
28001: PUSH
28002: LD_VAR 0 1
28006: PPUSH
28007: CALL_OW 255
28011: PUSH
28012: EMPTY
28013: LIST
28014: LIST
28015: PUSH
28016: LD_INT 91
28018: PUSH
28019: LD_VAR 0 1
28023: PUSH
28024: LD_INT 30
28026: PUSH
28027: EMPTY
28028: LIST
28029: LIST
28030: LIST
28031: PUSH
28032: EMPTY
28033: LIST
28034: LIST
28035: PPUSH
28036: CALL_OW 72
28040: PPUSH
28041: LD_VAR 0 1
28045: PPUSH
28046: CALL_OW 120
28050: GO 27991
28052: POP
28053: POP
// enable ;
28054: ENABLE
// end ;
28055: PPOPN 4
28057: END
// every 0 0$2 + 0 0$0.7 do var i , j , blds , hums ;
28058: GO 28060
28060: DISABLE
28061: LD_INT 0
28063: PPUSH
28064: PPUSH
28065: PPUSH
28066: PPUSH
// begin blds := fact ;
28067: LD_ADDR_VAR 0 3
28071: PUSH
28072: LD_EXP 124
28076: ST_TO_ADDR
// hums := [ ] ;
28077: LD_ADDR_VAR 0 4
28081: PUSH
28082: EMPTY
28083: ST_TO_ADDR
// for i in mec do
28084: LD_ADDR_VAR 0 1
28088: PUSH
28089: LD_EXP 125
28093: PUSH
28094: FOR_IN
28095: IFFALSE 28156
// if ( IsIdle ( i ) and not IsInUnit ( i ) ) or not IsInArea ( i , def_base ) then
28097: LD_VAR 0 1
28101: PPUSH
28102: CALL_OW 316
28106: PUSH
28107: LD_VAR 0 1
28111: PPUSH
28112: CALL_OW 310
28116: NOT
28117: AND
28118: PUSH
28119: LD_VAR 0 1
28123: PPUSH
28124: LD_INT 19
28126: PPUSH
28127: CALL_OW 308
28131: NOT
28132: OR
28133: IFFALSE 28154
// hums := hums ^ [ i ] ;
28135: LD_ADDR_VAR 0 4
28139: PUSH
28140: LD_VAR 0 4
28144: PUSH
28145: LD_VAR 0 1
28149: PUSH
28150: EMPTY
28151: LIST
28152: ADD
28153: ST_TO_ADDR
28154: GO 28094
28156: POP
28157: POP
// for i in blds do
28158: LD_ADDR_VAR 0 1
28162: PUSH
28163: LD_VAR 0 3
28167: PUSH
28168: FOR_IN
28169: IFFALSE 28229
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
28171: LD_VAR 0 4
28175: PPUSH
28176: LD_INT 22
28178: PUSH
28179: LD_VAR 0 1
28183: PPUSH
28184: CALL_OW 255
28188: PUSH
28189: EMPTY
28190: LIST
28191: LIST
28192: PUSH
28193: LD_INT 91
28195: PUSH
28196: LD_VAR 0 1
28200: PUSH
28201: LD_INT 30
28203: PUSH
28204: EMPTY
28205: LIST
28206: LIST
28207: LIST
28208: PUSH
28209: EMPTY
28210: LIST
28211: LIST
28212: PPUSH
28213: CALL_OW 72
28217: PPUSH
28218: LD_VAR 0 1
28222: PPUSH
28223: CALL_OW 120
28227: GO 28168
28229: POP
28230: POP
// enable ;
28231: ENABLE
// end ;
28232: PPOPN 4
28234: END
// every 0 0$2 + 0 0$0.35 do var i , j , bld , hums ;
28235: GO 28237
28237: DISABLE
28238: LD_INT 0
28240: PPUSH
28241: PPUSH
28242: PPUSH
28243: PPUSH
// begin if ct < 2 then
28244: LD_EXP 142
28248: PUSH
28249: LD_INT 2
28251: LESS
28252: IFFALSE 28456
// if ctrl then
28254: LD_EXP 120
28258: IFFALSE 28456
// begin bld := ctrl [ 1 ] ;
28260: LD_ADDR_VAR 0 3
28264: PUSH
28265: LD_EXP 120
28269: PUSH
28270: LD_INT 1
28272: ARRAY
28273: ST_TO_ADDR
// hums := [ ] ;
28274: LD_ADDR_VAR 0 4
28278: PUSH
28279: EMPTY
28280: ST_TO_ADDR
// for i in get_x_best ( mec , mec , skill_mechanical , 0 , false ) do
28281: LD_ADDR_VAR 0 1
28285: PUSH
28286: LD_EXP 125
28290: PPUSH
28291: LD_EXP 125
28295: PPUSH
28296: LD_INT 3
28298: PPUSH
28299: LD_INT 0
28301: PPUSH
28302: LD_INT 0
28304: PPUSH
28305: CALL 10114 0 5
28309: PUSH
28310: FOR_IN
28311: IFFALSE 28374
// if GetBType ( IsInUnit ( i ) ) <> b_control_tower and GetType ( IsInUnit ( i ) ) <> unit_vehicle then
28313: LD_VAR 0 1
28317: PPUSH
28318: CALL_OW 310
28322: PPUSH
28323: CALL_OW 266
28327: PUSH
28328: LD_INT 36
28330: NONEQUAL
28331: PUSH
28332: LD_VAR 0 1
28336: PPUSH
28337: CALL_OW 310
28341: PPUSH
28342: CALL_OW 247
28346: PUSH
28347: LD_INT 2
28349: NONEQUAL
28350: AND
28351: IFFALSE 28372
// hums := hums ^ [ i ] ;
28353: LD_ADDR_VAR 0 4
28357: PUSH
28358: LD_VAR 0 4
28362: PUSH
28363: LD_VAR 0 1
28367: PUSH
28368: EMPTY
28369: LIST
28370: ADD
28371: ST_TO_ADDR
28372: GO 28310
28374: POP
28375: POP
// ct := ct union get_x_best ( UnitFilter ( mec , [ [ f_dist , bld , 50 ] ] ) , 2 , skill_mechanical , 0 , false ) ;
28376: LD_ADDR_EXP 142
28380: PUSH
28381: LD_EXP 142
28385: PUSH
28386: LD_EXP 125
28390: PPUSH
28391: LD_INT 91
28393: PUSH
28394: LD_VAR 0 3
28398: PUSH
28399: LD_INT 50
28401: PUSH
28402: EMPTY
28403: LIST
28404: LIST
28405: LIST
28406: PUSH
28407: EMPTY
28408: LIST
28409: PPUSH
28410: CALL_OW 72
28414: PPUSH
28415: LD_INT 2
28417: PPUSH
28418: LD_INT 3
28420: PPUSH
28421: LD_INT 0
28423: PPUSH
28424: LD_INT 0
28426: PPUSH
28427: CALL 10114 0 5
28431: UNION
28432: ST_TO_ADDR
// remove_from_humans ( ct ) ;
28433: LD_EXP 142
28437: PPUSH
28438: CALL 31858 0 1
// ComEnterUnit ( ct , bld ) ;
28442: LD_EXP 142
28446: PPUSH
28447: LD_VAR 0 3
28451: PPUSH
28452: CALL_OW 120
// end ; enable ;
28456: ENABLE
// end ;
28457: PPOPN 4
28459: END
// every 0 0$2 + 0 0$0.9 do var i , j , blds , hums ;
28460: GO 28462
28462: DISABLE
28463: LD_INT 0
28465: PPUSH
28466: PPUSH
28467: PPUSH
28468: PPUSH
// begin blds := lab ;
28469: LD_ADDR_VAR 0 3
28473: PUSH
28474: LD_EXP 126
28478: ST_TO_ADDR
// hums := [ ] ;
28479: LD_ADDR_VAR 0 4
28483: PUSH
28484: EMPTY
28485: ST_TO_ADDR
// for i in sci do
28486: LD_ADDR_VAR 0 1
28490: PUSH
28491: LD_EXP 127
28495: PUSH
28496: FOR_IN
28497: IFFALSE 28543
// if IsIdle ( i ) and not IsInUnit ( i ) then
28499: LD_VAR 0 1
28503: PPUSH
28504: CALL_OW 316
28508: PUSH
28509: LD_VAR 0 1
28513: PPUSH
28514: CALL_OW 310
28518: NOT
28519: AND
28520: IFFALSE 28541
// hums := hums ^ [ i ] ;
28522: LD_ADDR_VAR 0 4
28526: PUSH
28527: LD_VAR 0 4
28531: PUSH
28532: LD_VAR 0 1
28536: PUSH
28537: EMPTY
28538: LIST
28539: ADD
28540: ST_TO_ADDR
28541: GO 28496
28543: POP
28544: POP
// for i in blds do
28545: LD_ADDR_VAR 0 1
28549: PUSH
28550: LD_VAR 0 3
28554: PUSH
28555: FOR_IN
28556: IFFALSE 28616
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
28558: LD_VAR 0 4
28562: PPUSH
28563: LD_INT 22
28565: PUSH
28566: LD_VAR 0 1
28570: PPUSH
28571: CALL_OW 255
28575: PUSH
28576: EMPTY
28577: LIST
28578: LIST
28579: PUSH
28580: LD_INT 91
28582: PUSH
28583: LD_VAR 0 1
28587: PUSH
28588: LD_INT 30
28590: PUSH
28591: EMPTY
28592: LIST
28593: LIST
28594: LIST
28595: PUSH
28596: EMPTY
28597: LIST
28598: LIST
28599: PPUSH
28600: CALL_OW 72
28604: PPUSH
28605: LD_VAR 0 1
28609: PPUSH
28610: CALL_OW 120
28614: GO 28555
28616: POP
28617: POP
// enable ;
28618: ENABLE
// end ;
28619: PPOPN 4
28621: END
// every 0 0$2 + 0 0$0.8 do var i , j , blds , hums ;
28622: GO 28624
28624: DISABLE
28625: LD_INT 0
28627: PPUSH
28628: PPUSH
28629: PPUSH
28630: PPUSH
// begin for i in a3 ^ a4 do
28631: LD_ADDR_VAR 0 1
28635: PUSH
28636: LD_EXP 135
28640: PUSH
28641: LD_EXP 136
28645: ADD
28646: PUSH
28647: FOR_IN
28648: IFFALSE 28865
// begin if IsIdle ( i ) and not IsInArea ( i , def_base ) and not IsInUnit ( i ) then
28650: LD_VAR 0 1
28654: PPUSH
28655: CALL_OW 316
28659: PUSH
28660: LD_VAR 0 1
28664: PPUSH
28665: LD_INT 19
28667: PPUSH
28668: CALL_OW 308
28672: NOT
28673: AND
28674: PUSH
28675: LD_VAR 0 1
28679: PPUSH
28680: CALL_OW 310
28684: NOT
28685: AND
28686: IFFALSE 28742
// if GetDistUnitArea ( i , abase3 ) < GetDistUnitArea ( i , abase4 ) then
28688: LD_VAR 0 1
28692: PPUSH
28693: LD_INT 6
28695: PPUSH
28696: CALL_OW 299
28700: PUSH
28701: LD_VAR 0 1
28705: PPUSH
28706: LD_INT 7
28708: PPUSH
28709: CALL_OW 299
28713: LESS
28714: IFFALSE 28730
// ComMoveToArea ( i , abase3 ) else
28716: LD_VAR 0 1
28720: PPUSH
28721: LD_INT 6
28723: PPUSH
28724: CALL_OW 113
28728: GO 28742
// ComMoveToArea ( i , abase4 ) ;
28730: LD_VAR 0 1
28734: PPUSH
28735: LD_INT 7
28737: PPUSH
28738: CALL_OW 113
// if IsIdle ( IsInUnit ( i ) ) and not IsInArea ( IsInUnit ( i ) , def_base ) and IsInUnit ( i ) then
28742: LD_VAR 0 1
28746: PPUSH
28747: CALL_OW 310
28751: PPUSH
28752: CALL_OW 316
28756: PUSH
28757: LD_VAR 0 1
28761: PPUSH
28762: CALL_OW 310
28766: PPUSH
28767: LD_INT 19
28769: PPUSH
28770: CALL_OW 308
28774: NOT
28775: AND
28776: PUSH
28777: LD_VAR 0 1
28781: PPUSH
28782: CALL_OW 310
28786: AND
28787: IFFALSE 28863
// if GetDistUnitArea ( IsInUnit ( i ) , abase3 ) < GetDistUnitArea ( IsInUnit ( i ) , abase4 ) then
28789: LD_VAR 0 1
28793: PPUSH
28794: CALL_OW 310
28798: PPUSH
28799: LD_INT 6
28801: PPUSH
28802: CALL_OW 299
28806: PUSH
28807: LD_VAR 0 1
28811: PPUSH
28812: CALL_OW 310
28816: PPUSH
28817: LD_INT 7
28819: PPUSH
28820: CALL_OW 299
28824: LESS
28825: IFFALSE 28846
// ComMoveToArea ( IsInUnit ( i ) , abase3 ) else
28827: LD_VAR 0 1
28831: PPUSH
28832: CALL_OW 310
28836: PPUSH
28837: LD_INT 6
28839: PPUSH
28840: CALL_OW 113
28844: GO 28863
// ComMoveToArea ( IsInUnit ( i ) , abase4 ) ;
28846: LD_VAR 0 1
28850: PPUSH
28851: CALL_OW 310
28855: PPUSH
28856: LD_INT 7
28858: PPUSH
28859: CALL_OW 113
// end ;
28863: GO 28647
28865: POP
28866: POP
// enable ;
28867: ENABLE
// end ; end_of_file
28868: PPOPN 4
28870: END
// on ResearchComplete ( tech , lab ) do begin if GetSide ( lab ) = you then
28871: LD_VAR 0 2
28875: PPUSH
28876: CALL_OW 255
28880: PUSH
28881: LD_EXP 1
28885: EQUAL
28886: IFFALSE 28924
// case tech of tech_MatPred :
28888: LD_VAR 0 1
28892: PUSH
28893: LD_INT 9
28895: DOUBLE
28896: EQUAL
28897: IFTRUE 28901
28899: GO 28908
28901: POP
// DNoMaterial ; tech_TauField :
28902: CALL 1896 0 0
28906: GO 28924
28908: LD_INT 30
28910: DOUBLE
28911: EQUAL
28912: IFTRUE 28916
28914: GO 28923
28916: POP
// DStasis ; end ;
28917: CALL 5207 0 0
28921: GO 28924
28923: POP
// end ;
28924: PPOPN 2
28926: END
// on EndTheMissionRaised ( aa ) do begin end_the_mission_allowed := false ;
28927: LD_ADDR_OWVAR 57
28931: PUSH
28932: LD_INT 0
28934: ST_TO_ADDR
// VyhraExit ;
28935: CALL 374 0 0
// end ;
28939: PPOPN 1
28941: END
// on UnitDestroyed ( un ) do begin remove_from_vehicles ( un ) ;
28942: LD_VAR 0 1
28946: PPUSH
28947: CALL 32028 0 1
// remove_from_humans ( un ) ;
28951: LD_VAR 0 1
28955: PPUSH
28956: CALL 31858 0 1
// remove_from_builds ( un ) ;
28960: LD_VAR 0 1
28964: PPUSH
28965: CALL 31672 0 1
// if un = Burlak then
28969: LD_VAR 0 1
28973: PUSH
28974: LD_EXP 61
28978: EQUAL
28979: IFFALSE 28988
// YouLost ( Burlak ) ;
28981: LD_STRING Burlak
28983: PPUSH
28984: CALL_OW 104
// if un = Gleb and utok_na_gleba then
28988: LD_VAR 0 1
28992: PUSH
28993: LD_EXP 65
28997: EQUAL
28998: PUSH
28999: LD_EXP 60
29003: AND
29004: IFFALSE 29013
// YouLost ( Gleb ) ;
29006: LD_STRING Gleb
29008: PPUSH
29009: CALL_OW 104
// if un = Vsevolod then
29013: LD_VAR 0 1
29017: PUSH
29018: LD_EXP 70
29022: EQUAL
29023: IFFALSE 29096
// begin if GetSide ( un ) = 6 then
29025: LD_VAR 0 1
29029: PPUSH
29030: CALL_OW 255
29034: PUSH
29035: LD_INT 6
29037: EQUAL
29038: IFFALSE 29044
// SA_NotSaveVsevolod ;
29040: CALL 32930 0 0
// mrtvi_vsevolodaci := mrtvi_vsevolodaci ^ [ Vsevolod ] ;
29044: LD_ADDR_EXP 41
29048: PUSH
29049: LD_EXP 41
29053: PUSH
29054: LD_STRING Vsevolod
29056: PUSH
29057: EMPTY
29058: LIST
29059: ADD
29060: ST_TO_ADDR
// SetSide ( Vsevolod2 , GetSide ( Vsevolod ) ) ;
29061: LD_EXP 71
29065: PPUSH
29066: LD_EXP 70
29070: PPUSH
29071: CALL_OW 255
29075: PPUSH
29076: CALL_OW 235
// if kecali then
29080: LD_EXP 54
29084: IFFALSE 29092
// DDieVsev2 else
29086: CALL 5179 0 0
29090: GO 29096
// DDieVsev1 ;
29092: CALL 5134 0 0
// end ; if un in Vsevolod_uderna_group then
29096: LD_VAR 0 1
29100: PUSH
29101: LD_EXP 12
29105: IN
29106: IFFALSE 29151
// begin Vsevolod_uderna_group := Vsevolod_uderna_group diff un ;
29108: LD_ADDR_EXP 12
29112: PUSH
29113: LD_EXP 12
29117: PUSH
29118: LD_VAR 0 1
29122: DIFF
29123: ST_TO_ADDR
// mrtvi_vsevolodaci := mrtvi_vsevolodaci ^ [ vsev_g_ & ( mrtvi_vsevolodaci + 1 ) ] ;
29124: LD_ADDR_EXP 41
29128: PUSH
29129: LD_EXP 41
29133: PUSH
29134: LD_STRING vsev_g_
29136: PUSH
29137: LD_EXP 41
29141: PUSH
29142: LD_INT 1
29144: PLUS
29145: STR
29146: PUSH
29147: EMPTY
29148: LIST
29149: ADD
29150: ST_TO_ADDR
// end ; end ;
29151: PPOPN 1
29153: END
// on UnitGoesToRed ( un ) do begin if GetSide ( un ) = ai then
29154: LD_VAR 0 1
29158: PPUSH
29159: CALL_OW 255
29163: PUSH
29164: LD_EXP 6
29168: EQUAL
29169: IFFALSE 29224
// begin case GetType ( un ) of unit_vehicle :
29171: LD_VAR 0 1
29175: PPUSH
29176: CALL_OW 247
29180: PUSH
29181: LD_INT 2
29183: DOUBLE
29184: EQUAL
29185: IFTRUE 29189
29187: GO 29192
29189: POP
// ; unit_human :
29190: GO 29224
29192: LD_INT 1
29194: DOUBLE
29195: EQUAL
29196: IFTRUE 29200
29198: GO 29212
29200: POP
// begin zachranka ( un ) ;
29201: LD_VAR 0 1
29205: PPUSH
29206: CALL 32086 0 1
// end ; unit_building :
29210: GO 29224
29212: LD_INT 3
29214: DOUBLE
29215: EQUAL
29216: IFTRUE 29220
29218: GO 29223
29220: POP
// begin end ; end ;
29221: GO 29224
29223: POP
// end ; if MyGodMode and GetSide ( un ) = you then
29224: LD_EXP 144
29228: PUSH
29229: LD_VAR 0 1
29233: PPUSH
29234: CALL_OW 255
29238: PUSH
29239: LD_EXP 1
29243: EQUAL
29244: AND
29245: IFFALSE 29259
// SetLives ( un , 1000 ) ;
29247: LD_VAR 0 1
29251: PPUSH
29252: LD_INT 1000
29254: PPUSH
29255: CALL_OW 234
// end ;
29259: PPOPN 1
29261: END
// export MyGodMode ; on VehicleCaptured ( vehnew , vehold , origside , hum ) do begin if origside = ai then
29262: LD_VAR 0 3
29266: PUSH
29267: LD_EXP 6
29271: EQUAL
29272: IFFALSE 29283
// begin remove_from_vehicles ( vehold ) ;
29274: LD_VAR 0 2
29278: PPUSH
29279: CALL 32028 0 1
// end ; end ;
29283: PPOPN 4
29285: END
// on BuildingCaptured ( build , origside , eng ) do begin if origside = ai then
29286: LD_VAR 0 2
29290: PUSH
29291: LD_EXP 6
29295: EQUAL
29296: IFFALSE 29351
// begin remove_from_builds ( build ) ;
29298: LD_VAR 0 1
29302: PPUSH
29303: CALL 31672 0 1
// if GetBType ( build ) = b_siberite_mine then
29307: LD_VAR 0 1
29311: PPUSH
29312: CALL_OW 266
29316: PUSH
29317: LD_INT 30
29319: EQUAL
29320: IFFALSE 29351
// SetResourceVisibility ( GetX ( build ) , GetY ( build ) , you ) ;
29322: LD_VAR 0 1
29326: PPUSH
29327: CALL_OW 250
29331: PPUSH
29332: LD_VAR 0 1
29336: PPUSH
29337: CALL_OW 251
29341: PPUSH
29342: LD_EXP 1
29346: PPUSH
29347: CALL_OW 441
// end ; if origside = you then
29351: LD_VAR 0 2
29355: PUSH
29356: LD_EXP 1
29360: EQUAL
29361: IFFALSE 29372
// begin add_to_builds ( build ) ;
29363: LD_VAR 0 1
29367: PPUSH
29368: CALL 30966 0 1
// end ; end ;
29372: PPOPN 3
29374: END
// export was_DMatPrediction ; on BuildingComplete ( build ) do begin if GetSide ( build ) = ai then
29375: LD_VAR 0 1
29379: PPUSH
29380: CALL_OW 255
29384: PUSH
29385: LD_EXP 6
29389: EQUAL
29390: IFFALSE 29401
// begin add_to_builds ( build ) ;
29392: LD_VAR 0 1
29396: PPUSH
29397: CALL 30966 0 1
// end ; if GetSide ( build ) = you then
29401: LD_VAR 0 1
29405: PPUSH
29406: CALL_OW 255
29410: PUSH
29411: LD_EXP 1
29415: EQUAL
29416: IFFALSE 29452
// begin if not was_DMatPrediction and GetBType ( build ) = b_lab then
29418: LD_EXP 145
29422: NOT
29423: PUSH
29424: LD_VAR 0 1
29428: PPUSH
29429: CALL_OW 266
29433: PUSH
29434: LD_INT 6
29436: EQUAL
29437: AND
29438: IFFALSE 29452
// begin was_DMatPrediction := true ;
29440: LD_ADDR_EXP 145
29444: PUSH
29445: LD_INT 1
29447: ST_TO_ADDR
// DMatPrediction ;
29448: CALL 1746 0 0
// end ; end ; end ;
29452: PPOPN 1
29454: END
// on UpgradeComplete ( build ) do begin if GetSide ( build ) = you and GetBType ( build ) in all_labs then
29455: LD_VAR 0 1
29459: PPUSH
29460: CALL_OW 255
29464: PUSH
29465: LD_EXP 1
29469: EQUAL
29470: PUSH
29471: LD_VAR 0 1
29475: PPUSH
29476: CALL_OW 266
29480: PUSH
29481: LD_EXP 40
29485: IN
29486: AND
29487: IFFALSE 29539
// if not byl_sib_research and ( ( GetLabKind ( build , 1 ) = b_lab_spacetime or GetLabKind ( build , 2 ) = b_lab_spacetime ) ) then
29489: LD_EXP 53
29493: NOT
29494: PUSH
29495: LD_VAR 0 1
29499: PPUSH
29500: LD_INT 1
29502: PPUSH
29503: CALL_OW 268
29507: PUSH
29508: LD_INT 14
29510: EQUAL
29511: PUSH
29512: LD_VAR 0 1
29516: PPUSH
29517: LD_INT 2
29519: PPUSH
29520: CALL_OW 268
29524: PUSH
29525: LD_INT 14
29527: EQUAL
29528: OR
29529: AND
29530: IFFALSE 29539
// begin DSibResearch ;
29532: CALL 2105 0 0
// disable ( 66 ) ;
29536: LD_INT 66
29538: DISABLE_MARKED
// end ; end ;
29539: PPOPN 1
29541: END
// on VehicleConstructed ( veh , fact ) do begin if GetSide ( veh ) = ai then
29542: LD_VAR 0 1
29546: PPUSH
29547: CALL_OW 255
29551: PUSH
29552: LD_EXP 6
29556: EQUAL
29557: IFFALSE 29615
// begin if veh in attack then
29559: LD_VAR 0 1
29563: PUSH
29564: LD_EXP 138
29568: IN
29569: IFFALSE 29585
// ComMoveToArea ( veh , pro_att ) else
29571: LD_VAR 0 1
29575: PPUSH
29576: LD_INT 13
29578: PPUSH
29579: CALL_OW 113
29583: GO 29597
// ComMoveToArea ( veh , pro_def ) ;
29585: LD_VAR 0 1
29589: PPUSH
29590: LD_INT 12
29592: PPUSH
29593: CALL_OW 113
// AddComExitVehicle ( veh ) ;
29597: LD_VAR 0 1
29601: PPUSH
29602: CALL_OW 181
// add_to_vehicles ( veh ) ;
29606: LD_VAR 0 1
29610: PPUSH
29611: CALL 30874 0 1
// end ; end ;
29615: PPOPN 2
29617: END
// on LeaveBuilding ( b , un ) do begin if GetSide ( un ) = you and GetBType ( b ) = b_control_tower then
29618: LD_VAR 0 2
29622: PPUSH
29623: CALL_OW 255
29627: PUSH
29628: LD_EXP 1
29632: EQUAL
29633: PUSH
29634: LD_VAR 0 1
29638: PPUSH
29639: CALL_OW 266
29643: PUSH
29644: LD_INT 36
29646: EQUAL
29647: AND
29648: IFFALSE 29659
// add_to_humans ( un ) ;
29650: LD_VAR 0 2
29654: PPUSH
29655: CALL 30538 0 1
// end ;
29659: PPOPN 2
29661: END
// on SailEvent ( num ) do begin case num of 0 :
29662: LD_VAR 0 1
29666: PUSH
29667: LD_INT 0
29669: DOUBLE
29670: EQUAL
29671: IFTRUE 29675
29673: GO 29678
29675: POP
// begin end ; normal1_utok :
29676: GO 29781
29678: LD_EXP 24
29682: DOUBLE
29683: EQUAL
29684: IFTRUE 29688
29686: GO 29695
29688: POP
// begin f_normal1_utok ;
29689: CALL 13138 0 0
// end ; normal2_utok :
29693: GO 29781
29695: LD_EXP 25
29699: DOUBLE
29700: EQUAL
29701: IFTRUE 29705
29703: GO 29712
29705: POP
// begin f_normal2_utok ;
29706: CALL 13467 0 0
// end ; normal3_utok :
29710: GO 29781
29712: LD_EXP 26
29716: DOUBLE
29717: EQUAL
29718: IFTRUE 29722
29720: GO 29729
29722: POP
// begin f_normal3_utok ;
29723: CALL 13807 0 0
// end ; normal4_utok :
29727: GO 29781
29729: LD_EXP 27
29733: DOUBLE
29734: EQUAL
29735: IFTRUE 29739
29737: GO 29746
29739: POP
// begin f_normal4_utok ;
29740: CALL 14158 0 0
// end ; vsevolod_attack :
29744: GO 29781
29746: LD_EXP 28
29750: DOUBLE
29751: EQUAL
29752: IFTRUE 29756
29754: GO 29763
29756: POP
// begin f_vsevolod_utok ;
29757: CALL 14498 0 0
// end ; vsevolod_final_attack :
29761: GO 29781
29763: LD_EXP 29
29767: DOUBLE
29768: EQUAL
29769: IFTRUE 29773
29771: GO 29780
29773: POP
// begin f_vsevolod_final_utok ;
29774: CALL 14834 0 0
// end ; end ;
29778: GO 29781
29780: POP
// end ;
29781: PPOPN 1
29783: END
// on Contact ( side1 , side2 ) do var a ;
29784: LD_INT 0
29786: PPUSH
// begin if IsLive ( a1eng ) then
29787: LD_EXP 114
29791: PPUSH
29792: CALL_OW 300
29796: IFFALSE 30016
// if ( side1 = you and side2 = ai ) or ( side2 = you and side1 = ai ) then
29798: LD_VAR 0 1
29802: PUSH
29803: LD_EXP 1
29807: EQUAL
29808: PUSH
29809: LD_VAR 0 2
29813: PUSH
29814: LD_EXP 6
29818: EQUAL
29819: AND
29820: PUSH
29821: LD_VAR 0 2
29825: PUSH
29826: LD_EXP 1
29830: EQUAL
29831: PUSH
29832: LD_VAR 0 1
29836: PUSH
29837: LD_EXP 6
29841: EQUAL
29842: AND
29843: OR
29844: IFFALSE 30016
// begin if a1eng then
29846: LD_EXP 114
29850: IFFALSE 30016
// begin remove_from_humans ( a1eng ) ;
29852: LD_EXP 114
29856: PPUSH
29857: CALL 31858 0 1
// while IsInUnit ( a1eng ) and IsLive ( a1eng ) do
29861: LD_EXP 114
29865: PPUSH
29866: CALL_OW 310
29870: PUSH
29871: LD_EXP 114
29875: PPUSH
29876: CALL_OW 300
29880: AND
29881: IFFALSE 29901
// begin ComExitBuilding ( a1eng ) ;
29883: LD_EXP 114
29887: PPUSH
29888: CALL_OW 122
// wait ( 0 0$1 ) ;
29892: LD_INT 35
29894: PPUSH
29895: CALL_OW 67
// end ;
29899: GO 29861
// while IsLive ( sib_dul ) and IsLive ( a1eng ) do
29901: LD_EXP 143
29905: PPUSH
29906: CALL_OW 300
29910: PUSH
29911: LD_EXP 114
29915: PPUSH
29916: CALL_OW 300
29920: AND
29921: IFFALSE 29995
// begin a := GetLives ( sib_dul ) - 25 * difficulty ;
29923: LD_ADDR_VAR 0 3
29927: PUSH
29928: LD_EXP 143
29932: PPUSH
29933: CALL_OW 256
29937: PUSH
29938: LD_INT 25
29940: PUSH
29941: LD_OWVAR 67
29945: MUL
29946: MINUS
29947: ST_TO_ADDR
// if a > 1 then
29948: LD_VAR 0 3
29952: PUSH
29953: LD_INT 1
29955: GREATER
29956: IFFALSE 29972
// SetLives ( sib_dul , a ) ;
29958: LD_EXP 143
29962: PPUSH
29963: LD_VAR 0 3
29967: PPUSH
29968: CALL_OW 234
// ComDismantle ( a1eng , sib_dul ) ;
29972: LD_EXP 114
29976: PPUSH
29977: LD_EXP 143
29981: PPUSH
29982: CALL_OW 167
// wait ( 0 0$1 ) ;
29986: LD_INT 35
29988: PPUSH
29989: CALL_OW 67
// end ;
29993: GO 29901
// AddComEnterUnit ( a1eng , Rudepot ) ;
29995: LD_EXP 114
29999: PPUSH
30000: LD_INT 58
30002: PPUSH
30003: CALL_OW 180
// add_to_humans ( a1eng ) ;
30007: LD_EXP 114
30011: PPUSH
30012: CALL 30538 0 1
// end ; end ; end ;
30016: PPOPN 3
30018: END
// var mcdef1 , mcdef2 , mcatt1 ; on McDefendTakesUnit ( mcid , un ) do begin if mcid = idDef1 then
30019: LD_VAR 0 1
30023: PUSH
30024: LD_EXP 96
30028: EQUAL
30029: IFFALSE 30047
// mcdef1 := mcdef1 union un ;
30031: LD_ADDR_LOC 21
30035: PUSH
30036: LD_LOC 21
30040: PUSH
30041: LD_VAR 0 2
30045: UNION
30046: ST_TO_ADDR
// if mcid = idDef2 then
30047: LD_VAR 0 1
30051: PUSH
30052: LD_EXP 97
30056: EQUAL
30057: IFFALSE 30075
// mcdef2 := mcdef2 union un ;
30059: LD_ADDR_LOC 22
30063: PUSH
30064: LD_LOC 22
30068: PUSH
30069: LD_VAR 0 2
30073: UNION
30074: ST_TO_ADDR
// if mcid = idAtt1 then
30075: LD_VAR 0 1
30079: PUSH
30080: LD_EXP 93
30084: EQUAL
30085: IFFALSE 30103
// mcatt1 := mcatt1 union un ;
30087: LD_ADDR_LOC 23
30091: PUSH
30092: LD_LOC 23
30096: PUSH
30097: LD_VAR 0 2
30101: UNION
30102: ST_TO_ADDR
// Remove_From_Humans ( un ) ;
30103: LD_VAR 0 2
30107: PPUSH
30108: CALL 31858 0 1
// Remove_From_Vehicles ( un ) ;
30112: LD_VAR 0 2
30116: PPUSH
30117: CALL 32028 0 1
// Remove_From_Builds ( un ) ;
30121: LD_VAR 0 2
30125: PPUSH
30126: CALL 31672 0 1
// end ;
30130: PPOPN 2
30132: END
// on McDefendReturnsUnit ( mcid , un ) do begin if mcid = idDef1 then
30133: LD_VAR 0 1
30137: PUSH
30138: LD_EXP 96
30142: EQUAL
30143: IFFALSE 30161
// mcdef1 := mcdef1 diff un ;
30145: LD_ADDR_LOC 21
30149: PUSH
30150: LD_LOC 21
30154: PUSH
30155: LD_VAR 0 2
30159: DIFF
30160: ST_TO_ADDR
// if mcid = idDef2 then
30161: LD_VAR 0 1
30165: PUSH
30166: LD_EXP 97
30170: EQUAL
30171: IFFALSE 30189
// mcdef2 := mcdef2 diff un ;
30173: LD_ADDR_LOC 22
30177: PUSH
30178: LD_LOC 22
30182: PUSH
30183: LD_VAR 0 2
30187: DIFF
30188: ST_TO_ADDR
// if mcid = idAtt1 then
30189: LD_VAR 0 1
30193: PUSH
30194: LD_EXP 93
30198: EQUAL
30199: IFFALSE 30217
// mcatt1 := mcatt1 diff un ;
30201: LD_ADDR_LOC 23
30205: PUSH
30206: LD_LOC 23
30210: PUSH
30211: LD_VAR 0 2
30215: DIFF
30216: ST_TO_ADDR
// add_to_Humans ( un ) ;
30217: LD_VAR 0 2
30221: PPUSH
30222: CALL 30538 0 1
// add_to_Vehicles ( un ) ;
30226: LD_VAR 0 2
30230: PPUSH
30231: CALL 30874 0 1
// add_to_Builds ( un ) ;
30235: LD_VAR 0 2
30239: PPUSH
30240: CALL 30966 0 1
// end ;
30244: PPOPN 2
30246: END
// on McRegistryResultChanges ( mcid , count , strength ) do var i ;
30247: LD_INT 0
30249: PPUSH
// begin if mcid = idAtt1 then
30250: LD_VAR 0 1
30254: PUSH
30255: LD_EXP 93
30259: EQUAL
30260: IFFALSE 30372
// begin if count = 0 then
30262: LD_VAR 0 2
30266: PUSH
30267: LD_INT 0
30269: EQUAL
30270: IFFALSE 30323
// begin for i in FilterUnitsInArea ( mc_attack , [ [ f_side , you ] ] ) do
30272: LD_ADDR_VAR 0 4
30276: PUSH
30277: LD_INT 26
30279: PPUSH
30280: LD_INT 22
30282: PUSH
30283: LD_EXP 1
30287: PUSH
30288: EMPTY
30289: LIST
30290: LIST
30291: PUSH
30292: EMPTY
30293: LIST
30294: PPUSH
30295: CALL_OW 70
30299: PUSH
30300: FOR_IN
30301: IFFALSE 30319
// PriorityAttack ( ai , i ) ;
30303: LD_EXP 6
30307: PPUSH
30308: LD_VAR 0 4
30312: PPUSH
30313: CALL_OW 470
30317: GO 30300
30319: POP
30320: POP
// end else
30321: GO 30372
// begin for i in FilterUnitsInArea ( mc_attack , [ [ f_side , you ] ] ) do
30323: LD_ADDR_VAR 0 4
30327: PUSH
30328: LD_INT 26
30330: PPUSH
30331: LD_INT 22
30333: PUSH
30334: LD_EXP 1
30338: PUSH
30339: EMPTY
30340: LIST
30341: LIST
30342: PUSH
30343: EMPTY
30344: LIST
30345: PPUSH
30346: CALL_OW 70
30350: PUSH
30351: FOR_IN
30352: IFFALSE 30370
// NormalAttack ( ai , i ) ;
30354: LD_EXP 6
30358: PPUSH
30359: LD_VAR 0 4
30363: PPUSH
30364: CALL_OW 472
30368: GO 30351
30370: POP
30371: POP
// end ; end ; end ;
30372: PPOPN 4
30374: END
// on McAttackOutOfFuel ( mcid , un ) do begin Attack := Attack diff un ;
30375: LD_ADDR_EXP 138
30379: PUSH
30380: LD_EXP 138
30384: PUSH
30385: LD_VAR 0 2
30389: DIFF
30390: ST_TO_ADDR
// while IsLive ( un ) and not IsInArea ( un , near_base ) do
30391: LD_VAR 0 2
30395: PPUSH
30396: CALL_OW 300
30400: PUSH
30401: LD_VAR 0 2
30405: PPUSH
30406: LD_INT 2
30408: PPUSH
30409: CALL_OW 308
30413: NOT
30414: AND
30415: IFFALSE 30438
// begin ComMoveToArea ( un , near_base ) ;
30417: LD_VAR 0 2
30421: PPUSH
30422: LD_INT 2
30424: PPUSH
30425: CALL_OW 113
// wait ( 0 0$2 ) ;
30429: LD_INT 70
30431: PPUSH
30432: CALL_OW 67
// end ;
30436: GO 30391
// end ;
30438: PPOPN 2
30440: END
// export function add_to ( un ) ; var i ; begin
30441: LD_INT 0
30443: PPUSH
30444: PPUSH
// for i in un do
30445: LD_ADDR_VAR 0 3
30449: PUSH
30450: LD_VAR 0 1
30454: PUSH
30455: FOR_IN
30456: IFFALSE 30531
// case GetType ( i ) of unit_human :
30458: LD_VAR 0 3
30462: PPUSH
30463: CALL_OW 247
30467: PUSH
30468: LD_INT 1
30470: DOUBLE
30471: EQUAL
30472: IFTRUE 30476
30474: GO 30488
30476: POP
// add_to_humans ( i ) ; unit_vehicle :
30477: LD_VAR 0 3
30481: PPUSH
30482: CALL 30538 0 1
30486: GO 30529
30488: LD_INT 2
30490: DOUBLE
30491: EQUAL
30492: IFTRUE 30496
30494: GO 30508
30496: POP
// add_to_vehicles ( i ) ; unit_building :
30497: LD_VAR 0 3
30501: PPUSH
30502: CALL 30874 0 1
30506: GO 30529
30508: LD_INT 3
30510: DOUBLE
30511: EQUAL
30512: IFTRUE 30516
30514: GO 30528
30516: POP
// add_to_builds ( i ) ; end ;
30517: LD_VAR 0 3
30521: PPUSH
30522: CALL 30966 0 1
30526: GO 30529
30528: POP
30529: GO 30455
30531: POP
30532: POP
// end ;
30533: LD_VAR 0 2
30537: RET
// export function add_to_humans ( un ) ; var i ; begin
30538: LD_INT 0
30540: PPUSH
30541: PPUSH
// if GetSide ( un ) = ai then
30542: LD_VAR 0 1
30546: PPUSH
30547: CALL_OW 255
30551: PUSH
30552: LD_EXP 6
30556: EQUAL
30557: IFFALSE 30869
// for i in un do
30559: LD_ADDR_VAR 0 3
30563: PUSH
30564: LD_VAR 0 1
30568: PUSH
30569: FOR_IN
30570: IFFALSE 30867
// begin case Getclass ( i ) of class_soldier :
30572: LD_VAR 0 3
30576: PPUSH
30577: CALL_OW 257
30581: PUSH
30582: LD_INT 1
30584: DOUBLE
30585: EQUAL
30586: IFTRUE 30590
30588: GO 30609
30590: POP
// sol := sol union i ; class_engineer :
30591: LD_ADDR_EXP 121
30595: PUSH
30596: LD_EXP 121
30600: PUSH
30601: LD_VAR 0 3
30605: UNION
30606: ST_TO_ADDR
30607: GO 30691
30609: LD_INT 2
30611: DOUBLE
30612: EQUAL
30613: IFTRUE 30617
30615: GO 30636
30617: POP
// eng := eng union i ; class_mechanic :
30618: LD_ADDR_EXP 123
30622: PUSH
30623: LD_EXP 123
30627: PUSH
30628: LD_VAR 0 3
30632: UNION
30633: ST_TO_ADDR
30634: GO 30691
30636: LD_INT 3
30638: DOUBLE
30639: EQUAL
30640: IFTRUE 30644
30642: GO 30663
30644: POP
// mec := mec union i ; class_scientistic :
30645: LD_ADDR_EXP 125
30649: PUSH
30650: LD_EXP 125
30654: PUSH
30655: LD_VAR 0 3
30659: UNION
30660: ST_TO_ADDR
30661: GO 30691
30663: LD_INT 4
30665: DOUBLE
30666: EQUAL
30667: IFTRUE 30671
30669: GO 30690
30671: POP
// sci := sci union i ; end ;
30672: LD_ADDR_EXP 127
30676: PUSH
30677: LD_EXP 127
30681: PUSH
30682: LD_VAR 0 3
30686: UNION
30687: ST_TO_ADDR
30688: GO 30691
30690: POP
// case GetTag ( i ) of 1 :
30691: LD_VAR 0 3
30695: PPUSH
30696: CALL_OW 110
30700: PUSH
30701: LD_INT 1
30703: DOUBLE
30704: EQUAL
30705: IFTRUE 30709
30707: GO 30728
30709: POP
// a1 := a1 union i ; 2 :
30710: LD_ADDR_EXP 133
30714: PUSH
30715: LD_EXP 133
30719: PUSH
30720: LD_VAR 0 3
30724: UNION
30725: ST_TO_ADDR
30726: GO 30865
30728: LD_INT 2
30730: DOUBLE
30731: EQUAL
30732: IFTRUE 30736
30734: GO 30755
30736: POP
// a2 := a2 union i ; 3 :
30737: LD_ADDR_EXP 134
30741: PUSH
30742: LD_EXP 134
30746: PUSH
30747: LD_VAR 0 3
30751: UNION
30752: ST_TO_ADDR
30753: GO 30865
30755: LD_INT 3
30757: DOUBLE
30758: EQUAL
30759: IFTRUE 30763
30761: GO 30782
30763: POP
// a3 := a3 union i ; 4 :
30764: LD_ADDR_EXP 135
30768: PUSH
30769: LD_EXP 135
30773: PUSH
30774: LD_VAR 0 3
30778: UNION
30779: ST_TO_ADDR
30780: GO 30865
30782: LD_INT 4
30784: DOUBLE
30785: EQUAL
30786: IFTRUE 30790
30788: GO 30809
30790: POP
// a4 := a4 union i ; 5 :
30791: LD_ADDR_EXP 136
30795: PUSH
30796: LD_EXP 136
30800: PUSH
30801: LD_VAR 0 3
30805: UNION
30806: ST_TO_ADDR
30807: GO 30865
30809: LD_INT 5
30811: DOUBLE
30812: EQUAL
30813: IFTRUE 30817
30815: GO 30836
30817: POP
// a5 := a5 union i ; else
30818: LD_ADDR_EXP 137
30822: PUSH
30823: LD_EXP 137
30827: PUSH
30828: LD_VAR 0 3
30832: UNION
30833: ST_TO_ADDR
30834: GO 30865
30836: POP
// begin a3 := a3 union i ;
30837: LD_ADDR_EXP 135
30841: PUSH
30842: LD_EXP 135
30846: PUSH
30847: LD_VAR 0 3
30851: UNION
30852: ST_TO_ADDR
// SetTag ( i , 3 ) ;
30853: LD_VAR 0 3
30857: PPUSH
30858: LD_INT 3
30860: PPUSH
30861: CALL_OW 109
// end ; end ; end ;
30865: GO 30569
30867: POP
30868: POP
// end ;
30869: LD_VAR 0 2
30873: RET
// export function add_to_vehicles ( un ) ; var i ; begin
30874: LD_INT 0
30876: PPUSH
30877: PPUSH
// for i in un do
30878: LD_ADDR_VAR 0 3
30882: PUSH
30883: LD_VAR 0 1
30887: PUSH
30888: FOR_IN
30889: IFFALSE 30959
// begin if GetSide ( un ) = ai then
30891: LD_VAR 0 1
30895: PPUSH
30896: CALL_OW 255
30900: PUSH
30901: LD_EXP 6
30905: EQUAL
30906: IFFALSE 30957
// if GetControl ( i ) = control_remote then
30908: LD_VAR 0 3
30912: PPUSH
30913: CALL_OW 263
30917: PUSH
30918: LD_INT 2
30920: EQUAL
30921: IFFALSE 30941
// begin attack := attack union i ;
30923: LD_ADDR_EXP 138
30927: PUSH
30928: LD_EXP 138
30932: PUSH
30933: LD_VAR 0 3
30937: UNION
30938: ST_TO_ADDR
// end else
30939: GO 30957
// begin defence := defence union i ;
30941: LD_ADDR_EXP 139
30945: PUSH
30946: LD_EXP 139
30950: PUSH
30951: LD_VAR 0 3
30955: UNION
30956: ST_TO_ADDR
// end ; end ;
30957: GO 30888
30959: POP
30960: POP
// end ;
30961: LD_VAR 0 2
30965: RET
// export function add_to_builds ( un ) ; var i , j , bt ; begin
30966: LD_INT 0
30968: PPUSH
30969: PPUSH
30970: PPUSH
30971: PPUSH
// for i in un do
30972: LD_ADDR_VAR 0 3
30976: PUSH
30977: LD_VAR 0 1
30981: PUSH
30982: FOR_IN
30983: IFFALSE 31568
// begin if GetSide ( un ) = ai then
30985: LD_VAR 0 1
30989: PPUSH
30990: CALL_OW 255
30994: PUSH
30995: LD_EXP 6
30999: EQUAL
31000: IFFALSE 31077
// for j in builds1 do
31002: LD_ADDR_VAR 0 4
31006: PUSH
31007: LD_EXP 104
31011: PUSH
31012: FOR_IN
31013: IFFALSE 31075
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] then
31015: LD_VAR 0 3
31019: PPUSH
31020: CALL_OW 250
31024: PUSH
31025: LD_VAR 0 4
31029: PUSH
31030: LD_INT 2
31032: ARRAY
31033: EQUAL
31034: PUSH
31035: LD_VAR 0 3
31039: PPUSH
31040: CALL_OW 251
31044: PUSH
31045: LD_VAR 0 4
31049: PUSH
31050: LD_INT 3
31052: ARRAY
31053: EQUAL
31054: AND
31055: IFFALSE 31073
// b1 := b1 union i ;
31057: LD_ADDR_EXP 128
31061: PUSH
31062: LD_EXP 128
31066: PUSH
31067: LD_VAR 0 3
31071: UNION
31072: ST_TO_ADDR
31073: GO 31012
31075: POP
31076: POP
// for j in builds2 do
31077: LD_ADDR_VAR 0 4
31081: PUSH
31082: LD_EXP 105
31086: PUSH
31087: FOR_IN
31088: IFFALSE 31150
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] then
31090: LD_VAR 0 3
31094: PPUSH
31095: CALL_OW 250
31099: PUSH
31100: LD_VAR 0 4
31104: PUSH
31105: LD_INT 2
31107: ARRAY
31108: EQUAL
31109: PUSH
31110: LD_VAR 0 3
31114: PPUSH
31115: CALL_OW 251
31119: PUSH
31120: LD_VAR 0 4
31124: PUSH
31125: LD_INT 3
31127: ARRAY
31128: EQUAL
31129: AND
31130: IFFALSE 31148
// b2 := b2 union i ;
31132: LD_ADDR_EXP 129
31136: PUSH
31137: LD_EXP 129
31141: PUSH
31142: LD_VAR 0 3
31146: UNION
31147: ST_TO_ADDR
31148: GO 31087
31150: POP
31151: POP
// for j in builds3 do
31152: LD_ADDR_VAR 0 4
31156: PUSH
31157: LD_EXP 106
31161: PUSH
31162: FOR_IN
31163: IFFALSE 31225
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] then
31165: LD_VAR 0 3
31169: PPUSH
31170: CALL_OW 250
31174: PUSH
31175: LD_VAR 0 4
31179: PUSH
31180: LD_INT 2
31182: ARRAY
31183: EQUAL
31184: PUSH
31185: LD_VAR 0 3
31189: PPUSH
31190: CALL_OW 251
31194: PUSH
31195: LD_VAR 0 4
31199: PUSH
31200: LD_INT 3
31202: ARRAY
31203: EQUAL
31204: AND
31205: IFFALSE 31223
// b3 := b3 union i ;
31207: LD_ADDR_EXP 130
31211: PUSH
31212: LD_EXP 130
31216: PUSH
31217: LD_VAR 0 3
31221: UNION
31222: ST_TO_ADDR
31223: GO 31162
31225: POP
31226: POP
// for j in builds4 do
31227: LD_ADDR_VAR 0 4
31231: PUSH
31232: LD_EXP 107
31236: PUSH
31237: FOR_IN
31238: IFFALSE 31300
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] then
31240: LD_VAR 0 3
31244: PPUSH
31245: CALL_OW 250
31249: PUSH
31250: LD_VAR 0 4
31254: PUSH
31255: LD_INT 2
31257: ARRAY
31258: EQUAL
31259: PUSH
31260: LD_VAR 0 3
31264: PPUSH
31265: CALL_OW 251
31269: PUSH
31270: LD_VAR 0 4
31274: PUSH
31275: LD_INT 3
31277: ARRAY
31278: EQUAL
31279: AND
31280: IFFALSE 31298
// b4 := b4 union i ;
31282: LD_ADDR_EXP 131
31286: PUSH
31287: LD_EXP 131
31291: PUSH
31292: LD_VAR 0 3
31296: UNION
31297: ST_TO_ADDR
31298: GO 31237
31300: POP
31301: POP
// for j in builds5 do
31302: LD_ADDR_VAR 0 4
31306: PUSH
31307: LD_EXP 108
31311: PUSH
31312: FOR_IN
31313: IFFALSE 31375
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] then
31315: LD_VAR 0 3
31319: PPUSH
31320: CALL_OW 250
31324: PUSH
31325: LD_VAR 0 4
31329: PUSH
31330: LD_INT 2
31332: ARRAY
31333: EQUAL
31334: PUSH
31335: LD_VAR 0 3
31339: PPUSH
31340: CALL_OW 251
31344: PUSH
31345: LD_VAR 0 4
31349: PUSH
31350: LD_INT 3
31352: ARRAY
31353: EQUAL
31354: AND
31355: IFFALSE 31373
// b5 := b5 union i ;
31357: LD_ADDR_EXP 132
31361: PUSH
31362: LD_EXP 132
31366: PUSH
31367: LD_VAR 0 3
31371: UNION
31372: ST_TO_ADDR
31373: GO 31312
31375: POP
31376: POP
// bt := GetBType ( i ) ;
31377: LD_ADDR_VAR 0 5
31381: PUSH
31382: LD_VAR 0 3
31386: PPUSH
31387: CALL_OW 266
31391: ST_TO_ADDR
// if bt = b_barracks or bt = b_armoury or bt = b_bunker or bt = b_breastwork then
31392: LD_VAR 0 5
31396: PUSH
31397: LD_INT 5
31399: EQUAL
31400: PUSH
31401: LD_VAR 0 5
31405: PUSH
31406: LD_INT 4
31408: EQUAL
31409: OR
31410: PUSH
31411: LD_VAR 0 5
31415: PUSH
31416: LD_INT 32
31418: EQUAL
31419: OR
31420: PUSH
31421: LD_VAR 0 5
31425: PUSH
31426: LD_INT 31
31428: EQUAL
31429: OR
31430: IFFALSE 31448
// fort := fort union i ;
31432: LD_ADDR_EXP 119
31436: PUSH
31437: LD_EXP 119
31441: PUSH
31442: LD_VAR 0 3
31446: UNION
31447: ST_TO_ADDR
// if bt = b_lab or bt = b_lab_full or bt = b_lab_half then
31448: LD_VAR 0 5
31452: PUSH
31453: LD_INT 6
31455: EQUAL
31456: PUSH
31457: LD_VAR 0 5
31461: PUSH
31462: LD_INT 8
31464: EQUAL
31465: OR
31466: PUSH
31467: LD_VAR 0 5
31471: PUSH
31472: LD_INT 7
31474: EQUAL
31475: OR
31476: IFFALSE 31494
// lab := lab union i ;
31478: LD_ADDR_EXP 126
31482: PUSH
31483: LD_EXP 126
31487: PUSH
31488: LD_VAR 0 3
31492: UNION
31493: ST_TO_ADDR
// if bt = b_workshop or bt = b_factory then
31494: LD_VAR 0 5
31498: PUSH
31499: LD_INT 2
31501: EQUAL
31502: PUSH
31503: LD_VAR 0 5
31507: PUSH
31508: LD_INT 3
31510: EQUAL
31511: OR
31512: IFFALSE 31530
// fact := fact union i ;
31514: LD_ADDR_EXP 124
31518: PUSH
31519: LD_EXP 124
31523: PUSH
31524: LD_VAR 0 3
31528: UNION
31529: ST_TO_ADDR
// if bt = b_depot or bt = b_warehouse then
31530: LD_VAR 0 5
31534: PUSH
31535: LD_INT 0
31537: EQUAL
31538: PUSH
31539: LD_VAR 0 5
31543: PUSH
31544: LD_INT 1
31546: EQUAL
31547: OR
31548: IFFALSE 31566
// dep := dep union i ;
31550: LD_ADDR_EXP 122
31554: PUSH
31555: LD_EXP 122
31559: PUSH
31560: LD_VAR 0 3
31564: UNION
31565: ST_TO_ADDR
// end ;
31566: GO 30982
31568: POP
31569: POP
// end ;
31570: LD_VAR 0 2
31574: RET
// export function remove_from ( un ) ; var i ; begin
31575: LD_INT 0
31577: PPUSH
31578: PPUSH
// for i in un do
31579: LD_ADDR_VAR 0 3
31583: PUSH
31584: LD_VAR 0 1
31588: PUSH
31589: FOR_IN
31590: IFFALSE 31665
// case GetType ( i ) of unit_human :
31592: LD_VAR 0 3
31596: PPUSH
31597: CALL_OW 247
31601: PUSH
31602: LD_INT 1
31604: DOUBLE
31605: EQUAL
31606: IFTRUE 31610
31608: GO 31622
31610: POP
// remove_from_humans ( i ) ; unit_vehicle :
31611: LD_VAR 0 3
31615: PPUSH
31616: CALL 31858 0 1
31620: GO 31663
31622: LD_INT 2
31624: DOUBLE
31625: EQUAL
31626: IFTRUE 31630
31628: GO 31642
31630: POP
// remove_from_vehicles ( i ) ; unit_building :
31631: LD_VAR 0 3
31635: PPUSH
31636: CALL 32028 0 1
31640: GO 31663
31642: LD_INT 3
31644: DOUBLE
31645: EQUAL
31646: IFTRUE 31650
31648: GO 31662
31650: POP
// remove_from_builds ( i ) ; end ;
31651: LD_VAR 0 3
31655: PPUSH
31656: CALL 31672 0 1
31660: GO 31663
31662: POP
31663: GO 31589
31665: POP
31666: POP
// end ;
31667: LD_VAR 0 2
31671: RET
// export function remove_from_builds ( un ) ; var i ; begin
31672: LD_INT 0
31674: PPUSH
31675: PPUSH
// for i in un do
31676: LD_ADDR_VAR 0 3
31680: PUSH
31681: LD_VAR 0 1
31685: PUSH
31686: FOR_IN
31687: IFFALSE 31851
// begin fact := fact diff i ;
31689: LD_ADDR_EXP 124
31693: PUSH
31694: LD_EXP 124
31698: PUSH
31699: LD_VAR 0 3
31703: DIFF
31704: ST_TO_ADDR
// fort := fort diff i ;
31705: LD_ADDR_EXP 119
31709: PUSH
31710: LD_EXP 119
31714: PUSH
31715: LD_VAR 0 3
31719: DIFF
31720: ST_TO_ADDR
// lab := lab diff i ;
31721: LD_ADDR_EXP 126
31725: PUSH
31726: LD_EXP 126
31730: PUSH
31731: LD_VAR 0 3
31735: DIFF
31736: ST_TO_ADDR
// dep := dep diff i ;
31737: LD_ADDR_EXP 122
31741: PUSH
31742: LD_EXP 122
31746: PUSH
31747: LD_VAR 0 3
31751: DIFF
31752: ST_TO_ADDR
// ctrl := ctrl diff i ;
31753: LD_ADDR_EXP 120
31757: PUSH
31758: LD_EXP 120
31762: PUSH
31763: LD_VAR 0 3
31767: DIFF
31768: ST_TO_ADDR
// b1 := b1 diff i ;
31769: LD_ADDR_EXP 128
31773: PUSH
31774: LD_EXP 128
31778: PUSH
31779: LD_VAR 0 3
31783: DIFF
31784: ST_TO_ADDR
// b2 := b2 diff i ;
31785: LD_ADDR_EXP 129
31789: PUSH
31790: LD_EXP 129
31794: PUSH
31795: LD_VAR 0 3
31799: DIFF
31800: ST_TO_ADDR
// b3 := b3 diff i ;
31801: LD_ADDR_EXP 130
31805: PUSH
31806: LD_EXP 130
31810: PUSH
31811: LD_VAR 0 3
31815: DIFF
31816: ST_TO_ADDR
// b4 := b4 diff i ;
31817: LD_ADDR_EXP 131
31821: PUSH
31822: LD_EXP 131
31826: PUSH
31827: LD_VAR 0 3
31831: DIFF
31832: ST_TO_ADDR
// b5 := b5 diff i ;
31833: LD_ADDR_EXP 132
31837: PUSH
31838: LD_EXP 132
31842: PUSH
31843: LD_VAR 0 3
31847: DIFF
31848: ST_TO_ADDR
// end ;
31849: GO 31686
31851: POP
31852: POP
// end ;
31853: LD_VAR 0 2
31857: RET
// export function remove_from_humans ( un ) ; var i ; begin
31858: LD_INT 0
31860: PPUSH
31861: PPUSH
// for i in un do
31862: LD_ADDR_VAR 0 3
31866: PUSH
31867: LD_VAR 0 1
31871: PUSH
31872: FOR_IN
31873: IFFALSE 32021
// begin sol := sol diff i ;
31875: LD_ADDR_EXP 121
31879: PUSH
31880: LD_EXP 121
31884: PUSH
31885: LD_VAR 0 3
31889: DIFF
31890: ST_TO_ADDR
// eng := eng diff i ;
31891: LD_ADDR_EXP 123
31895: PUSH
31896: LD_EXP 123
31900: PUSH
31901: LD_VAR 0 3
31905: DIFF
31906: ST_TO_ADDR
// mec := mec diff i ;
31907: LD_ADDR_EXP 125
31911: PUSH
31912: LD_EXP 125
31916: PUSH
31917: LD_VAR 0 3
31921: DIFF
31922: ST_TO_ADDR
// sci := sci diff i ;
31923: LD_ADDR_EXP 127
31927: PUSH
31928: LD_EXP 127
31932: PUSH
31933: LD_VAR 0 3
31937: DIFF
31938: ST_TO_ADDR
// a1 := a1 diff i ;
31939: LD_ADDR_EXP 133
31943: PUSH
31944: LD_EXP 133
31948: PUSH
31949: LD_VAR 0 3
31953: DIFF
31954: ST_TO_ADDR
// a2 := a2 diff i ;
31955: LD_ADDR_EXP 134
31959: PUSH
31960: LD_EXP 134
31964: PUSH
31965: LD_VAR 0 3
31969: DIFF
31970: ST_TO_ADDR
// a3 := a3 diff i ;
31971: LD_ADDR_EXP 135
31975: PUSH
31976: LD_EXP 135
31980: PUSH
31981: LD_VAR 0 3
31985: DIFF
31986: ST_TO_ADDR
// a4 := a4 diff i ;
31987: LD_ADDR_EXP 136
31991: PUSH
31992: LD_EXP 136
31996: PUSH
31997: LD_VAR 0 3
32001: DIFF
32002: ST_TO_ADDR
// a5 := a5 diff i ;
32003: LD_ADDR_EXP 137
32007: PUSH
32008: LD_EXP 137
32012: PUSH
32013: LD_VAR 0 3
32017: DIFF
32018: ST_TO_ADDR
// end ;
32019: GO 31872
32021: POP
32022: POP
// end ;
32023: LD_VAR 0 2
32027: RET
// export function remove_from_vehicles ( un ) ; var i ; begin
32028: LD_INT 0
32030: PPUSH
32031: PPUSH
// for i in un do
32032: LD_ADDR_VAR 0 3
32036: PUSH
32037: LD_VAR 0 1
32041: PUSH
32042: FOR_IN
32043: IFFALSE 32079
// begin attack := attack diff i ;
32045: LD_ADDR_EXP 138
32049: PUSH
32050: LD_EXP 138
32054: PUSH
32055: LD_VAR 0 3
32059: DIFF
32060: ST_TO_ADDR
// defence := defence diff i ;
32061: LD_ADDR_EXP 139
32065: PUSH
32066: LD_EXP 139
32070: PUSH
32071: LD_VAR 0 3
32075: DIFF
32076: ST_TO_ADDR
// end ;
32077: GO 32042
32079: POP
32080: POP
// end ; end_of_file
32081: LD_VAR 0 2
32085: RET
// export function zachranka ( un ) ; begin
32086: LD_INT 0
32088: PPUSH
// if not FilterAllUnits ( [ [ f_not , [ f_side , ai ] ] , [ f_dist , un , 24 ] ] ) then
32089: LD_INT 3
32091: PUSH
32092: LD_INT 22
32094: PUSH
32095: LD_EXP 6
32099: PUSH
32100: EMPTY
32101: LIST
32102: LIST
32103: PUSH
32104: EMPTY
32105: LIST
32106: LIST
32107: PUSH
32108: LD_INT 91
32110: PUSH
32111: LD_VAR 0 1
32115: PUSH
32116: LD_INT 24
32118: PUSH
32119: EMPTY
32120: LIST
32121: LIST
32122: LIST
32123: PUSH
32124: EMPTY
32125: LIST
32126: LIST
32127: PPUSH
32128: CALL_OW 69
32132: NOT
32133: IFFALSE 32206
// begin ComHeal ( UnitFilter ( sci , [ [ f_dist , un , 30 ] ] ) , un ) ;
32135: LD_EXP 127
32139: PPUSH
32140: LD_INT 91
32142: PUSH
32143: LD_VAR 0 1
32147: PUSH
32148: LD_INT 30
32150: PUSH
32151: EMPTY
32152: LIST
32153: LIST
32154: LIST
32155: PUSH
32156: EMPTY
32157: LIST
32158: PPUSH
32159: CALL_OW 72
32163: PPUSH
32164: LD_VAR 0 1
32168: PPUSH
32169: CALL_OW 128
// AddComReturn ( UnitFilter ( sci , [ [ f_dist , un , 30 ] ] ) ) ;
32173: LD_EXP 127
32177: PPUSH
32178: LD_INT 91
32180: PUSH
32181: LD_VAR 0 1
32185: PUSH
32186: LD_INT 30
32188: PUSH
32189: EMPTY
32190: LIST
32191: LIST
32192: LIST
32193: PUSH
32194: EMPTY
32195: LIST
32196: PPUSH
32197: CALL_OW 72
32201: PPUSH
32202: CALL_OW 204
// end ; end ; end_of_file
32206: LD_VAR 0 2
32210: RET
// var padlo ; function buch_crate ; var a , h , c ; begin
32211: LD_INT 0
32213: PPUSH
32214: PPUSH
32215: PPUSH
32216: PPUSH
// a := IsInUnit ( Burlak ) ;
32217: LD_ADDR_VAR 0 2
32221: PUSH
32222: LD_EXP 61
32226: PPUSH
32227: CALL_OW 310
32231: ST_TO_ADDR
// if not a then
32232: LD_VAR 0 2
32236: NOT
32237: IFFALSE 32249
// a := Burlak ;
32239: LD_ADDR_VAR 0 2
32243: PUSH
32244: LD_EXP 61
32248: ST_TO_ADDR
// repeat c := c + 1 ;
32249: LD_ADDR_VAR 0 4
32253: PUSH
32254: LD_VAR 0 4
32258: PUSH
32259: LD_INT 1
32261: PLUS
32262: ST_TO_ADDR
// h := RandHexArea ( bedny , false ) ;
32263: LD_ADDR_VAR 0 3
32267: PUSH
32268: LD_INT 29
32270: PPUSH
32271: LD_INT 0
32273: PPUSH
32274: CALL_OW 16
32278: ST_TO_ADDR
// until c > 100 or GetDistUnitXY ( Burlak , h [ 1 ] , h [ 2 ] ) < 25 or GetDistUnitArea ( Burlak , bedny ) > 15 ;
32279: LD_VAR 0 4
32283: PUSH
32284: LD_INT 100
32286: GREATER
32287: PUSH
32288: LD_EXP 61
32292: PPUSH
32293: LD_VAR 0 3
32297: PUSH
32298: LD_INT 1
32300: ARRAY
32301: PPUSH
32302: LD_VAR 0 3
32306: PUSH
32307: LD_INT 2
32309: ARRAY
32310: PPUSH
32311: CALL_OW 297
32315: PUSH
32316: LD_INT 25
32318: LESS
32319: OR
32320: PUSH
32321: LD_EXP 61
32325: PPUSH
32326: LD_INT 29
32328: PPUSH
32329: CALL_OW 299
32333: PUSH
32334: LD_INT 15
32336: GREATER
32337: OR
32338: IFFALSE 32249
// CreateCratesXY ( 5 , h [ 1 ] , h [ 2 ] , true ) ;
32340: LD_INT 5
32342: PPUSH
32343: LD_VAR 0 3
32347: PUSH
32348: LD_INT 1
32350: ARRAY
32351: PPUSH
32352: LD_VAR 0 3
32356: PUSH
32357: LD_INT 2
32359: ARRAY
32360: PPUSH
32361: LD_INT 1
32363: PPUSH
32364: CALL_OW 54
// padlo := padlo + 1 ;
32368: LD_ADDR_LOC 24
32372: PUSH
32373: LD_LOC 24
32377: PUSH
32378: LD_INT 1
32380: PLUS
32381: ST_TO_ADDR
// end ;
32382: LD_VAR 0 1
32386: RET
// every 0 0$53 do
32387: GO 32389
32389: DISABLE
// begin if [ ( padlo < 4 ) , ( padlo < 4 ) , ( padlo < 3 ) ] [ difficulty ] then
32390: LD_LOC 24
32394: PUSH
32395: LD_INT 4
32397: LESS
32398: PUSH
32399: LD_LOC 24
32403: PUSH
32404: LD_INT 4
32406: LESS
32407: PUSH
32408: LD_LOC 24
32412: PUSH
32413: LD_INT 3
32415: LESS
32416: PUSH
32417: EMPTY
32418: LIST
32419: LIST
32420: LIST
32421: PUSH
32422: LD_OWVAR 67
32426: ARRAY
32427: IFFALSE 32499
// case ( tick div 1 1$0 ) of 0 :
32429: LD_OWVAR 1
32433: PUSH
32434: LD_INT 2100
32436: DIV
32437: PUSH
32438: LD_INT 0
32440: DOUBLE
32441: EQUAL
32442: IFTRUE 32446
32444: GO 32453
32446: POP
// buch_crate ; 3 :
32447: CALL 32211 0 0
32451: GO 32499
32453: LD_INT 3
32455: DOUBLE
32456: EQUAL
32457: IFTRUE 32461
32459: GO 32468
32461: POP
// buch_crate ; 7 :
32462: CALL 32211 0 0
32466: GO 32499
32468: LD_INT 7
32470: DOUBLE
32471: EQUAL
32472: IFTRUE 32476
32474: GO 32483
32476: POP
// buch_crate ; 12 :
32477: CALL 32211 0 0
32481: GO 32499
32483: LD_INT 12
32485: DOUBLE
32486: EQUAL
32487: IFTRUE 32491
32489: GO 32498
32491: POP
// buch_crate ; end ;
32492: CALL 32211 0 0
32496: GO 32499
32498: POP
// if [ ( padlo < 4 ) , ( padlo < 4 ) , ( padlo < 3 ) ] [ difficulty ] then
32499: LD_LOC 24
32503: PUSH
32504: LD_INT 4
32506: LESS
32507: PUSH
32508: LD_LOC 24
32512: PUSH
32513: LD_INT 4
32515: LESS
32516: PUSH
32517: LD_LOC 24
32521: PUSH
32522: LD_INT 3
32524: LESS
32525: PUSH
32526: EMPTY
32527: LIST
32528: LIST
32529: LIST
32530: PUSH
32531: LD_OWVAR 67
32535: ARRAY
32536: IFFALSE 32539
// enable ;
32538: ENABLE
// end ;
32539: END
// every 0 0$5 do
32540: GO 32542
32542: DISABLE
// begin if [ ( padlo < 4 ) , ( padlo < 4 ) , ( padlo < 3 ) ] [ difficulty ] then
32543: LD_LOC 24
32547: PUSH
32548: LD_INT 4
32550: LESS
32551: PUSH
32552: LD_LOC 24
32556: PUSH
32557: LD_INT 4
32559: LESS
32560: PUSH
32561: LD_LOC 24
32565: PUSH
32566: LD_INT 3
32568: LESS
32569: PUSH
32570: EMPTY
32571: LIST
32572: LIST
32573: LIST
32574: PUSH
32575: LD_OWVAR 67
32579: ARRAY
32580: IFFALSE 32702
// case true of GetTechProgress ( tech_MatPred , you ) > 95 :
32582: LD_INT 1
32584: PUSH
32585: LD_INT 9
32587: PPUSH
32588: LD_EXP 1
32592: PPUSH
32593: CALL_OW 326
32597: PUSH
32598: LD_INT 95
32600: GREATER
32601: DOUBLE
32602: EQUAL
32603: IFTRUE 32607
32605: GO 32614
32607: POP
// buch_crate ; GetTechProgress ( tech_MatPred , you ) > 70 :
32608: CALL 32211 0 0
32612: GO 32702
32614: LD_INT 9
32616: PPUSH
32617: LD_EXP 1
32621: PPUSH
32622: CALL_OW 326
32626: PUSH
32627: LD_INT 70
32629: GREATER
32630: DOUBLE
32631: EQUAL
32632: IFTRUE 32636
32634: GO 32643
32636: POP
// buch_crate ; GetTechProgress ( tech_MatPred , you ) > 40 :
32637: CALL 32211 0 0
32641: GO 32702
32643: LD_INT 9
32645: PPUSH
32646: LD_EXP 1
32650: PPUSH
32651: CALL_OW 326
32655: PUSH
32656: LD_INT 40
32658: GREATER
32659: DOUBLE
32660: EQUAL
32661: IFTRUE 32665
32663: GO 32672
32665: POP
// buch_crate ; GetTechProgress ( tech_MatPred , you ) > 1 :
32666: CALL 32211 0 0
32670: GO 32702
32672: LD_INT 9
32674: PPUSH
32675: LD_EXP 1
32679: PPUSH
32680: CALL_OW 326
32684: PUSH
32685: LD_INT 1
32687: GREATER
32688: DOUBLE
32689: EQUAL
32690: IFTRUE 32694
32692: GO 32701
32694: POP
// buch_crate ; end ;
32695: CALL 32211 0 0
32699: GO 32702
32701: POP
// if [ ( padlo < 4 ) , ( padlo < 4 ) , ( padlo < 3 ) ] [ difficulty ] then
32702: LD_LOC 24
32706: PUSH
32707: LD_INT 4
32709: LESS
32710: PUSH
32711: LD_LOC 24
32715: PUSH
32716: LD_INT 4
32718: LESS
32719: PUSH
32720: LD_LOC 24
32724: PUSH
32725: LD_INT 3
32727: LESS
32728: PUSH
32729: EMPTY
32730: LIST
32731: LIST
32732: LIST
32733: PUSH
32734: LD_OWVAR 67
32738: ARRAY
32739: IFFALSE 32742
// enable ;
32741: ENABLE
// end ; end_of_file
32742: END
// every 0 0$2 + 0 0$0.1 do
32743: GO 32745
32745: DISABLE
// begin if FilterAllUnits ( [ [ f_side , 3 ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ) > FilterAllUnits ( [ [ f_side , 3 ] , [ f_type , unit_human ] , [ f_not , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ] ) then
32746: LD_INT 22
32748: PUSH
32749: LD_INT 3
32751: PUSH
32752: EMPTY
32753: LIST
32754: LIST
32755: PUSH
32756: LD_INT 2
32758: PUSH
32759: LD_INT 25
32761: PUSH
32762: LD_INT 12
32764: PUSH
32765: EMPTY
32766: LIST
32767: LIST
32768: PUSH
32769: LD_INT 25
32771: PUSH
32772: LD_INT 16
32774: PUSH
32775: EMPTY
32776: LIST
32777: LIST
32778: PUSH
32779: LD_INT 25
32781: PUSH
32782: LD_INT 15
32784: PUSH
32785: EMPTY
32786: LIST
32787: LIST
32788: PUSH
32789: LD_INT 25
32791: PUSH
32792: LD_INT 17
32794: PUSH
32795: EMPTY
32796: LIST
32797: LIST
32798: PUSH
32799: EMPTY
32800: LIST
32801: LIST
32802: LIST
32803: LIST
32804: LIST
32805: PUSH
32806: EMPTY
32807: LIST
32808: LIST
32809: PPUSH
32810: CALL_OW 69
32814: PUSH
32815: LD_INT 22
32817: PUSH
32818: LD_INT 3
32820: PUSH
32821: EMPTY
32822: LIST
32823: LIST
32824: PUSH
32825: LD_INT 21
32827: PUSH
32828: LD_INT 1
32830: PUSH
32831: EMPTY
32832: LIST
32833: LIST
32834: PUSH
32835: LD_INT 3
32837: PUSH
32838: LD_INT 2
32840: PUSH
32841: LD_INT 25
32843: PUSH
32844: LD_INT 12
32846: PUSH
32847: EMPTY
32848: LIST
32849: LIST
32850: PUSH
32851: LD_INT 25
32853: PUSH
32854: LD_INT 16
32856: PUSH
32857: EMPTY
32858: LIST
32859: LIST
32860: PUSH
32861: LD_INT 25
32863: PUSH
32864: LD_INT 15
32866: PUSH
32867: EMPTY
32868: LIST
32869: LIST
32870: PUSH
32871: LD_INT 25
32873: PUSH
32874: LD_INT 17
32876: PUSH
32877: EMPTY
32878: LIST
32879: LIST
32880: PUSH
32881: EMPTY
32882: LIST
32883: LIST
32884: LIST
32885: LIST
32886: LIST
32887: PUSH
32888: EMPTY
32889: LIST
32890: LIST
32891: PUSH
32892: EMPTY
32893: LIST
32894: LIST
32895: LIST
32896: PPUSH
32897: CALL_OW 69
32901: GREATER
32902: IFFALSE 32913
// begin SetAchievement ( ACH_POTA ) ;
32904: LD_STRING ACH_POTA
32906: PPUSH
32907: CALL_OW 543
// exit ;
32911: GO 32914
// end ; enable ;
32913: ENABLE
// end ;
32914: END
// export function SA_SaveVsevolod ; begin
32915: LD_INT 0
32917: PPUSH
// SetAchievement ( ACH_BIA ) ;
32918: LD_STRING ACH_BIA
32920: PPUSH
32921: CALL_OW 543
// end ;
32925: LD_VAR 0 1
32929: RET
// export function SA_NotSaveVsevolod ; begin
32930: LD_INT 0
32932: PPUSH
// SetAchievement ( ACH_BLO ) ;
32933: LD_STRING ACH_BLO
32935: PPUSH
32936: CALL_OW 543
// end ; end_of_file
32940: LD_VAR 0 1
32944: RET
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
32945: LD_INT 0
32947: PPUSH
32948: PPUSH
// if not missionNumber then
32949: LD_VAR 0 2
32953: NOT
32954: IFFALSE 32958
// exit ;
32956: GO 33088
// achiv := false ;
32958: LD_ADDR_VAR 0 7
32962: PUSH
32963: LD_INT 0
32965: ST_TO_ADDR
// case campaignNumber of 1 :
32966: LD_VAR 0 1
32970: PUSH
32971: LD_INT 1
32973: DOUBLE
32974: EQUAL
32975: IFTRUE 32979
32977: GO 32990
32979: POP
// achiv := ACH_GOTA ; 2 :
32980: LD_ADDR_VAR 0 7
32984: PUSH
32985: LD_STRING ACH_GOTA
32987: ST_TO_ADDR
32988: GO 33040
32990: LD_INT 2
32992: DOUBLE
32993: EQUAL
32994: IFTRUE 32998
32996: GO 33001
32998: POP
// ; 3 :
32999: GO 33040
33001: LD_INT 3
33003: DOUBLE
33004: EQUAL
33005: IFTRUE 33009
33007: GO 33020
33009: POP
// achiv := ACH_MOTSU ; 4 :
33010: LD_ADDR_VAR 0 7
33014: PUSH
33015: LD_STRING ACH_MOTSU
33017: ST_TO_ADDR
33018: GO 33040
33020: LD_INT 4
33022: DOUBLE
33023: EQUAL
33024: IFTRUE 33028
33026: GO 33039
33028: POP
// achiv := ACH_LOP ; end ;
33029: LD_ADDR_VAR 0 7
33033: PUSH
33034: LD_STRING ACH_LOP
33036: ST_TO_ADDR
33037: GO 33040
33039: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
33040: LD_OWVAR 67
33044: PUSH
33045: LD_INT 3
33047: EQUAL
33048: PUSH
33049: LD_VAR 0 7
33053: AND
33054: PUSH
33055: LD_VAR 0 3
33059: AND
33060: PUSH
33061: LD_VAR 0 4
33065: AND
33066: PUSH
33067: LD_VAR 0 5
33071: AND
33072: IFFALSE 33088
// SetAchievementEX ( achiv , missionNumber ) ;
33074: LD_VAR 0 7
33078: PPUSH
33079: LD_VAR 0 2
33083: PPUSH
33084: CALL_OW 564
// end ;
33088: LD_VAR 0 6
33092: RET
// export function SA_BehemothConstructed ; begin
33093: LD_INT 0
33095: PPUSH
// SetAchievement ( ACH_SMC ) ;
33096: LD_STRING ACH_SMC
33098: PPUSH
33099: CALL_OW 543
// end ;
33103: LD_VAR 0 1
33107: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
33108: LD_VAR 0 2
33112: PUSH
33113: LD_INT 1
33115: DOUBLE
33116: EQUAL
33117: IFTRUE 33121
33119: GO 33128
33121: POP
// HackUnlimitedResources ; 2 :
33122: CALL 33312 0 0
33126: GO 33309
33128: LD_INT 2
33130: DOUBLE
33131: EQUAL
33132: IFTRUE 33136
33134: GO 33143
33136: POP
// HackSetLevel10 ; 3 :
33137: CALL 33445 0 0
33141: GO 33309
33143: LD_INT 3
33145: DOUBLE
33146: EQUAL
33147: IFTRUE 33151
33149: GO 33158
33151: POP
// HackSetLevel10YourUnits ; 4 :
33152: CALL 33530 0 0
33156: GO 33309
33158: LD_INT 4
33160: DOUBLE
33161: EQUAL
33162: IFTRUE 33166
33164: GO 33188
33166: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
33167: LD_VAR 0 3
33171: PPUSH
33172: LD_VAR 0 4
33176: PPUSH
33177: LD_VAR 0 5
33181: PPUSH
33182: CALL 33620 0 3
33186: GO 33309
33188: LD_INT 5
33190: DOUBLE
33191: EQUAL
33192: IFTRUE 33196
33194: GO 33203
33196: POP
// HackSpawnVehicle ; 6 :
33197: CALL 33681 0 0
33201: GO 33309
33203: LD_INT 6
33205: DOUBLE
33206: EQUAL
33207: IFTRUE 33211
33209: GO 33218
33211: POP
// HackInvincible ; 7 :
33212: CALL 34227 0 0
33216: GO 33309
33218: LD_INT 7
33220: DOUBLE
33221: EQUAL
33222: IFTRUE 33226
33224: GO 33233
33226: POP
// HackInvisible ; 8 :
33227: CALL 34338 0 0
33231: GO 33309
33233: LD_INT 8
33235: DOUBLE
33236: EQUAL
33237: IFTRUE 33241
33239: GO 33248
33241: POP
// HackChangeYourSide ; 9 :
33242: CALL 34395 0 0
33246: GO 33309
33248: LD_INT 9
33250: DOUBLE
33251: EQUAL
33252: IFTRUE 33256
33254: GO 33263
33256: POP
// HackChangeUnitSide ; 10 :
33257: CALL 34437 0 0
33261: GO 33309
33263: LD_INT 10
33265: DOUBLE
33266: EQUAL
33267: IFTRUE 33271
33269: GO 33278
33271: POP
// HackFog ; 11 :
33272: CALL 34538 0 0
33276: GO 33309
33278: LD_INT 11
33280: DOUBLE
33281: EQUAL
33282: IFTRUE 33286
33284: GO 33293
33286: POP
// HackApeman ; 12 :
33287: CALL 34553 0 0
33291: GO 33309
33293: LD_INT 12
33295: DOUBLE
33296: EQUAL
33297: IFTRUE 33301
33299: GO 33308
33301: POP
// HackBoom ; end ;
33302: CALL 34638 0 0
33306: GO 33309
33308: POP
// end ;
33309: PPOPN 6
33311: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
33312: LD_INT 0
33314: PPUSH
33315: PPUSH
33316: PPUSH
33317: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
33318: LD_ADDR_VAR 0 4
33322: PUSH
33323: LD_INT 22
33325: PUSH
33326: LD_OWVAR 2
33330: PUSH
33331: EMPTY
33332: LIST
33333: LIST
33334: PUSH
33335: LD_INT 2
33337: PUSH
33338: LD_INT 30
33340: PUSH
33341: LD_INT 0
33343: PUSH
33344: EMPTY
33345: LIST
33346: LIST
33347: PUSH
33348: LD_INT 30
33350: PUSH
33351: LD_INT 1
33353: PUSH
33354: EMPTY
33355: LIST
33356: LIST
33357: PUSH
33358: EMPTY
33359: LIST
33360: LIST
33361: LIST
33362: PUSH
33363: EMPTY
33364: LIST
33365: LIST
33366: PPUSH
33367: CALL_OW 69
33371: ST_TO_ADDR
// if not tmp then
33372: LD_VAR 0 4
33376: NOT
33377: IFFALSE 33381
// exit ;
33379: GO 33440
// for i in tmp do
33381: LD_ADDR_VAR 0 2
33385: PUSH
33386: LD_VAR 0 4
33390: PUSH
33391: FOR_IN
33392: IFFALSE 33438
// for j = 1 to 3 do
33394: LD_ADDR_VAR 0 3
33398: PUSH
33399: DOUBLE
33400: LD_INT 1
33402: DEC
33403: ST_TO_ADDR
33404: LD_INT 3
33406: PUSH
33407: FOR_TO
33408: IFFALSE 33434
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
33410: LD_VAR 0 2
33414: PPUSH
33415: CALL_OW 274
33419: PPUSH
33420: LD_VAR 0 3
33424: PPUSH
33425: LD_INT 99999
33427: PPUSH
33428: CALL_OW 277
33432: GO 33407
33434: POP
33435: POP
33436: GO 33391
33438: POP
33439: POP
// end ;
33440: LD_VAR 0 1
33444: RET
// export function HackSetLevel10 ; var i , j ; begin
33445: LD_INT 0
33447: PPUSH
33448: PPUSH
33449: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
33450: LD_ADDR_VAR 0 2
33454: PUSH
33455: LD_INT 21
33457: PUSH
33458: LD_INT 1
33460: PUSH
33461: EMPTY
33462: LIST
33463: LIST
33464: PPUSH
33465: CALL_OW 69
33469: PUSH
33470: FOR_IN
33471: IFFALSE 33523
// if IsSelected ( i ) then
33473: LD_VAR 0 2
33477: PPUSH
33478: CALL_OW 306
33482: IFFALSE 33521
// begin for j := 1 to 4 do
33484: LD_ADDR_VAR 0 3
33488: PUSH
33489: DOUBLE
33490: LD_INT 1
33492: DEC
33493: ST_TO_ADDR
33494: LD_INT 4
33496: PUSH
33497: FOR_TO
33498: IFFALSE 33519
// SetSkill ( i , j , 10 ) ;
33500: LD_VAR 0 2
33504: PPUSH
33505: LD_VAR 0 3
33509: PPUSH
33510: LD_INT 10
33512: PPUSH
33513: CALL_OW 237
33517: GO 33497
33519: POP
33520: POP
// end ;
33521: GO 33470
33523: POP
33524: POP
// end ;
33525: LD_VAR 0 1
33529: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
33530: LD_INT 0
33532: PPUSH
33533: PPUSH
33534: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
33535: LD_ADDR_VAR 0 2
33539: PUSH
33540: LD_INT 22
33542: PUSH
33543: LD_OWVAR 2
33547: PUSH
33548: EMPTY
33549: LIST
33550: LIST
33551: PUSH
33552: LD_INT 21
33554: PUSH
33555: LD_INT 1
33557: PUSH
33558: EMPTY
33559: LIST
33560: LIST
33561: PUSH
33562: EMPTY
33563: LIST
33564: LIST
33565: PPUSH
33566: CALL_OW 69
33570: PUSH
33571: FOR_IN
33572: IFFALSE 33613
// begin for j := 1 to 4 do
33574: LD_ADDR_VAR 0 3
33578: PUSH
33579: DOUBLE
33580: LD_INT 1
33582: DEC
33583: ST_TO_ADDR
33584: LD_INT 4
33586: PUSH
33587: FOR_TO
33588: IFFALSE 33609
// SetSkill ( i , j , 10 ) ;
33590: LD_VAR 0 2
33594: PPUSH
33595: LD_VAR 0 3
33599: PPUSH
33600: LD_INT 10
33602: PPUSH
33603: CALL_OW 237
33607: GO 33587
33609: POP
33610: POP
// end ;
33611: GO 33571
33613: POP
33614: POP
// end ;
33615: LD_VAR 0 1
33619: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
33620: LD_INT 0
33622: PPUSH
// uc_side := your_side ;
33623: LD_ADDR_OWVAR 20
33627: PUSH
33628: LD_OWVAR 2
33632: ST_TO_ADDR
// uc_nation := nation ;
33633: LD_ADDR_OWVAR 21
33637: PUSH
33638: LD_VAR 0 1
33642: ST_TO_ADDR
// InitHc ;
33643: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
33647: LD_INT 0
33649: PPUSH
33650: LD_VAR 0 2
33654: PPUSH
33655: LD_VAR 0 3
33659: PPUSH
33660: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
33664: CALL_OW 44
33668: PPUSH
33669: LD_INT 1
33671: PPUSH
33672: CALL_OW 51
// end ;
33676: LD_VAR 0 4
33680: RET
// export function HackSpawnVehicle ; begin
33681: LD_INT 0
33683: PPUSH
// uc_side := your_side ;
33684: LD_ADDR_OWVAR 20
33688: PUSH
33689: LD_OWVAR 2
33693: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
33694: LD_ADDR_OWVAR 21
33698: PUSH
33699: LD_INT 1
33701: PPUSH
33702: LD_INT 3
33704: PPUSH
33705: CALL_OW 12
33709: ST_TO_ADDR
// InitVc ;
33710: CALL_OW 20
// case uc_nation of 1 :
33714: LD_OWVAR 21
33718: PUSH
33719: LD_INT 1
33721: DOUBLE
33722: EQUAL
33723: IFTRUE 33727
33725: GO 33871
33727: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
33728: LD_ADDR_OWVAR 37
33732: PUSH
33733: LD_INT 1
33735: PUSH
33736: LD_INT 2
33738: PUSH
33739: LD_INT 3
33741: PUSH
33742: LD_INT 4
33744: PUSH
33745: LD_INT 5
33747: PUSH
33748: EMPTY
33749: LIST
33750: LIST
33751: LIST
33752: LIST
33753: LIST
33754: PUSH
33755: LD_INT 1
33757: PPUSH
33758: LD_INT 5
33760: PPUSH
33761: CALL_OW 12
33765: ARRAY
33766: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
33767: LD_ADDR_OWVAR 39
33771: PUSH
33772: LD_INT 1
33774: PPUSH
33775: LD_INT 3
33777: PPUSH
33778: CALL_OW 12
33782: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
33783: LD_ADDR_OWVAR 38
33787: PUSH
33788: LD_INT 1
33790: PUSH
33791: LD_INT 2
33793: PUSH
33794: LD_INT 3
33796: PUSH
33797: EMPTY
33798: LIST
33799: LIST
33800: LIST
33801: PUSH
33802: LD_INT 1
33804: PPUSH
33805: LD_INT 3
33807: PPUSH
33808: CALL_OW 12
33812: ARRAY
33813: ST_TO_ADDR
// vc_weapon := [ us_machine_gun , us_gatling_gun , us_double_gun , us_light_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , us_heavy_gun ] [ rand ( 1 , 9 ) ] ;
33814: LD_ADDR_OWVAR 40
33818: PUSH
33819: LD_INT 2
33821: PUSH
33822: LD_INT 4
33824: PUSH
33825: LD_INT 5
33827: PUSH
33828: LD_INT 3
33830: PUSH
33831: LD_INT 7
33833: PUSH
33834: LD_INT 8
33836: PUSH
33837: LD_INT 9
33839: PUSH
33840: LD_INT 10
33842: PUSH
33843: LD_INT 6
33845: PUSH
33846: EMPTY
33847: LIST
33848: LIST
33849: LIST
33850: LIST
33851: LIST
33852: LIST
33853: LIST
33854: LIST
33855: LIST
33856: PUSH
33857: LD_INT 1
33859: PPUSH
33860: LD_INT 9
33862: PPUSH
33863: CALL_OW 12
33867: ARRAY
33868: ST_TO_ADDR
// end ; 2 :
33869: GO 34136
33871: LD_INT 2
33873: DOUBLE
33874: EQUAL
33875: IFTRUE 33879
33877: GO 34003
33879: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
33880: LD_ADDR_OWVAR 37
33884: PUSH
33885: LD_INT 11
33887: PUSH
33888: LD_INT 12
33890: PUSH
33891: LD_INT 13
33893: PUSH
33894: LD_INT 14
33896: PUSH
33897: EMPTY
33898: LIST
33899: LIST
33900: LIST
33901: LIST
33902: PUSH
33903: LD_INT 1
33905: PPUSH
33906: LD_INT 4
33908: PPUSH
33909: CALL_OW 12
33913: ARRAY
33914: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
33915: LD_ADDR_OWVAR 39
33919: PUSH
33920: LD_INT 1
33922: PPUSH
33923: LD_INT 3
33925: PPUSH
33926: CALL_OW 12
33930: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
33931: LD_ADDR_OWVAR 38
33935: PUSH
33936: LD_INT 1
33938: PUSH
33939: LD_INT 2
33941: PUSH
33942: LD_INT 5
33944: PUSH
33945: EMPTY
33946: LIST
33947: LIST
33948: LIST
33949: PUSH
33950: LD_INT 1
33952: PPUSH
33953: LD_INT 3
33955: PPUSH
33956: CALL_OW 12
33960: ARRAY
33961: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
33962: LD_ADDR_OWVAR 40
33966: PUSH
33967: LD_INT 24
33969: PUSH
33970: LD_INT 26
33972: PUSH
33973: LD_INT 27
33975: PUSH
33976: LD_INT 28
33978: PUSH
33979: LD_INT 29
33981: PUSH
33982: EMPTY
33983: LIST
33984: LIST
33985: LIST
33986: LIST
33987: LIST
33988: PUSH
33989: LD_INT 1
33991: PPUSH
33992: LD_INT 5
33994: PPUSH
33995: CALL_OW 12
33999: ARRAY
34000: ST_TO_ADDR
// end ; 3 :
34001: GO 34136
34003: LD_INT 3
34005: DOUBLE
34006: EQUAL
34007: IFTRUE 34011
34009: GO 34135
34011: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
34012: LD_ADDR_OWVAR 37
34016: PUSH
34017: LD_INT 21
34019: PUSH
34020: LD_INT 23
34022: PUSH
34023: LD_INT 22
34025: PUSH
34026: LD_INT 24
34028: PUSH
34029: EMPTY
34030: LIST
34031: LIST
34032: LIST
34033: LIST
34034: PUSH
34035: LD_INT 1
34037: PPUSH
34038: LD_INT 4
34040: PPUSH
34041: CALL_OW 12
34045: ARRAY
34046: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
34047: LD_ADDR_OWVAR 39
34051: PUSH
34052: LD_INT 1
34054: PPUSH
34055: LD_INT 3
34057: PPUSH
34058: CALL_OW 12
34062: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
34063: LD_ADDR_OWVAR 38
34067: PUSH
34068: LD_INT 1
34070: PUSH
34071: LD_INT 3
34073: PUSH
34074: EMPTY
34075: LIST
34076: LIST
34077: PUSH
34078: LD_INT 1
34080: PPUSH
34081: LD_INT 2
34083: PPUSH
34084: CALL_OW 12
34088: ARRAY
34089: ST_TO_ADDR
// vc_weapon := [ ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_heavy_gun , ru_siberium_rocket , ru_rocket ] [ rand ( 1 , 6 ) ] ;
34090: LD_ADDR_OWVAR 40
34094: PUSH
34095: LD_INT 42
34097: PUSH
34098: LD_INT 43
34100: PUSH
34101: LD_INT 44
34103: PUSH
34104: LD_INT 46
34106: PUSH
34107: LD_INT 48
34109: PUSH
34110: LD_INT 47
34112: PUSH
34113: EMPTY
34114: LIST
34115: LIST
34116: LIST
34117: LIST
34118: LIST
34119: LIST
34120: PUSH
34121: LD_INT 1
34123: PPUSH
34124: LD_INT 6
34126: PPUSH
34127: CALL_OW 12
34131: ARRAY
34132: ST_TO_ADDR
// end ; end ;
34133: GO 34136
34135: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
34136: CALL_OW 45
34140: PPUSH
34141: LD_INT 1
34143: PPUSH
34144: CALL_OW 51
// end ;
34148: LD_VAR 0 1
34152: RET
// export invincible ; every 1 do
34153: GO 34155
34155: DISABLE
// invincible := [ ] ;
34156: LD_ADDR_EXP 146
34160: PUSH
34161: EMPTY
34162: ST_TO_ADDR
34163: END
// every 10 do var i ;
34164: GO 34166
34166: DISABLE
34167: LD_INT 0
34169: PPUSH
// begin enable ;
34170: ENABLE
// if not invincible then
34171: LD_EXP 146
34175: NOT
34176: IFFALSE 34180
// exit ;
34178: GO 34224
// for i in invincible do
34180: LD_ADDR_VAR 0 1
34184: PUSH
34185: LD_EXP 146
34189: PUSH
34190: FOR_IN
34191: IFFALSE 34222
// if GetLives ( i ) < 1000 then
34193: LD_VAR 0 1
34197: PPUSH
34198: CALL_OW 256
34202: PUSH
34203: LD_INT 1000
34205: LESS
34206: IFFALSE 34220
// SetLives ( i , 1000 ) ;
34208: LD_VAR 0 1
34212: PPUSH
34213: LD_INT 1000
34215: PPUSH
34216: CALL_OW 234
34220: GO 34190
34222: POP
34223: POP
// end ;
34224: PPOPN 1
34226: END
// export function HackInvincible ; var i ; begin
34227: LD_INT 0
34229: PPUSH
34230: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
34231: LD_ADDR_VAR 0 2
34235: PUSH
34236: LD_INT 2
34238: PUSH
34239: LD_INT 21
34241: PUSH
34242: LD_INT 1
34244: PUSH
34245: EMPTY
34246: LIST
34247: LIST
34248: PUSH
34249: LD_INT 21
34251: PUSH
34252: LD_INT 2
34254: PUSH
34255: EMPTY
34256: LIST
34257: LIST
34258: PUSH
34259: EMPTY
34260: LIST
34261: LIST
34262: LIST
34263: PPUSH
34264: CALL_OW 69
34268: PUSH
34269: FOR_IN
34270: IFFALSE 34331
// if IsSelected ( i ) then
34272: LD_VAR 0 2
34276: PPUSH
34277: CALL_OW 306
34281: IFFALSE 34329
// begin if i in invincible then
34283: LD_VAR 0 2
34287: PUSH
34288: LD_EXP 146
34292: IN
34293: IFFALSE 34313
// invincible := invincible diff i else
34295: LD_ADDR_EXP 146
34299: PUSH
34300: LD_EXP 146
34304: PUSH
34305: LD_VAR 0 2
34309: DIFF
34310: ST_TO_ADDR
34311: GO 34329
// invincible := invincible union i ;
34313: LD_ADDR_EXP 146
34317: PUSH
34318: LD_EXP 146
34322: PUSH
34323: LD_VAR 0 2
34327: UNION
34328: ST_TO_ADDR
// end ;
34329: GO 34269
34331: POP
34332: POP
// end ;
34333: LD_VAR 0 1
34337: RET
// export function HackInvisible ; var i , j ; begin
34338: LD_INT 0
34340: PPUSH
34341: PPUSH
34342: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
34343: LD_ADDR_VAR 0 2
34347: PUSH
34348: LD_INT 21
34350: PUSH
34351: LD_INT 1
34353: PUSH
34354: EMPTY
34355: LIST
34356: LIST
34357: PPUSH
34358: CALL_OW 69
34362: PUSH
34363: FOR_IN
34364: IFFALSE 34388
// if IsSelected ( i ) then
34366: LD_VAR 0 2
34370: PPUSH
34371: CALL_OW 306
34375: IFFALSE 34386
// begin ComForceInvisible ( i ) ;
34377: LD_VAR 0 2
34381: PPUSH
34382: CALL_OW 496
// end ;
34386: GO 34363
34388: POP
34389: POP
// end ;
34390: LD_VAR 0 1
34394: RET
// export function HackChangeYourSide ; begin
34395: LD_INT 0
34397: PPUSH
// if your_side = 8 then
34398: LD_OWVAR 2
34402: PUSH
34403: LD_INT 8
34405: EQUAL
34406: IFFALSE 34418
// your_side := 0 else
34408: LD_ADDR_OWVAR 2
34412: PUSH
34413: LD_INT 0
34415: ST_TO_ADDR
34416: GO 34432
// your_side := your_side + 1 ;
34418: LD_ADDR_OWVAR 2
34422: PUSH
34423: LD_OWVAR 2
34427: PUSH
34428: LD_INT 1
34430: PLUS
34431: ST_TO_ADDR
// end ;
34432: LD_VAR 0 1
34436: RET
// export function HackChangeUnitSide ; var i , j ; begin
34437: LD_INT 0
34439: PPUSH
34440: PPUSH
34441: PPUSH
// for i in all_units do
34442: LD_ADDR_VAR 0 2
34446: PUSH
34447: LD_OWVAR 3
34451: PUSH
34452: FOR_IN
34453: IFFALSE 34531
// if IsSelected ( i ) then
34455: LD_VAR 0 2
34459: PPUSH
34460: CALL_OW 306
34464: IFFALSE 34529
// begin j := GetSide ( i ) ;
34466: LD_ADDR_VAR 0 3
34470: PUSH
34471: LD_VAR 0 2
34475: PPUSH
34476: CALL_OW 255
34480: ST_TO_ADDR
// if j = 8 then
34481: LD_VAR 0 3
34485: PUSH
34486: LD_INT 8
34488: EQUAL
34489: IFFALSE 34501
// j := 0 else
34491: LD_ADDR_VAR 0 3
34495: PUSH
34496: LD_INT 0
34498: ST_TO_ADDR
34499: GO 34515
// j := j + 1 ;
34501: LD_ADDR_VAR 0 3
34505: PUSH
34506: LD_VAR 0 3
34510: PUSH
34511: LD_INT 1
34513: PLUS
34514: ST_TO_ADDR
// SetSide ( i , j ) ;
34515: LD_VAR 0 2
34519: PPUSH
34520: LD_VAR 0 3
34524: PPUSH
34525: CALL_OW 235
// end ;
34529: GO 34452
34531: POP
34532: POP
// end ;
34533: LD_VAR 0 1
34537: RET
// export function HackFog ; begin
34538: LD_INT 0
34540: PPUSH
// FogOff ( true ) ;
34541: LD_INT 1
34543: PPUSH
34544: CALL_OW 344
// end ;
34548: LD_VAR 0 1
34552: RET
// export function HackApeman ; begin
34553: LD_INT 0
34555: PPUSH
// uc_side := your_side ;
34556: LD_ADDR_OWVAR 20
34560: PUSH
34561: LD_OWVAR 2
34565: ST_TO_ADDR
// uc_nation := 0 ;
34566: LD_ADDR_OWVAR 21
34570: PUSH
34571: LD_INT 0
34573: ST_TO_ADDR
// hc_name :=  ;
34574: LD_ADDR_OWVAR 26
34578: PUSH
34579: LD_STRING 
34581: ST_TO_ADDR
// hc_gallery :=  ;
34582: LD_ADDR_OWVAR 33
34586: PUSH
34587: LD_STRING 
34589: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
34590: LD_ADDR_OWVAR 31
34594: PUSH
34595: LD_INT 0
34597: PUSH
34598: LD_INT 0
34600: PUSH
34601: LD_INT 0
34603: PUSH
34604: LD_INT 0
34606: PUSH
34607: EMPTY
34608: LIST
34609: LIST
34610: LIST
34611: LIST
34612: ST_TO_ADDR
// hc_class := class_apeman ;
34613: LD_ADDR_OWVAR 28
34617: PUSH
34618: LD_INT 12
34620: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
34621: CALL_OW 44
34625: PPUSH
34626: LD_INT 1
34628: PPUSH
34629: CALL_OW 51
// end ;
34633: LD_VAR 0 1
34637: RET
// export function HackBoom ; begin
34638: LD_INT 0
34640: PPUSH
// uc_side := your_side ;
34641: LD_ADDR_OWVAR 20
34645: PUSH
34646: LD_OWVAR 2
34650: ST_TO_ADDR
// uc_nation := 1 ;
34651: LD_ADDR_OWVAR 21
34655: PUSH
34656: LD_INT 1
34658: ST_TO_ADDR
// vc_chassis := us_morphling ;
34659: LD_ADDR_OWVAR 37
34663: PUSH
34664: LD_INT 5
34666: ST_TO_ADDR
// vc_engine := engine_siberite ;
34667: LD_ADDR_OWVAR 39
34671: PUSH
34672: LD_INT 3
34674: ST_TO_ADDR
// vc_control := control_computer ;
34675: LD_ADDR_OWVAR 38
34679: PUSH
34680: LD_INT 3
34682: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
34683: LD_ADDR_OWVAR 40
34687: PUSH
34688: LD_INT 8
34690: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
34691: CALL_OW 45
34695: PPUSH
34696: LD_INT 1
34698: PPUSH
34699: CALL_OW 51
// end ;
34703: LD_VAR 0 1
34707: RET
