// 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 1952 0 0
// LoadSave ( ) ;
  76: CALL 2129 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 12087 0 0
// NaplnVsechnyBudovyLidma ;
 111: CALL 3602 0 0
// BLevely ;
 115: CALL 3509 0 0
// ArrayInity ( ) ;
 119: CALL 2707 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 , 4 , 6 , nation_russian , You ) ;
 288: LD_ADDR_VAR 0 3
 292: PUSH
 293: LD_VAR 0 4
 297: PPUSH
 298: LD_INT 4
 300: PPUSH
 301: LD_INT 6
 303: PPUSH
 304: LD_INT 3
 306: PPUSH
 307: LD_EXP 18
 311: PPUSH
 312: CALL 2950 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 2950 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 2950 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
// YouWin ;
1943: CALL_OW 103
// end ; end_of_file
1947: LD_VAR 0 1
1951: RET
// export powelvyhrozoval , powelvyhrozoval2 , videlisklad , zimatalk , labtalk , autaNavic ; export function OstatniInity ( ) ; begin
1952: LD_INT 0
1954: PPUSH
// you = 3 ;
1955: LD_ADDR_EXP 18
1959: PUSH
1960: LD_INT 3
1962: ST_TO_ADDR
// amik = 1 ;
1963: LD_ADDR_EXP 19
1967: PUSH
1968: LD_INT 1
1970: ST_TO_ADDR
// amik_attack_listL = [ ] ;
1971: LD_ADDR_EXP 20
1975: PUSH
1976: EMPTY
1977: ST_TO_ADDR
// amik_attack_listTR = [ ] ;
1978: LD_ADDR_EXP 21
1982: PUSH
1983: EMPTY
1984: ST_TO_ADDR
// amik_attack_listR = [ ] ;
1985: LD_ADDR_EXP 22
1989: PUSH
1990: EMPTY
1991: ST_TO_ADDR
// powelvyhrozoval = false ;
1992: LD_ADDR_EXP 25
1996: PUSH
1997: LD_INT 0
1999: ST_TO_ADDR
// powelvyhrozoval2 = false ;
2000: LD_ADDR_EXP 26
2004: PUSH
2005: LD_INT 0
2007: ST_TO_ADDR
// videlisklad = false ;
2008: LD_ADDR_EXP 27
2012: PUSH
2013: LD_INT 0
2015: ST_TO_ADDR
// zimatalk = false ;
2016: LD_ADDR_EXP 28
2020: PUSH
2021: LD_INT 0
2023: ST_TO_ADDR
// labtalk = false ;
2024: LD_ADDR_EXP 29
2028: PUSH
2029: LD_INT 0
2031: ST_TO_ADDR
// uc_side = 6 ;
2032: LD_ADDR_OWVAR 20
2036: PUSH
2037: LD_INT 6
2039: ST_TO_ADDR
// uc_nation = nation_russian ;
2040: LD_ADDR_OWVAR 21
2044: PUSH
2045: LD_INT 3
2047: ST_TO_ADDR
// hc_class = class_soldier ;
2048: LD_ADDR_OWVAR 28
2052: PUSH
2053: LD_INT 1
2055: ST_TO_ADDR
// jasin = NewCharacter ( Yashin ) ;
2056: LD_ADDR_EXP 15
2060: PUSH
2061: LD_STRING Yashin
2063: PPUSH
2064: CALL_OW 25
2068: ST_TO_ADDR
// uc_side = amik ;
2069: LD_ADDR_OWVAR 20
2073: PUSH
2074: LD_EXP 19
2078: ST_TO_ADDR
// uc_nation = nation_american ;
2079: LD_ADDR_OWVAR 21
2083: PUSH
2084: LD_INT 1
2086: ST_TO_ADDR
// hc_class = class_soldier ;
2087: LD_ADDR_OWVAR 28
2091: PUSH
2092: LD_INT 1
2094: ST_TO_ADDR
// powel = NewCharacter ( Powell ) ;
2095: LD_ADDR_EXP 16
2099: PUSH
2100: LD_STRING Powell
2102: PPUSH
2103: CALL_OW 25
2107: ST_TO_ADDR
// autaNavic = LoadVariable ( AutaNavic , 0 ) ;
2108: LD_ADDR_EXP 30
2112: PUSH
2113: LD_STRING AutaNavic
2115: PPUSH
2116: LD_INT 0
2118: PPUSH
2119: CALL_OW 30
2123: ST_TO_ADDR
// end ;
2124: LD_VAR 0 1
2128: RET
// export function LoadSave ( ) ; var i ; begin
2129: LD_INT 0
2131: PPUSH
2132: PPUSH
// uc_nation = nation_russian ;
2133: LD_ADDR_OWVAR 21
2137: PUSH
2138: LD_INT 3
2140: ST_TO_ADDR
// uc_side = You ;
2141: LD_ADDR_OWVAR 20
2145: PUSH
2146: LD_EXP 18
2150: ST_TO_ADDR
// Mikhail = NewCharacter ( Mikhail ) ;
2151: LD_ADDR_EXP 14
2155: PUSH
2156: LD_STRING Mikhail
2158: PPUSH
2159: CALL_OW 25
2163: ST_TO_ADDR
// Kvantovy = NewCharacter ( Kvantovy ) ;
2164: LD_ADDR_EXP 12
2168: PUSH
2169: LD_STRING Kvantovy
2171: PPUSH
2172: CALL_OW 25
2176: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
2177: LD_STRING Vsevolod
2179: PPUSH
2180: CALL_OW 28
2184: NOT
2185: IFFALSE 2306
// begin vsevolod = NewCharacter ( Vsevolod ) ;
2187: LD_ADDR_EXP 1
2191: PUSH
2192: LD_STRING Vsevolod
2194: PPUSH
2195: CALL_OW 25
2199: ST_TO_ADDR
// talin = NewCharacter ( Talin ) ;
2200: LD_ADDR_EXP 11
2204: PUSH
2205: LD_STRING Talin
2207: PPUSH
2208: CALL_OW 25
2212: ST_TO_ADDR
// gnevko = NewCharacter ( Gnyevko ) ;
2213: LD_ADDR_EXP 2
2217: PUSH
2218: LD_STRING Gnyevko
2220: PPUSH
2221: CALL_OW 25
2225: ST_TO_ADDR
// petrovova = NewCharacter ( Petrovova ) ;
2226: LD_ADDR_EXP 3
2230: PUSH
2231: LD_STRING Petrovova
2233: PPUSH
2234: CALL_OW 25
2238: ST_TO_ADDR
// dolgov = NewCharacter ( Dolgov ) ;
2239: LD_ADDR_EXP 4
2243: PUSH
2244: LD_STRING Dolgov
2246: PPUSH
2247: CALL_OW 25
2251: ST_TO_ADDR
// karamazov = NewCharacter ( Karamazov ) ;
2252: LD_ADDR_EXP 5
2256: PUSH
2257: LD_STRING Karamazov
2259: PPUSH
2260: CALL_OW 25
2264: ST_TO_ADDR
// titov = NewCharacter ( Titov ) ;
2265: LD_ADDR_EXP 6
2269: PUSH
2270: LD_STRING Titov
2272: PPUSH
2273: CALL_OW 25
2277: ST_TO_ADDR
// kozlov = NewCharacter ( Kozlov ) ;
2278: LD_ADDR_EXP 7
2282: PUSH
2283: LD_STRING Kozlov
2285: PPUSH
2286: CALL_OW 25
2290: ST_TO_ADDR
// kapitsova = NewCharacter ( Kapitsova ) ;
2291: LD_ADDR_EXP 8
2295: PUSH
2296: LD_STRING Kapitsova
2298: PPUSH
2299: CALL_OW 25
2303: ST_TO_ADDR
// end else
2304: GO 2644
// begin vsevolod = CreateCharacter ( Vsevolod ) ;
2306: LD_ADDR_EXP 1
2310: PUSH
2311: LD_STRING Vsevolod
2313: PPUSH
2314: CALL_OW 34
2318: ST_TO_ADDR
// talin = CreateCharacter ( Talin ) ;
2319: LD_ADDR_EXP 11
2323: PUSH
2324: LD_STRING Talin
2326: PPUSH
2327: CALL_OW 34
2331: ST_TO_ADDR
// if TestVariable ( GnyevkoZiv ) then
2332: LD_STRING GnyevkoZiv
2334: PPUSH
2335: CALL_OW 27
2339: IFFALSE 2354
// gnevko = CreateCharacter ( Gnyevko ) ;
2341: LD_ADDR_EXP 2
2345: PUSH
2346: LD_STRING Gnyevko
2348: PPUSH
2349: CALL_OW 34
2353: ST_TO_ADDR
// if TestVariable ( PetrovovaZiv ) then
2354: LD_STRING PetrovovaZiv
2356: PPUSH
2357: CALL_OW 27
2361: IFFALSE 2376
// petrovova = CreateCharacter ( Petrovova ) ;
2363: LD_ADDR_EXP 3
2367: PUSH
2368: LD_STRING Petrovova
2370: PPUSH
2371: CALL_OW 34
2375: ST_TO_ADDR
// if TestVariable ( DolgovZiv ) then
2376: LD_STRING DolgovZiv
2378: PPUSH
2379: CALL_OW 27
2383: IFFALSE 2398
// dolgov = CreateCharacter ( Dolgov ) ;
2385: LD_ADDR_EXP 4
2389: PUSH
2390: LD_STRING Dolgov
2392: PPUSH
2393: CALL_OW 34
2397: ST_TO_ADDR
// if TestVariable ( KaramazovZiv ) then
2398: LD_STRING KaramazovZiv
2400: PPUSH
2401: CALL_OW 27
2405: IFFALSE 2420
// karamazov = CreateCharacter ( Karamazov ) ;
2407: LD_ADDR_EXP 5
2411: PUSH
2412: LD_STRING Karamazov
2414: PPUSH
2415: CALL_OW 34
2419: ST_TO_ADDR
// if TestVariable ( TitovZiv ) then
2420: LD_STRING TitovZiv
2422: PPUSH
2423: CALL_OW 27
2427: IFFALSE 2442
// titov = CreateCharacter ( Titov ) ;
2429: LD_ADDR_EXP 6
2433: PUSH
2434: LD_STRING Titov
2436: PPUSH
2437: CALL_OW 34
2441: ST_TO_ADDR
// if TestVariable ( KozlovZiv ) then
2442: LD_STRING KozlovZiv
2444: PPUSH
2445: CALL_OW 27
2449: IFFALSE 2464
// kozlov = CreateCharacter ( Kozlov ) ;
2451: LD_ADDR_EXP 7
2455: PUSH
2456: LD_STRING Kozlov
2458: PPUSH
2459: CALL_OW 34
2463: ST_TO_ADDR
// if TestVariable ( KapitsovaZiv ) then
2464: LD_STRING KapitsovaZiv
2466: PPUSH
2467: CALL_OW 27
2471: IFFALSE 2486
// kapitsova = CreateCharacter ( Kapitsova ) ;
2473: LD_ADDR_EXP 8
2477: PUSH
2478: LD_STRING Kapitsova
2480: PPUSH
2481: CALL_OW 34
2485: ST_TO_ADDR
// for i in [ vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail ] do
2486: LD_ADDR_VAR 0 2
2490: PUSH
2491: LD_EXP 1
2495: PUSH
2496: LD_EXP 2
2500: PUSH
2501: LD_EXP 3
2505: PUSH
2506: LD_EXP 4
2510: PUSH
2511: LD_EXP 5
2515: PUSH
2516: LD_EXP 6
2520: PUSH
2521: LD_EXP 7
2525: PUSH
2526: LD_EXP 8
2530: PUSH
2531: LD_EXP 12
2535: PUSH
2536: LD_EXP 14
2540: PUSH
2541: EMPTY
2542: LIST
2543: LIST
2544: LIST
2545: LIST
2546: LIST
2547: LIST
2548: LIST
2549: LIST
2550: LIST
2551: LIST
2552: PUSH
2553: FOR_IN
2554: IFFALSE 2585
// if GetClass ( i ) = class_bazooker then
2556: LD_VAR 0 2
2560: PPUSH
2561: CALL_OW 257
2565: PUSH
2566: LD_INT 9
2568: EQUAL
2569: IFFALSE 2583
// SetClass ( i , 1 ) ;
2571: LD_VAR 0 2
2575: PPUSH
2576: LD_INT 1
2578: PPUSH
2579: CALL_OW 336
2583: GO 2553
2585: POP
2586: POP
// if gnevko then
2587: LD_EXP 2
2591: IFFALSE 2623
// begin GiveSkillBonus ( gnevko , skill_combat , 1 ) ;
2593: LD_EXP 2
2597: PPUSH
2598: LD_INT 1
2600: PPUSH
2601: LD_INT 1
2603: PPUSH
2604: CALL_OW 238
// GiveSkillBonus ( gnevko , skill_mechanical , 1 ) ;
2608: LD_EXP 2
2612: PPUSH
2613: LD_INT 3
2615: PPUSH
2616: LD_INT 1
2618: PPUSH
2619: CALL_OW 238
// end ; if karamazov then
2623: LD_EXP 5
2627: IFFALSE 2644
// GiveSkillBonus ( karamazov , skill_engineering , 1 ) ;
2629: LD_EXP 5
2633: PPUSH
2634: LD_INT 2
2636: PPUSH
2637: LD_INT 1
2639: PPUSH
2640: CALL_OW 238
// end ; end ;
2644: LD_VAR 0 1
2648: RET
// export function SideDead ( side ) ; begin
2649: LD_INT 0
2651: PPUSH
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] ] ) then
2652: LD_INT 22
2654: PUSH
2655: LD_VAR 0 1
2659: PUSH
2660: EMPTY
2661: LIST
2662: LIST
2663: PUSH
2664: LD_INT 21
2666: PUSH
2667: LD_INT 1
2669: PUSH
2670: EMPTY
2671: LIST
2672: LIST
2673: PUSH
2674: EMPTY
2675: LIST
2676: LIST
2677: PPUSH
2678: CALL_OW 69
2682: IFFALSE 2694
// result = false else
2684: LD_ADDR_VAR 0 2
2688: PUSH
2689: LD_INT 0
2691: ST_TO_ADDR
2692: GO 2702
// result = true ;
2694: LD_ADDR_VAR 0 2
2698: PUSH
2699: LD_INT 1
2701: ST_TO_ADDR
// end ;
2702: LD_VAR 0 2
2706: 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
2707: LD_INT 0
2709: PPUSH
// bazy_oblasti = [ LevaBaza , PravaHorniBaza , PravaBaza , StredniBaza ] ;
2710: LD_ADDR_EXP 31
2714: PUSH
2715: LD_INT 31
2717: PUSH
2718: LD_INT 33
2720: PUSH
2721: LD_INT 35
2723: PUSH
2724: LD_INT 37
2726: PUSH
2727: EMPTY
2728: LIST
2729: LIST
2730: LIST
2731: LIST
2732: ST_TO_ADDR
// dist_max = 60 ;
2733: LD_ADDR_EXP 32
2737: PUSH
2738: LD_INT 60
2740: ST_TO_ADDR
// hranice_leceni_utek = 700 ;
2741: LD_ADDR_EXP 33
2745: PUSH
2746: LD_INT 700
2748: ST_TO_ADDR
// hranice_oprava_utek = 740 ;
2749: LD_ADDR_EXP 35
2753: PUSH
2754: LD_INT 740
2756: ST_TO_ADDR
// hranice_budova_repair = 980 ;
2757: LD_ADDR_EXP 34
2761: PUSH
2762: LD_INT 980
2764: ST_TO_ADDR
// stredy_heal_oblasti = [ 27 , 21 , 114 , 17 , 148 , 74 , 86 , 68 ] ;
2765: LD_ADDR_EXP 36
2769: PUSH
2770: LD_INT 27
2772: PUSH
2773: LD_INT 21
2775: PUSH
2776: LD_INT 114
2778: PUSH
2779: LD_INT 17
2781: PUSH
2782: LD_INT 148
2784: PUSH
2785: LD_INT 74
2787: PUSH
2788: LD_INT 86
2790: PUSH
2791: LD_INT 68
2793: PUSH
2794: EMPTY
2795: LIST
2796: LIST
2797: LIST
2798: LIST
2799: LIST
2800: LIST
2801: LIST
2802: LIST
2803: ST_TO_ADDR
// stredy_repair_oblasti = [ 18 , 11 , 104 , 22 , 157 , 73 , 86 , 68 ] ;
2804: LD_ADDR_EXP 37
2808: PUSH
2809: LD_INT 18
2811: PUSH
2812: LD_INT 11
2814: PUSH
2815: LD_INT 104
2817: PUSH
2818: LD_INT 22
2820: PUSH
2821: LD_INT 157
2823: PUSH
2824: LD_INT 73
2826: PUSH
2827: LD_INT 86
2829: PUSH
2830: LD_INT 68
2832: PUSH
2833: EMPTY
2834: LIST
2835: LIST
2836: LIST
2837: LIST
2838: LIST
2839: LIST
2840: LIST
2841: LIST
2842: ST_TO_ADDR
// stredy_carpark_oblasti = [ 25 , 14 , 117 , 27 , 154 , 71 , 86 , 68 ] ;
2843: LD_ADDR_EXP 39
2847: PUSH
2848: LD_INT 25
2850: PUSH
2851: LD_INT 14
2853: PUSH
2854: LD_INT 117
2856: PUSH
2857: LD_INT 27
2859: PUSH
2860: LD_INT 154
2862: PUSH
2863: LD_INT 71
2865: PUSH
2866: LD_INT 86
2868: PUSH
2869: LD_INT 68
2871: PUSH
2872: EMPTY
2873: LIST
2874: LIST
2875: LIST
2876: LIST
2877: LIST
2878: LIST
2879: LIST
2880: LIST
2881: ST_TO_ADDR
// stredy_baz = [ 30 , 18 , 111 , 18 , 150 , 73 , 86 , 68 ] ;
2882: LD_ADDR_EXP 38
2886: PUSH
2887: LD_INT 30
2889: PUSH
2890: LD_INT 18
2892: PUSH
2893: LD_INT 111
2895: PUSH
2896: LD_INT 18
2898: PUSH
2899: LD_INT 150
2901: PUSH
2902: LD_INT 73
2904: PUSH
2905: LD_INT 86
2907: PUSH
2908: LD_INT 68
2910: PUSH
2911: EMPTY
2912: LIST
2913: LIST
2914: LIST
2915: LIST
2916: LIST
2917: LIST
2918: LIST
2919: LIST
2920: ST_TO_ADDR
// snipy_range = 20 ;
2921: LD_ADDR_EXP 40
2925: PUSH
2926: LD_INT 20
2928: ST_TO_ADDR
// radar_distance = 20 ;
2929: LD_ADDR_EXP 41
2933: PUSH
2934: LD_INT 20
2936: ST_TO_ADDR
// hranice_utok_repair_utek = 600 ;
2937: LD_ADDR_EXP 42
2941: PUSH
2942: LD_INT 600
2944: ST_TO_ADDR
// end ;
2945: LD_VAR 0 1
2949: RET
// export function VytvorCloveka ( povolani , minskill , maxskill , nat , side ) ; var max , min , min_ost ; begin
2950: LD_INT 0
2952: PPUSH
2953: PPUSH
2954: PPUSH
2955: PPUSH
// max = maxskill ;
2956: LD_ADDR_VAR 0 7
2960: PUSH
2961: LD_VAR 0 3
2965: ST_TO_ADDR
// min = minskill ;
2966: LD_ADDR_VAR 0 8
2970: PUSH
2971: LD_VAR 0 2
2975: ST_TO_ADDR
// min_ost = 0 ;
2976: LD_ADDR_VAR 0 9
2980: PUSH
2981: LD_INT 0
2983: ST_TO_ADDR
// InitHc ( ) ;
2984: CALL_OW 19
// uc_nation := nat ;
2988: LD_ADDR_OWVAR 21
2992: PUSH
2993: LD_VAR 0 4
2997: ST_TO_ADDR
// uc_side = side ;
2998: LD_ADDR_OWVAR 20
3002: PUSH
3003: LD_VAR 0 5
3007: ST_TO_ADDR
// hc_importance = 30 ;
3008: LD_ADDR_OWVAR 32
3012: PUSH
3013: LD_INT 30
3015: ST_TO_ADDR
// hc_name :=  ;
3016: LD_ADDR_OWVAR 26
3020: PUSH
3021: LD_STRING 
3023: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
3024: LD_ADDR_OWVAR 29
3028: PUSH
3029: LD_INT 9
3031: PPUSH
3032: LD_INT 11
3034: PPUSH
3035: CALL_OW 12
3039: PUSH
3040: LD_INT 9
3042: PPUSH
3043: LD_INT 11
3045: PPUSH
3046: CALL_OW 12
3050: PUSH
3051: EMPTY
3052: LIST
3053: LIST
3054: ST_TO_ADDR
// hc_class = povolani ;
3055: LD_ADDR_OWVAR 28
3059: PUSH
3060: LD_VAR 0 1
3064: ST_TO_ADDR
// if Prob ( 30 ) then
3065: LD_INT 30
3067: PPUSH
3068: CALL_OW 13
3072: IFFALSE 3084
// hc_sex := 2 else
3074: LD_ADDR_OWVAR 27
3078: PUSH
3079: LD_INT 2
3081: ST_TO_ADDR
3082: GO 3092
// hc_sex := 1 ;
3084: LD_ADDR_OWVAR 27
3088: PUSH
3089: LD_INT 1
3091: ST_TO_ADDR
// case povolani of 1 :
3092: LD_VAR 0 1
3096: PUSH
3097: LD_INT 1
3099: DOUBLE
3100: EQUAL
3101: IFTRUE 3105
3103: GO 3199
3105: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
3106: LD_ADDR_OWVAR 31
3110: PUSH
3111: LD_VAR 0 8
3115: PPUSH
3116: LD_VAR 0 7
3120: PPUSH
3121: CALL_OW 12
3125: PUSH
3126: LD_VAR 0 9
3130: PPUSH
3131: LD_VAR 0 7
3135: PUSH
3136: LD_INT 1
3138: MINUS
3139: PPUSH
3140: CALL_OW 12
3144: PUSH
3145: LD_VAR 0 9
3149: PPUSH
3150: LD_VAR 0 7
3154: PUSH
3155: LD_INT 1
3157: MINUS
3158: PPUSH
3159: CALL_OW 12
3163: PUSH
3164: LD_VAR 0 9
3168: PPUSH
3169: LD_VAR 0 7
3173: PUSH
3174: LD_INT 1
3176: MINUS
3177: PPUSH
3178: CALL_OW 12
3182: PUSH
3183: EMPTY
3184: LIST
3185: LIST
3186: LIST
3187: LIST
3188: ST_TO_ADDR
// hc_class = class_soldier ;
3189: LD_ADDR_OWVAR 28
3193: PUSH
3194: LD_INT 1
3196: ST_TO_ADDR
// end ; 2 :
3197: GO 3494
3199: LD_INT 2
3201: DOUBLE
3202: EQUAL
3203: IFTRUE 3207
3205: GO 3297
3207: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
3208: LD_ADDR_OWVAR 31
3212: PUSH
3213: LD_VAR 0 8
3217: PPUSH
3218: LD_VAR 0 7
3222: PPUSH
3223: CALL_OW 12
3227: PUSH
3228: LD_VAR 0 8
3232: PPUSH
3233: LD_VAR 0 7
3237: PPUSH
3238: CALL_OW 12
3242: PUSH
3243: LD_VAR 0 9
3247: PPUSH
3248: LD_VAR 0 7
3252: PUSH
3253: LD_INT 1
3255: MINUS
3256: PPUSH
3257: CALL_OW 12
3261: PUSH
3262: LD_VAR 0 9
3266: PPUSH
3267: LD_VAR 0 7
3271: PUSH
3272: LD_INT 1
3274: MINUS
3275: PPUSH
3276: CALL_OW 12
3280: PUSH
3281: EMPTY
3282: LIST
3283: LIST
3284: LIST
3285: LIST
3286: ST_TO_ADDR
// hc_class = class_engineer ;
3287: LD_ADDR_OWVAR 28
3291: PUSH
3292: LD_INT 2
3294: ST_TO_ADDR
// end ; 3 :
3295: GO 3494
3297: LD_INT 3
3299: DOUBLE
3300: EQUAL
3301: IFTRUE 3305
3303: GO 3395
3305: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min , max ) , rand ( min_ost , max - 1 ) ] ;
3306: LD_ADDR_OWVAR 31
3310: PUSH
3311: LD_VAR 0 8
3315: PPUSH
3316: LD_VAR 0 7
3320: PPUSH
3321: CALL_OW 12
3325: PUSH
3326: LD_VAR 0 9
3330: PPUSH
3331: LD_VAR 0 7
3335: PUSH
3336: LD_INT 1
3338: MINUS
3339: PPUSH
3340: CALL_OW 12
3344: PUSH
3345: LD_VAR 0 8
3349: PPUSH
3350: LD_VAR 0 7
3354: PPUSH
3355: CALL_OW 12
3359: PUSH
3360: LD_VAR 0 9
3364: PPUSH
3365: LD_VAR 0 7
3369: PUSH
3370: LD_INT 1
3372: MINUS
3373: PPUSH
3374: CALL_OW 12
3378: PUSH
3379: EMPTY
3380: LIST
3381: LIST
3382: LIST
3383: LIST
3384: ST_TO_ADDR
// hc_class = class_mechanic ;
3385: LD_ADDR_OWVAR 28
3389: PUSH
3390: LD_INT 3
3392: ST_TO_ADDR
// end ; 4 :
3393: GO 3494
3395: LD_INT 4
3397: DOUBLE
3398: EQUAL
3399: IFTRUE 3403
3401: GO 3493
3403: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min , max ) ] ;
3404: LD_ADDR_OWVAR 31
3408: PUSH
3409: LD_VAR 0 8
3413: PPUSH
3414: LD_VAR 0 7
3418: PPUSH
3419: CALL_OW 12
3423: PUSH
3424: LD_VAR 0 9
3428: PPUSH
3429: LD_VAR 0 7
3433: PUSH
3434: LD_INT 1
3436: MINUS
3437: PPUSH
3438: CALL_OW 12
3442: PUSH
3443: LD_VAR 0 9
3447: PPUSH
3448: LD_VAR 0 7
3452: PUSH
3453: LD_INT 1
3455: MINUS
3456: PPUSH
3457: CALL_OW 12
3461: PUSH
3462: LD_VAR 0 8
3466: PPUSH
3467: LD_VAR 0 7
3471: PPUSH
3472: CALL_OW 12
3476: PUSH
3477: EMPTY
3478: LIST
3479: LIST
3480: LIST
3481: LIST
3482: ST_TO_ADDR
// hc_class = class_scientistic ;
3483: LD_ADDR_OWVAR 28
3487: PUSH
3488: LD_INT 4
3490: ST_TO_ADDR
// end ; end ;
3491: GO 3494
3493: POP
// result := CreateHuman ( ) ;
3494: LD_ADDR_VAR 0 6
3498: PUSH
3499: CALL_OW 44
3503: ST_TO_ADDR
// end ;
3504: LD_VAR 0 6
3508: RET
// export function BLevely ; begin
3509: LD_INT 0
3511: PPUSH
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , amik ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3512: LD_INT 21
3514: PUSH
3515: LD_INT 3
3517: PUSH
3518: EMPTY
3519: LIST
3520: LIST
3521: PUSH
3522: LD_INT 22
3524: PUSH
3525: LD_EXP 19
3529: PUSH
3530: EMPTY
3531: LIST
3532: LIST
3533: PUSH
3534: EMPTY
3535: LIST
3536: LIST
3537: PPUSH
3538: CALL_OW 69
3542: PPUSH
3543: LD_INT 52
3545: PUSH
3546: EMPTY
3547: LIST
3548: PUSH
3549: LD_INT 22
3551: PUSH
3552: LD_EXP 19
3556: PUSH
3557: EMPTY
3558: LIST
3559: LIST
3560: PUSH
3561: LD_INT 25
3563: PUSH
3564: LD_INT 2
3566: PUSH
3567: EMPTY
3568: LIST
3569: LIST
3570: PUSH
3571: EMPTY
3572: LIST
3573: LIST
3574: LIST
3575: PPUSH
3576: CALL_OW 69
3580: PUSH
3581: LD_INT 1
3583: ARRAY
3584: PPUSH
3585: LD_INT 2
3587: PPUSH
3588: CALL_OW 259
3592: PPUSH
3593: CALL_OW 241
// end ;
3597: LD_VAR 0 1
3601: RET
// export function NaplnVsechnyBudovyLidma ; var un ; var b , i , bunkry ; begin
3602: LD_INT 0
3604: PPUSH
3605: PPUSH
3606: PPUSH
3607: PPUSH
3608: PPUSH
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ) do
3609: LD_ADDR_VAR 0 3
3613: PUSH
3614: LD_INT 2
3616: PUSH
3617: LD_INT 30
3619: PUSH
3620: LD_INT 32
3622: PUSH
3623: EMPTY
3624: LIST
3625: LIST
3626: PUSH
3627: LD_INT 30
3629: PUSH
3630: LD_INT 31
3632: PUSH
3633: EMPTY
3634: LIST
3635: LIST
3636: PUSH
3637: EMPTY
3638: LIST
3639: LIST
3640: LIST
3641: PPUSH
3642: CALL_OW 69
3646: PUSH
3647: FOR_IN
3648: IFFALSE 3732
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
3650: LD_ADDR_VAR 0 2
3654: PUSH
3655: LD_INT 1
3657: PPUSH
3658: LD_EXP 50
3662: PPUSH
3663: LD_EXP 51
3667: PPUSH
3668: LD_VAR 0 3
3672: PPUSH
3673: CALL_OW 248
3677: PPUSH
3678: LD_VAR 0 3
3682: PPUSH
3683: CALL_OW 255
3687: PPUSH
3688: CALL 2950 0 5
3692: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
3693: LD_VAR 0 2
3697: PPUSH
3698: LD_VAR 0 3
3702: PPUSH
3703: CALL_OW 254
3707: PUSH
3708: LD_INT 3
3710: PLUS
3711: PPUSH
3712: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
3716: LD_VAR 0 2
3720: PPUSH
3721: LD_VAR 0 3
3725: PPUSH
3726: CALL_OW 52
// end ;
3730: GO 3647
3732: POP
3733: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) do
3734: LD_ADDR_VAR 0 3
3738: PUSH
3739: LD_INT 2
3741: PUSH
3742: LD_INT 30
3744: PUSH
3745: LD_INT 4
3747: PUSH
3748: EMPTY
3749: LIST
3750: LIST
3751: PUSH
3752: LD_INT 30
3754: PUSH
3755: LD_INT 5
3757: PUSH
3758: EMPTY
3759: LIST
3760: LIST
3761: PUSH
3762: EMPTY
3763: LIST
3764: LIST
3765: LIST
3766: PPUSH
3767: CALL_OW 69
3771: PUSH
3772: FOR_IN
3773: IFFALSE 3873
// begin if GetSide ( b ) = amik then
3775: LD_VAR 0 3
3779: PPUSH
3780: CALL_OW 255
3784: PUSH
3785: LD_EXP 19
3789: EQUAL
3790: IFFALSE 3871
// begin for i = 1 to dif_enemy_lidi_kasa do
3792: LD_ADDR_VAR 0 4
3796: PUSH
3797: DOUBLE
3798: LD_INT 1
3800: DEC
3801: ST_TO_ADDR
3802: LD_EXP 47
3806: PUSH
3807: FOR_TO
3808: IFFALSE 3869
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
3810: LD_ADDR_VAR 0 2
3814: PUSH
3815: LD_INT 1
3817: PPUSH
3818: LD_EXP 50
3822: PPUSH
3823: LD_EXP 51
3827: PPUSH
3828: LD_VAR 0 3
3832: PPUSH
3833: CALL_OW 248
3837: PPUSH
3838: LD_VAR 0 3
3842: PPUSH
3843: CALL_OW 255
3847: PPUSH
3848: CALL 2950 0 5
3852: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
3853: LD_VAR 0 2
3857: PPUSH
3858: LD_VAR 0 3
3862: PPUSH
3863: CALL_OW 52
// end ;
3867: GO 3807
3869: POP
3870: POP
// end ; end ;
3871: GO 3772
3873: POP
3874: 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
3875: LD_ADDR_VAR 0 3
3879: PUSH
3880: LD_INT 2
3882: PUSH
3883: LD_INT 30
3885: PUSH
3886: LD_INT 6
3888: PUSH
3889: EMPTY
3890: LIST
3891: LIST
3892: PUSH
3893: LD_INT 30
3895: PUSH
3896: LD_INT 7
3898: PUSH
3899: EMPTY
3900: LIST
3901: LIST
3902: PUSH
3903: LD_INT 30
3905: PUSH
3906: LD_INT 8
3908: PUSH
3909: EMPTY
3910: LIST
3911: LIST
3912: PUSH
3913: LD_INT 30
3915: PUSH
3916: LD_INT 9
3918: PUSH
3919: EMPTY
3920: LIST
3921: LIST
3922: PUSH
3923: LD_INT 30
3925: PUSH
3926: LD_INT 10
3928: PUSH
3929: EMPTY
3930: LIST
3931: LIST
3932: PUSH
3933: LD_INT 30
3935: PUSH
3936: LD_INT 11
3938: PUSH
3939: EMPTY
3940: LIST
3941: LIST
3942: PUSH
3943: LD_INT 30
3945: PUSH
3946: LD_INT 12
3948: PUSH
3949: EMPTY
3950: LIST
3951: LIST
3952: PUSH
3953: LD_INT 30
3955: PUSH
3956: LD_INT 13
3958: PUSH
3959: EMPTY
3960: LIST
3961: LIST
3962: PUSH
3963: LD_INT 30
3965: PUSH
3966: LD_INT 14
3968: PUSH
3969: EMPTY
3970: LIST
3971: LIST
3972: PUSH
3973: LD_INT 30
3975: PUSH
3976: LD_INT 15
3978: PUSH
3979: EMPTY
3980: LIST
3981: LIST
3982: PUSH
3983: LD_INT 30
3985: PUSH
3986: LD_INT 3
3988: PUSH
3989: EMPTY
3990: LIST
3991: LIST
3992: PUSH
3993: LD_INT 30
3995: PUSH
3996: LD_INT 2
3998: PUSH
3999: EMPTY
4000: LIST
4001: LIST
4002: PUSH
4003: LD_INT 30
4005: PUSH
4006: LD_INT 36
4008: PUSH
4009: EMPTY
4010: LIST
4011: LIST
4012: PUSH
4013: EMPTY
4014: LIST
4015: LIST
4016: LIST
4017: LIST
4018: LIST
4019: LIST
4020: LIST
4021: LIST
4022: LIST
4023: LIST
4024: LIST
4025: LIST
4026: LIST
4027: LIST
4028: PPUSH
4029: CALL_OW 69
4033: PUSH
4034: FOR_IN
4035: IFFALSE 4273
// begin if not GetBType ( b ) = b_control_tower then
4037: LD_VAR 0 3
4041: PPUSH
4042: CALL_OW 266
4046: PUSH
4047: LD_INT 36
4049: EQUAL
4050: NOT
4051: IFFALSE 4194
// begin for i = 1 to dif_enemy_lidi_faclab do
4053: LD_ADDR_VAR 0 4
4057: PUSH
4058: DOUBLE
4059: LD_INT 1
4061: DEC
4062: ST_TO_ADDR
4063: LD_EXP 49
4067: PUSH
4068: FOR_TO
4069: IFFALSE 4190
// begin if GetBType ( b ) = b_factory then
4071: LD_VAR 0 3
4075: PPUSH
4076: CALL_OW 266
4080: PUSH
4081: LD_INT 3
4083: EQUAL
4084: IFFALSE 4131
// un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) else
4086: LD_ADDR_VAR 0 2
4090: PUSH
4091: LD_INT 3
4093: PPUSH
4094: LD_EXP 50
4098: PPUSH
4099: LD_EXP 51
4103: PPUSH
4104: LD_VAR 0 3
4108: PPUSH
4109: CALL_OW 248
4113: PPUSH
4114: LD_VAR 0 3
4118: PPUSH
4119: CALL_OW 255
4123: PPUSH
4124: CALL 2950 0 5
4128: ST_TO_ADDR
4129: GO 4174
// un = VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4131: LD_ADDR_VAR 0 2
4135: PUSH
4136: LD_INT 4
4138: PPUSH
4139: LD_EXP 50
4143: PPUSH
4144: LD_EXP 51
4148: PPUSH
4149: LD_VAR 0 3
4153: PPUSH
4154: CALL_OW 248
4158: PPUSH
4159: LD_VAR 0 3
4163: PPUSH
4164: CALL_OW 255
4168: PPUSH
4169: CALL 2950 0 5
4173: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4174: LD_VAR 0 2
4178: PPUSH
4179: LD_VAR 0 3
4183: PPUSH
4184: CALL_OW 52
// end ;
4188: GO 4068
4190: POP
4191: POP
// end else
4192: GO 4271
// begin for i = 1 to 3 do
4194: LD_ADDR_VAR 0 4
4198: PUSH
4199: DOUBLE
4200: LD_INT 1
4202: DEC
4203: ST_TO_ADDR
4204: LD_INT 3
4206: PUSH
4207: FOR_TO
4208: IFFALSE 4269
// begin un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4210: LD_ADDR_VAR 0 2
4214: PUSH
4215: LD_INT 3
4217: PPUSH
4218: LD_EXP 50
4222: PPUSH
4223: LD_EXP 51
4227: PPUSH
4228: LD_VAR 0 3
4232: PPUSH
4233: CALL_OW 248
4237: PPUSH
4238: LD_VAR 0 3
4242: PPUSH
4243: CALL_OW 255
4247: PPUSH
4248: CALL 2950 0 5
4252: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4253: LD_VAR 0 2
4257: PPUSH
4258: LD_VAR 0 3
4262: PPUSH
4263: CALL_OW 52
// end ;
4267: GO 4207
4269: POP
4270: POP
// end ; end ;
4271: GO 4034
4273: POP
4274: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) do
4275: LD_ADDR_VAR 0 3
4279: PUSH
4280: LD_INT 2
4282: PUSH
4283: LD_INT 30
4285: PUSH
4286: LD_INT 0
4288: PUSH
4289: EMPTY
4290: LIST
4291: LIST
4292: PUSH
4293: LD_INT 30
4295: PUSH
4296: LD_INT 1
4298: PUSH
4299: EMPTY
4300: LIST
4301: LIST
4302: PUSH
4303: EMPTY
4304: LIST
4305: LIST
4306: LIST
4307: PPUSH
4308: CALL_OW 69
4312: PUSH
4313: FOR_IN
4314: IFFALSE 4397
// begin for i = 1 to dif_enemy_lidi_sklad do
4316: LD_ADDR_VAR 0 4
4320: PUSH
4321: DOUBLE
4322: LD_INT 1
4324: DEC
4325: ST_TO_ADDR
4326: LD_EXP 48
4330: PUSH
4331: FOR_TO
4332: IFFALSE 4393
// begin un = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4334: LD_ADDR_VAR 0 2
4338: PUSH
4339: LD_INT 2
4341: PPUSH
4342: LD_EXP 50
4346: PPUSH
4347: LD_EXP 51
4351: PPUSH
4352: LD_VAR 0 3
4356: PPUSH
4357: CALL_OW 248
4361: PPUSH
4362: LD_VAR 0 3
4366: PPUSH
4367: CALL_OW 255
4371: PPUSH
4372: CALL 2950 0 5
4376: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4377: LD_VAR 0 2
4381: PPUSH
4382: LD_VAR 0 3
4386: PPUSH
4387: CALL_OW 52
// end ;
4391: GO 4331
4393: POP
4394: POP
// end ;
4395: GO 4313
4397: POP
4398: POP
// end ;
4399: LD_VAR 0 1
4403: RET
// export function VyjdiVen ( un ) ; begin
4404: LD_INT 0
4406: PPUSH
// if IsInUnit ( un ) then
4407: LD_VAR 0 1
4411: PPUSH
4412: CALL_OW 310
4416: IFFALSE 4483
// begin if GetType ( IsInUnit ( un ) ) = unit_building then
4418: LD_VAR 0 1
4422: PPUSH
4423: CALL_OW 310
4427: PPUSH
4428: CALL_OW 247
4432: PUSH
4433: LD_INT 3
4435: EQUAL
4436: IFFALSE 4447
// ComExitBuilding ( un ) ;
4438: LD_VAR 0 1
4442: PPUSH
4443: CALL_OW 122
// if GetType ( IsInUnit ( un ) ) = unit_vehicle then
4447: LD_VAR 0 1
4451: PPUSH
4452: CALL_OW 310
4456: PPUSH
4457: CALL_OW 247
4461: PUSH
4462: LD_INT 2
4464: EQUAL
4465: IFFALSE 4476
// ComExitVehicle ( un ) ;
4467: LD_VAR 0 1
4471: PPUSH
4472: CALL_OW 121
// Wait ( 0 0$0.2 ) ;
4476: LD_INT 7
4478: PPUSH
4479: CALL_OW 67
// end ; end ;
4483: LD_VAR 0 2
4487: RET
// export function NearestUnitToUnit2 ( list , un ) ; begin
4488: LD_INT 0
4490: PPUSH
// if not list then
4491: LD_VAR 0 1
4495: NOT
4496: IFFALSE 4508
// result = false else
4498: LD_ADDR_VAR 0 3
4502: PUSH
4503: LD_INT 0
4505: ST_TO_ADDR
4506: GO 4569
// begin if IsInUnit ( un ) and GetType ( un ) <> unit_building then
4508: LD_VAR 0 2
4512: PPUSH
4513: CALL_OW 310
4517: PUSH
4518: LD_VAR 0 2
4522: PPUSH
4523: CALL_OW 247
4527: PUSH
4528: LD_INT 3
4530: NONEQUAL
4531: AND
4532: IFFALSE 4549
// un = IsInUnit ( un ) ;
4534: LD_ADDR_VAR 0 2
4538: PUSH
4539: LD_VAR 0 2
4543: PPUSH
4544: CALL_OW 310
4548: ST_TO_ADDR
// result = NearestUnitToUnit ( list , un ) ;
4549: LD_ADDR_VAR 0 3
4553: PUSH
4554: LD_VAR 0 1
4558: PPUSH
4559: LD_VAR 0 2
4563: PPUSH
4564: CALL_OW 74
4568: ST_TO_ADDR
// end ; end ;
4569: LD_VAR 0 3
4573: RET
// export function IsInArea2 ( jedn , un ) ; begin
4574: LD_INT 0
4576: PPUSH
// if not jedn or jedn = 0 then
4577: LD_VAR 0 1
4581: NOT
4582: PUSH
4583: LD_VAR 0 1
4587: PUSH
4588: LD_INT 0
4590: EQUAL
4591: OR
4592: IFFALSE 4604
// result = false else
4594: LD_ADDR_VAR 0 3
4598: PUSH
4599: LD_INT 0
4601: ST_TO_ADDR
4602: GO 4624
// result = IsInArea ( jedn , un ) ;
4604: LD_ADDR_VAR 0 3
4608: PUSH
4609: LD_VAR 0 1
4613: PPUSH
4614: LD_VAR 0 2
4618: PPUSH
4619: CALL_OW 308
4623: ST_TO_ADDR
// end ;
4624: LD_VAR 0 3
4628: RET
// export function See2 ( side , un ) ; var x , y ; begin
4629: LD_INT 0
4631: PPUSH
4632: PPUSH
4633: PPUSH
// if not IsPlaced ( un ) or side < 1 then
4634: LD_VAR 0 2
4638: PPUSH
4639: CALL_OW 305
4643: NOT
4644: PUSH
4645: LD_VAR 0 1
4649: PUSH
4650: LD_INT 1
4652: LESS
4653: OR
4654: IFFALSE 4666
// result = false else
4656: LD_ADDR_VAR 0 3
4660: PUSH
4661: LD_INT 0
4663: ST_TO_ADDR
4664: GO 4733
// begin x := GetX ( un ) ;
4666: LD_ADDR_VAR 0 4
4670: PUSH
4671: LD_VAR 0 2
4675: PPUSH
4676: CALL_OW 250
4680: ST_TO_ADDR
// y := GetY ( un ) ;
4681: LD_ADDR_VAR 0 5
4685: PUSH
4686: LD_VAR 0 2
4690: PPUSH
4691: CALL_OW 251
4695: ST_TO_ADDR
// if not un then
4696: LD_VAR 0 2
4700: NOT
4701: IFFALSE 4713
// result = false else
4703: LD_ADDR_VAR 0 3
4707: PUSH
4708: LD_INT 0
4710: ST_TO_ADDR
4711: GO 4733
// begin result = See ( side , un ) ;
4713: LD_ADDR_VAR 0 3
4717: PUSH
4718: LD_VAR 0 1
4722: PPUSH
4723: LD_VAR 0 2
4727: PPUSH
4728: CALL_OW 292
4732: ST_TO_ADDR
// end ; end ; end ;
4733: LD_VAR 0 3
4737: RET
// every 0 0$20 do var depot ;
4738: GO 4740
4740: DISABLE
4741: LD_INT 0
4743: PPUSH
// begin for depot in FilterAllUnits ( [ [ f_side , amik ] , [ f_ok ] , [ f_btype , b_warehouse ] ] ) do
4744: LD_ADDR_VAR 0 1
4748: PUSH
4749: LD_INT 22
4751: PUSH
4752: LD_EXP 19
4756: PUSH
4757: EMPTY
4758: LIST
4759: LIST
4760: PUSH
4761: LD_INT 50
4763: PUSH
4764: EMPTY
4765: LIST
4766: PUSH
4767: LD_INT 30
4769: PUSH
4770: LD_INT 1
4772: PUSH
4773: EMPTY
4774: LIST
4775: LIST
4776: PUSH
4777: EMPTY
4778: LIST
4779: LIST
4780: LIST
4781: PPUSH
4782: CALL_OW 69
4786: PUSH
4787: FOR_IN
4788: IFFALSE 4801
// SurovinyDoSkladu ( depot ) ;
4790: LD_VAR 0 1
4794: PPUSH
4795: CALL 4807 0 1
4799: GO 4787
4801: POP
4802: POP
// enable ;
4803: ENABLE
// end ;
4804: PPOPN 1
4806: END
// export function SurovinyDoSkladu ( sklad ) ; begin
4807: LD_INT 0
4809: PPUSH
// if GetSide ( sklad ) = you then
4810: LD_VAR 0 1
4814: PPUSH
4815: CALL_OW 255
4819: PUSH
4820: LD_EXP 18
4824: EQUAL
4825: IFFALSE 4829
// exit ;
4827: GO 4916
// if GetResourceType ( GetBase ( sklad ) , mat_cans ) < 200 then
4829: LD_VAR 0 1
4833: PPUSH
4834: CALL_OW 274
4838: PPUSH
4839: LD_INT 1
4841: PPUSH
4842: CALL_OW 275
4846: PUSH
4847: LD_INT 200
4849: LESS
4850: IFFALSE 4872
// AddResourceType ( GetBase ( sklad ) , mat_cans , 200 ) ;
4852: LD_VAR 0 1
4856: PPUSH
4857: CALL_OW 274
4861: PPUSH
4862: LD_INT 1
4864: PPUSH
4865: LD_INT 200
4867: PPUSH
4868: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_siberit ) < 80 then
4872: LD_VAR 0 1
4876: PPUSH
4877: CALL_OW 274
4881: PPUSH
4882: LD_INT 3
4884: PPUSH
4885: CALL_OW 275
4889: PUSH
4890: LD_INT 80
4892: LESS
4893: IFFALSE 4915
// AddResourceType ( GetBase ( sklad ) , mat_siberit , 100 ) ;
4895: LD_VAR 0 1
4899: PPUSH
4900: CALL_OW 274
4904: PPUSH
4905: LD_INT 3
4907: PPUSH
4908: LD_INT 100
4910: PPUSH
4911: CALL_OW 276
// enable ;
4915: ENABLE
// end ;
4916: LD_VAR 0 2
4920: RET
// every 0 0$0.4 trigger tick > 100 do
4921: LD_OWVAR 1
4925: PUSH
4926: LD_INT 100
4928: GREATER
4929: IFFALSE 5002
4931: GO 4933
4933: DISABLE
// begin AI_cast2 ( amik , StredniBazaExpanded ) ;
4934: LD_EXP 19
4938: PPUSH
4939: LD_INT 38
4941: PPUSH
4942: CALL 7302 0 2
// AI_cast2 ( amik , PravaBazaExpanded ) ;
4946: LD_EXP 19
4950: PPUSH
4951: LD_INT 36
4953: PPUSH
4954: CALL 7302 0 2
// Wait ( 0 0$1.1 ) ;
4958: LD_INT 39
4960: PPUSH
4961: CALL_OW 67
// AI_cast1 ( amik , StredniBazaExpanded ) ;
4965: LD_EXP 19
4969: PPUSH
4970: LD_INT 38
4972: PPUSH
4973: CALL 5068 0 2
// AI_cast1 ( amik , PravaBazaExpanded ) ;
4977: LD_EXP 19
4981: PPUSH
4982: LD_INT 36
4984: PPUSH
4985: CALL 5068 0 2
// AI_cast1 ( amik , PravaHorniBazaExpanded ) ;
4989: LD_EXP 19
4993: PPUSH
4994: LD_INT 34
4996: PPUSH
4997: CALL 5068 0 2
// enable ;
5001: ENABLE
// end ;
5002: END
// every 0 0$0.75 trigger tick > 100 do
5003: LD_OWVAR 1
5007: PUSH
5008: LD_INT 100
5010: GREATER
5011: IFFALSE 5067
5013: GO 5015
5015: DISABLE
// begin AI_cast2 ( amik , LevaBazaExpanded ) ;
5016: LD_EXP 19
5020: PPUSH
5021: LD_INT 32
5023: PPUSH
5024: CALL 7302 0 2
// Wait ( 0 0$0.4 ) ;
5028: LD_INT 14
5030: PPUSH
5031: CALL_OW 67
// AI_cast1 ( amik , LevaBazaExpanded ) ;
5035: LD_EXP 19
5039: PPUSH
5040: LD_INT 32
5042: PPUSH
5043: CALL 5068 0 2
// AI_cast2 ( amik , PravaHorniBazaExpanded ) ;
5047: LD_EXP 19
5051: PPUSH
5052: LD_INT 34
5054: PPUSH
5055: CALL 7302 0 2
// Wait ( 0 0$0.3 ) ;
5059: LD_INT 10
5061: PPUSH
5062: CALL_OW 67
// enable ;
5066: ENABLE
// end ;
5067: 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
5068: LD_INT 0
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
5086: PPUSH
5087: PPUSH
5088: PPUSH
// side = strana ;
5089: LD_ADDR_VAR 0 5
5093: PUSH
5094: LD_VAR 0 1
5098: ST_TO_ADDR
// begin inzenyri = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_engineer ] ] ) diff obsazovac ;
5099: LD_ADDR_VAR 0 11
5103: PUSH
5104: LD_INT 95
5106: PUSH
5107: LD_VAR 0 2
5111: PUSH
5112: EMPTY
5113: LIST
5114: LIST
5115: PUSH
5116: LD_INT 50
5118: PUSH
5119: EMPTY
5120: LIST
5121: PUSH
5122: LD_INT 22
5124: PUSH
5125: LD_VAR 0 5
5129: PUSH
5130: EMPTY
5131: LIST
5132: LIST
5133: PUSH
5134: LD_INT 25
5136: PUSH
5137: LD_INT 2
5139: PUSH
5140: EMPTY
5141: LIST
5142: LIST
5143: PUSH
5144: EMPTY
5145: LIST
5146: LIST
5147: LIST
5148: LIST
5149: PPUSH
5150: CALL_OW 69
5154: PUSH
5155: LD_EXP 73
5159: DIFF
5160: ST_TO_ADDR
// b = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , hranice_budova_repair ] ] ] ) ;
5161: LD_ADDR_VAR 0 7
5165: PUSH
5166: LD_INT 95
5168: PUSH
5169: LD_VAR 0 2
5173: PUSH
5174: EMPTY
5175: LIST
5176: LIST
5177: PUSH
5178: LD_INT 52
5180: PUSH
5181: EMPTY
5182: LIST
5183: PUSH
5184: LD_INT 22
5186: PUSH
5187: LD_VAR 0 5
5191: PUSH
5192: EMPTY
5193: LIST
5194: LIST
5195: PUSH
5196: LD_INT 21
5198: PUSH
5199: LD_INT 3
5201: PUSH
5202: EMPTY
5203: LIST
5204: LIST
5205: PUSH
5206: LD_INT 3
5208: PUSH
5209: LD_INT 24
5211: PUSH
5212: LD_EXP 34
5216: PUSH
5217: EMPTY
5218: LIST
5219: LIST
5220: PUSH
5221: EMPTY
5222: LIST
5223: LIST
5224: PUSH
5225: EMPTY
5226: LIST
5227: LIST
5228: LIST
5229: LIST
5230: LIST
5231: PPUSH
5232: CALL_OW 69
5236: ST_TO_ADDR
// b_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
5237: LD_ADDR_VAR 0 8
5241: PUSH
5242: LD_INT 95
5244: PUSH
5245: LD_VAR 0 2
5249: PUSH
5250: EMPTY
5251: LIST
5252: LIST
5253: PUSH
5254: LD_INT 52
5256: PUSH
5257: EMPTY
5258: LIST
5259: PUSH
5260: LD_INT 22
5262: PUSH
5263: LD_VAR 0 5
5267: PUSH
5268: EMPTY
5269: LIST
5270: LIST
5271: PUSH
5272: LD_INT 21
5274: PUSH
5275: LD_INT 3
5277: PUSH
5278: EMPTY
5279: LIST
5280: LIST
5281: PUSH
5282: LD_INT 3
5284: PUSH
5285: LD_INT 24
5287: PUSH
5288: LD_INT 250
5290: PUSH
5291: EMPTY
5292: LIST
5293: LIST
5294: PUSH
5295: EMPTY
5296: LIST
5297: LIST
5298: PUSH
5299: EMPTY
5300: LIST
5301: LIST
5302: LIST
5303: LIST
5304: LIST
5305: PPUSH
5306: CALL_OW 69
5310: ST_TO_ADDR
// sklady = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
5311: LD_ADDR_VAR 0 10
5315: PUSH
5316: LD_INT 95
5318: PUSH
5319: LD_VAR 0 2
5323: PUSH
5324: EMPTY
5325: LIST
5326: LIST
5327: PUSH
5328: LD_INT 50
5330: PUSH
5331: EMPTY
5332: LIST
5333: PUSH
5334: LD_INT 22
5336: PUSH
5337: LD_VAR 0 5
5341: PUSH
5342: EMPTY
5343: LIST
5344: LIST
5345: PUSH
5346: LD_INT 2
5348: PUSH
5349: LD_INT 30
5351: PUSH
5352: LD_INT 0
5354: PUSH
5355: EMPTY
5356: LIST
5357: LIST
5358: PUSH
5359: LD_INT 30
5361: PUSH
5362: LD_INT 1
5364: PUSH
5365: EMPTY
5366: LIST
5367: LIST
5368: PUSH
5369: EMPTY
5370: LIST
5371: LIST
5372: LIST
5373: PUSH
5374: EMPTY
5375: LIST
5376: LIST
5377: LIST
5378: LIST
5379: PPUSH
5380: CALL_OW 69
5384: ST_TO_ADDR
// if inzenyri then
5385: LD_VAR 0 11
5389: IFFALSE 5925
// for un in inzenyri do
5391: LD_ADDR_VAR 0 6
5395: PUSH
5396: LD_VAR 0 11
5400: PUSH
5401: FOR_IN
5402: IFFALSE 5923
// begin if GetLives ( un ) < hranice_leceni_utek then
5404: LD_VAR 0 6
5408: PPUSH
5409: CALL_OW 256
5413: PUSH
5414: LD_EXP 33
5418: LESS
5419: IFFALSE 5432
// UtecDoNejblizsiHealOblasti ( un ) else
5421: LD_VAR 0 6
5425: PPUSH
5426: CALL 10573 0 1
5430: GO 5921
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
5432: LD_VAR 0 6
5436: PPUSH
5437: CALL_OW 256
5441: PUSH
5442: LD_INT 1000
5444: LESS
5445: PUSH
5446: LD_VAR 0 6
5450: PPUSH
5451: LD_VAR 0 6
5455: PPUSH
5456: CALL 9713 0 1
5460: PPUSH
5461: CALL 4574 0 2
5465: AND
5466: IFFALSE 5470
// else
5468: GO 5921
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
5470: LD_VAR 0 6
5474: PPUSH
5475: LD_VAR 0 6
5479: PPUSH
5480: CALL 9999 0 1
5484: PPUSH
5485: CALL_OW 299
5489: PUSH
5490: LD_INT 4
5492: GREATER
5493: IFFALSE 5516
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
5495: LD_VAR 0 6
5499: PPUSH
5500: LD_VAR 0 6
5504: PPUSH
5505: CALL 9856 0 1
5509: PPUSH
5510: CALL_OW 113
5514: GO 5921
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
5516: LD_VAR 0 8
5520: PUSH
5521: LD_VAR 0 6
5525: PPUSH
5526: LD_VAR 0 8
5530: PPUSH
5531: LD_VAR 0 6
5535: PPUSH
5536: CALL 4488 0 2
5540: PPUSH
5541: CALL_OW 296
5545: PUSH
5546: LD_EXP 32
5550: LESS
5551: AND
5552: IFFALSE 5595
// begin VyjdiVen ( un ) ;
5554: LD_VAR 0 6
5558: PPUSH
5559: CALL 4404 0 1
// if b_red then
5563: LD_VAR 0 8
5567: IFFALSE 5593
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
5569: LD_VAR 0 6
5573: PPUSH
5574: LD_VAR 0 8
5578: PPUSH
5579: LD_VAR 0 6
5583: PPUSH
5584: CALL 4488 0 2
5588: PPUSH
5589: CALL_OW 130
// end else
5593: GO 5921
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
5595: LD_VAR 0 7
5599: PUSH
5600: LD_VAR 0 6
5604: PPUSH
5605: LD_VAR 0 7
5609: PPUSH
5610: LD_VAR 0 6
5614: PPUSH
5615: CALL 4488 0 2
5619: PPUSH
5620: CALL_OW 296
5624: PUSH
5625: LD_EXP 32
5629: LESS
5630: AND
5631: IFFALSE 5674
// begin VyjdiVen ( un ) ;
5633: LD_VAR 0 6
5637: PPUSH
5638: CALL 4404 0 1
// if b then
5642: LD_VAR 0 7
5646: IFFALSE 5672
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
5648: LD_VAR 0 6
5652: PPUSH
5653: LD_VAR 0 7
5657: PPUSH
5658: LD_VAR 0 6
5662: PPUSH
5663: CALL 4488 0 2
5667: PPUSH
5668: CALL_OW 130
// end else
5672: GO 5921
// if GetListOfCratesInAreaBySide ( GetSide ( un ) , area ) then
5674: LD_VAR 0 6
5678: PPUSH
5679: CALL_OW 255
5683: PPUSH
5684: LD_VAR 0 2
5688: PPUSH
5689: CALL 11942 0 2
5693: IFFALSE 5793
// begin bedny = GetListOfCratesInAreaBySide ( GetSide ( un ) , area ) ;
5695: LD_ADDR_VAR 0 9
5699: PUSH
5700: LD_VAR 0 6
5704: PPUSH
5705: CALL_OW 255
5709: PPUSH
5710: LD_VAR 0 2
5714: PPUSH
5715: CALL 11942 0 2
5719: ST_TO_ADDR
// if GetDistUnitXY ( un , bedny [ 1 ] , bedny [ 2 ] ) < dist_max then
5720: LD_VAR 0 6
5724: PPUSH
5725: LD_VAR 0 9
5729: PUSH
5730: LD_INT 1
5732: ARRAY
5733: PPUSH
5734: LD_VAR 0 9
5738: PUSH
5739: LD_INT 2
5741: ARRAY
5742: PPUSH
5743: CALL_OW 297
5747: PUSH
5748: LD_EXP 32
5752: LESS
5753: IFFALSE 5791
// begin VyjdiVen ( un ) ;
5755: LD_VAR 0 6
5759: PPUSH
5760: CALL 4404 0 1
// ComCollect ( un , bedny [ 1 ] , bedny [ 2 ] ) ;
5764: LD_VAR 0 6
5768: PPUSH
5769: LD_VAR 0 9
5773: PUSH
5774: LD_INT 1
5776: ARRAY
5777: PPUSH
5778: LD_VAR 0 9
5782: PUSH
5783: LD_INT 2
5785: ARRAY
5786: PPUSH
5787: CALL_OW 117
// end ; end else
5791: GO 5921
// if not GetLives ( un ) = 1000 then
5793: LD_VAR 0 6
5797: PPUSH
5798: CALL_OW 256
5802: PUSH
5803: LD_INT 1000
5805: EQUAL
5806: NOT
5807: IFFALSE 5820
// UtecDoNejblizsiHealOblasti ( un ) else
5809: LD_VAR 0 6
5813: PPUSH
5814: CALL 10573 0 1
5818: GO 5921
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
5820: LD_VAR 0 6
5824: PPUSH
5825: CALL_OW 256
5829: PUSH
5830: LD_INT 1000
5832: EQUAL
5833: PUSH
5834: LD_VAR 0 6
5838: PPUSH
5839: CALL_OW 310
5843: PUSH
5844: LD_INT 0
5846: EQUAL
5847: AND
5848: IFFALSE 5921
// begin ComFree ( un ) ;
5850: LD_VAR 0 6
5854: PPUSH
5855: CALL_OW 139
// if sklady and GetDistUnits ( un , NearestUnitToUnit2 ( sklady , un ) ) < dist_max then
5859: LD_VAR 0 10
5863: PUSH
5864: LD_VAR 0 6
5868: PPUSH
5869: LD_VAR 0 10
5873: PPUSH
5874: LD_VAR 0 6
5878: PPUSH
5879: CALL 4488 0 2
5883: PPUSH
5884: CALL_OW 296
5888: PUSH
5889: LD_EXP 32
5893: LESS
5894: AND
5895: IFFALSE 5921
// ComEnterUnit ( un , NearestUnitToUnit2 ( sklady , un ) ) ;
5897: LD_VAR 0 6
5901: PPUSH
5902: LD_VAR 0 10
5906: PPUSH
5907: LD_VAR 0 6
5911: PPUSH
5912: CALL 4488 0 2
5916: PPUSH
5917: CALL_OW 120
// end ; end ;
5921: GO 5401
5923: POP
5924: POP
// jeraby = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , ru_crane ] ] ] ) ;
5925: LD_ADDR_VAR 0 17
5929: PUSH
5930: LD_INT 95
5932: PUSH
5933: LD_VAR 0 2
5937: PUSH
5938: EMPTY
5939: LIST
5940: LIST
5941: PUSH
5942: LD_INT 50
5944: PUSH
5945: EMPTY
5946: LIST
5947: PUSH
5948: LD_INT 22
5950: PUSH
5951: LD_VAR 0 5
5955: PUSH
5956: EMPTY
5957: LIST
5958: LIST
5959: PUSH
5960: LD_INT 2
5962: PUSH
5963: LD_INT 34
5965: PUSH
5966: LD_INT 13
5968: PUSH
5969: EMPTY
5970: LIST
5971: LIST
5972: PUSH
5973: LD_INT 34
5975: PUSH
5976: LD_INT 52
5978: PUSH
5979: EMPTY
5980: LIST
5981: LIST
5982: PUSH
5983: EMPTY
5984: LIST
5985: LIST
5986: LIST
5987: PUSH
5988: EMPTY
5989: LIST
5990: LIST
5991: LIST
5992: LIST
5993: PPUSH
5994: CALL_OW 69
5998: ST_TO_ADDR
// if jeraby then
5999: LD_VAR 0 17
6003: IFFALSE 6330
// for un in jeraby do
6005: LD_ADDR_VAR 0 6
6009: PUSH
6010: LD_VAR 0 17
6014: PUSH
6015: FOR_IN
6016: IFFALSE 6328
// begin if GetLives ( un ) < hranice_oprava_utek then
6018: LD_VAR 0 6
6022: PPUSH
6023: CALL_OW 256
6027: PUSH
6028: LD_EXP 35
6032: LESS
6033: IFFALSE 6046
// UtecDoNejblizsiRepairOblasti ( un ) else
6035: LD_VAR 0 6
6039: PPUSH
6040: CALL 10683 0 1
6044: GO 6326
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
6046: LD_VAR 0 6
6050: PPUSH
6051: CALL_OW 256
6055: PUSH
6056: LD_INT 1000
6058: LESS
6059: PUSH
6060: LD_VAR 0 6
6064: PPUSH
6065: LD_VAR 0 6
6069: PPUSH
6070: CALL 10142 0 1
6074: PPUSH
6075: CALL 4574 0 2
6079: AND
6080: IFFALSE 6084
// else
6082: GO 6326
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6084: LD_VAR 0 6
6088: PPUSH
6089: LD_VAR 0 6
6093: PPUSH
6094: CALL 9999 0 1
6098: PPUSH
6099: CALL_OW 299
6103: PUSH
6104: LD_INT 4
6106: GREATER
6107: IFFALSE 6130
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
6109: LD_VAR 0 6
6113: PPUSH
6114: LD_VAR 0 6
6118: PPUSH
6119: CALL 9999 0 1
6123: PPUSH
6124: CALL_OW 113
6128: GO 6326
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
6130: LD_VAR 0 8
6134: PUSH
6135: LD_VAR 0 6
6139: PPUSH
6140: LD_VAR 0 8
6144: PPUSH
6145: LD_VAR 0 6
6149: PPUSH
6150: CALL 4488 0 2
6154: PPUSH
6155: CALL_OW 296
6159: PUSH
6160: LD_EXP 32
6164: LESS
6165: AND
6166: IFFALSE 6209
// begin VyjdiVen ( un ) ;
6168: LD_VAR 0 6
6172: PPUSH
6173: CALL 4404 0 1
// if b_red then
6177: LD_VAR 0 8
6181: IFFALSE 6207
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
6183: LD_VAR 0 6
6187: PPUSH
6188: LD_VAR 0 8
6192: PPUSH
6193: LD_VAR 0 6
6197: PPUSH
6198: CALL 4488 0 2
6202: PPUSH
6203: CALL_OW 130
// end else
6207: GO 6326
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
6209: LD_VAR 0 7
6213: PUSH
6214: LD_VAR 0 6
6218: PPUSH
6219: LD_VAR 0 7
6223: PPUSH
6224: LD_VAR 0 6
6228: PPUSH
6229: CALL 4488 0 2
6233: PPUSH
6234: CALL_OW 296
6238: PUSH
6239: LD_EXP 32
6243: LESS
6244: AND
6245: IFFALSE 6288
// begin VyjdiVen ( un ) ;
6247: LD_VAR 0 6
6251: PPUSH
6252: CALL 4404 0 1
// if b then
6256: LD_VAR 0 7
6260: IFFALSE 6286
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
6262: LD_VAR 0 6
6266: PPUSH
6267: LD_VAR 0 7
6271: PPUSH
6272: LD_VAR 0 6
6276: PPUSH
6277: CALL 4488 0 2
6281: PPUSH
6282: CALL_OW 130
// end else
6286: GO 6326
// if not GetLives ( un ) > hranice_budova_repair then
6288: LD_VAR 0 6
6292: PPUSH
6293: CALL_OW 256
6297: PUSH
6298: LD_EXP 34
6302: GREATER
6303: NOT
6304: IFFALSE 6317
// UtecDoNejblizsiRepairOblasti ( un ) else
6306: LD_VAR 0 6
6310: PPUSH
6311: CALL 10683 0 1
6315: GO 6326
// UtecDoNejblizsiCarParkOblasti ( un ) ;
6317: LD_VAR 0 6
6321: PPUSH
6322: CALL 10631 0 1
// end ;
6326: GO 6015
6328: POP
6329: 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 ;
6330: LD_ADDR_VAR 0 12
6334: PUSH
6335: LD_INT 95
6337: PUSH
6338: LD_VAR 0 2
6342: PUSH
6343: EMPTY
6344: LIST
6345: LIST
6346: PUSH
6347: LD_INT 50
6349: PUSH
6350: EMPTY
6351: LIST
6352: PUSH
6353: LD_INT 22
6355: PUSH
6356: LD_VAR 0 5
6360: PUSH
6361: EMPTY
6362: LIST
6363: LIST
6364: PUSH
6365: LD_INT 56
6367: PUSH
6368: EMPTY
6369: LIST
6370: PUSH
6371: LD_INT 2
6373: PUSH
6374: LD_INT 25
6376: PUSH
6377: LD_INT 1
6379: PUSH
6380: EMPTY
6381: LIST
6382: LIST
6383: PUSH
6384: LD_INT 25
6386: PUSH
6387: LD_INT 5
6389: PUSH
6390: EMPTY
6391: LIST
6392: LIST
6393: PUSH
6394: LD_INT 25
6396: PUSH
6397: LD_INT 9
6399: PUSH
6400: EMPTY
6401: LIST
6402: LIST
6403: PUSH
6404: LD_INT 25
6406: PUSH
6407: LD_INT 8
6409: PUSH
6410: EMPTY
6411: LIST
6412: LIST
6413: PUSH
6414: EMPTY
6415: LIST
6416: LIST
6417: LIST
6418: LIST
6419: LIST
6420: PUSH
6421: EMPTY
6422: LIST
6423: LIST
6424: LIST
6425: LIST
6426: LIST
6427: PPUSH
6428: CALL_OW 69
6432: PUSH
6433: LD_EXP 74
6437: DIFF
6438: PUSH
6439: LD_EXP 75
6443: DIFF
6444: PUSH
6445: LD_EXP 76
6449: DIFF
6450: 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 ] ] ] ) ;
6451: LD_ADDR_VAR 0 15
6455: PUSH
6456: LD_INT 95
6458: PUSH
6459: LD_VAR 0 2
6463: PUSH
6464: EMPTY
6465: LIST
6466: LIST
6467: PUSH
6468: LD_INT 52
6470: PUSH
6471: EMPTY
6472: LIST
6473: PUSH
6474: LD_INT 3
6476: PUSH
6477: LD_INT 57
6479: PUSH
6480: EMPTY
6481: LIST
6482: PUSH
6483: EMPTY
6484: LIST
6485: LIST
6486: PUSH
6487: LD_INT 50
6489: PUSH
6490: EMPTY
6491: LIST
6492: PUSH
6493: LD_INT 22
6495: PUSH
6496: LD_VAR 0 5
6500: PUSH
6501: EMPTY
6502: LIST
6503: LIST
6504: PUSH
6505: LD_INT 58
6507: PUSH
6508: EMPTY
6509: LIST
6510: PUSH
6511: LD_INT 2
6513: PUSH
6514: LD_INT 30
6516: PUSH
6517: LD_INT 31
6519: PUSH
6520: EMPTY
6521: LIST
6522: LIST
6523: PUSH
6524: LD_INT 30
6526: PUSH
6527: LD_INT 32
6529: PUSH
6530: EMPTY
6531: LIST
6532: LIST
6533: PUSH
6534: EMPTY
6535: LIST
6536: LIST
6537: LIST
6538: PUSH
6539: EMPTY
6540: LIST
6541: LIST
6542: LIST
6543: LIST
6544: LIST
6545: LIST
6546: LIST
6547: PPUSH
6548: CALL_OW 69
6552: 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 ] ] ] ) ;
6553: LD_ADDR_VAR 0 16
6557: PUSH
6558: LD_INT 95
6560: PUSH
6561: LD_VAR 0 2
6565: PUSH
6566: EMPTY
6567: LIST
6568: LIST
6569: PUSH
6570: LD_INT 52
6572: PUSH
6573: EMPTY
6574: LIST
6575: PUSH
6576: LD_INT 3
6578: PUSH
6579: LD_INT 57
6581: PUSH
6582: EMPTY
6583: LIST
6584: PUSH
6585: EMPTY
6586: LIST
6587: LIST
6588: PUSH
6589: LD_INT 50
6591: PUSH
6592: EMPTY
6593: LIST
6594: PUSH
6595: LD_INT 22
6597: PUSH
6598: LD_VAR 0 5
6602: PUSH
6603: EMPTY
6604: LIST
6605: LIST
6606: PUSH
6607: LD_INT 2
6609: PUSH
6610: LD_INT 30
6612: PUSH
6613: LD_INT 4
6615: PUSH
6616: EMPTY
6617: LIST
6618: LIST
6619: PUSH
6620: LD_INT 30
6622: PUSH
6623: LD_INT 5
6625: PUSH
6626: EMPTY
6627: LIST
6628: LIST
6629: PUSH
6630: EMPTY
6631: LIST
6632: LIST
6633: LIST
6634: PUSH
6635: EMPTY
6636: LIST
6637: LIST
6638: LIST
6639: LIST
6640: LIST
6641: LIST
6642: PPUSH
6643: CALL_OW 69
6647: ST_TO_ADDR
// for i in volne_kasy do
6648: LD_ADDR_VAR 0 4
6652: PUSH
6653: LD_VAR 0 16
6657: PUSH
6658: FOR_IN
6659: IFFALSE 6694
// if UnitsInside ( i ) > 5 then
6661: LD_VAR 0 4
6665: PPUSH
6666: CALL_OW 313
6670: PUSH
6671: LD_INT 5
6673: GREATER
6674: IFFALSE 6692
// volne_kasy = volne_kasy diff i ;
6676: LD_ADDR_VAR 0 16
6680: PUSH
6681: LD_VAR 0 16
6685: PUSH
6686: LD_VAR 0 4
6690: DIFF
6691: ST_TO_ADDR
6692: GO 6658
6694: POP
6695: POP
// if vojaci then
6696: LD_VAR 0 12
6700: IFFALSE 7088
// for un in vojaci do
6702: LD_ADDR_VAR 0 6
6706: PUSH
6707: LD_VAR 0 12
6711: PUSH
6712: FOR_IN
6713: IFFALSE 7086
// begin if GetLives ( un ) < hranice_leceni_utek then
6715: LD_VAR 0 6
6719: PPUSH
6720: CALL_OW 256
6724: PUSH
6725: LD_EXP 33
6729: LESS
6730: IFFALSE 6743
// UtecDoNejblizsiHealOblasti ( un ) else
6732: LD_VAR 0 6
6736: PPUSH
6737: CALL 10573 0 1
6741: GO 7084
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
6743: LD_VAR 0 6
6747: PPUSH
6748: CALL_OW 256
6752: PUSH
6753: LD_INT 1000
6755: LESS
6756: PUSH
6757: LD_VAR 0 6
6761: PPUSH
6762: LD_VAR 0 6
6766: PPUSH
6767: CALL 9713 0 1
6771: PPUSH
6772: CALL 4574 0 2
6776: AND
6777: IFFALSE 6781
// else
6779: GO 7084
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6781: LD_VAR 0 6
6785: PPUSH
6786: LD_VAR 0 6
6790: PPUSH
6791: CALL 9999 0 1
6795: PPUSH
6796: CALL_OW 299
6800: PUSH
6801: LD_INT 4
6803: GREATER
6804: IFFALSE 6827
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
6806: LD_VAR 0 6
6810: PPUSH
6811: LD_VAR 0 6
6815: PPUSH
6816: CALL 9856 0 1
6820: PPUSH
6821: CALL_OW 113
6825: GO 7084
// if volne_bunkry then
6827: LD_VAR 0 15
6831: IFFALSE 6949
// begin for bunkr in volne_bunkry do
6833: LD_ADDR_VAR 0 13
6837: PUSH
6838: LD_VAR 0 15
6842: PUSH
6843: FOR_IN
6844: IFFALSE 6945
// begin if PocetJednotekCoJdouDoBudov ( vojaci ) = volne_bunkry + 0 then
6846: LD_VAR 0 12
6850: PPUSH
6851: CALL 10732 0 1
6855: PUSH
6856: LD_VAR 0 15
6860: PUSH
6861: LD_INT 0
6863: PLUS
6864: EQUAL
6865: IFFALSE 6869
// else
6867: GO 6943
// if GetDistUnits ( un , bunkr ) < dist_max and un = NejblizsiJednotkaCoNemaTask ( vojaci , bunkr ) then
6869: LD_VAR 0 6
6873: PPUSH
6874: LD_VAR 0 13
6878: PPUSH
6879: CALL_OW 296
6883: PUSH
6884: LD_EXP 32
6888: LESS
6889: PUSH
6890: LD_VAR 0 6
6894: PUSH
6895: LD_VAR 0 12
6899: PPUSH
6900: LD_VAR 0 13
6904: PPUSH
6905: CALL 10802 0 2
6909: EQUAL
6910: AND
6911: IFFALSE 6943
// begin ComEnterUnit ( un , bunkr ) ;
6913: LD_VAR 0 6
6917: PPUSH
6918: LD_VAR 0 13
6922: PPUSH
6923: CALL_OW 120
// volne_bunkry = volne_bunkry diff bunkr ;
6927: LD_ADDR_VAR 0 15
6931: PUSH
6932: LD_VAR 0 15
6936: PUSH
6937: LD_VAR 0 13
6941: DIFF
6942: ST_TO_ADDR
// end ; end ;
6943: GO 6843
6945: POP
6946: POP
// end else
6947: GO 7084
// if volne_kasy then
6949: LD_VAR 0 16
6953: IFFALSE 7047
// begin for kasa in volne_kasy do
6955: LD_ADDR_VAR 0 14
6959: PUSH
6960: LD_VAR 0 16
6964: PUSH
6965: FOR_IN
6966: IFFALSE 7043
// begin if UnitsInside ( kasa ) < 6 and un = NejblizsiJednotkaCoNemaTask ( vojaci , kasa ) and GetDistUnits ( un , kasa ) < dist_max then
6968: LD_VAR 0 14
6972: PPUSH
6973: CALL_OW 313
6977: PUSH
6978: LD_INT 6
6980: LESS
6981: PUSH
6982: LD_VAR 0 6
6986: PUSH
6987: LD_VAR 0 12
6991: PPUSH
6992: LD_VAR 0 14
6996: PPUSH
6997: CALL 10802 0 2
7001: EQUAL
7002: AND
7003: PUSH
7004: LD_VAR 0 6
7008: PPUSH
7009: LD_VAR 0 14
7013: PPUSH
7014: CALL_OW 296
7018: PUSH
7019: LD_EXP 32
7023: LESS
7024: AND
7025: IFFALSE 7041
// ComEnterUnit ( un , kasa ) ;
7027: LD_VAR 0 6
7031: PPUSH
7032: LD_VAR 0 14
7036: PPUSH
7037: CALL_OW 120
// end ;
7041: GO 6965
7043: POP
7044: POP
// end else
7045: GO 7084
// if not GetLives ( un ) = 1000 and not IsInUnit ( un ) then
7047: LD_VAR 0 6
7051: PPUSH
7052: CALL_OW 256
7056: PUSH
7057: LD_INT 1000
7059: EQUAL
7060: NOT
7061: PUSH
7062: LD_VAR 0 6
7066: PPUSH
7067: CALL_OW 310
7071: NOT
7072: AND
7073: IFFALSE 7084
// UtecDoNejblizsiHealOblasti ( un ) end ;
7075: LD_VAR 0 6
7079: PPUSH
7080: CALL 10573 0 1
7084: GO 6712
7086: POP
7087: POP
// vehikly = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ;
7088: LD_ADDR_VAR 0 18
7092: PUSH
7093: LD_INT 95
7095: PUSH
7096: LD_VAR 0 2
7100: PUSH
7101: EMPTY
7102: LIST
7103: LIST
7104: PUSH
7105: LD_INT 50
7107: PUSH
7108: EMPTY
7109: LIST
7110: PUSH
7111: LD_INT 22
7113: PUSH
7114: LD_VAR 0 5
7118: PUSH
7119: EMPTY
7120: LIST
7121: LIST
7122: PUSH
7123: LD_INT 21
7125: PUSH
7126: LD_INT 2
7128: PUSH
7129: EMPTY
7130: LIST
7131: LIST
7132: PUSH
7133: EMPTY
7134: LIST
7135: LIST
7136: LIST
7137: LIST
7138: PPUSH
7139: CALL_OW 69
7143: 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 ;
7144: LD_ADDR_VAR 0 18
7148: PUSH
7149: LD_VAR 0 18
7153: PUSH
7154: LD_INT 21
7156: PUSH
7157: LD_INT 2
7159: PUSH
7160: EMPTY
7161: LIST
7162: LIST
7163: PUSH
7164: LD_INT 34
7166: PUSH
7167: LD_INT 12
7169: PUSH
7170: EMPTY
7171: LIST
7172: LIST
7173: PUSH
7174: EMPTY
7175: LIST
7176: LIST
7177: PPUSH
7178: CALL_OW 69
7182: DIFF
7183: PUSH
7184: LD_EXP 20
7188: DIFF
7189: PUSH
7190: LD_EXP 21
7194: DIFF
7195: PUSH
7196: LD_EXP 22
7200: DIFF
7201: ST_TO_ADDR
// if vehikly then
7202: LD_VAR 0 18
7206: IFFALSE 7297
// for un in vehikly do
7208: LD_ADDR_VAR 0 6
7212: PUSH
7213: LD_VAR 0 18
7217: PUSH
7218: FOR_IN
7219: IFFALSE 7295
// begin if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7221: LD_VAR 0 6
7225: PPUSH
7226: LD_VAR 0 6
7230: PPUSH
7231: CALL 9999 0 1
7235: PPUSH
7236: CALL_OW 299
7240: PUSH
7241: LD_INT 4
7243: GREATER
7244: IFFALSE 7267
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
7246: LD_VAR 0 6
7250: PPUSH
7251: LD_VAR 0 6
7255: PPUSH
7256: CALL 9999 0 1
7260: PPUSH
7261: CALL_OW 113
7265: GO 7293
// if GetLives ( un ) < hranice_oprava_utek then
7267: LD_VAR 0 6
7271: PPUSH
7272: CALL_OW 256
7276: PUSH
7277: LD_EXP 35
7281: LESS
7282: IFFALSE 7293
// UtecDoNejblizsiRepairOblasti ( un ) end ;
7284: LD_VAR 0 6
7288: PPUSH
7289: CALL 10683 0 1
7293: GO 7218
7295: POP
7296: POP
// end ; end ;
7297: LD_VAR 0 3
7301: 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
7302: LD_INT 0
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
7327: PPUSH
7328: PPUSH
7329: PPUSH
// DoBunkru ( strana , area ) ;
7330: LD_VAR 0 1
7334: PPUSH
7335: LD_VAR 0 2
7339: PPUSH
7340: CALL 9278 0 2
// side = strana ;
7344: LD_ADDR_VAR 0 5
7348: PUSH
7349: LD_VAR 0 1
7353: ST_TO_ADDR
// begin doktori = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_scientistic ] ] ) ;
7354: LD_ADDR_VAR 0 9
7358: PUSH
7359: LD_INT 95
7361: PUSH
7362: LD_VAR 0 2
7366: PUSH
7367: EMPTY
7368: LIST
7369: LIST
7370: PUSH
7371: LD_INT 50
7373: PUSH
7374: EMPTY
7375: LIST
7376: PUSH
7377: LD_INT 22
7379: PUSH
7380: LD_VAR 0 5
7384: PUSH
7385: EMPTY
7386: LIST
7387: LIST
7388: PUSH
7389: LD_INT 25
7391: PUSH
7392: LD_INT 4
7394: PUSH
7395: EMPTY
7396: LIST
7397: LIST
7398: PUSH
7399: EMPTY
7400: LIST
7401: LIST
7402: LIST
7403: LIST
7404: PPUSH
7405: CALL_OW 69
7409: ST_TO_ADDR
// lidi = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_outside ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
7410: LD_ADDR_VAR 0 11
7414: PUSH
7415: LD_INT 95
7417: PUSH
7418: LD_VAR 0 2
7422: PUSH
7423: EMPTY
7424: LIST
7425: LIST
7426: PUSH
7427: LD_INT 52
7429: PUSH
7430: EMPTY
7431: LIST
7432: PUSH
7433: LD_INT 22
7435: PUSH
7436: LD_VAR 0 5
7440: PUSH
7441: EMPTY
7442: LIST
7443: LIST
7444: PUSH
7445: LD_INT 21
7447: PUSH
7448: LD_INT 1
7450: PUSH
7451: EMPTY
7452: LIST
7453: LIST
7454: PUSH
7455: LD_INT 56
7457: PUSH
7458: EMPTY
7459: LIST
7460: PUSH
7461: LD_INT 3
7463: PUSH
7464: LD_INT 24
7466: PUSH
7467: LD_INT 1000
7469: PUSH
7470: EMPTY
7471: LIST
7472: LIST
7473: PUSH
7474: EMPTY
7475: LIST
7476: LIST
7477: PUSH
7478: EMPTY
7479: LIST
7480: LIST
7481: LIST
7482: LIST
7483: LIST
7484: LIST
7485: PPUSH
7486: CALL_OW 69
7490: ST_TO_ADDR
// lidi_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
7491: LD_ADDR_VAR 0 12
7495: PUSH
7496: LD_INT 95
7498: PUSH
7499: LD_VAR 0 2
7503: PUSH
7504: EMPTY
7505: LIST
7506: LIST
7507: PUSH
7508: LD_INT 52
7510: PUSH
7511: EMPTY
7512: LIST
7513: PUSH
7514: LD_INT 22
7516: PUSH
7517: LD_VAR 0 5
7521: PUSH
7522: EMPTY
7523: LIST
7524: LIST
7525: PUSH
7526: LD_INT 21
7528: PUSH
7529: LD_INT 1
7531: PUSH
7532: EMPTY
7533: LIST
7534: LIST
7535: PUSH
7536: LD_INT 3
7538: PUSH
7539: LD_INT 24
7541: PUSH
7542: LD_INT 250
7544: PUSH
7545: EMPTY
7546: LIST
7547: LIST
7548: PUSH
7549: EMPTY
7550: LIST
7551: LIST
7552: PUSH
7553: EMPTY
7554: LIST
7555: LIST
7556: LIST
7557: LIST
7558: LIST
7559: PPUSH
7560: CALL_OW 69
7564: 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 ] ] ] ) ;
7565: LD_ADDR_VAR 0 7
7569: PUSH
7570: LD_INT 95
7572: PUSH
7573: LD_VAR 0 2
7577: PUSH
7578: EMPTY
7579: LIST
7580: LIST
7581: PUSH
7582: LD_INT 50
7584: PUSH
7585: EMPTY
7586: LIST
7587: PUSH
7588: LD_INT 22
7590: PUSH
7591: LD_VAR 0 5
7595: PUSH
7596: EMPTY
7597: LIST
7598: LIST
7599: PUSH
7600: LD_INT 2
7602: PUSH
7603: LD_INT 30
7605: PUSH
7606: LD_INT 6
7608: PUSH
7609: EMPTY
7610: LIST
7611: LIST
7612: PUSH
7613: LD_INT 30
7615: PUSH
7616: LD_INT 7
7618: PUSH
7619: EMPTY
7620: LIST
7621: LIST
7622: PUSH
7623: LD_INT 30
7625: PUSH
7626: LD_INT 8
7628: PUSH
7629: EMPTY
7630: LIST
7631: LIST
7632: PUSH
7633: EMPTY
7634: LIST
7635: LIST
7636: LIST
7637: LIST
7638: PUSH
7639: EMPTY
7640: LIST
7641: LIST
7642: LIST
7643: LIST
7644: PPUSH
7645: CALL_OW 69
7649: ST_TO_ADDR
// nepritel_red_vehs = FilterAllUnits ( [ [ f_not , [ f_lives , 250 ] ] , [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ;
7650: LD_ADDR_VAR 0 24
7654: PUSH
7655: LD_INT 3
7657: PUSH
7658: LD_INT 24
7660: PUSH
7661: LD_INT 250
7663: PUSH
7664: EMPTY
7665: LIST
7666: LIST
7667: PUSH
7668: EMPTY
7669: LIST
7670: LIST
7671: PUSH
7672: LD_INT 22
7674: PUSH
7675: LD_EXP 18
7679: PUSH
7680: EMPTY
7681: LIST
7682: LIST
7683: PUSH
7684: LD_INT 21
7686: PUSH
7687: LD_INT 2
7689: PUSH
7690: EMPTY
7691: LIST
7692: LIST
7693: PUSH
7694: EMPTY
7695: LIST
7696: LIST
7697: LIST
7698: PPUSH
7699: CALL_OW 69
7703: ST_TO_ADDR
// for i in labaky do
7704: LD_ADDR_VAR 0 4
7708: PUSH
7709: LD_VAR 0 7
7713: PUSH
7714: FOR_IN
7715: IFFALSE 7750
// if UnitsInside ( i ) > 5 then
7717: LD_VAR 0 4
7721: PPUSH
7722: CALL_OW 313
7726: PUSH
7727: LD_INT 5
7729: GREATER
7730: IFFALSE 7748
// labaky = labaky diff i ;
7732: LD_ADDR_VAR 0 7
7736: PUSH
7737: LD_VAR 0 7
7741: PUSH
7742: LD_VAR 0 4
7746: DIFF
7747: ST_TO_ADDR
7748: GO 7714
7750: POP
7751: POP
// if doktori then
7752: LD_VAR 0 9
7756: IFFALSE 8242
// for un in doktori do
7758: LD_ADDR_VAR 0 6
7762: PUSH
7763: LD_VAR 0 9
7767: PUSH
7768: FOR_IN
7769: IFFALSE 8240
// begin if GetLives ( un ) < hranice_leceni_utek then
7771: LD_VAR 0 6
7775: PPUSH
7776: CALL_OW 256
7780: PUSH
7781: LD_EXP 33
7785: LESS
7786: IFFALSE 7799
// UtecDoNejblizsiHealOblasti ( un ) else
7788: LD_VAR 0 6
7792: PPUSH
7793: CALL 10573 0 1
7797: GO 8238
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7799: LD_VAR 0 6
7803: PPUSH
7804: LD_VAR 0 6
7808: PPUSH
7809: CALL 9999 0 1
7813: PPUSH
7814: CALL_OW 299
7818: PUSH
7819: LD_INT 4
7821: GREATER
7822: IFFALSE 7845
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
7824: LD_VAR 0 6
7828: PPUSH
7829: LD_VAR 0 6
7833: PPUSH
7834: CALL 9856 0 1
7838: PPUSH
7839: CALL_OW 113
7843: GO 8238
// if lidi_red and IsInArea2 ( NearestUnitToUnit2 ( lidi_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( lidi_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi_red , un ) ) < dist_max then
7845: LD_VAR 0 12
7849: PUSH
7850: LD_VAR 0 12
7854: PPUSH
7855: LD_VAR 0 6
7859: PPUSH
7860: CALL 4488 0 2
7864: PPUSH
7865: LD_VAR 0 12
7869: PPUSH
7870: LD_VAR 0 6
7874: PPUSH
7875: CALL 4488 0 2
7879: PPUSH
7880: CALL 9999 0 1
7884: PPUSH
7885: CALL 4574 0 2
7889: AND
7890: PUSH
7891: LD_VAR 0 6
7895: PPUSH
7896: LD_VAR 0 12
7900: PPUSH
7901: LD_VAR 0 6
7905: PPUSH
7906: CALL 4488 0 2
7910: PPUSH
7911: CALL_OW 296
7915: PUSH
7916: LD_EXP 32
7920: LESS
7921: AND
7922: IFFALSE 7965
// begin VyjdiVen ( un ) ;
7924: LD_VAR 0 6
7928: PPUSH
7929: CALL 4404 0 1
// if lidi_red then
7933: LD_VAR 0 12
7937: IFFALSE 7963
// ComHeal ( un , NearestUnitToUnit2 ( lidi_red , un ) ) ;
7939: LD_VAR 0 6
7943: PPUSH
7944: LD_VAR 0 12
7948: PPUSH
7949: LD_VAR 0 6
7953: PPUSH
7954: CALL 4488 0 2
7958: PPUSH
7959: CALL_OW 128
// end else
7963: GO 8238
// if lidi and IsInArea2 ( NearestUnitToUnit2 ( lidi , un ) , NajdiNejblizsiHealAreaExpanded ( NearestUnitToUnit2 ( lidi , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi , un ) ) < dist_max then
7965: LD_VAR 0 11
7969: PUSH
7970: LD_VAR 0 11
7974: PPUSH
7975: LD_VAR 0 6
7979: PPUSH
7980: CALL 4488 0 2
7984: PPUSH
7985: LD_VAR 0 11
7989: PPUSH
7990: LD_VAR 0 6
7994: PPUSH
7995: CALL 4488 0 2
7999: PPUSH
8000: CALL 9856 0 1
8004: PPUSH
8005: CALL 4574 0 2
8009: AND
8010: PUSH
8011: LD_VAR 0 6
8015: PPUSH
8016: LD_VAR 0 11
8020: PPUSH
8021: LD_VAR 0 6
8025: PPUSH
8026: CALL 4488 0 2
8030: PPUSH
8031: CALL_OW 296
8035: PUSH
8036: LD_EXP 32
8040: LESS
8041: AND
8042: IFFALSE 8085
// begin VyjdiVen ( un ) ;
8044: LD_VAR 0 6
8048: PPUSH
8049: CALL 4404 0 1
// if lidi then
8053: LD_VAR 0 11
8057: IFFALSE 8083
// ComHeal ( un , NearestUnitToUnit2 ( lidi , un ) ) ;
8059: LD_VAR 0 6
8063: PPUSH
8064: LD_VAR 0 11
8068: PPUSH
8069: LD_VAR 0 6
8073: PPUSH
8074: CALL 4488 0 2
8078: PPUSH
8079: CALL_OW 128
// end else
8083: GO 8238
// if not GetLives ( un ) = 1000 then
8085: LD_VAR 0 6
8089: PPUSH
8090: CALL_OW 256
8094: PUSH
8095: LD_INT 1000
8097: EQUAL
8098: NOT
8099: IFFALSE 8112
// UtecDoNejblizsiHealOblasti ( un ) else
8101: LD_VAR 0 6
8105: PPUSH
8106: CALL 10573 0 1
8110: GO 8238
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
8112: LD_VAR 0 6
8116: PPUSH
8117: CALL_OW 256
8121: PUSH
8122: LD_INT 1000
8124: EQUAL
8125: PUSH
8126: LD_VAR 0 6
8130: PPUSH
8131: CALL_OW 310
8135: PUSH
8136: LD_INT 0
8138: EQUAL
8139: AND
8140: IFFALSE 8238
// begin ComFree ( un ) ;
8142: LD_VAR 0 6
8146: PPUSH
8147: CALL_OW 139
// if labaky and GetDistUnits ( un , NearestUnitToUnit2 ( labaky , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( labaky , un ) ) < 6 then
8151: LD_VAR 0 7
8155: PUSH
8156: LD_VAR 0 6
8160: PPUSH
8161: LD_VAR 0 7
8165: PPUSH
8166: LD_VAR 0 6
8170: PPUSH
8171: CALL 4488 0 2
8175: PPUSH
8176: CALL_OW 296
8180: PUSH
8181: LD_EXP 32
8185: LESS
8186: AND
8187: PUSH
8188: LD_VAR 0 7
8192: PPUSH
8193: LD_VAR 0 6
8197: PPUSH
8198: CALL 4488 0 2
8202: PPUSH
8203: CALL_OW 313
8207: PUSH
8208: LD_INT 6
8210: LESS
8211: AND
8212: IFFALSE 8238
// ComEnterUnit ( un , NearestUnitToUnit2 ( labaky , un ) ) ;
8214: LD_VAR 0 6
8218: PPUSH
8219: LD_VAR 0 7
8223: PPUSH
8224: LD_VAR 0 6
8228: PPUSH
8229: CALL 4488 0 2
8233: PPUSH
8234: CALL_OW 120
// end ; end ;
8238: GO 7768
8240: POP
8241: POP
// mechanici = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_mechanic ] ] ) ;
8242: LD_ADDR_VAR 0 10
8246: PUSH
8247: LD_INT 95
8249: PUSH
8250: LD_VAR 0 2
8254: PUSH
8255: EMPTY
8256: LIST
8257: LIST
8258: PUSH
8259: LD_INT 50
8261: PUSH
8262: EMPTY
8263: LIST
8264: PUSH
8265: LD_INT 22
8267: PUSH
8268: LD_VAR 0 5
8272: PUSH
8273: EMPTY
8274: LIST
8275: LIST
8276: PUSH
8277: LD_INT 25
8279: PUSH
8280: LD_INT 3
8282: PUSH
8283: EMPTY
8284: LIST
8285: LIST
8286: PUSH
8287: EMPTY
8288: LIST
8289: LIST
8290: LIST
8291: LIST
8292: PPUSH
8293: CALL_OW 69
8297: ST_TO_ADDR
// auta = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
8298: LD_ADDR_VAR 0 13
8302: PUSH
8303: LD_INT 95
8305: PUSH
8306: LD_VAR 0 2
8310: PUSH
8311: EMPTY
8312: LIST
8313: LIST
8314: PUSH
8315: LD_INT 52
8317: PUSH
8318: EMPTY
8319: LIST
8320: PUSH
8321: LD_INT 22
8323: PUSH
8324: LD_VAR 0 5
8328: PUSH
8329: EMPTY
8330: LIST
8331: LIST
8332: PUSH
8333: LD_INT 21
8335: PUSH
8336: LD_INT 2
8338: PUSH
8339: EMPTY
8340: LIST
8341: LIST
8342: PUSH
8343: LD_INT 3
8345: PUSH
8346: LD_INT 24
8348: PUSH
8349: LD_INT 1000
8351: PUSH
8352: EMPTY
8353: LIST
8354: LIST
8355: PUSH
8356: EMPTY
8357: LIST
8358: LIST
8359: PUSH
8360: EMPTY
8361: LIST
8362: LIST
8363: LIST
8364: LIST
8365: LIST
8366: PPUSH
8367: CALL_OW 69
8371: ST_TO_ADDR
// auta_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
8372: LD_ADDR_VAR 0 14
8376: PUSH
8377: LD_INT 95
8379: PUSH
8380: LD_VAR 0 2
8384: PUSH
8385: EMPTY
8386: LIST
8387: LIST
8388: PUSH
8389: LD_INT 52
8391: PUSH
8392: EMPTY
8393: LIST
8394: PUSH
8395: LD_INT 22
8397: PUSH
8398: LD_VAR 0 5
8402: PUSH
8403: EMPTY
8404: LIST
8405: LIST
8406: PUSH
8407: LD_INT 21
8409: PUSH
8410: LD_INT 2
8412: PUSH
8413: EMPTY
8414: LIST
8415: LIST
8416: PUSH
8417: LD_INT 3
8419: PUSH
8420: LD_INT 24
8422: PUSH
8423: LD_INT 250
8425: PUSH
8426: EMPTY
8427: LIST
8428: LIST
8429: PUSH
8430: EMPTY
8431: LIST
8432: LIST
8433: PUSH
8434: EMPTY
8435: LIST
8436: LIST
8437: LIST
8438: LIST
8439: LIST
8440: PPUSH
8441: CALL_OW 69
8445: ST_TO_ADDR
// tovarny = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) ;
8446: LD_ADDR_VAR 0 8
8450: PUSH
8451: LD_INT 95
8453: PUSH
8454: LD_VAR 0 2
8458: PUSH
8459: EMPTY
8460: LIST
8461: LIST
8462: PUSH
8463: LD_INT 50
8465: PUSH
8466: EMPTY
8467: LIST
8468: PUSH
8469: LD_INT 22
8471: PUSH
8472: LD_VAR 0 5
8476: PUSH
8477: EMPTY
8478: LIST
8479: LIST
8480: PUSH
8481: LD_INT 2
8483: PUSH
8484: LD_INT 30
8486: PUSH
8487: LD_INT 2
8489: PUSH
8490: EMPTY
8491: LIST
8492: LIST
8493: PUSH
8494: LD_INT 30
8496: PUSH
8497: LD_INT 3
8499: PUSH
8500: EMPTY
8501: LIST
8502: LIST
8503: PUSH
8504: EMPTY
8505: LIST
8506: LIST
8507: LIST
8508: PUSH
8509: EMPTY
8510: LIST
8511: LIST
8512: LIST
8513: LIST
8514: PPUSH
8515: CALL_OW 69
8519: ST_TO_ADDR
// dalkova_vez = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_btype , b_control_tower ] ] ) ;
8520: LD_ADDR_VAR 0 28
8524: PUSH
8525: LD_INT 95
8527: PUSH
8528: LD_VAR 0 2
8532: PUSH
8533: EMPTY
8534: LIST
8535: LIST
8536: PUSH
8537: LD_INT 50
8539: PUSH
8540: EMPTY
8541: LIST
8542: PUSH
8543: LD_INT 22
8545: PUSH
8546: LD_VAR 0 5
8550: PUSH
8551: EMPTY
8552: LIST
8553: LIST
8554: PUSH
8555: LD_INT 30
8557: PUSH
8558: LD_INT 36
8560: PUSH
8561: EMPTY
8562: LIST
8563: LIST
8564: PUSH
8565: EMPTY
8566: LIST
8567: LIST
8568: LIST
8569: LIST
8570: PPUSH
8571: CALL_OW 69
8575: ST_TO_ADDR
// for i in tovarny do
8576: LD_ADDR_VAR 0 4
8580: PUSH
8581: LD_VAR 0 8
8585: PUSH
8586: FOR_IN
8587: IFFALSE 8622
// if UnitsInside ( i ) > 5 then
8589: LD_VAR 0 4
8593: PPUSH
8594: CALL_OW 313
8598: PUSH
8599: LD_INT 5
8601: GREATER
8602: IFFALSE 8620
// tovarny = tovarny diff i ;
8604: LD_ADDR_VAR 0 8
8608: PUSH
8609: LD_VAR 0 8
8613: PUSH
8614: LD_VAR 0 4
8618: DIFF
8619: ST_TO_ADDR
8620: GO 8586
8622: POP
8623: POP
// if mechanici then
8624: LD_VAR 0 10
8628: IFFALSE 9273
// for un in mechanici do
8630: LD_ADDR_VAR 0 6
8634: PUSH
8635: LD_VAR 0 10
8639: PUSH
8640: FOR_IN
8641: IFFALSE 9271
// begin if not GetBType ( IsInUnit ( un ) ) = b_control_tower then
8643: LD_VAR 0 6
8647: PPUSH
8648: CALL_OW 310
8652: PPUSH
8653: CALL_OW 266
8657: PUSH
8658: LD_INT 36
8660: EQUAL
8661: NOT
8662: IFFALSE 9269
// begin if GetLives ( un ) < hranice_leceni_utek then
8664: LD_VAR 0 6
8668: PPUSH
8669: CALL_OW 256
8673: PUSH
8674: LD_EXP 33
8678: LESS
8679: IFFALSE 8692
// UtecDoNejblizsiHealOblasti ( un ) else
8681: LD_VAR 0 6
8685: PPUSH
8686: CALL 10573 0 1
8690: GO 9269
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
8692: LD_VAR 0 6
8696: PPUSH
8697: CALL_OW 256
8701: PUSH
8702: LD_INT 1000
8704: LESS
8705: PUSH
8706: LD_VAR 0 6
8710: PPUSH
8711: LD_VAR 0 6
8715: PPUSH
8716: CALL 9713 0 1
8720: PPUSH
8721: CALL 4574 0 2
8725: AND
8726: IFFALSE 8730
// else
8728: GO 9269
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
8730: LD_VAR 0 6
8734: PPUSH
8735: LD_VAR 0 6
8739: PPUSH
8740: CALL 9999 0 1
8744: PPUSH
8745: CALL_OW 299
8749: PUSH
8750: LD_INT 4
8752: GREATER
8753: IFFALSE 8776
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
8755: LD_VAR 0 6
8759: PPUSH
8760: LD_VAR 0 6
8764: PPUSH
8765: CALL 9856 0 1
8769: PPUSH
8770: CALL_OW 113
8774: GO 9269
// 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
8776: LD_VAR 0 14
8780: PUSH
8781: LD_VAR 0 6
8785: PPUSH
8786: CALL 10891 0 1
8790: AND
8791: PUSH
8792: LD_VAR 0 14
8796: PPUSH
8797: LD_VAR 0 6
8801: PPUSH
8802: CALL 4488 0 2
8806: PPUSH
8807: LD_VAR 0 14
8811: PPUSH
8812: LD_VAR 0 6
8816: PPUSH
8817: CALL 4488 0 2
8821: PPUSH
8822: CALL 9999 0 1
8826: PPUSH
8827: CALL 4574 0 2
8831: AND
8832: PUSH
8833: LD_VAR 0 6
8837: PPUSH
8838: LD_VAR 0 14
8842: PPUSH
8843: LD_VAR 0 6
8847: PPUSH
8848: CALL 4488 0 2
8852: PPUSH
8853: CALL_OW 296
8857: PUSH
8858: LD_EXP 32
8862: LESS
8863: AND
8864: IFFALSE 8907
// begin VyjdiVen ( un ) ;
8866: LD_VAR 0 6
8870: PPUSH
8871: CALL 4404 0 1
// if auta_red then
8875: LD_VAR 0 14
8879: IFFALSE 8905
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta_red , un ) ) ;
8881: LD_VAR 0 6
8885: PPUSH
8886: LD_VAR 0 14
8890: PPUSH
8891: LD_VAR 0 6
8895: PPUSH
8896: CALL 4488 0 2
8900: PPUSH
8901: CALL_OW 129
// end else
8905: GO 9269
// if auta and IsInArea2 ( NearestUnitToUnit2 ( auta , un ) , NajdiNejblizsiRepairAreaExpanded ( NearestUnitToUnit2 ( auta , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta , un ) ) < dist_max then
8907: LD_VAR 0 13
8911: PUSH
8912: LD_VAR 0 13
8916: PPUSH
8917: LD_VAR 0 6
8921: PPUSH
8922: CALL 4488 0 2
8926: PPUSH
8927: LD_VAR 0 13
8931: PPUSH
8932: LD_VAR 0 6
8936: PPUSH
8937: CALL 4488 0 2
8941: PPUSH
8942: CALL 10285 0 1
8946: PPUSH
8947: CALL 4574 0 2
8951: AND
8952: PUSH
8953: LD_VAR 0 6
8957: PPUSH
8958: LD_VAR 0 13
8962: PPUSH
8963: LD_VAR 0 6
8967: PPUSH
8968: CALL 4488 0 2
8972: PPUSH
8973: CALL_OW 296
8977: PUSH
8978: LD_EXP 32
8982: LESS
8983: AND
8984: IFFALSE 9027
// begin VyjdiVen ( un ) ;
8986: LD_VAR 0 6
8990: PPUSH
8991: CALL 4404 0 1
// if auta then
8995: LD_VAR 0 13
8999: IFFALSE 9025
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta , un ) ) ;
9001: LD_VAR 0 6
9005: PPUSH
9006: LD_VAR 0 13
9010: PPUSH
9011: LD_VAR 0 6
9015: PPUSH
9016: CALL 4488 0 2
9020: PPUSH
9021: CALL_OW 129
// end else
9025: GO 9269
// if not GetLives ( un ) = 1000 then
9027: LD_VAR 0 6
9031: PPUSH
9032: CALL_OW 256
9036: PUSH
9037: LD_INT 1000
9039: EQUAL
9040: NOT
9041: IFFALSE 9054
// UtecDoNejblizsiHealOblasti ( un ) else
9043: LD_VAR 0 6
9047: PPUSH
9048: CALL 10573 0 1
9052: GO 9269
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
9054: LD_VAR 0 6
9058: PPUSH
9059: CALL_OW 256
9063: PUSH
9064: LD_INT 1000
9066: EQUAL
9067: PUSH
9068: LD_VAR 0 6
9072: PPUSH
9073: CALL_OW 310
9077: PUSH
9078: LD_INT 0
9080: EQUAL
9081: AND
9082: IFFALSE 9269
// begin ComFree ( un ) ;
9084: LD_VAR 0 6
9088: PPUSH
9089: CALL_OW 139
// if dalkova_vez and GetDistUnits ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( dalkova_vez , un ) ) < 3 then
9093: LD_VAR 0 28
9097: PUSH
9098: LD_VAR 0 6
9102: PPUSH
9103: LD_VAR 0 28
9107: PPUSH
9108: LD_VAR 0 6
9112: PPUSH
9113: CALL 4488 0 2
9117: PPUSH
9118: CALL_OW 296
9122: PUSH
9123: LD_EXP 32
9127: LESS
9128: AND
9129: PUSH
9130: LD_VAR 0 28
9134: PPUSH
9135: LD_VAR 0 6
9139: PPUSH
9140: CALL 4488 0 2
9144: PPUSH
9145: CALL_OW 313
9149: PUSH
9150: LD_INT 3
9152: LESS
9153: AND
9154: IFFALSE 9182
// ComEnterUnit ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) else
9156: LD_VAR 0 6
9160: PPUSH
9161: LD_VAR 0 28
9165: PPUSH
9166: LD_VAR 0 6
9170: PPUSH
9171: CALL 4488 0 2
9175: PPUSH
9176: CALL_OW 120
9180: GO 9269
// if tovarny and GetDistUnits ( un , NearestUnitToUnit2 ( tovarny , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( tovarny , un ) ) < 6 then
9182: LD_VAR 0 8
9186: PUSH
9187: LD_VAR 0 6
9191: PPUSH
9192: LD_VAR 0 8
9196: PPUSH
9197: LD_VAR 0 6
9201: PPUSH
9202: CALL 4488 0 2
9206: PPUSH
9207: CALL_OW 296
9211: PUSH
9212: LD_EXP 32
9216: LESS
9217: AND
9218: PUSH
9219: LD_VAR 0 8
9223: PPUSH
9224: LD_VAR 0 6
9228: PPUSH
9229: CALL 4488 0 2
9233: PPUSH
9234: CALL_OW 313
9238: PUSH
9239: LD_INT 6
9241: LESS
9242: AND
9243: IFFALSE 9269
// ComEnterUnit ( un , NearestUnitToUnit2 ( tovarny , un ) ) ;
9245: LD_VAR 0 6
9249: PPUSH
9250: LD_VAR 0 8
9254: PPUSH
9255: LD_VAR 0 6
9259: PPUSH
9260: CALL 4488 0 2
9264: PPUSH
9265: CALL_OW 120
// end ; end ; end ;
9269: GO 8640
9271: POP
9272: POP
// end ; end ;
9273: LD_VAR 0 3
9277: RET
// var poslednitick ; function DoBunkru ( side , area ) ; var vojaci , vojaciout , volne_bunkry , kasy , cl ; begin
9278: LD_INT 0
9280: PPUSH
9281: PPUSH
9282: PPUSH
9283: PPUSH
9284: PPUSH
9285: PPUSH
// if not poslednitick then
9286: LD_LOC 1
9290: NOT
9291: IFFALSE 9303
// poslednitick = tick ;
9293: LD_ADDR_LOC 1
9297: PUSH
9298: LD_OWVAR 1
9302: ST_TO_ADDR
// if tick > poslednitick + 100 then
9303: LD_OWVAR 1
9307: PUSH
9308: LD_LOC 1
9312: PUSH
9313: LD_INT 100
9315: PLUS
9316: GREATER
9317: IFFALSE 9708
// 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 ] ] ] ) ;
9319: LD_ADDR_VAR 0 5
9323: PUSH
9324: LD_INT 95
9326: PUSH
9327: LD_VAR 0 2
9331: PUSH
9332: EMPTY
9333: LIST
9334: LIST
9335: PUSH
9336: LD_INT 50
9338: PUSH
9339: EMPTY
9340: LIST
9341: PUSH
9342: LD_INT 22
9344: PUSH
9345: LD_VAR 0 1
9349: PUSH
9350: EMPTY
9351: LIST
9352: LIST
9353: PUSH
9354: LD_INT 56
9356: PUSH
9357: EMPTY
9358: LIST
9359: PUSH
9360: LD_INT 2
9362: PUSH
9363: LD_INT 25
9365: PUSH
9366: LD_INT 1
9368: PUSH
9369: EMPTY
9370: LIST
9371: LIST
9372: PUSH
9373: LD_INT 25
9375: PUSH
9376: LD_INT 5
9378: PUSH
9379: EMPTY
9380: LIST
9381: LIST
9382: PUSH
9383: LD_INT 25
9385: PUSH
9386: LD_INT 9
9388: PUSH
9389: EMPTY
9390: LIST
9391: LIST
9392: PUSH
9393: LD_INT 25
9395: PUSH
9396: LD_INT 8
9398: PUSH
9399: EMPTY
9400: LIST
9401: LIST
9402: PUSH
9403: EMPTY
9404: LIST
9405: LIST
9406: LIST
9407: LIST
9408: LIST
9409: PUSH
9410: EMPTY
9411: LIST
9412: LIST
9413: LIST
9414: LIST
9415: LIST
9416: PPUSH
9417: CALL_OW 69
9421: 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 ] ] ] ) ;
9422: LD_ADDR_VAR 0 6
9426: PUSH
9427: LD_INT 95
9429: PUSH
9430: LD_VAR 0 2
9434: PUSH
9435: EMPTY
9436: LIST
9437: LIST
9438: PUSH
9439: LD_INT 52
9441: PUSH
9442: EMPTY
9443: LIST
9444: PUSH
9445: LD_INT 3
9447: PUSH
9448: LD_INT 57
9450: PUSH
9451: EMPTY
9452: LIST
9453: PUSH
9454: EMPTY
9455: LIST
9456: LIST
9457: PUSH
9458: LD_INT 50
9460: PUSH
9461: EMPTY
9462: LIST
9463: PUSH
9464: LD_INT 22
9466: PUSH
9467: LD_VAR 0 1
9471: PUSH
9472: EMPTY
9473: LIST
9474: LIST
9475: PUSH
9476: LD_INT 58
9478: PUSH
9479: EMPTY
9480: LIST
9481: PUSH
9482: LD_INT 2
9484: PUSH
9485: LD_INT 30
9487: PUSH
9488: LD_INT 31
9490: PUSH
9491: EMPTY
9492: LIST
9493: LIST
9494: PUSH
9495: LD_INT 30
9497: PUSH
9498: LD_INT 32
9500: PUSH
9501: EMPTY
9502: LIST
9503: LIST
9504: PUSH
9505: EMPTY
9506: LIST
9507: LIST
9508: LIST
9509: PUSH
9510: EMPTY
9511: LIST
9512: LIST
9513: LIST
9514: LIST
9515: LIST
9516: LIST
9517: LIST
9518: PPUSH
9519: CALL_OW 69
9523: 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 ] ] ] ) ;
9524: LD_ADDR_VAR 0 7
9528: PUSH
9529: LD_INT 95
9531: PUSH
9532: LD_VAR 0 2
9536: PUSH
9537: EMPTY
9538: LIST
9539: LIST
9540: PUSH
9541: LD_INT 52
9543: PUSH
9544: EMPTY
9545: LIST
9546: PUSH
9547: LD_INT 3
9549: PUSH
9550: LD_INT 57
9552: PUSH
9553: EMPTY
9554: LIST
9555: PUSH
9556: EMPTY
9557: LIST
9558: LIST
9559: PUSH
9560: LD_INT 3
9562: PUSH
9563: LD_INT 58
9565: PUSH
9566: EMPTY
9567: LIST
9568: PUSH
9569: EMPTY
9570: LIST
9571: LIST
9572: PUSH
9573: LD_INT 50
9575: PUSH
9576: EMPTY
9577: LIST
9578: PUSH
9579: LD_INT 22
9581: PUSH
9582: LD_VAR 0 1
9586: PUSH
9587: EMPTY
9588: LIST
9589: LIST
9590: PUSH
9591: LD_INT 2
9593: PUSH
9594: LD_INT 30
9596: PUSH
9597: LD_INT 4
9599: PUSH
9600: EMPTY
9601: LIST
9602: LIST
9603: PUSH
9604: LD_INT 30
9606: PUSH
9607: LD_INT 5
9609: PUSH
9610: EMPTY
9611: LIST
9612: LIST
9613: PUSH
9614: EMPTY
9615: LIST
9616: LIST
9617: LIST
9618: PUSH
9619: EMPTY
9620: LIST
9621: LIST
9622: LIST
9623: LIST
9624: LIST
9625: LIST
9626: LIST
9627: PPUSH
9628: CALL_OW 69
9632: ST_TO_ADDR
// if volne_bunkry and kasy and not vojaciout then
9633: LD_VAR 0 6
9637: PUSH
9638: LD_VAR 0 7
9642: AND
9643: PUSH
9644: LD_VAR 0 5
9648: NOT
9649: AND
9650: IFFALSE 9708
// begin cl = UnitsInside ( kasy [ 1 ] ) [ 1 ] ;
9652: LD_ADDR_VAR 0 8
9656: PUSH
9657: LD_VAR 0 7
9661: PUSH
9662: LD_INT 1
9664: ARRAY
9665: PPUSH
9666: CALL_OW 313
9670: PUSH
9671: LD_INT 1
9673: ARRAY
9674: ST_TO_ADDR
// if cl then
9675: LD_VAR 0 8
9679: IFFALSE 9708
// begin VyjdiVen ( cl ) ;
9681: LD_VAR 0 8
9685: PPUSH
9686: CALL 4404 0 1
// ComEnterUnit ( cl , volne_bunkry [ 1 ] ) ;
9690: LD_VAR 0 8
9694: PPUSH
9695: LD_VAR 0 6
9699: PUSH
9700: LD_INT 1
9702: ARRAY
9703: PPUSH
9704: CALL_OW 120
// end ; end ; end ; end ;
9708: LD_VAR 0 3
9712: RET
// export function NajdiNejblizsiHealArea ( un ) ; begin
9713: LD_INT 0
9715: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 27 , 21 ] :
9716: LD_EXP 36
9720: PPUSH
9721: LD_VAR 0 1
9725: PPUSH
9726: CALL_OW 250
9730: PPUSH
9731: LD_VAR 0 1
9735: PPUSH
9736: CALL_OW 251
9740: PPUSH
9741: CALL_OW 439
9745: PUSH
9746: LD_INT 27
9748: PUSH
9749: LD_INT 21
9751: PUSH
9752: EMPTY
9753: LIST
9754: LIST
9755: DOUBLE
9756: EQUAL
9757: IFTRUE 9761
9759: GO 9772
9761: POP
// result = LevaLeceni ; [ 114 , 17 ] :
9762: LD_ADDR_VAR 0 2
9766: PUSH
9767: LD_INT 19
9769: ST_TO_ADDR
9770: GO 9851
9772: LD_INT 114
9774: PUSH
9775: LD_INT 17
9777: PUSH
9778: EMPTY
9779: LIST
9780: LIST
9781: DOUBLE
9782: EQUAL
9783: IFTRUE 9787
9785: GO 9798
9787: POP
// result = PravaHorniLeceni ; [ 148 , 74 ] :
9788: LD_ADDR_VAR 0 2
9792: PUSH
9793: LD_INT 21
9795: ST_TO_ADDR
9796: GO 9851
9798: LD_INT 148
9800: PUSH
9801: LD_INT 74
9803: PUSH
9804: EMPTY
9805: LIST
9806: LIST
9807: DOUBLE
9808: EQUAL
9809: IFTRUE 9813
9811: GO 9824
9813: POP
// result = PravaLeceni ; [ 86 , 68 ] :
9814: LD_ADDR_VAR 0 2
9818: PUSH
9819: LD_INT 23
9821: ST_TO_ADDR
9822: GO 9851
9824: LD_INT 86
9826: PUSH
9827: LD_INT 68
9829: PUSH
9830: EMPTY
9831: LIST
9832: LIST
9833: DOUBLE
9834: EQUAL
9835: IFTRUE 9839
9837: GO 9850
9839: POP
// result = StredniBaza ; end ;
9840: LD_ADDR_VAR 0 2
9844: PUSH
9845: LD_INT 37
9847: ST_TO_ADDR
9848: GO 9851
9850: POP
// end ;
9851: LD_VAR 0 2
9855: RET
// export function NajdiNejblizsiHealAreaExpanded ( un ) ; begin
9856: LD_INT 0
9858: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 27 , 21 ] :
9859: LD_EXP 36
9863: PPUSH
9864: LD_VAR 0 1
9868: PPUSH
9869: CALL_OW 250
9873: PPUSH
9874: LD_VAR 0 1
9878: PPUSH
9879: CALL_OW 251
9883: PPUSH
9884: CALL_OW 439
9888: PUSH
9889: LD_INT 27
9891: PUSH
9892: LD_INT 21
9894: PUSH
9895: EMPTY
9896: LIST
9897: LIST
9898: DOUBLE
9899: EQUAL
9900: IFTRUE 9904
9902: GO 9915
9904: POP
// result = LevaLeceniExpanded ; [ 114 , 17 ] :
9905: LD_ADDR_VAR 0 2
9909: PUSH
9910: LD_INT 20
9912: ST_TO_ADDR
9913: GO 9994
9915: LD_INT 114
9917: PUSH
9918: LD_INT 17
9920: PUSH
9921: EMPTY
9922: LIST
9923: LIST
9924: DOUBLE
9925: EQUAL
9926: IFTRUE 9930
9928: GO 9941
9930: POP
// result = PravaHorniLeceniExpanded ; [ 148 , 74 ] :
9931: LD_ADDR_VAR 0 2
9935: PUSH
9936: LD_INT 22
9938: ST_TO_ADDR
9939: GO 9994
9941: LD_INT 148
9943: PUSH
9944: LD_INT 74
9946: PUSH
9947: EMPTY
9948: LIST
9949: LIST
9950: DOUBLE
9951: EQUAL
9952: IFTRUE 9956
9954: GO 9967
9956: POP
// result = PravaLeceniExpanded ; [ 86 , 68 ] :
9957: LD_ADDR_VAR 0 2
9961: PUSH
9962: LD_INT 24
9964: ST_TO_ADDR
9965: GO 9994
9967: LD_INT 86
9969: PUSH
9970: LD_INT 68
9972: PUSH
9973: EMPTY
9974: LIST
9975: LIST
9976: DOUBLE
9977: EQUAL
9978: IFTRUE 9982
9980: GO 9993
9982: POP
// result = StredniBaza ; end ;
9983: LD_ADDR_VAR 0 2
9987: PUSH
9988: LD_INT 37
9990: ST_TO_ADDR
9991: GO 9994
9993: POP
// end ;
9994: LD_VAR 0 2
9998: RET
// export function NajdiNejblizsiBaseArea ( un ) ; begin
9999: LD_INT 0
10001: PPUSH
// case FindNearestPoint ( stredy_baz , GetX ( un ) , GetY ( un ) ) of [ 30 , 18 ] :
10002: LD_EXP 38
10006: PPUSH
10007: LD_VAR 0 1
10011: PPUSH
10012: CALL_OW 250
10016: PPUSH
10017: LD_VAR 0 1
10021: PPUSH
10022: CALL_OW 251
10026: PPUSH
10027: CALL_OW 439
10031: PUSH
10032: LD_INT 30
10034: PUSH
10035: LD_INT 18
10037: PUSH
10038: EMPTY
10039: LIST
10040: LIST
10041: DOUBLE
10042: EQUAL
10043: IFTRUE 10047
10045: GO 10058
10047: POP
// result = LevaBaza ; [ 111 , 18 ] :
10048: LD_ADDR_VAR 0 2
10052: PUSH
10053: LD_INT 31
10055: ST_TO_ADDR
10056: GO 10137
10058: LD_INT 111
10060: PUSH
10061: LD_INT 18
10063: PUSH
10064: EMPTY
10065: LIST
10066: LIST
10067: DOUBLE
10068: EQUAL
10069: IFTRUE 10073
10071: GO 10084
10073: POP
// result = PravaHorniBaza ; [ 150 , 73 ] :
10074: LD_ADDR_VAR 0 2
10078: PUSH
10079: LD_INT 33
10081: ST_TO_ADDR
10082: GO 10137
10084: LD_INT 150
10086: PUSH
10087: LD_INT 73
10089: PUSH
10090: EMPTY
10091: LIST
10092: LIST
10093: DOUBLE
10094: EQUAL
10095: IFTRUE 10099
10097: GO 10110
10099: POP
// result = PravaBaza ; [ 86 , 68 ] :
10100: LD_ADDR_VAR 0 2
10104: PUSH
10105: LD_INT 35
10107: ST_TO_ADDR
10108: GO 10137
10110: LD_INT 86
10112: PUSH
10113: LD_INT 68
10115: PUSH
10116: EMPTY
10117: LIST
10118: LIST
10119: DOUBLE
10120: EQUAL
10121: IFTRUE 10125
10123: GO 10136
10125: POP
// result = StredniBaza ; end ;
10126: LD_ADDR_VAR 0 2
10130: PUSH
10131: LD_INT 37
10133: ST_TO_ADDR
10134: GO 10137
10136: POP
// end ;
10137: LD_VAR 0 2
10141: RET
// export function NajdiNejblizsiRepairArea ( un ) ; begin
10142: LD_INT 0
10144: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 18 , 11 ] :
10145: LD_EXP 37
10149: PPUSH
10150: LD_VAR 0 1
10154: PPUSH
10155: CALL_OW 250
10159: PPUSH
10160: LD_VAR 0 1
10164: PPUSH
10165: CALL_OW 251
10169: PPUSH
10170: CALL_OW 439
10174: PUSH
10175: LD_INT 18
10177: PUSH
10178: LD_INT 11
10180: PUSH
10181: EMPTY
10182: LIST
10183: LIST
10184: DOUBLE
10185: EQUAL
10186: IFTRUE 10190
10188: GO 10201
10190: POP
// result = LevaRepair ; [ 104 , 22 ] :
10191: LD_ADDR_VAR 0 2
10195: PUSH
10196: LD_INT 25
10198: ST_TO_ADDR
10199: GO 10280
10201: LD_INT 104
10203: PUSH
10204: LD_INT 22
10206: PUSH
10207: EMPTY
10208: LIST
10209: LIST
10210: DOUBLE
10211: EQUAL
10212: IFTRUE 10216
10214: GO 10227
10216: POP
// result = PravaHorniRepair ; [ 157 , 73 ] :
10217: LD_ADDR_VAR 0 2
10221: PUSH
10222: LD_INT 27
10224: ST_TO_ADDR
10225: GO 10280
10227: LD_INT 157
10229: PUSH
10230: LD_INT 73
10232: PUSH
10233: EMPTY
10234: LIST
10235: LIST
10236: DOUBLE
10237: EQUAL
10238: IFTRUE 10242
10240: GO 10253
10242: POP
// result = PravaRepair ; [ 86 , 68 ] :
10243: LD_ADDR_VAR 0 2
10247: PUSH
10248: LD_INT 29
10250: ST_TO_ADDR
10251: GO 10280
10253: LD_INT 86
10255: PUSH
10256: LD_INT 68
10258: PUSH
10259: EMPTY
10260: LIST
10261: LIST
10262: DOUBLE
10263: EQUAL
10264: IFTRUE 10268
10266: GO 10279
10268: POP
// result = StredniBaza ; end ;
10269: LD_ADDR_VAR 0 2
10273: PUSH
10274: LD_INT 37
10276: ST_TO_ADDR
10277: GO 10280
10279: POP
// end ;
10280: LD_VAR 0 2
10284: RET
// function NajdiNejblizsiRepairAreaExpanded ( un ) ; begin
10285: LD_INT 0
10287: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 18 , 11 ] :
10288: LD_EXP 37
10292: PPUSH
10293: LD_VAR 0 1
10297: PPUSH
10298: CALL_OW 250
10302: PPUSH
10303: LD_VAR 0 1
10307: PPUSH
10308: CALL_OW 251
10312: PPUSH
10313: CALL_OW 439
10317: PUSH
10318: LD_INT 18
10320: PUSH
10321: LD_INT 11
10323: PUSH
10324: EMPTY
10325: LIST
10326: LIST
10327: DOUBLE
10328: EQUAL
10329: IFTRUE 10333
10331: GO 10344
10333: POP
// result = LevaRepairExpanded ; [ 104 , 22 ] :
10334: LD_ADDR_VAR 0 2
10338: PUSH
10339: LD_INT 26
10341: ST_TO_ADDR
10342: GO 10425
10344: LD_INT 104
10346: PUSH
10347: LD_INT 22
10349: PUSH
10350: EMPTY
10351: LIST
10352: LIST
10353: DOUBLE
10354: EQUAL
10355: IFTRUE 10359
10357: GO 10370
10359: POP
// result = PravaHorniRepairExpanded ; [ 157 , 73 ] :
10360: LD_ADDR_VAR 0 2
10364: PUSH
10365: LD_INT 28
10367: ST_TO_ADDR
10368: GO 10425
10370: LD_INT 157
10372: PUSH
10373: LD_INT 73
10375: PUSH
10376: EMPTY
10377: LIST
10378: LIST
10379: DOUBLE
10380: EQUAL
10381: IFTRUE 10385
10383: GO 10396
10385: POP
// result = PravaRepairExpanded ; [ - 1 , - 1 ] :
10386: LD_ADDR_VAR 0 2
10390: PUSH
10391: LD_INT 30
10393: ST_TO_ADDR
10394: GO 10425
10396: LD_INT 1
10398: NEG
10399: PUSH
10400: LD_INT 1
10402: NEG
10403: PUSH
10404: EMPTY
10405: LIST
10406: LIST
10407: DOUBLE
10408: EQUAL
10409: IFTRUE 10413
10411: GO 10424
10413: POP
// result = StredniBaza ; end ;
10414: LD_ADDR_VAR 0 2
10418: PUSH
10419: LD_INT 37
10421: ST_TO_ADDR
10422: GO 10425
10424: POP
// end ;
10425: LD_VAR 0 2
10429: RET
// export function NajdiNejblizsiCarParkArea ( un ) ; begin
10430: LD_INT 0
10432: PPUSH
// case FindNearestPoint ( stredy_carpark_oblasti , GetX ( un ) , GetY ( un ) ) of [ 25 , 14 ] :
10433: LD_EXP 39
10437: PPUSH
10438: LD_VAR 0 1
10442: PPUSH
10443: CALL_OW 250
10447: PPUSH
10448: LD_VAR 0 1
10452: PPUSH
10453: CALL_OW 251
10457: PPUSH
10458: CALL_OW 439
10462: PUSH
10463: LD_INT 25
10465: PUSH
10466: LD_INT 14
10468: PUSH
10469: EMPTY
10470: LIST
10471: LIST
10472: DOUBLE
10473: EQUAL
10474: IFTRUE 10478
10476: GO 10489
10478: POP
// result = LevaCarPark ; [ 117 , 27 ] :
10479: LD_ADDR_VAR 0 2
10483: PUSH
10484: LD_INT 39
10486: ST_TO_ADDR
10487: GO 10568
10489: LD_INT 117
10491: PUSH
10492: LD_INT 27
10494: PUSH
10495: EMPTY
10496: LIST
10497: LIST
10498: DOUBLE
10499: EQUAL
10500: IFTRUE 10504
10502: GO 10515
10504: POP
// result = PravaHorniCarpark ; [ 154 , 71 ] :
10505: LD_ADDR_VAR 0 2
10509: PUSH
10510: LD_INT 40
10512: ST_TO_ADDR
10513: GO 10568
10515: LD_INT 154
10517: PUSH
10518: LD_INT 71
10520: PUSH
10521: EMPTY
10522: LIST
10523: LIST
10524: DOUBLE
10525: EQUAL
10526: IFTRUE 10530
10528: GO 10541
10530: POP
// result = PravaCarPark ; [ 86 , 68 ] :
10531: LD_ADDR_VAR 0 2
10535: PUSH
10536: LD_INT 41
10538: ST_TO_ADDR
10539: GO 10568
10541: LD_INT 86
10543: PUSH
10544: LD_INT 68
10546: PUSH
10547: EMPTY
10548: LIST
10549: LIST
10550: DOUBLE
10551: EQUAL
10552: IFTRUE 10556
10554: GO 10567
10556: POP
// result = StredniBaza ; end ;
10557: LD_ADDR_VAR 0 2
10561: PUSH
10562: LD_INT 37
10564: ST_TO_ADDR
10565: GO 10568
10567: POP
// end ;
10568: LD_VAR 0 2
10572: RET
// function UtecDoNejblizsiHealOblasti ( un ) ; begin
10573: LD_INT 0
10575: PPUSH
// VyjdiVen ( un ) ;
10576: LD_VAR 0 1
10580: PPUSH
10581: CALL 4404 0 1
// if not IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
10585: LD_VAR 0 1
10589: PPUSH
10590: LD_VAR 0 1
10594: PPUSH
10595: CALL 9713 0 1
10599: PPUSH
10600: CALL 4574 0 2
10604: NOT
10605: IFFALSE 10626
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) ;
10607: LD_VAR 0 1
10611: PPUSH
10612: LD_VAR 0 1
10616: PPUSH
10617: CALL 9713 0 1
10621: PPUSH
10622: CALL_OW 113
// end ;
10626: LD_VAR 0 2
10630: RET
// function UtecDoNejblizsiCarParkOblasti ( un ) ; begin
10631: LD_INT 0
10633: PPUSH
// if GetDistUnitArea ( un , NajdiNejblizsiCarParkArea ( un ) ) > 4 then
10634: LD_VAR 0 1
10638: PPUSH
10639: LD_VAR 0 1
10643: PPUSH
10644: CALL 10430 0 1
10648: PPUSH
10649: CALL_OW 299
10653: PUSH
10654: LD_INT 4
10656: GREATER
10657: IFFALSE 10678
// begin ComMoveToArea ( un , NajdiNejblizsiCarParkArea ( un ) ) ;
10659: LD_VAR 0 1
10663: PPUSH
10664: LD_VAR 0 1
10668: PPUSH
10669: CALL 10430 0 1
10673: PPUSH
10674: CALL_OW 113
// end ; end ;
10678: LD_VAR 0 2
10682: RET
// export function UtecDoNejblizsiRepairOblasti ( un ) ; begin
10683: LD_INT 0
10685: PPUSH
// if not IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
10686: LD_VAR 0 1
10690: PPUSH
10691: LD_VAR 0 1
10695: PPUSH
10696: CALL 10142 0 1
10700: PPUSH
10701: CALL 4574 0 2
10705: NOT
10706: IFFALSE 10727
// ComMoveToArea ( un , NajdiNejblizsiRepairArea ( un ) ) ;
10708: LD_VAR 0 1
10712: PPUSH
10713: LD_VAR 0 1
10717: PPUSH
10718: CALL 10142 0 1
10722: PPUSH
10723: CALL_OW 113
// end ;
10727: LD_VAR 0 2
10731: RET
// function PocetJednotekCoJdouDoBudov ( list ) ; var pocet , i ; begin
10732: LD_INT 0
10734: PPUSH
10735: PPUSH
10736: PPUSH
// pocet = 0 ;
10737: LD_ADDR_VAR 0 3
10741: PUSH
10742: LD_INT 0
10744: ST_TO_ADDR
// for i in list do
10745: LD_ADDR_VAR 0 4
10749: PUSH
10750: LD_VAR 0 1
10754: PUSH
10755: FOR_IN
10756: IFFALSE 10785
// if JdeDoBudovy ( i ) then
10758: LD_VAR 0 4
10762: PPUSH
10763: CALL 11060 0 1
10767: IFFALSE 10783
// pocet = pocet + 1 ;
10769: LD_ADDR_VAR 0 3
10773: PUSH
10774: LD_VAR 0 3
10778: PUSH
10779: LD_INT 1
10781: PLUS
10782: ST_TO_ADDR
10783: GO 10755
10785: POP
10786: POP
// result = pocet ;
10787: LD_ADDR_VAR 0 2
10791: PUSH
10792: LD_VAR 0 3
10796: ST_TO_ADDR
// end ;
10797: LD_VAR 0 2
10801: RET
// function NejblizsiJednotkaCoNemaTask ( list , budova ) ; var k ; begin
10802: LD_INT 0
10804: PPUSH
10805: PPUSH
// for k in list do
10806: LD_ADDR_VAR 0 4
10810: PUSH
10811: LD_VAR 0 1
10815: PUSH
10816: FOR_IN
10817: IFFALSE 10848
// begin if JdeDoBudovy ( k ) then
10819: LD_VAR 0 4
10823: PPUSH
10824: CALL 11060 0 1
10828: IFFALSE 10846
// list = list diff k ;
10830: LD_ADDR_VAR 0 1
10834: PUSH
10835: LD_VAR 0 1
10839: PUSH
10840: LD_VAR 0 4
10844: DIFF
10845: ST_TO_ADDR
// end ;
10846: GO 10816
10848: POP
10849: POP
// if list then
10850: LD_VAR 0 1
10854: IFFALSE 10878
// result = NearestUnitToUnit ( list , budova ) else
10856: LD_ADDR_VAR 0 3
10860: PUSH
10861: LD_VAR 0 1
10865: PPUSH
10866: LD_VAR 0 2
10870: PPUSH
10871: CALL_OW 74
10875: ST_TO_ADDR
10876: GO 10886
// result = 0 ;
10878: LD_ADDR_VAR 0 3
10882: PUSH
10883: LD_INT 0
10885: ST_TO_ADDR
// end ;
10886: LD_VAR 0 3
10890: RET
// function MuzeJitOpravovatCerveny ( un ) ; var tmp ; begin
10891: LD_INT 0
10893: PPUSH
10894: PPUSH
// tmp = false ;
10895: LD_ADDR_VAR 0 3
10899: PUSH
10900: LD_INT 0
10902: ST_TO_ADDR
// if UnitsInside ( IsInUnit ( un ) ) > 3 then
10903: LD_VAR 0 1
10907: PPUSH
10908: CALL_OW 310
10912: PPUSH
10913: CALL_OW 313
10917: PUSH
10918: LD_INT 3
10920: GREATER
10921: IFFALSE 10941
// begin tmp = true ;
10923: LD_ADDR_VAR 0 3
10927: PUSH
10928: LD_INT 1
10930: ST_TO_ADDR
// result = true ;
10931: LD_ADDR_VAR 0 2
10935: PUSH
10936: LD_INT 1
10938: ST_TO_ADDR
// end else
10939: GO 10949
// result = false ;
10941: LD_ADDR_VAR 0 2
10945: PUSH
10946: LD_INT 0
10948: ST_TO_ADDR
// if not tmp then
10949: LD_VAR 0 3
10953: NOT
10954: IFFALSE 11055
// begin if GetTaskList ( un ) <> 0 then
10956: LD_VAR 0 1
10960: PPUSH
10961: CALL_OW 437
10965: PUSH
10966: LD_INT 0
10968: NONEQUAL
10969: IFFALSE 11047
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = r then
10971: LD_VAR 0 1
10975: PPUSH
10976: CALL_OW 437
10980: PUSH
10981: LD_INT 1
10983: ARRAY
10984: PUSH
10985: LD_INT 1
10987: ARRAY
10988: PUSH
10989: LD_STRING r
10991: EQUAL
10992: IFFALSE 11004
// result = true else
10994: LD_ADDR_VAR 0 2
10998: PUSH
10999: LD_INT 1
11001: ST_TO_ADDR
11002: GO 11045
// if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
11004: LD_VAR 0 1
11008: PPUSH
11009: CALL_OW 437
11013: PUSH
11014: LD_INT 1
11016: ARRAY
11017: PUSH
11018: LD_INT 1
11020: ARRAY
11021: PUSH
11022: LD_STRING e
11024: EQUAL
11025: IFFALSE 11037
// result = true else
11027: LD_ADDR_VAR 0 2
11031: PUSH
11032: LD_INT 1
11034: ST_TO_ADDR
11035: GO 11045
// result = false ;
11037: LD_ADDR_VAR 0 2
11041: PUSH
11042: LD_INT 0
11044: ST_TO_ADDR
// end else
11045: GO 11055
// result = false ;
11047: LD_ADDR_VAR 0 2
11051: PUSH
11052: LD_INT 0
11054: ST_TO_ADDR
// end end ;
11055: LD_VAR 0 2
11059: RET
// function JdeDoBudovy ( un ) ; begin
11060: LD_INT 0
11062: PPUSH
// if GetTaskList ( un ) <> 0 then
11063: LD_VAR 0 1
11067: PPUSH
11068: CALL_OW 437
11072: PUSH
11073: LD_INT 0
11075: NONEQUAL
11076: IFFALSE 11121
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
11078: LD_VAR 0 1
11082: PPUSH
11083: CALL_OW 437
11087: PUSH
11088: LD_INT 1
11090: ARRAY
11091: PUSH
11092: LD_INT 1
11094: ARRAY
11095: PUSH
11096: LD_STRING e
11098: EQUAL
11099: IFFALSE 11111
// result = true else
11101: LD_ADDR_VAR 0 2
11105: PUSH
11106: LD_INT 1
11108: ST_TO_ADDR
11109: GO 11119
// result = false ;
11111: LD_ADDR_VAR 0 2
11115: PUSH
11116: LD_INT 0
11118: ST_TO_ADDR
// end else
11119: GO 11129
// result = false ;
11121: LD_ADDR_VAR 0 2
11125: PUSH
11126: LD_INT 0
11128: ST_TO_ADDR
// end ;
11129: LD_VAR 0 2
11133: RET
// export function NajdiVojaka ; var voj ; begin
11134: LD_INT 0
11136: PPUSH
11137: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod then
11138: LD_INT 24
11140: PUSH
11141: LD_INT 250
11143: PUSH
11144: EMPTY
11145: LIST
11146: LIST
11147: PUSH
11148: LD_INT 22
11150: PUSH
11151: LD_EXP 18
11155: PUSH
11156: EMPTY
11157: LIST
11158: LIST
11159: PUSH
11160: LD_INT 2
11162: PUSH
11163: LD_INT 25
11165: PUSH
11166: LD_INT 1
11168: PUSH
11169: EMPTY
11170: LIST
11171: LIST
11172: PUSH
11173: LD_INT 25
11175: PUSH
11176: LD_INT 9
11178: PUSH
11179: EMPTY
11180: LIST
11181: LIST
11182: PUSH
11183: EMPTY
11184: LIST
11185: LIST
11186: LIST
11187: PUSH
11188: EMPTY
11189: LIST
11190: LIST
11191: LIST
11192: PPUSH
11193: CALL_OW 69
11197: PUSH
11198: LD_EXP 1
11202: DIFF
11203: IFFALSE 11276
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod ;
11205: LD_ADDR_VAR 0 2
11209: PUSH
11210: LD_INT 24
11212: PUSH
11213: LD_INT 250
11215: PUSH
11216: EMPTY
11217: LIST
11218: LIST
11219: PUSH
11220: LD_INT 22
11222: PUSH
11223: LD_EXP 18
11227: PUSH
11228: EMPTY
11229: LIST
11230: LIST
11231: PUSH
11232: LD_INT 2
11234: PUSH
11235: LD_INT 25
11237: PUSH
11238: LD_INT 1
11240: PUSH
11241: EMPTY
11242: LIST
11243: LIST
11244: PUSH
11245: LD_INT 25
11247: PUSH
11248: LD_INT 9
11250: PUSH
11251: EMPTY
11252: LIST
11253: LIST
11254: PUSH
11255: EMPTY
11256: LIST
11257: LIST
11258: LIST
11259: PUSH
11260: EMPTY
11261: LIST
11262: LIST
11263: LIST
11264: PPUSH
11265: CALL_OW 69
11269: PUSH
11270: LD_EXP 1
11274: DIFF
11275: ST_TO_ADDR
// if voj then
11276: LD_VAR 0 2
11280: IFFALSE 11308
// result = voj [ Rand ( 1 , voj ) ] else
11282: LD_ADDR_VAR 0 1
11286: PUSH
11287: LD_VAR 0 2
11291: PUSH
11292: LD_INT 1
11294: PPUSH
11295: LD_VAR 0 2
11299: PPUSH
11300: CALL_OW 12
11304: ARRAY
11305: ST_TO_ADDR
11306: GO 11358
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_combat ) ;
11308: LD_ADDR_VAR 0 1
11312: PUSH
11313: LD_INT 24
11315: PUSH
11316: LD_INT 250
11318: PUSH
11319: EMPTY
11320: LIST
11321: LIST
11322: PUSH
11323: LD_INT 22
11325: PUSH
11326: LD_EXP 18
11330: PUSH
11331: EMPTY
11332: LIST
11333: LIST
11334: PUSH
11335: EMPTY
11336: LIST
11337: LIST
11338: PPUSH
11339: CALL_OW 69
11343: PUSH
11344: LD_EXP 1
11348: DIFF
11349: PPUSH
11350: LD_INT 1
11352: PPUSH
11353: CALL_OW 433
11357: ST_TO_ADDR
// end ;
11358: LD_VAR 0 1
11362: RET
// export function NajdiVedce ; var ved ; begin
11363: LD_INT 0
11365: PPUSH
11366: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod then
11367: LD_INT 24
11369: PUSH
11370: LD_INT 250
11372: PUSH
11373: EMPTY
11374: LIST
11375: LIST
11376: PUSH
11377: LD_INT 22
11379: PUSH
11380: LD_EXP 18
11384: PUSH
11385: EMPTY
11386: LIST
11387: LIST
11388: PUSH
11389: LD_INT 25
11391: PUSH
11392: LD_INT 4
11394: PUSH
11395: EMPTY
11396: LIST
11397: LIST
11398: PUSH
11399: EMPTY
11400: LIST
11401: LIST
11402: LIST
11403: PPUSH
11404: CALL_OW 69
11408: PUSH
11409: LD_EXP 1
11413: DIFF
11414: IFFALSE 11469
// ved = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod ;
11416: LD_ADDR_VAR 0 2
11420: PUSH
11421: LD_INT 24
11423: PUSH
11424: LD_INT 250
11426: PUSH
11427: EMPTY
11428: LIST
11429: LIST
11430: PUSH
11431: LD_INT 22
11433: PUSH
11434: LD_EXP 18
11438: PUSH
11439: EMPTY
11440: LIST
11441: LIST
11442: PUSH
11443: LD_INT 25
11445: PUSH
11446: LD_INT 4
11448: PUSH
11449: EMPTY
11450: LIST
11451: LIST
11452: PUSH
11453: EMPTY
11454: LIST
11455: LIST
11456: LIST
11457: PPUSH
11458: CALL_OW 69
11462: PUSH
11463: LD_EXP 1
11467: DIFF
11468: ST_TO_ADDR
// if ved then
11469: LD_VAR 0 2
11473: IFFALSE 11501
// result = ved [ Rand ( 1 , ved ) ] else
11475: LD_ADDR_VAR 0 1
11479: PUSH
11480: LD_VAR 0 2
11484: PUSH
11485: LD_INT 1
11487: PPUSH
11488: LD_VAR 0 2
11492: PPUSH
11493: CALL_OW 12
11497: ARRAY
11498: ST_TO_ADDR
11499: GO 11551
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_scientistic ) ;
11501: LD_ADDR_VAR 0 1
11505: PUSH
11506: LD_INT 24
11508: PUSH
11509: LD_INT 250
11511: PUSH
11512: EMPTY
11513: LIST
11514: LIST
11515: PUSH
11516: LD_INT 22
11518: PUSH
11519: LD_EXP 18
11523: PUSH
11524: EMPTY
11525: LIST
11526: LIST
11527: PUSH
11528: EMPTY
11529: LIST
11530: LIST
11531: PPUSH
11532: CALL_OW 69
11536: PUSH
11537: LD_EXP 1
11541: DIFF
11542: PPUSH
11543: LD_INT 4
11545: PPUSH
11546: CALL_OW 433
11550: ST_TO_ADDR
// end ;
11551: LD_VAR 0 1
11555: RET
// export function NajdiMechanika ; var mech ; begin
11556: LD_INT 0
11558: PPUSH
11559: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod then
11560: LD_INT 24
11562: PUSH
11563: LD_INT 250
11565: PUSH
11566: EMPTY
11567: LIST
11568: LIST
11569: PUSH
11570: LD_INT 22
11572: PUSH
11573: LD_EXP 18
11577: PUSH
11578: EMPTY
11579: LIST
11580: LIST
11581: PUSH
11582: LD_INT 25
11584: PUSH
11585: LD_INT 3
11587: PUSH
11588: EMPTY
11589: LIST
11590: LIST
11591: PUSH
11592: EMPTY
11593: LIST
11594: LIST
11595: LIST
11596: PPUSH
11597: CALL_OW 69
11601: PUSH
11602: LD_EXP 1
11606: DIFF
11607: IFFALSE 11662
// mech = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod ;
11609: LD_ADDR_VAR 0 2
11613: PUSH
11614: LD_INT 24
11616: PUSH
11617: LD_INT 250
11619: PUSH
11620: EMPTY
11621: LIST
11622: LIST
11623: PUSH
11624: LD_INT 22
11626: PUSH
11627: LD_EXP 18
11631: PUSH
11632: EMPTY
11633: LIST
11634: LIST
11635: PUSH
11636: LD_INT 25
11638: PUSH
11639: LD_INT 3
11641: PUSH
11642: EMPTY
11643: LIST
11644: LIST
11645: PUSH
11646: EMPTY
11647: LIST
11648: LIST
11649: LIST
11650: PPUSH
11651: CALL_OW 69
11655: PUSH
11656: LD_EXP 1
11660: DIFF
11661: ST_TO_ADDR
// if mech then
11662: LD_VAR 0 2
11666: IFFALSE 11694
// result = mech [ Rand ( 1 , mech ) ] else
11668: LD_ADDR_VAR 0 1
11672: PUSH
11673: LD_VAR 0 2
11677: PUSH
11678: LD_INT 1
11680: PPUSH
11681: LD_VAR 0 2
11685: PPUSH
11686: CALL_OW 12
11690: ARRAY
11691: ST_TO_ADDR
11692: GO 11744
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_mechanical ) ;
11694: LD_ADDR_VAR 0 1
11698: PUSH
11699: LD_INT 24
11701: PUSH
11702: LD_INT 250
11704: PUSH
11705: EMPTY
11706: LIST
11707: LIST
11708: PUSH
11709: LD_INT 22
11711: PUSH
11712: LD_EXP 18
11716: PUSH
11717: EMPTY
11718: LIST
11719: LIST
11720: PUSH
11721: EMPTY
11722: LIST
11723: LIST
11724: PPUSH
11725: CALL_OW 69
11729: PUSH
11730: LD_EXP 1
11734: DIFF
11735: PPUSH
11736: LD_INT 3
11738: PPUSH
11739: CALL_OW 433
11743: ST_TO_ADDR
// end ;
11744: LD_VAR 0 1
11748: RET
// export function NajdiDelnika ; var del ; begin
11749: LD_INT 0
11751: PPUSH
11752: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod then
11753: LD_INT 24
11755: PUSH
11756: LD_INT 250
11758: PUSH
11759: EMPTY
11760: LIST
11761: LIST
11762: PUSH
11763: LD_INT 22
11765: PUSH
11766: LD_EXP 18
11770: PUSH
11771: EMPTY
11772: LIST
11773: LIST
11774: PUSH
11775: LD_INT 25
11777: PUSH
11778: LD_INT 2
11780: PUSH
11781: EMPTY
11782: LIST
11783: LIST
11784: PUSH
11785: EMPTY
11786: LIST
11787: LIST
11788: LIST
11789: PPUSH
11790: CALL_OW 69
11794: PUSH
11795: LD_EXP 1
11799: DIFF
11800: IFFALSE 11855
// del = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod ;
11802: LD_ADDR_VAR 0 2
11806: PUSH
11807: LD_INT 24
11809: PUSH
11810: LD_INT 250
11812: PUSH
11813: EMPTY
11814: LIST
11815: LIST
11816: PUSH
11817: LD_INT 22
11819: PUSH
11820: LD_EXP 18
11824: PUSH
11825: EMPTY
11826: LIST
11827: LIST
11828: PUSH
11829: LD_INT 25
11831: PUSH
11832: LD_INT 2
11834: PUSH
11835: EMPTY
11836: LIST
11837: LIST
11838: PUSH
11839: EMPTY
11840: LIST
11841: LIST
11842: LIST
11843: PPUSH
11844: CALL_OW 69
11848: PUSH
11849: LD_EXP 1
11853: DIFF
11854: ST_TO_ADDR
// if del then
11855: LD_VAR 0 2
11859: IFFALSE 11887
// result = del [ Rand ( 1 , del ) ] else
11861: LD_ADDR_VAR 0 1
11865: PUSH
11866: LD_VAR 0 2
11870: PUSH
11871: LD_INT 1
11873: PPUSH
11874: LD_VAR 0 2
11878: PPUSH
11879: CALL_OW 12
11883: ARRAY
11884: ST_TO_ADDR
11885: GO 11937
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , You ] ] ) diff vsevolod , skill_engineering ) ;
11887: LD_ADDR_VAR 0 1
11891: PUSH
11892: LD_INT 24
11894: PUSH
11895: LD_INT 250
11897: PUSH
11898: EMPTY
11899: LIST
11900: LIST
11901: PUSH
11902: LD_INT 22
11904: PUSH
11905: LD_EXP 18
11909: PUSH
11910: EMPTY
11911: LIST
11912: LIST
11913: PUSH
11914: EMPTY
11915: LIST
11916: LIST
11917: PPUSH
11918: CALL_OW 69
11922: PUSH
11923: LD_EXP 1
11927: DIFF
11928: PPUSH
11929: LD_INT 2
11931: PPUSH
11932: CALL_OW 433
11936: ST_TO_ADDR
// end ;
11937: LD_VAR 0 1
11941: RET
// function GetListOfCratesInAreaBySide ( side , area ) ; begin
11942: LD_INT 0
11944: PPUSH
// if area = LevaBazaExpanded then
11945: LD_VAR 0 2
11949: PUSH
11950: LD_INT 32
11952: EQUAL
11953: IFFALSE 11970
// result = GetListOfCratesInArea ( LevaBaza ) else
11955: LD_ADDR_VAR 0 3
11959: PUSH
11960: LD_INT 31
11962: PPUSH
11963: CALL_OW 435
11967: ST_TO_ADDR
11968: GO 12033
// if area = PravaHorniBazaExpanded then
11970: LD_VAR 0 2
11974: PUSH
11975: LD_INT 34
11977: EQUAL
11978: IFFALSE 11995
// result = GetListOfCratesInArea ( PravaHorniBaza ) else
11980: LD_ADDR_VAR 0 3
11984: PUSH
11985: LD_INT 33
11987: PPUSH
11988: CALL_OW 435
11992: ST_TO_ADDR
11993: GO 12033
// if area = PravaBazaExpanded then
11995: LD_VAR 0 2
11999: PUSH
12000: LD_INT 36
12002: EQUAL
12003: IFFALSE 12020
// result = GetListOfCratesInArea ( PravaBaza ) else
12005: LD_ADDR_VAR 0 3
12009: PUSH
12010: LD_INT 35
12012: PPUSH
12013: CALL_OW 435
12017: ST_TO_ADDR
12018: GO 12033
// result = GetListOfCratesInArea ( StredniBaza ) ;
12020: LD_ADDR_VAR 0 3
12024: PUSH
12025: LD_INT 37
12027: PPUSH
12028: CALL_OW 435
12032: ST_TO_ADDR
// end ;
12033: LD_VAR 0 3
12037: RET
// export function CreateCratesArea2 ( crates , area , mat ) ; begin
12038: LD_INT 0
12040: PPUSH
// if crates < 1 or crates > 5 then
12041: LD_VAR 0 1
12045: PUSH
12046: LD_INT 1
12048: LESS
12049: PUSH
12050: LD_VAR 0 1
12054: PUSH
12055: LD_INT 5
12057: GREATER
12058: OR
12059: IFFALSE 12063
// exit ;
12061: GO 12082
// CreateCratesArea ( crates , area , mat ) ;
12063: LD_VAR 0 1
12067: PPUSH
12068: LD_VAR 0 2
12072: PPUSH
12073: LD_VAR 0 3
12077: PPUSH
12078: CALL_OW 55
// end ; end_of_file
12082: LD_VAR 0 4
12086: 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
12087: LD_INT 0
12089: PPUSH
// dif_ape_agr_multiplier = 13 * difficulty ;
12090: LD_ADDR_EXP 43
12094: PUSH
12095: LD_INT 13
12097: PUSH
12098: LD_OWVAR 67
12102: MUL
12103: ST_TO_ADDR
// dif_tiger_agr_multiplier = 20 * difficulty ;
12104: LD_ADDR_EXP 44
12108: PUSH
12109: LD_INT 20
12111: PUSH
12112: LD_OWVAR 67
12116: MUL
12117: 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 ] ;
12118: LD_ADDR_EXP 45
12122: PUSH
12123: LD_INT 1400
12125: PUSH
12126: LD_INT 2800
12128: PUSH
12129: EMPTY
12130: LIST
12131: LIST
12132: PUSH
12133: LD_INT 2100
12135: PUSH
12136: LD_INT 2800
12138: PUSH
12139: EMPTY
12140: LIST
12141: LIST
12142: PUSH
12143: LD_INT 2450
12145: PUSH
12146: LD_INT 3150
12148: PUSH
12149: EMPTY
12150: LIST
12151: LIST
12152: PUSH
12153: EMPTY
12154: LIST
12155: LIST
12156: LIST
12157: PUSH
12158: LD_OWVAR 67
12162: ARRAY
12163: ST_TO_ADDR
// dif_bedny_mnozstvi = [ [ 4 , 5 ] , [ 3 , 5 ] , [ 2 , 5 ] ] [ difficulty ] ;
12164: LD_ADDR_EXP 46
12168: PUSH
12169: LD_INT 4
12171: PUSH
12172: LD_INT 5
12174: PUSH
12175: EMPTY
12176: LIST
12177: LIST
12178: PUSH
12179: LD_INT 3
12181: PUSH
12182: LD_INT 5
12184: PUSH
12185: EMPTY
12186: LIST
12187: LIST
12188: PUSH
12189: LD_INT 2
12191: PUSH
12192: LD_INT 5
12194: PUSH
12195: EMPTY
12196: LIST
12197: LIST
12198: PUSH
12199: EMPTY
12200: LIST
12201: LIST
12202: LIST
12203: PUSH
12204: LD_OWVAR 67
12208: ARRAY
12209: ST_TO_ADDR
// dif_enemy_lidi_kasa = [ 3 , 4 , 5 ] [ difficulty ] ;
12210: LD_ADDR_EXP 47
12214: PUSH
12215: LD_INT 3
12217: PUSH
12218: LD_INT 4
12220: PUSH
12221: LD_INT 5
12223: PUSH
12224: EMPTY
12225: LIST
12226: LIST
12227: LIST
12228: PUSH
12229: LD_OWVAR 67
12233: ARRAY
12234: ST_TO_ADDR
// dif_enemy_lidi_faclab = [ 4 , 5 , 6 ] [ difficulty ] ;
12235: LD_ADDR_EXP 49
12239: PUSH
12240: LD_INT 4
12242: PUSH
12243: LD_INT 5
12245: PUSH
12246: LD_INT 6
12248: PUSH
12249: EMPTY
12250: LIST
12251: LIST
12252: LIST
12253: PUSH
12254: LD_OWVAR 67
12258: ARRAY
12259: ST_TO_ADDR
// dif_enemy_lidi_sklad = [ 4 , 6 , 6 ] [ difficulty ] ;
12260: LD_ADDR_EXP 48
12264: PUSH
12265: LD_INT 4
12267: PUSH
12268: LD_INT 6
12270: PUSH
12271: LD_INT 6
12273: PUSH
12274: EMPTY
12275: LIST
12276: LIST
12277: LIST
12278: PUSH
12279: LD_OWVAR 67
12283: ARRAY
12284: ST_TO_ADDR
// dif_enemy_min_skill = [ 4 , 4 , 6 ] [ difficulty ] ;
12285: LD_ADDR_EXP 50
12289: PUSH
12290: LD_INT 4
12292: PUSH
12293: LD_INT 4
12295: PUSH
12296: LD_INT 6
12298: PUSH
12299: EMPTY
12300: LIST
12301: LIST
12302: LIST
12303: PUSH
12304: LD_OWVAR 67
12308: ARRAY
12309: ST_TO_ADDR
// dif_enemy_max_skill = [ 6 , 7 , 8 ] [ difficulty ] ;
12310: LD_ADDR_EXP 51
12314: PUSH
12315: LD_INT 6
12317: PUSH
12318: LD_INT 7
12320: PUSH
12321: LD_INT 8
12323: PUSH
12324: EMPTY
12325: LIST
12326: LIST
12327: LIST
12328: PUSH
12329: LD_OWVAR 67
12333: ARRAY
12334: ST_TO_ADDR
// dif_prob_uspavaci = [ 50 , 55 , 60 ] [ difficulty ] ;
12335: LD_ADDR_EXP 52
12339: PUSH
12340: LD_INT 50
12342: PUSH
12343: LD_INT 55
12345: PUSH
12346: LD_INT 60
12348: PUSH
12349: EMPTY
12350: LIST
12351: LIST
12352: LIST
12353: PUSH
12354: LD_OWVAR 67
12358: ARRAY
12359: ST_TO_ADDR
// dif_amik_attack_size = [ 4 , 5 , 6 ] [ difficulty ] ;
12360: LD_ADDR_EXP 55
12364: PUSH
12365: LD_INT 4
12367: PUSH
12368: LD_INT 5
12370: PUSH
12371: LD_INT 6
12373: PUSH
12374: EMPTY
12375: LIST
12376: LIST
12377: LIST
12378: PUSH
12379: LD_OWVAR 67
12383: ARRAY
12384: ST_TO_ADDR
// dif_amik_vyroba_utok_wait_start = [ 6 6$30 , 4 4$30 , 3 3$30 ] [ difficulty ] ;
12385: LD_ADDR_EXP 65
12389: PUSH
12390: LD_INT 13650
12392: PUSH
12393: LD_INT 9450
12395: PUSH
12396: LD_INT 7350
12398: PUSH
12399: EMPTY
12400: LIST
12401: LIST
12402: LIST
12403: PUSH
12404: LD_OWVAR 67
12408: ARRAY
12409: ST_TO_ADDR
// dif_amik_vyroba_utok_wait = [ 13 13$00 , 9 9$00 , 6 6$40 ] [ difficulty ] ;
12410: LD_ADDR_EXP 59
12414: PUSH
12415: LD_INT 27300
12417: PUSH
12418: LD_INT 18900
12420: PUSH
12421: LD_INT 14000
12423: PUSH
12424: EMPTY
12425: LIST
12426: LIST
12427: LIST
12428: PUSH
12429: LD_OWVAR 67
12433: ARRAY
12434: ST_TO_ADDR
// dif_auto_lepsi_podvozek_sance = [ 25 , 50 , 75 ] [ difficulty ] ;
12435: LD_ADDR_EXP 60
12439: PUSH
12440: LD_INT 25
12442: PUSH
12443: LD_INT 50
12445: PUSH
12446: LD_INT 75
12448: PUSH
12449: EMPTY
12450: LIST
12451: LIST
12452: LIST
12453: PUSH
12454: LD_OWVAR 67
12458: ARRAY
12459: ST_TO_ADDR
// dif_auto_vyroba_sance = [ [ 25 , 50 , 75 , 95 ] , [ 20 , 40 , 70 , 91 ] , [ 10 , 30 , 50 , 88 ] ] [ difficulty ] ;
12460: LD_ADDR_EXP 61
12464: PUSH
12465: LD_INT 25
12467: PUSH
12468: LD_INT 50
12470: PUSH
12471: LD_INT 75
12473: PUSH
12474: LD_INT 95
12476: PUSH
12477: EMPTY
12478: LIST
12479: LIST
12480: LIST
12481: LIST
12482: PUSH
12483: LD_INT 20
12485: PUSH
12486: LD_INT 40
12488: PUSH
12489: LD_INT 70
12491: PUSH
12492: LD_INT 91
12494: PUSH
12495: EMPTY
12496: LIST
12497: LIST
12498: LIST
12499: LIST
12500: PUSH
12501: LD_INT 10
12503: PUSH
12504: LD_INT 30
12506: PUSH
12507: LD_INT 50
12509: PUSH
12510: LD_INT 88
12512: PUSH
12513: EMPTY
12514: LIST
12515: LIST
12516: LIST
12517: LIST
12518: PUSH
12519: EMPTY
12520: LIST
12521: LIST
12522: LIST
12523: PUSH
12524: LD_OWVAR 67
12528: ARRAY
12529: ST_TO_ADDR
// dif_research_wait = [ 7 7$00 , 5 5$30 , 4 4$00 ] [ difficulty ] ;
12530: LD_ADDR_EXP 62
12534: PUSH
12535: LD_INT 14700
12537: PUSH
12538: LD_INT 11550
12540: PUSH
12541: LD_INT 8400
12543: PUSH
12544: EMPTY
12545: LIST
12546: LIST
12547: LIST
12548: PUSH
12549: LD_OWVAR 67
12553: ARRAY
12554: ST_TO_ADDR
// dif_vyroba_tick_inkrement = [ 0 0$45 , 0 0$40 , 0 0$40 ] [ difficulty ] ;
12555: LD_ADDR_EXP 66
12559: PUSH
12560: LD_INT 1575
12562: PUSH
12563: LD_INT 1400
12565: PUSH
12566: LD_INT 1400
12568: PUSH
12569: EMPTY
12570: LIST
12571: LIST
12572: LIST
12573: PUSH
12574: LD_OWVAR 67
12578: ARRAY
12579: ST_TO_ADDR
// dif_sibcelkem = [ 1600 , 1500 , 1400 ] [ difficulty ] ;
12580: LD_ADDR_EXP 56
12584: PUSH
12585: LD_INT 1600
12587: PUSH
12588: LD_INT 1500
12590: PUSH
12591: LD_INT 1400
12593: PUSH
12594: EMPTY
12595: LIST
12596: LIST
12597: LIST
12598: PUSH
12599: LD_OWVAR 67
12603: ARRAY
12604: ST_TO_ADDR
// sibcelkem = dif_sibcelkem ;
12605: LD_ADDR_EXP 71
12609: PUSH
12610: LD_EXP 56
12614: 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 ] ;
12615: LD_ADDR_EXP 72
12619: PUSH
12620: LD_INT 48
12622: PUSH
12623: LD_INT 57
12625: PUSH
12626: LD_INT 49
12628: PUSH
12629: LD_INT 58
12631: PUSH
12632: LD_INT 50
12634: PUSH
12635: LD_INT 51
12637: PUSH
12638: LD_INT 52
12640: PUSH
12641: LD_INT 60
12643: PUSH
12644: LD_INT 61
12646: PUSH
12647: LD_INT 62
12649: PUSH
12650: EMPTY
12651: LIST
12652: LIST
12653: LIST
12654: LIST
12655: LIST
12656: LIST
12657: LIST
12658: LIST
12659: LIST
12660: LIST
12661: PUSH
12662: LD_INT 48
12664: PUSH
12665: LD_INT 57
12667: PUSH
12668: LD_INT 49
12670: PUSH
12671: LD_INT 58
12673: PUSH
12674: LD_INT 50
12676: PUSH
12677: LD_INT 51
12679: PUSH
12680: LD_INT 52
12682: PUSH
12683: LD_INT 53
12685: PUSH
12686: LD_INT 60
12688: PUSH
12689: LD_INT 61
12691: PUSH
12692: LD_INT 62
12694: PUSH
12695: EMPTY
12696: LIST
12697: LIST
12698: LIST
12699: LIST
12700: LIST
12701: LIST
12702: LIST
12703: LIST
12704: LIST
12705: LIST
12706: LIST
12707: PUSH
12708: LD_INT 48
12710: PUSH
12711: LD_INT 57
12713: PUSH
12714: LD_INT 49
12716: PUSH
12717: LD_INT 58
12719: PUSH
12720: LD_INT 50
12722: PUSH
12723: LD_INT 51
12725: PUSH
12726: LD_INT 52
12728: PUSH
12729: LD_INT 59
12731: PUSH
12732: LD_INT 53
12734: PUSH
12735: LD_INT 60
12737: PUSH
12738: LD_INT 61
12740: PUSH
12741: LD_INT 62
12743: PUSH
12744: EMPTY
12745: LIST
12746: LIST
12747: LIST
12748: LIST
12749: LIST
12750: LIST
12751: LIST
12752: LIST
12753: LIST
12754: LIST
12755: LIST
12756: LIST
12757: PUSH
12758: EMPTY
12759: LIST
12760: LIST
12761: LIST
12762: PUSH
12763: LD_OWVAR 67
12767: ARRAY
12768: ST_TO_ADDR
// dif_podvozek_nakl = [ us_medium_tracked , us_medium_tracked , us_morphling ] [ difficulty ] ;
12769: LD_ADDR_EXP 67
12773: PUSH
12774: LD_INT 3
12776: PUSH
12777: LD_INT 3
12779: PUSH
12780: LD_INT 5
12782: PUSH
12783: EMPTY
12784: LIST
12785: LIST
12786: LIST
12787: PUSH
12788: LD_OWVAR 67
12792: ARRAY
12793: ST_TO_ADDR
// if difficulty = 1 then
12794: LD_OWVAR 67
12798: PUSH
12799: LD_INT 1
12801: EQUAL
12802: IFFALSE 12830
// RemoveUnit ( FilterUnitsInArea ( Lozisko4 , [ f_type , unit_building ] ) [ 1 ] ) ;
12804: LD_INT 11
12806: PPUSH
12807: LD_INT 21
12809: PUSH
12810: LD_INT 3
12812: PUSH
12813: EMPTY
12814: LIST
12815: LIST
12816: PPUSH
12817: CALL_OW 70
12821: PUSH
12822: LD_INT 1
12824: ARRAY
12825: PPUSH
12826: CALL_OW 64
// end ;
12830: LD_VAR 0 1
12834: RET
// every 20 20$00 do
12835: GO 12837
12837: DISABLE
// begin tech_list_amik = tech_list_amik ^ tech_sib1 ;
12838: LD_ADDR_EXP 72
12842: PUSH
12843: LD_EXP 72
12847: PUSH
12848: LD_INT 54
12850: ADD
12851: ST_TO_ADDR
// if difficulty <> 1 then
12852: LD_OWVAR 67
12856: PUSH
12857: LD_INT 1
12859: NONEQUAL
12860: IFFALSE 12876
// tech_list_amik = tech_list_amik ^ tech_sib2 ;
12862: LD_ADDR_EXP 72
12866: PUSH
12867: LD_EXP 72
12871: PUSH
12872: LD_INT 55
12874: ADD
12875: ST_TO_ADDR
// end ; end_of_file
12876: END
// every 0 0$1 trigger ingame and tick >= 0 0$1 do
12877: LD_EXP 17
12881: PUSH
12882: LD_OWVAR 1
12886: PUSH
12887: LD_INT 35
12889: GREATEREQUAL
12890: AND
12891: IFFALSE 12901
12893: GO 12895
12895: DISABLE
// begin ShowStrings ;
12896: CALL 12902 0 0
// enable ;
12900: ENABLE
// end ;
12901: END
// export function ShowStrings ; begin
12902: LD_INT 0
12904: PPUSH
// if not ingame then
12905: LD_EXP 17
12909: NOT
12910: IFFALSE 12914
// exit ;
12912: GO 13047
// if poprveZobrazeni then
12914: LD_EXP 68
12918: IFFALSE 12954
// begin poprveZobrazeni = false ;
12920: LD_ADDR_EXP 68
12924: PUSH
12925: LD_INT 0
12927: ST_TO_ADDR
// sibyou = 0 ;
12928: LD_ADDR_EXP 69
12932: PUSH
12933: LD_INT 0
12935: ST_TO_ADDR
// sibam = 0 ;
12936: LD_ADDR_EXP 70
12940: PUSH
12941: LD_INT 0
12943: ST_TO_ADDR
// sibcelkem = dif_sibcelkem ;
12944: LD_ADDR_EXP 71
12948: PUSH
12949: LD_EXP 56
12953: ST_TO_ADDR
// end ; display_strings = [ #Ru01-Time , tick ] ;
12954: LD_ADDR_OWVAR 47
12958: PUSH
12959: LD_STRING #Ru01-Time
12961: PUSH
12962: LD_OWVAR 1
12966: PUSH
12967: EMPTY
12968: LIST
12969: LIST
12970: ST_TO_ADDR
// display_strings = display_strings ^ [  ] ^ [ #Ru02-SibAm , sibam ] ;
12971: LD_ADDR_OWVAR 47
12975: PUSH
12976: LD_OWVAR 47
12980: PUSH
12981: LD_STRING 
12983: PUSH
12984: EMPTY
12985: LIST
12986: ADD
12987: PUSH
12988: LD_STRING #Ru02-SibAm
12990: PUSH
12991: LD_EXP 70
12995: PUSH
12996: EMPTY
12997: LIST
12998: LIST
12999: ADD
13000: ST_TO_ADDR
// display_strings = display_strings ^ [ #Ru02-SibYou , sibyou ] ;
13001: LD_ADDR_OWVAR 47
13005: PUSH
13006: LD_OWVAR 47
13010: PUSH
13011: LD_STRING #Ru02-SibYou
13013: PUSH
13014: LD_EXP 69
13018: PUSH
13019: EMPTY
13020: LIST
13021: LIST
13022: ADD
13023: ST_TO_ADDR
// display_strings = display_strings ^ [ #Ru02-Celkem , sibcelkem ] ;
13024: LD_ADDR_OWVAR 47
13028: PUSH
13029: LD_OWVAR 47
13033: PUSH
13034: LD_STRING #Ru02-Celkem
13036: PUSH
13037: LD_EXP 71
13041: PUSH
13042: EMPTY
13043: LIST
13044: LIST
13045: ADD
13046: ST_TO_ADDR
// end ;
13047: LD_VAR 0 1
13051: RET
// every 0 0$0.2 trigger ingame do
13052: LD_EXP 17
13056: IFFALSE 13069
13058: GO 13060
13060: DISABLE
// tick = 0 0$0 ;
13061: LD_ADDR_OWVAR 1
13065: PUSH
13066: LD_INT 0
13068: ST_TO_ADDR
13069: END
// export poprveZobrazeni ; end_of_file export sibyou , sibam , sibcelkem ; var areas , ticks , xy , tech0_speed , tech1_speed ; every 0 0$1 do
13070: GO 13072
13072: DISABLE
// begin sibyou = 0 ;
13073: LD_ADDR_EXP 69
13077: PUSH
13078: LD_INT 0
13080: ST_TO_ADDR
// sibam = 0 ;
13081: LD_ADDR_EXP 70
13085: PUSH
13086: LD_INT 0
13088: ST_TO_ADDR
// areas = [ Lozisko1 , Lozisko2 , Lozisko3 , Lozisko4 , Lozisko5 , Lozisko6 , Lozisko7 ] ;
13089: LD_ADDR_LOC 2
13093: PUSH
13094: LD_INT 8
13096: PUSH
13097: LD_INT 9
13099: PUSH
13100: LD_INT 10
13102: PUSH
13103: LD_INT 11
13105: PUSH
13106: LD_INT 12
13108: PUSH
13109: LD_INT 13
13111: PUSH
13112: LD_INT 14
13114: PUSH
13115: EMPTY
13116: LIST
13117: LIST
13118: LIST
13119: LIST
13120: LIST
13121: LIST
13122: LIST
13123: 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 ] ;
13124: LD_ADDR_LOC 3
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: LD_INT 0
13149: PUSH
13150: EMPTY
13151: LIST
13152: LIST
13153: LIST
13154: LIST
13155: LIST
13156: LIST
13157: LIST
13158: ST_TO_ADDR
// tech0_speed = 400 ;
13159: LD_ADDR_LOC 5
13163: PUSH
13164: LD_INT 400
13166: ST_TO_ADDR
// tech1_speed = 240 ;
13167: LD_ADDR_LOC 6
13171: PUSH
13172: LD_INT 240
13174: ST_TO_ADDR
// end ;
13175: END
// export function MineBuilded ( mine ) ; var i ; begin
13176: LD_INT 0
13178: PPUSH
13179: PPUSH
// if GetBType ( mine ) <> b_siberite_mine then
13180: LD_VAR 0 1
13184: PPUSH
13185: CALL_OW 266
13189: PUSH
13190: LD_INT 30
13192: NONEQUAL
13193: IFFALSE 13197
// exit ;
13195: GO 13256
// for i = 1 to areas + 0 do
13197: LD_ADDR_VAR 0 3
13201: PUSH
13202: DOUBLE
13203: LD_INT 1
13205: DEC
13206: ST_TO_ADDR
13207: LD_LOC 2
13211: PUSH
13212: LD_INT 0
13214: PLUS
13215: PUSH
13216: FOR_TO
13217: IFFALSE 13254
// begin if IsInArea ( mine , areas [ i ] ) then
13219: LD_VAR 0 1
13223: PPUSH
13224: LD_LOC 2
13228: PUSH
13229: LD_VAR 0 3
13233: ARRAY
13234: PPUSH
13235: CALL_OW 308
13239: IFFALSE 13252
// begin SetStartClockNow ( i ) ;
13241: LD_VAR 0 3
13245: PPUSH
13246: CALL 13693 0 1
// break ;
13250: GO 13254
// end ; end ;
13252: GO 13216
13254: POP
13255: POP
// end ;
13256: LD_VAR 0 2
13260: RET
// export function MineAI ( ) ; var i , b ; begin
13261: LD_INT 0
13263: PPUSH
13264: PPUSH
13265: PPUSH
// for i = 1 to areas + 0 do
13266: LD_ADDR_VAR 0 2
13270: PUSH
13271: DOUBLE
13272: LD_INT 1
13274: DEC
13275: ST_TO_ADDR
13276: LD_LOC 2
13280: PUSH
13281: LD_INT 0
13283: PLUS
13284: PUSH
13285: FOR_TO
13286: IFFALSE 13686
// begin if FilterUnitsInArea ( areas [ i ] , [ [ f_btype , b_siberite_mine ] , [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) then
13288: LD_LOC 2
13292: PUSH
13293: LD_VAR 0 2
13297: ARRAY
13298: PPUSH
13299: LD_INT 30
13301: PUSH
13302: LD_INT 30
13304: PUSH
13305: EMPTY
13306: LIST
13307: LIST
13308: PUSH
13309: LD_INT 50
13311: PUSH
13312: EMPTY
13313: LIST
13314: PUSH
13315: LD_INT 3
13317: PUSH
13318: LD_INT 57
13320: PUSH
13321: EMPTY
13322: LIST
13323: PUSH
13324: EMPTY
13325: LIST
13326: LIST
13327: PUSH
13328: EMPTY
13329: LIST
13330: LIST
13331: LIST
13332: PPUSH
13333: CALL_OW 70
13337: IFFALSE 13680
// begin b = FilterUnitsInArea ( areas [ i ] , [ [ f_btype , b_siberite_mine ] , [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) [ 1 ] ;
13339: LD_ADDR_VAR 0 3
13343: PUSH
13344: LD_LOC 2
13348: PUSH
13349: LD_VAR 0 2
13353: ARRAY
13354: PPUSH
13355: LD_INT 30
13357: PUSH
13358: LD_INT 30
13360: PUSH
13361: EMPTY
13362: LIST
13363: LIST
13364: PUSH
13365: LD_INT 50
13367: PUSH
13368: EMPTY
13369: LIST
13370: PUSH
13371: LD_INT 3
13373: PUSH
13374: LD_INT 57
13376: PUSH
13377: EMPTY
13378: LIST
13379: PUSH
13380: EMPTY
13381: LIST
13382: LIST
13383: PUSH
13384: EMPTY
13385: LIST
13386: LIST
13387: LIST
13388: PPUSH
13389: CALL_OW 70
13393: PUSH
13394: LD_INT 1
13396: ARRAY
13397: ST_TO_ADDR
// if GetBase ( b ) <> 0 then
13398: LD_VAR 0 3
13402: PPUSH
13403: CALL_OW 274
13407: PUSH
13408: LD_INT 0
13410: NONEQUAL
13411: IFFALSE 13680
// begin if GetTech ( tech_sib1 , GetSide ( b ) ) = state_researched then
13413: LD_INT 54
13415: PPUSH
13416: LD_VAR 0 3
13420: PPUSH
13421: CALL_OW 255
13425: PPUSH
13426: CALL_OW 321
13430: PUSH
13431: LD_INT 2
13433: EQUAL
13434: IFFALSE 13559
// begin if tick > ( ticks [ i ] + tech1_speed ) then
13436: LD_OWVAR 1
13440: PUSH
13441: LD_LOC 3
13445: PUSH
13446: LD_VAR 0 2
13450: ARRAY
13451: PUSH
13452: LD_LOC 6
13456: PLUS
13457: GREATER
13458: IFFALSE 13557
// begin if GetSide ( b ) = you then
13460: LD_VAR 0 3
13464: PPUSH
13465: CALL_OW 255
13469: PUSH
13470: LD_EXP 18
13474: EQUAL
13475: IFFALSE 13493
// sibyou = sibyou + 1 else
13477: LD_ADDR_EXP 69
13481: PUSH
13482: LD_EXP 69
13486: PUSH
13487: LD_INT 1
13489: PLUS
13490: ST_TO_ADDR
13491: GO 13507
// sibam = sibam + 1 ;
13493: LD_ADDR_EXP 70
13497: PUSH
13498: LD_EXP 70
13502: PUSH
13503: LD_INT 1
13505: PLUS
13506: ST_TO_ADDR
// if sibcelkem > 0 then
13507: LD_EXP 71
13511: PUSH
13512: LD_INT 0
13514: GREATER
13515: IFFALSE 13531
// sibcelkem = sibcelkem - 1 ;
13517: LD_ADDR_EXP 71
13521: PUSH
13522: LD_EXP 71
13526: PUSH
13527: LD_INT 1
13529: MINUS
13530: ST_TO_ADDR
// SetStartClockSinceMine ( i , ticks [ i ] + tech1_speed ) ;
13531: LD_VAR 0 2
13535: PPUSH
13536: LD_LOC 3
13540: PUSH
13541: LD_VAR 0 2
13545: ARRAY
13546: PUSH
13547: LD_LOC 6
13551: PLUS
13552: PPUSH
13553: CALL 13726 0 2
// end ; end else
13557: GO 13680
// begin if tick > ( ticks [ i ] + tech0_speed ) then
13559: LD_OWVAR 1
13563: PUSH
13564: LD_LOC 3
13568: PUSH
13569: LD_VAR 0 2
13573: ARRAY
13574: PUSH
13575: LD_LOC 5
13579: PLUS
13580: GREATER
13581: IFFALSE 13680
// begin if GetSide ( b ) = you then
13583: LD_VAR 0 3
13587: PPUSH
13588: CALL_OW 255
13592: PUSH
13593: LD_EXP 18
13597: EQUAL
13598: IFFALSE 13616
// sibyou = sibyou + 1 else
13600: LD_ADDR_EXP 69
13604: PUSH
13605: LD_EXP 69
13609: PUSH
13610: LD_INT 1
13612: PLUS
13613: ST_TO_ADDR
13614: GO 13630
// sibam = sibam + 1 ;
13616: LD_ADDR_EXP 70
13620: PUSH
13621: LD_EXP 70
13625: PUSH
13626: LD_INT 1
13628: PLUS
13629: ST_TO_ADDR
// if sibcelkem > 0 then
13630: LD_EXP 71
13634: PUSH
13635: LD_INT 0
13637: GREATER
13638: IFFALSE 13654
// sibcelkem = sibcelkem - 1 ;
13640: LD_ADDR_EXP 71
13644: PUSH
13645: LD_EXP 71
13649: PUSH
13650: LD_INT 1
13652: MINUS
13653: ST_TO_ADDR
// SetStartClockSinceMine ( i , ticks [ i ] + tech0_speed ) ;
13654: LD_VAR 0 2
13658: PPUSH
13659: LD_LOC 3
13663: PUSH
13664: LD_VAR 0 2
13668: ARRAY
13669: PUSH
13670: LD_LOC 5
13674: PLUS
13675: PPUSH
13676: CALL 13726 0 2
// end ; end end ; end ; ShowStrings ;
13680: CALL 12902 0 0
// end ;
13684: GO 13285
13686: POP
13687: POP
// end ;
13688: LD_VAR 0 1
13692: RET
// function SetStartClockNow ( i ) ; begin
13693: LD_INT 0
13695: PPUSH
// ticks = Replace ( ticks , i , tick ) ;
13696: LD_ADDR_LOC 3
13700: PUSH
13701: LD_LOC 3
13705: PPUSH
13706: LD_VAR 0 1
13710: PPUSH
13711: LD_OWVAR 1
13715: PPUSH
13716: CALL_OW 1
13720: ST_TO_ADDR
// end ;
13721: LD_VAR 0 2
13725: RET
// function SetStartClockSinceMine ( i , minedTick ) ; begin
13726: LD_INT 0
13728: PPUSH
// ticks = Replace ( ticks , i , minedTick ) ;
13729: LD_ADDR_LOC 3
13733: PUSH
13734: LD_LOC 3
13738: PPUSH
13739: LD_VAR 0 1
13743: PPUSH
13744: LD_VAR 0 2
13748: PPUSH
13749: CALL_OW 1
13753: ST_TO_ADDR
// end ;
13754: LD_VAR 0 3
13758: RET
// every 0 0$0.1 trigger enable_death_losts do
13759: LD_EXP 24
13763: IFFALSE 13773
13765: GO 13767
13767: DISABLE
// begin MineAI ( ) ;
13768: CALL 13261 0 0
// enable ;
13772: ENABLE
// end ; end_of_file
13773: END
// on BuildingComplete ( building ) do begin MineBuilded ( building ) ;
13774: LD_VAR 0 1
13778: PPUSH
13779: CALL 13176 0 1
// end ;
13783: PPOPN 1
13785: END
// on BuildingCaptured ( building , side , human ) do var un ;
13786: LD_INT 0
13788: PPUSH
// begin if GetBType ( building ) = b_depot or GetBType ( building ) = b_warehouse then
13789: LD_VAR 0 1
13793: PPUSH
13794: CALL_OW 266
13798: PUSH
13799: LD_INT 0
13801: EQUAL
13802: PUSH
13803: LD_VAR 0 1
13807: PPUSH
13808: CALL_OW 266
13812: PUSH
13813: LD_INT 1
13815: EQUAL
13816: OR
13817: IFFALSE 13948
// begin if GetSide ( human ) <> amik then
13819: LD_VAR 0 3
13823: PPUSH
13824: CALL_OW 255
13828: PUSH
13829: LD_EXP 19
13833: NONEQUAL
13834: IFFALSE 13884
// begin SetResourceType ( GetBase ( building ) , mat_cans , Rand ( 0 , 80 ) ) ;
13836: LD_VAR 0 1
13840: PPUSH
13841: CALL_OW 274
13845: PPUSH
13846: LD_INT 1
13848: PPUSH
13849: LD_INT 0
13851: PPUSH
13852: LD_INT 80
13854: PPUSH
13855: CALL_OW 12
13859: PPUSH
13860: CALL_OW 277
// SetResourceType ( GetBase ( building ) , mat_siberit , 0 ) ;
13864: LD_VAR 0 1
13868: PPUSH
13869: CALL_OW 274
13873: PPUSH
13874: LD_INT 3
13876: PPUSH
13877: LD_INT 0
13879: PPUSH
13880: CALL_OW 277
// end ; if GetSide ( human ) = amik then
13884: LD_VAR 0 3
13888: PPUSH
13889: CALL_OW 255
13893: PUSH
13894: LD_EXP 19
13898: EQUAL
13899: IFFALSE 13948
// begin for un in [ followsol1 , followsol2 , followsol3 ] do
13901: LD_ADDR_VAR 0 4
13905: PUSH
13906: LD_EXP 74
13910: PUSH
13911: LD_EXP 75
13915: PUSH
13916: LD_EXP 76
13920: PUSH
13921: EMPTY
13922: LIST
13923: LIST
13924: LIST
13925: PUSH
13926: FOR_IN
13927: IFFALSE 13946
// if un then
13929: LD_VAR 0 4
13933: IFFALSE 13944
// ComStop ( un ) ;
13935: LD_VAR 0 4
13939: PPUSH
13940: CALL_OW 141
13944: GO 13926
13946: POP
13947: POP
// end ; end ; MineBuilded ( building ) ;
13948: LD_VAR 0 1
13952: PPUSH
13953: CALL 13176 0 1
// end ;
13957: PPOPN 4
13959: END
// on UnitGoesToRed ( unit ) do begin if GetType ( unit ) = unit_vehicle and GetControl ( unit ) = control_remote then
13960: LD_VAR 0 1
13964: PPUSH
13965: CALL_OW 247
13969: PUSH
13970: LD_INT 2
13972: EQUAL
13973: PUSH
13974: LD_VAR 0 1
13978: PPUSH
13979: CALL_OW 263
13983: PUSH
13984: LD_INT 2
13986: EQUAL
13987: AND
13988: IFFALSE 13999
// ComUnlink ( unit ) ;
13990: LD_VAR 0 1
13994: PPUSH
13995: 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
13999: LD_EXP 25
14003: NOT
14004: PUSH
14005: LD_VAR 0 1
14009: PPUSH
14010: CALL_OW 247
14014: PUSH
14015: LD_INT 1
14017: EQUAL
14018: AND
14019: PUSH
14020: LD_VAR 0 1
14024: PPUSH
14025: CALL_OW 255
14029: PUSH
14030: LD_EXP 19
14034: EQUAL
14035: AND
14036: PUSH
14037: LD_INT 95
14039: PUSH
14040: LD_INT 37
14042: PUSH
14043: EMPTY
14044: LIST
14045: LIST
14046: PUSH
14047: LD_INT 22
14049: PUSH
14050: LD_EXP 19
14054: PUSH
14055: EMPTY
14056: LIST
14057: LIST
14058: PUSH
14059: LD_INT 21
14061: PUSH
14062: LD_INT 1
14064: PUSH
14065: EMPTY
14066: LIST
14067: LIST
14068: PUSH
14069: LD_INT 24
14071: PUSH
14072: LD_INT 400
14074: PUSH
14075: EMPTY
14076: LIST
14077: LIST
14078: PUSH
14079: EMPTY
14080: LIST
14081: LIST
14082: LIST
14083: LIST
14084: PPUSH
14085: CALL_OW 69
14089: NOT
14090: AND
14091: IFFALSE 14120
// begin powelvyhrozoval = true ;
14093: LD_ADDR_EXP 25
14097: PUSH
14098: LD_INT 1
14100: ST_TO_ADDR
// Wait ( 0 0$7 ) ;
14101: LD_INT 245
14103: PPUSH
14104: CALL_OW 67
// SayRadio ( powel , D3powel-1 ) ;
14108: LD_EXP 16
14112: PPUSH
14113: LD_STRING D3powel-1
14115: PPUSH
14116: 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
14120: LD_EXP 26
14124: NOT
14125: PUSH
14126: LD_VAR 0 1
14130: PPUSH
14131: CALL_OW 247
14135: PUSH
14136: LD_INT 1
14138: EQUAL
14139: AND
14140: PUSH
14141: LD_VAR 0 1
14145: PPUSH
14146: CALL_OW 255
14150: PUSH
14151: LD_EXP 19
14155: EQUAL
14156: AND
14157: PUSH
14158: LD_INT 95
14160: PUSH
14161: LD_INT 33
14163: PUSH
14164: EMPTY
14165: LIST
14166: LIST
14167: PUSH
14168: LD_INT 22
14170: PUSH
14171: LD_EXP 19
14175: PUSH
14176: EMPTY
14177: LIST
14178: LIST
14179: PUSH
14180: LD_INT 21
14182: PUSH
14183: LD_INT 1
14185: PUSH
14186: EMPTY
14187: LIST
14188: LIST
14189: PUSH
14190: LD_INT 24
14192: PUSH
14193: LD_INT 400
14195: PUSH
14196: EMPTY
14197: LIST
14198: LIST
14199: PUSH
14200: EMPTY
14201: LIST
14202: LIST
14203: LIST
14204: LIST
14205: PPUSH
14206: CALL_OW 69
14210: NOT
14211: AND
14212: IFFALSE 14265
// begin powelvyhrozoval2 = true ;
14214: LD_ADDR_EXP 26
14218: PUSH
14219: LD_INT 1
14221: ST_TO_ADDR
// Wait ( 0 0$7 ) ;
14222: LD_INT 245
14224: PPUSH
14225: CALL_OW 67
// SayRadio ( powel , D3powel-2 ) ;
14229: LD_EXP 16
14233: PPUSH
14234: LD_STRING D3powel-2
14236: PPUSH
14237: CALL_OW 94
// Say ( vsevolod , D3vse-3 ) ;
14241: LD_EXP 1
14245: PPUSH
14246: LD_STRING D3vse-3
14248: PPUSH
14249: CALL_OW 88
// SayRadio ( powel , D3powel-3 ) ;
14253: LD_EXP 16
14257: PPUSH
14258: LD_STRING D3powel-3
14260: PPUSH
14261: CALL_OW 94
// end ; end ;
14265: PPOPN 1
14267: END
// on VehicleDestroyed ( vehicle , side , nation , x , y , direction , chassis , control , motor , weapon ) do begin if vehicle in amik_attack_listL then
14268: LD_VAR 0 1
14272: PUSH
14273: LD_EXP 20
14277: IN
14278: IFFALSE 14296
// amik_attack_listL = amik_attack_listL diff vehicle ;
14280: LD_ADDR_EXP 20
14284: PUSH
14285: LD_EXP 20
14289: PUSH
14290: LD_VAR 0 1
14294: DIFF
14295: ST_TO_ADDR
// if vehicle in amik_attack_listTR then
14296: LD_VAR 0 1
14300: PUSH
14301: LD_EXP 21
14305: IN
14306: IFFALSE 14324
// amik_attack_listTR = amik_attack_listTR diff vehicle ;
14308: LD_ADDR_EXP 21
14312: PUSH
14313: LD_EXP 21
14317: PUSH
14318: LD_VAR 0 1
14322: DIFF
14323: ST_TO_ADDR
// if vehicle in amik_attack_listR then
14324: LD_VAR 0 1
14328: PUSH
14329: LD_EXP 22
14333: IN
14334: IFFALSE 14352
// amik_attack_listR = amik_attack_listR diff vehicle ;
14336: LD_ADDR_EXP 22
14340: PUSH
14341: LD_EXP 22
14345: PUSH
14346: LD_VAR 0 1
14350: DIFF
14351: ST_TO_ADDR
// end ;
14352: PPOPN 10
14354: END
// on BuildingStarted ( building , unit ) do var cl1 , cl2 ;
14355: LD_INT 0
14357: PPUSH
14358: PPUSH
// begin if GetSide ( building ) = you and not zimatalk then
14359: LD_VAR 0 1
14363: PPUSH
14364: CALL_OW 255
14368: PUSH
14369: LD_EXP 18
14373: EQUAL
14374: PUSH
14375: LD_EXP 28
14379: NOT
14380: AND
14381: IFFALSE 14483
// begin zimatalk = true ;
14383: LD_ADDR_EXP 28
14387: PUSH
14388: LD_INT 1
14390: ST_TO_ADDR
// Wait ( 0 0$15 ) ;
14391: LD_INT 525
14393: PPUSH
14394: CALL_OW 67
// cl1 = NajdiVojaka ;
14398: LD_ADDR_VAR 0 3
14402: PUSH
14403: CALL 11134 0 0
14407: ST_TO_ADDR
// cl2 = NajdiDelnika ;
14408: LD_ADDR_VAR 0 4
14412: PUSH
14413: CALL 11749 0 0
14417: ST_TO_ADDR
// if GetSex ( cl1 ) = sex_male then
14418: LD_VAR 0 3
14422: PPUSH
14423: CALL_OW 258
14427: PUSH
14428: LD_INT 1
14430: EQUAL
14431: IFFALSE 14459
// begin Say ( cl1 , D3nekdo-3 ) ;
14433: LD_VAR 0 3
14437: PPUSH
14438: LD_STRING D3nekdo-3
14440: PPUSH
14441: CALL_OW 88
// Say ( cl2 , D3nekdo-4 ) ;
14445: LD_VAR 0 4
14449: PPUSH
14450: LD_STRING D3nekdo-4
14452: PPUSH
14453: CALL_OW 88
// end else
14457: GO 14483
// begin Say ( cl1 , D3nekdo-3b ) ;
14459: LD_VAR 0 3
14463: PPUSH
14464: LD_STRING D3nekdo-3b
14466: PPUSH
14467: CALL_OW 88
// Say ( cl2 , D3nekdo-4b ) ;
14471: LD_VAR 0 4
14475: PPUSH
14476: LD_STRING D3nekdo-4b
14478: PPUSH
14479: CALL_OW 88
// end ; end ; if GetSide ( building ) = you and GetBType ( building ) = b_lab and not labtalk then
14483: LD_VAR 0 1
14487: PPUSH
14488: CALL_OW 255
14492: PUSH
14493: LD_EXP 18
14497: EQUAL
14498: PUSH
14499: LD_VAR 0 1
14503: PPUSH
14504: CALL_OW 266
14508: PUSH
14509: LD_INT 6
14511: EQUAL
14512: AND
14513: PUSH
14514: LD_EXP 29
14518: NOT
14519: AND
14520: IFFALSE 14561
// begin labtalk = true ;
14522: LD_ADDR_EXP 29
14526: PUSH
14527: LD_INT 1
14529: ST_TO_ADDR
// Wait ( 0 0$5 ) ;
14530: LD_INT 175
14532: PPUSH
14533: CALL_OW 67
// Say ( vsevolod , D3vse-1 ) ;
14537: LD_EXP 1
14541: PPUSH
14542: LD_STRING D3vse-1
14544: PPUSH
14545: CALL_OW 88
// Say ( NajdiVedce , D3nekdo-5 ) ;
14549: CALL 11363 0 0
14553: PPUSH
14554: LD_STRING D3nekdo-5
14556: PPUSH
14557: CALL_OW 88
// end ; end ; end_of_file
14561: PPOPN 4
14563: END
// every 0 0$3 do
14564: GO 14566
14566: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14567: LD_EXP 45
14571: PUSH
14572: LD_INT 1
14574: ARRAY
14575: PPUSH
14576: LD_EXP 45
14580: PUSH
14581: LD_INT 2
14583: ARRAY
14584: PPUSH
14585: CALL_OW 12
14589: PPUSH
14590: CALL_OW 67
// if GetResourceArea ( Bedny1 , mat_cans ) < 10 then
14594: LD_INT 15
14596: PPUSH
14597: LD_INT 1
14599: PPUSH
14600: CALL_OW 287
14604: PUSH
14605: LD_INT 10
14607: LESS
14608: IFFALSE 14643
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny1 , true ) ;
14610: LD_EXP 46
14614: PUSH
14615: LD_INT 1
14617: ARRAY
14618: PPUSH
14619: LD_EXP 46
14623: PUSH
14624: LD_INT 2
14626: ARRAY
14627: PPUSH
14628: CALL_OW 12
14632: PPUSH
14633: LD_INT 15
14635: PPUSH
14636: LD_INT 1
14638: PPUSH
14639: CALL 12038 0 3
// enable ;
14643: ENABLE
// end ;
14644: END
// every 0 0$3 do
14645: GO 14647
14647: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14648: LD_EXP 45
14652: PUSH
14653: LD_INT 1
14655: ARRAY
14656: PPUSH
14657: LD_EXP 45
14661: PUSH
14662: LD_INT 2
14664: ARRAY
14665: PPUSH
14666: CALL_OW 12
14670: PPUSH
14671: CALL_OW 67
// if GetResourceArea ( Bedny2 , mat_cans ) < 10 then
14675: LD_INT 16
14677: PPUSH
14678: LD_INT 1
14680: PPUSH
14681: CALL_OW 287
14685: PUSH
14686: LD_INT 10
14688: LESS
14689: IFFALSE 14724
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny2 , true ) ;
14691: LD_EXP 46
14695: PUSH
14696: LD_INT 1
14698: ARRAY
14699: PPUSH
14700: LD_EXP 46
14704: PUSH
14705: LD_INT 2
14707: ARRAY
14708: PPUSH
14709: CALL_OW 12
14713: PPUSH
14714: LD_INT 16
14716: PPUSH
14717: LD_INT 1
14719: PPUSH
14720: CALL 12038 0 3
// enable ;
14724: ENABLE
// end ;
14725: END
// every 0 0$3 do
14726: GO 14728
14728: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14729: LD_EXP 45
14733: PUSH
14734: LD_INT 1
14736: ARRAY
14737: PPUSH
14738: LD_EXP 45
14742: PUSH
14743: LD_INT 2
14745: ARRAY
14746: PPUSH
14747: CALL_OW 12
14751: PPUSH
14752: CALL_OW 67
// if GetResourceArea ( Bedny3 , mat_cans ) < 10 then
14756: LD_INT 17
14758: PPUSH
14759: LD_INT 1
14761: PPUSH
14762: CALL_OW 287
14766: PUSH
14767: LD_INT 10
14769: LESS
14770: IFFALSE 14805
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny3 , true ) ;
14772: LD_EXP 46
14776: PUSH
14777: LD_INT 1
14779: ARRAY
14780: PPUSH
14781: LD_EXP 46
14785: PUSH
14786: LD_INT 2
14788: ARRAY
14789: PPUSH
14790: CALL_OW 12
14794: PPUSH
14795: LD_INT 17
14797: PPUSH
14798: LD_INT 1
14800: PPUSH
14801: CALL 12038 0 3
// enable ;
14805: ENABLE
// end ;
14806: END
// every 0 0$3 do
14807: GO 14809
14809: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14810: LD_EXP 45
14814: PUSH
14815: LD_INT 1
14817: ARRAY
14818: PPUSH
14819: LD_EXP 45
14823: PUSH
14824: LD_INT 2
14826: ARRAY
14827: PPUSH
14828: CALL_OW 12
14832: PPUSH
14833: CALL_OW 67
// if GetResourceArea ( Bedny4 , mat_cans ) < 10 then
14837: LD_INT 18
14839: PPUSH
14840: LD_INT 1
14842: PPUSH
14843: CALL_OW 287
14847: PUSH
14848: LD_INT 10
14850: LESS
14851: IFFALSE 14886
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny4 , true ) ;
14853: LD_EXP 46
14857: PUSH
14858: LD_INT 1
14860: ARRAY
14861: PPUSH
14862: LD_EXP 46
14866: PUSH
14867: LD_INT 2
14869: ARRAY
14870: PPUSH
14871: CALL_OW 12
14875: PPUSH
14876: LD_INT 18
14878: PPUSH
14879: LD_INT 1
14881: PPUSH
14882: CALL 12038 0 3
// enable ;
14886: ENABLE
// end ;
14887: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) do var x , y ;
14888: LD_INT 22
14890: PUSH
14891: LD_EXP 18
14895: PUSH
14896: EMPTY
14897: LIST
14898: LIST
14899: PUSH
14900: LD_INT 21
14902: PUSH
14903: LD_INT 3
14905: PUSH
14906: EMPTY
14907: LIST
14908: LIST
14909: PUSH
14910: LD_INT 57
14912: PUSH
14913: EMPTY
14914: LIST
14915: PUSH
14916: EMPTY
14917: LIST
14918: LIST
14919: LIST
14920: PPUSH
14921: CALL_OW 69
14925: IFFALSE 15076
14927: GO 14929
14929: DISABLE
14930: LD_INT 0
14932: PPUSH
14933: PPUSH
// begin x = GetX ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
14934: LD_ADDR_VAR 0 1
14938: PUSH
14939: LD_INT 22
14941: PUSH
14942: LD_EXP 18
14946: PUSH
14947: EMPTY
14948: LIST
14949: LIST
14950: PUSH
14951: LD_INT 21
14953: PUSH
14954: LD_INT 3
14956: PUSH
14957: EMPTY
14958: LIST
14959: LIST
14960: PUSH
14961: LD_INT 57
14963: PUSH
14964: EMPTY
14965: LIST
14966: PUSH
14967: EMPTY
14968: LIST
14969: LIST
14970: LIST
14971: PPUSH
14972: CALL_OW 69
14976: PUSH
14977: LD_INT 1
14979: ARRAY
14980: PPUSH
14981: CALL_OW 250
14985: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
14986: LD_ADDR_VAR 0 2
14990: PUSH
14991: LD_INT 22
14993: PUSH
14994: LD_EXP 18
14998: PUSH
14999: EMPTY
15000: LIST
15001: LIST
15002: PUSH
15003: LD_INT 21
15005: PUSH
15006: LD_INT 3
15008: PUSH
15009: EMPTY
15010: LIST
15011: LIST
15012: PUSH
15013: LD_INT 57
15015: PUSH
15016: EMPTY
15017: LIST
15018: PUSH
15019: EMPTY
15020: LIST
15021: LIST
15022: LIST
15023: PPUSH
15024: CALL_OW 69
15028: PUSH
15029: LD_INT 1
15031: ARRAY
15032: PPUSH
15033: CALL_OW 251
15037: ST_TO_ADDR
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15038: LD_INT 700
15040: PPUSH
15041: LD_INT 1400
15043: PPUSH
15044: CALL_OW 12
15048: PPUSH
15049: CALL_OW 67
// CreateCratesXYR ( 4 , x , y , 9 , true ) ;
15053: LD_INT 4
15055: PPUSH
15056: LD_VAR 0 1
15060: PPUSH
15061: LD_VAR 0 2
15065: PPUSH
15066: LD_INT 9
15068: PPUSH
15069: LD_INT 1
15071: PPUSH
15072: CALL_OW 56
// end ; end_of_file
15076: PPOPN 2
15078: END
// every 0 0$1 do var nakl , bedny ;
15079: GO 15081
15081: DISABLE
15082: LD_INT 0
15084: PPUSH
15085: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
15086: LD_ADDR_VAR 0 1
15090: PUSH
15091: LD_INT 22
15093: PUSH
15094: LD_EXP 19
15098: PUSH
15099: EMPTY
15100: LIST
15101: LIST
15102: PUSH
15103: LD_INT 21
15105: PUSH
15106: LD_INT 2
15108: PUSH
15109: EMPTY
15110: LIST
15111: LIST
15112: PUSH
15113: LD_INT 34
15115: PUSH
15116: LD_INT 12
15118: PUSH
15119: EMPTY
15120: LIST
15121: LIST
15122: PUSH
15123: EMPTY
15124: LIST
15125: LIST
15126: LIST
15127: PPUSH
15128: CALL_OW 69
15132: ST_TO_ADDR
// if nakl then
15133: LD_VAR 0 1
15137: IFFALSE 15237
// begin nakl = nakl [ 1 ] ;
15139: LD_ADDR_VAR 0 1
15143: PUSH
15144: LD_VAR 0 1
15148: PUSH
15149: LD_INT 1
15151: ARRAY
15152: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
15153: LD_VAR 0 1
15157: PPUSH
15158: CALL_OW 256
15162: PUSH
15163: LD_EXP 42
15167: LESS
15168: IFFALSE 15191
// begin ComMoveToArea ( nakl , LevaRepair ) ;
15170: LD_VAR 0 1
15174: PPUSH
15175: LD_INT 25
15177: PPUSH
15178: CALL_OW 113
// Wait ( 2 2$20 ) ;
15182: LD_INT 4900
15184: PPUSH
15185: CALL_OW 67
// end else
15189: GO 15237
// begin bedny = GetListOfCratesInArea ( SbiraniBeden ) ;
15191: LD_ADDR_VAR 0 2
15195: PUSH
15196: LD_INT 42
15198: PPUSH
15199: CALL_OW 435
15203: ST_TO_ADDR
// if bedny then
15204: LD_VAR 0 2
15208: IFFALSE 15237
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
15210: LD_VAR 0 1
15214: PPUSH
15215: LD_VAR 0 2
15219: PUSH
15220: LD_INT 1
15222: ARRAY
15223: PPUSH
15224: LD_VAR 0 2
15228: PUSH
15229: LD_INT 2
15231: ARRAY
15232: PPUSH
15233: CALL_OW 117
// end ; end ; enable ;
15237: ENABLE
// end ;
15238: PPOPN 2
15240: END
// export Tech_list_Amik ; every 0 0$2 trigger tick > dif_research_wait and tech_list_amik + 0 >= 1 do var i ;
15241: LD_OWVAR 1
15245: PUSH
15246: LD_EXP 62
15250: GREATER
15251: PUSH
15252: LD_EXP 72
15256: PUSH
15257: LD_INT 0
15259: PLUS
15260: PUSH
15261: LD_INT 1
15263: GREATEREQUAL
15264: AND
15265: IFFALSE 15463
15267: GO 15269
15269: DISABLE
15270: LD_INT 0
15272: PPUSH
// begin for i in [ amlabak , amlabak2 , amlabak3 , amlabak4 ] do
15273: LD_ADDR_VAR 0 1
15277: PUSH
15278: LD_INT 79
15280: PUSH
15281: LD_INT 80
15283: PUSH
15284: LD_INT 81
15286: PUSH
15287: LD_INT 82
15289: PUSH
15290: EMPTY
15291: LIST
15292: LIST
15293: LIST
15294: LIST
15295: PUSH
15296: FOR_IN
15297: IFFALSE 15460
// begin if ( GetActResearch ( i ) and GetSide ( i ) = amik ) or ( not IsOk ( i ) and GetSide ( i ) = amik ) then
15299: LD_VAR 0 1
15303: PPUSH
15304: CALL_OW 485
15308: PUSH
15309: LD_VAR 0 1
15313: PPUSH
15314: CALL_OW 255
15318: PUSH
15319: LD_EXP 19
15323: EQUAL
15324: AND
15325: PUSH
15326: LD_VAR 0 1
15330: PPUSH
15331: CALL_OW 302
15335: NOT
15336: PUSH
15337: LD_VAR 0 1
15341: PPUSH
15342: CALL_OW 255
15346: PUSH
15347: LD_EXP 19
15351: EQUAL
15352: AND
15353: OR
15354: IFFALSE 15358
// break ;
15356: GO 15460
// 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
15358: LD_VAR 0 1
15362: PPUSH
15363: CALL_OW 302
15367: PUSH
15368: LD_VAR 0 1
15372: PPUSH
15373: CALL_OW 255
15377: PUSH
15378: LD_EXP 19
15382: EQUAL
15383: AND
15384: PUSH
15385: LD_VAR 0 1
15389: PPUSH
15390: CALL_OW 313
15394: AND
15395: PUSH
15396: LD_VAR 0 1
15400: PPUSH
15401: CALL_OW 485
15405: NOT
15406: AND
15407: PUSH
15408: LD_VAR 0 1
15412: PPUSH
15413: CALL_OW 274
15417: PUSH
15418: LD_INT 0
15420: NONEQUAL
15421: AND
15422: PUSH
15423: LD_VAR 0 1
15427: PPUSH
15428: LD_EXP 72
15432: PUSH
15433: LD_INT 1
15435: ARRAY
15436: PPUSH
15437: CALL_OW 430
15441: AND
15442: IFFALSE 15458
// begin Zkoumej ( 1 , i ) ;
15444: LD_INT 1
15446: PPUSH
15447: LD_VAR 0 1
15451: PPUSH
15452: CALL 15466 0 2
// break ;
15456: GO 15460
// end ; end ;
15458: GO 15296
15460: POP
15461: POP
// enable ;
15462: ENABLE
// end ;
15463: PPOPN 1
15465: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
15466: LD_INT 0
15468: PPUSH
// if Tech_list_Amik + 0 >= 1 then
15469: LD_EXP 72
15473: PUSH
15474: LD_INT 0
15476: PLUS
15477: PUSH
15478: LD_INT 1
15480: GREATEREQUAL
15481: IFFALSE 15521
// if Researched ( amik , Tech_list_Amik [ 1 ] ) then
15483: LD_EXP 19
15487: PPUSH
15488: LD_EXP 72
15492: PUSH
15493: LD_INT 1
15495: ARRAY
15496: PPUSH
15497: CALL_OW 325
15501: IFFALSE 15521
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
15503: LD_ADDR_EXP 72
15507: PUSH
15508: LD_EXP 72
15512: PPUSH
15513: LD_INT 1
15515: PPUSH
15516: CALL_OW 3
15520: ST_TO_ADDR
// if Tech_list_Amik and not GetActResearch ( laborator ) then
15521: LD_EXP 72
15525: PUSH
15526: LD_VAR 0 2
15530: PPUSH
15531: CALL_OW 485
15535: NOT
15536: AND
15537: IFFALSE 15557
// ComResearch ( laborator , Tech_list_Amik [ 1 ] ) ;
15539: LD_VAR 0 2
15543: PPUSH
15544: LD_EXP 72
15548: PUSH
15549: LD_INT 1
15551: ARRAY
15552: PPUSH
15553: CALL_OW 124
// end ;
15557: LD_VAR 0 3
15561: RET
// every 0 0$1 trigger tech_list_amik + 0 >= 1 do
15562: LD_EXP 72
15566: PUSH
15567: LD_INT 0
15569: PLUS
15570: PUSH
15571: LD_INT 1
15573: GREATEREQUAL
15574: IFFALSE 15618
15576: GO 15578
15578: DISABLE
// begin if Researched ( amik , Tech_list_Amik [ 1 ] ) then
15579: LD_EXP 19
15583: PPUSH
15584: LD_EXP 72
15588: PUSH
15589: LD_INT 1
15591: ARRAY
15592: PPUSH
15593: CALL_OW 325
15597: IFFALSE 15617
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
15599: LD_ADDR_EXP 72
15603: PUSH
15604: LD_EXP 72
15608: PPUSH
15609: LD_INT 1
15611: PPUSH
15612: CALL_OW 3
15616: ST_TO_ADDR
// enable ;
15617: ENABLE
// end ;
15618: END
// function LinkVehicle ( Veh ) ; begin
15619: LD_INT 0
15621: PPUSH
// ComLinkTo ( Veh , NajdiNejmeneObsazenehoMecha ( UnitsInside ( am_vez1 ) ^ UnitsInside ( am_vez2 ) ) ) ;
15622: LD_VAR 0 1
15626: PPUSH
15627: LD_INT 83
15629: PPUSH
15630: CALL_OW 313
15634: PUSH
15635: LD_INT 84
15637: PPUSH
15638: CALL_OW 313
15642: ADD
15643: PPUSH
15644: CALL 15658 0 1
15648: PPUSH
15649: CALL_OW 135
// end ;
15653: LD_VAR 0 2
15657: RET
// export function NajdiNejmeneObsazenehoMecha ( list ) ; var un , i ; begin
15658: LD_INT 0
15660: PPUSH
15661: PPUSH
15662: PPUSH
// if not list then
15663: LD_VAR 0 1
15667: NOT
15668: IFFALSE 15680
// result = false else
15670: LD_ADDR_VAR 0 2
15674: PUSH
15675: LD_INT 0
15677: ST_TO_ADDR
15678: GO 15753
// begin un = list [ 1 ] ;
15680: LD_ADDR_VAR 0 3
15684: PUSH
15685: LD_VAR 0 1
15689: PUSH
15690: LD_INT 1
15692: ARRAY
15693: ST_TO_ADDR
// for i in list do
15694: LD_ADDR_VAR 0 4
15698: PUSH
15699: LD_VAR 0 1
15703: PUSH
15704: FOR_IN
15705: IFFALSE 15741
// if UnitsLinked ( i ) < UnitsLinked ( un ) then
15707: LD_VAR 0 4
15711: PPUSH
15712: CALL_OW 432
15716: PUSH
15717: LD_VAR 0 3
15721: PPUSH
15722: CALL_OW 432
15726: LESS
15727: IFFALSE 15739
// un = i ;
15729: LD_ADDR_VAR 0 3
15733: PUSH
15734: LD_VAR 0 4
15738: ST_TO_ADDR
15739: GO 15704
15741: POP
15742: POP
// result = un ;
15743: LD_ADDR_VAR 0 2
15747: PUSH
15748: LD_VAR 0 3
15752: ST_TO_ADDR
// end ; end ;
15753: LD_VAR 0 2
15757: RET
// every 0 0$0.8 trigger FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) do
15758: LD_INT 22
15760: PUSH
15761: LD_EXP 19
15765: PUSH
15766: EMPTY
15767: LIST
15768: LIST
15769: PUSH
15770: LD_INT 21
15772: PUSH
15773: LD_INT 2
15775: PUSH
15776: EMPTY
15777: LIST
15778: LIST
15779: PUSH
15780: LD_INT 3
15782: PUSH
15783: LD_INT 61
15785: PUSH
15786: EMPTY
15787: LIST
15788: PUSH
15789: EMPTY
15790: LIST
15791: LIST
15792: PUSH
15793: LD_INT 50
15795: PUSH
15796: EMPTY
15797: LIST
15798: PUSH
15799: EMPTY
15800: LIST
15801: LIST
15802: LIST
15803: LIST
15804: PPUSH
15805: CALL_OW 69
15809: IFFALSE 15875
15811: GO 15813
15813: DISABLE
// begin LinkVehicle ( FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) [ 1 ] ) ;
15814: LD_INT 22
15816: PUSH
15817: LD_EXP 19
15821: PUSH
15822: EMPTY
15823: LIST
15824: LIST
15825: PUSH
15826: LD_INT 21
15828: PUSH
15829: LD_INT 2
15831: PUSH
15832: EMPTY
15833: LIST
15834: LIST
15835: PUSH
15836: LD_INT 3
15838: PUSH
15839: LD_INT 61
15841: PUSH
15842: EMPTY
15843: LIST
15844: PUSH
15845: EMPTY
15846: LIST
15847: LIST
15848: PUSH
15849: LD_INT 50
15851: PUSH
15852: EMPTY
15853: LIST
15854: PUSH
15855: EMPTY
15856: LIST
15857: LIST
15858: LIST
15859: LIST
15860: PPUSH
15861: CALL_OW 69
15865: PUSH
15866: LD_INT 1
15868: ARRAY
15869: PPUSH
15870: CALL 15619 0 1
// enable ;
15874: ENABLE
// end ;
15875: END
// every 0 0$1 do var lidi , un ;
15876: GO 15878
15878: DISABLE
15879: LD_INT 0
15881: PPUSH
15882: 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 ;
15883: LD_ADDR_VAR 0 1
15887: PUSH
15888: LD_INT 22
15890: PUSH
15891: LD_EXP 19
15895: PUSH
15896: EMPTY
15897: LIST
15898: LIST
15899: PUSH
15900: LD_INT 21
15902: PUSH
15903: LD_INT 1
15905: PUSH
15906: EMPTY
15907: LIST
15908: LIST
15909: PUSH
15910: LD_INT 3
15912: PUSH
15913: LD_INT 95
15915: PUSH
15916: LD_INT 32
15918: PUSH
15919: EMPTY
15920: LIST
15921: LIST
15922: PUSH
15923: EMPTY
15924: LIST
15925: LIST
15926: PUSH
15927: LD_INT 3
15929: PUSH
15930: LD_INT 95
15932: PUSH
15933: LD_INT 34
15935: PUSH
15936: EMPTY
15937: LIST
15938: LIST
15939: PUSH
15940: EMPTY
15941: LIST
15942: LIST
15943: PUSH
15944: LD_INT 3
15946: PUSH
15947: LD_INT 95
15949: PUSH
15950: LD_INT 36
15952: PUSH
15953: EMPTY
15954: LIST
15955: LIST
15956: PUSH
15957: EMPTY
15958: LIST
15959: LIST
15960: PUSH
15961: LD_INT 3
15963: PUSH
15964: LD_INT 95
15966: PUSH
15967: LD_INT 38
15969: PUSH
15970: EMPTY
15971: LIST
15972: LIST
15973: PUSH
15974: EMPTY
15975: LIST
15976: LIST
15977: PUSH
15978: EMPTY
15979: LIST
15980: LIST
15981: LIST
15982: LIST
15983: LIST
15984: LIST
15985: PPUSH
15986: CALL_OW 69
15990: PUSH
15991: LD_EXP 73
15995: DIFF
15996: PUSH
15997: LD_EXP 74
16001: DIFF
16002: PUSH
16003: LD_EXP 75
16007: DIFF
16008: PUSH
16009: LD_EXP 76
16013: DIFF
16014: ST_TO_ADDR
// if lidi then
16015: LD_VAR 0 1
16019: IFFALSE 16057
// for un in lidi do
16021: LD_ADDR_VAR 0 2
16025: PUSH
16026: LD_VAR 0 1
16030: PUSH
16031: FOR_IN
16032: IFFALSE 16055
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) ;
16034: LD_VAR 0 2
16038: PPUSH
16039: LD_VAR 0 2
16043: PPUSH
16044: CALL 9999 0 1
16048: PPUSH
16049: CALL_OW 113
16053: GO 16031
16055: POP
16056: POP
// enable ;
16057: ENABLE
// end ; end_of_file
16058: PPOPN 2
16060: END
// every 0 0$1 trigger enable_death_losts do
16061: LD_EXP 24
16065: IFFALSE 16104
16067: GO 16069
16069: DISABLE
// begin if sibcelkem <= 0 then
16070: LD_EXP 71
16074: PUSH
16075: LD_INT 0
16077: LESSEQUAL
16078: IFFALSE 16103
// begin if sibyou >= 750 then
16080: LD_EXP 69
16084: PUSH
16085: LD_INT 750
16087: GREATEREQUAL
16088: IFFALSE 16096
// KonecMise else
16090: CALL 1132 0 0
16094: GO 16103
// YouLost ( amvytezili ) ;
16096: LD_STRING amvytezili
16098: PPUSH
16099: CALL_OW 104
// end ; enable ;
16103: ENABLE
// end ; end_of_file
16104: END
// export obsazovac , followsol1 , followsol2 , followsol3 ; every 0 0$2 do var bud , list ;
16105: GO 16107
16107: DISABLE
16108: LD_INT 0
16110: PPUSH
16111: PPUSH
// begin if IsPlaced ( obsazovac ) and IsOk ( obsazovac ) then
16112: LD_EXP 73
16116: PPUSH
16117: CALL_OW 305
16121: PUSH
16122: LD_EXP 73
16126: PPUSH
16127: CALL_OW 302
16131: AND
16132: IFFALSE 16648
// begin if IsInArea ( obsazovac , PravaPredTov ) then
16134: LD_EXP 73
16138: PPUSH
16139: LD_INT 46
16141: PPUSH
16142: CALL_OW 308
16146: IFFALSE 16165
// ComMoveXY ( obsazovac , 148 , 72 ) else
16148: LD_EXP 73
16152: PPUSH
16153: LD_INT 148
16155: PPUSH
16156: LD_INT 72
16158: PPUSH
16159: CALL_OW 111
16163: GO 16648
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_or , [ f_side , you ] , [ f_side , amik ] ] , [ f_type , unit_building ] ] ) then
16165: LD_INT 44
16167: PPUSH
16168: LD_INT 2
16170: PUSH
16171: LD_INT 22
16173: PUSH
16174: LD_EXP 18
16178: PUSH
16179: EMPTY
16180: LIST
16181: LIST
16182: PUSH
16183: LD_INT 22
16185: PUSH
16186: LD_EXP 19
16190: PUSH
16191: EMPTY
16192: LIST
16193: LIST
16194: PUSH
16195: EMPTY
16196: LIST
16197: LIST
16198: LIST
16199: PUSH
16200: LD_INT 21
16202: PUSH
16203: LD_INT 3
16205: PUSH
16206: EMPTY
16207: LIST
16208: LIST
16209: PUSH
16210: EMPTY
16211: LIST
16212: LIST
16213: PPUSH
16214: CALL_OW 70
16218: IFFALSE 16648
// begin if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_empty ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
16220: LD_INT 44
16222: PPUSH
16223: LD_INT 22
16225: PUSH
16226: LD_EXP 18
16230: PUSH
16231: EMPTY
16232: LIST
16233: LIST
16234: PUSH
16235: LD_INT 58
16237: PUSH
16238: EMPTY
16239: LIST
16240: PUSH
16241: LD_INT 2
16243: PUSH
16244: LD_INT 30
16246: PUSH
16247: LD_INT 0
16249: PUSH
16250: EMPTY
16251: LIST
16252: LIST
16253: PUSH
16254: LD_INT 30
16256: PUSH
16257: LD_INT 1
16259: PUSH
16260: EMPTY
16261: LIST
16262: LIST
16263: PUSH
16264: EMPTY
16265: LIST
16266: LIST
16267: LIST
16268: PUSH
16269: EMPTY
16270: LIST
16271: LIST
16272: LIST
16273: PPUSH
16274: CALL_OW 70
16278: IFFALSE 16354
// ComEnterUnit ( obsazovac , FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_empty ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) [ 1 ] ) else
16280: LD_EXP 73
16284: PPUSH
16285: LD_INT 44
16287: PPUSH
16288: LD_INT 22
16290: PUSH
16291: LD_EXP 18
16295: PUSH
16296: EMPTY
16297: LIST
16298: LIST
16299: PUSH
16300: LD_INT 58
16302: PUSH
16303: EMPTY
16304: LIST
16305: PUSH
16306: LD_INT 2
16308: PUSH
16309: LD_INT 30
16311: PUSH
16312: LD_INT 0
16314: PUSH
16315: EMPTY
16316: LIST
16317: LIST
16318: PUSH
16319: LD_INT 30
16321: PUSH
16322: LD_INT 1
16324: PUSH
16325: EMPTY
16326: LIST
16327: LIST
16328: PUSH
16329: EMPTY
16330: LIST
16331: LIST
16332: LIST
16333: PUSH
16334: EMPTY
16335: LIST
16336: LIST
16337: LIST
16338: PPUSH
16339: CALL_OW 70
16343: PUSH
16344: LD_INT 1
16346: ARRAY
16347: PPUSH
16348: CALL_OW 120
16352: GO 16648
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_not , [ f_occupied ] ] , [ f_type , unit_building ] ] ) then
16354: LD_INT 44
16356: PPUSH
16357: LD_INT 22
16359: PUSH
16360: LD_EXP 18
16364: PUSH
16365: EMPTY
16366: LIST
16367: LIST
16368: PUSH
16369: LD_INT 3
16371: PUSH
16372: LD_INT 59
16374: PUSH
16375: EMPTY
16376: LIST
16377: PUSH
16378: EMPTY
16379: LIST
16380: LIST
16381: PUSH
16382: LD_INT 21
16384: PUSH
16385: LD_INT 3
16387: PUSH
16388: EMPTY
16389: LIST
16390: LIST
16391: PUSH
16392: EMPTY
16393: LIST
16394: LIST
16395: LIST
16396: PPUSH
16397: CALL_OW 70
16401: IFFALSE 16530
// begin list = FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , you ] , [ f_not , [ f_occupied ] ] , [ f_type , unit_building ] ] ) ;
16403: LD_ADDR_VAR 0 2
16407: PUSH
16408: LD_INT 44
16410: PPUSH
16411: LD_INT 22
16413: PUSH
16414: LD_EXP 18
16418: PUSH
16419: EMPTY
16420: LIST
16421: LIST
16422: PUSH
16423: LD_INT 3
16425: PUSH
16426: LD_INT 59
16428: PUSH
16429: EMPTY
16430: LIST
16431: PUSH
16432: EMPTY
16433: LIST
16434: LIST
16435: PUSH
16436: LD_INT 21
16438: PUSH
16439: LD_INT 3
16441: PUSH
16442: EMPTY
16443: LIST
16444: LIST
16445: PUSH
16446: EMPTY
16447: LIST
16448: LIST
16449: LIST
16450: PPUSH
16451: CALL_OW 70
16455: ST_TO_ADDR
// bud = list [ 1 ] ;
16456: LD_ADDR_VAR 0 1
16460: PUSH
16461: LD_VAR 0 2
16465: PUSH
16466: LD_INT 1
16468: ARRAY
16469: ST_TO_ADDR
// SetTaskList ( obsazovac , [ [ e , GetX ( bud ) , GetY ( bud ) , bud , 0 , 0 , 0 ] ] ) ;
16470: LD_EXP 73
16474: PPUSH
16475: LD_STRING e
16477: PUSH
16478: LD_VAR 0 1
16482: PPUSH
16483: CALL_OW 250
16487: PUSH
16488: LD_VAR 0 1
16492: PPUSH
16493: CALL_OW 251
16497: PUSH
16498: LD_VAR 0 1
16502: PUSH
16503: LD_INT 0
16505: PUSH
16506: LD_INT 0
16508: PUSH
16509: LD_INT 0
16511: PUSH
16512: EMPTY
16513: LIST
16514: LIST
16515: LIST
16516: LIST
16517: LIST
16518: LIST
16519: LIST
16520: PUSH
16521: EMPTY
16522: LIST
16523: PPUSH
16524: CALL_OW 446
// end else
16528: GO 16648
// if FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
16530: LD_INT 44
16532: PPUSH
16533: LD_INT 22
16535: PUSH
16536: LD_EXP 19
16540: PUSH
16541: EMPTY
16542: LIST
16543: LIST
16544: PUSH
16545: LD_INT 2
16547: PUSH
16548: LD_INT 30
16550: PUSH
16551: LD_INT 0
16553: PUSH
16554: EMPTY
16555: LIST
16556: LIST
16557: PUSH
16558: LD_INT 30
16560: PUSH
16561: LD_INT 1
16563: PUSH
16564: EMPTY
16565: LIST
16566: LIST
16567: PUSH
16568: EMPTY
16569: LIST
16570: LIST
16571: LIST
16572: PUSH
16573: EMPTY
16574: LIST
16575: LIST
16576: PPUSH
16577: CALL_OW 70
16581: IFFALSE 16648
// ComEnterUnit ( obsazovac , FilterUnitsInArea ( DolniLoziskoArea , [ [ f_side , amik ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) [ 1 ] ) ;
16583: LD_EXP 73
16587: PPUSH
16588: LD_INT 44
16590: PPUSH
16591: LD_INT 22
16593: PUSH
16594: LD_EXP 19
16598: PUSH
16599: EMPTY
16600: LIST
16601: LIST
16602: PUSH
16603: LD_INT 2
16605: PUSH
16606: LD_INT 30
16608: PUSH
16609: LD_INT 0
16611: PUSH
16612: EMPTY
16613: LIST
16614: LIST
16615: PUSH
16616: LD_INT 30
16618: PUSH
16619: LD_INT 1
16621: PUSH
16622: EMPTY
16623: LIST
16624: LIST
16625: PUSH
16626: EMPTY
16627: LIST
16628: LIST
16629: LIST
16630: PUSH
16631: EMPTY
16632: LIST
16633: LIST
16634: PPUSH
16635: CALL_OW 70
16639: PUSH
16640: LD_INT 1
16642: ARRAY
16643: PPUSH
16644: CALL_OW 120
// end ; end ; enable ;
16648: ENABLE
// end ;
16649: PPOPN 2
16651: END
// every 0 0$2 do var un ;
16652: GO 16654
16654: DISABLE
16655: LD_INT 0
16657: PPUSH
// begin for un in [ followsol1 , followsol2 , followsol3 ] do
16658: LD_ADDR_VAR 0 1
16662: PUSH
16663: LD_EXP 74
16667: PUSH
16668: LD_EXP 75
16672: PUSH
16673: LD_EXP 76
16677: PUSH
16678: EMPTY
16679: LIST
16680: LIST
16681: LIST
16682: PUSH
16683: FOR_IN
16684: IFFALSE 16898
// begin if IsPlaced ( un ) and IsOk ( un ) and not IsInUnit ( un ) then
16686: LD_VAR 0 1
16690: PPUSH
16691: CALL_OW 305
16695: PUSH
16696: LD_VAR 0 1
16700: PPUSH
16701: CALL_OW 302
16705: AND
16706: PUSH
16707: LD_VAR 0 1
16711: PPUSH
16712: CALL_OW 310
16716: NOT
16717: AND
16718: IFFALSE 16896
// 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
16720: LD_INT 44
16722: PPUSH
16723: LD_INT 22
16725: PUSH
16726: LD_EXP 19
16730: PUSH
16731: EMPTY
16732: LIST
16733: LIST
16734: PUSH
16735: LD_INT 58
16737: PUSH
16738: EMPTY
16739: LIST
16740: PUSH
16741: LD_INT 2
16743: PUSH
16744: LD_INT 30
16746: PUSH
16747: LD_INT 4
16749: PUSH
16750: EMPTY
16751: LIST
16752: LIST
16753: PUSH
16754: LD_INT 30
16756: PUSH
16757: LD_INT 5
16759: PUSH
16760: EMPTY
16761: LIST
16762: LIST
16763: PUSH
16764: LD_INT 30
16766: PUSH
16767: LD_INT 31
16769: PUSH
16770: EMPTY
16771: LIST
16772: LIST
16773: PUSH
16774: LD_INT 30
16776: PUSH
16777: LD_INT 32
16779: PUSH
16780: EMPTY
16781: LIST
16782: LIST
16783: PUSH
16784: EMPTY
16785: LIST
16786: LIST
16787: LIST
16788: LIST
16789: LIST
16790: PUSH
16791: EMPTY
16792: LIST
16793: LIST
16794: LIST
16795: PPUSH
16796: CALL_OW 70
16800: IFFALSE 16896
// 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 ] ) ;
16802: LD_VAR 0 1
16806: PPUSH
16807: LD_INT 44
16809: PPUSH
16810: LD_INT 22
16812: PUSH
16813: LD_EXP 19
16817: PUSH
16818: EMPTY
16819: LIST
16820: LIST
16821: PUSH
16822: LD_INT 58
16824: PUSH
16825: EMPTY
16826: LIST
16827: PUSH
16828: LD_INT 2
16830: PUSH
16831: LD_INT 30
16833: PUSH
16834: LD_INT 4
16836: PUSH
16837: EMPTY
16838: LIST
16839: LIST
16840: PUSH
16841: LD_INT 30
16843: PUSH
16844: LD_INT 5
16846: PUSH
16847: EMPTY
16848: LIST
16849: LIST
16850: PUSH
16851: LD_INT 30
16853: PUSH
16854: LD_INT 31
16856: PUSH
16857: EMPTY
16858: LIST
16859: LIST
16860: PUSH
16861: LD_INT 30
16863: PUSH
16864: LD_INT 32
16866: PUSH
16867: EMPTY
16868: LIST
16869: LIST
16870: PUSH
16871: EMPTY
16872: LIST
16873: LIST
16874: LIST
16875: LIST
16876: LIST
16877: PUSH
16878: EMPTY
16879: LIST
16880: LIST
16881: LIST
16882: PPUSH
16883: CALL_OW 70
16887: PUSH
16888: LD_INT 1
16890: ARRAY
16891: PPUSH
16892: CALL_OW 120
// end ; end ;
16896: GO 16683
16898: POP
16899: POP
// enable ;
16900: ENABLE
// end ;
16901: PPOPN 1
16903: END
// every 0 0$1 do
16904: GO 16906
16906: DISABLE
// begin Wait ( Rand ( 9 9$00 , 12 12$00 ) ) ;
16907: LD_INT 18900
16909: PPUSH
16910: LD_INT 25200
16912: PPUSH
16913: CALL_OW 12
16917: PPUSH
16918: CALL_OW 67
// if SeeArea ( you , obsazovacspawn ) = 0 then
16922: LD_EXP 18
16926: PPUSH
16927: LD_INT 43
16929: PPUSH
16930: CALL_OW 294
16934: PUSH
16935: LD_INT 0
16937: EQUAL
16938: IFFALSE 16948
// begin PlaceObsazovac ( ) ;
16940: CALL 16949 0 0
// PlacePatrol ( ) ;
16944: CALL 17003 0 0
// end ; end ;
16948: END
// function PlaceObsazovac ( ) ; begin
16949: LD_INT 0
16951: PPUSH
// obsazovac = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
16952: LD_ADDR_EXP 73
16956: PUSH
16957: LD_INT 2
16959: PPUSH
16960: LD_EXP 50
16964: PPUSH
16965: LD_EXP 51
16969: PPUSH
16970: LD_INT 1
16972: PPUSH
16973: LD_EXP 19
16977: PPUSH
16978: CALL 2950 0 5
16982: ST_TO_ADDR
// PlaceUnitArea ( obsazovac , ObsazovacSpawn , false ) ;
16983: LD_EXP 73
16987: PPUSH
16988: LD_INT 43
16990: PPUSH
16991: LD_INT 0
16993: PPUSH
16994: CALL_OW 49
// end ;
16998: LD_VAR 0 1
17002: RET
// function PlacePatrol ( ) ; begin
17003: LD_INT 0
17005: PPUSH
// followsol1 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17006: LD_ADDR_EXP 74
17010: PUSH
17011: LD_INT 1
17013: PPUSH
17014: LD_EXP 50
17018: PPUSH
17019: LD_EXP 51
17023: PPUSH
17024: LD_INT 1
17026: PPUSH
17027: LD_EXP 19
17031: PPUSH
17032: CALL 2950 0 5
17036: ST_TO_ADDR
// followsol2 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17037: LD_ADDR_EXP 75
17041: PUSH
17042: LD_INT 1
17044: PPUSH
17045: LD_EXP 50
17049: PPUSH
17050: LD_EXP 51
17054: PPUSH
17055: LD_INT 1
17057: PPUSH
17058: LD_EXP 19
17062: PPUSH
17063: CALL 2950 0 5
17067: ST_TO_ADDR
// followsol3 = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , nation_american , amik ) ;
17068: LD_ADDR_EXP 76
17072: PUSH
17073: LD_INT 1
17075: PPUSH
17076: LD_EXP 50
17080: PPUSH
17081: LD_EXP 51
17085: PPUSH
17086: LD_INT 1
17088: PPUSH
17089: LD_EXP 19
17093: PPUSH
17094: CALL 2950 0 5
17098: ST_TO_ADDR
// PlaceUnitArea ( followsol1 , ObsazovacSpawn , false ) ;
17099: LD_EXP 74
17103: PPUSH
17104: LD_INT 43
17106: PPUSH
17107: LD_INT 0
17109: PPUSH
17110: CALL_OW 49
// PlaceUnitArea ( followsol2 , ObsazovacSpawn , false ) ;
17114: LD_EXP 75
17118: PPUSH
17119: LD_INT 43
17121: PPUSH
17122: LD_INT 0
17124: PPUSH
17125: CALL_OW 49
// PlaceUnitArea ( followsol3 , ObsazovacSpawn , false ) ;
17129: LD_EXP 76
17133: PPUSH
17134: LD_INT 43
17136: PPUSH
17137: LD_INT 0
17139: PPUSH
17140: CALL_OW 49
// Wait ( 0 0$3 ) ;
17144: LD_INT 105
17146: PPUSH
17147: CALL_OW 67
// if obsazovac then
17151: LD_EXP 73
17155: IFFALSE 17186
// ComMoveUnit ( [ followsol1 , followsol2 , followsol3 ] , obsazovac ) ;
17157: LD_EXP 74
17161: PUSH
17162: LD_EXP 75
17166: PUSH
17167: LD_EXP 76
17171: PUSH
17172: EMPTY
17173: LIST
17174: LIST
17175: LIST
17176: PPUSH
17177: LD_EXP 73
17181: PPUSH
17182: CALL_OW 112
// end ; end_of_file
17186: LD_VAR 0 1
17190: RET
// every 0 0$1 do var nakl , bedny ;
17191: GO 17193
17193: DISABLE
17194: LD_INT 0
17196: PPUSH
17197: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
17198: LD_ADDR_VAR 0 1
17202: PUSH
17203: LD_INT 22
17205: PUSH
17206: LD_EXP 19
17210: PUSH
17211: EMPTY
17212: LIST
17213: LIST
17214: PUSH
17215: LD_INT 21
17217: PUSH
17218: LD_INT 2
17220: PUSH
17221: EMPTY
17222: LIST
17223: LIST
17224: PUSH
17225: LD_INT 34
17227: PUSH
17228: LD_INT 12
17230: PUSH
17231: EMPTY
17232: LIST
17233: LIST
17234: PUSH
17235: EMPTY
17236: LIST
17237: LIST
17238: LIST
17239: PPUSH
17240: CALL_OW 69
17244: ST_TO_ADDR
// if nakl then
17245: LD_VAR 0 1
17249: IFFALSE 17358
// begin nakl = nakl [ 1 ] ;
17251: LD_ADDR_VAR 0 1
17255: PUSH
17256: LD_VAR 0 1
17260: PUSH
17261: LD_INT 1
17263: ARRAY
17264: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
17265: LD_VAR 0 1
17269: PPUSH
17270: CALL_OW 256
17274: PUSH
17275: LD_EXP 42
17279: LESS
17280: IFFALSE 17303
// begin ComMoveToArea ( nakl , LevaRepair ) ;
17282: LD_VAR 0 1
17286: PPUSH
17287: LD_INT 25
17289: PPUSH
17290: CALL_OW 113
// Wait ( 2 2$20 ) ;
17294: LD_INT 4900
17296: PPUSH
17297: CALL_OW 67
// end else
17301: GO 17358
// begin bedny = GetListOfCratesInArea ( Bedny1 ) ^ GetListOfCratesInArea ( Bedny2 ) ;
17303: LD_ADDR_VAR 0 2
17307: PUSH
17308: LD_INT 15
17310: PPUSH
17311: CALL_OW 435
17315: PUSH
17316: LD_INT 16
17318: PPUSH
17319: CALL_OW 435
17323: ADD
17324: ST_TO_ADDR
// if bedny then
17325: LD_VAR 0 2
17329: IFFALSE 17358
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
17331: LD_VAR 0 1
17335: PPUSH
17336: LD_VAR 0 2
17340: PUSH
17341: LD_INT 1
17343: ARRAY
17344: PPUSH
17345: LD_VAR 0 2
17349: PUSH
17350: LD_INT 2
17352: ARRAY
17353: PPUSH
17354: CALL_OW 117
// end ; end ; enable ;
17358: ENABLE
// end ;
17359: PPOPN 2
17361: END
// every 0 0$3 do var veh ;
17362: GO 17364
17364: DISABLE
17365: LD_INT 0
17367: PPUSH
// begin if not FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) and not SeeArea ( you , NaklResp ) then
17368: LD_INT 22
17370: PUSH
17371: LD_EXP 19
17375: PUSH
17376: EMPTY
17377: LIST
17378: LIST
17379: PUSH
17380: LD_INT 21
17382: PUSH
17383: LD_INT 2
17385: PUSH
17386: EMPTY
17387: LIST
17388: LIST
17389: PUSH
17390: LD_INT 34
17392: PUSH
17393: LD_INT 12
17395: PUSH
17396: EMPTY
17397: LIST
17398: LIST
17399: PUSH
17400: EMPTY
17401: LIST
17402: LIST
17403: LIST
17404: PPUSH
17405: CALL_OW 69
17409: NOT
17410: PUSH
17411: LD_EXP 18
17415: PPUSH
17416: LD_INT 45
17418: PPUSH
17419: CALL_OW 294
17423: NOT
17424: AND
17425: IFFALSE 17524
// begin Wait ( 5 5$00 ) ;
17427: LD_INT 10500
17429: PPUSH
17430: CALL_OW 67
// if SideDead ( amik ) then
17434: LD_EXP 19
17438: PPUSH
17439: CALL 2649 0 1
17443: IFFALSE 17447
// exit ;
17445: GO 17525
// uc_side = amik ;
17447: LD_ADDR_OWVAR 20
17451: PUSH
17452: LD_EXP 19
17456: ST_TO_ADDR
// uc_nation = nation_american ;
17457: LD_ADDR_OWVAR 21
17461: PUSH
17462: LD_INT 1
17464: ST_TO_ADDR
// vc_chassis = dif_podvozek_nakl ;
17465: LD_ADDR_OWVAR 37
17469: PUSH
17470: LD_EXP 67
17474: ST_TO_ADDR
// vc_control = control_remote ;
17475: LD_ADDR_OWVAR 38
17479: PUSH
17480: LD_INT 2
17482: ST_TO_ADDR
// vc_engine = engine_siberite ;
17483: LD_ADDR_OWVAR 39
17487: PUSH
17488: LD_INT 3
17490: ST_TO_ADDR
// vc_weapon = us_cargo_bay ;
17491: LD_ADDR_OWVAR 40
17495: PUSH
17496: LD_INT 12
17498: ST_TO_ADDR
// veh = CreateVehicle ;
17499: LD_ADDR_VAR 0 1
17503: PUSH
17504: CALL_OW 45
17508: ST_TO_ADDR
// PlaceUnitArea ( veh , NaklResp , false ) ;
17509: LD_VAR 0 1
17513: PPUSH
17514: LD_INT 45
17516: PPUSH
17517: LD_INT 0
17519: PPUSH
17520: CALL_OW 49
// end ; enable ;
17524: ENABLE
// end ; end_of_file
17525: PPOPN 1
17527: END
// every 0 0$5 do var i ;
17528: GO 17530
17530: DISABLE
17531: LD_INT 0
17533: PPUSH
// begin for i in FilterAllUnits ( [ [ f_btype , b_warehouse ] , [ f_ok ] , [ f_not , [ f_side , you ] ] ] ) do
17534: LD_ADDR_VAR 0 1
17538: PUSH
17539: LD_INT 30
17541: PUSH
17542: LD_INT 1
17544: PUSH
17545: EMPTY
17546: LIST
17547: LIST
17548: PUSH
17549: LD_INT 50
17551: PUSH
17552: EMPTY
17553: LIST
17554: PUSH
17555: LD_INT 3
17557: PUSH
17558: LD_INT 22
17560: PUSH
17561: LD_EXP 18
17565: PUSH
17566: EMPTY
17567: LIST
17568: LIST
17569: PUSH
17570: EMPTY
17571: LIST
17572: LIST
17573: PUSH
17574: EMPTY
17575: LIST
17576: LIST
17577: LIST
17578: PPUSH
17579: CALL_OW 69
17583: PUSH
17584: FOR_IN
17585: IFFALSE 17598
// SurovinyDoSkladu ( i ) ;
17587: LD_VAR 0 1
17591: PPUSH
17592: CALL 4807 0 1
17596: GO 17584
17598: POP
17599: POP
// enable ;
17600: ENABLE
// end ;
17601: PPOPN 1
17603: END
// function IsFactoryOk ( tovarna ) ; begin
17604: LD_INT 0
17606: PPUSH
// if GetSide ( tovarna ) = amik and GetBase ( tovarna ) <> 0 and IsOk ( tovarna ) and GetExtPositions ( tovarna ) + 0 = 5 then
17607: LD_VAR 0 1
17611: PPUSH
17612: CALL_OW 255
17616: PUSH
17617: LD_EXP 19
17621: EQUAL
17622: PUSH
17623: LD_VAR 0 1
17627: PPUSH
17628: CALL_OW 274
17632: PUSH
17633: LD_INT 0
17635: NONEQUAL
17636: AND
17637: PUSH
17638: LD_VAR 0 1
17642: PPUSH
17643: CALL_OW 302
17647: AND
17648: PUSH
17649: LD_VAR 0 1
17653: PPUSH
17654: CALL_OW 270
17658: PUSH
17659: LD_INT 0
17661: PLUS
17662: PUSH
17663: LD_INT 5
17665: EQUAL
17666: AND
17667: IFFALSE 17679
// result = true else
17669: LD_ADDR_VAR 0 2
17673: PUSH
17674: LD_INT 1
17676: ST_TO_ADDR
17677: GO 17687
// result = false ;
17679: LD_ADDR_VAR 0 2
17683: PUSH
17684: LD_INT 0
17686: ST_TO_ADDR
// end ;
17687: LD_VAR 0 2
17691: RET
// every 0 0$2 do var autaAmikLeft , autaAmikTopRight , autaAmikRight , i , r ;
17692: GO 17694
17694: DISABLE
17695: LD_INT 0
17697: PPUSH
17698: PPUSH
17699: PPUSH
17700: PPUSH
17701: 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 ] ] ] ] ) ;
17702: LD_ADDR_VAR 0 1
17706: PUSH
17707: LD_INT 22
17709: PUSH
17710: LD_EXP 19
17714: PUSH
17715: EMPTY
17716: LIST
17717: LIST
17718: PUSH
17719: LD_INT 95
17721: PUSH
17722: LD_INT 31
17724: PUSH
17725: EMPTY
17726: LIST
17727: LIST
17728: PUSH
17729: LD_INT 21
17731: PUSH
17732: LD_INT 2
17734: PUSH
17735: EMPTY
17736: LIST
17737: LIST
17738: PUSH
17739: LD_INT 24
17741: PUSH
17742: LD_EXP 35
17746: PUSH
17747: EMPTY
17748: LIST
17749: LIST
17750: PUSH
17751: LD_INT 3
17753: PUSH
17754: LD_INT 2
17756: PUSH
17757: LD_INT 34
17759: PUSH
17760: LD_INT 32
17762: PUSH
17763: EMPTY
17764: LIST
17765: LIST
17766: PUSH
17767: LD_INT 34
17769: PUSH
17770: LD_INT 12
17772: PUSH
17773: EMPTY
17774: LIST
17775: LIST
17776: PUSH
17777: LD_INT 34
17779: PUSH
17780: LD_INT 30
17782: PUSH
17783: EMPTY
17784: LIST
17785: LIST
17786: PUSH
17787: LD_INT 34
17789: PUSH
17790: LD_INT 11
17792: PUSH
17793: EMPTY
17794: LIST
17795: LIST
17796: PUSH
17797: LD_INT 34
17799: PUSH
17800: LD_INT 31
17802: PUSH
17803: EMPTY
17804: LIST
17805: LIST
17806: PUSH
17807: LD_INT 34
17809: PUSH
17810: LD_INT 13
17812: PUSH
17813: EMPTY
17814: LIST
17815: LIST
17816: PUSH
17817: EMPTY
17818: LIST
17819: LIST
17820: LIST
17821: LIST
17822: LIST
17823: LIST
17824: LIST
17825: PUSH
17826: EMPTY
17827: LIST
17828: LIST
17829: PUSH
17830: EMPTY
17831: LIST
17832: LIST
17833: LIST
17834: LIST
17835: LIST
17836: PPUSH
17837: CALL_OW 69
17841: 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 ] ] ] ] ) ;
17842: LD_ADDR_VAR 0 2
17846: PUSH
17847: LD_INT 22
17849: PUSH
17850: LD_EXP 19
17854: PUSH
17855: EMPTY
17856: LIST
17857: LIST
17858: PUSH
17859: LD_INT 95
17861: PUSH
17862: LD_INT 33
17864: PUSH
17865: EMPTY
17866: LIST
17867: LIST
17868: PUSH
17869: LD_INT 21
17871: PUSH
17872: LD_INT 2
17874: PUSH
17875: EMPTY
17876: LIST
17877: LIST
17878: PUSH
17879: LD_INT 24
17881: PUSH
17882: LD_EXP 35
17886: PUSH
17887: EMPTY
17888: LIST
17889: LIST
17890: PUSH
17891: LD_INT 3
17893: PUSH
17894: LD_INT 2
17896: PUSH
17897: LD_INT 34
17899: PUSH
17900: LD_INT 32
17902: PUSH
17903: EMPTY
17904: LIST
17905: LIST
17906: PUSH
17907: LD_INT 34
17909: PUSH
17910: LD_INT 12
17912: PUSH
17913: EMPTY
17914: LIST
17915: LIST
17916: PUSH
17917: LD_INT 34
17919: PUSH
17920: LD_INT 30
17922: PUSH
17923: EMPTY
17924: LIST
17925: LIST
17926: PUSH
17927: LD_INT 34
17929: PUSH
17930: LD_INT 11
17932: PUSH
17933: EMPTY
17934: LIST
17935: LIST
17936: PUSH
17937: LD_INT 34
17939: PUSH
17940: LD_INT 31
17942: PUSH
17943: EMPTY
17944: LIST
17945: LIST
17946: PUSH
17947: LD_INT 34
17949: PUSH
17950: LD_INT 13
17952: PUSH
17953: EMPTY
17954: LIST
17955: LIST
17956: PUSH
17957: EMPTY
17958: LIST
17959: LIST
17960: LIST
17961: LIST
17962: LIST
17963: LIST
17964: LIST
17965: PUSH
17966: EMPTY
17967: LIST
17968: LIST
17969: PUSH
17970: EMPTY
17971: LIST
17972: LIST
17973: LIST
17974: LIST
17975: LIST
17976: PPUSH
17977: CALL_OW 69
17981: 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 ] ] ] ] ) ;
17982: LD_ADDR_VAR 0 3
17986: PUSH
17987: LD_INT 22
17989: PUSH
17990: LD_EXP 19
17994: PUSH
17995: EMPTY
17996: LIST
17997: LIST
17998: PUSH
17999: LD_INT 95
18001: PUSH
18002: LD_INT 35
18004: PUSH
18005: EMPTY
18006: LIST
18007: LIST
18008: PUSH
18009: LD_INT 21
18011: PUSH
18012: LD_INT 2
18014: PUSH
18015: EMPTY
18016: LIST
18017: LIST
18018: PUSH
18019: LD_INT 24
18021: PUSH
18022: LD_EXP 35
18026: PUSH
18027: EMPTY
18028: LIST
18029: LIST
18030: PUSH
18031: LD_INT 3
18033: PUSH
18034: LD_INT 2
18036: PUSH
18037: LD_INT 34
18039: PUSH
18040: LD_INT 32
18042: PUSH
18043: EMPTY
18044: LIST
18045: LIST
18046: PUSH
18047: LD_INT 34
18049: PUSH
18050: LD_INT 12
18052: PUSH
18053: EMPTY
18054: LIST
18055: LIST
18056: PUSH
18057: LD_INT 34
18059: PUSH
18060: LD_INT 30
18062: PUSH
18063: EMPTY
18064: LIST
18065: LIST
18066: PUSH
18067: LD_INT 34
18069: PUSH
18070: LD_INT 11
18072: PUSH
18073: EMPTY
18074: LIST
18075: LIST
18076: PUSH
18077: LD_INT 34
18079: PUSH
18080: LD_INT 31
18082: PUSH
18083: EMPTY
18084: LIST
18085: LIST
18086: PUSH
18087: LD_INT 34
18089: PUSH
18090: LD_INT 13
18092: PUSH
18093: EMPTY
18094: LIST
18095: LIST
18096: PUSH
18097: EMPTY
18098: LIST
18099: LIST
18100: LIST
18101: LIST
18102: LIST
18103: LIST
18104: LIST
18105: PUSH
18106: EMPTY
18107: LIST
18108: LIST
18109: PUSH
18110: EMPTY
18111: LIST
18112: LIST
18113: LIST
18114: LIST
18115: LIST
18116: PPUSH
18117: CALL_OW 69
18121: ST_TO_ADDR
// if autaAmikLeft + 0 >= dif_amik_attack_size then
18122: LD_VAR 0 1
18126: PUSH
18127: LD_INT 0
18129: PLUS
18130: PUSH
18131: LD_EXP 55
18135: GREATEREQUAL
18136: IFFALSE 18341
// begin for i in autaAmikLeft do
18138: LD_ADDR_VAR 0 4
18142: PUSH
18143: LD_VAR 0 1
18147: PUSH
18148: FOR_IN
18149: IFFALSE 18182
// if not i in amik_attack_listL then
18151: LD_VAR 0 4
18155: PUSH
18156: LD_EXP 20
18160: IN
18161: NOT
18162: IFFALSE 18180
// amik_attack_listL = amik_attack_listL ^ i ;
18164: LD_ADDR_EXP 20
18168: PUSH
18169: LD_EXP 20
18173: PUSH
18174: LD_VAR 0 4
18178: ADD
18179: ST_TO_ADDR
18180: GO 18148
18182: POP
18183: POP
// ComAgressiveMove ( amik_attack_listL , 38 , 56 ) ;
18184: LD_EXP 20
18188: PPUSH
18189: LD_INT 38
18191: PPUSH
18192: LD_INT 56
18194: PPUSH
18195: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listL , 59 , 102 ) ;
18199: LD_EXP 20
18203: PPUSH
18204: LD_INT 59
18206: PPUSH
18207: LD_INT 102
18209: PPUSH
18210: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 72 , 124 ) ;
18214: LD_EXP 20
18218: PPUSH
18219: LD_INT 72
18221: PPUSH
18222: LD_INT 124
18224: PPUSH
18225: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 87 , 131 ) ;
18229: LD_EXP 20
18233: PPUSH
18234: LD_INT 87
18236: PPUSH
18237: LD_INT 131
18239: PPUSH
18240: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 113 , 122 ) ;
18244: LD_EXP 20
18248: PPUSH
18249: LD_INT 113
18251: PPUSH
18252: LD_INT 122
18254: PPUSH
18255: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18259: LD_INT 42
18261: PPUSH
18262: CALL_OW 67
// ComAgressiveMove ( amik_attack_listL , 38 , 56 ) ;
18266: LD_EXP 20
18270: PPUSH
18271: LD_INT 38
18273: PPUSH
18274: LD_INT 56
18276: PPUSH
18277: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listL , 59 , 102 ) ;
18281: LD_EXP 20
18285: PPUSH
18286: LD_INT 59
18288: PPUSH
18289: LD_INT 102
18291: PPUSH
18292: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 72 , 124 ) ;
18296: LD_EXP 20
18300: PPUSH
18301: LD_INT 72
18303: PPUSH
18304: LD_INT 124
18306: PPUSH
18307: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 87 , 131 ) ;
18311: LD_EXP 20
18315: PPUSH
18316: LD_INT 87
18318: PPUSH
18319: LD_INT 131
18321: PPUSH
18322: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listL , 113 , 122 ) ;
18326: LD_EXP 20
18330: PPUSH
18331: LD_INT 113
18333: PPUSH
18334: LD_INT 122
18336: PPUSH
18337: CALL_OW 174
// end ; if autaAmikTopRight + 0 >= dif_amik_attack_size then
18341: LD_VAR 0 2
18345: PUSH
18346: LD_INT 0
18348: PLUS
18349: PUSH
18350: LD_EXP 55
18354: GREATEREQUAL
18355: IFFALSE 18530
// begin for i in autaAmikTopRight do
18357: LD_ADDR_VAR 0 4
18361: PUSH
18362: LD_VAR 0 2
18366: PUSH
18367: FOR_IN
18368: IFFALSE 18401
// if not i in amik_attack_listTR then
18370: LD_VAR 0 4
18374: PUSH
18375: LD_EXP 21
18379: IN
18380: NOT
18381: IFFALSE 18399
// amik_attack_listTR = amik_attack_listTR ^ i ;
18383: LD_ADDR_EXP 21
18387: PUSH
18388: LD_EXP 21
18392: PUSH
18393: LD_VAR 0 4
18397: ADD
18398: ST_TO_ADDR
18399: GO 18367
18401: POP
18402: POP
// ComAgressiveMove ( amik_attack_listTR , 84 , 51 ) ;
18403: LD_EXP 21
18407: PPUSH
18408: LD_INT 84
18410: PPUSH
18411: LD_INT 51
18413: PPUSH
18414: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listTR , 81 , 77 ) ;
18418: LD_EXP 21
18422: PPUSH
18423: LD_INT 81
18425: PPUSH
18426: LD_INT 77
18428: PPUSH
18429: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 101 , 109 ) ;
18433: LD_EXP 21
18437: PPUSH
18438: LD_INT 101
18440: PPUSH
18441: LD_INT 109
18443: PPUSH
18444: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 113 , 118 ) ;
18448: LD_EXP 21
18452: PPUSH
18453: LD_INT 113
18455: PPUSH
18456: LD_INT 118
18458: PPUSH
18459: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18463: LD_INT 42
18465: PPUSH
18466: CALL_OW 67
// ComAgressiveMove ( amik_attack_listTR , 84 , 51 ) ;
18470: LD_EXP 21
18474: PPUSH
18475: LD_INT 84
18477: PPUSH
18478: LD_INT 51
18480: PPUSH
18481: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listTR , 81 , 77 ) ;
18485: LD_EXP 21
18489: PPUSH
18490: LD_INT 81
18492: PPUSH
18493: LD_INT 77
18495: PPUSH
18496: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 101 , 109 ) ;
18500: LD_EXP 21
18504: PPUSH
18505: LD_INT 101
18507: PPUSH
18508: LD_INT 109
18510: PPUSH
18511: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listTR , 113 , 118 ) ;
18515: LD_EXP 21
18519: PPUSH
18520: LD_INT 113
18522: PPUSH
18523: LD_INT 118
18525: PPUSH
18526: CALL_OW 174
// end ; if autaAmikRight + 0 >= dif_amik_attack_size then
18530: LD_VAR 0 3
18534: PUSH
18535: LD_INT 0
18537: PLUS
18538: PUSH
18539: LD_EXP 55
18543: GREATEREQUAL
18544: IFFALSE 18689
// begin for i in autaAmikRight do
18546: LD_ADDR_VAR 0 4
18550: PUSH
18551: LD_VAR 0 3
18555: PUSH
18556: FOR_IN
18557: IFFALSE 18590
// if not i in amik_attack_listR then
18559: LD_VAR 0 4
18563: PUSH
18564: LD_EXP 22
18568: IN
18569: NOT
18570: IFFALSE 18588
// amik_attack_listR = amik_attack_listR ^ i ;
18572: LD_ADDR_EXP 22
18576: PUSH
18577: LD_EXP 22
18581: PUSH
18582: LD_VAR 0 4
18586: ADD
18587: ST_TO_ADDR
18588: GO 18556
18590: POP
18591: POP
// ComAgressiveMove ( amik_attack_listR , 137 , 101 ) ;
18592: LD_EXP 22
18596: PPUSH
18597: LD_INT 137
18599: PPUSH
18600: LD_INT 101
18602: PPUSH
18603: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listR , 130 , 109 ) ;
18607: LD_EXP 22
18611: PPUSH
18612: LD_INT 130
18614: PPUSH
18615: LD_INT 109
18617: PPUSH
18618: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listR , 108 , 116 ) ;
18622: LD_EXP 22
18626: PPUSH
18627: LD_INT 108
18629: PPUSH
18630: LD_INT 116
18632: PPUSH
18633: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
18637: LD_INT 42
18639: PPUSH
18640: CALL_OW 67
// ComAgressiveMove ( amik_attack_listR , 137 , 101 ) ;
18644: LD_EXP 22
18648: PPUSH
18649: LD_INT 137
18651: PPUSH
18652: LD_INT 101
18654: PPUSH
18655: CALL_OW 114
// AddComAgressiveMove ( amik_attack_listR , 130 , 109 ) ;
18659: LD_EXP 22
18663: PPUSH
18664: LD_INT 130
18666: PPUSH
18667: LD_INT 109
18669: PPUSH
18670: CALL_OW 174
// AddComAgressiveMove ( amik_attack_listR , 108 , 116 ) ;
18674: LD_EXP 22
18678: PPUSH
18679: LD_INT 108
18681: PPUSH
18682: LD_INT 116
18684: PPUSH
18685: CALL_OW 174
// end ; enable ;
18689: ENABLE
// end ;
18690: PPOPN 5
18692: END
// every 0 0$1 do var targety , un , x , y ;
18693: GO 18695
18695: DISABLE
18696: LD_INT 0
18698: PPUSH
18699: PPUSH
18700: PPUSH
18701: PPUSH
// begin targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) ;
18702: LD_ADDR_VAR 0 1
18706: PUSH
18707: LD_INT 50
18709: PUSH
18710: EMPTY
18711: LIST
18712: PUSH
18713: LD_INT 22
18715: PUSH
18716: LD_EXP 18
18720: PUSH
18721: EMPTY
18722: LIST
18723: LIST
18724: PUSH
18725: EMPTY
18726: LIST
18727: LIST
18728: PPUSH
18729: CALL_OW 69
18733: ST_TO_ADDR
// if not targety then
18734: LD_VAR 0 1
18738: NOT
18739: IFFALSE 18743
// else
18741: GO 18986
// begin for un in amik_attack_listL ^ amik_attack_listTR ^ amik_attack_listR do
18743: LD_ADDR_VAR 0 2
18747: PUSH
18748: LD_EXP 20
18752: PUSH
18753: LD_EXP 21
18757: ADD
18758: PUSH
18759: LD_EXP 22
18763: ADD
18764: PUSH
18765: FOR_IN
18766: IFFALSE 18984
// begin if not IsOK ( un ) then
18768: LD_VAR 0 2
18772: PPUSH
18773: CALL_OW 302
18777: NOT
18778: IFFALSE 18782
// continue ;
18780: GO 18765
// if HasTask ( un ) and GetLives ( un ) = 1000 then
18782: LD_VAR 0 2
18786: PPUSH
18787: CALL_OW 314
18791: PUSH
18792: LD_VAR 0 2
18796: PPUSH
18797: CALL_OW 256
18801: PUSH
18802: LD_INT 1000
18804: EQUAL
18805: AND
18806: IFFALSE 18833
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
18808: LD_VAR 0 2
18812: PPUSH
18813: CALL_OW 437
18817: PUSH
18818: LD_INT 1
18820: ARRAY
18821: PUSH
18822: LD_INT 1
18824: ARRAY
18825: PUSH
18826: LD_STRING a
18828: EQUAL
18829: IFFALSE 18833
// continue ;
18831: GO 18765
// end ; if not HasTask ( un ) then
18833: LD_VAR 0 2
18837: PPUSH
18838: CALL_OW 314
18842: NOT
18843: IFFALSE 18982
// begin if See2 ( amik , NearestUnitToUnit2 ( targety , un ) ) then
18845: LD_EXP 19
18849: PPUSH
18850: LD_VAR 0 1
18854: PPUSH
18855: LD_VAR 0 2
18859: PPUSH
18860: CALL 4488 0 2
18864: PPUSH
18865: CALL 4629 0 2
18869: IFFALSE 18897
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
18871: LD_VAR 0 2
18875: PPUSH
18876: LD_VAR 0 1
18880: PPUSH
18881: LD_VAR 0 2
18885: PPUSH
18886: CALL 4488 0 2
18890: PPUSH
18891: CALL_OW 115
18895: GO 18982
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
18897: LD_ADDR_VAR 0 3
18901: PUSH
18902: LD_VAR 0 1
18906: PPUSH
18907: LD_VAR 0 2
18911: PPUSH
18912: CALL 4488 0 2
18916: PPUSH
18917: CALL_OW 250
18921: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
18922: LD_ADDR_VAR 0 4
18926: PUSH
18927: LD_VAR 0 1
18931: PPUSH
18932: LD_VAR 0 2
18936: PPUSH
18937: CALL 4488 0 2
18941: PPUSH
18942: CALL_OW 251
18946: ST_TO_ADDR
// if ValidHex ( x , y ) then
18947: LD_VAR 0 3
18951: PPUSH
18952: LD_VAR 0 4
18956: PPUSH
18957: CALL_OW 488
18961: IFFALSE 18982
// ComAgressiveMove ( un , x , y ) ;
18963: LD_VAR 0 2
18967: PPUSH
18968: LD_VAR 0 3
18972: PPUSH
18973: LD_VAR 0 4
18977: PPUSH
18978: CALL_OW 114
// end ; end ; end ;
18982: GO 18765
18984: POP
18985: POP
// end ; enable ;
18986: ENABLE
// end ;
18987: PPOPN 4
18989: END
// every 0 0$10 do var i , tov , selectedTov ;
18990: GO 18992
18992: DISABLE
18993: LD_INT 0
18995: PPUSH
18996: PPUSH
18997: PPUSH
// begin Wait ( dif_amik_vyroba_utok_wait_start ) ;
18998: LD_EXP 65
19002: PPUSH
19003: CALL_OW 67
// if sibcelkem < 70 then
19007: LD_EXP 71
19011: PUSH
19012: LD_INT 70
19014: LESS
19015: IFFALSE 19019
// exit ;
19017: GO 19215
// if dif_amik_vyroba_utok_wait_start < dif_amik_vyroba_utok_wait then
19019: LD_EXP 65
19023: PUSH
19024: LD_EXP 59
19028: LESS
19029: IFFALSE 19047
// dif_amik_vyroba_utok_wait_start = dif_amik_vyroba_utok_wait_start + dif_vyroba_tick_inkrement ;
19031: LD_ADDR_EXP 65
19035: PUSH
19036: LD_EXP 65
19040: PUSH
19041: LD_EXP 66
19045: PLUS
19046: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , amik ] , [ f_btype , b_factory ] , [ f_placed ] , [ f_ok ] ] ) ;
19047: LD_ADDR_VAR 0 2
19051: PUSH
19052: LD_INT 22
19054: PUSH
19055: LD_EXP 19
19059: PUSH
19060: EMPTY
19061: LIST
19062: LIST
19063: PUSH
19064: LD_INT 30
19066: PUSH
19067: LD_INT 3
19069: PUSH
19070: EMPTY
19071: LIST
19072: LIST
19073: PUSH
19074: LD_INT 52
19076: PUSH
19077: EMPTY
19078: LIST
19079: PUSH
19080: LD_INT 50
19082: PUSH
19083: EMPTY
19084: LIST
19085: PUSH
19086: EMPTY
19087: LIST
19088: LIST
19089: LIST
19090: LIST
19091: PPUSH
19092: CALL_OW 69
19096: ST_TO_ADDR
// if not tov then
19097: LD_VAR 0 2
19101: NOT
19102: IFFALSE 19106
// exit ;
19104: GO 19215
// selectedTov = tov [ Rand ( 1 , tov + 0 ) ] ;
19106: LD_ADDR_VAR 0 3
19110: PUSH
19111: LD_VAR 0 2
19115: PUSH
19116: LD_INT 1
19118: PPUSH
19119: LD_VAR 0 2
19123: PUSH
19124: LD_INT 0
19126: PLUS
19127: PPUSH
19128: CALL_OW 12
19132: ARRAY
19133: ST_TO_ADDR
// if not IsFactoryOk ( selectedTov ) then
19134: LD_VAR 0 3
19138: PPUSH
19139: CALL 17604 0 1
19143: NOT
19144: IFFALSE 19174
// selectedTov = tov [ Rand ( 1 , tov + 0 ) ] ;
19146: LD_ADDR_VAR 0 3
19150: PUSH
19151: LD_VAR 0 2
19155: PUSH
19156: LD_INT 1
19158: PPUSH
19159: LD_VAR 0 2
19163: PUSH
19164: LD_INT 0
19166: PLUS
19167: PPUSH
19168: CALL_OW 12
19172: ARRAY
19173: ST_TO_ADDR
// for i = 1 to dif_amik_attack_size do
19174: LD_ADDR_VAR 0 1
19178: PUSH
19179: DOUBLE
19180: LD_INT 1
19182: DEC
19183: ST_TO_ADDR
19184: LD_EXP 55
19188: PUSH
19189: FOR_TO
19190: IFFALSE 19203
// begin VyrobAuto ( selectedTov ) ;
19192: LD_VAR 0 3
19196: PPUSH
19197: CALL 19218 0 1
// end ;
19201: GO 19189
19203: POP
19204: POP
// Wait ( dif_amik_vyroba_utok_wait_start ) ;
19205: LD_EXP 65
19209: PPUSH
19210: CALL_OW 67
// enable ;
19214: ENABLE
// end ;
19215: PPOPN 3
19217: END
// function VyrobAuto ( tovarna ) ; var podvozek , zbran , P , narod , pasovy_pristavek ; begin
19218: LD_INT 0
19220: PPUSH
19221: PPUSH
19222: PPUSH
19223: PPUSH
19224: PPUSH
19225: PPUSH
// if not tovarna then
19226: LD_VAR 0 1
19230: NOT
19231: IFFALSE 19235
// exit ;
19233: GO 19705
// if not IsOk ( tovarna ) then
19235: LD_VAR 0 1
19239: PPUSH
19240: CALL_OW 302
19244: NOT
19245: IFFALSE 19249
// exit ;
19247: GO 19705
// P = Rand ( 1 , 100 ) ;
19249: LD_ADDR_VAR 0 5
19253: PUSH
19254: LD_INT 1
19256: PPUSH
19257: LD_INT 100
19259: PPUSH
19260: CALL_OW 12
19264: ST_TO_ADDR
// narod = GetNation ( tovarna ) ;
19265: LD_ADDR_VAR 0 6
19269: PUSH
19270: LD_VAR 0 1
19274: PPUSH
19275: CALL_OW 248
19279: ST_TO_ADDR
// pasovy_pristavek = CanBeConstructed ( tovarna , us_medium_tracked , engine_combustion , control_manual , us_machine_gun ) ;
19280: LD_ADDR_VAR 0 7
19284: PUSH
19285: LD_VAR 0 1
19289: PPUSH
19290: LD_INT 3
19292: PPUSH
19293: LD_INT 1
19295: PPUSH
19296: LD_INT 1
19298: PPUSH
19299: LD_INT 2
19301: PPUSH
19302: CALL_OW 448
19306: ST_TO_ADDR
// if narod = 1 then
19307: LD_VAR 0 6
19311: PUSH
19312: LD_INT 1
19314: EQUAL
19315: IFFALSE 19635
// begin if P < dif_auto_vyroba_sance [ 1 ] then
19317: LD_VAR 0 5
19321: PUSH
19322: LD_EXP 61
19326: PUSH
19327: LD_INT 1
19329: ARRAY
19330: LESS
19331: IFFALSE 19351
// begin zbran = us_gatling_gun ;
19333: LD_ADDR_VAR 0 4
19337: PUSH
19338: LD_INT 4
19340: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19341: LD_ADDR_VAR 0 3
19345: PUSH
19346: LD_INT 3
19348: ST_TO_ADDR
// end else
19349: GO 19469
// if P < dif_auto_vyroba_sance [ 2 ] then
19351: LD_VAR 0 5
19355: PUSH
19356: LD_EXP 61
19360: PUSH
19361: LD_INT 2
19363: ARRAY
19364: LESS
19365: IFFALSE 19385
// begin zbran = us_laser ;
19367: LD_ADDR_VAR 0 4
19371: PUSH
19372: LD_INT 9
19374: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19375: LD_ADDR_VAR 0 3
19379: PUSH
19380: LD_INT 3
19382: ST_TO_ADDR
// end else
19383: GO 19469
// if P < dif_auto_vyroba_sance [ 3 ] then
19385: LD_VAR 0 5
19389: PUSH
19390: LD_EXP 61
19394: PUSH
19395: LD_INT 3
19397: ARRAY
19398: LESS
19399: IFFALSE 19419
// begin zbran = us_rocket_launcher ;
19401: LD_ADDR_VAR 0 4
19405: PUSH
19406: LD_INT 7
19408: ST_TO_ADDR
// podvozek = us_medium_tracked ;
19409: LD_ADDR_VAR 0 3
19413: PUSH
19414: LD_INT 3
19416: ST_TO_ADDR
// end else
19417: GO 19469
// if P < dif_auto_vyroba_sance [ 4 ] then
19419: LD_VAR 0 5
19423: PUSH
19424: LD_EXP 61
19428: PUSH
19429: LD_INT 4
19431: ARRAY
19432: LESS
19433: IFFALSE 19453
// begin zbran = us_heavy_gun ;
19435: LD_ADDR_VAR 0 4
19439: PUSH
19440: LD_INT 6
19442: ST_TO_ADDR
// podvozek = us_heavy_tracked ;
19443: LD_ADDR_VAR 0 3
19447: PUSH
19448: LD_INT 4
19450: ST_TO_ADDR
// end else
19451: GO 19469
// begin zbran = us_heavy_gun ;
19453: LD_ADDR_VAR 0 4
19457: PUSH
19458: LD_INT 6
19460: ST_TO_ADDR
// podvozek = us_morphling ;
19461: LD_ADDR_VAR 0 3
19465: PUSH
19466: LD_INT 5
19468: ST_TO_ADDR
// end ; if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_heavy_gun then
19469: LD_VAR 0 1
19473: PPUSH
19474: LD_VAR 0 3
19478: PPUSH
19479: LD_INT 1
19481: PPUSH
19482: LD_INT 2
19484: PPUSH
19485: LD_VAR 0 4
19489: PPUSH
19490: CALL_OW 448
19494: NOT
19495: PUSH
19496: LD_VAR 0 4
19500: PUSH
19501: LD_INT 6
19503: EQUAL
19504: AND
19505: IFFALSE 19515
// zbran = us_laser ;
19507: LD_ADDR_VAR 0 4
19511: PUSH
19512: LD_INT 9
19514: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_laser then
19515: LD_VAR 0 1
19519: PPUSH
19520: LD_VAR 0 3
19524: PPUSH
19525: LD_INT 1
19527: PPUSH
19528: LD_INT 2
19530: PPUSH
19531: LD_VAR 0 4
19535: PPUSH
19536: CALL_OW 448
19540: NOT
19541: PUSH
19542: LD_VAR 0 4
19546: PUSH
19547: LD_INT 9
19549: EQUAL
19550: AND
19551: IFFALSE 19561
// zbran = us_rocket_launcher ;
19553: LD_ADDR_VAR 0 4
19557: PUSH
19558: LD_INT 7
19560: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_remote , zbran ) and zbran = us_rocket_launcher then
19561: LD_VAR 0 1
19565: PPUSH
19566: LD_VAR 0 3
19570: PPUSH
19571: LD_INT 1
19573: PPUSH
19574: LD_INT 2
19576: PPUSH
19577: LD_VAR 0 4
19581: PPUSH
19582: CALL_OW 448
19586: NOT
19587: PUSH
19588: LD_VAR 0 4
19592: PUSH
19593: LD_INT 7
19595: EQUAL
19596: AND
19597: IFFALSE 19607
// zbran = us_heavy_gun ;
19599: LD_ADDR_VAR 0 4
19603: PUSH
19604: LD_INT 6
19606: ST_TO_ADDR
// if zbran = us_heavy_gun then
19607: LD_VAR 0 4
19611: PUSH
19612: LD_INT 6
19614: EQUAL
19615: IFFALSE 19635
// podvozek = Rand ( podvozek , us_morphling ) ;
19617: LD_ADDR_VAR 0 3
19621: PUSH
19622: LD_VAR 0 3
19626: PPUSH
19627: LD_INT 5
19629: PPUSH
19630: CALL_OW 12
19634: ST_TO_ADDR
// end ; if Prob ( dif_auto_lepsi_podvozek_sance ) and pasovy_pristavek then
19635: LD_EXP 60
19639: PPUSH
19640: CALL_OW 13
19644: PUSH
19645: LD_VAR 0 7
19649: AND
19650: IFFALSE 19680
// if narod = nation_american then
19652: LD_VAR 0 6
19656: PUSH
19657: LD_INT 1
19659: EQUAL
19660: IFFALSE 19680
// podvozek = Rand ( podvozek , us_morphling ) ;
19662: LD_ADDR_VAR 0 3
19666: PUSH
19667: LD_VAR 0 3
19671: PPUSH
19672: LD_INT 5
19674: PPUSH
19675: CALL_OW 12
19679: ST_TO_ADDR
// AddComConstruct ( tovarna , podvozek , engine_siberite , control_remote , zbran ) end ;
19680: LD_VAR 0 1
19684: PPUSH
19685: LD_VAR 0 3
19689: PPUSH
19690: LD_INT 3
19692: PPUSH
19693: LD_INT 2
19695: PPUSH
19696: LD_VAR 0 4
19700: PPUSH
19701: CALL_OW 185
19705: LD_VAR 0 2
19709: RET
// every 0 0$1 do var capturedList ; var i ;
19710: GO 19712
19712: DISABLE
19713: LD_INT 0
19715: PPUSH
19716: PPUSH
// begin if videlisklad then
19717: LD_EXP 27
19721: IFFALSE 19725
// exit ;
19723: GO 19877
// capturedList = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_building ] , [ f_nation , nation_russian ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
19725: LD_ADDR_VAR 0 1
19729: PUSH
19730: LD_INT 22
19732: PUSH
19733: LD_EXP 19
19737: PUSH
19738: EMPTY
19739: LIST
19740: LIST
19741: PUSH
19742: LD_INT 21
19744: PUSH
19745: LD_INT 3
19747: PUSH
19748: EMPTY
19749: LIST
19750: LIST
19751: PUSH
19752: LD_INT 23
19754: PUSH
19755: LD_INT 3
19757: PUSH
19758: EMPTY
19759: LIST
19760: LIST
19761: PUSH
19762: LD_INT 2
19764: PUSH
19765: LD_INT 30
19767: PUSH
19768: LD_INT 0
19770: PUSH
19771: EMPTY
19772: LIST
19773: LIST
19774: PUSH
19775: LD_INT 30
19777: PUSH
19778: LD_INT 1
19780: PUSH
19781: EMPTY
19782: LIST
19783: LIST
19784: PUSH
19785: EMPTY
19786: LIST
19787: LIST
19788: LIST
19789: PUSH
19790: EMPTY
19791: LIST
19792: LIST
19793: LIST
19794: LIST
19795: PPUSH
19796: CALL_OW 69
19800: ST_TO_ADDR
// if capturedList then
19801: LD_VAR 0 1
19805: IFFALSE 19876
// begin for i in capturedList do
19807: LD_ADDR_VAR 0 2
19811: PUSH
19812: LD_VAR 0 1
19816: PUSH
19817: FOR_IN
19818: IFFALSE 19874
// if See ( you , capturedList [ 1 ] ) then
19820: LD_EXP 18
19824: PPUSH
19825: LD_VAR 0 1
19829: PUSH
19830: LD_INT 1
19832: ARRAY
19833: PPUSH
19834: CALL_OW 292
19838: IFFALSE 19872
// begin videlisklad = true ;
19840: LD_ADDR_EXP 27
19844: PUSH
19845: LD_INT 1
19847: ST_TO_ADDR
// Say ( NajdiVojaka , D3nekdo-1 ) ;
19848: CALL 11134 0 0
19852: PPUSH
19853: LD_STRING D3nekdo-1
19855: PPUSH
19856: CALL_OW 88
// Say ( NajdiMechanika , D3nekdo-2 ) ;
19860: CALL 11556 0 0
19864: PPUSH
19865: LD_STRING D3nekdo-2
19867: PPUSH
19868: CALL_OW 88
// end ;
19872: GO 19817
19874: POP
19875: POP
// end ; enable ;
19876: ENABLE
// end ;
19877: PPOPN 2
19879: END
// every 9 9$43 do
19880: GO 19882
19882: DISABLE
// begin SayRadio ( jasin , D3jas-1a ) ;
19883: LD_EXP 15
19887: PPUSH
19888: LD_STRING D3jas-1a
19890: PPUSH
19891: CALL_OW 94
// Say ( vsevolod , D3vse-2 ) ;
19895: LD_EXP 1
19899: PPUSH
19900: LD_STRING D3vse-2
19902: PPUSH
19903: CALL_OW 88
// end ;
19907: END
