// export vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , richard , alice , talin , kvantovy , platonov , Mikhail ; export jasin , powel , ingame ; export you , amik , amik_attack_listL , amik_attack_listTR , amik_attack_listR , editor ; starting begin if not IsEditor then
   0: LD_OWVAR 84
   4: NOT
   5: IFFALSE 15
// editor = 0 ;
   7: LD_ADDR_EXP 23
  11: PUSH
  12: LD_INT 0
  14: ST_TO_ADDR
// if editor then
  15: LD_EXP 23
  19: IFFALSE 28
// FogOff ( 1 ) ;
  21: LD_INT 1
  23: PPUSH
  24: CALL_OW 344
// ResetFog ;
  28: CALL_OW 335
// RandomizeAll ;
  32: CALL_OW 11
// InGameOff ;
  36: CALL_OW 9
// Interface_hidden = true ;
  40: LD_ADDR_OWVAR 54
  44: PUSH
  45: LD_INT 1
  47: ST_TO_ADDR
// ingame = false ;
  48: LD_ADDR_EXP 17
  52: PUSH
  53: LD_INT 0
  55: ST_TO_ADDR
// enable_death_losts = false ;
  56: LD_ADDR_EXP 24
  60: PUSH
  61: LD_INT 0
  63: ST_TO_ADDR
// poprveZobrazeni = true ;
  64: LD_ADDR_EXP 68
  68: PUSH
  69: LD_INT 1
  71: ST_TO_ADDR
// OstatniInity ( ) ;
  72: CALL 1962 0 0
// LoadSave ( ) ;
  76: CALL 2139 0 0
// SetCargo ( nakladacik , mat_cans , 100 ) ;
  80: LD_INT 67
  82: PPUSH
  83: LD_INT 1
  85: PPUSH
  86: LD_INT 100
  88: PPUSH
  89: CALL_OW 290
// CenterNowOnXY ( 118 , 131 ) ;
  93: LD_INT 118
  95: PPUSH
  96: LD_INT 131
  98: PPUSH
  99: CALL_OW 86
// end ;
 103: END
// every 0 0$0.5 do
 104: GO 106
 106: DISABLE
// begin Obtiznost ;
 107: CALL 12084 0 0
// NaplnVsechnyBudovyLidma ;
 111: CALL 3599 0 0
// BLevely ;
 115: CALL 3506 0 0
// ArrayInity ( ) ;
 119: CALL 2704 0 0
// VyberLidi ;
 123: CALL 128 0 0
// end ;
 127: END
// function VyberLidi ; var i , un , tmp , units , lidi ; var na_vyber , selekce , dalsi_lidi ; begin
 128: LD_INT 0
 130: PPUSH
 131: PPUSH
 132: PPUSH
 133: PPUSH
 134: PPUSH
 135: PPUSH
 136: PPUSH
 137: PPUSH
 138: PPUSH
// if not editor then
 139: LD_EXP 23
 143: NOT
 144: IFFALSE 622
// begin selekce := [ ] ;
 146: LD_ADDR_VAR 0 8
 150: PUSH
 151: EMPTY
 152: ST_TO_ADDR
// dalsi_lidi = [ ] ;
 153: LD_ADDR_VAR 0 9
 157: PUSH
 158: EMPTY
 159: ST_TO_ADDR
// na_vyber = 20 ;
 160: LD_ADDR_VAR 0 7
 164: PUSH
 165: LD_INT 20
 167: ST_TO_ADDR
// for i in [ gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , Mikhail ] do
 168: LD_ADDR_VAR 0 2
 172: PUSH
 173: LD_EXP 2
 177: PUSH
 178: LD_EXP 3
 182: PUSH
 183: LD_EXP 4
 187: PUSH
 188: LD_EXP 5
 192: PUSH
 193: LD_EXP 6
 197: PUSH
 198: LD_EXP 7
 202: PUSH
 203: LD_EXP 8
 207: PUSH
 208: LD_EXP 12
 212: PUSH
 213: LD_EXP 14
 217: PUSH
 218: EMPTY
 219: LIST
 220: LIST
 221: LIST
 222: LIST
 223: LIST
 224: LIST
 225: LIST
 226: LIST
 227: LIST
 228: PUSH
 229: FOR_IN
 230: IFFALSE 250
// selekce := selekce ^ i ;
 232: LD_ADDR_VAR 0 8
 236: PUSH
 237: LD_VAR 0 8
 241: PUSH
 242: LD_VAR 0 2
 246: ADD
 247: ST_TO_ADDR
 248: GO 229
 250: POP
 251: POP
// tmp = 4 ;
 252: LD_ADDR_VAR 0 4
 256: PUSH
 257: LD_INT 4
 259: ST_TO_ADDR
// for i = 1 to na_vyber - selekce + 0 do
 260: LD_ADDR_VAR 0 2
 264: PUSH
 265: DOUBLE
 266: LD_INT 1
 268: DEC
 269: ST_TO_ADDR
 270: LD_VAR 0 7
 274: PUSH
 275: LD_VAR 0 8
 279: MINUS
 280: PUSH
 281: LD_INT 0
 283: PLUS
 284: PUSH
 285: FOR_TO
 286: IFFALSE 367
// begin un = VytvorCloveka ( tmp , 5 , 6 , nation_russian , You ) ;
 288: LD_ADDR_VAR 0 3
 292: PUSH
 293: LD_VAR 0 4
 297: PPUSH
 298: LD_INT 5
 300: PPUSH
 301: LD_INT 6
 303: PPUSH
 304: LD_INT 3
 306: PPUSH
 307: LD_EXP 18
 311: PPUSH
 312: CALL 2947 0 5
 316: ST_TO_ADDR
// dalsi_lidi := dalsi_lidi ^ un ;
 317: LD_ADDR_VAR 0 9
 321: PUSH
 322: LD_VAR 0 9
 326: PUSH
 327: LD_VAR 0 3
 331: ADD
 332: ST_TO_ADDR
// tmp = tmp - 1 ;
 333: LD_ADDR_VAR 0 4
 337: PUSH
 338: LD_VAR 0 4
 342: PUSH
 343: LD_INT 1
 345: MINUS
 346: ST_TO_ADDR
// if tmp = 0 then
 347: LD_VAR 0 4
 351: PUSH
 352: LD_INT 0
 354: EQUAL
 355: IFFALSE 365
// tmp = 4 ;
 357: LD_ADDR_VAR 0 4
 361: PUSH
 362: LD_INT 4
 364: ST_TO_ADDR
// end ;
 365: GO 285
 367: POP
 368: POP
// Wait ( 0 0$0.2 ) ;
 369: LD_INT 7
 371: PPUSH
 372: CALL_OW 67
// units := [ sel_change_class , Vsevolod , sel_changeable , sel_hired ] ^ [ sel_not_hired , sel_not_changeable , sel_dont_change_class , Jasin ] ^ [ sel_not_hired , sel_changeable , sel_change_class ] ^ selekce ^ dalsi_lidi ;
 376: LD_ADDR_VAR 0 5
 380: PUSH
 381: LD_INT -5
 383: PUSH
 384: LD_EXP 1
 388: PUSH
 389: LD_INT -3
 391: PUSH
 392: LD_INT -1
 394: PUSH
 395: EMPTY
 396: LIST
 397: LIST
 398: LIST
 399: LIST
 400: PUSH
 401: LD_INT -2
 403: PUSH
 404: LD_INT -4
 406: PUSH
 407: LD_INT -6
 409: PUSH
 410: LD_EXP 15
 414: PUSH
 415: EMPTY
 416: LIST
 417: LIST
 418: LIST
 419: LIST
 420: ADD
 421: PUSH
 422: LD_INT -2
 424: PUSH
 425: LD_INT -3
 427: PUSH
 428: LD_INT -5
 430: PUSH
 431: EMPTY
 432: LIST
 433: LIST
 434: LIST
 435: ADD
 436: PUSH
 437: LD_VAR 0 8
 441: ADD
 442: PUSH
 443: LD_VAR 0 9
 447: ADD
 448: ST_TO_ADDR
// lidi := CharacterSelection ( 1 , 11 , 11 , units , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , [ class_scientistic , 1 ] ] ) ;
 449: LD_ADDR_VAR 0 6
 453: PUSH
 454: LD_STRING 1
 456: PPUSH
 457: LD_INT 11
 459: PPUSH
 460: LD_INT 11
 462: PPUSH
 463: LD_VAR 0 5
 467: PPUSH
 468: LD_INT 1
 470: PUSH
 471: LD_INT 2
 473: PUSH
 474: LD_INT 1
 476: PUSH
 477: EMPTY
 478: LIST
 479: LIST
 480: PUSH
 481: LD_INT 3
 483: PUSH
 484: LD_INT 4
 486: PUSH
 487: LD_INT 1
 489: PUSH
 490: EMPTY
 491: LIST
 492: LIST
 493: PUSH
 494: EMPTY
 495: LIST
 496: LIST
 497: LIST
 498: LIST
 499: PPUSH
 500: CALL_OW 42
 504: ST_TO_ADDR
// Wait ( 0 0$0.5 ) ;
 505: LD_INT 18
 507: PPUSH
 508: CALL_OW 67
// i = UnitFilter ( lidi , [ [ f_side , You ] , [ f_class , class_mechanic ] ] ) ;
 512: LD_ADDR_VAR 0 2
 516: PUSH
 517: LD_VAR 0 6
 521: PPUSH
 522: LD_INT 22
 524: PUSH
 525: LD_EXP 18
 529: PUSH
 530: EMPTY
 531: LIST
 532: LIST
 533: PUSH
 534: LD_INT 25
 536: PUSH
 537: LD_INT 3
 539: PUSH
 540: EMPTY
 541: LIST
 542: LIST
 543: PUSH
 544: EMPTY
 545: LIST
 546: LIST
 547: PPUSH
 548: CALL_OW 72
 552: ST_TO_ADDR
// if not i then
 553: LD_VAR 0 2
 557: NOT
 558: IFFALSE 572
// i = Vsevolod else
 560: LD_ADDR_VAR 0 2
 564: PUSH
 565: LD_EXP 1
 569: ST_TO_ADDR
 570: GO 586
// i = i [ 1 ] ;
 572: LD_ADDR_VAR 0 2
 576: PUSH
 577: LD_VAR 0 2
 581: PUSH
 582: LD_INT 1
 584: ARRAY
 585: ST_TO_ADDR
// if i <> Vsevolod then
 586: LD_VAR 0 2
 590: PUSH
 591: LD_EXP 1
 595: NONEQUAL
 596: IFFALSE 613
// PlaceUnitArea ( Vsevolod , Start , false ) ;
 598: LD_EXP 1
 602: PPUSH
 603: LD_INT 4
 605: PPUSH
 606: LD_INT 0
 608: PPUSH
 609: CALL_OW 49
// Wait ( 0 0$0.5 ) ;
 613: LD_INT 18
 615: PPUSH
 616: CALL_OW 67
// end else
 620: GO 741
// begin lidi = [ gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail , VytvorCloveka ( 3 , 5 , 6 , nation_russian , You ) , VytvorCloveka ( 4 , 5 , 6 , nation_russian , You ) ] ;
 622: LD_ADDR_VAR 0 6
 626: PUSH
 627: LD_EXP 2
 631: PUSH
 632: LD_EXP 3
 636: PUSH
 637: LD_EXP 4
 641: PUSH
 642: LD_EXP 5
 646: PUSH
 647: LD_EXP 6
 651: PUSH
 652: LD_EXP 7
 656: PUSH
 657: LD_EXP 8
 661: PUSH
 662: LD_EXP 12
 666: PUSH
 667: LD_EXP 14
 671: PUSH
 672: LD_INT 3
 674: PPUSH
 675: LD_INT 5
 677: PPUSH
 678: LD_INT 6
 680: PPUSH
 681: LD_INT 3
 683: PPUSH
 684: LD_EXP 18
 688: PPUSH
 689: CALL 2947 0 5
 693: PUSH
 694: LD_INT 4
 696: PPUSH
 697: LD_INT 5
 699: PPUSH
 700: LD_INT 6
 702: PPUSH
 703: LD_INT 3
 705: PPUSH
 706: LD_EXP 18
 710: PPUSH
 711: CALL 2947 0 5
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: LIST
 720: LIST
 721: LIST
 722: LIST
 723: LIST
 724: LIST
 725: LIST
 726: LIST
 727: LIST
 728: ST_TO_ADDR
// PlaceHumanInUnit ( vsevolod , nakladacik ) ;
 729: LD_EXP 1
 733: PPUSH
 734: LD_INT 67
 736: PPUSH
 737: CALL_OW 52
// end ; PlaceUnitArea ( i , Start , false ) ;
 741: LD_VAR 0 2
 745: PPUSH
 746: LD_INT 4
 748: PPUSH
 749: LD_INT 0
 751: PPUSH
 752: CALL_OW 49
// Wait ( 0 0$0.3 ) ;
 756: LD_INT 10
 758: PPUSH
 759: CALL_OW 67
// RemoveUnit ( i ) ;
 763: LD_VAR 0 2
 767: PPUSH
 768: CALL_OW 64
// Wait ( 0 0$0.3 ) ;
 772: LD_INT 10
 774: PPUSH
 775: CALL_OW 67
// PlaceHumanInUnit ( i , nakladacik ) ;
 779: LD_VAR 0 2
 783: PPUSH
 784: LD_INT 67
 786: PPUSH
 787: CALL_OW 52
// lidi = lidi diff i ;
 791: LD_ADDR_VAR 0 6
 795: PUSH
 796: LD_VAR 0 6
 800: PUSH
 801: LD_VAR 0 2
 805: DIFF
 806: ST_TO_ADDR
// Wait ( 0 0$0.2 ) ;
 807: LD_INT 7
 809: PPUSH
 810: CALL_OW 67
// if autaNavic then
 814: LD_EXP 30
 818: IFFALSE 894
// begin PlaceHumanInUnit ( lidi [ 1 ] , mgun ) ;
 820: LD_VAR 0 6
 824: PUSH
 825: LD_INT 1
 827: ARRAY
 828: PPUSH
 829: LD_INT 88
 831: PPUSH
 832: CALL_OW 52
// PlaceHumanInUnit ( lidi [ 2 ] , mgatling ) ;
 836: LD_VAR 0 6
 840: PUSH
 841: LD_INT 2
 843: ARRAY
 844: PPUSH
 845: LD_INT 89
 847: PPUSH
 848: CALL_OW 52
// lidi = lidi diff lidi [ 2 ] ;
 852: LD_ADDR_VAR 0 6
 856: PUSH
 857: LD_VAR 0 6
 861: PUSH
 862: LD_VAR 0 6
 866: PUSH
 867: LD_INT 2
 869: ARRAY
 870: DIFF
 871: ST_TO_ADDR
// lidi = lidi diff lidi [ 1 ] ;
 872: LD_ADDR_VAR 0 6
 876: PUSH
 877: LD_VAR 0 6
 881: PUSH
 882: LD_VAR 0 6
 886: PUSH
 887: LD_INT 1
 889: ARRAY
 890: DIFF
 891: ST_TO_ADDR
// end else
 892: GO 908
// begin RemoveUnit ( mgun ) ;
 894: LD_INT 88
 896: PPUSH
 897: CALL_OW 64
// RemoveUnit ( mgatling ) ;
 901: LD_INT 89
 903: PPUSH
 904: CALL_OW 64
// end ; for un in lidi do
 908: LD_ADDR_VAR 0 3
 912: PUSH
 913: LD_VAR 0 6
 917: PUSH
 918: FOR_IN
 919: IFFALSE 950
// begin PlaceUnitArea ( un , Start , false ) ;
 921: LD_VAR 0 3
 925: PPUSH
 926: LD_INT 4
 928: PPUSH
 929: LD_INT 0
 931: PPUSH
 932: CALL_OW 49
// SetDir ( un , 1 ) ;
 936: LD_VAR 0 3
 940: PPUSH
 941: LD_INT 1
 943: PPUSH
 944: CALL_OW 233
// end ;
 948: GO 918
 950: POP
 951: POP
// your_side = You ;
 952: LD_ADDR_OWVAR 2
 956: PUSH
 957: LD_EXP 18
 961: ST_TO_ADDR
// ChangeSideFog ( You , You ) ;
 962: LD_EXP 18
 966: PPUSH
 967: LD_EXP 18
 971: PPUSH
 972: CALL_OW 343
// IngameOff ;
 976: CALL_OW 9
// tick = 0 ;
 980: LD_ADDR_OWVAR 1
 984: PUSH
 985: LD_INT 0
 987: ST_TO_ADDR
// SetWeather ( 2 , 400 , 50 ) ;
 988: LD_INT 2
 990: PPUSH
 991: LD_INT 400
 993: PPUSH
 994: LD_INT 50
 996: PPUSH
 997: CALL_OW 550
// DialogueOn ;
1001: CALL_OW 6
// if not editor then
1005: LD_EXP 23
1009: NOT
1010: IFFALSE 1024
// SayRadio ( jasin , D3jas-1 ) ;
1012: LD_EXP 15
1016: PPUSH
1017: LD_STRING D3jas-1
1019: PPUSH
1020: CALL_OW 94
// DialogueOff ;
1024: CALL_OW 7
// Wait ( 0 0$0.2 ) ;
1028: LD_INT 7
1030: PPUSH
1031: CALL_OW 67
// if not editor then
1035: LD_EXP 23
1039: NOT
1040: IFFALSE 1049
// ChangeMissionObjectives ( D3-M01 ) ;
1042: LD_STRING D3-M01
1044: PPUSH
1045: CALL_OW 337
// Wait ( 0 0$0.2 ) ;
1049: LD_INT 7
1051: PPUSH
1052: CALL_OW 67
// SaveForQuickRestart ;
1056: CALL_OW 22
// ingame = true ;
1060: LD_ADDR_EXP 17
1064: PUSH
1065: LD_INT 1
1067: ST_TO_ADDR
// end ;
1068: LD_VAR 0 1
1072: RET
// every 1 1$00 do
1073: GO 1075
1075: DISABLE
// begin SetWeather ( 2 , 400 , 50 ) ;
1076: LD_INT 2
1078: PPUSH
1079: LD_INT 400
1081: PPUSH
1082: LD_INT 50
1084: PPUSH
1085: CALL_OW 550
// enable ;
1089: ENABLE
// end ;
1090: END
// export enable_death_losts ; every 0 0$5 do
1091: GO 1093
1093: DISABLE
// enable_death_losts = true ;
1094: LD_ADDR_EXP 24
1098: PUSH
1099: LD_INT 1
1101: ST_TO_ADDR
1102: END
// every 0 0$1.4 trigger enable_death_losts do
1103: LD_EXP 24
1107: IFFALSE 1131
1109: GO 1111
1111: DISABLE
// begin if IsDead ( vsevolod ) then
1112: LD_EXP 1
1116: PPUSH
1117: CALL_OW 301
1121: IFFALSE 1130
// YouLost ( sevidead ) ;
1123: LD_STRING sevidead
1125: PPUSH
1126: CALL_OW 104
// enable ;
1130: ENABLE
// end ;
1131: END
// export function KonecMise ; var i , k , lidi ; begin
1132: LD_INT 0
1134: PPUSH
1135: PPUSH
1136: PPUSH
1137: PPUSH
// DialogueOn ;
1138: CALL_OW 6
// if sibyou >= 850 then
1142: LD_EXP 69
1146: PUSH
1147: LD_INT 850
1149: GREATEREQUAL
1150: IFFALSE 1166
// SayRadio ( jasin , D3jas-3 ) else
1152: LD_EXP 15
1156: PPUSH
1157: LD_STRING D3jas-3
1159: PPUSH
1160: CALL_OW 94
1164: GO 1178
// SayRadio ( jasin , D3jas-2 ) ;
1166: LD_EXP 15
1170: PPUSH
1171: LD_STRING D3jas-2
1173: PPUSH
1174: CALL_OW 94
// DialogueOff ;
1178: CALL_OW 7
// DisableExclamations ;
1182: CALL_OW 474
// lidi = FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] , [ f_placed ] ] ) + 0 ;
1186: LD_ADDR_VAR 0 4
1190: PUSH
1191: LD_INT 22
1193: PUSH
1194: LD_EXP 18
1198: PUSH
1199: EMPTY
1200: LIST
1201: LIST
1202: PUSH
1203: LD_INT 21
1205: PUSH
1206: LD_INT 1
1208: PUSH
1209: EMPTY
1210: LIST
1211: LIST
1212: PUSH
1213: LD_INT 23
1215: PUSH
1216: LD_INT 3
1218: PUSH
1219: EMPTY
1220: LIST
1221: LIST
1222: PUSH
1223: LD_INT 52
1225: PUSH
1226: EMPTY
1227: LIST
1228: PUSH
1229: EMPTY
1230: LIST
1231: LIST
1232: LIST
1233: LIST
1234: PPUSH
1235: CALL_OW 69
1239: PUSH
1240: LD_INT 0
1242: PLUS
1243: ST_TO_ADDR
// AddMedal ( medalSib1 , 1 ) ;
1244: LD_STRING medalSib1
1246: PPUSH
1247: LD_INT 1
1249: PPUSH
1250: CALL_OW 101
// if sibyou >= 850 then
1254: LD_EXP 69
1258: PUSH
1259: LD_INT 850
1261: GREATEREQUAL
1262: IFFALSE 1276
// AddMedal ( medalSib2 , 1 ) else
1264: LD_STRING medalSib2
1266: PPUSH
1267: LD_INT 1
1269: PPUSH
1270: CALL_OW 101
1274: GO 1287
// AddMedal ( medalSib2 , - 1 ) ;
1276: LD_STRING medalSib2
1278: PPUSH
1279: LD_INT 1
1281: NEG
1282: PPUSH
1283: CALL_OW 101
// if lidi = 12 then
1287: LD_VAR 0 4
1291: PUSH
1292: LD_INT 12
1294: EQUAL
1295: IFFALSE 1309
// AddMedal ( medalSib3 , 1 ) else
1297: LD_STRING medalSib3
1299: PPUSH
1300: LD_INT 1
1302: PPUSH
1303: CALL_OW 101
1307: GO 1343
// if lidi = 11 then
1309: LD_VAR 0 4
1313: PUSH
1314: LD_INT 11
1316: EQUAL
1317: IFFALSE 1332
// AddMedal ( medalSib3 , - 1 ) else
1319: LD_STRING medalSib3
1321: PPUSH
1322: LD_INT 1
1324: NEG
1325: PPUSH
1326: CALL_OW 101
1330: GO 1343
// AddMedal ( medalSib3 , - 2 ) ;
1332: LD_STRING medalSib3
1334: PPUSH
1335: LD_INT 2
1337: NEG
1338: PPUSH
1339: CALL_OW 101
// GiveMedals ( MainSib ) ;
1343: LD_STRING MainSib
1345: PPUSH
1346: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] , [ f_placed ] ] ) ) ;
1350: LD_INT 22
1352: PUSH
1353: LD_EXP 18
1357: PUSH
1358: EMPTY
1359: LIST
1360: LIST
1361: PUSH
1362: LD_INT 21
1364: PUSH
1365: LD_INT 1
1367: PUSH
1368: EMPTY
1369: LIST
1370: LIST
1371: PUSH
1372: LD_INT 23
1374: PUSH
1375: LD_INT 3
1377: PUSH
1378: EMPTY
1379: LIST
1380: LIST
1381: PUSH
1382: LD_INT 52
1384: PUSH
1385: EMPTY
1386: LIST
1387: PUSH
1388: EMPTY
1389: LIST
1390: LIST
1391: LIST
1392: LIST
1393: PPUSH
1394: CALL_OW 69
1398: PPUSH
1399: CALL_OW 43
// SaveCharacters ( vsevolod , Vsevolod ) ;
1403: LD_EXP 1
1407: PPUSH
1408: LD_STRING Vsevolod
1410: PPUSH
1411: CALL_OW 38
// SaveCharacters ( talin , Talin ) ;
1415: LD_EXP 11
1419: PPUSH
1420: LD_STRING Talin
1422: PPUSH
1423: CALL_OW 38
// SaveCharacters ( gnevko , Gnyevko ) ;
1427: LD_EXP 2
1431: PPUSH
1432: LD_STRING Gnyevko
1434: PPUSH
1435: CALL_OW 38
// SaveCharacters ( petrovova , Petrovova ) ;
1439: LD_EXP 3
1443: PPUSH
1444: LD_STRING Petrovova
1446: PPUSH
1447: CALL_OW 38
// SaveCharacters ( dolgov , Dolgov ) ;
1451: LD_EXP 4
1455: PPUSH
1456: LD_STRING Dolgov
1458: PPUSH
1459: CALL_OW 38
// SaveCharacters ( karamazov , Karamazov ) ;
1463: LD_EXP 5
1467: PPUSH
1468: LD_STRING Karamazov
1470: PPUSH
1471: CALL_OW 38
// SaveCharacters ( titov , Titov ) ;
1475: LD_EXP 6
1479: PPUSH
1480: LD_STRING Titov
1482: PPUSH
1483: CALL_OW 38
// SaveCharacters ( kozlov , Kozlov ) ;
1487: LD_EXP 7
1491: PPUSH
1492: LD_STRING Kozlov
1494: PPUSH
1495: CALL_OW 38
// SaveCharacters ( kapitsova , Kapitsova ) ;
1499: LD_EXP 8
1503: PPUSH
1504: LD_STRING Kapitsova
1506: PPUSH
1507: CALL_OW 38
// SaveCharacters ( alice , Alice ) ;
1511: LD_EXP 10
1515: PPUSH
1516: LD_STRING Alice
1518: PPUSH
1519: CALL_OW 38
// SaveCharacters ( richard , Richard ) ;
1523: LD_EXP 9
1527: PPUSH
1528: LD_STRING Richard
1530: PPUSH
1531: CALL_OW 38
// SaveCharacters ( kvantovy , Kvantovy ) ;
1535: LD_EXP 12
1539: PPUSH
1540: LD_STRING Kvantovy
1542: PPUSH
1543: CALL_OW 38
// SaveCharacters ( mikhail , Mikhail ) ;
1547: LD_EXP 14
1551: PPUSH
1552: LD_STRING Mikhail
1554: PPUSH
1555: CALL_OW 38
// if vsevolod then
1559: LD_EXP 1
1563: IFFALSE 1577
// SaveVariable ( 1 , VsevolodZiv ) else
1565: LD_INT 1
1567: PPUSH
1568: LD_STRING VsevolodZiv
1570: PPUSH
1571: CALL_OW 39
1575: GO 1587
// SaveVariable ( 0 , VsevolodZiv ) ;
1577: LD_INT 0
1579: PPUSH
1580: LD_STRING VsevolodZiv
1582: PPUSH
1583: CALL_OW 39
// if talin then
1587: LD_EXP 11
1591: IFFALSE 1605
// SaveVariable ( 1 , TalinZiv ) else
1593: LD_INT 1
1595: PPUSH
1596: LD_STRING TalinZiv
1598: PPUSH
1599: CALL_OW 39
1603: GO 1615
// SaveVariable ( 0 , TalinZiv ) ;
1605: LD_INT 0
1607: PPUSH
1608: LD_STRING TalinZiv
1610: PPUSH
1611: CALL_OW 39
// if gnevko then
1615: LD_EXP 2
1619: IFFALSE 1633
// SaveVariable ( 1 , GnyevkoZiv ) else
1621: LD_INT 1
1623: PPUSH
1624: LD_STRING GnyevkoZiv
1626: PPUSH
1627: CALL_OW 39
1631: GO 1643
// SaveVariable ( 0 , GnyevkoZiv ) ;
1633: LD_INT 0
1635: PPUSH
1636: LD_STRING GnyevkoZiv
1638: PPUSH
1639: CALL_OW 39
// if petrovova then
1643: LD_EXP 3
1647: IFFALSE 1661
// SaveVariable ( 1 , PetrovovaZiv ) else
1649: LD_INT 1
1651: PPUSH
1652: LD_STRING PetrovovaZiv
1654: PPUSH
1655: CALL_OW 39
1659: GO 1671
// SaveVariable ( 0 , PetrovovaZiv ) ;
1661: LD_INT 0
1663: PPUSH
1664: LD_STRING PetrovovaZiv
1666: PPUSH
1667: CALL_OW 39
// if dolgov then
1671: LD_EXP 4
1675: IFFALSE 1689
// SaveVariable ( 1 , DolgovZiv ) else
1677: LD_INT 1
1679: PPUSH
1680: LD_STRING DolgovZiv
1682: PPUSH
1683: CALL_OW 39
1687: GO 1699
// SaveVariable ( 0 , DolgovZiv ) ;
1689: LD_INT 0
1691: PPUSH
1692: LD_STRING DolgovZiv
1694: PPUSH
1695: CALL_OW 39
// if karamazov then
1699: LD_EXP 5
1703: IFFALSE 1717
// SaveVariable ( 1 , KaramazovZiv ) else
1705: LD_INT 1
1707: PPUSH
1708: LD_STRING KaramazovZiv
1710: PPUSH
1711: CALL_OW 39
1715: GO 1727
// SaveVariable ( 0 , KaramazovZiv ) ;
1717: LD_INT 0
1719: PPUSH
1720: LD_STRING KaramazovZiv
1722: PPUSH
1723: CALL_OW 39
// if titov then
1727: LD_EXP 6
1731: IFFALSE 1745
// SaveVariable ( 1 , TitovZiv ) else
1733: LD_INT 1
1735: PPUSH
1736: LD_STRING TitovZiv
1738: PPUSH
1739: CALL_OW 39
1743: GO 1755
// SaveVariable ( 0 , TitovZiv ) ;
1745: LD_INT 0
1747: PPUSH
1748: LD_STRING TitovZiv
1750: PPUSH
1751: CALL_OW 39
// if kozlov then
1755: LD_EXP 7
1759: IFFALSE 1773
// SaveVariable ( 1 , KozlovZiv ) else
1761: LD_INT 1
1763: PPUSH
1764: LD_STRING KozlovZiv
1766: PPUSH
1767: CALL_OW 39
1771: GO 1783
// SaveVariable ( 0 , KozlovZiv ) ;
1773: LD_INT 0
1775: PPUSH
1776: LD_STRING KozlovZiv
1778: PPUSH
1779: CALL_OW 39
// if kapitsova then
1783: LD_EXP 8
1787: IFFALSE 1801
// SaveVariable ( 1 , KapitsovaZiv ) else
1789: LD_INT 1
1791: PPUSH
1792: LD_STRING KapitsovaZiv
1794: PPUSH
1795: CALL_OW 39
1799: GO 1811
// SaveVariable ( 0 , KapitsovaZiv ) ;
1801: LD_INT 0
1803: PPUSH
1804: LD_STRING KapitsovaZiv
1806: PPUSH
1807: CALL_OW 39
// if alice then
1811: LD_EXP 10
1815: IFFALSE 1829
// SaveVariable ( 1 , AliceZiv ) else
1817: LD_INT 1
1819: PPUSH
1820: LD_STRING AliceZiv
1822: PPUSH
1823: CALL_OW 39
1827: GO 1839
// SaveVariable ( 0 , AliceZiv ) ;
1829: LD_INT 0
1831: PPUSH
1832: LD_STRING AliceZiv
1834: PPUSH
1835: CALL_OW 39
// if richard then
1839: LD_EXP 9
1843: IFFALSE 1857
// SaveVariable ( 1 , RichardZiv ) else
1845: LD_INT 1
1847: PPUSH
1848: LD_STRING RichardZiv
1850: PPUSH
1851: CALL_OW 39
1855: GO 1867
// SaveVariable ( 0 , RichardZiv ) ;
1857: LD_INT 0
1859: PPUSH
1860: LD_STRING RichardZiv
1862: PPUSH
1863: CALL_OW 39
// if kvantovy then
1867: LD_EXP 12
1871: IFFALSE 1885
// SaveVariable ( 1 , KvantovyZiv ) else
1873: LD_INT 1
1875: PPUSH
1876: LD_STRING KvantovyZiv
1878: PPUSH
1879: CALL_OW 39
1883: GO 1895
// SaveVariable ( 0 , KvantovyZiv ) ;
1885: LD_INT 0
1887: PPUSH
1888: LD_STRING KvantovyZiv
1890: PPUSH
1891: CALL_OW 39
// if Mikhail then
1895: LD_EXP 14
1899: IFFALSE 1913
// SaveVariable ( 1 , MikhailZiv ) else
1901: LD_INT 1
1903: PPUSH
1904: LD_STRING MikhailZiv
1906: PPUSH
1907: CALL_OW 39
1911: GO 1923
// SaveVariable ( 0 , MikhailZiv ) ;
1913: LD_INT 0
1915: PPUSH
1916: LD_STRING MikhailZiv
1918: PPUSH
1919: CALL_OW 39
// if sibyou >= 850 then
1923: LD_EXP 69
1927: PUSH
1928: LD_INT 850
1930: GREATEREQUAL
1931: IFFALSE 1943
// SaveVariable ( 1 , VytezenoExtraSiberitu ) ;
1933: LD_INT 1
1935: PPUSH
1936: LD_STRING VytezenoExtraSiberitu
1938: PPUSH
1939: CALL_OW 39
// SaveVariable ( 1 , AlaskitMissionLast ) ;
1943: LD_INT 1
1945: PPUSH
1946: LD_STRING AlaskitMissionLast
1948: PPUSH
1949: CALL_OW 39
// YouWin ;
1953: CALL_OW 103
// end ; end_of_file
1957: LD_VAR 0 1
1961: RET
// export powelvyhrozoval , powelvyhrozoval2 , videlisklad , zimatalk , labtalk , autaNavic ; export function OstatniInity ( ) ; begin
1962: LD_INT 0
1964: PPUSH
// you = 3 ;
1965: LD_ADDR_EXP 18
1969: PUSH
1970: LD_INT 3
1972: ST_TO_ADDR
// amik = 1 ;
1973: LD_ADDR_EXP 19
1977: PUSH
1978: LD_INT 1
1980: ST_TO_ADDR
// amik_attack_listL = [ ] ;
1981: LD_ADDR_EXP 20
1985: PUSH
1986: EMPTY
1987: ST_TO_ADDR
// amik_attack_listTR = [ ] ;
1988: LD_ADDR_EXP 21
1992: PUSH
1993: EMPTY
1994: ST_TO_ADDR
// amik_attack_listR = [ ] ;
1995: LD_ADDR_EXP 22
1999: PUSH
2000: EMPTY
2001: ST_TO_ADDR
// powelvyhrozoval = false ;
2002: LD_ADDR_EXP 25
2006: PUSH
2007: LD_INT 0
2009: ST_TO_ADDR
// powelvyhrozoval2 = false ;
2010: LD_ADDR_EXP 26
2014: PUSH
2015: LD_INT 0
2017: ST_TO_ADDR
// videlisklad = false ;
2018: LD_ADDR_EXP 27
2022: PUSH
2023: LD_INT 0
2025: ST_TO_ADDR
// zimatalk = false ;
2026: LD_ADDR_EXP 28
2030: PUSH
2031: LD_INT 0
2033: ST_TO_ADDR
// labtalk = false ;
2034: LD_ADDR_EXP 29
2038: PUSH
2039: LD_INT 0
2041: ST_TO_ADDR
// uc_side = 6 ;
2042: LD_ADDR_OWVAR 20
2046: PUSH
2047: LD_INT 6
2049: ST_TO_ADDR
// uc_nation = nation_russian ;
2050: LD_ADDR_OWVAR 21
2054: PUSH
2055: LD_INT 3
2057: ST_TO_ADDR
// hc_class = class_soldier ;
2058: LD_ADDR_OWVAR 28
2062: PUSH
2063: LD_INT 1
2065: ST_TO_ADDR
// jasin = NewCharacter ( Yashin ) ;
2066: LD_ADDR_EXP 15
2070: PUSH
2071: LD_STRING Yashin
2073: PPUSH
2074: CALL_OW 25
2078: ST_TO_ADDR
// uc_side = amik ;
2079: LD_ADDR_OWVAR 20
2083: PUSH
2084: LD_EXP 19
2088: ST_TO_ADDR
// uc_nation = nation_american ;
2089: LD_ADDR_OWVAR 21
2093: PUSH
2094: LD_INT 1
2096: ST_TO_ADDR
// hc_class = class_soldier ;
2097: LD_ADDR_OWVAR 28
2101: PUSH
2102: LD_INT 1
2104: ST_TO_ADDR
// powel = NewCharacter ( Powell ) ;
2105: LD_ADDR_EXP 16
2109: PUSH
2110: LD_STRING Powell
2112: PPUSH
2113: CALL_OW 25
2117: ST_TO_ADDR
// autaNavic = LoadVariable ( AutaNavic , 0 ) ;
2118: LD_ADDR_EXP 30
2122: PUSH
2123: LD_STRING AutaNavic
2125: PPUSH
2126: LD_INT 0
2128: PPUSH
2129: CALL_OW 30
2133: ST_TO_ADDR
// end ;
2134: LD_VAR 0 1
2138: RET
// export function LoadSave ( ) ; var i ; begin
2139: LD_INT 0
2141: PPUSH
2142: PPUSH
// uc_nation = nation_russian ;
2143: LD_ADDR_OWVAR 21
2147: PUSH
2148: LD_INT 3
2150: ST_TO_ADDR
// uc_side = You ;
2151: LD_ADDR_OWVAR 20
2155: PUSH
2156: LD_EXP 18
2160: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
2161: LD_STRING Vsevolod
2163: PPUSH
2164: CALL_OW 28
2168: NOT
2169: IFFALSE 2316
// begin vsevolod = NewCharacter ( Vsevolod ) ;
2171: LD_ADDR_EXP 1
2175: PUSH
2176: LD_STRING Vsevolod
2178: PPUSH
2179: CALL_OW 25
2183: ST_TO_ADDR
// talin = NewCharacter ( Talin ) ;
2184: LD_ADDR_EXP 11
2188: PUSH
2189: LD_STRING Talin
2191: PPUSH
2192: CALL_OW 25
2196: ST_TO_ADDR
// gnevko = NewCharacter ( Gnyevko ) ;
2197: LD_ADDR_EXP 2
2201: PUSH
2202: LD_STRING Gnyevko
2204: PPUSH
2205: CALL_OW 25
2209: ST_TO_ADDR
// petrovova = NewCharacter ( Petrovova ) ;
2210: LD_ADDR_EXP 3
2214: PUSH
2215: LD_STRING Petrovova
2217: PPUSH
2218: CALL_OW 25
2222: ST_TO_ADDR
// dolgov = NewCharacter ( Dolgov ) ;
2223: LD_ADDR_EXP 4
2227: PUSH
2228: LD_STRING Dolgov
2230: PPUSH
2231: CALL_OW 25
2235: ST_TO_ADDR
// karamazov = NewCharacter ( Karamazov ) ;
2236: LD_ADDR_EXP 5
2240: PUSH
2241: LD_STRING Karamazov
2243: PPUSH
2244: CALL_OW 25
2248: ST_TO_ADDR
// titov = NewCharacter ( Titov ) ;
2249: LD_ADDR_EXP 6
2253: PUSH
2254: LD_STRING Titov
2256: PPUSH
2257: CALL_OW 25
2261: ST_TO_ADDR
// kozlov = NewCharacter ( Kozlov ) ;
2262: LD_ADDR_EXP 7
2266: PUSH
2267: LD_STRING Kozlov
2269: PPUSH
2270: CALL_OW 25
2274: ST_TO_ADDR
// kapitsova = NewCharacter ( Kapitsova ) ;
2275: LD_ADDR_EXP 8
2279: PUSH
2280: LD_STRING Kapitsova
2282: PPUSH
2283: CALL_OW 25
2287: ST_TO_ADDR
// Mikhail = NewCharacter ( Mikhail ) ;
2288: LD_ADDR_EXP 14
2292: PUSH
2293: LD_STRING Mikhail
2295: PPUSH
2296: CALL_OW 25
2300: ST_TO_ADDR
// Kvantovy = NewCharacter ( Kvantovy ) ;
2301: LD_ADDR_EXP 12
2305: PUSH
2306: LD_STRING Kvantovy
2308: PPUSH
2309: CALL_OW 25
2313: ST_TO_ADDR
// end else
2314: GO 2641
// begin vsevolod = CreateCharacter ( Vsevolod ) ;
2316: LD_ADDR_EXP 1
2320: PUSH
2321: LD_STRING Vsevolod
2323: PPUSH
2324: CALL_OW 34
2328: ST_TO_ADDR
// talin = CreateCharacter ( Talin ) ;
2329: LD_ADDR_EXP 11
2333: PUSH
2334: LD_STRING Talin
2336: PPUSH
2337: CALL_OW 34
2341: ST_TO_ADDR
// if TestVariable ( GnyevkoZiv ) then
2342: LD_STRING GnyevkoZiv
2344: PPUSH
2345: CALL_OW 27
2349: IFFALSE 2364
// gnevko = CreateCharacter ( Gnyevko ) ;
2351: LD_ADDR_EXP 2
2355: PUSH
2356: LD_STRING Gnyevko
2358: PPUSH
2359: CALL_OW 34
2363: ST_TO_ADDR
// if TestVariable ( PetrovovaZiv ) then
2364: LD_STRING PetrovovaZiv
2366: PPUSH
2367: CALL_OW 27
2371: IFFALSE 2386
// petrovova = CreateCharacter ( Petrovova ) ;
2373: LD_ADDR_EXP 3
2377: PUSH
2378: LD_STRING Petrovova
2380: PPUSH
2381: CALL_OW 34
2385: ST_TO_ADDR
// if TestVariable ( DolgovZiv ) then
2386: LD_STRING DolgovZiv
2388: PPUSH
2389: CALL_OW 27
2393: IFFALSE 2408
// dolgov = CreateCharacter ( Dolgov ) ;
2395: LD_ADDR_EXP 4
2399: PUSH
2400: LD_STRING Dolgov
2402: PPUSH
2403: CALL_OW 34
2407: ST_TO_ADDR
// if TestVariable ( KaramazovZiv ) then
2408: LD_STRING KaramazovZiv
2410: PPUSH
2411: CALL_OW 27
2415: IFFALSE 2430
// karamazov = CreateCharacter ( Karamazov ) ;
2417: LD_ADDR_EXP 5
2421: PUSH
2422: LD_STRING Karamazov
2424: PPUSH
2425: CALL_OW 34
2429: ST_TO_ADDR
// if TestVariable ( TitovZiv ) then
2430: LD_STRING TitovZiv
2432: PPUSH
2433: CALL_OW 27
2437: IFFALSE 2452
// titov = CreateCharacter ( Titov ) ;
2439: LD_ADDR_EXP 6
2443: PUSH
2444: LD_STRING Titov
2446: PPUSH
2447: CALL_OW 34
2451: ST_TO_ADDR
// if TestVariable ( KozlovZiv ) then
2452: LD_STRING KozlovZiv
2454: PPUSH
2455: CALL_OW 27
2459: IFFALSE 2474
// kozlov = CreateCharacter ( Kozlov ) ;
2461: LD_ADDR_EXP 7
2465: PUSH
2466: LD_STRING Kozlov
2468: PPUSH
2469: CALL_OW 34
2473: ST_TO_ADDR
// if TestVariable ( KapitsovaZiv ) then
2474: LD_STRING KapitsovaZiv
2476: PPUSH
2477: CALL_OW 27
2481: IFFALSE 2496
// kapitsova = CreateCharacter ( Kapitsova ) ;
2483: LD_ADDR_EXP 8
2487: PUSH
2488: LD_STRING Kapitsova
2490: PPUSH
2491: CALL_OW 34
2495: ST_TO_ADDR
// if TestVariable ( KvantovyZiv ) then
2496: LD_STRING KvantovyZiv
2498: PPUSH
2499: CALL_OW 27
2503: IFFALSE 2518
// Kvantovy = CreateCharacter ( Kvantovy ) ;
2505: LD_ADDR_EXP 12
2509: PUSH
2510: LD_STRING Kvantovy
2512: PPUSH
2513: CALL_OW 34
2517: ST_TO_ADDR
// if TestVariable ( MikhailZiv ) then
2518: LD_STRING MikhailZiv
2520: PPUSH
2521: CALL_OW 27
2525: IFFALSE 2540
// Mikhail = CreateCharacter ( Mikhail ) ;
2527: LD_ADDR_EXP 14
2531: PUSH
2532: LD_STRING Mikhail
2534: PPUSH
2535: CALL_OW 34
2539: ST_TO_ADDR
// for i in [ vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail ] do
2540: LD_ADDR_VAR 0 2
2544: PUSH
2545: LD_EXP 1
2549: PUSH
2550: LD_EXP 2
2554: PUSH
2555: LD_EXP 3
2559: PUSH
2560: LD_EXP 4
2564: PUSH
2565: LD_EXP 5
2569: PUSH
2570: LD_EXP 6
2574: PUSH
2575: LD_EXP 7
2579: PUSH
2580: LD_EXP 8
2584: PUSH
2585: LD_EXP 12
2589: PUSH
2590: LD_EXP 14
2594: PUSH
2595: EMPTY
2596: LIST
2597: LIST
2598: LIST
2599: LIST
2600: LIST
2601: LIST
2602: LIST
2603: LIST
2604: LIST
2605: LIST
2606: PUSH
2607: FOR_IN
2608: IFFALSE 2639
// if GetClass ( i ) = class_bazooker then
2610: LD_VAR 0 2
2614: PPUSH
2615: CALL_OW 257
2619: PUSH
2620: LD_INT 9
2622: EQUAL
2623: IFFALSE 2637
// SetClass ( i , 1 ) ;
2625: LD_VAR 0 2
2629: PPUSH
2630: LD_INT 1
2632: PPUSH
2633: CALL_OW 336
2637: GO 2607
2639: POP
2640: POP
// end ; end ;
2641: LD_VAR 0 1
2645: RET
// export function SideDead ( side ) ; begin
2646: LD_INT 0
2648: PPUSH
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] ] ) then
2649: LD_INT 22
2651: PUSH
2652: LD_VAR 0 1
2656: PUSH
2657: EMPTY
2658: LIST
2659: LIST
2660: PUSH
2661: LD_INT 21
2663: PUSH
2664: LD_INT 1
2666: PUSH
2667: EMPTY
2668: LIST
2669: LIST
2670: PUSH
2671: EMPTY
2672: LIST
2673: LIST
2674: PPUSH
2675: CALL_OW 69
2679: IFFALSE 2691
// result = false else
2681: LD_ADDR_VAR 0 2
2685: PUSH
2686: LD_INT 0
2688: ST_TO_ADDR
2689: GO 2699
// result = true ;
2691: LD_ADDR_VAR 0 2
2695: PUSH
2696: LD_INT 1
2698: ST_TO_ADDR
// end ;
2699: LD_VAR 0 2
2703: RET
// export bazy_oblasti , dist_max , hranice_leceni_utek , hranice_budova_repair , hranice_oprava_utek , stredy_heal_oblasti , stredy_repair_oblasti , stredy_baz , stredy_carpark_oblasti , snipy_range ; export radar_distance , hranice_utok_repair_utek ; export function ArrayInity ( ) ; begin
2704: LD_INT 0
2706: PPUSH
// bazy_oblasti = [ LevaBaza , PravaHorniBaza , PravaBaza , StredniBaza ] ;
2707: LD_ADDR_EXP 31
2711: PUSH
2712: LD_INT 31
2714: PUSH
2715: LD_INT 33
2717: PUSH
2718: LD_INT 35
2720: PUSH
2721: LD_INT 37
2723: PUSH
2724: EMPTY
2725: LIST
2726: LIST
2727: LIST
2728: LIST
2729: ST_TO_ADDR
// dist_max = 60 ;
2730: LD_ADDR_EXP 32
2734: PUSH
2735: LD_INT 60
2737: ST_TO_ADDR
// hranice_leceni_utek = 700 ;
2738: LD_ADDR_EXP 33
2742: PUSH
2743: LD_INT 700
2745: ST_TO_ADDR
// hranice_oprava_utek = 740 ;
2746: LD_ADDR_EXP 35
2750: PUSH
2751: LD_INT 740
2753: ST_TO_ADDR
// hranice_budova_repair = 980 ;
2754: LD_ADDR_EXP 34
2758: PUSH
2759: LD_INT 980
2761: ST_TO_ADDR
// stredy_heal_oblasti = [ 27 , 21 , 114 , 17 , 148 , 74 , 86 , 68 ] ;
2762: LD_ADDR_EXP 36
2766: PUSH
2767: LD_INT 27
2769: PUSH
2770: LD_INT 21
2772: PUSH
2773: LD_INT 114
2775: PUSH
2776: LD_INT 17
2778: PUSH
2779: LD_INT 148
2781: PUSH
2782: LD_INT 74
2784: PUSH
2785: LD_INT 86
2787: PUSH
2788: LD_INT 68
2790: PUSH
2791: EMPTY
2792: LIST
2793: LIST
2794: LIST
2795: LIST
2796: LIST
2797: LIST
2798: LIST
2799: LIST
2800: ST_TO_ADDR
// stredy_repair_oblasti = [ 18 , 11 , 104 , 22 , 157 , 73 , 86 , 68 ] ;
2801: LD_ADDR_EXP 37
2805: PUSH
2806: LD_INT 18
2808: PUSH
2809: LD_INT 11
2811: PUSH
2812: LD_INT 104
2814: PUSH
2815: LD_INT 22
2817: PUSH
2818: LD_INT 157
2820: PUSH
2821: LD_INT 73
2823: PUSH
2824: LD_INT 86
2826: PUSH
2827: LD_INT 68
2829: PUSH
2830: EMPTY
2831: LIST
2832: LIST
2833: LIST
2834: LIST
2835: LIST
2836: LIST
2837: LIST
2838: LIST
2839: ST_TO_ADDR
// stredy_carpark_oblasti = [ 25 , 14 , 117 , 27 , 154 , 71 , 86 , 68 ] ;
2840: LD_ADDR_EXP 39
2844: PUSH
2845: LD_INT 25
2847: PUSH
2848: LD_INT 14
2850: PUSH
2851: LD_INT 117
2853: PUSH
2854: LD_INT 27
2856: PUSH
2857: LD_INT 154
2859: PUSH
2860: LD_INT 71
2862: PUSH
2863: LD_INT 86
2865: PUSH
2866: LD_INT 68
2868: PUSH
2869: EMPTY
2870: LIST
2871: LIST
2872: LIST
2873: LIST
2874: LIST
2875: LIST
2876: LIST
2877: LIST
2878: ST_TO_ADDR
// stredy_baz = [ 30 , 18 , 111 , 18 , 150 , 73 , 86 , 68 ] ;
2879: LD_ADDR_EXP 38
2883: PUSH
2884: LD_INT 30
2886: PUSH
2887: LD_INT 18
2889: PUSH
2890: LD_INT 111
2892: PUSH
2893: LD_INT 18
2895: PUSH
2896: LD_INT 150
2898: PUSH
2899: LD_INT 73
2901: PUSH
2902: LD_INT 86
2904: PUSH
2905: LD_INT 68
2907: PUSH
2908: EMPTY
2909: LIST
2910: LIST
2911: LIST
2912: LIST
2913: LIST
2914: LIST
2915: LIST
2916: LIST
2917: ST_TO_ADDR
// snipy_range = 20 ;
2918: LD_ADDR_EXP 40
2922: PUSH
2923: LD_INT 20
2925: ST_TO_ADDR
// radar_distance = 20 ;
2926: LD_ADDR_EXP 41
2930: PUSH
2931: LD_INT 20
2933: ST_TO_ADDR
// hranice_utok_repair_utek = 600 ;
2934: LD_ADDR_EXP 42
2938: PUSH
2939: LD_INT 600
2941: ST_TO_ADDR
// end ;
2942: LD_VAR 0 1
2946: RET
// export function VytvorCloveka ( povolani , minskill , maxskill , nat , side ) ; var max , min , min_ost ; begin
2947: LD_INT 0
2949: PPUSH
2950: PPUSH
2951: PPUSH
2952: PPUSH
// max = maxskill ;
2953: LD_ADDR_VAR 0 7
2957: PUSH
2958: LD_VAR 0 3
2962: ST_TO_ADDR
// min = minskill ;
2963: LD_ADDR_VAR 0 8
2967: PUSH
2968: LD_VAR 0 2
2972: ST_TO_ADDR
// min_ost = 0 ;
2973: LD_ADDR_VAR 0 9
2977: PUSH
2978: LD_INT 0
2980: ST_TO_ADDR
// InitHc ( ) ;
2981: CALL_OW 19
// uc_nation := nat ;
2985: LD_ADDR_OWVAR 21
2989: PUSH
2990: LD_VAR 0 4
2994: ST_TO_ADDR
// uc_side = side ;
2995: LD_ADDR_OWVAR 20
2999: PUSH
3000: LD_VAR 0 5
3004: ST_TO_ADDR
// hc_importance = 30 ;
3005: LD_ADDR_OWVAR 32
3009: PUSH
3010: LD_INT 30
3012: ST_TO_ADDR
// hc_name :=  ;
3013: LD_ADDR_OWVAR 26
3017: PUSH
3018: LD_STRING 
3020: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
3021: LD_ADDR_OWVAR 29
3025: PUSH
3026: LD_INT 9
3028: PPUSH
3029: LD_INT 11
3031: PPUSH
3032: CALL_OW 12
3036: PUSH
3037: LD_INT 9
3039: PPUSH
3040: LD_INT 11
3042: PPUSH
3043: CALL_OW 12
3047: PUSH
3048: EMPTY
3049: LIST
3050: LIST
3051: ST_TO_ADDR
// hc_class = povolani ;
3052: LD_ADDR_OWVAR 28
3056: PUSH
3057: LD_VAR 0 1
3061: ST_TO_ADDR
// if Prob ( 30 ) then
3062: LD_INT 30
3064: PPUSH
3065: CALL_OW 13
3069: IFFALSE 3081
// hc_sex := 2 else
3071: LD_ADDR_OWVAR 27
3075: PUSH
3076: LD_INT 2
3078: ST_TO_ADDR
3079: GO 3089
// hc_sex := 1 ;
3081: LD_ADDR_OWVAR 27
3085: PUSH
3086: LD_INT 1
3088: ST_TO_ADDR
// case povolani of 1 :
3089: LD_VAR 0 1
3093: PUSH
3094: LD_INT 1
3096: DOUBLE
3097: EQUAL
3098: IFTRUE 3102
3100: GO 3196
3102: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
3103: LD_ADDR_OWVAR 31
3107: PUSH
3108: LD_VAR 0 8
3112: PPUSH
3113: LD_VAR 0 7
3117: PPUSH
3118: CALL_OW 12
3122: PUSH
3123: LD_VAR 0 9
3127: PPUSH
3128: LD_VAR 0 7
3132: PUSH
3133: LD_INT 1
3135: MINUS
3136: PPUSH
3137: CALL_OW 12
3141: PUSH
3142: LD_VAR 0 9
3146: PPUSH
3147: LD_VAR 0 7
3151: PUSH
3152: LD_INT 1
3154: MINUS
3155: PPUSH
3156: CALL_OW 12
3160: PUSH
3161: LD_VAR 0 9
3165: PPUSH
3166: LD_VAR 0 7
3170: PUSH
3171: LD_INT 1
3173: MINUS
3174: PPUSH
3175: CALL_OW 12
3179: PUSH
3180: EMPTY
3181: LIST
3182: LIST
3183: LIST
3184: LIST
3185: ST_TO_ADDR
// hc_class = class_soldier ;
3186: LD_ADDR_OWVAR 28
3190: PUSH
3191: LD_INT 1
3193: ST_TO_ADDR
// end ; 2 :
3194: GO 3491
3196: LD_INT 2
3198: DOUBLE
3199: EQUAL
3200: IFTRUE 3204
3202: GO 3294
3204: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
3205: LD_ADDR_OWVAR 31
3209: PUSH
3210: LD_VAR 0 8
3214: PPUSH
3215: LD_VAR 0 7
3219: PPUSH
3220: CALL_OW 12
3224: PUSH
3225: LD_VAR 0 8
3229: PPUSH
3230: LD_VAR 0 7
3234: PPUSH
3235: CALL_OW 12
3239: PUSH
3240: LD_VAR 0 9
3244: PPUSH
3245: LD_VAR 0 7
3249: PUSH
3250: LD_INT 1
3252: MINUS
3253: PPUSH
3254: CALL_OW 12
3258: PUSH
3259: LD_VAR 0 9
3263: PPUSH
3264: LD_VAR 0 7
3268: PUSH
3269: LD_INT 1
3271: MINUS
3272: PPUSH
3273: CALL_OW 12
3277: PUSH
3278: EMPTY
3279: LIST
3280: LIST
3281: LIST
3282: LIST
3283: ST_TO_ADDR
// hc_class = class_engineer ;
3284: LD_ADDR_OWVAR 28
3288: PUSH
3289: LD_INT 2
3291: ST_TO_ADDR
// end ; 3 :
3292: GO 3491
3294: LD_INT 3
3296: DOUBLE
3297: EQUAL
3298: IFTRUE 3302
3300: GO 3392
3302: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min , max ) , rand ( min_ost , max - 1 ) ] ;
3303: LD_ADDR_OWVAR 31
3307: PUSH
3308: LD_VAR 0 8
3312: PPUSH
3313: LD_VAR 0 7
3317: PPUSH
3318: CALL_OW 12
3322: PUSH
3323: LD_VAR 0 9
3327: PPUSH
3328: LD_VAR 0 7
3332: PUSH
3333: LD_INT 1
3335: MINUS
3336: PPUSH
3337: CALL_OW 12
3341: PUSH
3342: LD_VAR 0 8
3346: PPUSH
3347: LD_VAR 0 7
3351: PPUSH
3352: CALL_OW 12
3356: PUSH
3357: LD_VAR 0 9
3361: PPUSH
3362: LD_VAR 0 7
3366: PUSH
3367: LD_INT 1
3369: MINUS
3370: PPUSH
3371: CALL_OW 12
3375: PUSH
3376: EMPTY
3377: LIST
3378: LIST
3379: LIST
3380: LIST
3381: ST_TO_ADDR
// hc_class = class_mechanic ;
3382: LD_ADDR_OWVAR 28
3386: PUSH
3387: LD_INT 3
3389: ST_TO_ADDR
// end ; 4 :
3390: GO 3491
3392: LD_INT 4
3394: DOUBLE
3395: EQUAL
3396: IFTRUE 3400
3398: GO 3490
3400: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min , max ) ] ;
3401: LD_ADDR_OWVAR 31
3405: PUSH
3406: LD_VAR 0 8
3410: PPUSH
3411: LD_VAR 0 7
3415: PPUSH
3416: CALL_OW 12
3420: PUSH
3421: LD_VAR 0 9
3425: PPUSH
3426: LD_VAR 0 7
3430: PUSH
3431: LD_INT 1
3433: MINUS
3434: PPUSH
3435: CALL_OW 12
3439: PUSH
3440: LD_VAR 0 9
3444: PPUSH
3445: LD_VAR 0 7
3449: PUSH
3450: LD_INT 1
3452: MINUS
3453: PPUSH
3454: CALL_OW 12
3458: PUSH
3459: LD_VAR 0 8
3463: PPUSH
3464: LD_VAR 0 7
3468: PPUSH
3469: CALL_OW 12
3473: PUSH
3474: EMPTY
3475: LIST
3476: LIST
3477: LIST
3478: LIST
3479: ST_TO_ADDR
// hc_class = class_scientistic ;
3480: LD_ADDR_OWVAR 28
3484: PUSH
3485: LD_INT 4
3487: ST_TO_ADDR
// end ; end ;
3488: GO 3491
3490: POP
// result := CreateHuman ( ) ;
3491: LD_ADDR_VAR 0 6
3495: PUSH
3496: CALL_OW 44
3500: ST_TO_ADDR
// end ;
3501: LD_VAR 0 6
3505: RET
// export function BLevely ; begin
3506: LD_INT 0
3508: PPUSH
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , amik ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3509: LD_INT 21
3511: PUSH
3512: LD_INT 3
3514: PUSH
3515: EMPTY
3516: LIST
3517: LIST
3518: PUSH
3519: LD_INT 22
3521: PUSH
3522: LD_EXP 19
3526: PUSH
3527: EMPTY
3528: LIST
3529: LIST
3530: PUSH
3531: EMPTY
3532: LIST
3533: LIST
3534: PPUSH
3535: CALL_OW 69
3539: PPUSH
3540: LD_INT 52
3542: PUSH
3543: EMPTY
3544: LIST
3545: PUSH
3546: LD_INT 22
3548: PUSH
3549: LD_EXP 19
3553: PUSH
3554: EMPTY
3555: LIST
3556: LIST
3557: PUSH
3558: LD_INT 25
3560: PUSH
3561: LD_INT 2
3563: PUSH
3564: EMPTY
3565: LIST
3566: LIST
3567: PUSH
3568: EMPTY
3569: LIST
3570: LIST
3571: LIST
3572: PPUSH
3573: CALL_OW 69
3577: PUSH
3578: LD_INT 1
3580: ARRAY
3581: PPUSH
3582: LD_INT 2
3584: PPUSH
3585: CALL_OW 259
3589: PPUSH
3590: CALL_OW 241
// end ;
3594: LD_VAR 0 1
3598: RET
// export function NaplnVsechnyBudovyLidma ; var un ; var b , i , bunkry ; begin
3599: LD_INT 0
3601: PPUSH
3602: PPUSH
3603: PPUSH
3604: PPUSH
3605: PPUSH
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ) do
3606: LD_ADDR_VAR 0 3
3610: PUSH
3611: LD_INT 2
3613: PUSH
3614: LD_INT 30
3616: PUSH
3617: LD_INT 32
3619: PUSH
3620: EMPTY
3621: LIST
3622: LIST
3623: PUSH
3624: LD_INT 30
3626: PUSH
3627: LD_INT 31
3629: PUSH
3630: EMPTY
3631: LIST
3632: LIST
3633: PUSH
3634: EMPTY
3635: LIST
3636: LIST
3637: LIST
3638: PPUSH
3639: CALL_OW 69
3643: PUSH
3644: FOR_IN
3645: IFFALSE 3729
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
3647: LD_ADDR_VAR 0 2
3651: PUSH
3652: LD_INT 1
3654: PPUSH
3655: LD_EXP 50
3659: PPUSH
3660: LD_EXP 51
3664: PPUSH
3665: LD_VAR 0 3
3669: PPUSH
3670: CALL_OW 248
3674: PPUSH
3675: LD_VAR 0 3
3679: PPUSH
3680: CALL_OW 255
3684: PPUSH
3685: CALL 2947 0 5
3689: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
3690: LD_VAR 0 2
3694: PPUSH
3695: LD_VAR 0 3
3699: PPUSH
3700: CALL_OW 254
3704: PUSH
3705: LD_INT 3
3707: PLUS
3708: PPUSH
3709: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
3713: LD_VAR 0 2
3717: PPUSH
3718: LD_VAR 0 3
3722: PPUSH
3723: CALL_OW 52
// end ;
3727: GO 3644
3729: POP
3730: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) do
3731: LD_ADDR_VAR 0 3
3735: PUSH
3736: LD_INT 2
3738: PUSH
3739: LD_INT 30
3741: PUSH
3742: LD_INT 4
3744: PUSH
3745: EMPTY
3746: LIST
3747: LIST
3748: PUSH
3749: LD_INT 30
3751: PUSH
3752: LD_INT 5
3754: PUSH
3755: EMPTY
3756: LIST
3757: LIST
3758: PUSH
3759: EMPTY
3760: LIST
3761: LIST
3762: LIST
3763: PPUSH
3764: CALL_OW 69
3768: PUSH
3769: FOR_IN
3770: IFFALSE 3870
// begin if GetSide ( b ) = amik then
3772: LD_VAR 0 3
3776: PPUSH
3777: CALL_OW 255
3781: PUSH
3782: LD_EXP 19
3786: EQUAL
3787: IFFALSE 3868
// begin for i = 1 to dif_enemy_lidi_kasa do
3789: LD_ADDR_VAR 0 4
3793: PUSH
3794: DOUBLE
3795: LD_INT 1
3797: DEC
3798: ST_TO_ADDR
3799: LD_EXP 47
3803: PUSH
3804: FOR_TO
3805: IFFALSE 3866
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
3807: LD_ADDR_VAR 0 2
3811: PUSH
3812: LD_INT 1
3814: PPUSH
3815: LD_EXP 50
3819: PPUSH
3820: LD_EXP 51
3824: PPUSH
3825: LD_VAR 0 3
3829: PPUSH
3830: CALL_OW 248
3834: PPUSH
3835: LD_VAR 0 3
3839: PPUSH
3840: CALL_OW 255
3844: PPUSH
3845: CALL 2947 0 5
3849: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
3850: LD_VAR 0 2
3854: PPUSH
3855: LD_VAR 0 3
3859: PPUSH
3860: CALL_OW 52
// end ;
3864: GO 3804
3866: POP
3867: POP
// end ; end ;
3868: GO 3769
3870: POP
3871: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , 6 ] , [ f_btype , 7 ] , [ f_btype , 8 ] , [ f_btype , 9 ] , [ f_btype , 10 ] , [ f_btype , 11 ] , [ f_btype , 12 ] , [ f_btype , 13 ] , [ f_btype , 14 ] , [ f_btype , 15 ] , [ f_btype , b_factory ] , [ f_btype , b_workshop ] , [ f_btype , b_control_tower ] ] ) do
3872: LD_ADDR_VAR 0 3
3876: PUSH
3877: LD_INT 2
3879: PUSH
3880: LD_INT 30
3882: PUSH
3883: LD_INT 6
3885: PUSH
3886: EMPTY
3887: LIST
3888: LIST
3889: PUSH
3890: LD_INT 30
3892: PUSH
3893: LD_INT 7
3895: PUSH
3896: EMPTY
3897: LIST
3898: LIST
3899: PUSH
3900: LD_INT 30
3902: PUSH
3903: LD_INT 8
3905: PUSH
3906: EMPTY
3907: LIST
3908: LIST
3909: PUSH
3910: LD_INT 30
3912: PUSH
3913: LD_INT 9
3915: PUSH
3916: EMPTY
3917: LIST
3918: LIST
3919: PUSH
3920: LD_INT 30
3922: PUSH
3923: LD_INT 10
3925: PUSH
3926: EMPTY
3927: LIST
3928: LIST
3929: PUSH
3930: LD_INT 30
3932: PUSH
3933: LD_INT 11
3935: PUSH
3936: EMPTY
3937: LIST
3938: LIST
3939: PUSH
3940: LD_INT 30
3942: PUSH
3943: LD_INT 12
3945: PUSH
3946: EMPTY
3947: LIST
3948: LIST
3949: PUSH
3950: LD_INT 30
3952: PUSH
3953: LD_INT 13
3955: PUSH
3956: EMPTY
3957: LIST
3958: LIST
3959: PUSH
3960: LD_INT 30
3962: PUSH
3963: LD_INT 14
3965: PUSH
3966: EMPTY
3967: LIST
3968: LIST
3969: PUSH
3970: LD_INT 30
3972: PUSH
3973: LD_INT 15
3975: PUSH
3976: EMPTY
3977: LIST
3978: LIST
3979: PUSH
3980: LD_INT 30
3982: PUSH
3983: LD_INT 3
3985: PUSH
3986: EMPTY
3987: LIST
3988: LIST
3989: PUSH
3990: LD_INT 30
3992: PUSH
3993: LD_INT 2
3995: PUSH
3996: EMPTY
3997: LIST
3998: LIST
3999: PUSH
4000: LD_INT 30
4002: PUSH
4003: LD_INT 36
4005: PUSH
4006: EMPTY
4007: LIST
4008: LIST
4009: PUSH
4010: EMPTY
4011: LIST
4012: LIST
4013: LIST
4014: LIST
4015: LIST
4016: LIST
4017: LIST
4018: LIST
4019: LIST
4020: LIST
4021: LIST
4022: LIST
4023: LIST
4024: LIST
4025: PPUSH
4026: CALL_OW 69
4030: PUSH
4031: FOR_IN
4032: IFFALSE 4270
// begin if not GetBType ( b ) = b_control_tower then
4034: LD_VAR 0 3
4038: PPUSH
4039: CALL_OW 266
4043: PUSH
4044: LD_INT 36
4046: EQUAL
4047: NOT
4048: IFFALSE 4191
// begin for i = 1 to dif_enemy_lidi_faclab do
4050: LD_ADDR_VAR 0 4
4054: PUSH
4055: DOUBLE
4056: LD_INT 1
4058: DEC
4059: ST_TO_ADDR
4060: LD_EXP 49
4064: PUSH
4065: FOR_TO
4066: IFFALSE 4187
// begin if GetBType ( b ) = b_factory then
4068: LD_VAR 0 3
4072: PPUSH
4073: CALL_OW 266
4077: PUSH
4078: LD_INT 3
4080: EQUAL
4081: IFFALSE 4128
// un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) else
4083: LD_ADDR_VAR 0 2
4087: PUSH
4088: LD_INT 3
4090: PPUSH
4091: LD_EXP 50
4095: PPUSH
4096: LD_EXP 51
4100: PPUSH
4101: LD_VAR 0 3
4105: PPUSH
4106: CALL_OW 248
4110: PPUSH
4111: LD_VAR 0 3
4115: PPUSH
4116: CALL_OW 255
4120: PPUSH
4121: CALL 2947 0 5
4125: ST_TO_ADDR
4126: GO 4171
// un = VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4128: LD_ADDR_VAR 0 2
4132: PUSH
4133: LD_INT 4
4135: PPUSH
4136: LD_EXP 50
4140: PPUSH
4141: LD_EXP 51
4145: PPUSH
4146: LD_VAR 0 3
4150: PPUSH
4151: CALL_OW 248
4155: PPUSH
4156: LD_VAR 0 3
4160: PPUSH
4161: CALL_OW 255
4165: PPUSH
4166: CALL 2947 0 5
4170: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4171: LD_VAR 0 2
4175: PPUSH
4176: LD_VAR 0 3
4180: PPUSH
4181: CALL_OW 52
// end ;
4185: GO 4065
4187: POP
4188: POP
// end else
4189: GO 4268
// begin for i = 1 to 3 do
4191: LD_ADDR_VAR 0 4
4195: PUSH
4196: DOUBLE
4197: LD_INT 1
4199: DEC
4200: ST_TO_ADDR
4201: LD_INT 3
4203: PUSH
4204: FOR_TO
4205: IFFALSE 4266
// begin un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4207: LD_ADDR_VAR 0 2
4211: PUSH
4212: LD_INT 3
4214: PPUSH
4215: LD_EXP 50
4219: PPUSH
4220: LD_EXP 51
4224: PPUSH
4225: LD_VAR 0 3
4229: PPUSH
4230: CALL_OW 248
4234: PPUSH
4235: LD_VAR 0 3
4239: PPUSH
4240: CALL_OW 255
4244: PPUSH
4245: CALL 2947 0 5
4249: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4250: LD_VAR 0 2
4254: PPUSH
4255: LD_VAR 0 3
4259: PPUSH
4260: CALL_OW 52
// end ;
4264: GO 4204
4266: POP
4267: POP
// end ; end ;
4268: GO 4031
4270: POP
4271: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) do
4272: LD_ADDR_VAR 0 3
4276: PUSH
4277: LD_INT 2
4279: PUSH
4280: LD_INT 30
4282: PUSH
4283: LD_INT 0
4285: PUSH
4286: EMPTY
4287: LIST
4288: LIST
4289: PUSH
4290: LD_INT 30
4292: PUSH
4293: LD_INT 1
4295: PUSH
4296: EMPTY
4297: LIST
4298: LIST
4299: PUSH
4300: EMPTY
4301: LIST
4302: LIST
4303: LIST
4304: PPUSH
4305: CALL_OW 69
4309: PUSH
4310: FOR_IN
4311: IFFALSE 4394
// begin for i = 1 to dif_enemy_lidi_sklad do
4313: LD_ADDR_VAR 0 4
4317: PUSH
4318: DOUBLE
4319: LD_INT 1
4321: DEC
4322: ST_TO_ADDR
4323: LD_EXP 48
4327: PUSH
4328: FOR_TO
4329: IFFALSE 4390
// begin un = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4331: LD_ADDR_VAR 0 2
4335: PUSH
4336: LD_INT 2
4338: PPUSH
4339: LD_EXP 50
4343: PPUSH
4344: LD_EXP 51
4348: PPUSH
4349: LD_VAR 0 3
4353: PPUSH
4354: CALL_OW 248
4358: PPUSH
4359: LD_VAR 0 3
4363: PPUSH
4364: CALL_OW 255
4368: PPUSH
4369: CALL 2947 0 5
4373: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4374: LD_VAR 0 2
4378: PPUSH
4379: LD_VAR 0 3
4383: PPUSH
4384: CALL_OW 52
// end ;
4388: GO 4328
4390: POP
4391: POP
// end ;
4392: GO 4310
4394: POP
4395: POP
// end ;
4396: LD_VAR 0 1
4400: RET
// export function VyjdiVen ( un ) ; begin
4401: LD_INT 0
4403: PPUSH
// if IsInUnit ( un ) then
4404: LD_VAR 0 1
4408: PPUSH
4409: CALL_OW 310
4413: IFFALSE 4480
// begin if GetType ( IsInUnit ( un ) ) = unit_building then
4415: LD_VAR 0 1
4419: PPUSH
4420: CALL_OW 310
4424: PPUSH
4425: CALL_OW 247
4429: PUSH
4430: LD_INT 3
4432: EQUAL
4433: IFFALSE 4444
// ComExitBuilding ( un ) ;
4435: LD_VAR 0 1
4439: PPUSH
4440: CALL_OW 122
// if GetType ( IsInUnit ( un ) ) = unit_vehicle then
4444: LD_VAR 0 1
4448: PPUSH
4449: CALL_OW 310
4453: PPUSH
4454: CALL_OW 247
4458: PUSH
4459: LD_INT 2
4461: EQUAL
4462: IFFALSE 4473
// ComExitVehicle ( un ) ;
4464: LD_VAR 0 1
4468: PPUSH
4469: CALL_OW 121
// Wait ( 0 0$0.2 ) ;
4473: LD_INT 7
4475: PPUSH
4476: CALL_OW 67
// end ; end ;
4480: LD_VAR 0 2
4484: RET
// export function NearestUnitToUnit2 ( list , un ) ; begin
4485: LD_INT 0
4487: PPUSH
// if not list then
4488: LD_VAR 0 1
4492: NOT
4493: IFFALSE 4505
// result = false else
4495: LD_ADDR_VAR 0 3
4499: PUSH
4500: LD_INT 0
4502: ST_TO_ADDR
4503: GO 4566
// begin if IsInUnit ( un ) and GetType ( un ) <> unit_building then
4505: LD_VAR 0 2
4509: PPUSH
4510: CALL_OW 310
4514: PUSH
4515: LD_VAR 0 2
4519: PPUSH
4520: CALL_OW 247
4524: PUSH
4525: LD_INT 3
4527: NONEQUAL
4528: AND
4529: IFFALSE 4546
// un = IsInUnit ( un ) ;
4531: LD_ADDR_VAR 0 2
4535: PUSH
4536: LD_VAR 0 2
4540: PPUSH
4541: CALL_OW 310
4545: ST_TO_ADDR
// result = NearestUnitToUnit ( list , un ) ;
4546: LD_ADDR_VAR 0 3
4550: PUSH
4551: LD_VAR 0 1
4555: PPUSH
4556: LD_VAR 0 2
4560: PPUSH
4561: CALL_OW 74
4565: ST_TO_ADDR
// end ; end ;
4566: LD_VAR 0 3
4570: RET
// export function IsInArea2 ( jedn , un ) ; begin
4571: LD_INT 0
4573: PPUSH
// if not jedn or jedn = 0 then
4574: LD_VAR 0 1
4578: NOT
4579: PUSH
4580: LD_VAR 0 1
4584: PUSH
4585: LD_INT 0
4587: EQUAL
4588: OR
4589: IFFALSE 4601
// result = false else
4591: LD_ADDR_VAR 0 3
4595: PUSH
4596: LD_INT 0
4598: ST_TO_ADDR
4599: GO 4621
// result = IsInArea ( jedn , un ) ;
4601: LD_ADDR_VAR 0 3
4605: PUSH
4606: LD_VAR 0 1
4610: PPUSH
4611: LD_VAR 0 2
4615: PPUSH
4616: CALL_OW 308
4620: ST_TO_ADDR
// end ;
4621: LD_VAR 0 3
4625: RET
// export function See2 ( side , un ) ; var x , y ; begin
4626: LD_INT 0
4628: PPUSH
4629: PPUSH
4630: PPUSH
// if not IsPlaced ( un ) or side < 1 then
4631: LD_VAR 0 2
4635: PPUSH
4636: CALL_OW 305
4640: NOT
4641: PUSH
4642: LD_VAR 0 1
4646: PUSH
4647: LD_INT 1
4649: LESS
4650: OR
4651: IFFALSE 4663
// result = false else
4653: LD_ADDR_VAR 0 3
4657: PUSH
4658: LD_INT 0
4660: ST_TO_ADDR
4661: GO 4730
// begin x := GetX ( un ) ;
4663: LD_ADDR_VAR 0 4
4667: PUSH
4668: LD_VAR 0 2
4672: PPUSH
4673: CALL_OW 250
4677: ST_TO_ADDR
// y := GetY ( un ) ;
4678: LD_ADDR_VAR 0 5
4682: PUSH
4683: LD_VAR 0 2
4687: PPUSH
4688: CALL_OW 251
4692: ST_TO_ADDR
// if not un then
4693: LD_VAR 0 2
4697: NOT
4698: IFFALSE 4710
// result = false else
4700: LD_ADDR_VAR 0 3
4704: PUSH
4705: LD_INT 0
4707: ST_TO_ADDR
4708: GO 4730
// begin result = See ( side , un ) ;
4710: LD_ADDR_VAR 0 3
4714: PUSH
4715: LD_VAR 0 1
4719: PPUSH
4720: LD_VAR 0 2
4724: PPUSH
4725: CALL_OW 292
4729: ST_TO_ADDR
// end ; end ; end ;
4730: LD_VAR 0 3
4734: RET
// every 0 0$20 do var depot ;
4735: GO 4737
4737: DISABLE
4738: LD_INT 0
4740: PPUSH
// begin for depot in FilterAllUnits ( [ [ f_side , amik ] , [ f_ok ] , [ f_btype , b_warehouse ] ] ) do
4741: LD_ADDR_VAR 0 1
4745: PUSH
4746: LD_INT 22
4748: PUSH
4749: LD_EXP 19
4753: PUSH
4754: EMPTY
4755: LIST
4756: LIST
4757: PUSH
4758: LD_INT 50
4760: PUSH
4761: EMPTY
4762: LIST
4763: PUSH
4764: LD_INT 30
4766: PUSH
4767: LD_INT 1
4769: PUSH
4770: EMPTY
4771: LIST
4772: LIST
4773: PUSH
4774: EMPTY
4775: LIST
4776: LIST
4777: LIST
4778: PPUSH
4779: CALL_OW 69
4783: PUSH
4784: FOR_IN
4785: IFFALSE 4798
// SurovinyDoSkladu ( depot ) ;
4787: LD_VAR 0 1
4791: PPUSH
4792: CALL 4804 0 1
4796: GO 4784
4798: POP
4799: POP
// enable ;
4800: ENABLE
// end ;
4801: PPOPN 1
4803: END
// export function SurovinyDoSkladu ( sklad ) ; begin
4804: LD_INT 0
4806: PPUSH
// if GetSide ( sklad ) = you then
4807: LD_VAR 0 1
4811: PPUSH
4812: CALL_OW 255
4816: PUSH
4817: LD_EXP 18
4821: EQUAL
4822: IFFALSE 4826
// exit ;
4824: GO 4913
// if GetResourceType ( GetBase ( sklad ) , mat_cans ) < 200 then
4826: LD_VAR 0 1
4830: PPUSH
4831: CALL_OW 274
4835: PPUSH
4836: LD_INT 1
4838: PPUSH
4839: CALL_OW 275
4843: PUSH
4844: LD_INT 200
4846: LESS
4847: IFFALSE 4869
// AddResourceType ( GetBase ( sklad ) , mat_cans , 200 ) ;
4849: LD_VAR 0 1
4853: PPUSH
4854: CALL_OW 274
4858: PPUSH
4859: LD_INT 1
4861: PPUSH
4862: LD_INT 200
4864: PPUSH
4865: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_siberit ) < 80 then
4869: LD_VAR 0 1
4873: PPUSH
4874: CALL_OW 274
4878: PPUSH
4879: LD_INT 3
4881: PPUSH
4882: CALL_OW 275
4886: PUSH
4887: LD_INT 80
4889: LESS
4890: IFFALSE 4912
// AddResourceType ( GetBase ( sklad ) , mat_siberit , 100 ) ;
4892: LD_VAR 0 1
4896: PPUSH
4897: CALL_OW 274
4901: PPUSH
4902: LD_INT 3
4904: PPUSH
4905: LD_INT 100
4907: PPUSH
4908: CALL_OW 276
// enable ;
4912: ENABLE
// end ;
4913: LD_VAR 0 2
4917: RET
// every 0 0$0.4 trigger tick > 100 do
4918: LD_OWVAR 1
4922: PUSH
4923: LD_INT 100
4925: GREATER
4926: IFFALSE 4999
4928: GO 4930
4930: DISABLE
// begin AI_cast2 ( amik , StredniBazaExpanded ) ;
4931: LD_EXP 19
4935: PPUSH
4936: LD_INT 38
4938: PPUSH
4939: CALL 7299 0 2
// AI_cast2 ( amik , PravaBazaExpanded ) ;
4943: LD_EXP 19
4947: PPUSH
4948: LD_INT 36
4950: PPUSH
4951: CALL 7299 0 2
// Wait ( 0 0$1.1 ) ;
4955: LD_INT 39
4957: PPUSH
4958: CALL_OW 67
// AI_cast1 ( amik , StredniBazaExpanded ) ;
4962: LD_EXP 19
4966: PPUSH
4967: LD_INT 38
4969: PPUSH
4970: CALL 5065 0 2
// AI_cast1 ( amik , PravaBazaExpanded ) ;
4974: LD_EXP 19
4978: PPUSH
4979: LD_INT 36
4981: PPUSH
4982: CALL 5065 0 2
// AI_cast1 ( amik , PravaHorniBazaExpanded ) ;
4986: LD_EXP 19
4990: PPUSH
4991: LD_INT 34
4993: PPUSH
4994: CALL 5065 0 2
// enable ;
4998: ENABLE
// end ;
4999: END
// every 0 0$0.75 trigger tick > 100 do
5000: LD_OWVAR 1
5004: PUSH
5005: LD_INT 100
5007: GREATER
5008: IFFALSE 5064
5010: GO 5012
5012: DISABLE
// begin AI_cast2 ( amik , LevaBazaExpanded ) ;
5013: LD_EXP 19
5017: PPUSH
5018: LD_INT 32
5020: PPUSH
5021: CALL 7299 0 2
// Wait ( 0 0$0.4 ) ;
5025: LD_INT 14
5027: PPUSH
5028: CALL_OW 67
// AI_cast1 ( amik , LevaBazaExpanded ) ;
5032: LD_EXP 19
5036: PPUSH
5037: LD_INT 32
5039: PPUSH
5040: CALL 5065 0 2
// AI_cast2 ( amik , PravaHorniBazaExpanded ) ;
5044: LD_EXP 19
5048: PPUSH
5049: LD_INT 34
5051: PPUSH
5052: CALL 7299 0 2
// Wait ( 0 0$0.3 ) ;
5056: LD_INT 10
5058: PPUSH
5059: CALL_OW 67
// enable ;
5063: ENABLE
// end ;
5064: END
// function AI_cast1 ( strana , area ) ; var i , side , un , b , b_red , bedny , sklady , inzenyri , vojaci , bunkr , kasa , volne_bunkry , volne_kasy , jeraby , vehikly , dice , snipy , tmp ; begin
5065: LD_INT 0
5067: PPUSH
5068: PPUSH
5069: PPUSH
5070: PPUSH
5071: PPUSH
5072: PPUSH
5073: PPUSH
5074: PPUSH
5075: PPUSH
5076: PPUSH
5077: PPUSH
5078: PPUSH
5079: PPUSH
5080: PPUSH
5081: PPUSH
5082: PPUSH
5083: PPUSH
5084: PPUSH
5085: PPUSH
// side = strana ;
5086: LD_ADDR_VAR 0 5
5090: PUSH
5091: LD_VAR 0 1
5095: ST_TO_ADDR
// begin inzenyri = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_engineer ] ] ) diff obsazovac ;
5096: LD_ADDR_VAR 0 11
5100: PUSH
5101: LD_INT 95
5103: PUSH
5104: LD_VAR 0 2
5108: PUSH
5109: EMPTY
5110: LIST
5111: LIST
5112: PUSH
5113: LD_INT 50
5115: PUSH
5116: EMPTY
5117: LIST
5118: PUSH
5119: LD_INT 22
5121: PUSH
5122: LD_VAR 0 5
5126: PUSH
5127: EMPTY
5128: LIST
5129: LIST
5130: PUSH
5131: LD_INT 25
5133: PUSH
5134: LD_INT 2
5136: PUSH
5137: EMPTY
5138: LIST
5139: LIST
5140: PUSH
5141: EMPTY
5142: LIST
5143: LIST
5144: LIST
5145: LIST
5146: PPUSH
5147: CALL_OW 69
5151: PUSH
5152: LD_EXP 73
5156: DIFF
5157: ST_TO_ADDR
// b = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , hranice_budova_repair ] ] ] ) ;
5158: LD_ADDR_VAR 0 7
5162: PUSH
5163: LD_INT 95
5165: PUSH
5166: LD_VAR 0 2
5170: PUSH
5171: EMPTY
5172: LIST
5173: LIST
5174: PUSH
5175: LD_INT 52
5177: PUSH
5178: EMPTY
5179: LIST
5180: PUSH
5181: LD_INT 22
5183: PUSH
5184: LD_VAR 0 5
5188: PUSH
5189: EMPTY
5190: LIST
5191: LIST
5192: PUSH
5193: LD_INT 21
5195: PUSH
5196: LD_INT 3
5198: PUSH
5199: EMPTY
5200: LIST
5201: LIST
5202: PUSH
5203: LD_INT 3
5205: PUSH
5206: LD_INT 24
5208: PUSH
5209: LD_EXP 34
5213: PUSH
5214: EMPTY
5215: LIST
5216: LIST
5217: PUSH
5218: EMPTY
5219: LIST
5220: LIST
5221: PUSH
5222: EMPTY
5223: LIST
5224: LIST
5225: LIST
5226: LIST
5227: LIST
5228: PPUSH
5229: CALL_OW 69
5233: ST_TO_ADDR
// b_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
5234: LD_ADDR_VAR 0 8
5238: PUSH
5239: LD_INT 95
5241: PUSH
5242: LD_VAR 0 2
5246: PUSH
5247: EMPTY
5248: LIST
5249: LIST
5250: PUSH
5251: LD_INT 52
5253: PUSH
5254: EMPTY
5255: LIST
5256: PUSH
5257: LD_INT 22
5259: PUSH
5260: LD_VAR 0 5
5264: PUSH
5265: EMPTY
5266: LIST
5267: LIST
5268: PUSH
5269: LD_INT 21
5271: PUSH
5272: LD_INT 3
5274: PUSH
5275: EMPTY
5276: LIST
5277: LIST
5278: PUSH
5279: LD_INT 3
5281: PUSH
5282: LD_INT 24
5284: PUSH
5285: LD_INT 250
5287: PUSH
5288: EMPTY
5289: LIST
5290: LIST
5291: PUSH
5292: EMPTY
5293: LIST
5294: LIST
5295: PUSH
5296: EMPTY
5297: LIST
5298: LIST
5299: LIST
5300: LIST
5301: LIST
5302: PPUSH
5303: CALL_OW 69
5307: ST_TO_ADDR
// sklady = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
5308: LD_ADDR_VAR 0 10
5312: PUSH
5313: LD_INT 95
5315: PUSH
5316: LD_VAR 0 2
5320: PUSH
5321: EMPTY
5322: LIST
5323: LIST
5324: PUSH
5325: LD_INT 50
5327: PUSH
5328: EMPTY
5329: LIST
5330: PUSH
5331: LD_INT 22
5333: PUSH
5334: LD_VAR 0 5
5338: PUSH
5339: EMPTY
5340: LIST
5341: LIST
5342: PUSH
5343: LD_INT 2
5345: PUSH
5346: LD_INT 30
5348: PUSH
5349: LD_INT 0
5351: PUSH
5352: EMPTY
5353: LIST
5354: LIST
5355: PUSH
5356: LD_INT 30
5358: PUSH
5359: LD_INT 1
5361: PUSH
5362: EMPTY
5363: LIST
5364: LIST
5365: PUSH
5366: EMPTY
5367: LIST
5368: LIST
5369: LIST
5370: PUSH
5371: EMPTY
5372: LIST
5373: LIST
5374: LIST
5375: LIST
5376: PPUSH
5377: CALL_OW 69
5381: ST_TO_ADDR
// if inzenyri then
5382: LD_VAR 0 11
5386: IFFALSE 5922
// for un in inzenyri do
5388: LD_ADDR_VAR 0 6
5392: PUSH
5393: LD_VAR 0 11
5397: PUSH
5398: FOR_IN
5399: IFFALSE 5920
// begin if GetLives ( un ) < hranice_leceni_utek then
5401: LD_VAR 0 6
5405: PPUSH
5406: CALL_OW 256
5410: PUSH
5411: LD_EXP 33
5415: LESS
5416: IFFALSE 5429
// UtecDoNejblizsiHealOblasti ( un ) else
5418: LD_VAR 0 6
5422: PPUSH
5423: CALL 10570 0 1
5427: GO 5918
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
5429: LD_VAR 0 6
5433: PPUSH
5434: CALL_OW 256
5438: PUSH
5439: LD_INT 1000
5441: LESS
5442: PUSH
5443: LD_VAR 0 6
5447: PPUSH
5448: LD_VAR 0 6
5452: PPUSH
5453: CALL 9710 0 1
5457: PPUSH
5458: CALL 4571 0 2
5462: AND
5463: IFFALSE 5467
// else
5465: GO 5918
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
5467: LD_VAR 0 6
5471: PPUSH
5472: LD_VAR 0 6
5476: PPUSH
5477: CALL 9996 0 1
5481: PPUSH
5482: CALL_OW 299
5486: PUSH
5487: LD_INT 4
5489: GREATER
5490: IFFALSE 5513
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
5492: LD_VAR 0 6
5496: PPUSH
5497: LD_VAR 0 6
5501: PPUSH
5502: CALL 9853 0 1
5506: PPUSH
5507: CALL_OW 113
5511: GO 5918
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
5513: LD_VAR 0 8
5517: PUSH
5518: LD_VAR 0 6
5522: PPUSH
5523: LD_VAR 0 8
5527: PPUSH
5528: LD_VAR 0 6
5532: PPUSH
5533: CALL 4485 0 2
5537: PPUSH
5538: CALL_OW 296
5542: PUSH
5543: LD_EXP 32
5547: LESS
5548: AND
5549: IFFALSE 5592
// begin VyjdiVen ( un ) ;
5551: LD_VAR 0 6
5555: PPUSH
5556: CALL 4401 0 1
// if b_red then
5560: LD_VAR 0 8
5564: IFFALSE 5590
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
5566: LD_VAR 0 6
5570: PPUSH
5571: LD_VAR 0 8
5575: PPUSH
5576: LD_VAR 0 6
5580: PPUSH
5581: CALL 4485 0 2
5585: PPUSH
5586: CALL_OW 130
// end else
5590: GO 5918
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
5592: LD_VAR 0 7
5596: PUSH
5597: LD_VAR 0 6
5601: PPUSH
5602: LD_VAR 0 7
5606: PPUSH
5607: LD_VAR 0 6
5611: PPUSH
5612: CALL 4485 0 2
5616: PPUSH
5617: CALL_OW 296
5621: PUSH
5622: LD_EXP 32
5626: LESS
5627: AND
5628: IFFALSE 5671
// begin VyjdiVen ( un ) ;
5630: LD_VAR 0 6
5634: PPUSH
5635: CALL 4401 0 1
// if b then
5639: LD_VAR 0 7
5643: IFFALSE 5669
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
5645: LD_VAR 0 6
5649: PPUSH
5650: LD_VAR 0 7
5654: PPUSH
5655: LD_VAR 0 6
5659: PPUSH
5660: CALL 4485 0 2
5664: PPUSH
5665: CALL_OW 130
// end else
5669: GO 5918
// if GetListOfCratesInAreaBySide ( GetSide ( un ) , area ) then
5671: LD_VAR 0 6
5675: PPUSH
5676: CALL_OW 255
5680: PPUSH
5681: LD_VAR 0 2
5685: PPUSH
5686: CALL 11939 0 2
5690: IFFALSE 5790
// begin bedny = GetListOfCratesInAreaBySide ( GetSide ( un ) , area ) ;
5692: LD_ADDR_VAR 0 9
5696: PUSH
5697: LD_VAR 0 6
5701: PPUSH
5702: CALL_OW 255
5706: PPUSH
5707: LD_VAR 0 2
5711: PPUSH
5712: CALL 11939 0 2
5716: ST_TO_ADDR
// if GetDistUnitXY ( un , bedny [ 1 ] , bedny [ 2 ] ) < dist_max then
5717: LD_VAR 0 6
5721: PPUSH
5722: LD_VAR 0 9
5726: PUSH
5727: LD_INT 1
5729: ARRAY
5730: PPUSH
5731: LD_VAR 0 9
5735: PUSH
5736: LD_INT 2
5738: ARRAY
5739: PPUSH
5740: CALL_OW 297
5744: PUSH
5745: LD_EXP 32
5749: LESS
5750: IFFALSE 5788
// begin VyjdiVen ( un ) ;
5752: LD_VAR 0 6
5756: PPUSH
5757: CALL 4401 0 1
// ComCollect ( un , bedny [ 1 ] , bedny [ 2 ] ) ;
5761: LD_VAR 0 6
5765: PPUSH
5766: LD_VAR 0 9
5770: PUSH
5771: LD_INT 1
5773: ARRAY
5774: PPUSH
5775: LD_VAR 0 9
5779: PUSH
5780: LD_INT 2
5782: ARRAY
5783: PPUSH
5784: CALL_OW 117
// end ; end else
5788: GO 5918
// if not GetLives ( un ) = 1000 then
5790: LD_VAR 0 6
5794: PPUSH
5795: CALL_OW 256
5799: PUSH
5800: LD_INT 1000
5802: EQUAL
5803: NOT
5804: IFFALSE 5817
// UtecDoNejblizsiHealOblasti ( un ) else
5806: LD_VAR 0 6
5810: PPUSH
5811: CALL 10570 0 1
5815: GO 5918
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
5817: LD_VAR 0 6
5821: PPUSH
5822: CALL_OW 256
5826: PUSH
5827: LD_INT 1000
5829: EQUAL
5830: PUSH
5831: LD_VAR 0 6
5835: PPUSH
5836: CALL_OW 310
5840: PUSH
5841: LD_INT 0
5843: EQUAL
5844: AND
5845: IFFALSE 5918
// begin ComFree ( un ) ;
5847: LD_VAR 0 6
5851: PPUSH
5852: CALL_OW 139
// if sklady and GetDistUnits ( un , NearestUnitToUnit2 ( sklady , un ) ) < dist_max then
5856: LD_VAR 0 10
5860: PUSH
5861: LD_VAR 0 6
5865: PPUSH
5866: LD_VAR 0 10
5870: PPUSH
5871: LD_VAR 0 6
5875: PPUSH
5876: CALL 4485 0 2
5880: PPUSH
5881: CALL_OW 296
5885: PUSH
5886: LD_EXP 32
5890: LESS
5891: AND
5892: IFFALSE 5918
// ComEnterUnit ( un , NearestUnitToUnit2 ( sklady , un ) ) ;
5894: LD_VAR 0 6
5898: PPUSH
5899: LD_VAR 0 10
5903: PPUSH
5904: LD_VAR 0 6
5908: PPUSH
5909: CALL 4485 0 2
5913: PPUSH
5914: CALL_OW 120
// end ; end ;
5918: GO 5398
5920: POP
5921: POP
// jeraby = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , ru_crane ] ] ] ) ;
5922: LD_ADDR_VAR 0 17
5926: PUSH
5927: LD_INT 95
5929: PUSH
5930: LD_VAR 0 2
5934: PUSH
5935: EMPTY
5936: LIST
5937: LIST
5938: PUSH
5939: LD_INT 50
5941: PUSH
5942: EMPTY
5943: LIST
5944: PUSH
5945: LD_INT 22
5947: PUSH
5948: LD_VAR 0 5
5952: PUSH
5953: EMPTY
5954: LIST
5955: LIST
5956: PUSH
5957: LD_INT 2
5959: PUSH
5960: LD_INT 34
5962: PUSH
5963: LD_INT 13
5965: PUSH
5966: EMPTY
5967: LIST
5968: LIST
5969: PUSH
5970: LD_INT 34
5972: PUSH
5973: LD_INT 52
5975: PUSH
5976: EMPTY
5977: LIST
5978: LIST
5979: PUSH
5980: EMPTY
5981: LIST
5982: LIST
5983: LIST
5984: PUSH
5985: EMPTY
5986: LIST
5987: LIST
5988: LIST
5989: LIST
5990: PPUSH
5991: CALL_OW 69
5995: ST_TO_ADDR
// if jeraby then
5996: LD_VAR 0 17
6000: IFFALSE 6327
// for un in jeraby do
6002: LD_ADDR_VAR 0 6
6006: PUSH
6007: LD_VAR 0 17
6011: PUSH
6012: FOR_IN
6013: IFFALSE 6325
// begin if GetLives ( un ) < hranice_oprava_utek then
6015: LD_VAR 0 6
6019: PPUSH
6020: CALL_OW 256
6024: PUSH
6025: LD_EXP 35
6029: LESS
6030: IFFALSE 6043
// UtecDoNejblizsiRepairOblasti ( un ) else
6032: LD_VAR 0 6
6036: PPUSH
6037: CALL 10680 0 1
6041: GO 6323
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
6043: LD_VAR 0 6
6047: PPUSH
6048: CALL_OW 256
6052: PUSH
6053: LD_INT 1000
6055: LESS
6056: PUSH
6057: LD_VAR 0 6
6061: PPUSH
6062: LD_VAR 0 6
6066: PPUSH
6067: CALL 10139 0 1
6071: PPUSH
6072: CALL 4571 0 2
6076: AND
6077: IFFALSE 6081
// else
6079: GO 6323
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6081: LD_VAR 0 6
6085: PPUSH
6086: LD_VAR 0 6
6090: PPUSH
6091: CALL 9996 0 1
6095: PPUSH
6096: CALL_OW 299
6100: PUSH
6101: LD_INT 4
6103: GREATER
6104: IFFALSE 6127
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
6106: LD_VAR 0 6
6110: PPUSH
6111: LD_VAR 0 6
6115: PPUSH
6116: CALL 9996 0 1
6120: PPUSH
6121: CALL_OW 113
6125: GO 6323
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
6127: LD_VAR 0 8
6131: PUSH
6132: LD_VAR 0 6
6136: PPUSH
6137: LD_VAR 0 8
6141: PPUSH
6142: LD_VAR 0 6
6146: PPUSH
6147: CALL 4485 0 2
6151: PPUSH
6152: CALL_OW 296
6156: PUSH
6157: LD_EXP 32
6161: LESS
6162: AND
6163: IFFALSE 6206
// begin VyjdiVen ( un ) ;
6165: LD_VAR 0 6
6169: PPUSH
6170: CALL 4401 0 1
// if b_red then
6174: LD_VAR 0 8
6178: IFFALSE 6204
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
6180: LD_VAR 0 6
6184: PPUSH
6185: LD_VAR 0 8
6189: PPUSH
6190: LD_VAR 0 6
6194: PPUSH
6195: CALL 4485 0 2
6199: PPUSH
6200: CALL_OW 130
// end else
6204: GO 6323
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
6206: LD_VAR 0 7
6210: PUSH
6211: LD_VAR 0 6
6215: PPUSH
6216: LD_VAR 0 7
6220: PPUSH
6221: LD_VAR 0 6
6225: PPUSH
6226: CALL 4485 0 2
6230: PPUSH
6231: CALL_OW 296
6235: PUSH
6236: LD_EXP 32
6240: LESS
6241: AND
6242: IFFALSE 6285
// begin VyjdiVen ( un ) ;
6244: LD_VAR 0 6
6248: PPUSH
6249: CALL 4401 0 1
// if b then
6253: LD_VAR 0 7
6257: IFFALSE 6283
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
6259: LD_VAR 0 6
6263: PPUSH
6264: LD_VAR 0 7
6268: PPUSH
6269: LD_VAR 0 6
6273: PPUSH
6274: CALL 4485 0 2
6278: PPUSH
6279: CALL_OW 130
// end else
6283: GO 6323
// if not GetLives ( un ) > hranice_budova_repair then
6285: LD_VAR 0 6
6289: PPUSH
6290: CALL_OW 256
6294: PUSH
6295: LD_EXP 34
6299: GREATER
6300: NOT
6301: IFFALSE 6314
// UtecDoNejblizsiRepairOblasti ( un ) else
6303: LD_VAR 0 6
6307: PPUSH
6308: CALL 10680 0 1
6312: GO 6323
// UtecDoNejblizsiCarParkOblasti ( un ) ;
6314: LD_VAR 0 6
6318: PPUSH
6319: CALL 10628 0 1
// end ;
6323: GO 6012
6325: POP
6326: POP
// vojaci = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_outside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] , [ f_class , class_bazooker ] , [ f_class , class_mortar ] ] ] ) diff followsol1 diff followsol2 diff followsol3 ;
6327: LD_ADDR_VAR 0 12
6331: PUSH
6332: LD_INT 95
6334: PUSH
6335: LD_VAR 0 2
6339: PUSH
6340: EMPTY
6341: LIST
6342: LIST
6343: PUSH
6344: LD_INT 50
6346: PUSH
6347: EMPTY
6348: LIST
6349: PUSH
6350: LD_INT 22
6352: PUSH
6353: LD_VAR 0 5
6357: PUSH
6358: EMPTY
6359: LIST
6360: LIST
6361: PUSH
6362: LD_INT 56
6364: PUSH
6365: EMPTY
6366: LIST
6367: PUSH
6368: LD_INT 2
6370: PUSH
6371: LD_INT 25
6373: PUSH
6374: LD_INT 1
6376: PUSH
6377: EMPTY
6378: LIST
6379: LIST
6380: PUSH
6381: LD_INT 25
6383: PUSH
6384: LD_INT 5
6386: PUSH
6387: EMPTY
6388: LIST
6389: LIST
6390: PUSH
6391: LD_INT 25
6393: PUSH
6394: LD_INT 9
6396: PUSH
6397: EMPTY
6398: LIST
6399: LIST
6400: PUSH
6401: LD_INT 25
6403: PUSH
6404: LD_INT 8
6406: PUSH
6407: EMPTY
6408: LIST
6409: LIST
6410: PUSH
6411: EMPTY
6412: LIST
6413: LIST
6414: LIST
6415: LIST
6416: LIST
6417: PUSH
6418: EMPTY
6419: LIST
6420: LIST
6421: LIST
6422: LIST
6423: LIST
6424: PPUSH
6425: CALL_OW 69
6429: PUSH
6430: LD_EXP 74
6434: DIFF
6435: PUSH
6436: LD_EXP 75
6440: DIFF
6441: PUSH
6442: LD_EXP 76
6446: DIFF
6447: ST_TO_ADDR
// volne_bunkry = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
6448: LD_ADDR_VAR 0 15
6452: PUSH
6453: LD_INT 95
6455: PUSH
6456: LD_VAR 0 2
6460: PUSH
6461: EMPTY
6462: LIST
6463: LIST
6464: PUSH
6465: LD_INT 52
6467: PUSH
6468: EMPTY
6469: LIST
6470: PUSH
6471: LD_INT 3
6473: PUSH
6474: LD_INT 57
6476: PUSH
6477: EMPTY
6478: LIST
6479: PUSH
6480: EMPTY
6481: LIST
6482: LIST
6483: PUSH
6484: LD_INT 50
6486: PUSH
6487: EMPTY
6488: LIST
6489: PUSH
6490: LD_INT 22
6492: PUSH
6493: LD_VAR 0 5
6497: PUSH
6498: EMPTY
6499: LIST
6500: LIST
6501: PUSH
6502: LD_INT 58
6504: PUSH
6505: EMPTY
6506: LIST
6507: PUSH
6508: LD_INT 2
6510: PUSH
6511: LD_INT 30
6513: PUSH
6514: LD_INT 31
6516: PUSH
6517: EMPTY
6518: LIST
6519: LIST
6520: PUSH
6521: LD_INT 30
6523: PUSH
6524: LD_INT 32
6526: PUSH
6527: EMPTY
6528: LIST
6529: LIST
6530: PUSH
6531: EMPTY
6532: LIST
6533: LIST
6534: LIST
6535: PUSH
6536: EMPTY
6537: LIST
6538: LIST
6539: LIST
6540: LIST
6541: LIST
6542: LIST
6543: LIST
6544: PPUSH
6545: CALL_OW 69
6549: ST_TO_ADDR
// volne_kasy = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) ;
6550: LD_ADDR_VAR 0 16
6554: PUSH
6555: LD_INT 95
6557: PUSH
6558: LD_VAR 0 2
6562: PUSH
6563: EMPTY
6564: LIST
6565: LIST
6566: PUSH
6567: LD_INT 52
6569: PUSH
6570: EMPTY
6571: LIST
6572: PUSH
6573: LD_INT 3
6575: PUSH
6576: LD_INT 57
6578: PUSH
6579: EMPTY
6580: LIST
6581: PUSH
6582: EMPTY
6583: LIST
6584: LIST
6585: PUSH
6586: LD_INT 50
6588: PUSH
6589: EMPTY
6590: LIST
6591: PUSH
6592: LD_INT 22
6594: PUSH
6595: LD_VAR 0 5
6599: PUSH
6600: EMPTY
6601: LIST
6602: LIST
6603: PUSH
6604: LD_INT 2
6606: PUSH
6607: LD_INT 30
6609: PUSH
6610: LD_INT 4
6612: PUSH
6613: EMPTY
6614: LIST
6615: LIST
6616: PUSH
6617: LD_INT 30
6619: PUSH
6620: LD_INT 5
6622: PUSH
6623: EMPTY
6624: LIST
6625: LIST
6626: PUSH
6627: EMPTY
6628: LIST
6629: LIST
6630: LIST
6631: PUSH
6632: EMPTY
6633: LIST
6634: LIST
6635: LIST
6636: LIST
6637: LIST
6638: LIST
6639: PPUSH
6640: CALL_OW 69
6644: ST_TO_ADDR
// for i in volne_kasy do
6645: LD_ADDR_VAR 0 4
6649: PUSH
6650: LD_VAR 0 16
6654: PUSH
6655: FOR_IN
6656: IFFALSE 6691
// if UnitsInside ( i ) > 5 then
6658: LD_VAR 0 4
6662: PPUSH
6663: CALL_OW 313
6667: PUSH
6668: LD_INT 5
6670: GREATER
6671: IFFALSE 6689
// volne_kasy = volne_kasy diff i ;
6673: LD_ADDR_VAR 0 16
6677: PUSH
6678: LD_VAR 0 16
6682: PUSH
6683: LD_VAR 0 4
6687: DIFF
6688: ST_TO_ADDR
6689: GO 6655
6691: POP
6692: POP
// if vojaci then
6693: LD_VAR 0 12
6697: IFFALSE 7085
// for un in vojaci do
6699: LD_ADDR_VAR 0 6
6703: PUSH
6704: LD_VAR 0 12
6708: PUSH
6709: FOR_IN
6710: IFFALSE 7083
// begin if GetLives ( un ) < hranice_leceni_utek then
6712: LD_VAR 0 6
6716: PPUSH
6717: CALL_OW 256
6721: PUSH
6722: LD_EXP 33
6726: LESS
6727: IFFALSE 6740
// UtecDoNejblizsiHealOblasti ( un ) else
6729: LD_VAR 0 6
6733: PPUSH
6734: CALL 10570 0 1
6738: GO 7081
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
6740: LD_VAR 0 6
6744: PPUSH
6745: CALL_OW 256
6749: PUSH
6750: LD_INT 1000
6752: LESS
6753: PUSH
6754: LD_VAR 0 6
6758: PPUSH
6759: LD_VAR 0 6
6763: PPUSH
6764: CALL 9710 0 1
6768: PPUSH
6769: CALL 4571 0 2
6773: AND
6774: IFFALSE 6778
// else
6776: GO 7081
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6778: LD_VAR 0 6
6782: PPUSH
6783: LD_VAR 0 6
6787: PPUSH
6788: CALL 9996 0 1
6792: PPUSH
6793: CALL_OW 299
6797: PUSH
6798: LD_INT 4
6800: GREATER
6801: IFFALSE 6824
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
6803: LD_VAR 0 6
6807: PPUSH
6808: LD_VAR 0 6
6812: PPUSH
6813: CALL 9853 0 1
6817: PPUSH
6818: CALL_OW 113
6822: GO 7081
// if volne_bunkry then
6824: LD_VAR 0 15
6828: IFFALSE 6946
// begin for bunkr in volne_bunkry do
6830: LD_ADDR_VAR 0 13
6834: PUSH
6835: LD_VAR 0 15
6839: PUSH
6840: FOR_IN
6841: IFFALSE 6942
// begin if PocetJednotekCoJdouDoBudov ( vojaci ) = volne_bunkry + 0 then
6843: LD_VAR 0 12
6847: PPUSH
6848: CALL 10729 0 1
6852: PUSH
6853: LD_VAR 0 15
6857: PUSH
6858: LD_INT 0
6860: PLUS
6861: EQUAL
6862: IFFALSE 6866
// else
6864: GO 6940
// if GetDistUnits ( un , bunkr ) < dist_max and un = NejblizsiJednotkaCoNemaTask ( vojaci , bunkr ) then
6866: LD_VAR 0 6
6870: PPUSH
6871: LD_VAR 0 13
6875: PPUSH
6876: CALL_OW 296
6880: PUSH
6881: LD_EXP 32
6885: LESS
6886: PUSH
6887: LD_VAR 0 6
6891: PUSH
6892: LD_VAR 0 12
6896: PPUSH
6897: LD_VAR 0 13
6901: PPUSH
6902: CALL 10799 0 2
6906: EQUAL
6907: AND
6908: IFFALSE 6940
// begin ComEnterUnit ( un , bunkr ) ;
6910: LD_VAR 0 6
6914: PPUSH
6915: LD_VAR 0 13
6919: PPUSH
6920: CALL_OW 120
// volne_bunkry = volne_bunkry diff bunkr ;
6924: LD_ADDR_VAR 0 15
6928: PUSH
6929: LD_VAR 0 15
6933: PUSH
6934: LD_VAR 0 13
6938: DIFF
6939: ST_TO_ADDR
// end ; end ;
6940: GO 6840
6942: POP
6943: POP
// end else
6944: GO 7081
// if volne_kasy then
6946: LD_VAR 0 16
6950: IFFALSE 7044
// begin for kasa in volne_kasy do
6952: LD_ADDR_VAR 0 14
6956: PUSH
6957: LD_VAR 0 16
6961: PUSH
6962: FOR_IN
6963: IFFALSE 7040
// begin if UnitsInside ( kasa ) < 6 and un = NejblizsiJednotkaCoNemaTask ( vojaci , kasa ) and GetDistUnits ( un , kasa ) < dist_max then
6965: LD_VAR 0 14
6969: PPUSH
6970: CALL_OW 313
6974: PUSH
6975: LD_INT 6
6977: LESS
6978: PUSH
6979: LD_VAR 0 6
6983: PUSH
6984: LD_VAR 0 12
6988: PPUSH
6989: LD_VAR 0 14
6993: PPUSH
6994: CALL 10799 0 2
6998: EQUAL
6999: AND
7000: PUSH
7001: LD_VAR 0 6
7005: PPUSH
7006: LD_VAR 0 14
7010: PPUSH
7011: CALL_OW 296
7015: PUSH
7016: LD_EXP 32
7020: LESS
7021: AND
7022: IFFALSE 7038
// ComEnterUnit ( un , kasa ) ;
7024: LD_VAR 0 6
7028: PPUSH
7029: LD_VAR 0 14
7033: PPUSH
7034: CALL_OW 120
// end ;
7038: GO 6962
7040: POP
7041: POP
// end else
7042: GO 7081
// if not GetLives ( un ) = 1000 and not IsInUnit ( un ) then
7044: LD_VAR 0 6
7048: PPUSH
7049: CALL_OW 256
7053: PUSH
7054: LD_INT 1000
7056: EQUAL
7057: NOT
7058: PUSH
7059: LD_VAR 0 6
7063: PPUSH
7064: CALL_OW 310
7068: NOT
7069: AND
7070: IFFALSE 7081
// UtecDoNejblizsiHealOblasti ( un ) end ;
7072: LD_VAR 0 6
7076: PPUSH
7077: CALL 10570 0 1
7081: GO 6709
7083: POP
7084: POP
// vehikly = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ;
7085: LD_ADDR_VAR 0 18
7089: PUSH
7090: LD_INT 95
7092: PUSH
7093: LD_VAR 0 2
7097: PUSH
7098: EMPTY
7099: LIST
7100: LIST
7101: PUSH
7102: LD_INT 50
7104: PUSH
7105: EMPTY
7106: LIST
7107: PUSH
7108: LD_INT 22
7110: PUSH
7111: LD_VAR 0 5
7115: PUSH
7116: EMPTY
7117: LIST
7118: LIST
7119: PUSH
7120: LD_INT 21
7122: PUSH
7123: LD_INT 2
7125: PUSH
7126: EMPTY
7127: LIST
7128: LIST
7129: PUSH
7130: EMPTY
7131: LIST
7132: LIST
7133: LIST
7134: LIST
7135: PPUSH
7136: CALL_OW 69
7140: ST_TO_ADDR
// vehikly = vehikly diff FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) diff amik_attack_listL diff amik_attack_listTR diff amik_attack_listR ;
7141: LD_ADDR_VAR 0 18
7145: PUSH
7146: LD_VAR 0 18
7150: PUSH
7151: LD_INT 21
7153: PUSH
7154: LD_INT 2
7156: PUSH
7157: EMPTY
7158: LIST
7159: LIST
7160: PUSH
7161: LD_INT 34
7163: PUSH
7164: LD_INT 12
7166: PUSH
7167: EMPTY
7168: LIST
7169: LIST
7170: PUSH
7171: EMPTY
7172: LIST
7173: LIST
7174: PPUSH
7175: CALL_OW 69
7179: DIFF
7180: PUSH
7181: LD_EXP 20
7185: DIFF
7186: PUSH
7187: LD_EXP 21
7191: DIFF
7192: PUSH
7193: LD_EXP 22
7197: DIFF
7198: ST_TO_ADDR
// if vehikly then
7199: LD_VAR 0 18
7203: IFFALSE 7294
// for un in vehikly do
7205: LD_ADDR_VAR 0 6
7209: PUSH
7210: LD_VAR 0 18
7214: PUSH
7215: FOR_IN
7216: IFFALSE 7292
// begin if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7218: LD_VAR 0 6
7222: PPUSH
7223: LD_VAR 0 6
7227: PPUSH
7228: CALL 9996 0 1
7232: PPUSH
7233: CALL_OW 299
7237: PUSH
7238: LD_INT 4
7240: GREATER
7241: IFFALSE 7264
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
7243: LD_VAR 0 6
7247: PPUSH
7248: LD_VAR 0 6
7252: PPUSH
7253: CALL 9996 0 1
7257: PPUSH
7258: CALL_OW 113
7262: GO 7290
// if GetLives ( un ) < hranice_oprava_utek then
7264: LD_VAR 0 6
7268: PPUSH
7269: CALL_OW 256
7273: PUSH
7274: LD_EXP 35
7278: LESS
7279: IFFALSE 7290
// UtecDoNejblizsiRepairOblasti ( un ) end ;
7281: LD_VAR 0 6
7285: PPUSH
7286: CALL 10680 0 1
7290: GO 7215
7292: POP
7293: POP
// end ; end ;
7294: LD_VAR 0 3
7298: RET
// function AI_cast2 ( strana , area ) ; var i , side , un , labaky , tovarny , doktori , mechanici , lidi , lidi_red , auta , auta_red , jednotky_red , bazuky , nepritel , nepritel_red , dice , x , y , c , bude_space , nepritel_red_vehs , nekdo_jde_hackovat , nejblizsi_na_opravu , mpocit , dalkova_vez ; begin
7299: LD_INT 0
7301: PPUSH
7302: PPUSH
7303: PPUSH
7304: PPUSH
7305: PPUSH
7306: PPUSH
7307: PPUSH
7308: PPUSH
7309: PPUSH
7310: PPUSH
7311: PPUSH
7312: PPUSH
7313: PPUSH
7314: PPUSH
7315: PPUSH
7316: PPUSH
7317: PPUSH
7318: PPUSH
7319: PPUSH
7320: PPUSH
7321: PPUSH
7322: PPUSH
7323: PPUSH
7324: PPUSH
7325: PPUSH
7326: PPUSH
// DoBunkru ( strana , area ) ;
7327: LD_VAR 0 1
7331: PPUSH
7332: LD_VAR 0 2
7336: PPUSH
7337: CALL 9275 0 2
// side = strana ;
7341: LD_ADDR_VAR 0 5
7345: PUSH
7346: LD_VAR 0 1
7350: ST_TO_ADDR
// begin doktori = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_scientistic ] ] ) ;
7351: LD_ADDR_VAR 0 9
7355: PUSH
7356: LD_INT 95
7358: PUSH
7359: LD_VAR 0 2
7363: PUSH
7364: EMPTY
7365: LIST
7366: LIST
7367: PUSH
7368: LD_INT 50
7370: PUSH
7371: EMPTY
7372: LIST
7373: PUSH
7374: LD_INT 22
7376: PUSH
7377: LD_VAR 0 5
7381: PUSH
7382: EMPTY
7383: LIST
7384: LIST
7385: PUSH
7386: LD_INT 25
7388: PUSH
7389: LD_INT 4
7391: PUSH
7392: EMPTY
7393: LIST
7394: LIST
7395: PUSH
7396: EMPTY
7397: LIST
7398: LIST
7399: LIST
7400: LIST
7401: PPUSH
7402: CALL_OW 69
7406: ST_TO_ADDR
// lidi = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_outside ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
7407: LD_ADDR_VAR 0 11
7411: PUSH
7412: LD_INT 95
7414: PUSH
7415: LD_VAR 0 2
7419: PUSH
7420: EMPTY
7421: LIST
7422: LIST
7423: PUSH
7424: LD_INT 52
7426: PUSH
7427: EMPTY
7428: LIST
7429: PUSH
7430: LD_INT 22
7432: PUSH
7433: LD_VAR 0 5
7437: PUSH
7438: EMPTY
7439: LIST
7440: LIST
7441: PUSH
7442: LD_INT 21
7444: PUSH
7445: LD_INT 1
7447: PUSH
7448: EMPTY
7449: LIST
7450: LIST
7451: PUSH
7452: LD_INT 56
7454: PUSH
7455: EMPTY
7456: LIST
7457: PUSH
7458: LD_INT 3
7460: PUSH
7461: LD_INT 24
7463: PUSH
7464: LD_INT 1000
7466: PUSH
7467: EMPTY
7468: LIST
7469: LIST
7470: PUSH
7471: EMPTY
7472: LIST
7473: LIST
7474: PUSH
7475: EMPTY
7476: LIST
7477: LIST
7478: LIST
7479: LIST
7480: LIST
7481: LIST
7482: PPUSH
7483: CALL_OW 69
7487: ST_TO_ADDR
// lidi_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
7488: LD_ADDR_VAR 0 12
7492: PUSH
7493: LD_INT 95
7495: PUSH
7496: LD_VAR 0 2
7500: PUSH
7501: EMPTY
7502: LIST
7503: LIST
7504: PUSH
7505: LD_INT 52
7507: PUSH
7508: EMPTY
7509: LIST
7510: PUSH
7511: LD_INT 22
7513: PUSH
7514: LD_VAR 0 5
7518: PUSH
7519: EMPTY
7520: LIST
7521: LIST
7522: PUSH
7523: LD_INT 21
7525: PUSH
7526: LD_INT 1
7528: PUSH
7529: EMPTY
7530: LIST
7531: LIST
7532: PUSH
7533: LD_INT 3
7535: PUSH
7536: LD_INT 24
7538: PUSH
7539: LD_INT 250
7541: PUSH
7542: EMPTY
7543: LIST
7544: LIST
7545: PUSH
7546: EMPTY
7547: LIST
7548: LIST
7549: PUSH
7550: EMPTY
7551: LIST
7552: LIST
7553: LIST
7554: LIST
7555: LIST
7556: PPUSH
7557: CALL_OW 69
7561: ST_TO_ADDR
// labaky = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) ;
7562: LD_ADDR_VAR 0 7
7566: PUSH
7567: LD_INT 95
7569: PUSH
7570: LD_VAR 0 2
7574: PUSH
7575: EMPTY
7576: LIST
7577: LIST
7578: PUSH
7579: LD_INT 50
7581: PUSH
7582: EMPTY
7583: LIST
7584: PUSH
7585: LD_INT 22
7587: PUSH
7588: LD_VAR 0 5
7592: PUSH
7593: EMPTY
7594: LIST
7595: LIST
7596: PUSH
7597: LD_INT 2
7599: PUSH
7600: LD_INT 30
7602: PUSH
7603: LD_INT 6
7605: PUSH
7606: EMPTY
7607: LIST
7608: LIST
7609: PUSH
7610: LD_INT 30
7612: PUSH
7613: LD_INT 7
7615: PUSH
7616: EMPTY
7617: LIST
7618: LIST
7619: PUSH
7620: LD_INT 30
7622: PUSH
7623: LD_INT 8
7625: PUSH
7626: EMPTY
7627: LIST
7628: LIST
7629: PUSH
7630: EMPTY
7631: LIST
7632: LIST
7633: LIST
7634: LIST
7635: PUSH
7636: EMPTY
7637: LIST
7638: LIST
7639: LIST
7640: LIST
7641: PPUSH
7642: CALL_OW 69
7646: ST_TO_ADDR
// nepritel_red_vehs = FilterAllUnits ( [ [ f_not , [ f_lives , 250 ] ] , [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ;
7647: LD_ADDR_VAR 0 24
7651: PUSH
7652: LD_INT 3
7654: PUSH
7655: LD_INT 24
7657: PUSH
7658: LD_INT 250
7660: PUSH
7661: EMPTY
7662: LIST
7663: LIST
7664: PUSH
7665: EMPTY
7666: LIST
7667: LIST
7668: PUSH
7669: LD_INT 22
7671: PUSH
7672: LD_EXP 18
7676: PUSH
7677: EMPTY
7678: LIST
7679: LIST
7680: PUSH
7681: LD_INT 21
7683: PUSH
7684: LD_INT 2
7686: PUSH
7687: EMPTY
7688: LIST
7689: LIST
7690: PUSH
7691: EMPTY
7692: LIST
7693: LIST
7694: LIST
7695: PPUSH
7696: CALL_OW 69
7700: ST_TO_ADDR
// for i in labaky do
7701: LD_ADDR_VAR 0 4
7705: PUSH
7706: LD_VAR 0 7
7710: PUSH
7711: FOR_IN
7712: IFFALSE 7747
// if UnitsInside ( i ) > 5 then
7714: LD_VAR 0 4
7718: PPUSH
7719: CALL_OW 313
7723: PUSH
7724: LD_INT 5
7726: GREATER
7727: IFFALSE 7745
// labaky = labaky diff i ;
7729: LD_ADDR_VAR 0 7
7733: PUSH
7734: LD_VAR 0 7
7738: PUSH
7739: LD_VAR 0 4
7743: DIFF
7744: ST_TO_ADDR
7745: GO 7711
7747: POP
7748: POP
// if doktori then
7749: LD_VAR 0 9
7753: IFFALSE 8239
// for un in doktori do
7755: LD_ADDR_VAR 0 6
7759: PUSH
7760: LD_VAR 0 9
7764: PUSH
7765: FOR_IN
7766: IFFALSE 8237
// begin if GetLives ( un ) < hranice_leceni_utek then
7768: LD_VAR 0 6
7772: PPUSH
7773: CALL_OW 256
7777: PUSH
7778: LD_EXP 33
7782: LESS
7783: IFFALSE 7796
// UtecDoNejblizsiHealOblasti ( un ) else
7785: LD_VAR 0 6
7789: PPUSH
7790: CALL 10570 0 1
7794: GO 8235
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7796: LD_VAR 0 6
7800: PPUSH
7801: LD_VAR 0 6
7805: PPUSH
7806: CALL 9996 0 1
7810: PPUSH
7811: CALL_OW 299
7815: PUSH
7816: LD_INT 4
7818: GREATER
7819: IFFALSE 7842
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
7821: LD_VAR 0 6
7825: PPUSH
7826: LD_VAR 0 6
7830: PPUSH
7831: CALL 9853 0 1
7835: PPUSH
7836: CALL_OW 113
7840: GO 8235
// if lidi_red and IsInArea2 ( NearestUnitToUnit2 ( lidi_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( lidi_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi_red , un ) ) < dist_max then
7842: LD_VAR 0 12
7846: PUSH
7847: LD_VAR 0 12
7851: PPUSH
7852: LD_VAR 0 6
7856: PPUSH
7857: CALL 4485 0 2
7861: PPUSH
7862: LD_VAR 0 12
7866: PPUSH
7867: LD_VAR 0 6
7871: PPUSH
7872: CALL 4485 0 2
7876: PPUSH
7877: CALL 9996 0 1
7881: PPUSH
7882: CALL 4571 0 2
7886: AND
7887: PUSH
7888: LD_VAR 0 6
7892: PPUSH
7893: LD_VAR 0 12
7897: PPUSH
7898: LD_VAR 0 6
7902: PPUSH
7903: CALL 4485 0 2
7907: PPUSH
7908: CALL_OW 296
7912: PUSH
7913: LD_EXP 32
7917: LESS
7918: AND
7919: IFFALSE 7962
// begin VyjdiVen ( un ) ;
7921: LD_VAR 0 6
7925: PPUSH
7926: CALL 4401 0 1
// if lidi_red then
7930: LD_VAR 0 12
7934: IFFALSE 7960
// ComHeal ( un , NearestUnitToUnit2 ( lidi_red , un ) ) ;
7936: LD_VAR 0 6
7940: PPUSH
7941: LD_VAR 0 12
7945: PPUSH
7946: LD_VAR 0 6
7950: PPUSH
7951: CALL 4485 0 2
7955: PPUSH
7956: CALL_OW 128
// end else
7960: GO 8235
// if lidi and IsInArea2 ( NearestUnitToUnit2 ( lidi , un ) , NajdiNejblizsiHealAreaExpanded ( NearestUnitToUnit2 ( lidi , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi , un ) ) < dist_max then
7962: LD_VAR 0 11
7966: PUSH
7967: LD_VAR 0 11
7971: PPUSH
7972: LD_VAR 0 6
7976: PPUSH
7977: CALL 4485 0 2
7981: PPUSH
7982: LD_VAR 0 11
7986: PPUSH
7987: LD_VAR 0 6
7991: PPUSH
7992: CALL 4485 0 2
7996: PPUSH
7997: CALL 9853 0 1
8001: PPUSH
8002: CALL 4571 0 2
8006: AND
8007: PUSH
8008: LD_VAR 0 6
8012: PPUSH
8013: LD_VAR 0 11
8017: PPUSH
8018: LD_VAR 0 6
8022: PPUSH
8023: CALL 4485 0 2
8027: PPUSH
8028: CALL_OW 296
8032: PUSH
8033: LD_EXP 32
8037: LESS
8038: AND
8039: IFFALSE 8082
// begin VyjdiVen ( un ) ;
8041: LD_VAR 0 6
8045: PPUSH
8046: CALL 4401 0 1
// if lidi then
8050: LD_VAR 0 11
8054: IFFALSE 8080
// ComHeal ( un , NearestUnitToUnit2 ( lidi , un ) ) ;
8056: LD_VAR 0 6
8060: PPUSH
8061: LD_VAR 0 11
8065: PPUSH
8066: LD_VAR 0 6
8070: PPUSH
8071: CALL 4485 0 2
8075: PPUSH
8076: CALL_OW 128
// end else
8080: GO 8235
// if not GetLives ( un ) = 1000 then
8082: LD_VAR 0 6
8086: PPUSH
8087: CALL_OW 256
8091: PUSH
8092: LD_INT 1000
8094: EQUAL
8095: NOT
8096: IFFALSE 8109
// UtecDoNejblizsiHealOblasti ( un ) else
8098: LD_VAR 0 6
8102: PPUSH
8103: CALL 10570 0 1
8107: GO 8235
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
8109: LD_VAR 0 6
8113: PPUSH
8114: CALL_OW 256
8118: PUSH
8119: LD_INT 1000
8121: EQUAL
8122: PUSH
8123: LD_VAR 0 6
8127: PPUSH
8128: CALL_OW 310
8132: PUSH
8133: LD_INT 0
8135: EQUAL
8136: AND
8137: IFFALSE 8235
// begin ComFree ( un ) ;
8139: LD_VAR 0 6
8143: PPUSH
8144: CALL_OW 139
// if labaky and GetDistUnits ( un , NearestUnitToUnit2 ( labaky , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( labaky , un ) ) < 6 then
8148: LD_VAR 0 7
8152: PUSH
8153: LD_VAR 0 6
8157: PPUSH
8158: LD_VAR 0 7
8162: PPUSH
8163: LD_VAR 0 6
8167: PPUSH
8168: CALL 4485 0 2
8172: PPUSH
8173: CALL_OW 296
8177: PUSH
8178: LD_EXP 32
8182: LESS
8183: AND
8184: PUSH
8185: LD_VAR 0 7
8189: PPUSH
8190: LD_VAR 0 6
8194: PPUSH
8195: CALL 4485 0 2
8199: PPUSH
8200: CALL_OW 313
8204: PUSH
8205: LD_INT 6
8207: LESS
8208: AND
8209: IFFALSE 8235
// ComEnterUnit ( un , NearestUnitToUnit2 ( labaky , un ) ) ;
8211: LD_VAR 0 6
8215: PPUSH
8216: LD_VAR 0 7
8220: PPUSH
8221: LD_VAR 0 6
8225: PPUSH
8226: CALL 4485 0 2
8230: PPUSH
8231: CALL_OW 120
// end ; end ;
8235: GO 7765
8237: POP
8238: POP
// mechanici = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_mechanic ] ] ) ;
8239: LD_ADDR_VAR 0 10
8243: PUSH
8244: LD_INT 95
8246: PUSH
8247: LD_VAR 0 2
8251: PUSH
8252: EMPTY
8253: LIST
8254: LIST
8255: PUSH
8256: LD_INT 50
8258: PUSH
8259: EMPTY
8260: LIST
8261: PUSH
8262: LD_INT 22
8264: PUSH
8265: LD_VAR 0 5
8269: PUSH
8270: EMPTY
8271: LIST
8272: LIST
8273: PUSH
8274: LD_INT 25
8276: PUSH
8277: LD_INT 3
8279: PUSH
8280: EMPTY
8281: LIST
8282: LIST
8283: PUSH
8284: EMPTY
8285: LIST
8286: LIST
8287: LIST
8288: LIST
8289: PPUSH
8290: CALL_OW 69
8294: ST_TO_ADDR
// auta = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
8295: LD_ADDR_VAR 0 13
8299: PUSH
8300: LD_INT 95
8302: PUSH
8303: LD_VAR 0 2
8307: PUSH
8308: EMPTY
8309: LIST
8310: LIST
8311: PUSH
8312: LD_INT 52
8314: PUSH
8315: EMPTY
8316: LIST
8317: PUSH
8318: LD_INT 22
8320: PUSH
8321: LD_VAR 0 5
8325: PUSH
8326: EMPTY
8327: LIST
8328: LIST
8329: PUSH
8330: LD_INT 21
8332: PUSH
8333: LD_INT 2
8335: PUSH
8336: EMPTY
8337: LIST
8338: LIST
8339: PUSH
8340: LD_INT 3
8342: PUSH
8343: LD_INT 24
8345: PUSH
8346: LD_INT 1000
8348: PUSH
8349: EMPTY
8350: LIST
8351: LIST
8352: PUSH
8353: EMPTY
8354: LIST
8355: LIST
8356: PUSH
8357: EMPTY
8358: LIST
8359: LIST
8360: LIST
8361: LIST
8362: LIST
8363: PPUSH
8364: CALL_OW 69
8368: ST_TO_ADDR
// auta_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
8369: LD_ADDR_VAR 0 14
8373: PUSH
8374: LD_INT 95
8376: PUSH
8377: LD_VAR 0 2
8381: PUSH
8382: EMPTY
8383: LIST
8384: LIST
8385: PUSH
8386: LD_INT 52
8388: PUSH
8389: EMPTY
8390: LIST
8391: PUSH
8392: LD_INT 22
8394: PUSH
8395: LD_VAR 0 5
8399: PUSH
8400: EMPTY
8401: LIST
8402: LIST
8403: PUSH
8404: LD_INT 21
8406: PUSH
8407: LD_INT 2
8409: PUSH
8410: EMPTY
8411: LIST
8412: LIST
8413: PUSH
8414: LD_INT 3
8416: PUSH
8417: LD_INT 24
8419: PUSH
8420: LD_INT 250
8422: PUSH
8423: EMPTY
8424: LIST
8425: LIST
8426: PUSH
8427: EMPTY
8428: LIST
8429: LIST
8430: PUSH
8431: EMPTY
8432: LIST
8433: LIST
8434: LIST
8435: LIST
8436: LIST
8437: PPUSH
8438: CALL_OW 69
8442: ST_TO_ADDR
// tovarny = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) ;
8443: LD_ADDR_VAR 0 8
8447: PUSH
8448: LD_INT 95
8450: PUSH
8451: LD_VAR 0 2
8455: PUSH
8456: EMPTY
8457: LIST
8458: LIST
8459: PUSH
8460: LD_INT 50
8462: PUSH
8463: EMPTY
8464: LIST
8465: PUSH
8466: LD_INT 22
8468: PUSH
8469: LD_VAR 0 5
8473: PUSH
8474: EMPTY
8475: LIST
8476: LIST
8477: PUSH
8478: LD_INT 2
8480: PUSH
8481: LD_INT 30
8483: PUSH
8484: LD_INT 2
8486: PUSH
8487: EMPTY
8488: LIST
8489: LIST
8490: PUSH
8491: LD_INT 30
8493: PUSH
8494: LD_INT 3
8496: PUSH
8497: EMPTY
8498: LIST
8499: LIST
8500: PUSH
8501: EMPTY
8502: LIST
8503: LIST
8504: LIST
8505: PUSH
8506: EMPTY
8507: LIST
8508: LIST
8509: LIST
8510: LIST
8511: PPUSH
8512: CALL_OW 69
8516: ST_TO_ADDR
// dalkova_vez = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_btype , b_control_tower ] ] ) ;
8517: LD_ADDR_VAR 0 28
8521: PUSH
8522: LD_INT 95
8524: PUSH
8525: LD_VAR 0 2
8529: PUSH
8530: EMPTY
8531: LIST
8532: LIST
8533: PUSH
8534: LD_INT 50
8536: PUSH
8537: EMPTY
8538: LIST
8539: PUSH
8540: LD_INT 22
8542: PUSH
8543: LD_VAR 0 5
8547: PUSH
8548: EMPTY
8549: LIST
8550: LIST
8551: PUSH
8552: LD_INT 30
8554: PUSH
8555: LD_INT 36
8557: PUSH
8558: EMPTY
8559: LIST
8560: LIST
8561: PUSH
8562: EMPTY
8563: LIST
8564: LIST
8565: LIST
8566: LIST
8567: PPUSH
8568: CALL_OW 69
8572: ST_TO_ADDR
// for i in tovarny do
8573: LD_ADDR_VAR 0 4
8577: PUSH
8578: LD_VAR 0 8
8582: PUSH
8583: FOR_IN
8584: IFFALSE 8619
// if UnitsInside ( i ) > 5 then
8586: LD_VAR 0 4
8590: PPUSH
8591: CALL_OW 313
8595: PUSH
8596: LD_INT 5
8598: GREATER
8599: IFFALSE 8617
// tovarny = tovarny diff i ;
8601: LD_ADDR_VAR 0 8
8605: PUSH
8606: LD_VAR 0 8
8610: PUSH
8611: LD_VAR 0 4
8615: DIFF
8616: ST_TO_ADDR
8617: GO 8583
8619: POP
8620: POP
// if mechanici then
8621: LD_VAR 0 10
8625: IFFALSE 9270
// for un in mechanici do
8627: LD_ADDR_VAR 0 6
8631: PUSH
8632: LD_VAR 0 10
8636: PUSH
8637: FOR_IN
8638: IFFALSE 9268
// begin if not GetBType ( IsInUnit ( un ) ) = b_control_tower then
8640: LD_VAR 0 6
8644: PPUSH
8645: CALL_OW 310
8649: PPUSH
8650: CALL_OW 266
8654: PUSH
8655: LD_INT 36
8657: EQUAL
8658: NOT
8659: IFFALSE 9266
// begin if GetLives ( un ) < hranice_leceni_utek then
8661: LD_VAR 0 6
8665: PPUSH
8666: CALL_OW 256
8670: PUSH
8671: LD_EXP 33
8675: LESS
8676: IFFALSE 8689
// UtecDoNejblizsiHealOblasti ( un ) else
8678: LD_VAR 0 6
8682: PPUSH
8683: CALL 10570 0 1
8687: GO 9266
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
8689: LD_VAR 0 6
8693: PPUSH
8694: CALL_OW 256
8698: PUSH
8699: LD_INT 1000
8701: LESS
8702: PUSH
8703: LD_VAR 0 6
8707: PPUSH
8708: LD_VAR 0 6
8712: PPUSH
8713: CALL 9710 0 1
8717: PPUSH
8718: CALL 4571 0 2
8722: AND
8723: IFFALSE 8727
// else
8725: GO 9266
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
8727: LD_VAR 0 6
8731: PPUSH
8732: LD_VAR 0 6
8736: PPUSH
8737: CALL 9996 0 1
8741: PPUSH
8742: CALL_OW 299
8746: PUSH
8747: LD_INT 4
8749: GREATER
8750: IFFALSE 8773
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
8752: LD_VAR 0 6
8756: PPUSH
8757: LD_VAR 0 6
8761: PPUSH
8762: CALL 9853 0 1
8766: PPUSH
8767: CALL_OW 113
8771: GO 9266
// if auta_red and MuzeJitOpravovatCerveny ( un ) and IsInArea2 ( NearestUnitToUnit2 ( auta_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( auta_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta_red , un ) ) < dist_max then
8773: LD_VAR 0 14
8777: PUSH
8778: LD_VAR 0 6
8782: PPUSH
8783: CALL 10888 0 1
8787: AND
8788: PUSH
8789: LD_VAR 0 14
8793: PPUSH
8794: LD_VAR 0 6
8798: PPUSH
8799: CALL 4485 0 2
8803: PPUSH
8804: LD_VAR 0 14
8808: PPUSH
8809: LD_VAR 0 6
8813: PPUSH
8814: CALL 4485 0 2
8818: PPUSH
8819: CALL 9996 0 1
8823: PPUSH
8824: CALL 4571 0 2
8828: AND
8829: PUSH
8830: LD_VAR 0 6
8834: PPUSH
8835: LD_VAR 0 14
8839: PPUSH
8840: LD_VAR 0 6
8844: PPUSH
8845: CALL 4485 0 2
8849: PPUSH
8850: CALL_OW 296
8854: PUSH
8855: LD_EXP 32
8859: LESS
8860: AND
8861: IFFALSE 8904
// begin VyjdiVen ( un ) ;
8863: LD_VAR 0 6
8867: PPUSH
8868: CALL 4401 0 1
// if auta_red then
8872: LD_VAR 0 14
8876: IFFALSE 8902
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta_red , un ) ) ;
8878: LD_VAR 0 6
8882: PPUSH
8883: LD_VAR 0 14
8887: PPUSH
8888: LD_VAR 0 6
8892: PPUSH
8893: CALL 4485 0 2
8897: PPUSH
8898: CALL_OW 129
// end else
8902: GO 9266
// if auta and IsInArea2 ( NearestUnitToUnit2 ( auta , un ) , NajdiNejblizsiRepairAreaExpanded ( NearestUnitToUnit2 ( auta , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta , un ) ) < dist_max then
8904: LD_VAR 0 13
8908: PUSH
8909: LD_VAR 0 13
8913: PPUSH
8914: LD_VAR 0 6
8918: PPUSH
8919: CALL 4485 0 2
8923: PPUSH
8924: LD_VAR 0 13
8928: PPUSH
8929: LD_VAR 0 6
8933: PPUSH
8934: CALL 4485 0 2
8938: PPUSH
8939: CALL 10282 0 1
8943: PPUSH
8944: CALL 4571 0 2
8948: AND
8949: PUSH
8950: LD_VAR 0 6
8954: PPUSH
8955: LD_VAR 0 13
8959: PPUSH
8960: LD_VAR 0 6
8964: PPUSH
8965: CALL 4485 0 2
8969: PPUSH
8970: CALL_OW 296
8974: PUSH
8975: LD_EXP 32
8979: LESS
8980: AND
8981: IFFALSE 9024
// begin VyjdiVen ( un ) ;
8983: LD_VAR 0 6
8987: PPUSH
8988: CALL 4401 0 1
// if auta then
8992: LD_VAR 0 13
8996: IFFALSE 9022
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta , un ) ) ;
8998: LD_VAR 0 6
9002: PPUSH
9003: LD_VAR 0 13
9007: PPUSH
9008: LD_VAR 0 6
9012: PPUSH
9013: CALL 4485 0 2
9017: PPUSH
9018: CALL_OW 129
// end else
9022: GO 9266
// if not GetLives ( un ) = 1000 then
9024: LD_VAR 0 6
9028: PPUSH
9029: CALL_OW 256
9033: PUSH
9034: LD_INT 1000
9036: EQUAL
9037: NOT
9038: IFFALSE 9051
// UtecDoNejblizsiHealOblasti ( un ) else
9040: LD_VAR 0 6
9044: PPUSH
9045: CALL 10570 0 1
9049: GO 9266
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
9051: LD_VAR 0 6
9055: PPUSH
9056: CALL_OW 256
9060: PUSH
9061: LD_INT 1000
9063: EQUAL
9064: PUSH
9065: LD_VAR 0 6
9069: PPUSH
9070: CALL_OW 310
9074: PUSH
9075: LD_INT 0
9077: EQUAL
9078: AND
9079: IFFALSE 9266
// begin ComFree ( un ) ;
9081: LD_VAR 0 6
9085: PPUSH
9086: CALL_OW 139
// if dalkova_vez and GetDistUnits ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( dalkova_vez , un ) ) < 3 then
9090: LD_VAR 0 28
9094: PUSH
9095: LD_VAR 0 6
9099: PPUSH
9100: LD_VAR 0 28
9104: PPUSH
9105: LD_VAR 0 6
9109: PPUSH
9110: CALL 4485 0 2
9114: PPUSH
9115: CALL_OW 296
9119: PUSH
9120: LD_EXP 32
9124: LESS
9125: AND
9126: PUSH
9127: LD_VAR 0 28
9131: PPUSH
9132: LD_VAR 0 6
9136: PPUSH
9137: CALL 4485 0 2
9141: PPUSH
9142: CALL_OW 313
9146: PUSH
9147: LD_INT 3
9149: LESS
9150: AND
9151: IFFALSE 9179
// ComEnterUnit ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) else
9153: LD_VAR 0 6
9157: PPUSH
9158: LD_VAR 0 28
9162: PPUSH
9163: LD_VAR 0 6
9167: PPUSH
9168: CALL 4485 0 2
9172: PPUSH
9173: CALL_OW 120
9177: GO 9266
// if tovarny and GetDistUnits ( un , NearestUnitToUnit2 ( tovarny , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( tovarny , un ) ) < 6 then
9179: LD_VAR 0 8
9183: PUSH
9184: LD_VAR 0 6
9188: PPUSH
9189: LD_VAR 0 8
9193: PPUSH
9194: LD_VAR 0 6
9198: PPUSH
9199: CALL 4485 0 2
9203: PPUSH
9204: CALL_OW 296
9208: PUSH
9209: LD_EXP 32
9213: LESS
9214: AND
9215: PUSH
9216: LD_VAR 0 8
9220: PPUSH
9221: LD_VAR 0 6
9225: PPUSH
9226: CALL 4485 0 2
9230: PPUSH
9231: CALL_OW 313
9235: PUSH
9236: LD_INT 6
9238: LESS
9239: AND
9240: IFFALSE 9266
// ComEnterUnit ( un , NearestUnitToUnit2 ( tovarny , un ) ) ;
9242: LD_VAR 0 6
9246: PPUSH
9247: LD_VAR 0 8
9251: PPUSH
9252: LD_VAR 0 6
9256: PPUSH
9257: CALL 4485 0 2
9261: PPUSH
9262: CALL_OW 120
// end ; end ; end ;
9266: GO 8637
9268: POP
9269: POP
// end ; end ;
9270: LD_VAR 0 3
9274: RET
// var poslednitick ; function DoBunkru ( side , area ) ; var vojaci , vojaciout , volne_bunkry , kasy , cl ; begin
9275: LD_INT 0
9277: PPUSH
9278: PPUSH
9279: PPUSH
9280: PPUSH
9281: PPUSH
9282: PPUSH
// if not poslednitick then
9283: LD_LOC 1
9287: NOT
9288: IFFALSE 9300
// poslednitick = tick ;
9290: LD_ADDR_LOC 1
9294: PUSH
9295: LD_OWVAR 1
9299: ST_TO_ADDR
// if tick > poslednitick + 100 then
9300: LD_OWVAR 1
9304: PUSH
9305: LD_LOC 1
9309: PUSH
9310: LD_INT 100
9312: PLUS
9313: GREATER
9314: IFFALSE 9705
// begin vojaciout = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_outside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] , [ f_class , class_bazooker ] , [ f_class , class_mortar ] ] ] ) ;
9316: LD_ADDR_VAR 0 5
9320: PUSH
9321: LD_INT 95
9323: PUSH
9324: LD_VAR 0 2
9328: PUSH
9329: EMPTY
9330: LIST
9331: LIST
9332: PUSH
9333: LD_INT 50
9335: PUSH
9336: EMPTY
9337: LIST
9338: PUSH
9339: LD_INT 22
9341: PUSH
9342: LD_VAR 0 1
9346: PUSH
9347: EMPTY
9348: LIST
9349: LIST
9350: PUSH
9351: LD_INT 56
9353: PUSH
9354: EMPTY
9355: LIST
9356: PUSH
9357: LD_INT 2
9359: PUSH
9360: LD_INT 25
9362: PUSH
9363: LD_INT 1
9365: PUSH
9366: EMPTY
9367: LIST
9368: LIST
9369: PUSH
9370: LD_INT 25
9372: PUSH
9373: LD_INT 5
9375: PUSH
9376: EMPTY
9377: LIST
9378: LIST
9379: PUSH
9380: LD_INT 25
9382: PUSH
9383: LD_INT 9
9385: PUSH
9386: EMPTY
9387: LIST
9388: LIST
9389: PUSH
9390: LD_INT 25
9392: PUSH
9393: LD_INT 8
9395: PUSH
9396: EMPTY
9397: LIST
9398: LIST
9399: PUSH
9400: EMPTY
9401: LIST
9402: LIST
9403: LIST
9404: LIST
9405: LIST
9406: PUSH
9407: EMPTY
9408: LIST
9409: LIST
9410: LIST
9411: LIST
9412: LIST
9413: PPUSH
9414: CALL_OW 69
9418: ST_TO_ADDR
// volne_bunkry = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
9419: LD_ADDR_VAR 0 6
9423: PUSH
9424: LD_INT 95
9426: PUSH
9427: LD_VAR 0 2
9431: PUSH
9432: EMPTY
9433: LIST
9434: LIST
9435: PUSH
9436: LD_INT 52
9438: PUSH
9439: EMPTY
9440: LIST
9441: PUSH
9442: LD_INT 3
9444: PUSH
9445: LD_INT 57
9447: PUSH
9448: EMPTY
9449: LIST
9450: PUSH
9451: EMPTY
9452: LIST
9453: LIST
9454: PUSH
9455: LD_INT 50
9457: PUSH
9458: EMPTY
9459: LIST
9460: PUSH
9461: LD_INT 22
9463: PUSH
9464: LD_VAR 0 1
9468: PUSH
9469: EMPTY
9470: LIST
9471: LIST
9472: PUSH
9473: LD_INT 58
9475: PUSH
9476: EMPTY
9477: LIST
9478: PUSH
9479: LD_INT 2
9481: PUSH
9482: LD_INT 30
9484: PUSH
9485: LD_INT 31
9487: PUSH
9488: EMPTY
9489: LIST
9490: LIST
9491: PUSH
9492: LD_INT 30
9494: PUSH
9495: LD_INT 32
9497: PUSH
9498: EMPTY
9499: LIST
9500: LIST
9501: PUSH
9502: EMPTY
9503: LIST
9504: LIST
9505: LIST
9506: PUSH
9507: EMPTY
9508: LIST
9509: LIST
9510: LIST
9511: LIST
9512: LIST
9513: LIST
9514: LIST
9515: PPUSH
9516: CALL_OW 69
9520: ST_TO_ADDR
// kasy = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_not , [ f_empty ] ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) ;
9521: LD_ADDR_VAR 0 7
9525: PUSH
9526: LD_INT 95
9528: PUSH
9529: LD_VAR 0 2
9533: PUSH
9534: EMPTY
9535: LIST
9536: LIST
9537: PUSH
9538: LD_INT 52
9540: PUSH
9541: EMPTY
9542: LIST
9543: PUSH
9544: LD_INT 3
9546: PUSH
9547: LD_INT 57
9549: PUSH
9550: EMPTY
9551: LIST
9552: PUSH
9553: EMPTY
9554: LIST
9555: LIST
9556: PUSH
9557: LD_INT 3
9559: PUSH
9560: LD_INT 58
9562: PUSH
9563: EMPTY
9564: LIST
9565: PUSH
9566: EMPTY
9567: LIST
9568: LIST
9569: PUSH
9570: LD_INT 50
9572: PUSH
9573: EMPTY
9574: LIST
9575: PUSH
9576: LD_INT 22
9578: PUSH
9579: LD_VAR 0 1
9583: PUSH
9584: EMPTY
9585: LIST
9586: LIST
9587: PUSH
9588: LD_INT 2
9590: PUSH
9591: LD_INT 30
9593: PUSH
9594: LD_INT 4
9596: PUSH
9597: EMPTY
9598: LIST
9599: LIST
9600: PUSH
9601: LD_INT 30
9603: PUSH
9604: LD_INT 5
9606: PUSH
9607: EMPTY
9608: LIST
9609: LIST
9610: PUSH
9611: EMPTY
9612: LIST
9613: LIST
9614: LIST
9615: PUSH
9616: EMPTY
9617: LIST
9618: LIST
9619: LIST
9620: LIST
9621: LIST
9622: LIST
9623: LIST
9624: PPUSH
9625: CALL_OW 69
9629: ST_TO_ADDR
// if volne_bunkry and kasy and not vojaciout then
9630: LD_VAR 0 6
9634: PUSH
9635: LD_VAR 0 7
9639: AND
9640: PUSH
9641: LD_VAR 0 5
9645: NOT
9646: AND
9647: IFFALSE 9705
// begin cl = UnitsInside ( kasy [ 1 ] ) [ 1 ] ;
9649: LD_ADDR_VAR 0 8
9653: PUSH
9654: LD_VAR 0 7
9658: PUSH
9659: LD_INT 1
9661: ARRAY
9662: PPUSH
9663: CALL_OW 313
9667: PUSH
9668: LD_INT 1
9670: ARRAY
9671: ST_TO_ADDR
// if cl then
9672: LD_VAR 0 8
9676: IFFALSE 9705
// begin VyjdiVen ( cl ) ;
9678: LD_VAR 0 8
9682: PPUSH
9683: CALL 4401 0 1
// ComEnterUnit ( cl , volne_bunkry [ 1 ] ) ;
9687: LD_VAR 0 8
9691: PPUSH
9692: LD_VAR 0 6
9696: PUSH
9697: LD_INT 1
9699: ARRAY
9700: PPUSH
9701: CALL_OW 120
// end ; end ; end ; end ;
9705: LD_VAR 0 3
9709: RET
// export function NajdiNejblizsiHealArea ( un ) ; begin
9710: LD_INT 0
9712: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 27 , 21 ] :
9713: LD_EXP 36
9717: PPUSH
9718: LD_VAR 0 1
9722: PPUSH
9723: CALL_OW 250
9727: PPUSH
9728: LD_VAR 0 1
9732: PPUSH
9733: CALL_OW 251
9737: PPUSH
9738: CALL_OW 439
9742: PUSH
9743: LD_INT 27
9745: PUSH
9746: LD_INT 21
9748: PUSH
9749: EMPTY
9750: LIST
9751: LIST
9752: DOUBLE
9753: EQUAL
9754: IFTRUE 9758
9756: GO 9769
9758: POP
// result = LevaLeceni ; [ 114 , 17 ] :
9759: LD_ADDR_VAR 0 2
9763: PUSH
9764: LD_INT 19
9766: ST_TO_ADDR
9767: GO 9848
9769: LD_INT 114
9771: PUSH
9772: LD_INT 17
9774: PUSH
9775: EMPTY
9776: LIST
9777: LIST
9778: DOUBLE
9779: EQUAL
9780: IFTRUE 9784
9782: GO 9795
9784: POP
// result = PravaHorniLeceni ; [ 148 , 74 ] :
9785: LD_ADDR_VAR 0 2
9789: PUSH
9790: LD_INT 21
9792: ST_TO_ADDR
9793: GO 9848
9795: LD_INT 148
9797: PUSH
9798: LD_INT 74
9800: PUSH
9801: EMPTY
9802: LIST
9803: LIST
9804: DOUBLE
9805: EQUAL
9806: IFTRUE 9810
9808: GO 9821
9810: POP
// result = PravaLeceni ; [ 86 , 68 ] :
9811: LD_ADDR_VAR 0 2
9815: PUSH
9816: LD_INT 23
9818: ST_TO_ADDR
9819: GO 9848
9821: LD_INT 86
9823: PUSH
9824: LD_INT 68
9826: PUSH
9827: EMPTY
9828: LIST
9829: LIST
9830: DOUBLE
9831: EQUAL
9832: IFTRUE 9836
9834: GO 9847
9836: POP
// result = StredniBaza ; end ;
9837: LD_ADDR_VAR 0 2
9841: PUSH
9842: LD_INT 37
9844: ST_TO_ADDR
9845: GO 9848
9847: POP
// end ;
9848: LD_VAR 0 2
9852: RET
// export function NajdiNejblizsiHealAreaExpanded ( un ) ; begin
9853: LD_INT 0
9855: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 27 , 21 ] :
9856: LD_EXP 36
9860: PPUSH
9861: LD_VAR 0 1
9865: PPUSH
9866: CALL_OW 250
9870: PPUSH
9871: LD_VAR 0 1
9875: PPUSH
9876: CALL_OW 251
9880: PPUSH
9881: CALL_OW 439
9885: PUSH
9886: LD_INT 27
9888: PUSH
9889: LD_INT 21
9891: PUSH
9892: EMPTY
9893: LIST
9894: LIST
9895: DOUBLE
9896: EQUAL
9897: IFTRUE 9901
9899: GO 9912
9901: POP
// result = LevaLeceniExpanded ; [ 114 , 17 ] :
9902: LD_ADDR_VAR 0 2
9906: PUSH
9907: LD_INT 20
9909: ST_TO_ADDR
9910: GO 9991
9912: LD_INT 114
9914: PUSH
9915: LD_INT 17
9917: PUSH
9918: EMPTY
9919: LIST
9920: LIST
9921: DOUBLE
9922: EQUAL
9923: IFTRUE 9927
9925: GO 9938
9927: POP
// result = PravaHorniLeceniExpanded ; [ 148 , 74 ] :
9928: LD_ADDR_VAR 0 2
9932: PUSH
9933: LD_INT 22
9935: ST_TO_ADDR
9936: GO 9991
9938: LD_INT 148
9940: PUSH
9941: LD_INT 74
9943: PUSH
9944: EMPTY
9945: LIST
9946: LIST
9947: DOUBLE
9948: EQUAL
9949: IFTRUE 9953
9951: GO 9964
9953: POP
// result = PravaLeceniExpanded ; [ 86 , 68 ] :
9954: LD_ADDR_VAR 0 2
9958: PUSH
9959: LD_INT 24
9961: ST_TO_ADDR
9962: GO 9991
9964: LD_INT 86
9966: PUSH
9967: LD_INT 68
9969: PUSH
9970: EMPTY
9971: LIST
9972: LIST
9973: DOUBLE
9974: EQUAL
9975: IFTRUE 9979
9977: GO 9990
9979: POP
// result = StredniBaza ; end ;
9980: LD_ADDR_VAR 0 2
9984: PUSH
9985: LD_INT 37
9987: ST_TO_ADDR
9988: GO 9991
9990: POP
// end ;
9991: LD_VAR 0 2
9995: RET
// export function NajdiNejblizsiBaseArea ( un ) ; begin
9996: LD_INT 0
9998: PPUSH
// case FindNearestPoint ( stredy_baz , GetX ( un ) , GetY ( un ) ) of [ 30 , 18 ] :
9999: LD_EXP 38
10003: PPUSH
10004: LD_VAR 0 1
10008: PPUSH
10009: CALL_OW 250
10013: PPUSH
10014: LD_VAR 0 1
10018: PPUSH
10019: CALL_OW 251
10023: PPUSH
10024: CALL_OW 439
10028: PUSH
10029: LD_INT 30
10031: PUSH
10032: LD_INT 18
10034: PUSH
10035: EMPTY
10036: LIST
10037: LIST
10038: DOUBLE
10039: EQUAL
10040: IFTRUE 10044
10042: GO 10055
10044: POP
// result = LevaBaza ; [ 111 , 18 ] :
10045: LD_ADDR_VAR 0 2
10049: PUSH
10050: LD_INT 31
10052: ST_TO_ADDR
10053: GO 10134
10055: LD_INT 111
10057: PUSH
10058: LD_INT 18
10060: PUSH
10061: EMPTY
10062: LIST
10063: LIST
10064: DOUBLE
10065: EQUAL
10066: IFTRUE 10070
10068: GO 10081
10070: POP
// result = PravaHorniBaza ; [ 150 , 73 ] :
10071: LD_ADDR_VAR 0 2
10075: PUSH
10076: LD_INT 33
10078: ST_TO_ADDR
10079: GO 10134
10081: LD_INT 150
10083: PUSH
10084: LD_INT 73
10086: PUSH
10087: EMPTY
10088: LIST
10089: LIST
10090: DOUBLE
10091: EQUAL
10092: IFTRUE 10096
10094: GO 10107
10096: POP
// result = PravaBaza ; [ 86 , 68 ] :
10097: LD_ADDR_VAR 0 2
10101: PUSH
10102: LD_INT 35
10104: ST_TO_ADDR
10105: GO 10134
10107: LD_INT 86
10109: PUSH
10110: LD_INT 68
10112: PUSH
10113: EMPTY
10114: LIST
10115: LIST
10116: DOUBLE
10117: EQUAL
10118: IFTRUE 10122
10120: GO 10133
10122: POP
// result = StredniBaza ; end ;
10123: LD_ADDR_VAR 0 2
10127: PUSH
10128: LD_INT 37
10130: ST_TO_ADDR
10131: GO 10134
10133: POP
// end ;
10134: LD_VAR 0 2
10138: RET
// export function NajdiNejblizsiRepairArea ( un ) ; begin
10139: LD_INT 0
10141: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 18 , 11 ] :
10142: LD_EXP 37
10146: PPUSH
10147: LD_VAR 0 1
10151: PPUSH
10152: CALL_OW 250
10156: PPUSH
10157: LD_VAR 0 1
10161: PPUSH
10162: CALL_OW 251
10166: PPUSH
10167: CALL_OW 439
10171: PUSH
10172: LD_INT 18
10174: PUSH
10175: LD_INT 11
10177: PUSH
10178: EMPTY
10179: LIST
10180: LIST
10181: DOUBLE
10182: EQUAL
10183: IFTRUE 10187
10185: GO 10198
10187: POP
// result = LevaRepair ; [ 104 , 22 ] :
10188: LD_ADDR_VAR 0 2
10192: PUSH
10193: LD_INT 25
10195: ST_TO_ADDR
10196: GO 10277
10198: LD_INT 104
10200: PUSH
10201: LD_INT 22
10203: PUSH
10204: EMPTY
10205: LIST
10206: LIST
10207: DOUBLE
10208: EQUAL
10209: IFTRUE 10213
10211: GO 10224
10213: POP
// result = PravaHorniRepair ; [ 157 , 73 ] :
10214: LD_ADDR_VAR 0 2
10218: PUSH
10219: LD_INT 27
10221: ST_TO_ADDR
10222: GO 10277
10224: LD_INT 157
10226: PUSH
10227: LD_INT 73
10229: PUSH
10230: EMPTY
10231: LIST
10232: LIST
10233: DOUBLE
10234: EQUAL
10235: IFTRUE 10239
10237: GO 10250
10239: POP
// result = PravaRepair ; [ 86 , 68 ] :
10240: LD_ADDR_VAR 0 2
10244: PUSH
10245: LD_INT 29
10247: ST_TO_ADDR
10248: GO 10277
10250: LD_INT 86
10252: PUSH
10253: LD_INT 68
10255: PUSH
10256: EMPTY
10257: LIST
10258: LIST
10259: DOUBLE
10260: EQUAL
10261: IFTRUE 10265
10263: GO 10276
10265: POP
// result = StredniBaza ; end ;
10266: LD_ADDR_VAR 0 2
10270: PUSH
10271: LD_INT 37
10273: ST_TO_ADDR
10274: GO 10277
10276: POP
// end ;
10277: LD_VAR 0 2
10281: RET
// function NajdiNejblizsiRepairAreaExpanded ( un ) ; begin
10282: LD_INT 0
10284: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 18 , 11 ] :
10285: LD_EXP 37
10289: PPUSH
10290: LD_VAR 0 1
10294: PPUSH
10295: CALL_OW 250
10299: PPUSH
10300: LD_VAR 0 1
10304: PPUSH
10305: CALL_OW 251
10309: PPUSH
10310: CALL_OW 439
10314: PUSH
10315: LD_INT 18
10317: PUSH
10318: LD_INT 11
10320: PUSH
10321: EMPTY
10322: LIST
10323: LIST
10324: DOUBLE
10325: EQUAL
10326: IFTRUE 10330
10328: GO 10341
10330: POP
// result = LevaRepairExpanded ; [ 104 , 22 ] :
10331: LD_ADDR_VAR 0 2
10335: PUSH
10336: LD_INT 26
10338: ST_TO_ADDR
10339: GO 10422
10341: LD_INT 104
10343: PUSH
10344: LD_INT 22
10346: PUSH
10347: EMPTY
10348: LIST
10349: LIST
10350: DOUBLE
10351: EQUAL
10352: IFTRUE 10356
10354: GO 10367
10356: POP
// result = PravaHorniRepairExpanded ; [ 157 , 73 ] :
10357: LD_ADDR_VAR 0 2
10361: PUSH
10362: LD_INT 28
10364: ST_TO_ADDR
10365: GO 10422
10367: LD_INT 157
10369: PUSH
10370: LD_INT 73
10372: PUSH
10373: EMPTY
10374: LIST
10375: LIST
10376: DOUBLE
10377: EQUAL
10378: IFTRUE 10382
10380: GO 10393
10382: POP
// result = PravaRepairExpanded ; [ - 1 , - 1 ] :
10383: LD_ADDR_VAR 0 2
10387: PUSH
10388: LD_INT 30
10390: ST_TO_ADDR
10391: GO 10422
10393: LD_INT 1
10395: NEG
10396: PUSH
10397: LD_INT 1
10399: NEG
10400: PUSH
10401: EMPTY
10402: LIST
10403: LIST
10404: DOUBLE
10405: EQUAL
10406: IFTRUE 10410
10408: GO 10421
10410: POP
// result = StredniBaza ; end ;
10411: LD_ADDR_VAR 0 2
10415: PUSH
10416: LD_INT 37
10418: ST_TO_ADDR
10419: GO 10422
10421: POP
// end ;
10422: LD_VAR 0 2
10426: RET
// export function NajdiNejblizsiCarParkArea ( un ) ; begin
10427: LD_INT 0
10429: PPUSH
// case FindNearestPoint ( stredy_carpark_oblasti , GetX ( un ) , GetY ( un ) ) of [ 25 , 14 ] :
10430: LD_EXP 39
10434: PPUSH
10435: LD_VAR 0 1
10439: PPUSH
10440: CALL_OW 250
10444: PPUSH
10445: LD_VAR 0 1
10449: PPUSH
10450: CALL_OW 251
10454: PPUSH
10455: CALL_OW 439
10459: PUSH
10460: LD_INT 25
10462: PUSH
10463: LD_INT 14
10465: PUSH
10466: EMPTY
10467: LIST
10468: LIST
10469: DOUBLE
10470: EQUAL
10471: IFTRUE 10475
10473: GO 10486
10475: POP
// result = LevaCarPark ; [ 117 , 27 ] :
10476: LD_ADDR_VAR 0 2
10480: PUSH
10481: LD_INT 39
10483: ST_TO_ADDR
10484: GO 10565
10486: LD_INT 117
10488: PUSH
10489: LD_INT 27
10491: PUSH
10492: EMPTY
10493: LIST
10494: LIST
10495: DOUBLE
10496: EQUAL
10497: IFTRUE 10501
10499: GO 10512
10501: POP
// result = PravaHorniCarpark ; [ 154 , 71 ] :
10502: LD_ADDR_VAR 0 2
10506: PUSH
10507: LD_INT 40
10509: ST_TO_ADDR
10510: GO 10565
10512: LD_INT 154
10514: PUSH
10515: LD_INT 71
10517: PUSH
10518: EMPTY
10519: LIST
10520: LIST
10521: DOUBLE
10522: EQUAL
10523: IFTRUE 10527
10525: GO 10538
10527: POP
// result = PravaCarPark ; [ 86 , 68 ] :
10528: LD_ADDR_VAR 0 2
10532: PUSH
10533: LD_INT 41
10535: ST_TO_ADDR
10536: GO 10565
10538: LD_INT 86
10540: PUSH
10541: LD_INT 68
10543: PUSH
10544: EMPTY
10545: LIST
10546: LIST
10547: DOUBLE
10548: EQUAL
10549: IFTRUE 10553
10551: GO 10564
10553: POP
// result = StredniBaza ; end ;
10554: LD_ADDR_VAR 0 2
10558: PUSH
10559: LD_INT 37
10561: ST_TO_ADDR
10562: GO 10565
10564: POP
// end ;
10565: LD_VAR 0 2
10569: RET
// function UtecDoNejblizsiHealOblasti ( un ) ; begin
10570: LD_INT 0
10572: PPUSH
// VyjdiVen ( un ) ;
10573: LD_VAR 0 1
10577: PPUSH
10578: CALL 4401 0 1
// if not IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
10582: LD_VAR 0 1
10586: PPUSH
10587: LD_VAR 0 1
10591: PPUSH
10592: CALL 9710 0 1
10596: PPUSH
10597: CALL 4571 0 2
10601: NOT
10602: IFFALSE 10623
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) ;
10604: LD_VAR 0 1
10608: PPUSH
10609: LD_VAR 0 1
10613: PPUSH
10614: CALL 9710 0 1
10618: PPUSH
10619: CALL_OW 113
// end ;
10623: LD_VAR 0 2
10627: RET
// function UtecDoNejblizsiCarParkOblasti ( un ) ; begin
10628: LD_INT 0
10630: PPUSH
// if GetDistUnitArea ( un , NajdiNejblizsiCarParkArea ( un ) ) > 4 then
10631: LD_VAR 0 1
10635: PPUSH
10636: LD_VAR 0 1
10640: PPUSH
10641: CALL 10427 0 1
10645: PPUSH
10646: CALL_OW 299
10650: PUSH
10651: LD_INT 4
10653: GREATER
10654: IFFALSE 10675
// begin ComMoveToArea ( un , NajdiNejblizsiCarParkArea ( un ) ) ;
10656: LD_VAR 0 1
10660: PPUSH
10661: LD_VAR 0 1
10665: PPUSH
10666: CALL 10427 0 1
10670: PPUSH
10671: CALL_OW 113
// end ; end ;
10675: LD_VAR 0 2
10679: RET
// export function UtecDoNejblizsiRepairOblasti ( un ) ; begin
10680: LD_INT 0
10682: PPUSH
// if not IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
10683: LD_VAR 0 1
10687: PPUSH
10688: LD_VAR 0 1
10692: PPUSH
10693: CALL 10139 0 1
10697: PPUSH
10698: CALL 4571 0 2
10702: NOT
10703: IFFALSE 10724
// ComMoveToArea ( un , NajdiNejblizsiRepairArea ( un ) ) ;
10705: LD_VAR 0 1
10709: PPUSH
10710: LD_VAR 0 1
10714: PPUSH
10715: CALL 10139 0 1
10719: PPUSH
10720: CALL_OW 113
// end ;
10724: LD_VAR 0 2
10728: RET
// function PocetJednotekCoJdouDoBudov ( list ) ; var pocet , i ; begin
10729: LD_INT 0
10731: PPUSH
10732: PPUSH
10733: PPUSH
// pocet = 0 ;
10734: LD_ADDR_VAR 0 3
10738: PUSH
10739: LD_INT 0
10741: ST_TO_ADDR
// for i in list do
10742: LD_ADDR_VAR 0 4
10746: PUSH
10747: LD_VAR 0 1
10751: PUSH
10752: FOR_IN
10753: IFFALSE 10782
// if JdeDoBudovy ( i ) then
10755: LD_VAR 0 4
10759: PPUSH
10760: CALL 11057 0 1
10764: IFFALSE 10780
// pocet = pocet + 1 ;
10766: LD_ADDR_VAR 0 3
10770: PUSH
10771: LD_VAR 0 3
10775: PUSH
10776: LD_INT 1
10778: PLUS
10779: ST_TO_ADDR
10780: GO 10752
10782: POP
10783: POP
// result = pocet ;
10784: LD_ADDR_VAR 0 2
10788: PUSH
10789: LD_VAR 0 3
10793: ST_TO_ADDR
// end ;
10794: LD_VAR 0 2
10798: RET
// function NejblizsiJednotkaCoNemaTask ( list , budova ) ; var k ; begin
10799: LD_INT 0
10801: PPUSH
10802: PPUSH
// for k in list do
10803: LD_ADDR_VAR 0 4
10807: PUSH
10808: LD_VAR 0 1
10812: PUSH
10813: FOR_IN
10814: IFFALSE 10845
// begin if JdeDoBudovy ( k ) then
10816: LD_VAR 0 4
10820: PPUSH
10821: CALL 11057 0 1
10825: IFFALSE 10843
// list = list diff k ;
10827: LD_ADDR_VAR 0 1
10831: PUSH
10832: LD_VAR 0 1
10836: PUSH
10837: LD_VAR 0 4
10841: DIFF
10842: ST_TO_ADDR
// end ;
10843: GO 10813
10845: POP
10846: POP
// if list then
10847: LD_VAR 0 1
10851: IFFALSE 10875
// result = NearestUnitToUnit ( list , budova ) else
10853: LD_ADDR_VAR 0 3
10857: PUSH
10858: LD_VAR 0 1
10862: PPUSH
10863: LD_VAR 0 2
10867: PPUSH
10868: CALL_OW 74
10872: ST_TO_ADDR
10873: GO 10883
// result = 0 ;
10875: LD_ADDR_VAR 0 3
10879: PUSH
10880: LD_INT 0
10882: ST_TO_ADDR
// end ;
10883: LD_VAR 0 3
10887: RET
// function MuzeJitOpravovatCerveny ( un ) ; var tmp ; begin
10888: LD_INT 0
10890: PPUSH
10891: PPUSH
// tmp = false ;
10892: LD_ADDR_VAR 0 3
10896: PUSH
10897: LD_INT 0
10899: ST_TO_ADDR
// if UnitsInside ( IsInUnit ( un ) ) > 3 then
10900: LD_VAR 0 1
10904: PPUSH
10905: CALL_OW 310
10909: PPUSH
10910: CALL_OW 313
10914: PUSH
10915: LD_INT 3
10917: GREATER
10918: IFFALSE 10938
// begin tmp = true ;
10920: LD_ADDR_VAR 0 3
10924: PUSH
10925: LD_INT 1
10927: ST_TO_ADDR
// result = true ;
10928: LD_ADDR_VAR 0 2
10932: PUSH
10933: LD_INT 1
10935: ST_TO_ADDR
// end else
10936: GO 10946
// result = false ;
10938: LD_ADDR_VAR 0 2
10942: PUSH
10943: LD_INT 0
10945: ST_TO_ADDR
// if not tmp then
10946: LD_VAR 0 3
10950: NOT
10951: IFFALSE 11052
// begin if GetTaskList ( un ) <> 0 then
10953: LD_VAR 0 1
10957: PPUSH
10958: CALL_OW 437
10962: PUSH
10963: LD_INT 0
10965: NONEQUAL
10966: IFFALSE 11044
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = r then
10968: LD_VAR 0 1
10972: PPUSH
10973: CALL_OW 437
10977: PUSH
10978: LD_INT 1
10980: ARRAY
10981: PUSH
10982: LD_INT 1
10984: ARRAY
10985: PUSH
10986: LD_STRING r
10988: EQUAL
10989: IFFALSE 11001
// result = true else
10991: LD_ADDR_VAR 0 2
10995: PUSH
10996: LD_INT 1
10998: ST_TO_ADDR
10999: GO 11042
// if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
11001: LD_VAR 0 1
11005: PPUSH
11006: CALL_OW 437
11010: PUSH
11011: LD_INT 1
11013: ARRAY
11014: PUSH
11015: LD_INT 1
11017: ARRAY
11018: PUSH
11019: LD_STRING e
11021: EQUAL
11022: IFFALSE 11034
// result = true else
11024: LD_ADDR_VAR 0 2
11028: PUSH
11029: LD_INT 1
11031: ST_TO_ADDR
11032: GO 11042
// result = false ;
11034: LD_ADDR_VAR 0 2
11038: PUSH
11039: LD_INT 0
11041: ST_TO_ADDR
// end else
11042: GO 11052
// result = false ;
11044: LD_ADDR_VAR 0 2
11048: PUSH
11049: LD_INT 0
11051: ST_TO_ADDR
// end end ;
11052: LD_VAR 0 2
11056: RET
// function JdeDoBudovy ( un ) ; begin
11057: LD_INT 0
11059: PPUSH
// if GetTaskList ( un ) <> 0 then
11060: LD_VAR 0 1
11064: PPUSH
11065: CALL_OW 437
11069: PUSH
11070: LD_INT 0
11072: NONEQUAL
11073: IFFALSE 11118
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
11075: LD_VAR 0 1
11079: PPUSH
11080: CALL_OW 437
11084: PUSH
11085: LD_INT 1
11087: ARRAY
11088: PUSH
11089: LD_INT 1
11091: ARRAY
11092: PUSH
11093: LD_STRING e
11095: EQUAL
11096: IFFALSE 11108
// result = true else
11098: LD_ADDR_VAR 0 2
11102: PUSH
11103: LD_INT 1
11105: ST_TO_ADDR
11106: GO 11116
// result = false ;
11108: LD_ADDR_VAR 0 2
11112: PUSH
11113: LD_INT 0
11115: ST_TO_ADDR
// end else
11116: GO 11126
// result = false ;
11118: LD_ADDR_VAR 0 2
11122: PUSH
11123: LD_INT 0
11125: ST_TO_ADDR
// end ;
11126: LD_VAR 0 2
11130: RET
// export function NajdiVojaka ; var voj ; begin
11131: LD_INT 0
11133: PPUSH
11134: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod then
11135: LD_INT 24
11137: PUSH
11138: LD_INT 250
11140: PUSH
11141: EMPTY
11142: LIST
11143: LIST
11144: PUSH
11145: LD_INT 22
11147: PUSH
11148: LD_EXP 18
11152: PUSH
11153: EMPTY
11154: LIST
11155: LIST
11156: PUSH
11157: LD_INT 2
11159: PUSH
11160: LD_INT 25
11162: PUSH
11163: LD_INT 1
11165: PUSH
11166: EMPTY
11167: LIST
11168: LIST
11169: PUSH
11170: LD_INT 25
11172: PUSH
11173: LD_INT 9
11175: PUSH
11176: EMPTY
11177: LIST
11178: LIST
11179: PUSH
11180: EMPTY
11181: LIST
11182: LIST
11183: LIST
11184: PUSH
11185: EMPTY
11186: LIST
11187: LIST
11188: LIST
11189: PPUSH
11190: CALL_OW 69
11194: PUSH
11195: LD_EXP 1
11199: DIFF
11200: IFFALSE 11273
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod ;
11202: LD_ADDR_VAR 0 2
11206: PUSH
11207: LD_INT 24
11209: PUSH
11210: LD_INT 250
11212: PUSH
11213: EMPTY
11214: LIST
11215: LIST
11216: PUSH
11217: LD_INT 22
11219: PUSH
11220: LD_EXP 18
11224: PUSH
11225: EMPTY
11226: LIST
11227: LIST
11228: PUSH
11229: LD_INT 2
11231: PUSH
11232: LD_INT 25
11234: PUSH
11235: LD_INT 1
11237: PUSH
11238: EMPTY
11239: LIST
11240: LIST
11241: PUSH
11242: LD_INT 25
11244: PUSH
11245: LD_INT 9
11247: PUSH
11248: EMPTY
11249: LIST
11250: LIST
11251: PUSH
11252: EMPTY
11253: LIST
11254: LIST
11255: LIST
11256: PUSH
11257: EMPTY
11258: LIST
11259: LIST
11260: LIST
11261: PPUSH
11262: CALL_OW 69
11266: PUSH
11267: LD_EXP 1
11271: DIFF
11272: ST_TO_ADDR
// if voj then
11273: LD_VAR 0 2
11277: IFFALSE 11305
// result = voj [ Rand ( 1 , voj ) ] else
11279: LD_ADDR_VAR 0 1
11283: PUSH
11284: LD_VAR 0 2
11288: PUSH
11289: LD_INT 1
11291: PPUSH
11292: LD_VAR 0 2
11296: PPUSH
11297: CALL_OW 12
11301: ARRAY
11302: ST_TO_ADDR
11303: GO 11355
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_combat ) ;
11305: LD_ADDR_VAR 0 1
11309: PUSH
11310: LD_INT 24
11312: PUSH
11313: LD_INT 250
11315: PUSH
11316: EMPTY
11317: LIST
11318: LIST
11319: PUSH
11320: LD_INT 22
11322: PUSH
11323: LD_EXP 18
11327: PUSH
11328: EMPTY
11329: LIST
11330: LIST
11331: PUSH
11332: EMPTY
11333: LIST
11334: LIST
11335: PPUSH
11336: CALL_OW 69
11340: PUSH
11341: LD_EXP 1
11345: DIFF
11346: PPUSH
11347: LD_INT 1
11349: PPUSH
11350: CALL_OW 433
11354: ST_TO_ADDR
// end ;
11355: LD_VAR 0 1
11359: RET
// export function NajdiVedce ; var ved ; begin
11360: LD_INT 0
11362: PPUSH
11363: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod then
11364: LD_INT 24
11366: PUSH
11367: LD_INT 250
11369: PUSH
11370: EMPTY
11371: LIST
11372: LIST
11373: PUSH
11374: LD_INT 22
11376: PUSH
11377: LD_EXP 18
11381: PUSH
11382: EMPTY
11383: LIST
11384: LIST
11385: PUSH
11386: LD_INT 25
11388: PUSH
11389: LD_INT 4
11391: PUSH
11392: EMPTY
11393: LIST
11394: LIST
11395: PUSH
11396: EMPTY
11397: LIST
11398: LIST
11399: LIST
11400: PPUSH
11401: CALL_OW 69
11405: PUSH
11406: LD_EXP 1
11410: DIFF
11411: IFFALSE 11466
// ved = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod ;
11413: LD_ADDR_VAR 0 2
11417: PUSH
11418: LD_INT 24
11420: PUSH
11421: LD_INT 250
11423: PUSH
11424: EMPTY
11425: LIST
11426: LIST
11427: PUSH
11428: LD_INT 22
11430: PUSH
11431: LD_EXP 18
11435: PUSH
11436: EMPTY
11437: LIST
11438: LIST
11439: PUSH
11440: LD_INT 25
11442: PUSH
11443: LD_INT 4
11445: PUSH
11446: EMPTY
11447: LIST
11448: LIST
11449: PUSH
11450: EMPTY
11451: LIST
11452: LIST
11453: LIST
11454: PPUSH
11455: CALL_OW 69
11459: PUSH
11460: LD_EXP 1
11464: DIFF
11465: ST_TO_ADDR
// if ved then
11466: LD_VAR 0 2
11470: IFFALSE 11498
// result = ved [ Rand ( 1 , ved ) ] else
11472: LD_ADDR_VAR 0 1
11476: PUSH
11477: LD_VAR 0 2
11481: PUSH
11482: LD_INT 1
11484: PPUSH
11485: LD_VAR 0 2
11489: PPUSH
11490: CALL_OW 12
11494: ARRAY
11495: ST_TO_ADDR
11496: GO 11548
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_scientistic ) ;
11498: LD_ADDR_VAR 0 1
11502: PUSH
11503: LD_INT 24
11505: PUSH
11506: LD_INT 250
11508: PUSH
11509: EMPTY
11510: LIST
11511: LIST
11512: PUSH
11513: LD_INT 22
11515: PUSH
11516: LD_EXP 18
11520: PUSH
11521: EMPTY
11522: LIST
11523: LIST
11524: PUSH
11525: EMPTY
11526: LIST
11527: LIST
11528: PPUSH
11529: CALL_OW 69
11533: PUSH
11534: LD_EXP 1
11538: DIFF
11539: PPUSH
11540: LD_INT 4
11542: PPUSH
11543: CALL_OW 433
11547: ST_TO_ADDR
// end ;
11548: LD_VAR 0 1
11552: RET
// export function NajdiMechanika ; var mech ; begin
11553: LD_INT 0
11555: PPUSH
11556: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod then
11557: LD_INT 24
11559: PUSH
11560: LD_INT 250
11562: PUSH
11563: EMPTY
11564: LIST
11565: LIST
11566: PUSH
11567: LD_INT 22
11569: PUSH
11570: LD_EXP 18
11574: PUSH
11575: EMPTY
11576: LIST
11577: LIST
11578: PUSH
11579: LD_INT 25
11581: PUSH
11582: LD_INT 3
11584: PUSH
11585: EMPTY
11586: LIST
11587: LIST
11588: PUSH
11589: EMPTY
11590: LIST
11591: LIST
11592: LIST
11593: PPUSH
11594: CALL_OW 69
11598: PUSH
11599: LD_EXP 1
11603: DIFF
11604: IFFALSE 11659
// mech = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod ;
11606: LD_ADDR_VAR 0 2
11610: PUSH
11611: LD_INT 24
11613: PUSH
11614: LD_INT 250
11616: PUSH
11617: EMPTY
11618: LIST
11619: LIST
11620: PUSH
11621: LD_INT 22
11623: PUSH
11624: LD_EXP 18
11628: PUSH
11629: EMPTY
11630: LIST
11631: LIST
11632: PUSH
11633: LD_INT 25
11635: PUSH
11636: LD_INT 3
11638: PUSH
11639: EMPTY
11640: LIST
11641: LIST
11642: PUSH
11643: EMPTY
11644: LIST
11645: LIST
11646: LIST
11647: PPUSH
11648: CALL_OW 69
11652: PUSH
11653: LD_EXP 1
11657: DIFF
11658: ST_TO_ADDR
// if mech then
11659: LD_VAR 0 2
11663: IFFALSE 11691
// result = mech [ Rand ( 1 , mech ) ] else
11665: LD_ADDR_VAR 0 1
11669: PUSH
11670: LD_VAR 0 2
11674: PUSH
11675: LD_INT 1
11677: PPUSH
11678: LD_VAR 0 2
11682: PPUSH
11683: CALL_OW 12
11687: ARRAY
11688: ST_TO_ADDR
11689: GO 11741
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_mechanical ) ;
11691: LD_ADDR_VAR 0 1
11695: PUSH
11696: LD_INT 24
11698: PUSH
11699: LD_INT 250
11701: PUSH
11702: EMPTY
11703: LIST
11704: LIST
11705: PUSH
11706: LD_INT 22
11708: PUSH
11709: LD_EXP 18
11713: PUSH
11714: EMPTY
11715: LIST
11716: LIST
11717: PUSH
11718: EMPTY
11719: LIST
11720: LIST
11721: PPUSH
11722: CALL_OW 69
11726: PUSH
11727: LD_EXP 1
11731: DIFF
11732: PPUSH
11733: LD_INT 3
11735: PPUSH
11736: CALL_OW 433
11740: ST_TO_ADDR
// end ;
11741: LD_VAR 0 1
11745: RET
// export function NajdiDelnika ; var del ; begin
11746: LD_INT 0
11748: PPUSH
11749: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod then
11750: LD_INT 24
11752: PUSH
11753: LD_INT 250
11755: PUSH
11756: EMPTY
11757: LIST
11758: LIST
11759: PUSH
11760: LD_INT 22
11762: PUSH
11763: LD_EXP 18
11767: PUSH
11768: EMPTY
11769: LIST
11770: LIST
11771: PUSH
11772: LD_INT 25
11774: PUSH
11775: LD_INT 2
11777: PUSH
11778: EMPTY
11779: LIST
11780: LIST
11781: PUSH
11782: EMPTY
11783: LIST
11784: LIST
11785: LIST
11786: PPUSH
11787: CALL_OW 69
11791: PUSH
11792: LD_EXP 1
11796: DIFF
11797: IFFALSE 11852
// del = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod ;
11799: LD_ADDR_VAR 0 2
11803: PUSH
11804: LD_INT 24
11806: PUSH
11807: LD_INT 250
11809: PUSH
11810: EMPTY
11811: LIST
11812: LIST
11813: PUSH
11814: LD_INT 22
11816: PUSH
11817: LD_EXP 18
11821: PUSH
11822: EMPTY
11823: LIST
11824: LIST
11825: PUSH
11826: LD_INT 25
11828: PUSH
11829: LD_INT 2
11831: PUSH
11832: EMPTY
11833: LIST
11834: LIST
11835: PUSH
11836: EMPTY
11837: LIST
11838: LIST
11839: LIST
11840: PPUSH
11841: CALL_OW 69
11845: PUSH
11846: LD_EXP 1
11850: DIFF
11851: ST_TO_ADDR
// if del then
11852: LD_VAR 0 2
11856: IFFALSE 11884
// result = del [ Rand ( 1 , del ) ] else
11858: LD_ADDR_VAR 0 1
11862: PUSH
11863: LD_VAR 0 2
11867: PUSH
11868: LD_INT 1
11870: PPUSH
11871: LD_VAR 0 2
11875: PPUSH
11876: CALL_OW 12
11880: ARRAY
11881: ST_TO_ADDR
11882: GO 11934
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_engineering ) ;
11884: LD_ADDR_VAR 0 1
11888: PUSH
11889: LD_INT 24
11891: PUSH
11892: LD_INT 250
11894: PUSH
11895: EMPTY
11896: LIST
11897: LIST
11898: PUSH
11899: LD_INT 22
11901: PUSH
11902: LD_EXP 18
11906: PUSH
11907: EMPTY
11908: LIST
11909: LIST
11910: PUSH
11911: EMPTY
11912: LIST
11913: LIST
11914: PPUSH
11915: CALL_OW 69
11919: PUSH
11920: LD_EXP 1
11924: DIFF
11925: PPUSH
11926: LD_INT 2
11928: PPUSH
11929: CALL_OW 433
11933: ST_TO_ADDR
// end ;
11934: LD_VAR 0 1
11938: RET
// function GetListOfCratesInAreaBySide ( side , area ) ; begin
11939: LD_INT 0
11941: PPUSH
// if area = LevaBazaExpanded then
11942: LD_VAR 0 2
11946: PUSH
11947: LD_INT 32
11949: EQUAL
11950: IFFALSE 11967
// result = GetListOfCratesInArea ( LevaBaza ) else
11952: LD_ADDR_VAR 0 3
11956: PUSH
11957: LD_INT 31
11959: PPUSH
11960: CALL_OW 435
11964: ST_TO_ADDR
11965: GO 12030
// if area = PravaHorniBazaExpanded then
11967: LD_VAR 0 2
11971: PUSH
11972: LD_INT 34
11974: EQUAL
11975: IFFALSE 11992
// result = GetListOfCratesInArea ( PravaHorniBaza ) else
11977: LD_ADDR_VAR 0 3
11981: PUSH
11982: LD_INT 33
11984: PPUSH
11985: CALL_OW 435
11989: ST_TO_ADDR
11990: GO 12030
// if area = PravaBazaExpanded then
11992: LD_VAR 0 2
11996: PUSH
11997: LD_INT 36
11999: EQUAL
12000: IFFALSE 12017
// result = GetListOfCratesInArea ( PravaBaza ) else
12002: LD_ADDR_VAR 0 3
12006: PUSH
12007: LD_INT 35
12009: PPUSH
12010: CALL_OW 435
12014: ST_TO_ADDR
12015: GO 12030
// result = GetListOfCratesInArea ( StredniBaza ) ;
12017: LD_ADDR_VAR 0 3
12021: PUSH
12022: LD_INT 37
12024: PPUSH
12025: CALL_OW 435
12029: ST_TO_ADDR
// end ;
12030: LD_VAR 0 3
12034: RET
// export function CreateCratesArea2 ( crates , area , mat ) ; begin
12035: LD_INT 0
12037: PPUSH
// if crates < 1 or crates > 5 then
12038: LD_VAR 0 1
12042: PUSH
12043: LD_INT 1
12045: LESS
12046: PUSH
12047: LD_VAR 0 1
12051: PUSH
12052: LD_INT 5
12054: GREATER
12055: OR
12056: IFFALSE 12060
// exit ;
12058: GO 12079
// CreateCratesArea ( crates , area , mat ) ;
12060: LD_VAR 0 1
12064: PPUSH
12065: LD_VAR 0 2
12069: PPUSH
12070: LD_VAR 0 3
12074: PPUSH
12075: CALL_OW 55
// end ; end_of_file
12079: LD_VAR 0 4
12083: RET
// export dif_ape_agr_multiplier , dif_tiger_agr_multiplier , dif_bedny_wait , dif_bedny_mnozstvi , dif_enemy_lidi_kasa , dif_enemy_lidi_sklad , dif_enemy_lidi_faclab , dif_enemy_min_skill , dif_enemy_max_skill , dif_prob_uspavaci , dif_ar_attack_size , dif_purple_attack_size , dif_amik_attack_size , dif_sibcelkem , dif_arab_vyroba_utok_wait , dif_purple_vyroba_utok_wait , dif_amik_vyroba_utok_wait , dif_auto_lepsi_podvozek_sance , dif_auto_vyroba_sance , dif_research_wait , dif_arab_vyroba_utok_wait_start , dif_purple_vyroba_utok_wait_start , dif_amik_vyroba_utok_wait_start , dif_vyroba_tick_inkrement , dif_podvozek_nakl ; export function Obtiznost ; begin
12084: LD_INT 0
12086: PPUSH
// dif_ape_agr_multiplier = 13 * difficulty ;
12087: LD_ADDR_EXP 43
12091: PUSH
12092: LD_INT 13
12094: PUSH
12095: LD_OWVAR 67
12099: MUL
12100: ST_TO_ADDR
// dif_tiger_agr_multiplier = 20 * difficulty ;
12101: LD_ADDR_EXP 44
12105: PUSH
12106: LD_INT 20
12108: PUSH
12109: LD_OWVAR 67
12113: MUL
12114: ST_TO_ADDR
// dif_bedny_wait = [ [ 0 0$40 , 1 1$20 ] , [ 1 1$00 , 1 1$20 ] , [ 1 1$10 , 1 1$30 ] ] [ difficulty ] ;
12115: LD_ADDR_EXP 45
12119: PUSH
12120: LD_INT 1400
12122: PUSH
12123: LD_INT 2800
12125: PUSH
12126: EMPTY
12127: LIST
12128: LIST
12129: PUSH
12130: LD_INT 2100
12132: PUSH
12133: LD_INT 2800
12135: PUSH
12136: EMPTY
12137: LIST
12138: LIST
12139: PUSH
12140: LD_INT 2450
12142: PUSH
12143: LD_INT 3150
12145: PUSH
12146: EMPTY
12147: LIST
12148: LIST
12149: PUSH
12150: EMPTY
12151: LIST
12152: LIST
12153: LIST
12154: PUSH
12155: LD_OWVAR 67
12159: ARRAY
12160: ST_TO_ADDR
// dif_bedny_mnozstvi = [ [ 4 , 5 ] , [ 3 , 5 ] , [ 2 , 5 ] ] [ difficulty ] ;
12161: LD_ADDR_EXP 46
12165: PUSH
12166: LD_INT 4
12168: PUSH
12169: LD_INT 5
12171: PUSH
12172: EMPTY
12173: LIST
12174: LIST
12175: PUSH
12176: LD_INT 3
12178: PUSH
12179: LD_INT 5
12181: PUSH
12182: EMPTY
12183: LIST
12184: LIST
12185: PUSH
12186: LD_INT 2
12188: PUSH
12189: LD_INT 5
12191: PUSH
12192: EMPTY
12193: LIST
12194: LIST
12195: PUSH
12196: EMPTY
12197: LIST
12198: LIST
12199: LIST
12200: PUSH
12201: LD_OWVAR 67
12205: ARRAY
12206: ST_TO_ADDR
// dif_enemy_lidi_kasa = [ 3 , 4 , 5 ] [ difficulty ] ;
12207: LD_ADDR_EXP 47
12211: PUSH
12212: LD_INT 3
12214: PUSH
12215: LD_INT 4
12217: PUSH
12218: LD_INT 5
12220: PUSH
12221: EMPTY
12222: LIST
12223: LIST
12224: LIST
12225: PUSH
12226: LD_OWVAR 67
12230: ARRAY
12231: ST_TO_ADDR
// dif_enemy_lidi_faclab = [ 4 , 5 , 6 ] [ difficulty ] ;
12232: LD_ADDR_EXP 49
12236: PUSH
12237: LD_INT 4
12239: PUSH
12240: LD_INT 5
12242: PUSH
12243: LD_INT 6
12245: PUSH
12246: EMPTY
12247: LIST
12248: LIST
12249: LIST
12250: PUSH
12251: LD_OWVAR 67
12255: ARRAY
12256: ST_TO_ADDR
// dif_enemy_lidi_sklad = [ 4 , 6 , 6 ] [ difficulty ] ;
12257: LD_ADDR_EXP 48
12261: PUSH
12262: LD_INT 4
12264: PUSH
12265: LD_INT 6
12267: PUSH
12268: LD_INT 6
12270: PUSH
12271: EMPTY
12272: LIST
12273: LIST
12274: LIST
12275: PUSH
12276: LD_OWVAR 67
12280: ARRAY
12281: ST_TO_ADDR
// dif_enemy_min_skill = [ 4 , 4 , 6 ] [ difficulty ] ;
12282: LD_ADDR_EXP 50
12286: PUSH
12287: LD_INT 4
12289: PUSH
12290: LD_INT 4
12292: PUSH
12293: LD_INT 6
12295: PUSH
12296: EMPTY
12297: LIST
12298: LIST
12299: LIST
12300: PUSH
12301: LD_OWVAR 67
12305: ARRAY
12306: ST_TO_ADDR
// dif_enemy_max_skill = [ 6 , 7 , 8 ] [ difficulty ] ;
12307: LD_ADDR_EXP 51
12311: PUSH
12312: LD_INT 6
12314: PUSH
12315: LD_INT 7
12317: PUSH
12318: LD_INT 8
12320: PUSH
12321: EMPTY
12322: LIST
12323: LIST
12324: LIST
12325: PUSH
12326: LD_OWVAR 67
12330: ARRAY
12331: ST_TO_ADDR
// dif_prob_uspavaci = [ 50 , 55 , 60 ] [ difficulty ] ;
12332: LD_ADDR_EXP 52
12336: PUSH
12337: LD_INT 50
12339: PUSH
12340: LD_INT 55
12342: PUSH
12343: LD_INT 60
12345: PUSH
12346: EMPTY
12347: LIST
12348: LIST
12349: LIST
12350: PUSH
12351: LD_OWVAR 67
12355: ARRAY
12356: ST_TO_ADDR
// dif_amik_attack_size = [ 4 , 5 , 6 ] [ difficulty ] ;
12357: LD_ADDR_EXP 55
12361: PUSH
12362: LD_INT 4
12364: PUSH
12365: LD_INT 5
12367: PUSH
12368: LD_INT 6
12370: PUSH
12371: EMPTY
12372: LIST
12373: LIST
12374: LIST
12375: PUSH
12376: LD_OWVAR 67
12380: ARRAY
12381: ST_TO_ADDR
// dif_amik_vyroba_utok_wait_start = [ 6 6$30 , 4 4$30 , 3 3$30 ] [ difficulty ] ;
12382: LD_ADDR_EXP 65
12386: PUSH
12387: LD_INT 13650
12389: PUSH
12390: LD_INT 9450
12392: PUSH
12393: LD_INT 7350
12395: PUSH
12396: EMPTY
12397: LIST
12398: LIST
12399: LIST
12400: PUSH
12401: LD_OWVAR 67
12405: ARRAY
12406: ST_TO_ADDR
// dif_amik_vyroba_utok_wait = [ 13 13$00 , 9 9$00 , 6 6$40 ] [ difficulty ] ;
12407: LD_ADDR_EXP 59
12411: PUSH
12412: LD_INT 27300
12414: PUSH
12415: LD_INT 18900
12417: PUSH
12418: LD_INT 14000
12420: PUSH
12421: EMPTY
12422: LIST
12423: LIST
12424: LIST
12425: PUSH
12426: LD_OWVAR 67
12430: ARRAY
12431: ST_TO_ADDR
// dif_auto_lepsi_podvozek_sance = [ 25 , 50 , 75 ] [ difficulty ] ;
12432: LD_ADDR_EXP 60
12436: PUSH
12437: LD_INT 25
12439: PUSH
12440: LD_INT 50
12442: PUSH
12443: LD_INT 75
12445: PUSH
12446: EMPTY
12447: LIST
12448: LIST
12449: LIST
12450: PUSH
12451: LD_OWVAR 67
12455: ARRAY
12456: ST_TO_ADDR
// dif_auto_vyroba_sance = [ [ 25 , 50 , 75 , 95 ] , [ 20 , 40 , 70 , 91 ] , [ 10 , 30 , 50 , 88 ] ] [ difficulty ] ;
12457: LD_ADDR_EXP 61
12461: PUSH
12462: LD_INT 25
12464: PUSH
12465: LD_INT 50
12467: PUSH
12468: LD_INT 75
12470: PUSH
12471: LD_INT 95
12473: PUSH
12474: EMPTY
12475: LIST
12476: LIST
12477: LIST
12478: LIST
12479: PUSH
12480: LD_INT 20
12482: PUSH
12483: LD_INT 40
12485: PUSH
12486: LD_INT 70
12488: PUSH
12489: LD_INT 91
12491: PUSH
12492: EMPTY
12493: LIST
12494: LIST
12495: LIST
12496: LIST
12497: PUSH
12498: LD_INT 10
12500: PUSH
12501: LD_INT 30
12503: PUSH
12504: LD_INT 50
12506: PUSH
12507: LD_INT 88
12509: PUSH
12510: EMPTY
12511: LIST
12512: LIST
12513: LIST
12514: LIST
12515: PUSH
12516: EMPTY
12517: LIST
12518: LIST
12519: LIST
12520: PUSH
12521: LD_OWVAR 67
12525: ARRAY
12526: ST_TO_ADDR
// dif_research_wait = [ 7 7$00 , 5 5$30 , 4 4$00 ] [ difficulty ] ;
12527: LD_ADDR_EXP 62
12531: PUSH
12532: LD_INT 14700
12534: PUSH
12535: LD_INT 11550
12537: PUSH
12538: LD_INT 8400
12540: PUSH
12541: EMPTY
12542: LIST
12543: LIST
12544: LIST
12545: PUSH
12546: LD_OWVAR 67
12550: ARRAY
12551: ST_TO_ADDR
// dif_vyroba_tick_inkrement = [ 0 0$45 , 0 0$40 , 0 0$40 ] [ difficulty ] ;
12552: LD_ADDR_EXP 66
12556: PUSH
12557: LD_INT 1575
12559: PUSH
12560: LD_INT 1400
12562: PUSH
12563: LD_INT 1400
12565: PUSH
12566: EMPTY
12567: LIST
12568: LIST
12569: LIST
12570: PUSH
12571: LD_OWVAR 67
12575: ARRAY
12576: ST_TO_ADDR
// dif_sibcelkem = [ 1600 , 1500 , 1400 ] [ difficulty ] ;
12577: LD_ADDR_EXP 56
12581: PUSH
12582: LD_INT 1600
12584: PUSH
12585: LD_INT 1500
12587: PUSH
12588: LD_INT 1400
12590: PUSH
12591: EMPTY
12592: LIST
12593: LIST
12594: LIST
12595: PUSH
12596: LD_OWVAR 67
12600: ARRAY
12601: ST_TO_ADDR
// sibcelkem = dif_sibcelkem ;
12602: LD_ADDR_EXP 71
12606: PUSH
12607: LD_EXP 56
12611: ST_TO_ADDR
// tech_list_amik = [ [ tech_tech1 , tech_comp1 , tech_tech2 , tech_comp2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_opto1 , tech_opto2 , tech_opto3 , ] , [ tech_tech1 , tech_comp1 , tech_tech2 , tech_comp2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_weap3 , tech_opto1 , tech_opto2 , tech_opto3 , ] , [ tech_tech1 , tech_comp1 , tech_tech2 , tech_comp2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_comp3 , tech_weap3 , tech_opto1 , tech_opto2 , tech_opto3 , ] ] [ difficulty ] ;
12612: LD_ADDR_EXP 72
12616: PUSH
12617: LD_INT 48
12619: PUSH
12620: LD_INT 57
12622: PUSH
12623: LD_INT 49
12625: PUSH
12626: LD_INT 58
12628: PUSH
12629: LD_INT 50
12631: PUSH
12632: LD_INT 51
12634: PUSH
12635: LD_INT 52
12637: PUSH
12638: LD_INT 60
12640: PUSH
12641: LD_INT 61
12643: PUSH
12644: LD_INT 62
12646: PUSH
12647: EMPTY
12648: LIST
12649: LIST
12650: LIST
12651: LIST
12652: LIST
12653: LIST
12654: LIST
12655: LIST
12656: LIST
12657: LIST
12658: PUSH
12659: LD_INT 48
12661: PUSH
12662: LD_INT 57
12664: PUSH
12665: LD_INT 49
12667: PUSH
12668: LD_INT 58
12670: PUSH
12671: LD_INT 50
12673: PUSH
12674: LD_INT 51
12676: PUSH
12677: LD_INT 52
12679: PUSH
12680: LD_INT 53
12682: PUSH
12683: LD_INT 60
12685: PUSH
12686: LD_INT 61
12688: PUSH
12689: LD_INT 62
12691: PUSH
12692: EMPTY
12693: LIST
12694: LIST
12695: LIST
12696: LIST
12697: LIST
12698: LIST
12699: LIST
12700: LIST
12701: LIST
12702: LIST
12703: LIST
12704: PUSH
12705: LD_INT 48
12707: PUSH
12708: LD_INT 57
12710: PUSH
12711: LD_INT 49
12713: PUSH
12714: LD_INT 58
12716: PUSH
12717: LD_INT 50
12719: PUSH
12720: LD_INT 51
12722: PUSH
12723: LD_INT 52
12725: PUSH
12726: LD_INT 59
12728: PUSH
12729: LD_INT 53
12731: PUSH
12732: LD_INT 60
12734: PUSH
12735: LD_INT 61
12737: PUSH
12738: LD_INT 62
12740: PUSH
12741: EMPTY
12742: LIST
12743: LIST
12744: LIST
12745: LIST
12746: LIST
12747: LIST
12748: LIST
12749: LIST
12750: LIST
12751: LIST
12752: LIST
12753: LIST
12754: PUSH
12755: EMPTY
12756: LIST
12757: LIST
12758: LIST
12759: PUSH
12760: LD_OWVAR 67
12764: ARRAY
12765: ST_TO_ADDR
// dif_podvozek_nakl = [ us_medium_tracked , us_medium_tracked , us_morphling ] [ difficulty ] ;
12766: LD_ADDR_EXP 67
12770: PUSH
12771: LD_INT 3
12773: PUSH
12774: LD_INT 3
12776: PUSH
12777: LD_INT 5
12779: PUSH
12780: EMPTY
12781: LIST
12782: LIST
12783: LIST
12784: PUSH
12785: LD_OWVAR 67
12789: ARRAY
12790: ST_TO_ADDR
// if difficulty = 1 then
12791: LD_OWVAR 67
12795: PUSH
12796: LD_INT 1
12798: EQUAL
12799: IFFALSE 12827
// RemoveUnit ( FilterUnitsInArea ( Lozisko4 , [ f_type , unit_building ] ) [ 1 ] ) ;
12801: LD_INT 11
12803: PPUSH
12804: LD_INT 21
12806: PUSH
12807: LD_INT 3
12809: PUSH
12810: EMPTY
12811: LIST
12812: LIST
12813: PPUSH
12814: CALL_OW 70
12818: PUSH
12819: LD_INT 1
12821: ARRAY
12822: PPUSH
12823: CALL_OW 64
// end ;
12827: LD_VAR 0 1
12831: RET
// every 20 20$00 do
12832: GO 12834
12834: DISABLE
// begin tech_list_amik = tech_list_amik ^ tech_sib1 ;
12835: LD_ADDR_EXP 72
12839: PUSH
12840: LD_EXP 72
12844: PUSH
12845: LD_INT 54
12847: ADD
12848: ST_TO_ADDR
// if difficulty <> 1 then
12849: LD_OWVAR 67
12853: PUSH
12854: LD_INT 1
12856: NONEQUAL
12857: IFFALSE 12873
// tech_list_amik = tech_list_amik ^ tech_sib2 ;
12859: LD_ADDR_EXP 72
12863: PUSH
12864: LD_EXP 72
12868: PUSH
12869: LD_INT 55
12871: ADD
12872: ST_TO_ADDR
// end ; end_of_file
12873: END
// every 0 0$1 trigger ingame and tick >= 0 0$1 do
12874: LD_EXP 17
12878: PUSH
12879: LD_OWVAR 1
12883: PUSH
12884: LD_INT 35
12886: GREATEREQUAL
12887: AND
12888: IFFALSE 12898
12890: GO 12892
12892: DISABLE
// begin ShowStrings ;
12893: CALL 12899 0 0
// enable ;
12897: ENABLE
// end ;
12898: END
// export function ShowStrings ; begin
12899: LD_INT 0
12901: PPUSH
// if not ingame then
12902: LD_EXP 17
12906: NOT
12907: IFFALSE 12911
// exit ;
12909: GO 13044
// if poprveZobrazeni then
12911: LD_EXP 68
12915: IFFALSE 12951
// begin poprveZobrazeni = false ;
12917: LD_ADDR_EXP 68
12921: PUSH
12922: LD_INT 0
12924: ST_TO_ADDR
// sibyou = 0 ;
12925: LD_ADDR_EXP 69
12929: PUSH
12930: LD_INT 0
12932: ST_TO_ADDR
// sibam = 0 ;
12933: LD_ADDR_EXP 70
12937: PUSH
12938: LD_INT 0
12940: ST_TO_ADDR
// sibcelkem = dif_sibcelkem ;
12941: LD_ADDR_EXP 71
12945: PUSH
12946: LD_EXP 56
12950: ST_TO_ADDR
// end ; display_strings = [ #Ru01-Time , tick ] ;
12951: LD_ADDR_OWVAR 47
12955: PUSH
12956: LD_STRING #Ru01-Time
12958: PUSH
12959: LD_OWVAR 1
12963: PUSH
12964: EMPTY
12965: LIST
12966: LIST
12967: ST_TO_ADDR
// display_strings = display_strings ^ [  ] ^ [ #Ru02-SibAm , sibam ] ;
12968: LD_ADDR_OWVAR 47
12972: PUSH
12973: LD_OWVAR 47
12977: PUSH
12978: LD_STRING 
12980: PUSH
12981: EMPTY
12982: LIST
12983: ADD
12984: PUSH
12985: LD_STRING #Ru02-SibAm
12987: PUSH
12988: LD_EXP 70
12992: PUSH
12993: EMPTY
12994: LIST
12995: LIST
12996: ADD
12997: ST_TO_ADDR
// display_strings = display_strings ^ [ #Ru02-SibYou , sibyou ] ;
12998: LD_ADDR_OWVAR 47
13002: PUSH
13003: LD_OWVAR 47
13007: PUSH
13008: LD_STRING #Ru02-SibYou
13010: PUSH
13011: LD_EXP 69
13015: PUSH
13016: EMPTY
13017: LIST
13018: LIST
13019: ADD
13020: ST_TO_ADDR
// display_strings = display_strings ^ [ #Ru02-Celkem , sibcelkem ] ;
13021: LD_ADDR_OWVAR 47
13025: PUSH
13026: LD_OWVAR 47
13030: PUSH
13031: LD_STRING #Ru02-Celkem
13033: PUSH
13034: LD_EXP 71
13038: PUSH
13039: EMPTY
13040: LIST
13041: LIST
13042: ADD
13043: ST_TO_ADDR
// end ;
13044: LD_VAR 0 1
13048: RET
// every 0 0$0.2 trigger ingame do
13049: LD_EXP 17
13053: IFFALSE 13066
13055: GO 13057
13057: DISABLE
// tick = 0 0$0 ;
13058: LD_ADDR_OWVAR 1
13062: PUSH
13063: LD_INT 0
13065: ST_TO_ADDR
13066: END
// export poprveZobrazeni ; end_of_file export sibyou , sibam , sibcelkem ; var areas , ticks , xy , tech0_speed , tech1_speed ; every 0 0$1 do
13067: GO 13069
13069: DISABLE
// begin sibyou = 0 ;
13070: LD_ADDR_EXP 69
13074: PUSH
13075: LD_INT 0
13077: ST_TO_ADDR
// sibam = 0 ;
13078: LD_ADDR_EXP 70
13082: PUSH
13083: LD_INT 0
13085: ST_TO_ADDR
// areas = [ Lozisko1 , Lozisko2 , Lozisko3 , Lozisko4 , Lozisko5 , Lozisko6 , Lozisko7 ] ;
13086: LD_ADDR_LOC 2
13090: PUSH
13091: LD_INT 8
13093: PUSH
13094: LD_INT 9
13096: PUSH
13097: LD_INT 10
13099: PUSH
13100: LD_INT 11
13102: PUSH
13103: LD_INT 12
13105: PUSH
13106: LD_INT 13
13108: PUSH
13109: LD_INT 14
13111: PUSH
13112: EMPTY
13113: LIST
13114: LIST
13115: LIST
13116: LIST
13117: LIST
13118: LIST
13119: LIST
13120: ST_TO_ADDR
// ticks = [ 0 0$00 , 0 0$00 , 0 0$00 , 0 0$00 , 0 0$00 , 0 0$00 , 0 0$00 ] ;
13121: LD_ADDR_LOC 3
13125: PUSH
13126: LD_INT 0
13128: PUSH
13129: LD_INT 0
13131: PUSH
13132: LD_INT 0
13134: PUSH
13135: LD_INT 0
13137: PUSH
13138: LD_INT 0
13140: PUSH
13141: LD_INT 0
13143: PUSH
13144: LD_INT 0
13146: PUSH
13147: EMPTY
13148: LIST
13149: LIST
13150: LIST
13151: LIST
13152: LIST
13153: LIST
13154: LIST
13155: ST_TO_ADDR
// tech0_speed = 400 ;
13156: LD_ADDR_LOC 5
13160: PUSH
13161: LD_INT 400
13163: ST_TO_ADDR
// tech1_speed = 240 ;
13164: LD_ADDR_LOC 6
13168: PUSH
13169: LD_INT 240
13171: ST_TO_ADDR
// end ;
13172: END
// export function MineBuilded ( mine ) ; var i ; begin
13173: LD_INT 0
13175: PPUSH
13176: PPUSH
// if GetBType ( mine ) <> b_siberite_mine then
13177: LD_VAR 0 1
13181: PPUSH
13182: CALL_OW 266
13186: PUSH
13187: LD_INT 30
13189: NONEQUAL
13190: IFFALSE 13194
// exit ;
13192: GO 13253
// for i = 1 to areas + 0 do
13194: LD_ADDR_VAR 0 3
13198: PUSH
13199: DOUBLE
13200: LD_INT 1
13202: DEC
13203: ST_TO_ADDR
13204: LD_LOC 2
13208: PUSH
13209: LD_INT 0
13211: PLUS
13212: PUSH
13213: FOR_TO
13214: IFFALSE 13251
// begin if IsInArea ( mine , areas [ i ] ) then
13216: LD_VAR 0 1
13220: PPUSH
13221: LD_LOC 2
13225: PUSH
13226: LD_VAR 0 3
13230: ARRAY
13231: PPUSH
13232: CALL_OW 308
13236: IFFALSE 13249
// begin SetStartClockNow ( i ) ;
13238: LD_VAR 0 3
13242: PPUSH
13243: CALL 13690 0 1
// break ;
13247: GO 13251
// end ; end ;
13249: GO 13213
13251: POP
13252: POP
// end ;
13253: LD_VAR 0 2
13257: RET
// export function MineAI ( ) ; var i , b ; begin
13258: LD_INT 0
13260: PPUSH
13261: PPUSH
13262: PPUSH
// for i = 1 to areas + 0 do
13263: LD_ADDR_VAR 0 2
13267: PUSH
13268: DOUBLE
13269: LD_INT 1
13271: DEC
13272: ST_TO_ADDR
13273: LD_LOC 2
13277: PUSH
13278: LD_INT 0
13280: PLUS
13281: PUSH
13282: FOR_TO
13283: IFFALSE 13683
// begin if FilterUnitsInArea ( areas [ i ] , [ [ f_btype , b_siberite_mine ] , [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) then
13285: LD_LOC 2
13289: PUSH
13290: LD_VAR 0 2
13294: ARRAY
13295: PPUSH
13296: LD_INT 30
13298: PUSH
13299: LD_INT 30
13301: PUSH
13302: EMPTY
13303: LIST
13304: LIST
13305: PUSH
13306: LD_INT 50
13308: PUSH
13309: EMPTY
13310: LIST
13311: PUSH
13312: LD_INT 3
13314: PUSH
13315: LD_INT 57
13317: PUSH
13318: EMPTY
13319: LIST
13320: PUSH
13321: EMPTY
13322: LIST
13323: LIST
13324: PUSH
13325: EMPTY
13326: LIST
13327: LIST
13328: LIST
13329: PPUSH
13330: CALL_OW 70
13334: IFFALSE 13677
// begin b = FilterUnitsInArea ( areas [ i ] , [ [ f_btype , b_siberite_mine ] , [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) [ 1 ] ;
13336: LD_ADDR_VAR 0 3
13340: PUSH
13341: LD_LOC 2
13345: PUSH
13346: LD_VAR 0 2
13350: ARRAY
13351: PPUSH
13352: LD_INT 30
13354: PUSH
13355: LD_INT 30
13357: PUSH
13358: EMPTY
13359: LIST
13360: LIST
13361: PUSH
13362: LD_INT 50
13364: PUSH
13365: EMPTY
13366: LIST
13367: PUSH
13368: LD_INT 3
13370: PUSH
13371: LD_INT 57
13373: PUSH
13374: EMPTY
13375: LIST
13376: PUSH
13377: EMPTY
13378: LIST
13379: LIST
13380: PUSH
13381: EMPTY
13382: LIST
13383: LIST
13384: LIST
13385: PPUSH
13386: CALL_OW 70
13390: PUSH
13391: LD_INT 1
13393: ARRAY
13394: ST_TO_ADDR
// if GetBase ( b ) <> 0 then
13395: LD_VAR 0 3
13399: PPUSH
13400: CALL_OW 274
13404: PUSH
13405: LD_INT 0
13407: NONEQUAL
13408: IFFALSE 13677
// begin if GetTech ( tech_sib1 , GetSide ( b ) ) = state_researched then
13410: LD_INT 54
13412: PPUSH
13413: LD_VAR 0 3
13417: PPUSH
13418: CALL_OW 255
13422: PPUSH
13423: CALL_OW 321
13427: PUSH
13428: LD_INT 2
13430: EQUAL
13431: IFFALSE 13556
// begin if tick > ( ticks [ i ] + tech1_speed ) then
13433: LD_OWVAR 1
13437: PUSH
13438: LD_LOC 3
13442: PUSH
13443: LD_VAR 0 2
13447: ARRAY
13448: PUSH
13449: LD_LOC 6
13453: PLUS
13454: GREATER
13455: IFFALSE 13554
// begin if GetSide ( b ) = you then
13457: LD_VAR 0 3
13461: PPUSH
13462: CALL_OW 255
13466: PUSH
13467: LD_EXP 18
13471: EQUAL
13472: IFFALSE 13490
// sibyou = sibyou + 1 else
13474: LD_ADDR_EXP 69
13478: PUSH
13479: LD_EXP 69
13483: PUSH
13484: LD_INT 1
13486: PLUS
13487: ST_TO_ADDR
13488: GO 13504
// sibam = sibam + 1 ;
13490: LD_ADDR_EXP 70
13494: PUSH
13495: LD_EXP 70
13499: PUSH
13500: LD_INT 1
13502: PLUS
13503: ST_TO_ADDR
// if sibcelkem > 0 then
13504: LD_EXP 71
13508: PUSH
13509: LD_INT 0
13511: GREATER
13512: IFFALSE 13528
// sibcelkem = sibcelkem - 1 ;
13514: LD_ADDR_EXP 71
13518: PUSH
13519: LD_EXP 71
13523: PUSH
13524: LD_INT 1
13526: MINUS
13527: ST_TO_ADDR
// SetStartClockSinceMine ( i , ticks [ i ] + tech1_speed ) ;
13528: LD_VAR 0 2
13532: PPUSH
13533: LD_LOC 3
13537: PUSH
13538: LD_VAR 0 2
13542: ARRAY
13543: PUSH
13544: LD_LOC 6
13548: PLUS
13549: PPUSH
13550: CALL 13723 0 2
// end ; end else
13554: GO 13677
// begin if tick > ( ticks [ i ] + tech0_speed ) then
13556: LD_OWVAR 1
13560: PUSH
13561: LD_LOC 3
13565: PUSH
13566: LD_VAR 0 2
13570: ARRAY
13571: PUSH
13572: LD_LOC 5
13576: PLUS
13577: GREATER
13578: IFFALSE 13677
// begin if GetSide ( b ) = you then
13580: LD_VAR 0 3
13584: PPUSH
13585: CALL_OW 255
13589: PUSH
13590: LD_EXP 18
13594: EQUAL
13595: IFFALSE 13613
// sibyou = sibyou + 1 else
13597: LD_ADDR_EXP 69
13601: PUSH
13602: LD_EXP 69
13606: PUSH
13607: LD_INT 1
13609: PLUS
13610: ST_TO_ADDR
13611: GO 13627
// sibam = sibam + 1 ;
13613: LD_ADDR_EXP 70
13617: PUSH
13618: LD_EXP 70
13622: PUSH
13623: LD_INT 1
13625: PLUS
13626: ST_TO_ADDR
// if sibcelkem > 0 then
13627: LD_EXP 71
13631: PUSH
13632: LD_INT 0
13634: GREATER
13635: IFFALSE 13651
// sibcelkem = sibcelkem - 1 ;
13637: LD_ADDR_EXP 71
13641: PUSH
13642: LD_EXP 71
13646: PUSH
13647: LD_INT 1
13649: MINUS
13650: ST_TO_ADDR
// SetStartClockSinceMine ( i , ticks [ i ] + tech0_speed ) ;
13651: LD_VAR 0 2
13655: PPUSH
13656: LD_LOC 3
13660: PUSH
13661: LD_VAR 0 2
13665: ARRAY
13666: PUSH
13667: LD_LOC 5
13671: PLUS
13672: PPUSH
13673: CALL 13723 0 2
// end ; end end ; end ; ShowStrings ;
13677: CALL 12899 0 0
// end ;
13681: GO 13282
13683: POP
13684: POP
// end ;
13685: LD_VAR 0 1
13689: RET
// function SetStartClockNow ( i ) ; begin
13690: LD_INT 0
13692: PPUSH
// ticks = Replace ( ticks , i , tick ) ;
13693: LD_ADDR_LOC 3
13697: PUSH
13698: LD_LOC 3
13702: PPUSH
13703: LD_VAR 0 1
13707: PPUSH
13708: LD_OWVAR 1
13712: PPUSH
13713: CALL_OW 1
13717: ST_TO_ADDR
// end ;
13718: LD_VAR 0 2
13722: RET
// function SetStartClockSinceMine ( i , minedTick ) ; begin
13723: LD_INT 0
13725: PPUSH
// ticks = Replace ( ticks , i , minedTick ) ;
13726: LD_ADDR_LOC 3
13730: PUSH
13731: LD_LOC 3
13735: PPUSH
13736: LD_VAR 0 1
13740: PPUSH
13741: LD_VAR 0 2
13745: PPUSH
13746: CALL_OW 1
13750: ST_TO_ADDR
// end ;
13751: LD_VAR 0 3
13755: RET
// every 0 0$0.1 trigger enable_death_losts do
13756: LD_EXP 24
13760: IFFALSE 13770
13762: GO 13764
13764: DISABLE
// begin MineAI ( ) ;
13765: CALL 13258 0 0
// enable ;
13769: ENABLE
// end ; end_of_file
13770: END
// on BuildingComplete ( building ) do begin MineBuilded ( building ) ;
13771: LD_VAR 0 1
13775: PPUSH
13776: CALL 13173 0 1
// end ;
13780: PPOPN 1
13782: END
// on BuildingCaptured ( building , side , human ) do var un ;
13783: LD_INT 0
13785: PPUSH
// begin if GetBType ( building ) = b_depot or GetBType ( building ) = b_warehouse then
13786: LD_VAR 0 1
13790: PPUSH
13791: CALL_OW 266
13795: PUSH
13796: LD_INT 0
13798: EQUAL
13799: PUSH
13800: LD_VAR 0 1
13804: PPUSH
13805: CALL_OW 266
13809: PUSH
13810: LD_INT 1
13812: EQUAL
13813: OR
13814: IFFALSE 13945
// begin if GetSide ( human ) <> amik then
13816: LD_VAR 0 3
13820: PPUSH
13821: CALL_OW 255
13825: PUSH
13826: LD_EXP 19
13830: NONEQUAL
13831: IFFALSE 13881
// begin SetResourceType ( GetBase ( building ) , mat_cans , Rand ( 0 , 80 ) ) ;
13833: LD_VAR 0 1
13837: PPUSH
13838: CALL_OW 274
13842: PPUSH
13843: LD_INT 1
13845: PPUSH
13846: LD_INT 0
13848: PPUSH
13849: LD_INT 80
13851: PPUSH
13852: CALL_OW 12
13856: PPUSH
13857: CALL_OW 277
// SetResourceType ( GetBase ( building ) , mat_siberit , 0 ) ;
13861: LD_VAR 0 1
13865: PPUSH
13866: CALL_OW 274
13870: PPUSH
13871: LD_INT 3
13873: PPUSH
13874: LD_INT 0
13876: PPUSH
13877: CALL_OW 277
// end ; if GetSide ( human ) = amik then
13881: LD_VAR 0 3
13885: PPUSH
13886: CALL_OW 255
13890: PUSH
13891: LD_EXP 19
13895: EQUAL
13896: IFFALSE 13945
// begin for un in [ followsol1 , followsol2 , followsol3 ] do
13898: LD_ADDR_VAR 0 4
13902: PUSH
13903: LD_EXP 74
13907: PUSH
13908: LD_EXP 75
13912: PUSH
13913: LD_EXP 76
13917: PUSH
13918: EMPTY
13919: LIST
13920: LIST
13921: LIST
13922: PUSH
13923: FOR_IN
13924: IFFALSE 13943
// if un then
13926: LD_VAR 0 4
13930: IFFALSE 13941
// ComStop ( un ) ;
13932: LD_VAR 0 4
13936: PPUSH
13937: CALL_OW 141
13941: GO 13923
13943: POP
13944: POP
// end ; end ; MineBuilded ( building ) ;
13945: LD_VAR 0 1
13949: PPUSH
13950: CALL 13173 0 1
// end ;
13954: PPOPN 4
13956: END
// on UnitGoesToRed ( unit ) do begin if GetType ( unit ) = unit_vehicle and GetControl ( unit ) = control_remote then
13957: LD_VAR 0 1
13961: PPUSH
13962: CALL_OW 247
13966: PUSH
13967: LD_INT 2
13969: EQUAL
13970: PUSH
13971: LD_VAR 0 1
13975: PPUSH
13976: CALL_OW 263
13980: PUSH
13981: LD_INT 2
13983: EQUAL
13984: AND
13985: IFFALSE 13996
// ComUnlink ( unit ) ;
13987: LD_VAR 0 1
13991: PPUSH
13992: CALL_OW 136
// if not powelvyhrozoval and GetType ( unit ) = unit_human and GetSide ( unit ) = amik and not FilterAllUnits ( [ [ f_inarea , StredniBaza ] , [ f_side , amik ] , [ f_type , unit_human ] , [ f_lives , 400 ] ] ) then
13996: LD_EXP 25
14000: NOT
14001: PUSH
14002: LD_VAR 0 1
14006: PPUSH
14007: CALL_OW 247
14011: PUSH
14012: LD_INT 1
14014: EQUAL
14015: AND
14016: PUSH
14017: LD_VAR 0 1
14021: PPUSH
14022: CALL_OW 255
14026: PUSH
14027: LD_EXP 19
14031: EQUAL
14032: AND
14033: PUSH
14034: LD_INT 95
14036: PUSH
14037: LD_INT 37
14039: PUSH
14040: EMPTY
14041: LIST
14042: LIST
14043: PUSH
14044: LD_INT 22
14046: PUSH
14047: LD_EXP 19
14051: PUSH
14052: EMPTY
14053: LIST
14054: LIST
14055: PUSH
14056: LD_INT 21
14058: PUSH
14059: LD_INT 1
14061: PUSH
14062: EMPTY
14063: LIST
14064: LIST
14065: PUSH
14066: LD_INT 24
14068: PUSH
14069: LD_INT 400
14071: PUSH
14072: EMPTY
14073: LIST
14074: LIST
14075: PUSH
14076: EMPTY
14077: LIST
14078: LIST
14079: LIST
14080: LIST
14081: PPUSH
14082: CALL_OW 69
14086: NOT
14087: AND
14088: IFFALSE 14117
// begin powelvyhrozoval = true ;
14090: LD_ADDR_EXP 25
14094: PUSH
14095: LD_INT 1
14097: ST_TO_ADDR
// Wait ( 0 0$7 ) ;
14098: LD_INT 245
14100: PPUSH
14101: CALL_OW 67
// SayRadio ( powel , D3powel-1 ) ;
14105: LD_EXP 16
14109: PPUSH
14110: LD_STRING D3powel-1
14112: PPUSH
14113: CALL_OW 94
// end ; if not powelvyhrozoval2 and GetType ( unit ) = unit_human and GetSide ( unit ) = amik and not FilterAllUnits ( [ [ f_inarea , PravaHorniBaza ] , [ f_side , amik ] , [ f_type , unit_human ] , [ f_lives , 400 ] ] ) then
14117: LD_EXP 26
14121: NOT
14122: PUSH
14123: LD_VAR 0 1
14127: PPUSH
14128: CALL_OW 247
14132: PUSH
14133: LD_INT 1
14135: EQUAL
14136: AND
14137: PUSH
14138: LD_VAR 0 1
14142: PPUSH
14143: CALL_OW 255
14147: PUSH
14148: LD_EXP 19
14152: EQUAL
14153: AND
14154: PUSH
14155: LD_INT 95
14157: PUSH
14158: LD_INT 33
14160: PUSH
14161: EMPTY
14162: LIST
14163: LIST
14164: PUSH
14165: LD_INT 22
14167: PUSH
14168: LD_EXP 19
14172: PUSH
14173: EMPTY
14174: LIST
14175: LIST
14176: PUSH
14177: LD_INT 21
14179: PUSH
14180: LD_INT 1
14182: PUSH
14183: EMPTY
14184: LIST
14185: LIST
14186: PUSH
14187: LD_INT 24
14189: PUSH
14190: LD_INT 400
14192: PUSH
14193: EMPTY
14194: LIST
14195: LIST
14196: PUSH
14197: EMPTY
14198: LIST
14199: LIST
14200: LIST
14201: LIST
14202: PPUSH
14203: CALL_OW 69
14207: NOT
14208: AND
14209: IFFALSE 14262
// begin powelvyhrozoval2 = true ;
14211: LD_ADDR_EXP 26
14215: PUSH
14216: LD_INT 1
14218: ST_TO_ADDR
// Wait ( 0 0$7 ) ;
14219: LD_INT 245
14221: PPUSH
14222: CALL_OW 67
// SayRadio ( powel , D3powel-2 ) ;
14226: LD_EXP 16
14230: PPUSH
14231: LD_STRING D3powel-2
14233: PPUSH
14234: CALL_OW 94
// Say ( vsevolod , D3vse-3 ) ;
14238: LD_EXP 1
14242: PPUSH
14243: LD_STRING D3vse-3
14245: PPUSH
14246: CALL_OW 88
// SayRadio ( powel , D3powel-3 ) ;
14250: LD_EXP 16
14254: PPUSH
14255: LD_STRING D3powel-3
14257: PPUSH
14258: CALL_OW 94
// end ; end ;
14262: PPOPN 1
14264: END
// on VehicleDestroyed ( vehicle , side , nation , x , y , direction , chassis , control , motor , weapon ) do begin if vehicle in amik_attack_listL then
14265: LD_VAR 0 1
14269: PUSH
14270: LD_EXP 20
14274: IN
14275: IFFALSE 14293
// amik_attack_listL = amik_attack_listL diff vehicle ;
14277: LD_ADDR_EXP 20
14281: PUSH
14282: LD_EXP 20
14286: PUSH
14287: LD_VAR 0 1
14291: DIFF
14292: ST_TO_ADDR
// if vehicle in amik_attack_listTR then
14293: LD_VAR 0 1
14297: PUSH
14298: LD_EXP 21
14302: IN
14303: IFFALSE 14321
// amik_attack_listTR = amik_attack_listTR diff vehicle ;
14305: LD_ADDR_EXP 21
14309: PUSH
14310: LD_EXP 21
14314: PUSH
14315: LD_VAR 0 1
14319: DIFF
14320: ST_TO_ADDR
// if vehicle in amik_attack_listR then
14321: LD_VAR 0 1
14325: PUSH
14326: LD_EXP 22
14330: IN
14331: IFFALSE 14349
// amik_attack_listR = amik_attack_listR diff vehicle ;
14333: LD_ADDR_EXP 22
14337: PUSH
14338: LD_EXP 22
14342: PUSH
14343: LD_VAR 0 1
14347: DIFF
14348: ST_TO_ADDR
// end ;
14349: PPOPN 10
14351: END
// on BuildingStarted ( building , unit ) do var cl1 , cl2 ;
14352: LD_INT 0
14354: PPUSH
14355: PPUSH
// begin if GetSide ( building ) = you and not zimatalk then
14356: LD_VAR 0 1
14360: PPUSH
14361: CALL_OW 255
14365: PUSH
14366: LD_EXP 18
14370: EQUAL
14371: PUSH
14372: LD_EXP 28
14376: NOT
14377: AND
14378: IFFALSE 14480
// begin zimatalk = true ;
14380: LD_ADDR_EXP 28
14384: PUSH
14385: LD_INT 1
14387: ST_TO_ADDR
// Wait ( 0 0$15 ) ;
14388: LD_INT 525
14390: PPUSH
14391: CALL_OW 67
// cl1 = NajdiVojaka ;
14395: LD_ADDR_VAR 0 3
14399: PUSH
14400: CALL 11131 0 0
14404: ST_TO_ADDR
// cl2 = NajdiDelnika ;
14405: LD_ADDR_VAR 0 4
14409: PUSH
14410: CALL 11746 0 0
14414: ST_TO_ADDR
// if GetSex ( cl1 ) = sex_male then
14415: LD_VAR 0 3
14419: PPUSH
14420: CALL_OW 258
14424: PUSH
14425: LD_INT 1
14427: EQUAL
14428: IFFALSE 14456
// begin Say ( cl1 , D3nekdo-3 ) ;
14430: LD_VAR 0 3
14434: PPUSH
14435: LD_STRING D3nekdo-3
14437: PPUSH
14438: CALL_OW 88
// Say ( cl2 , D3nekdo-4 ) ;
14442: LD_VAR 0 4
14446: PPUSH
14447: LD_STRING D3nekdo-4
14449: PPUSH
14450: CALL_OW 88
// end else
14454: GO 14480
// begin Say ( cl1 , D3nekdo-3b ) ;
14456: LD_VAR 0 3
14460: PPUSH
14461: LD_STRING D3nekdo-3b
14463: PPUSH
14464: CALL_OW 88
// Say ( cl2 , D3nekdo-4b ) ;
14468: LD_VAR 0 4
14472: PPUSH
14473: LD_STRING D3nekdo-4b
14475: PPUSH
14476: CALL_OW 88
// end ; end ; if GetSide ( building ) = you and GetBType ( building ) = b_lab and not labtalk then
14480: LD_VAR 0 1
14484: PPUSH
14485: CALL_OW 255
14489: PUSH
14490: LD_EXP 18
14494: EQUAL
14495: PUSH
14496: LD_VAR 0 1
14500: PPUSH
14501: CALL_OW 266
14505: PUSH
14506: LD_INT 6
14508: EQUAL
14509: AND
14510: PUSH
14511: LD_EXP 29
14515: NOT
14516: AND
14517: IFFALSE 14558
// begin labtalk = true ;
14519: LD_ADDR_EXP 29
14523: PUSH
14524: LD_INT 1
14526: ST_TO_ADDR
// Wait ( 0 0$5 ) ;
14527: LD_INT 175
14529: PPUSH
14530: CALL_OW 67
// Say ( vsevolod , D3vse-1 ) ;
14534: LD_EXP 1
14538: PPUSH
14539: LD_STRING D3vse-1
14541: PPUSH
14542: CALL_OW 88
// Say ( NajdiVedce , D3nekdo-5 ) ;
14546: CALL 11360 0 0
14550: PPUSH
14551: LD_STRING D3nekdo-5
14553: PPUSH
14554: CALL_OW 88
// end ; end ; end_of_file
14558: PPOPN 4
14560: END
// every 0 0$3 do
14561: GO 14563
14563: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14564: LD_EXP 45
14568: PUSH
14569: LD_INT 1
14571: ARRAY
14572: PPUSH
14573: LD_EXP 45
14577: PUSH
14578: LD_INT 2
14580: ARRAY
14581: PPUSH
14582: CALL_OW 12
14586: PPUSH
14587: CALL_OW 67
// if GetResourceArea ( Bedny1 , mat_cans ) < 10 then
14591: LD_INT 15
14593: PPUSH
14594: LD_INT 1
14596: PPUSH
14597: CALL_OW 287
14601: PUSH
14602: LD_INT 10
14604: LESS
14605: IFFALSE 14640
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny1 , true ) ;
14607: LD_EXP 46
14611: PUSH
14612: LD_INT 1
14614: ARRAY
14615: PPUSH
14616: LD_EXP 46
14620: PUSH
14621: LD_INT 2
14623: ARRAY
14624: PPUSH
14625: CALL_OW 12
14629: PPUSH
14630: LD_INT 15
14632: PPUSH
14633: LD_INT 1
14635: PPUSH
14636: CALL 12035 0 3
// enable ;
14640: ENABLE
// end ;
14641: END
// every 0 0$3 do
14642: GO 14644
14644: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14645: LD_EXP 45
14649: PUSH
14650: LD_INT 1
14652: ARRAY
14653: PPUSH
14654: LD_EXP 45
14658: PUSH
14659: LD_INT 2
14661: ARRAY
14662: PPUSH
14663: CALL_OW 12
14667: PPUSH
14668: CALL_OW 67
// if GetResourceArea ( Bedny2 , mat_cans ) < 10 then
14672: LD_INT 16
14674: PPUSH
14675: LD_INT 1
14677: PPUSH
14678: CALL_OW 287
14682: PUSH
14683: LD_INT 10
14685: LESS
14686: IFFALSE 14721
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny2 , true ) ;
14688: LD_EXP 46
14692: PUSH
14693: LD_INT 1
14695: ARRAY
14696: PPUSH
14697: LD_EXP 46
14701: PUSH
14702: LD_INT 2
14704: ARRAY
14705: PPUSH
14706: CALL_OW 12
14710: PPUSH
14711: LD_INT 16
14713: PPUSH
14714: LD_INT 1
14716: PPUSH
14717: CALL 12035 0 3
// enable ;
14721: ENABLE
// end ;
14722: END
// every 0 0$3 do
14723: GO 14725
14725: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14726: LD_EXP 45
14730: PUSH
14731: LD_INT 1
14733: ARRAY
14734: PPUSH
14735: LD_EXP 45
14739: PUSH
14740: LD_INT 2
14742: ARRAY
14743: PPUSH
14744: CALL_OW 12
14748: PPUSH
14749: CALL_OW 67
// if GetResourceArea ( Bedny3 , mat_cans ) < 10 then
14753: LD_INT 17
14755: PPUSH
14756: LD_INT 1
14758: PPUSH
14759: CALL_OW 287
14763: PUSH
14764: LD_INT 10
14766: LESS
14767: IFFALSE 14802
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny3 , true ) ;
14769: LD_EXP 46
14773: PUSH
14774: LD_INT 1
14776: ARRAY
14777: PPUSH
14778: LD_EXP 46
14782: PUSH
14783: LD_INT 2
14785: ARRAY
14786: PPUSH
14787: CALL_OW 12
14791: PPUSH
14792: LD_INT 17
14794: PPUSH
14795: LD_INT 1
14797: PPUSH
14798: CALL 12035 0 3
// enable ;
14802: ENABLE
// end ;
14803: END
// every 0 0$3 do
14804: GO 14806
14806: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14807: LD_EXP 45
14811: PUSH
14812: LD_INT 1
14814: ARRAY
14815: PPUSH
14816: LD_EXP 45
14820: PUSH
14821: LD_INT 2
14823: ARRAY
14824: PPUSH
14825: CALL_OW 12
14829: PPUSH
14830: CALL_OW 67
// if GetResourceArea ( Bedny4 , mat_cans ) < 10 then
14834: LD_INT 18
14836: PPUSH
14837: LD_INT 1
14839: PPUSH
14840: CALL_OW 287
14844: PUSH
14845: LD_INT 10
14847: LESS
14848: IFFALSE 14883
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny4 , true ) ;
14850: LD_EXP 46
14854: PUSH
14855: LD_INT 1
14857: ARRAY
14858: PPUSH
14859: LD_EXP 46
14863: PUSH
14864: LD_INT 2
14866: ARRAY
14867: PPUSH
14868: CALL_OW 12
14872: PPUSH
14873: LD_INT 18
14875: PPUSH
14876: LD_INT 1
14878: PPUSH
14879: CALL 12035 0 3
// enable ;
14883: ENABLE
// end ;
14884: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) do var x , y ;
14885: LD_INT 22
14887: PUSH
14888: LD_EXP 18
14892: PUSH
14893: EMPTY
14894: LIST
14895: LIST
14896: PUSH
14897: LD_INT 21
14899: PUSH
14900: LD_INT 3
14902: PUSH
14903: EMPTY
14904: LIST
14905: LIST
14906: PUSH
14907: LD_INT 57
14909: PUSH
14910: EMPTY
14911: LIST
14912: PUSH
14913: EMPTY
14914: LIST
14915: LIST
14916: LIST
14917: PPUSH
14918: CALL_OW 69
14922: IFFALSE 15073
14924: GO 14926
14926: DISABLE
14927: LD_INT 0
14929: PPUSH
14930: PPUSH
// begin x = GetX ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
14931: LD_ADDR_VAR 0 1
14935: PUSH
14936: LD_INT 22
14938: PUSH
14939: LD_EXP 18
14943: PUSH
14944: EMPTY
14945: LIST
14946: LIST
14947: PUSH
14948: LD_INT 21
14950: PUSH
14951: LD_INT 3
14953: PUSH
14954: EMPTY
14955: LIST
14956: LIST
14957: PUSH
14958: LD_INT 57
14960: PUSH
14961: EMPTY
14962: LIST
14963: PUSH
14964: EMPTY
14965: LIST
14966: LIST
14967: LIST
14968: PPUSH
14969: CALL_OW 69
14973: PUSH
14974: LD_INT 1
14976: ARRAY
14977: PPUSH
14978: CALL_OW 250
14982: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
14983: LD_ADDR_VAR 0 2
14987: PUSH
14988: LD_INT 22
14990: PUSH
14991: LD_EXP 18
14995: PUSH
14996: EMPTY
14997: LIST
14998: LIST
14999: PUSH
15000: LD_INT 21
15002: PUSH
15003: LD_INT 3
15005: PUSH
15006: EMPTY
15007: LIST
15008: LIST
15009: PUSH
15010: LD_INT 57
15012: PUSH
15013: EMPTY
15014: LIST
15015: PUSH
15016: EMPTY
15017: LIST
15018: LIST
15019: LIST
15020: PPUSH
15021: CALL_OW 69
15025: PUSH
15026: LD_INT 1
15028: ARRAY
15029: PPUSH
15030: CALL_OW 251
15034: ST_TO_ADDR
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15035: LD_INT 700
15037: PPUSH
15038: LD_INT 1400
15040: PPUSH
15041: CALL_OW 12
15045: PPUSH
15046: CALL_OW 67
// CreateCratesXYR ( 4 , x , y , 9 , true ) ;
15050: LD_INT 4
15052: PPUSH
15053: LD_VAR 0 1
15057: PPUSH
15058: LD_VAR 0 2
15062: PPUSH
15063: LD_INT 9
15065: PPUSH
15066: LD_INT 1
15068: PPUSH
15069: CALL_OW 56
// end ; end_of_file
15073: PPOPN 2
15075: END
// every 0 0$1 do var nakl , bedny ;
15076: GO 15078
15078: DISABLE
15079: LD_INT 0
15081: PPUSH
15082: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
15083: LD_ADDR_VAR 0 1
15087: PUSH
15088: LD_INT 22
15090: PUSH
15091: LD_EXP 19
15095: PUSH
15096: EMPTY
15097: LIST
15098: LIST
15099: PUSH
15100: LD_INT 21
15102: PUSH
15103: LD_INT 2
15105: PUSH
15106: EMPTY
15107: LIST
15108: LIST
15109: PUSH
15110: LD_INT 34
15112: PUSH
15113: LD_INT 12
15115: PUSH
15116: EMPTY
15117: LIST
15118: LIST
15119: PUSH
15120: EMPTY
15121: LIST
15122: LIST
15123: LIST
15124: PPUSH
15125: CALL_OW 69
15129: ST_TO_ADDR
// if nakl then
15130: LD_VAR 0 1
15134: IFFALSE 15234
// begin nakl = nakl [ 1 ] ;
15136: LD_ADDR_VAR 0 1
15140: PUSH
15141: LD_VAR 0 1
15145: PUSH
15146: LD_INT 1
15148: ARRAY
15149: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
15150: LD_VAR 0 1
15154: PPUSH
15155: CALL_OW 256
15159: PUSH
15160: LD_EXP 42
15164: LESS
15165: IFFALSE 15188
// begin ComMoveToArea ( nakl , LevaRepair ) ;
15167: LD_VAR 0 1
15171: PPUSH
15172: LD_INT 25
15174: PPUSH
15175: CALL_OW 113
// Wait ( 2 2$20 ) ;
15179: LD_INT 4900
15181: PPUSH
15182: CALL_OW 67
// end else
15186: GO 15234
// begin bedny = GetListOfCratesInArea ( SbiraniBeden ) ;
15188: LD_ADDR_VAR 0 2
15192: PUSH
15193: LD_INT 42
15195: PPUSH
15196: CALL_OW 435
15200: ST_TO_ADDR
// if bedny then
15201: LD_VAR 0 2
15205: IFFALSE 15234
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
15207: LD_VAR 0 1
15211: PPUSH
15212: LD_VAR 0 2
15216: PUSH
15217: LD_INT 1
15219: ARRAY
15220: PPUSH
15221: LD_VAR 0 2
15225: PUSH
15226: LD_INT 2
15228: ARRAY
15229: PPUSH
15230: CALL_OW 117
// end ; end ; enable ;
15234: ENABLE
// end ;
15235: PPOPN 2
15237: END
// export Tech_list_Amik ; every 0 0$2 trigger tick > dif_research_wait and tech_list_amik + 0 >= 1 do var i ;
15238: LD_OWVAR 1
15242: PUSH
15243: LD_EXP 62
15247: GREATER
15248: PUSH
15249: LD_EXP 72
15253: PUSH
15254: LD_INT 0
15256: PLUS
15257: PUSH
15258: LD_INT 1
15260: GREATEREQUAL
15261: AND
15262: IFFALSE 15460
15264: GO 15266
15266: DISABLE
15267: LD_INT 0
15269: PPUSH
// begin for i in [ amlabak , amlabak2 , amlabak3 , amlabak4 ] do
15270: LD_ADDR_VAR 0 1
15274: PUSH
15275: LD_INT 79
15277: PUSH
15278: LD_INT 80
15280: PUSH
15281: LD_INT 81
15283: PUSH
15284: LD_INT 82
15286: PUSH
15287: EMPTY
15288: LIST
15289: LIST
15290: LIST
15291: LIST
15292: PUSH
15293: FOR_IN
15294: IFFALSE 15457
// begin if ( GetActResearch ( i ) and GetSide ( i ) = amik ) or ( not IsOk ( i ) and GetSide ( i ) = amik ) then
15296: LD_VAR 0 1
15300: PPUSH
15301: CALL_OW 485
15305: PUSH
15306: LD_VAR 0 1
15310: PPUSH
15311: CALL_OW 255
15315: PUSH
15316: LD_EXP 19
15320: EQUAL
15321: AND
15322: PUSH
15323: LD_VAR 0 1
15327: PPUSH
15328: CALL_OW 302
15332: NOT
15333: PUSH
15334: LD_VAR 0 1
15338: PPUSH
15339: CALL_OW 255
15343: PUSH
15344: LD_EXP 19
15348: EQUAL
15349: AND
15350: OR
15351: IFFALSE 15355
// break ;
15353: GO 15457
// if IsOk ( i ) and GetSide ( i ) = amik and UnitsInside ( i ) and ( not GetActResearch ( i ) ) and GetBase ( i ) <> 0 and CanBeResearched ( i , Tech_list_Amik [ 1 ] ) then
15355: LD_VAR 0 1
15359: PPUSH
15360: CALL_OW 302
15364: PUSH
15365: LD_VAR 0 1
15369: PPUSH
15370: CALL_OW 255
15374: PUSH
15375: LD_EXP 19
15379: EQUAL
15380: AND
15381: PUSH
15382: LD_VAR 0 1
15386: PPUSH
15387: CALL_OW 313
15391: AND
15392: PUSH
15393: LD_VAR 0 1
15397: PPUSH
15398: CALL_OW 485
15402: NOT
15403: AND
15404: PUSH
15405: LD_VAR 0 1
15409: PPUSH
15410: CALL_OW 274
15414: PUSH
15415: LD_INT 0
15417: NONEQUAL
15418: AND
15419: PUSH
15420: LD_VAR 0 1
15424: PPUSH
15425: LD_EXP 72
15429: PUSH
15430: LD_INT 1
15432: ARRAY
15433: PPUSH
15434: CALL_OW 430
15438: AND
15439: IFFALSE 15455
// begin Zkoumej ( 1 , i ) ;
15441: LD_INT 1
15443: PPUSH
15444: LD_VAR 0 1
15448: PPUSH
15449: CALL 15463 0 2
// break ;
15453: GO 15457
// end ; end ;
15455: GO 15293
15457: POP
15458: POP
// enable ;
15459: ENABLE
// end ;
15460: PPOPN 1
15462: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
15463: LD_INT 0
15465: PPUSH
// if Tech_list_Amik + 0 >= 1 then
15466: LD_EXP 72
15470: PUSH
15471: LD_INT 0
15473: PLUS
15474: PUSH
15475: LD_INT 1
15477: GREATEREQUAL
15478: IFFALSE 15518
// if Researched ( amik , Tech_list_Amik [ 1 ] ) then
15480: LD_EXP 19
15484: PPUSH
15485: LD_EXP 72
15489: PUSH
15490: LD_INT 1
15492: ARRAY
15493: PPUSH
15494: CALL_OW 325
15498: IFFALSE 15518
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
15500: LD_ADDR_EXP 72
15504: PUSH
15505: LD_EXP 72
15509: PPUSH
15510: LD_INT 1
15512: PPUSH
15513: CALL_OW 3
15517: ST_TO_ADDR
// if Tech_list_Amik and not GetActResearch ( laborator ) then
15518: LD_EXP 72
15522: PUSH
15523: LD_VAR 0 2
15527: PPUSH
15528: CALL_OW 485
15532: NOT
15533: AND
15534: IFFALSE 15554
// ComResearch ( laborator , Tech_list_Amik [ 1 ] ) ;
15536: LD_VAR 0 2
15540: PPUSH
15541: LD_EXP 72
15545: PUSH
15546: LD_INT 1
15548: ARRAY
15549: PPUSH
15550: CALL_OW 124
// end ;
15554: LD_VAR 0 3
15558: RET
// every 0 0$1 trigger tech_list_amik + 0 >= 1 do
15559: LD_EXP 72
15563: PUSH
15564: LD_INT 0
15566: PLUS
15567: PUSH
15568: LD_INT 1
15570: GREATEREQUAL
15571: IFFALSE 15615
15573: GO 15575
15575: DISABLE
// begin if Researched ( amik , Tech_list_Amik [ 1 ] ) then
15576: LD_EXP 19
15580: PPUSH
15581: LD_EXP 72
15585: PUSH
15586: LD_INT 1
15588: ARRAY
15589: PPUSH
15590: CALL_OW 325
15594: IFFALSE 15614
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
15596: LD_ADDR_EXP 72
15600: PUSH
15601: LD_EXP 72
15605: PPUSH
15606: LD_INT 1
15608: PPUSH
15609: CALL_OW 3
15613: ST_TO_ADDR
// enable ;
15614: ENABLE
// end ;
15615: END
// function LinkVehicle ( Veh ) ; begin
15616: LD_INT 0
15618: PPUSH
// ComLinkTo ( Veh , NajdiNejmeneObsazenehoMecha ( UnitsInside ( am_vez1 ) ^ UnitsInside ( am_vez2 ) ) ) ;
15619: LD_VAR 0 1
15623: PPUSH
15624: LD_INT 83
15626: PPUSH
15627: CALL_OW 313
15631: PUSH
15632: LD_INT 84
15634: PPUSH
15635: CALL_OW 313
15639: ADD
15640: PPUSH
15641: CALL 15655 0 1
15645: PPUSH
15646: CALL_OW 135
// end ;
15650: LD_VAR 0 2
15654: RET
// export function NajdiNejmeneObsazenehoMecha ( list ) ; var un , i ; begin
15655: LD_INT 0
15657: PPUSH
15658: PPUSH
15659: PPUSH
// if not list then
15660: LD_VAR 0 1
15664: NOT
15665: IFFALSE 15677
// result = false else
15667: LD_ADDR_VAR 0 2
15671: PUSH
15672: LD_INT 0
15674: ST_TO_ADDR
15675: GO 15750
// begin un = list [ 1 ] ;
15677: LD_ADDR_VAR 0 3
15681: PUSH
15682: LD_VAR 0 1
15686: PUSH
15687: LD_INT 1
15689: ARRAY
15690: ST_TO_ADDR
// for i in list do
15691: LD_ADDR_VAR 0 4
15695: PUSH
15696: LD_VAR 0 1
15700: PUSH
15701: FOR_IN
15702: IFFALSE 15738
// if UnitsLinked ( i ) < UnitsLinked ( un ) then
15704: LD_VAR 0 4
15708: PPUSH
15709: CALL_OW 432
15713: PUSH
15714: LD_VAR 0 3
15718: PPUSH
15719: CALL_OW 432
15723: LESS
15724: IFFALSE 15736
// un = i ;
15726: LD_ADDR_VAR 0 3
15730: PUSH
15731: LD_VAR 0 4
15735: ST_TO_ADDR
15736: GO 15701
15738: POP
15739: POP
// result = un ;
15740: LD_ADDR_VAR 0 2
15744: PUSH
15745: LD_VAR 0 3
15749: ST_TO_ADDR
// end ; end ;
15750: LD_VAR 0 2
15754: RET
// every 0 0$0.8 trigger FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) do
15755: LD_INT 22
15757: PUSH
15758: LD_EXP 19
15762: PUSH
15763: EMPTY
15764: LIST
15765: LIST
15766: PUSH
15767: LD_INT 21
15769: PUSH
15770: LD_INT 2
15772: PUSH
15773: EMPTY
15774: LIST
15775: LIST
15776: PUSH
15777: LD_INT 3
15779: PUSH
15780: LD_INT 61
15782: PUSH
15783: EMPTY
15784: LIST
15785: PUSH
15786: EMPTY
15787: LIST
15788: LIST
15789: PUSH
15790: LD_INT 50
15792: PUSH
15793: EMPTY
15794: LIST
15795: PUSH
15796: EMPTY
15797: LIST
15798: LIST
15799: LIST
15800: LIST
15801: PPUSH
15802: CALL_OW 69
15806: IFFALSE 15872
15808: GO 15810
15810: DISABLE
// begin LinkVehicle ( FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) [ 1 ] ) ;
15811: LD_INT 22
15813: PUSH
15814: LD_EXP 19
15818: PUSH
15819: EMPTY
15820: LIST
15821: LIST
15822: PUSH
15823: LD_INT 21
15825: PUSH
15826: LD_INT 2
15828: PUSH
15829: EMPTY
15830: LIST
15831: LIST
15832: PUSH
15833: LD_INT 3
15835: PUSH
15836: LD_INT 61
15838: PUSH
15839: EMPTY
15840: LIST
15841: PUSH
15842: EMPTY
15843: LIST
15844: LIST
15845: PUSH
15846: LD_INT 50
15848: PUSH
15849: EMPTY
15850: LIST
15851: PUSH
15852: EMPTY
15853: LIST
15854: LIST
15855: LIST
15856: LIST
15857: PPUSH
15858: CALL_OW 69
15862: PUSH
15863: LD_INT 1
15865: ARRAY
15866: PPUSH
15867: CALL 15616 0 1
// enable ;
15871: ENABLE
// end ;
15872: END
// every 0 0$1 do var lidi , un ;
15873: GO 15875
15875: DISABLE
15876: LD_INT 0
15878: PPUSH
15879: PPUSH
// begin lidi = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_human ] , [ f_not , [ f_inarea , LevaBazaExpanded ] ] , [ f_not , [ f_inarea , PravaHorniBazaExpanded ] ] , [ f_not , [ f_inarea , PravaBazaExpanded ] ] , [ f_not , [ f_inarea , StredniBazaExpanded ] ] ] ) diff obsazovac diff followsol1 diff followsol2 diff followsol3 ;
15880: LD_ADDR_VAR 0 1
15884: PUSH
15885: LD_INT 22
15887: PUSH
15888: LD_EXP 19
15892: PUSH
15893: EMPTY
15894: LIST
15895: LIST
15896: PUSH
15897: LD_INT 21
15899: PUSH
15900: LD_INT 1
15902: PUSH
15903: EMPTY
15904: LIST
15905: LIST
15906: PUSH
15907: LD_INT 3
15909: PUSH
15910: LD_INT 95
15912: PUSH
15913: LD_INT 32
15915: PUSH
15916: EMPTY
15917: LIST
15918: LIST
15919: PUSH
15920: EMPTY
15921: LIST
15922: LIST
15923: PUSH
15924: LD_INT 3
15926: PUSH
15927: LD_INT 95
15929: PUSH
15930: LD_INT 34
15932: PUSH
15933: EMPTY
15934: LIST
15935: LIST
15936: PUSH
15937: EMPTY
15938: LIST
15939: LIST
15940: PUSH
15941: LD_INT 3
15943: PUSH
15944: LD_INT 95
15946: PUSH
15947: LD_INT 36
15949: PUSH
15950: EMPTY
15951: LIST
15952: LIST
15953: PUSH
15954: EMPTY
15955: LIST
15956: LIST
15957: PUSH
15958: LD_INT 3
15960: PUSH
15961: LD_INT 95
15963: PUSH
15964: LD_INT 38
15966: PUSH
15967: EMPTY
15968: LIST
15969: LIST
15970: PUSH
15971: EMPTY
15972: LIST
15973: LIST
15974: PUSH
15975: EMPTY
15976: LIST
15977: LIST
15978: LIST
15979: LIST
15980: LIST
15981: LIST
15982: PPUSH
15983: CALL_OW 69
15987: PUSH
15988: LD_EXP 73
15992: DIFF
15993: PUSH
15994: LD_EXP 74
15998: DIFF
15999: PUSH
16000: LD_EXP 75
16004: DIFF
16005: PUSH
16006: LD_EXP 76
16010: DIFF
16011: ST_TO_ADDR
// if lidi then
16012: LD_VAR 0 1
16016: IFFALSE 16054
// for un in lidi do
16018: LD_ADDR_VAR 0 2
16022: PUSH
16023: LD_VAR 0 1
16027: PUSH
16028: FOR_IN
16029: IFFALSE 16052
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) ;
16031: LD_VAR 0 2
16035: PPUSH
16036: LD_VAR 0 2
16040: PPUSH
16041: CALL 9996 0 1
16045: PPUSH
16046: CALL_OW 113
16050: GO 16028
16052: POP
16053: POP
// enable ;
16054: ENABLE
// end ; end_of_file
16055: PPOPN 2
16057: END
// every 0 0$1 trigger enable_death_losts do
16058: LD_EXP 24
16062: IFFALSE 16101
16064: GO 16066
16066: DISABLE
// begin if sibcelkem <= 0 then
16067: LD_EXP 71
16071: PUSH
16072: LD_INT 0
16074: LESSEQUAL
16075: IFFALSE 16100
// begin if sibyou >= 750 then
16077: LD_EXP 69
16081: PUSH
16082: LD_INT 750
16084: GREATEREQUAL
16085: IFFALSE 16093
// KonecMise else
16087: CALL 1132 0 0
16091: GO 16100
// YouLost ( amvytezili ) ;
16093: LD_STRING amvytezili
16095: PPUSH
16096: CALL_OW 104
// end ; enable ;
16100: ENABLE
// end ; end_of_file
16101: END
// export obsazovac , followsol1 , followsol2 , followsol3 ; every 0 0$2 do var bud , list ;
16102: GO 16104
16104: DISABLE
16105: LD_INT 0
16107: PPUSH
16108: PPUSH
// begin if IsPlaced ( obsazovac ) and IsOk ( obsazovac ) then
16109: LD_EXP 73
16113: PPUSH
16114: CALL_OW 305
16118: PUSH
16119: LD_EXP 73
16123: PPUSH
16124: CALL_OW 302
16128: AND
16129: IFFALSE 16645
// begin if IsInArea ( obsazovac , PravaPredTov ) then
16131: LD_EXP 73
16135: PPUSH
16136: LD_INT 46
16138: PPUSH
16139: CALL_OW 308
16143: IFFALSE 16162
// ComMoveXY ( obsazovac , 148 , 72 ) else
16145: LD_EXP 73
16149: PPUSH
16150: LD_INT 148
16152: PPUSH
16153: LD_INT 72
16155: PPUSH
16156: CALL_OW 111
16160: GO 16645
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_or , [ f_side , you ] , [ f_side , amik ] ] , [ f_type , unit_building ] ] ) then
16162: LD_INT 44
16164: PPUSH
16165: LD_INT 2
16167: PUSH
16168: LD_INT 22
16170: PUSH
16171: LD_EXP 18
16175: PUSH
16176: EMPTY
16177: LIST
16178: LIST
16179: PUSH
16180: LD_INT 22
16182: PUSH
16183: LD_EXP 19
16187: PUSH
16188: EMPTY
16189: LIST
16190: LIST
16191: PUSH
16192: EMPTY
16193: LIST
16194: LIST
16195: LIST
16196: PUSH
16197: LD_INT 21
16199: PUSH
16200: LD_INT 3
16202: PUSH
16203: EMPTY
16204: LIST
16205: LIST
16206: PUSH
16207: EMPTY
16208: LIST
16209: LIST
16210: PPUSH
16211: CALL_OW 70
16215: IFFALSE 16645
// begin if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_empty ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
16217: LD_INT 44
16219: PPUSH
16220: LD_INT 22
16222: PUSH
16223: LD_EXP 18
16227: PUSH
16228: EMPTY
16229: LIST
16230: LIST
16231: PUSH
16232: LD_INT 58
16234: PUSH
16235: EMPTY
16236: LIST
16237: PUSH
16238: LD_INT 2
16240: PUSH
16241: LD_INT 30
16243: PUSH
16244: LD_INT 0
16246: PUSH
16247: EMPTY
16248: LIST
16249: LIST
16250: PUSH
16251: LD_INT 30
16253: PUSH
16254: LD_INT 1
16256: PUSH
16257: EMPTY
16258: LIST
16259: LIST
16260: PUSH
16261: EMPTY
16262: LIST
16263: LIST
16264: LIST
16265: PUSH
16266: EMPTY
16267: LIST
16268: LIST
16269: LIST
16270: PPUSH
16271: CALL_OW 70
16275: IFFALSE 16351
// ComEnterUnit ( obsazovac , FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_empty ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) [ 1 ] ) else
16277: LD_EXP 73
16281: PPUSH
16282: LD_INT 44
16284: PPUSH
16285: LD_INT 22
16287: PUSH
16288: LD_EXP 18
16292: PUSH
16293: EMPTY
16294: LIST
16295: LIST
16296: PUSH
16297: LD_INT 58
16299: PUSH
16300: EMPTY
16301: LIST
16302: PUSH
16303: LD_INT 2
16305: PUSH
16306: LD_INT 30
16308: PUSH
16309: LD_INT 0
16311: PUSH
16312: EMPTY
16313: LIST
16314: LIST
16315: PUSH
16316: LD_INT 30
16318: PUSH
16319: LD_INT 1
16321: PUSH
16322: EMPTY
16323: LIST
16324: LIST
16325: PUSH
16326: EMPTY
16327: LIST
16328: LIST
16329: LIST
16330: PUSH
16331: EMPTY
16332: LIST
16333: LIST
16334: LIST
16335: PPUSH
16336: CALL_OW 70
16340: PUSH
16341: LD_INT 1
16343: ARRAY
16344: PPUSH
16345: CALL_OW 120
16349: GO 16645
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_not , [ f_occupied ] ] , [ f_type , unit_building ] ] ) then
16351: LD_INT 44
16353: PPUSH
16354: LD_INT 22
16356: PUSH
16357: LD_EXP 18
16361: PUSH
16362: EMPTY
16363: LIST
16364: LIST
16365: PUSH
16366: LD_INT 3
16368: PUSH
16369: LD_INT 59
16371: PUSH
16372: EMPTY
16373: LIST
16374: PUSH
16375: EMPTY
16376: LIST
16377: LIST
16378: PUSH
16379: LD_INT 21
16381: PUSH
16382: LD_INT 3
16384: PUSH
16385: EMPTY
16386: LIST
16387: LIST
16388: PUSH
16389: EMPTY
16390: LIST
16391: LIST
16392: LIST
16393: PPUSH
16394: CALL_OW 70
16398: IFFALSE 16527
// begin list = FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_not , [ f_occupied ] ] , [ f_type , unit_building ] ] ) ;
16400: LD_ADDR_VAR 0 2
16404: PUSH
16405: LD_INT 44
16407: PPUSH
16408: LD_INT 22
16410: PUSH
16411: LD_EXP 18
16415: PUSH
16416: EMPTY
16417: LIST
16418: LIST
16419: PUSH
16420: LD_INT 3
16422: PUSH
16423: LD_INT 59
16425: PUSH
16426: EMPTY
16427: LIST
16428: PUSH
16429: EMPTY
16430: LIST
16431: LIST
16432: PUSH
16433: LD_INT 21
16435: PUSH
16436: LD_INT 3
16438: PUSH
16439: EMPTY
16440: LIST
16441: LIST
16442: PUSH
16443: EMPTY
16444: LIST
16445: LIST
16446: LIST
16447: PPUSH
16448: CALL_OW 70
16452: ST_TO_ADDR
// bud = list [ 1 ] ;
16453: LD_ADDR_VAR 0 1
16457: PUSH
16458: LD_VAR 0 2
16462: PUSH
16463: LD_INT 1
16465: ARRAY
16466: ST_TO_ADDR
// SetTaskList ( obsazovac , [ [ e , GetX ( bud ) , GetY ( bud ) , bud , 0 , 0 , 0 ] ] ) ;
16467: LD_EXP 73
16471: PPUSH
16472: LD_STRING e
16474: PUSH
16475: LD_VAR 0 1
16479: PPUSH
16480: CALL_OW 250
16484: PUSH
16485: LD_VAR 0 1
16489: PPUSH
16490: CALL_OW 251
16494: PUSH
16495: LD_VAR 0 1
16499: PUSH
16500: LD_INT 0
16502: PUSH
16503: LD_INT 0
16505: PUSH
16506: LD_INT 0
16508: PUSH
16509: EMPTY
16510: LIST
16511: LIST
16512: LIST
16513: LIST
16514: LIST
16515: LIST
16516: LIST
16517: PUSH
16518: EMPTY
16519: LIST
16520: PPUSH
16521: CALL_OW 446
// end else
16525: GO 16645
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
16527: LD_INT 44
16529: PPUSH
16530: LD_INT 22
16532: PUSH
16533: LD_EXP 19
16537: PUSH
16538: EMPTY
16539: LIST
16540: LIST
16541: PUSH
16542: LD_INT 2
16544: PUSH
16545: LD_INT 30
16547: PUSH
16548: LD_INT 0
16550: PUSH
16551: EMPTY
16552: LIST
16553: LIST
16554: PUSH
16555: LD_INT 30
16557: PUSH
16558: LD_INT 1
16560: PUSH
16561: EMPTY
16562: LIST
16563: LIST
16564: PUSH
16565: EMPTY
16566: LIST
16567: LIST
16568: LIST
16569: PUSH
16570: EMPTY
16571: LIST
16572: LIST
16573: PPUSH
16574: CALL_OW 70
16578: IFFALSE 16645
// ComEnterUnit ( obsazovac , FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) [ 1 ] ) ;
16580: LD_EXP 73
16584: PPUSH
16585: LD_INT 44
16587: PPUSH
16588: LD_INT 22
16590: PUSH
16591: LD_EXP 19
16595: PUSH
16596: EMPTY
16597: LIST
16598: LIST
16599: PUSH
16600: LD_INT 2
16602: PUSH
16603: LD_INT 30
16605: PUSH
16606: LD_INT 0
16608: PUSH
16609: EMPTY
16610: LIST
16611: LIST
16612: PUSH
16613: LD_INT 30
16615: PUSH
16616: LD_INT 1
16618: PUSH
16619: EMPTY
16620: LIST
16621: LIST
16622: PUSH
16623: EMPTY
16624: LIST
16625: LIST
16626: LIST
16627: PUSH
16628: EMPTY
16629: LIST
16630: LIST
16631: PPUSH
16632: CALL_OW 70
16636: PUSH
16637: LD_INT 1
16639: ARRAY
16640: PPUSH
16641: CALL_OW 120
// end ; end ; enable ;
16645: ENABLE
// end ;
16646: PPOPN 2
16648: END
// every 0 0$2 do var un ;
16649: GO 16651
16651: DISABLE
16652: LD_INT 0
16654: PPUSH
// begin for un in [ followsol1 , followsol2 , followsol3 ] do
16655: LD_ADDR_VAR 0 1
16659: PUSH
16660: LD_EXP 74
16664: PUSH
16665: LD_EXP 75
16669: PUSH
16670: LD_EXP 76
16674: PUSH
16675: EMPTY
16676: LIST
16677: LIST
16678: LIST
16679: PUSH
16680: FOR_IN
16681: IFFALSE 16895
// begin if IsPlaced ( un ) and IsOk ( un ) and not IsInUnit ( un ) then
16683: LD_VAR 0 1
16687: PPUSH
16688: CALL_OW 305
16692: PUSH
16693: LD_VAR 0 1
16697: PPUSH
16698: CALL_OW 302
16702: AND
16703: PUSH
16704: LD_VAR 0 1
16708: PPUSH
16709: CALL_OW 310
16713: NOT
16714: AND
16715: IFFALSE 16893
// begin if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_empty ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) then
16717: LD_INT 44
16719: PPUSH
16720: LD_INT 22
16722: PUSH
16723: LD_EXP 19
16727: PUSH
16728: EMPTY
16729: LIST
16730: LIST
16731: PUSH
16732: LD_INT 58
16734: PUSH
16735: EMPTY
16736: LIST
16737: PUSH
16738: LD_INT 2
16740: PUSH
16741: LD_INT 30
16743: PUSH
16744: LD_INT 4
16746: PUSH
16747: EMPTY
16748: LIST
16749: LIST
16750: PUSH
16751: LD_INT 30
16753: PUSH
16754: LD_INT 5
16756: PUSH
16757: EMPTY
16758: LIST
16759: LIST
16760: PUSH
16761: LD_INT 30
16763: PUSH
16764: LD_INT 31
16766: PUSH
16767: EMPTY
16768: LIST
16769: LIST
16770: PUSH
16771: LD_INT 30
16773: PUSH
16774: LD_INT 32
16776: PUSH
16777: EMPTY
16778: LIST
16779: LIST
16780: PUSH
16781: EMPTY
16782: LIST
16783: LIST
16784: LIST
16785: LIST
16786: LIST
16787: PUSH
16788: EMPTY
16789: LIST
16790: LIST
16791: LIST
16792: PPUSH
16793: CALL_OW 70
16797: IFFALSE 16893
// ComEnterUnit ( un , FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_empty ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) [ 1 ] ) ;
16799: LD_VAR 0 1
16803: PPUSH
16804: LD_INT 44
16806: PPUSH
16807: LD_INT 22
16809: PUSH
16810: LD_EXP 19
16814: PUSH
16815: EMPTY
16816: LIST
16817: LIST
16818: PUSH
16819: LD_INT 58
16821: PUSH
16822: EMPTY
16823: LIST
16824: PUSH
16825: LD_INT 2
16827: PUSH
16828: LD_INT 30
16830: PUSH
16831: LD_INT 4
16833: PUSH
16834: EMPTY
16835: LIST
16836: LIST
16837: PUSH
16838: LD_INT 30
16840: PUSH
16841: LD_INT 5
16843: PUSH
16844: EMPTY
16845: LIST
16846: LIST
16847: PUSH
16848: LD_INT 30
16850: PUSH
16851: LD_INT 31
16853: PUSH
16854: EMPTY
16855: LIST
16856: LIST
16857: PUSH
16858: LD_INT 30
16860: PUSH
16861: LD_INT 32
16863: PUSH
16864: EMPTY
16865: LIST
16866: LIST
16867: PUSH
16868: EMPTY
16869: LIST
16870: LIST
16871: LIST
16872: LIST
16873: LIST
16874: PUSH
16875: EMPTY
16876: LIST
16877: LIST
16878: LIST
16879: PPUSH
16880: CALL_OW 70
16884: PUSH
16885: LD_INT 1
16887: ARRAY
16888: PPUSH
16889: CALL_OW 120
// end ; end ;
16893: GO 16680
16895: POP
16896: POP
// enable ;
16897: ENABLE
// end ;
16898: PPOPN 1
16900: END
// every 0 0$1 do
16901: GO 16903
16903: DISABLE
// begin Wait ( Rand ( 9 9$00 , 12 12$00 ) ) ;
16904: LD_INT 18900
16906: PPUSH
16907: LD_INT 25200
16909: PPUSH
16910: CALL_OW 12
16914: PPUSH
16915: CALL_OW 67
// if SeeArea ( you , obsazovacspawn ) = 0 then
16919: LD_EXP 18
16923: PPUSH
16924: LD_INT 43
16926: PPUSH
16927: CALL_OW 294
16931: PUSH
16932: LD_INT 0
16934: EQUAL
16935: IFFALSE 16945
// begin PlaceObsazovac ( ) ;
16937: CALL 16946 0 0
// PlacePatrol ( ) ;
16941: CALL 17000 0 0
// end ; end ;
16945: END
// function PlaceObsazovac ( ) ; begin
16946: LD_INT 0
16948: PPUSH
// obsazovac = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
16949: LD_ADDR_EXP 73
16953: PUSH
16954: LD_INT 2
16956: PPUSH
16957: LD_EXP 50
16961: PPUSH
16962: LD_EXP 51
16966: PPUSH
16967: LD_INT 1
16969: PPUSH
16970: LD_EXP 19
16974: PPUSH
16975: CALL 2947 0 5
16979: ST_TO_ADDR
// PlaceUnitArea ( obsazovac , ObsazovacSpawn , false ) ;
16980: LD_EXP 73
16984: PPUSH
16985: LD_INT 43
16987: PPUSH
16988: LD_INT 0
16990: PPUSH
16991: CALL_OW 49
// end ;
16995: LD_VAR 0 1
16999: RET
// function PlacePatrol ( ) ; begin
17000: LD_INT 0
17002: PPUSH
// followsol1 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17003: LD_ADDR_EXP 74
17007: PUSH
17008: LD_INT 1
17010: PPUSH
17011: LD_EXP 50
17015: PPUSH
17016: LD_EXP 51
17020: PPUSH
17021: LD_INT 1
17023: PPUSH
17024: LD_EXP 19
17028: PPUSH
17029: CALL 2947 0 5
17033: ST_TO_ADDR
// followsol2 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17034: LD_ADDR_EXP 75
17038: PUSH
17039: LD_INT 1
17041: PPUSH
17042: LD_EXP 50
17046: PPUSH
17047: LD_EXP 51
17051: PPUSH
17052: LD_INT 1
17054: PPUSH
17055: LD_EXP 19
17059: PPUSH
17060: CALL 2947 0 5
17064: ST_TO_ADDR
// followsol3 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17065: LD_ADDR_EXP 76
17069: PUSH
17070: LD_INT 1
17072: PPUSH
17073: LD_EXP 50
17077: PPUSH
17078: LD_EXP 51
17082: PPUSH
17083: LD_INT 1
17085: PPUSH
17086: LD_EXP 19
17090: PPUSH
17091: CALL 2947 0 5
17095: ST_TO_ADDR
// PlaceUnitArea ( followsol1 , ObsazovacSpawn , false ) ;
17096: LD_EXP 74
17100: PPUSH
17101: LD_INT 43
17103: PPUSH
17104: LD_INT 0
17106: PPUSH
17107: CALL_OW 49
// PlaceUnitArea ( followsol2 , ObsazovacSpawn , false ) ;
17111: LD_EXP 75
17115: PPUSH
17116: LD_INT 43
17118: PPUSH
17119: LD_INT 0
17121: PPUSH
17122: CALL_OW 49
// PlaceUnitArea ( followsol3 , ObsazovacSpawn , false ) ;
17126: LD_EXP 76
17130: PPUSH
17131: LD_INT 43
17133: PPUSH
17134: LD_INT 0
17136: PPUSH
17137: CALL_OW 49
// Wait ( 0 0$3 ) ;
17141: LD_INT 105
17143: PPUSH
17144: CALL_OW 67
// if obsazovac then
17148: LD_EXP 73
17152: IFFALSE 17183
// ComMoveUnit ( [ followsol1 , followsol2 , followsol3 ] , obsazovac ) ;
17154: LD_EXP 74
17158: PUSH
17159: LD_EXP 75
17163: PUSH
17164: LD_EXP 76
17168: PUSH
17169: EMPTY
17170: LIST
17171: LIST
17172: LIST
17173: PPUSH
17174: LD_EXP 73
17178: PPUSH
17179: CALL_OW 112
// end ; end_of_file
17183: LD_VAR 0 1
17187: RET
// every 0 0$1 do var nakl , bedny ;
17188: GO 17190
17190: DISABLE
17191: LD_INT 0
17193: PPUSH
17194: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
17195: LD_ADDR_VAR 0 1
17199: PUSH
17200: LD_INT 22
17202: PUSH
17203: LD_EXP 19
17207: PUSH
17208: EMPTY
17209: LIST
17210: LIST
17211: PUSH
17212: LD_INT 21
17214: PUSH
17215: LD_INT 2
17217: PUSH
17218: EMPTY
17219: LIST
17220: LIST
17221: PUSH
17222: LD_INT 34
17224: PUSH
17225: LD_INT 12
17227: PUSH
17228: EMPTY
17229: LIST
17230: LIST
17231: PUSH
17232: EMPTY
17233: LIST
17234: LIST
17235: LIST
17236: PPUSH
17237: CALL_OW 69
17241: ST_TO_ADDR
// if nakl then
17242: LD_VAR 0 1
17246: IFFALSE 17355
// begin nakl = nakl [ 1 ] ;
17248: LD_ADDR_VAR 0 1
17252: PUSH
17253: LD_VAR 0 1
17257: PUSH
17258: LD_INT 1
17260: ARRAY
17261: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
17262: LD_VAR 0 1
17266: PPUSH
17267: CALL_OW 256
17271: PUSH
17272: LD_EXP 42
17276: LESS
17277: IFFALSE 17300
// begin ComMoveToArea ( nakl , LevaRepair ) ;
17279: LD_VAR 0 1
17283: PPUSH
17284: LD_INT 25
17286: PPUSH
17287: CALL_OW 113
// Wait ( 2 2$20 ) ;
17291: LD_INT 4900
17293: PPUSH
17294: CALL_OW 67
// end else
17298: GO 17355
// begin bedny = GetListOfCratesInArea ( Bedny1 ) ^ GetListOfCratesInArea ( Bedny2 ) ;
17300: LD_ADDR_VAR 0 2
17304: PUSH
17305: LD_INT 15
17307: PPUSH
17308: CALL_OW 435
17312: PUSH
17313: LD_INT 16
17315: PPUSH
17316: CALL_OW 435
17320: ADD
17321: ST_TO_ADDR
// if bedny then
17322: LD_VAR 0 2
17326: IFFALSE 17355
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
17328: LD_VAR 0 1
17332: PPUSH
17333: LD_VAR 0 2
17337: PUSH
17338: LD_INT 1
17340: ARRAY
17341: PPUSH
17342: LD_VAR 0 2
17346: PUSH
17347: LD_INT 2
17349: ARRAY
17350: PPUSH
17351: CALL_OW 117
// end ; end ; enable ;
17355: ENABLE
// end ;
17356: PPOPN 2
17358: END
// every 0 0$3 do var veh ;
17359: GO 17361
17361: DISABLE
17362: LD_INT 0
17364: PPUSH
// begin if not FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) and not SeeArea ( you , NaklResp ) then
17365: LD_INT 22
17367: PUSH
17368: LD_EXP 19
17372: PUSH
17373: EMPTY
17374: LIST
17375: LIST
17376: PUSH
17377: LD_INT 21
17379: PUSH
17380: LD_INT 2
17382: PUSH
17383: EMPTY
17384: LIST
17385: LIST
17386: PUSH
17387: LD_INT 34
17389: PUSH
17390: LD_INT 12
17392: PUSH
17393: EMPTY
17394: LIST
17395: LIST
17396: PUSH
17397: EMPTY
17398: LIST
17399: LIST
17400: LIST
17401: PPUSH
17402: CALL_OW 69
17406: NOT
17407: PUSH
17408: LD_EXP 18
17412: PPUSH
17413: LD_INT 45
17415: PPUSH
17416: CALL_OW 294
17420: NOT
17421: AND
17422: IFFALSE 17521
// begin Wait ( 5 5$00 ) ;
17424: LD_INT 10500
17426: PPUSH
17427: CALL_OW 67
// if SideDead ( amik ) then
17431: LD_EXP 19
17435: PPUSH
17436: CALL 2646 0 1
17440: IFFALSE 17444
// exit ;
17442: GO 17522
// uc_side = amik ;
17444: LD_ADDR_OWVAR 20
17448: PUSH
17449: LD_EXP 19
17453: ST_TO_ADDR
// uc_nation = nation_american ;
17454: LD_ADDR_OWVAR 21
17458: PUSH
17459: LD_INT 1
17461: ST_TO_ADDR
// vc_chassis = dif_podvozek_nakl ;
17462: LD_ADDR_OWVAR 37
17466: PUSH
17467: LD_EXP 67
17471: ST_TO_ADDR
// vc_control = control_remote ;
17472: LD_ADDR_OWVAR 38
17476: PUSH
17477: LD_INT 2
17479: ST_TO_ADDR
// vc_engine = engine_siberite ;
17480: LD_ADDR_OWVAR 39
17484: PUSH
17485: LD_INT 3
17487: ST_TO_ADDR
// vc_weapon = us_cargo_bay ;
17488: LD_ADDR_OWVAR 40
17492: PUSH
17493: LD_INT 12
17495: ST_TO_ADDR
// veh = CreateVehicle ;
17496: LD_ADDR_VAR 0 1
17500: PUSH
17501: CALL_OW 45
17505: ST_TO_ADDR
// PlaceUnitArea ( veh , NaklResp , false ) ;
17506: LD_VAR 0 1
17510: PPUSH
17511: LD_INT 45
17513: PPUSH
17514: LD_INT 0
17516: PPUSH
17517: CALL_OW 49
// end ; enable ;
17521: ENABLE
// end ; end_of_file
17522: PPOPN 1
17524: END
// every 0 0$5 do var i ;
17525: GO 17527
17527: DISABLE
17528: LD_INT 0
17530: PPUSH
// begin for i in FilterAllUnits ( [ [ f_btype , b_warehouse ] , [ f_ok ] , [ f_not , [ f_side , you ] ] ] ) do
17531: LD_ADDR_VAR 0 1
17535: PUSH
17536: LD_INT 30
17538: PUSH
17539: LD_INT 1
17541: PUSH
17542: EMPTY
17543: LIST
17544: LIST
17545: PUSH
17546: LD_INT 50
17548: PUSH
17549: EMPTY
17550: LIST
17551: PUSH
17552: LD_INT 3
17554: PUSH
17555: LD_INT 22
17557: PUSH
17558: LD_EXP 18
17562: PUSH
17563: EMPTY
17564: LIST
17565: LIST
17566: PUSH
17567: EMPTY
17568: LIST
17569: LIST
17570: PUSH
17571: EMPTY
17572: LIST
17573: LIST
17574: LIST
17575: PPUSH
17576: CALL_OW 69
17580: PUSH
17581: FOR_IN
17582: IFFALSE 17595
// SurovinyDoSkladu ( i ) ;
17584: LD_VAR 0 1
17588: PPUSH
17589: CALL 4804 0 1
17593: GO 17581
17595: POP
17596: POP
// enable ;
17597: ENABLE
// end ;
17598: PPOPN 1
17600: END
// function IsFactoryOk ( tovarna ) ; begin
17601: LD_INT 0
17603: PPUSH
// if GetSide ( tovarna ) = amik and GetBase ( tovarna ) <> 0 and IsOk ( tovarna ) and GetExtPositions ( tovarna ) + 0 = 5 then
17604: LD_VAR 0 1
17608: PPUSH
17609: CALL_OW 255
17613: PUSH
17614: LD_EXP 19
17618: EQUAL
17619: PUSH
17620: LD_VAR 0 1
17624: PPUSH
17625: CALL_OW 274
17629: PUSH
17630: LD_INT 0
17632: NONEQUAL
17633: AND
17634: PUSH
17635: LD_VAR 0 1
17639: PPUSH
17640: CALL_OW 302
17644: AND
17645: PUSH
17646: LD_VAR 0 1
17650: PPUSH
17651: CALL_OW 270
17655: PUSH
17656: LD_INT 0
17658: PLUS
17659: PUSH
17660: LD_INT 5
17662: EQUAL
17663: AND
17664: IFFALSE 17676
// result = true else
17666: LD_ADDR_VAR 0 2
17670: PUSH
17671: LD_INT 1
17673: ST_TO_ADDR
17674: GO 17684
// result = false ;
17676: LD_ADDR_VAR 0 2
17680: PUSH
17681: LD_INT 0
17683: ST_TO_ADDR
// end ;
17684: LD_VAR 0 2
17688: RET
// every 0 0$2 do var autaAmikLeft , autaAmikTopRight , autaAmikRight , i , r ;
17689: GO 17691
17691: DISABLE
17692: LD_INT 0
17694: PPUSH
17695: PPUSH
17696: PPUSH
17697: PPUSH
17698: PPUSH
// begin autaAmikLeft = FilterAllUnits ( [ [ f_side , amik ] , [ f_inarea , LevaBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
17699: LD_ADDR_VAR 0 1
17703: PUSH
17704: LD_INT 22
17706: PUSH
17707: LD_EXP 19
17711: PUSH
17712: EMPTY
17713: LIST
17714: LIST
17715: PUSH
17716: LD_INT 95
17718: PUSH
17719: LD_INT 31
17721: PUSH
17722: EMPTY
17723: LIST
17724: LIST
17725: PUSH
17726: LD_INT 21
17728: PUSH
17729: LD_INT 2
17731: PUSH
17732: EMPTY
17733: LIST
17734: LIST
17735: PUSH
17736: LD_INT 24
17738: PUSH
17739: LD_EXP 35
17743: PUSH
17744: EMPTY
17745: LIST
17746: LIST
17747: PUSH
17748: LD_INT 3
17750: PUSH
17751: LD_INT 2
17753: PUSH
17754: LD_INT 34
17756: PUSH
17757: LD_INT 32
17759: PUSH
17760: EMPTY
17761: LIST
17762: LIST
17763: PUSH
17764: LD_INT 34
17766: PUSH
17767: LD_INT 12
17769: PUSH
17770: EMPTY
17771: LIST
17772: LIST
17773: PUSH
17774: LD_INT 34
17776: PUSH
17777: LD_INT 30
17779: PUSH
17780: EMPTY
17781: LIST
17782: LIST
17783: PUSH
17784: LD_INT 34
17786: PUSH
17787: LD_INT 11
17789: PUSH
17790: EMPTY
17791: LIST
17792: LIST
17793: PUSH
17794: LD_INT 34
17796: PUSH
17797: LD_INT 31
17799: PUSH
17800: EMPTY
17801: LIST
17802: LIST
17803: PUSH
17804: LD_INT 34
17806: PUSH
17807: LD_INT 13
17809: PUSH
17810: EMPTY
17811: LIST
17812: LIST
17813: PUSH
17814: EMPTY
17815: LIST
17816: LIST
17817: LIST
17818: LIST
17819: LIST
17820: LIST
17821: LIST
17822: PUSH
17823: EMPTY
17824: LIST
17825: LIST
17826: PUSH
17827: EMPTY
17828: LIST
17829: LIST
17830: LIST
17831: LIST
17832: LIST
17833: PPUSH
17834: CALL_OW 69
17838: ST_TO_ADDR
// autaAmikTopRight = FilterAllUnits ( [ [ f_side , amik ] , [ f_inarea , PravaHorniBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
17839: LD_ADDR_VAR 0 2
17843: PUSH
17844: LD_INT 22
17846: PUSH
17847: LD_EXP 19
17851: PUSH
17852: EMPTY
17853: LIST
17854: LIST
17855: PUSH
17856: LD_INT 95
17858: PUSH
17859: LD_INT 33
17861: PUSH
17862: EMPTY
17863: LIST
17864: LIST
17865: PUSH
17866: LD_INT 21
17868: PUSH
17869: LD_INT 2
17871: PUSH
17872: EMPTY
17873: LIST
17874: LIST
17875: PUSH
17876: LD_INT 24
17878: PUSH
17879: LD_EXP 35
17883: PUSH
17884: EMPTY
17885: LIST
17886: LIST
17887: PUSH
17888: LD_INT 3
17890: PUSH
17891: LD_INT 2
17893: PUSH
17894: LD_INT 34
17896: PUSH
17897: LD_INT 32
17899: PUSH
17900: EMPTY
17901: LIST
17902: LIST
17903: PUSH
17904: LD_INT 34
17906: PUSH
17907: LD_INT 12
17909: PUSH
17910: EMPTY
17911: LIST
17912: LIST
17913: PUSH
17914: LD_INT 34
17916: PUSH
17917: LD_INT 30
17919: PUSH
17920: EMPTY
17921: LIST
17922: LIST
17923: PUSH
17924: LD_INT 34
17926: PUSH
17927: LD_INT 11
17929: PUSH
17930: EMPTY
17931: LIST
17932: LIST
17933: PUSH
17934: LD_INT 34
17936: PUSH
17937: LD_INT 31
17939: PUSH
17940: EMPTY
17941: LIST
17942: LIST
17943: PUSH
17944: LD_INT 34
17946: PUSH
17947: LD_INT 13
17949: PUSH
17950: EMPTY
17951: LIST
17952: LIST
17953: PUSH
17954: EMPTY
17955: LIST
17956: LIST
17957: LIST
17958: LIST
17959: LIST
17960: LIST
17961: LIST
17962: PUSH
17963: EMPTY
17964: LIST
17965: LIST
17966: PUSH
17967: EMPTY
17968: LIST
17969: LIST
17970: LIST
17971: LIST
17972: LIST
17973: PPUSH
17974: CALL_OW 69
17978: ST_TO_ADDR
// autaAmikRight = FilterAllUnits ( [ [ f_side , amik ] , [ f_inarea , PravaBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
17979: LD_ADDR_VAR 0 3
17983: PUSH
17984: LD_INT 22
17986: PUSH
17987: LD_EXP 19
17991: PUSH
17992: EMPTY
17993: LIST
17994: LIST
17995: PUSH
17996: LD_INT 95
17998: PUSH
17999: LD_INT 35
18001: PUSH
18002: EMPTY
18003: LIST
18004: LIST
18005: PUSH
18006: LD_INT 21
18008: PUSH
18009: LD_INT 2
18011: PUSH
18012: EMPTY
18013: LIST
18014: LIST
18015: PUSH
18016: LD_INT 24
18018: PUSH
18019: LD_EXP 35
18023: PUSH
18024: EMPTY
18025: LIST
18026: LIST
18027: PUSH
18028: LD_INT 3
18030: PUSH
18031: LD_INT 2
18033: PUSH
18034: LD_INT 34
18036: PUSH
18037: LD_INT 32
18039: PUSH
18040: EMPTY
18041: LIST
18042: LIST
18043: PUSH
18044: LD_INT 34
18046: PUSH
18047: LD_INT 12
18049: PUSH
18050: EMPTY
18051: LIST
18052: LIST
18053: PUSH
18054: LD_INT 34
18056: PUSH
18057: LD_INT 30
18059: PUSH
18060: EMPTY
18061: LIST
18062: LIST
18063: PUSH
18064: LD_INT 34
18066: PUSH
18067: LD_INT 11
18069: PUSH
18070: EMPTY
18071: LIST
18072: LIST
18073: PUSH
18074: LD_INT 34
18076: PUSH
18077: LD_INT 31
18079: PUSH
18080: EMPTY
18081: LIST
18082: LIST
18083: PUSH
18084: LD_INT 34
18086: PUSH
18087: LD_INT 13
18089: PUSH
18090: EMPTY
18091: LIST
18092: LIST
18093: PUSH
18094: EMPTY
18095: LIST
18096: LIST
18097: LIST
18098: LIST
18099: LIST
18100: LIST
18101: LIST
18102: PUSH
18103: EMPTY
18104: LIST
18105: LIST
18106: PUSH
18107: EMPTY
18108: LIST
18109: LIST
18110: LIST
18111: LIST
18112: LIST
18113: PPUSH
18114: CALL_OW 69
18118: ST_TO_ADDR
// if autaAmikLeft + 0 >= dif_amik_attack_size then
18119: LD_VAR 0 1
18123: PUSH
18124: LD_INT 0
18126: PLUS
18127: PUSH
18128: LD_EXP 55
18132: GREATEREQUAL
18133: IFFALSE 18338
// begin for i in autaAmikLeft do
18135: LD_ADDR_VAR 0 4
18139: PUSH
18140: LD_VAR 0 1
18144: PUSH
18145: FOR_IN
18146: IFFALSE 18179
// if not i in amik_attack_listL then
18148: LD_VAR 0 4
18152: PUSH
18153: LD_EXP 20
18157: IN
18158: NOT
18159: IFFALSE 18177
// amik_attack_listL = amik_attack_listL ^ i ;
18161: LD_ADDR_EXP 20
18165: PUSH
18166: LD_EXP 20
18170: PUSH
18171: LD_VAR 0 4
18175: ADD
18176: ST_TO_ADDR
18177: GO 18145
18179: POP
18180: POP
// ComAgressiveMove ( amik_attack_listL , 38 , 56 ) ;
18181: LD_EXP 20
18185: PPUSH
18186: LD_INT 38
18188: PPUSH
18189: LD_INT 56
18191: PPUSH
18192: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listL , 59 , 102 ) ;
18196: LD_EXP 20
18200: PPUSH
18201: LD_INT 59
18203: PPUSH
18204: LD_INT 102
18206: PPUSH
18207: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 72 , 124 ) ;
18211: LD_EXP 20
18215: PPUSH
18216: LD_INT 72
18218: PPUSH
18219: LD_INT 124
18221: PPUSH
18222: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 87 , 131 ) ;
18226: LD_EXP 20
18230: PPUSH
18231: LD_INT 87
18233: PPUSH
18234: LD_INT 131
18236: PPUSH
18237: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 113 , 122 ) ;
18241: LD_EXP 20
18245: PPUSH
18246: LD_INT 113
18248: PPUSH
18249: LD_INT 122
18251: PPUSH
18252: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18256: LD_INT 42
18258: PPUSH
18259: CALL_OW 67
// ComAgressiveMove ( amik_attack_listL , 38 , 56 ) ;
18263: LD_EXP 20
18267: PPUSH
18268: LD_INT 38
18270: PPUSH
18271: LD_INT 56
18273: PPUSH
18274: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listL , 59 , 102 ) ;
18278: LD_EXP 20
18282: PPUSH
18283: LD_INT 59
18285: PPUSH
18286: LD_INT 102
18288: PPUSH
18289: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 72 , 124 ) ;
18293: LD_EXP 20
18297: PPUSH
18298: LD_INT 72
18300: PPUSH
18301: LD_INT 124
18303: PPUSH
18304: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 87 , 131 ) ;
18308: LD_EXP 20
18312: PPUSH
18313: LD_INT 87
18315: PPUSH
18316: LD_INT 131
18318: PPUSH
18319: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 113 , 122 ) ;
18323: LD_EXP 20
18327: PPUSH
18328: LD_INT 113
18330: PPUSH
18331: LD_INT 122
18333: PPUSH
18334: CALL_OW 174
// end ; if autaAmikTopRight + 0 >= dif_amik_attack_size then
18338: LD_VAR 0 2
18342: PUSH
18343: LD_INT 0
18345: PLUS
18346: PUSH
18347: LD_EXP 55
18351: GREATEREQUAL
18352: IFFALSE 18527
// begin for i in autaAmikTopRight do
18354: LD_ADDR_VAR 0 4
18358: PUSH
18359: LD_VAR 0 2
18363: PUSH
18364: FOR_IN
18365: IFFALSE 18398
// if not i in amik_attack_listTR then
18367: LD_VAR 0 4
18371: PUSH
18372: LD_EXP 21
18376: IN
18377: NOT
18378: IFFALSE 18396
// amik_attack_listTR = amik_attack_listTR ^ i ;
18380: LD_ADDR_EXP 21
18384: PUSH
18385: LD_EXP 21
18389: PUSH
18390: LD_VAR 0 4
18394: ADD
18395: ST_TO_ADDR
18396: GO 18364
18398: POP
18399: POP
// ComAgressiveMove ( amik_attack_listTR , 84 , 51 ) ;
18400: LD_EXP 21
18404: PPUSH
18405: LD_INT 84
18407: PPUSH
18408: LD_INT 51
18410: PPUSH
18411: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listTR , 81 , 77 ) ;
18415: LD_EXP 21
18419: PPUSH
18420: LD_INT 81
18422: PPUSH
18423: LD_INT 77
18425: PPUSH
18426: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 101 , 109 ) ;
18430: LD_EXP 21
18434: PPUSH
18435: LD_INT 101
18437: PPUSH
18438: LD_INT 109
18440: PPUSH
18441: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 113 , 118 ) ;
18445: LD_EXP 21
18449: PPUSH
18450: LD_INT 113
18452: PPUSH
18453: LD_INT 118
18455: PPUSH
18456: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18460: LD_INT 42
18462: PPUSH
18463: CALL_OW 67
// ComAgressiveMove ( amik_attack_listTR , 84 , 51 ) ;
18467: LD_EXP 21
18471: PPUSH
18472: LD_INT 84
18474: PPUSH
18475: LD_INT 51
18477: PPUSH
18478: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listTR , 81 , 77 ) ;
18482: LD_EXP 21
18486: PPUSH
18487: LD_INT 81
18489: PPUSH
18490: LD_INT 77
18492: PPUSH
18493: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 101 , 109 ) ;
18497: LD_EXP 21
18501: PPUSH
18502: LD_INT 101
18504: PPUSH
18505: LD_INT 109
18507: PPUSH
18508: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 113 , 118 ) ;
18512: LD_EXP 21
18516: PPUSH
18517: LD_INT 113
18519: PPUSH
18520: LD_INT 118
18522: PPUSH
18523: CALL_OW 174
// end ; if autaAmikRight + 0 >= dif_amik_attack_size then
18527: LD_VAR 0 3
18531: PUSH
18532: LD_INT 0
18534: PLUS
18535: PUSH
18536: LD_EXP 55
18540: GREATEREQUAL
18541: IFFALSE 18686
// begin for i in autaAmikRight do
18543: LD_ADDR_VAR 0 4
18547: PUSH
18548: LD_VAR 0 3
18552: PUSH
18553: FOR_IN
18554: IFFALSE 18587
// if not i in amik_attack_listR then
18556: LD_VAR 0 4
18560: PUSH
18561: LD_EXP 22
18565: IN
18566: NOT
18567: IFFALSE 18585
// amik_attack_listR = amik_attack_listR ^ i ;
18569: LD_ADDR_EXP 22
18573: PUSH
18574: LD_EXP 22
18578: PUSH
18579: LD_VAR 0 4
18583: ADD
18584: ST_TO_ADDR
18585: GO 18553
18587: POP
18588: POP
// ComAgressiveMove ( amik_attack_listR , 137 , 101 ) ;
18589: LD_EXP 22
18593: PPUSH
18594: LD_INT 137
18596: PPUSH
18597: LD_INT 101
18599: PPUSH
18600: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listR , 130 , 109 ) ;
18604: LD_EXP 22
18608: PPUSH
18609: LD_INT 130
18611: PPUSH
18612: LD_INT 109
18614: PPUSH
18615: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listR , 108 , 116 ) ;
18619: LD_EXP 22
18623: PPUSH
18624: LD_INT 108
18626: PPUSH
18627: LD_INT 116
18629: PPUSH
18630: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18634: LD_INT 42
18636: PPUSH
18637: CALL_OW 67
// ComAgressiveMove ( amik_attack_listR , 137 , 101 ) ;
18641: LD_EXP 22
18645: PPUSH
18646: LD_INT 137
18648: PPUSH
18649: LD_INT 101
18651: PPUSH
18652: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listR , 130 , 109 ) ;
18656: LD_EXP 22
18660: PPUSH
18661: LD_INT 130
18663: PPUSH
18664: LD_INT 109
18666: PPUSH
18667: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listR , 108 , 116 ) ;
18671: LD_EXP 22
18675: PPUSH
18676: LD_INT 108
18678: PPUSH
18679: LD_INT 116
18681: PPUSH
18682: CALL_OW 174
// end ; enable ;
18686: ENABLE
// end ;
18687: PPOPN 5
18689: END
// every 0 0$1 do var targety , un , x , y ;
18690: GO 18692
18692: DISABLE
18693: LD_INT 0
18695: PPUSH
18696: PPUSH
18697: PPUSH
18698: PPUSH
// begin targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) ;
18699: LD_ADDR_VAR 0 1
18703: PUSH
18704: LD_INT 50
18706: PUSH
18707: EMPTY
18708: LIST
18709: PUSH
18710: LD_INT 22
18712: PUSH
18713: LD_EXP 18
18717: PUSH
18718: EMPTY
18719: LIST
18720: LIST
18721: PUSH
18722: EMPTY
18723: LIST
18724: LIST
18725: PPUSH
18726: CALL_OW 69
18730: ST_TO_ADDR
// if not targety then
18731: LD_VAR 0 1
18735: NOT
18736: IFFALSE 18740
// else
18738: GO 18983
// begin for un in amik_attack_listL ^ amik_attack_listTR ^ amik_attack_listR do
18740: LD_ADDR_VAR 0 2
18744: PUSH
18745: LD_EXP 20
18749: PUSH
18750: LD_EXP 21
18754: ADD
18755: PUSH
18756: LD_EXP 22
18760: ADD
18761: PUSH
18762: FOR_IN
18763: IFFALSE 18981
// begin if not IsOK ( un ) then
18765: LD_VAR 0 2
18769: PPUSH
18770: CALL_OW 302
18774: NOT
18775: IFFALSE 18779
// continue ;
18777: GO 18762
// if HasTask ( un ) and GetLives ( un ) = 1000 then
18779: LD_VAR 0 2
18783: PPUSH
18784: CALL_OW 314
18788: PUSH
18789: LD_VAR 0 2
18793: PPUSH
18794: CALL_OW 256
18798: PUSH
18799: LD_INT 1000
18801: EQUAL
18802: AND
18803: IFFALSE 18830
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
18805: LD_VAR 0 2
18809: PPUSH
18810: CALL_OW 437
18814: PUSH
18815: LD_INT 1
18817: ARRAY
18818: PUSH
18819: LD_INT 1
18821: ARRAY
18822: PUSH
18823: LD_STRING a
18825: EQUAL
18826: IFFALSE 18830
// continue ;
18828: GO 18762
// end ; if not HasTask ( un ) then
18830: LD_VAR 0 2
18834: PPUSH
18835: CALL_OW 314
18839: NOT
18840: IFFALSE 18979
// begin if See2 ( amik , NearestUnitToUnit2 ( targety , un ) ) then
18842: LD_EXP 19
18846: PPUSH
18847: LD_VAR 0 1
18851: PPUSH
18852: LD_VAR 0 2
18856: PPUSH
18857: CALL 4485 0 2
18861: PPUSH
18862: CALL 4626 0 2
18866: IFFALSE 18894
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
18868: LD_VAR 0 2
18872: PPUSH
18873: LD_VAR 0 1
18877: PPUSH
18878: LD_VAR 0 2
18882: PPUSH
18883: CALL 4485 0 2
18887: PPUSH
18888: CALL_OW 115
18892: GO 18979
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
18894: LD_ADDR_VAR 0 3
18898: PUSH
18899: LD_VAR 0 1
18903: PPUSH
18904: LD_VAR 0 2
18908: PPUSH
18909: CALL 4485 0 2
18913: PPUSH
18914: CALL_OW 250
18918: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
18919: LD_ADDR_VAR 0 4
18923: PUSH
18924: LD_VAR 0 1
18928: PPUSH
18929: LD_VAR 0 2
18933: PPUSH
18934: CALL 4485 0 2
18938: PPUSH
18939: CALL_OW 251
18943: ST_TO_ADDR
// if ValidHex ( x , y ) then
18944: LD_VAR 0 3
18948: PPUSH
18949: LD_VAR 0 4
18953: PPUSH
18954: CALL_OW 488
18958: IFFALSE 18979
// ComAgressiveMove ( un , x , y ) ;
18960: LD_VAR 0 2
18964: PPUSH
18965: LD_VAR 0 3
18969: PPUSH
18970: LD_VAR 0 4
18974: PPUSH
18975: CALL_OW 114
// end ; end ; end ;
18979: GO 18762
18981: POP
18982: POP
// end ; enable ;
18983: ENABLE
// end ;
18984: PPOPN 4
18986: END
// every 0 0$10 do var i , tov , selectedTov ;
18987: GO 18989
18989: DISABLE
18990: LD_INT 0
18992: PPUSH
18993: PPUSH
18994: PPUSH
// begin Wait ( dif_amik_vyroba_utok_wait_start ) ;
18995: LD_EXP 65
18999: PPUSH
19000: CALL_OW 67
// if sibcelkem < 70 then
19004: LD_EXP 71
19008: PUSH
19009: LD_INT 70
19011: LESS
19012: IFFALSE 19016
// exit ;
19014: GO 19212
// if dif_amik_vyroba_utok_wait_start < dif_amik_vyroba_utok_wait then
19016: LD_EXP 65
19020: PUSH
19021: LD_EXP 59
19025: LESS
19026: IFFALSE 19044
// dif_amik_vyroba_utok_wait_start = dif_amik_vyroba_utok_wait_start + dif_vyroba_tick_inkrement ;
19028: LD_ADDR_EXP 65
19032: PUSH
19033: LD_EXP 65
19037: PUSH
19038: LD_EXP 66
19042: PLUS
19043: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , amik ] , [ f_btype , b_factory ] , [ f_placed ] , [ f_ok ] ] ) ;
19044: LD_ADDR_VAR 0 2
19048: PUSH
19049: LD_INT 22
19051: PUSH
19052: LD_EXP 19
19056: PUSH
19057: EMPTY
19058: LIST
19059: LIST
19060: PUSH
19061: LD_INT 30
19063: PUSH
19064: LD_INT 3
19066: PUSH
19067: EMPTY
19068: LIST
19069: LIST
19070: PUSH
19071: LD_INT 52
19073: PUSH
19074: EMPTY
19075: LIST
19076: PUSH
19077: LD_INT 50
19079: PUSH
19080: EMPTY
19081: LIST
19082: PUSH
19083: EMPTY
19084: LIST
19085: LIST
19086: LIST
19087: LIST
19088: PPUSH
19089: CALL_OW 69
19093: ST_TO_ADDR
// if not tov then
19094: LD_VAR 0 2
19098: NOT
19099: IFFALSE 19103
// exit ;
19101: GO 19212
// selectedTov = tov [ Rand ( 1 , tov + 0 ) ] ;
19103: LD_ADDR_VAR 0 3
19107: PUSH
19108: LD_VAR 0 2
19112: PUSH
19113: LD_INT 1
19115: PPUSH
19116: LD_VAR 0 2
19120: PUSH
19121: LD_INT 0
19123: PLUS
19124: PPUSH
19125: CALL_OW 12
19129: ARRAY
19130: ST_TO_ADDR
// if not IsFactoryOk ( selectedTov ) then
19131: LD_VAR 0 3
19135: PPUSH
19136: CALL 17601 0 1
19140: NOT
19141: IFFALSE 19171
// selectedTov = tov [ Rand ( 1 , tov + 0 ) ] ;
19143: LD_ADDR_VAR 0 3
19147: PUSH
19148: LD_VAR 0 2
19152: PUSH
19153: LD_INT 1
19155: PPUSH
19156: LD_VAR 0 2
19160: PUSH
19161: LD_INT 0
19163: PLUS
19164: PPUSH
19165: CALL_OW 12
19169: ARRAY
19170: ST_TO_ADDR
// for i = 1 to dif_amik_attack_size do
19171: LD_ADDR_VAR 0 1
19175: PUSH
19176: DOUBLE
19177: LD_INT 1
19179: DEC
19180: ST_TO_ADDR
19181: LD_EXP 55
19185: PUSH
19186: FOR_TO
19187: IFFALSE 19200
// begin VyrobAuto ( selectedTov ) ;
19189: LD_VAR 0 3
19193: PPUSH
19194: CALL 19215 0 1
// end ;
19198: GO 19186
19200: POP
19201: POP
// Wait ( dif_amik_vyroba_utok_wait_start ) ;
19202: LD_EXP 65
19206: PPUSH
19207: CALL_OW 67
// enable ;
19211: ENABLE
// end ;
19212: PPOPN 3
19214: END
// function VyrobAuto ( tovarna ) ; var podvozek , zbran , P , narod , pasovy_pristavek ; begin
19215: LD_INT 0
19217: PPUSH
19218: PPUSH
19219: PPUSH
19220: PPUSH
19221: PPUSH
19222: PPUSH
// if not tovarna then
19223: LD_VAR 0 1
19227: NOT
19228: IFFALSE 19232
// exit ;
19230: GO 19702
// if not IsOk ( tovarna ) then
19232: LD_VAR 0 1
19236: PPUSH
19237: CALL_OW 302
19241: NOT
19242: IFFALSE 19246
// exit ;
19244: GO 19702
// P = Rand ( 1 , 100 ) ;
19246: LD_ADDR_VAR 0 5
19250: PUSH
19251: LD_INT 1
19253: PPUSH
19254: LD_INT 100
19256: PPUSH
19257: CALL_OW 12
19261: ST_TO_ADDR
// narod = GetNation ( tovarna ) ;
19262: LD_ADDR_VAR 0 6
19266: PUSH
19267: LD_VAR 0 1
19271: PPUSH
19272: CALL_OW 248
19276: ST_TO_ADDR
// pasovy_pristavek = CanBeConstructed ( tovarna , us_medium_tracked , engine_combustion , control_manual , us_machine_gun ) ;
19277: LD_ADDR_VAR 0 7
19281: PUSH
19282: LD_VAR 0 1
19286: PPUSH
19287: LD_INT 3
19289: PPUSH
19290: LD_INT 1
19292: PPUSH
19293: LD_INT 1
19295: PPUSH
19296: LD_INT 2
19298: PPUSH
19299: CALL_OW 448
19303: ST_TO_ADDR
// if narod = 1 then
19304: LD_VAR 0 6
19308: PUSH
19309: LD_INT 1
19311: EQUAL
19312: IFFALSE 19632
// begin if P < dif_auto_vyroba_sance [ 1 ] then
19314: LD_VAR 0 5
19318: PUSH
19319: LD_EXP 61
19323: PUSH
19324: LD_INT 1
19326: ARRAY
19327: LESS
19328: IFFALSE 19348
// begin zbran = us_gatling_gun ;
19330: LD_ADDR_VAR 0 4
19334: PUSH
19335: LD_INT 4
19337: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19338: LD_ADDR_VAR 0 3
19342: PUSH
19343: LD_INT 3
19345: ST_TO_ADDR
// end else
19346: GO 19466
// if P < dif_auto_vyroba_sance [ 2 ] then
19348: LD_VAR 0 5
19352: PUSH
19353: LD_EXP 61
19357: PUSH
19358: LD_INT 2
19360: ARRAY
19361: LESS
19362: IFFALSE 19382
// begin zbran = us_laser ;
19364: LD_ADDR_VAR 0 4
19368: PUSH
19369: LD_INT 9
19371: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19372: LD_ADDR_VAR 0 3
19376: PUSH
19377: LD_INT 3
19379: ST_TO_ADDR
// end else
19380: GO 19466
// if P < dif_auto_vyroba_sance [ 3 ] then
19382: LD_VAR 0 5
19386: PUSH
19387: LD_EXP 61
19391: PUSH
19392: LD_INT 3
19394: ARRAY
19395: LESS
19396: IFFALSE 19416
// begin zbran = us_rocket_launcher ;
19398: LD_ADDR_VAR 0 4
19402: PUSH
19403: LD_INT 7
19405: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19406: LD_ADDR_VAR 0 3
19410: PUSH
19411: LD_INT 3
19413: ST_TO_ADDR
// end else
19414: GO 19466
// if P < dif_auto_vyroba_sance [ 4 ] then
19416: LD_VAR 0 5
19420: PUSH
19421: LD_EXP 61
19425: PUSH
19426: LD_INT 4
19428: ARRAY
19429: LESS
19430: IFFALSE 19450
// begin zbran = us_heavy_gun ;
19432: LD_ADDR_VAR 0 4
19436: PUSH
19437: LD_INT 6
19439: ST_TO_ADDR
// podvozek = us_heavy_tracked ;
19440: LD_ADDR_VAR 0 3
19444: PUSH
19445: LD_INT 4
19447: ST_TO_ADDR
// end else
19448: GO 19466
// begin zbran = us_heavy_gun ;
19450: LD_ADDR_VAR 0 4
19454: PUSH
19455: LD_INT 6
19457: ST_TO_ADDR
// podvozek = us_morphling ;
19458: LD_ADDR_VAR 0 3
19462: PUSH
19463: LD_INT 5
19465: ST_TO_ADDR
// end ; if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_heavy_gun then
19466: LD_VAR 0 1
19470: PPUSH
19471: LD_VAR 0 3
19475: PPUSH
19476: LD_INT 1
19478: PPUSH
19479: LD_INT 2
19481: PPUSH
19482: LD_VAR 0 4
19486: PPUSH
19487: CALL_OW 448
19491: NOT
19492: PUSH
19493: LD_VAR 0 4
19497: PUSH
19498: LD_INT 6
19500: EQUAL
19501: AND
19502: IFFALSE 19512
// zbran = us_laser ;
19504: LD_ADDR_VAR 0 4
19508: PUSH
19509: LD_INT 9
19511: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_laser then
19512: LD_VAR 0 1
19516: PPUSH
19517: LD_VAR 0 3
19521: PPUSH
19522: LD_INT 1
19524: PPUSH
19525: LD_INT 2
19527: PPUSH
19528: LD_VAR 0 4
19532: PPUSH
19533: CALL_OW 448
19537: NOT
19538: PUSH
19539: LD_VAR 0 4
19543: PUSH
19544: LD_INT 9
19546: EQUAL
19547: AND
19548: IFFALSE 19558
// zbran = us_rocket_launcher ;
19550: LD_ADDR_VAR 0 4
19554: PUSH
19555: LD_INT 7
19557: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_rocket_launcher then
19558: LD_VAR 0 1
19562: PPUSH
19563: LD_VAR 0 3
19567: PPUSH
19568: LD_INT 1
19570: PPUSH
19571: LD_INT 2
19573: PPUSH
19574: LD_VAR 0 4
19578: PPUSH
19579: CALL_OW 448
19583: NOT
19584: PUSH
19585: LD_VAR 0 4
19589: PUSH
19590: LD_INT 7
19592: EQUAL
19593: AND
19594: IFFALSE 19604
// zbran = us_heavy_gun ;
19596: LD_ADDR_VAR 0 4
19600: PUSH
19601: LD_INT 6
19603: ST_TO_ADDR
// if zbran = us_heavy_gun then
19604: LD_VAR 0 4
19608: PUSH
19609: LD_INT 6
19611: EQUAL
19612: IFFALSE 19632
// podvozek = Rand ( podvozek , us_morphling ) ;
19614: LD_ADDR_VAR 0 3
19618: PUSH
19619: LD_VAR 0 3
19623: PPUSH
19624: LD_INT 5
19626: PPUSH
19627: CALL_OW 12
19631: ST_TO_ADDR
// end ; if Prob ( dif_auto_lepsi_podvozek_sance ) and pasovy_pristavek then
19632: LD_EXP 60
19636: PPUSH
19637: CALL_OW 13
19641: PUSH
19642: LD_VAR 0 7
19646: AND
19647: IFFALSE 19677
// if narod = nation_american then
19649: LD_VAR 0 6
19653: PUSH
19654: LD_INT 1
19656: EQUAL
19657: IFFALSE 19677
// podvozek = Rand ( podvozek , us_morphling ) ;
19659: LD_ADDR_VAR 0 3
19663: PUSH
19664: LD_VAR 0 3
19668: PPUSH
19669: LD_INT 5
19671: PPUSH
19672: CALL_OW 12
19676: ST_TO_ADDR
// AddComConstruct ( tovarna , podvozek , engine_siberite , control_remote , zbran ) end ;
19677: LD_VAR 0 1
19681: PPUSH
19682: LD_VAR 0 3
19686: PPUSH
19687: LD_INT 3
19689: PPUSH
19690: LD_INT 2
19692: PPUSH
19693: LD_VAR 0 4
19697: PPUSH
19698: CALL_OW 185
19702: LD_VAR 0 2
19706: RET
// every 0 0$1 do var capturedList ; var i ;
19707: GO 19709
19709: DISABLE
19710: LD_INT 0
19712: PPUSH
19713: PPUSH
// begin if videlisklad then
19714: LD_EXP 27
19718: IFFALSE 19722
// exit ;
19720: GO 19874
// capturedList = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_building ] , [ f_nation , nation_russian ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
19722: LD_ADDR_VAR 0 1
19726: PUSH
19727: LD_INT 22
19729: PUSH
19730: LD_EXP 19
19734: PUSH
19735: EMPTY
19736: LIST
19737: LIST
19738: PUSH
19739: LD_INT 21
19741: PUSH
19742: LD_INT 3
19744: PUSH
19745: EMPTY
19746: LIST
19747: LIST
19748: PUSH
19749: LD_INT 23
19751: PUSH
19752: LD_INT 3
19754: PUSH
19755: EMPTY
19756: LIST
19757: LIST
19758: PUSH
19759: LD_INT 2
19761: PUSH
19762: LD_INT 30
19764: PUSH
19765: LD_INT 0
19767: PUSH
19768: EMPTY
19769: LIST
19770: LIST
19771: PUSH
19772: LD_INT 30
19774: PUSH
19775: LD_INT 1
19777: PUSH
19778: EMPTY
19779: LIST
19780: LIST
19781: PUSH
19782: EMPTY
19783: LIST
19784: LIST
19785: LIST
19786: PUSH
19787: EMPTY
19788: LIST
19789: LIST
19790: LIST
19791: LIST
19792: PPUSH
19793: CALL_OW 69
19797: ST_TO_ADDR
// if capturedList then
19798: LD_VAR 0 1
19802: IFFALSE 19873
// begin for i in capturedList do
19804: LD_ADDR_VAR 0 2
19808: PUSH
19809: LD_VAR 0 1
19813: PUSH
19814: FOR_IN
19815: IFFALSE 19871
// if See ( you , capturedList [ 1 ] ) then
19817: LD_EXP 18
19821: PPUSH
19822: LD_VAR 0 1
19826: PUSH
19827: LD_INT 1
19829: ARRAY
19830: PPUSH
19831: CALL_OW 292
19835: IFFALSE 19869
// begin videlisklad = true ;
19837: LD_ADDR_EXP 27
19841: PUSH
19842: LD_INT 1
19844: ST_TO_ADDR
// Say ( NajdiVojaka , D3nekdo-1 ) ;
19845: CALL 11131 0 0
19849: PPUSH
19850: LD_STRING D3nekdo-1
19852: PPUSH
19853: CALL_OW 88
// Say ( NajdiMechanika , D3nekdo-2 ) ;
19857: CALL 11553 0 0
19861: PPUSH
19862: LD_STRING D3nekdo-2
19864: PPUSH
19865: CALL_OW 88
// end ;
19869: GO 19814
19871: POP
19872: POP
// end ; enable ;
19873: ENABLE
// end ;
19874: PPOPN 2
19876: END
// every 9 9$43 do
19877: GO 19879
19879: DISABLE
// begin SayRadio ( jasin , D3jas-1a ) ;
19880: LD_EXP 15
19884: PPUSH
19885: LD_STRING D3jas-1a
19887: PPUSH
19888: CALL_OW 94
// Say ( vsevolod , D3vse-2 ) ;
19892: LD_EXP 1
19896: PPUSH
19897: LD_STRING D3vse-2
19899: PPUSH
19900: CALL_OW 88
// end ;
19904: END
