// export vsevolod , lesnitsky , auto , navrat_z_alaskitove_mise , zakaz_vybrani ; export you , zeleny , legie , heike , editor , base , beden , hrajeme ; export pricekulomet , pricerotacak , pricegun , pricehg , priceraketomet , priceraketa , ar_utok , neutocit_na_velitele , outro_running ; export vse_stamina , les_stamina ; starting begin editor = 0 ;
   0: LD_ADDR_EXP 10
   4: PUSH
   5: LD_INT 0
   7: ST_TO_ADDR
// if not IsEditor then
   8: LD_INT 1
  10: NOT
  11: IFFALSE 21
// editor = 0 ;
  13: LD_ADDR_EXP 10
  17: PUSH
  18: LD_INT 0
  20: ST_TO_ADDR
// interface_hidden = true ;
  21: LD_ADDR_OWVAR 54
  25: PUSH
  26: LD_INT 1
  28: ST_TO_ADDR
// InGameOn ;
  29: CALL_OW 8
// hrajeme = false ;
  33: LD_ADDR_EXP 13
  37: PUSH
  38: LD_INT 0
  40: ST_TO_ADDR
// enable_death_losts = false ;
  41: LD_ADDR_EXP 45
  45: PUSH
  46: LD_INT 0
  48: ST_TO_ADDR
// you = 3 ;
  49: LD_ADDR_EXP 6
  53: PUSH
  54: LD_INT 3
  56: ST_TO_ADDR
// zeleny = 7 ;
  57: LD_ADDR_EXP 7
  61: PUSH
  62: LD_INT 7
  64: ST_TO_ADDR
// legie = 8 ;
  65: LD_ADDR_EXP 8
  69: PUSH
  70: LD_INT 8
  72: ST_TO_ADDR
// Obtiznost ( ) ;
  73: CALL 13002 0 0
// StartResources ;
  77: CALL 2381 0 0
// PrepareWeaponPrices ;
  81: CALL 1126 0 0
// ArrayInity ( ) ;
  85: CALL 2508 0 0
// PrepareYourGreens ;
  89: CALL 871 0 0
// ar_utok = [ ] ;
  93: LD_ADDR_EXP 20
  97: PUSH
  98: EMPTY
  99: ST_TO_ADDR
// ChangeSideFog ( you , 1 ) ;
 100: LD_EXP 6
 104: PPUSH
 105: LD_INT 1
 107: PPUSH
 108: CALL_OW 343
// your_side = 1 ;
 112: LD_ADDR_OWVAR 2
 116: PUSH
 117: LD_INT 1
 119: ST_TO_ADDR
// ResetFog ;
 120: CALL_OW 335
// Wait ( 0 0$1 ) ;
 124: LD_INT 35
 126: PPUSH
 127: CALL_OW 67
// if not editor then
 131: LD_EXP 10
 135: NOT
 136: IFFALSE 145
// Query ( info ) ;
 138: LD_STRING info
 140: PPUSH
 141: CALL_OW 97
// ChangeSideFog ( you , 3 ) ;
 145: LD_EXP 6
 149: PPUSH
 150: LD_INT 3
 152: PPUSH
 153: CALL_OW 343
// your_side = 3 ;
 157: LD_ADDR_OWVAR 2
 161: PUSH
 162: LD_INT 3
 164: ST_TO_ADDR
// RandomizeAll ;
 165: CALL_OW 11
// ResetFog ;
 169: CALL_OW 335
// DisableExclamations ( ) ;
 173: CALL_OW 474
// RemoveUnit ( arab ) ;
 177: LD_INT 95
 179: PPUSH
 180: CALL_OW 64
// LoadSave ( ) ;
 184: CALL 779 0 0
// SetBName ( depot , lesnitsky ) ;
 188: LD_INT 6
 190: PPUSH
 191: LD_STRING lesnitsky
 193: PPUSH
 194: CALL_OW 500
// SetBLevel ( ( FilterAllUnits ( [ f_type , unit_building ] ) ) , 7 ) ;
 198: LD_INT 21
 200: PUSH
 201: LD_INT 3
 203: PUSH
 204: EMPTY
 205: LIST
 206: LIST
 207: PPUSH
 208: CALL_OW 69
 212: PPUSH
 213: LD_INT 7
 215: PPUSH
 216: CALL_OW 241
// SetResourceType ( GetBase ( depot ) , mat_cans , 200 ) ;
 220: LD_INT 6
 222: PPUSH
 223: CALL_OW 274
 227: PPUSH
 228: LD_INT 1
 230: PPUSH
 231: LD_INT 200
 233: PPUSH
 234: CALL_OW 277
// SetResourceType ( GetBase ( depot ) , mat_oil , 540 ) ;
 238: LD_INT 6
 240: PPUSH
 241: CALL_OW 274
 245: PPUSH
 246: LD_INT 2
 248: PPUSH
 249: LD_INT 540
 251: PPUSH
 252: CALL_OW 277
// SetResourceType ( GetBase ( depot ) , mat_oil , 85 ) ;
 256: LD_INT 6
 258: PPUSH
 259: CALL_OW 274
 263: PPUSH
 264: LD_INT 2
 266: PPUSH
 267: LD_INT 85
 269: PPUSH
 270: CALL_OW 277
// SetWeather ( 1 , 400 , 100 ) ;
 274: LD_INT 1
 276: PPUSH
 277: LD_INT 400
 279: PPUSH
 280: LD_INT 100
 282: PPUSH
 283: CALL_OW 550
// zakaz_vybrani = true ;
 287: LD_ADDR_EXP 5
 291: PUSH
 292: LD_INT 1
 294: ST_TO_ADDR
// neutocit_na_velitele = false ;
 295: LD_ADDR_EXP 21
 299: PUSH
 300: LD_INT 0
 302: ST_TO_ADDR
// outro_running = false ;
 303: LD_ADDR_EXP 22
 307: PUSH
 308: LD_INT 0
 310: ST_TO_ADDR
// uc_side = you ;
 311: LD_ADDR_OWVAR 20
 315: PUSH
 316: LD_EXP 6
 320: ST_TO_ADDR
// SetClass ( vsevolod , 3 ) ;
 321: LD_EXP 1
 325: PPUSH
 326: LD_INT 3
 328: PPUSH
 329: CALL_OW 336
// uc_side = zeleny ;
 333: LD_ADDR_OWVAR 20
 337: PUSH
 338: LD_EXP 7
 342: ST_TO_ADDR
// lesnitsky := NewCharacter ( Lesnitsky ) ;
 343: LD_ADDR_EXP 2
 347: PUSH
 348: LD_STRING Lesnitsky
 350: PPUSH
 351: CALL_OW 25
 355: ST_TO_ADDR
// SetClass ( lesnitsky , 9 ) ;
 356: LD_EXP 2
 360: PPUSH
 361: LD_INT 9
 363: PPUSH
 364: CALL_OW 336
// GiveSkillBonus ( lesnitsky , 1 , 1 ) ;
 368: LD_EXP 2
 372: PPUSH
 373: LD_INT 1
 375: PPUSH
 376: LD_INT 1
 378: PPUSH
 379: CALL_OW 238
// uc_side = legie ;
 383: LD_ADDR_OWVAR 20
 387: PUSH
 388: LD_EXP 8
 392: ST_TO_ADDR
// uc_nation = nation_arabian ;
 393: LD_ADDR_OWVAR 21
 397: PUSH
 398: LD_INT 2
 400: ST_TO_ADDR
// hc_class = 1 ;
 401: LD_ADDR_OWVAR 28
 405: PUSH
 406: LD_INT 1
 408: ST_TO_ADDR
// heike := NewCharacter ( Heike ) ;
 409: LD_ADDR_EXP 9
 413: PUSH
 414: LD_STRING Heike
 416: PPUSH
 417: CALL_OW 25
 421: ST_TO_ADDR
// PlaceUnitXY ( lesnitsky , 66 , 40 , false ) ;
 422: LD_EXP 2
 426: PPUSH
 427: LD_INT 66
 429: PPUSH
 430: LD_INT 40
 432: PPUSH
 433: LD_INT 0
 435: PPUSH
 436: CALL_OW 48
// ComTurnXY ( lesnitsky , 65 , 45 ) ;
 440: LD_EXP 2
 444: PPUSH
 445: LD_INT 65
 447: PPUSH
 448: LD_INT 45
 450: PPUSH
 451: CALL_OW 118
// prepareGreens ;
 455: CALL 1182 0 0
// prepareVeh ;
 459: CALL 1635 0 0
// RevealFogArea ( you , mapa ) ;
 463: LD_EXP 6
 467: PPUSH
 468: LD_INT 11
 470: PPUSH
 471: CALL_OW 332
// CenterNowOnUnits ( auto ) ;
 475: LD_EXP 3
 479: PPUSH
 480: CALL_OW 87
// Intro ( ) ;
 484: CALL 489 0 0
// end ;
 488: END
// function Intro ( ) ; var i ; begin
 489: LD_INT 0
 491: PPUSH
 492: PPUSH
// if navrat_z_alaskitove_mise then
 493: LD_EXP 4
 497: IFFALSE 553
// begin for i in [ [ 62 , 41 ] ] do
 499: LD_ADDR_VAR 0 2
 503: PUSH
 504: LD_INT 62
 506: PUSH
 507: LD_INT 41
 509: PUSH
 510: EMPTY
 511: LIST
 512: LIST
 513: PUSH
 514: EMPTY
 515: LIST
 516: PUSH
 517: FOR_IN
 518: IFFALSE 549
// AddComMoveXY ( vsevolod , i [ 1 ] , i [ 2 ] ) ;
 520: LD_EXP 1
 524: PPUSH
 525: LD_VAR 0 2
 529: PUSH
 530: LD_INT 1
 532: ARRAY
 533: PPUSH
 534: LD_VAR 0 2
 538: PUSH
 539: LD_INT 2
 541: ARRAY
 542: PPUSH
 543: CALL_OW 171
 547: GO 517
 549: POP
 550: POP
// end else
 551: GO 616
// begin for i in [ [ 79 , 41 ] , [ 73 , 44 ] ] do
 553: LD_ADDR_VAR 0 2
 557: PUSH
 558: LD_INT 79
 560: PUSH
 561: LD_INT 41
 563: PUSH
 564: EMPTY
 565: LIST
 566: LIST
 567: PUSH
 568: LD_INT 73
 570: PUSH
 571: LD_INT 44
 573: PUSH
 574: EMPTY
 575: LIST
 576: LIST
 577: PUSH
 578: EMPTY
 579: LIST
 580: LIST
 581: PUSH
 582: FOR_IN
 583: IFFALSE 614
// AddComMoveXY ( vsevolod , i [ 1 ] , i [ 2 ] ) ;
 585: LD_EXP 1
 589: PPUSH
 590: LD_VAR 0 2
 594: PUSH
 595: LD_INT 1
 597: ARRAY
 598: PPUSH
 599: LD_VAR 0 2
 603: PUSH
 604: LD_INT 2
 606: ARRAY
 607: PPUSH
 608: CALL_OW 171
 612: GO 582
 614: POP
 615: POP
// end ; end ;
 616: LD_VAR 0 1
 620: RET
// every 1 1$00 do
 621: GO 623
 623: DISABLE
// begin SetWeather ( 1 , 400 , 100 ) ;
 624: LD_INT 1
 626: PPUSH
 627: LD_INT 400
 629: PPUSH
 630: LD_INT 100
 632: PPUSH
 633: CALL_OW 550
// enable ;
 637: ENABLE
// end ;
 638: END
// every 0 0$0.2 trigger IsInArea ( auto , karapark ) do
 639: LD_EXP 3
 643: PPUSH
 644: LD_INT 4
 646: PPUSH
 647: CALL_OW 308
 651: IFFALSE 660
 653: GO 655
 655: DISABLE
// begin DialogSLesnitskym ( ) ;
 656: CALL 10870 0 0
// end ;
 660: END
// export function KonecMise ; var i , k , lidi ; begin
 661: LD_INT 0
 663: PPUSH
 664: PPUSH
 665: PPUSH
 666: PPUSH
// SaveCharacters ( vsevolod , Vsevolod ) ;
 667: LD_EXP 1
 671: PPUSH
 672: LD_STRING Vsevolod
 674: PPUSH
 675: CALL_OW 38
// SaveCharacters ( vsevolod , Lesnitsky ) ;
 679: LD_EXP 1
 683: PPUSH
 684: LD_STRING Lesnitsky
 686: PPUSH
 687: CALL_OW 38
// AddMedal ( medal1 , 1 ) ;
 691: LD_STRING medal1
 693: PPUSH
 694: LD_INT 1
 696: PPUSH
 697: CALL_OW 101
// AddMedal ( medal2 , 1 ) ;
 701: LD_STRING medal2
 703: PPUSH
 704: LD_INT 1
 706: PPUSH
 707: CALL_OW 101
// AddMedal ( medal3 , 1 ) ;
 711: LD_STRING medal3
 713: PPUSH
 714: LD_INT 1
 716: PPUSH
 717: CALL_OW 101
// GiveMedals ( Main ) ;
 721: LD_STRING Main
 723: PPUSH
 724: CALL_OW 102
// RewardPeople ( [ vsevolod , lesnitsky ] ) ;
 728: LD_EXP 1
 732: PUSH
 733: LD_EXP 2
 737: PUSH
 738: EMPTY
 739: LIST
 740: LIST
 741: PPUSH
 742: CALL_OW 43
// SaveCharacters ( vsevolod , Vsevolod ) ;
 746: LD_EXP 1
 750: PPUSH
 751: LD_STRING Vsevolod
 753: PPUSH
 754: CALL_OW 38
// SaveCharacters ( lesnitsky , Lesnitsky ) ;
 758: LD_EXP 2
 762: PPUSH
 763: LD_STRING Lesnitsky
 765: PPUSH
 766: CALL_OW 38
// YouWin ;
 770: CALL_OW 103
// end ; end_of_file
 774: LD_VAR 0 1
 778: RET
// export function LoadSave ( ) ; begin
 779: LD_INT 0
 781: PPUSH
// uc_nation = nation_russian ;
 782: LD_ADDR_OWVAR 21
 786: PUSH
 787: LD_INT 3
 789: ST_TO_ADDR
// uc_side = You ;
 790: LD_ADDR_OWVAR 20
 794: PUSH
 795: LD_EXP 6
 799: ST_TO_ADDR
// navrat_z_alaskitove_mise = LoadVariable ( AlaskitMissionLast , 0 ) ;
 800: LD_ADDR_EXP 4
 804: PUSH
 805: LD_STRING AlaskitMissionLast
 807: PPUSH
 808: LD_INT 0
 810: PPUSH
 811: CALL_OW 30
 815: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
 816: LD_STRING Vsevolod
 818: PPUSH
 819: CALL_OW 28
 823: NOT
 824: IFFALSE 841
// vsevolod = NewCharacter ( Vsevolod ) else
 826: LD_ADDR_EXP 1
 830: PUSH
 831: LD_STRING Vsevolod
 833: PPUSH
 834: CALL_OW 25
 838: ST_TO_ADDR
 839: GO 854
// vsevolod = CreateCharacter ( Vsevolod ) ;
 841: LD_ADDR_EXP 1
 845: PUSH
 846: LD_STRING Vsevolod
 848: PPUSH
 849: CALL_OW 34
 853: ST_TO_ADDR
// SetClass ( vsevolod , 3 ) ;
 854: LD_EXP 1
 858: PPUSH
 859: LD_INT 3
 861: PPUSH
 862: CALL_OW 336
// end ;
 866: LD_VAR 0 1
 870: RET
// export mru1 , mru2 , mru3 , mru4 , mru5 , mru6 , mru7 , mru8 ; var some1 , some2 , some3 ; export function PrepareYourGreens ; begin
 871: LD_INT 0
 873: PPUSH
// mru2 = VytvorCloveka ( 1 ) ;
 874: LD_ADDR_EXP 26
 878: PUSH
 879: LD_INT 1
 881: PPUSH
 882: CALL 1815 0 1
 886: ST_TO_ADDR
// mru3 = VytvorCloveka ( 1 ) ;
 887: LD_ADDR_EXP 27
 891: PUSH
 892: LD_INT 1
 894: PPUSH
 895: CALL 1815 0 1
 899: ST_TO_ADDR
// mru4 = VytvorCloveka ( 1 ) ;
 900: LD_ADDR_EXP 28
 904: PUSH
 905: LD_INT 1
 907: PPUSH
 908: CALL 1815 0 1
 912: ST_TO_ADDR
// mru5 = VytvorCloveka ( 1 ) ;
 913: LD_ADDR_EXP 29
 917: PUSH
 918: LD_INT 1
 920: PPUSH
 921: CALL 1815 0 1
 925: ST_TO_ADDR
// mru6 = VytvorCloveka ( 2 ) ;
 926: LD_ADDR_EXP 30
 930: PUSH
 931: LD_INT 2
 933: PPUSH
 934: CALL 1815 0 1
 938: ST_TO_ADDR
// mru7 = VytvorCloveka ( 2 ) ;
 939: LD_ADDR_EXP 31
 943: PUSH
 944: LD_INT 2
 946: PPUSH
 947: CALL 1815 0 1
 951: ST_TO_ADDR
// mru8 = VytvorCloveka ( 4 ) ;
 952: LD_ADDR_EXP 32
 956: PUSH
 957: LD_INT 4
 959: PPUSH
 960: CALL 1815 0 1
 964: ST_TO_ADDR
// PlaceUnitXY ( mru1 , 72 , 52 , false ) ;
 965: LD_EXP 25
 969: PPUSH
 970: LD_INT 72
 972: PPUSH
 973: LD_INT 52
 975: PPUSH
 976: LD_INT 0
 978: PPUSH
 979: CALL_OW 48
// PlaceUnitXY ( mru2 , 61 , 49 , false ) ;
 983: LD_EXP 26
 987: PPUSH
 988: LD_INT 61
 990: PPUSH
 991: LD_INT 49
 993: PPUSH
 994: LD_INT 0
 996: PPUSH
 997: CALL_OW 48
// PlaceUnitXY ( mru3 , 53 , 28 , false ) ;
1001: LD_EXP 27
1005: PPUSH
1006: LD_INT 53
1008: PPUSH
1009: LD_INT 28
1011: PPUSH
1012: LD_INT 0
1014: PPUSH
1015: CALL_OW 48
// PlaceUnitXY ( mru4 , 57 , 39 , false ) ;
1019: LD_EXP 28
1023: PPUSH
1024: LD_INT 57
1026: PPUSH
1027: LD_INT 39
1029: PPUSH
1030: LD_INT 0
1032: PPUSH
1033: CALL_OW 48
// PlaceUnitXY ( mru5 , 79 , 47 , false ) ;
1037: LD_EXP 29
1041: PPUSH
1042: LD_INT 79
1044: PPUSH
1045: LD_INT 47
1047: PPUSH
1048: LD_INT 0
1050: PPUSH
1051: CALL_OW 48
// PlaceUnitXY ( mru6 , 52 , 34 , false ) ;
1055: LD_EXP 30
1059: PPUSH
1060: LD_INT 52
1062: PPUSH
1063: LD_INT 34
1065: PPUSH
1066: LD_INT 0
1068: PPUSH
1069: CALL_OW 48
// PlaceUnitXY ( mru7 , 70 , 34 , false ) ;
1073: LD_EXP 31
1077: PPUSH
1078: LD_INT 70
1080: PPUSH
1081: LD_INT 34
1083: PPUSH
1084: LD_INT 0
1086: PPUSH
1087: CALL_OW 48
// PlaceUnitXY ( mru8 , 61 , 45 , false ) ;
1091: LD_EXP 32
1095: PPUSH
1096: LD_INT 61
1098: PPUSH
1099: LD_INT 45
1101: PPUSH
1102: LD_INT 0
1104: PPUSH
1105: CALL_OW 48
// SetLives ( mru2 , 251 ) ;
1109: LD_EXP 26
1113: PPUSH
1114: LD_INT 251
1116: PPUSH
1117: CALL_OW 234
// end ;
1121: LD_VAR 0 1
1125: RET
// export function prepareWeaponPrices ; begin
1126: LD_INT 0
1128: PPUSH
// pricekulomet = 10 ;
1129: LD_ADDR_EXP 14
1133: PUSH
1134: LD_INT 10
1136: ST_TO_ADDR
// pricerotacak = 20 ;
1137: LD_ADDR_EXP 15
1141: PUSH
1142: LD_INT 20
1144: ST_TO_ADDR
// pricegun = 40 ;
1145: LD_ADDR_EXP 16
1149: PUSH
1150: LD_INT 40
1152: ST_TO_ADDR
// pricehg = 45 ;
1153: LD_ADDR_EXP 17
1157: PUSH
1158: LD_INT 45
1160: ST_TO_ADDR
// priceraketomet = 40 ;
1161: LD_ADDR_EXP 18
1165: PUSH
1166: LD_INT 40
1168: ST_TO_ADDR
// priceraketa = 60 ;
1169: LD_ADDR_EXP 19
1173: PUSH
1174: LD_INT 60
1176: ST_TO_ADDR
// end ;
1177: LD_VAR 0 1
1181: RET
// export function prepareGreens ; var b , typ , un , i ; begin
1182: LD_INT 0
1184: PPUSH
1185: PPUSH
1186: PPUSH
1187: PPUSH
1188: PPUSH
// for b in FilterAllUnits ( [ f_btype , b_bunker ] ) do
1189: LD_ADDR_VAR 0 2
1193: PUSH
1194: LD_INT 30
1196: PUSH
1197: LD_INT 32
1199: PUSH
1200: EMPTY
1201: LIST
1202: LIST
1203: PPUSH
1204: CALL_OW 69
1208: PUSH
1209: FOR_IN
1210: IFFALSE 1264
// begin un = VytvorCloveka ( 1 ) ;
1212: LD_ADDR_VAR 0 4
1216: PUSH
1217: LD_INT 1
1219: PPUSH
1220: CALL 1815 0 1
1224: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
1225: LD_VAR 0 4
1229: PPUSH
1230: LD_VAR 0 2
1234: PPUSH
1235: CALL_OW 254
1239: PUSH
1240: LD_INT 3
1242: PLUS
1243: PPUSH
1244: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
1248: LD_VAR 0 4
1252: PPUSH
1253: LD_VAR 0 2
1257: PPUSH
1258: CALL_OW 52
// end ;
1262: GO 1209
1264: POP
1265: POP
// for b in FilterAllUnits ( [ f_btype , b_barracks ] ) do
1266: LD_ADDR_VAR 0 2
1270: PUSH
1271: LD_INT 30
1273: PUSH
1274: LD_INT 5
1276: PUSH
1277: EMPTY
1278: LIST
1279: LIST
1280: PPUSH
1281: CALL_OW 69
1285: PUSH
1286: FOR_IN
1287: IFFALSE 1363
// for i = 1 to 6 do
1289: LD_ADDR_VAR 0 5
1293: PUSH
1294: DOUBLE
1295: LD_INT 1
1297: DEC
1298: ST_TO_ADDR
1299: LD_INT 6
1301: PUSH
1302: FOR_TO
1303: IFFALSE 1359
// begin if i >= 3 then
1305: LD_VAR 0 5
1309: PUSH
1310: LD_INT 3
1312: GREATEREQUAL
1313: IFFALSE 1330
// un = VytvorCloveka ( class_bazooker ) else
1315: LD_ADDR_VAR 0 4
1319: PUSH
1320: LD_INT 9
1322: PPUSH
1323: CALL 1815 0 1
1327: ST_TO_ADDR
1328: GO 1343
// un = VytvorCloveka ( 1 ) ;
1330: LD_ADDR_VAR 0 4
1334: PUSH
1335: LD_INT 1
1337: PPUSH
1338: CALL 1815 0 1
1342: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
1343: LD_VAR 0 4
1347: PPUSH
1348: LD_VAR 0 2
1352: PPUSH
1353: CALL_OW 52
// end ;
1357: GO 1302
1359: POP
1360: POP
1361: GO 1286
1363: POP
1364: POP
// for b in FilterAllUnits ( [ f_btype , b_lab_full ] ) do
1365: LD_ADDR_VAR 0 2
1369: PUSH
1370: LD_INT 30
1372: PUSH
1373: LD_INT 8
1375: PUSH
1376: EMPTY
1377: LIST
1378: LIST
1379: PPUSH
1380: CALL_OW 69
1384: PUSH
1385: FOR_IN
1386: IFFALSE 1437
// for i = 1 to 3 do
1388: LD_ADDR_VAR 0 5
1392: PUSH
1393: DOUBLE
1394: LD_INT 1
1396: DEC
1397: ST_TO_ADDR
1398: LD_INT 3
1400: PUSH
1401: FOR_TO
1402: IFFALSE 1433
// begin un = VytvorCloveka ( 4 ) ;
1404: LD_ADDR_VAR 0 4
1408: PUSH
1409: LD_INT 4
1411: PPUSH
1412: CALL 1815 0 1
1416: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
1417: LD_VAR 0 4
1421: PPUSH
1422: LD_VAR 0 2
1426: PPUSH
1427: CALL_OW 52
// end ;
1431: GO 1401
1433: POP
1434: POP
1435: GO 1385
1437: POP
1438: POP
// for b in FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_side , zeleny ] ] ) diff jerab do
1439: LD_ADDR_VAR 0 2
1443: PUSH
1444: LD_INT 21
1446: PUSH
1447: LD_INT 2
1449: PUSH
1450: EMPTY
1451: LIST
1452: LIST
1453: PUSH
1454: LD_INT 33
1456: PUSH
1457: LD_INT 1
1459: PUSH
1460: EMPTY
1461: LIST
1462: LIST
1463: PUSH
1464: LD_INT 22
1466: PUSH
1467: LD_EXP 7
1471: PUSH
1472: EMPTY
1473: LIST
1474: LIST
1475: PUSH
1476: EMPTY
1477: LIST
1478: LIST
1479: LIST
1480: PPUSH
1481: CALL_OW 69
1485: PUSH
1486: LD_INT 91
1488: DIFF
1489: PUSH
1490: FOR_IN
1491: IFFALSE 1522
// begin un = VytvorCloveka ( 3 ) ;
1493: LD_ADDR_VAR 0 4
1497: PUSH
1498: LD_INT 3
1500: PPUSH
1501: CALL 1815 0 1
1505: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
1506: LD_VAR 0 4
1510: PPUSH
1511: LD_VAR 0 2
1515: PPUSH
1516: CALL_OW 52
// end ;
1520: GO 1490
1522: POP
1523: POP
// mru1 = VytvorCloveka ( 1 ) ;
1524: LD_ADDR_EXP 25
1528: PUSH
1529: LD_INT 1
1531: PPUSH
1532: CALL 1815 0 1
1536: ST_TO_ADDR
// some1 = VytvorCloveka ( 2 ) ;
1537: LD_ADDR_LOC 1
1541: PUSH
1542: LD_INT 2
1544: PPUSH
1545: CALL 1815 0 1
1549: ST_TO_ADDR
// some2 = VytvorCloveka ( 2 ) ;
1550: LD_ADDR_LOC 2
1554: PUSH
1555: LD_INT 2
1557: PPUSH
1558: CALL 1815 0 1
1562: ST_TO_ADDR
// some3 = VytvorCloveka ( 2 ) ;
1563: LD_ADDR_LOC 3
1567: PUSH
1568: LD_INT 2
1570: PPUSH
1571: CALL 1815 0 1
1575: ST_TO_ADDR
// PlaceUnitXY ( some1 , 72 , 49 , false ) ;
1576: LD_LOC 1
1580: PPUSH
1581: LD_INT 72
1583: PPUSH
1584: LD_INT 49
1586: PPUSH
1587: LD_INT 0
1589: PPUSH
1590: CALL_OW 48
// PlaceUnitXY ( some2 , 54 , 46 , false ) ;
1594: LD_LOC 2
1598: PPUSH
1599: LD_INT 54
1601: PPUSH
1602: LD_INT 46
1604: PPUSH
1605: LD_INT 0
1607: PPUSH
1608: CALL_OW 48
// PlaceUnitXY ( some3 , 64 , 50 , false ) ;
1612: LD_LOC 3
1616: PPUSH
1617: LD_INT 64
1619: PPUSH
1620: LD_INT 50
1622: PPUSH
1623: LD_INT 0
1625: PPUSH
1626: CALL_OW 48
// end ;
1630: LD_VAR 0 1
1634: RET
// export function prepareVeh ; begin
1635: LD_INT 0
1637: PPUSH
// uc_side = 3 ;
1638: LD_ADDR_OWVAR 20
1642: PUSH
1643: LD_INT 3
1645: ST_TO_ADDR
// uc_nation = 3 ;
1646: LD_ADDR_OWVAR 21
1650: PUSH
1651: LD_INT 3
1653: ST_TO_ADDR
// if navrat_z_alaskitove_mise then
1654: LD_EXP 4
1658: IFFALSE 1670
// uc_direction = 2 else
1660: LD_ADDR_OWVAR 24
1664: PUSH
1665: LD_INT 2
1667: ST_TO_ADDR
1668: GO 1678
// uc_direction = 4 ;
1670: LD_ADDR_OWVAR 24
1674: PUSH
1675: LD_INT 4
1677: ST_TO_ADDR
// vc_chassis = ru_medium_wheeled ;
1678: LD_ADDR_OWVAR 37
1682: PUSH
1683: LD_INT 21
1685: ST_TO_ADDR
// vc_control = control_manual ;
1686: LD_ADDR_OWVAR 38
1690: PUSH
1691: LD_INT 1
1693: ST_TO_ADDR
// vc_engine = engine_combustion ;
1694: LD_ADDR_OWVAR 39
1698: PUSH
1699: LD_INT 1
1701: ST_TO_ADDR
// vc_fuel_battery = 100 ;
1702: LD_ADDR_OWVAR 41
1706: PUSH
1707: LD_INT 100
1709: ST_TO_ADDR
// vc_weapon = ru_heavy_machine_gun ;
1710: LD_ADDR_OWVAR 40
1714: PUSH
1715: LD_INT 42
1717: ST_TO_ADDR
// auto = CreateVehicle ;
1718: LD_ADDR_EXP 3
1722: PUSH
1723: CALL_OW 45
1727: ST_TO_ADDR
// if navrat_z_alaskitove_mise then
1728: LD_EXP 4
1732: IFFALSE 1766
// begin SetDir ( auto , 2 ) ;
1734: LD_EXP 3
1738: PPUSH
1739: LD_INT 2
1741: PPUSH
1742: CALL_OW 233
// PlaceUnitXY ( auto , 49 , 24 , false ) ;
1746: LD_EXP 3
1750: PPUSH
1751: LD_INT 49
1753: PPUSH
1754: LD_INT 24
1756: PPUSH
1757: LD_INT 0
1759: PPUSH
1760: CALL_OW 48
// end else
1764: GO 1796
// begin SetDir ( auto , 4 ) ;
1766: LD_EXP 3
1770: PPUSH
1771: LD_INT 4
1773: PPUSH
1774: CALL_OW 233
// PlaceUnitXY ( auto , 88 , 41 , false ) ;
1778: LD_EXP 3
1782: PPUSH
1783: LD_INT 88
1785: PPUSH
1786: LD_INT 41
1788: PPUSH
1789: LD_INT 0
1791: PPUSH
1792: CALL_OW 48
// end ; PlaceHumanInUnit ( vsevolod , auto ) ;
1796: LD_EXP 1
1800: PPUSH
1801: LD_EXP 3
1805: PPUSH
1806: CALL_OW 52
// end ;
1810: LD_VAR 0 1
1814: RET
// function VytvorCloveka ( povolani ) ; var x , mx ; begin
1815: LD_INT 0
1817: PPUSH
1818: PPUSH
1819: PPUSH
// x = 7 ;
1820: LD_ADDR_VAR 0 3
1824: PUSH
1825: LD_INT 7
1827: ST_TO_ADDR
// mx = 4 ;
1828: LD_ADDR_VAR 0 4
1832: PUSH
1833: LD_INT 4
1835: ST_TO_ADDR
// hc_name :=  ;
1836: LD_ADDR_OWVAR 26
1840: PUSH
1841: LD_STRING 
1843: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
1844: LD_ADDR_OWVAR 29
1848: PUSH
1849: LD_INT 9
1851: PPUSH
1852: LD_INT 11
1854: PPUSH
1855: CALL_OW 12
1859: PUSH
1860: LD_INT 9
1862: PPUSH
1863: LD_INT 11
1865: PPUSH
1866: CALL_OW 12
1870: PUSH
1871: EMPTY
1872: LIST
1873: LIST
1874: ST_TO_ADDR
// uc_nation := 3 ;
1875: LD_ADDR_OWVAR 21
1879: PUSH
1880: LD_INT 3
1882: ST_TO_ADDR
// uc_side = zeleny ;
1883: LD_ADDR_OWVAR 20
1887: PUSH
1888: LD_EXP 7
1892: ST_TO_ADDR
// if Prob ( 30 ) then
1893: LD_INT 30
1895: PPUSH
1896: CALL_OW 13
1900: IFFALSE 1912
// hc_sex := 2 else
1902: LD_ADDR_OWVAR 27
1906: PUSH
1907: LD_INT 2
1909: ST_TO_ADDR
1910: GO 1920
// hc_sex := 1 ;
1912: LD_ADDR_OWVAR 27
1916: PUSH
1917: LD_INT 1
1919: ST_TO_ADDR
// case povolani of 1 :
1920: LD_VAR 0 1
1924: PUSH
1925: LD_INT 1
1927: DOUBLE
1928: EQUAL
1929: IFTRUE 1933
1931: GO 2013
1933: POP
// begin hc_skills := [ rand ( x - 1 , x ) , rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( 0 , mx ) ] ;
1934: LD_ADDR_OWVAR 31
1938: PUSH
1939: LD_VAR 0 3
1943: PUSH
1944: LD_INT 1
1946: MINUS
1947: PPUSH
1948: LD_VAR 0 3
1952: PPUSH
1953: CALL_OW 12
1957: PUSH
1958: LD_INT 0
1960: PPUSH
1961: LD_VAR 0 4
1965: PPUSH
1966: CALL_OW 12
1970: PUSH
1971: LD_INT 0
1973: PPUSH
1974: LD_VAR 0 4
1978: PPUSH
1979: CALL_OW 12
1983: PUSH
1984: LD_INT 0
1986: PPUSH
1987: LD_VAR 0 4
1991: PPUSH
1992: CALL_OW 12
1996: PUSH
1997: EMPTY
1998: LIST
1999: LIST
2000: LIST
2001: LIST
2002: ST_TO_ADDR
// hc_class = class_soldier ;
2003: LD_ADDR_OWVAR 28
2007: PUSH
2008: LD_INT 1
2010: ST_TO_ADDR
// end ; 2 :
2011: GO 2366
2013: LD_INT 2
2015: DOUBLE
2016: EQUAL
2017: IFTRUE 2021
2019: GO 2101
2021: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( x - 1 , x ) , rand ( 0 , mx ) , rand ( 0 , mx ) ] ;
2022: LD_ADDR_OWVAR 31
2026: PUSH
2027: LD_INT 0
2029: PPUSH
2030: LD_VAR 0 4
2034: PPUSH
2035: CALL_OW 12
2039: PUSH
2040: LD_VAR 0 3
2044: PUSH
2045: LD_INT 1
2047: MINUS
2048: PPUSH
2049: LD_VAR 0 3
2053: PPUSH
2054: CALL_OW 12
2058: PUSH
2059: LD_INT 0
2061: PPUSH
2062: LD_VAR 0 4
2066: PPUSH
2067: CALL_OW 12
2071: PUSH
2072: LD_INT 0
2074: PPUSH
2075: LD_VAR 0 4
2079: PPUSH
2080: CALL_OW 12
2084: PUSH
2085: EMPTY
2086: LIST
2087: LIST
2088: LIST
2089: LIST
2090: ST_TO_ADDR
// hc_class = class_engineer ;
2091: LD_ADDR_OWVAR 28
2095: PUSH
2096: LD_INT 2
2098: ST_TO_ADDR
// end ; 3 :
2099: GO 2366
2101: LD_INT 3
2103: DOUBLE
2104: EQUAL
2105: IFTRUE 2109
2107: GO 2189
2109: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( x - 1 , x ) , rand ( 0 , mx ) ] ;
2110: LD_ADDR_OWVAR 31
2114: PUSH
2115: LD_INT 0
2117: PPUSH
2118: LD_VAR 0 4
2122: PPUSH
2123: CALL_OW 12
2127: PUSH
2128: LD_INT 0
2130: PPUSH
2131: LD_VAR 0 4
2135: PPUSH
2136: CALL_OW 12
2140: PUSH
2141: LD_VAR 0 3
2145: PUSH
2146: LD_INT 1
2148: MINUS
2149: PPUSH
2150: LD_VAR 0 3
2154: PPUSH
2155: CALL_OW 12
2159: PUSH
2160: LD_INT 0
2162: PPUSH
2163: LD_VAR 0 4
2167: PPUSH
2168: CALL_OW 12
2172: PUSH
2173: EMPTY
2174: LIST
2175: LIST
2176: LIST
2177: LIST
2178: ST_TO_ADDR
// hc_class = class_mechanic ;
2179: LD_ADDR_OWVAR 28
2183: PUSH
2184: LD_INT 3
2186: ST_TO_ADDR
// end ; 4 :
2187: GO 2366
2189: LD_INT 4
2191: DOUBLE
2192: EQUAL
2193: IFTRUE 2197
2195: GO 2277
2197: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( x - 1 , x ) ] ;
2198: LD_ADDR_OWVAR 31
2202: PUSH
2203: LD_INT 0
2205: PPUSH
2206: LD_VAR 0 4
2210: PPUSH
2211: CALL_OW 12
2215: PUSH
2216: LD_INT 0
2218: PPUSH
2219: LD_VAR 0 4
2223: PPUSH
2224: CALL_OW 12
2228: PUSH
2229: LD_INT 0
2231: PPUSH
2232: LD_VAR 0 4
2236: PPUSH
2237: CALL_OW 12
2241: PUSH
2242: LD_VAR 0 3
2246: PUSH
2247: LD_INT 1
2249: MINUS
2250: PPUSH
2251: LD_VAR 0 3
2255: PPUSH
2256: CALL_OW 12
2260: PUSH
2261: EMPTY
2262: LIST
2263: LIST
2264: LIST
2265: LIST
2266: ST_TO_ADDR
// hc_class = class_scientistic ;
2267: LD_ADDR_OWVAR 28
2271: PUSH
2272: LD_INT 4
2274: ST_TO_ADDR
// end ; class_bazooker :
2275: GO 2366
2277: LD_INT 9
2279: DOUBLE
2280: EQUAL
2281: IFTRUE 2285
2283: GO 2365
2285: POP
// begin hc_skills := [ rand ( x - 1 , x ) , rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( 0 , mx ) ] ;
2286: LD_ADDR_OWVAR 31
2290: PUSH
2291: LD_VAR 0 3
2295: PUSH
2296: LD_INT 1
2298: MINUS
2299: PPUSH
2300: LD_VAR 0 3
2304: PPUSH
2305: CALL_OW 12
2309: PUSH
2310: LD_INT 0
2312: PPUSH
2313: LD_VAR 0 4
2317: PPUSH
2318: CALL_OW 12
2322: PUSH
2323: LD_INT 0
2325: PPUSH
2326: LD_VAR 0 4
2330: PPUSH
2331: CALL_OW 12
2335: PUSH
2336: LD_INT 0
2338: PPUSH
2339: LD_VAR 0 4
2343: PPUSH
2344: CALL_OW 12
2348: PUSH
2349: EMPTY
2350: LIST
2351: LIST
2352: LIST
2353: LIST
2354: ST_TO_ADDR
// hc_class = class_bazooker ;
2355: LD_ADDR_OWVAR 28
2359: PUSH
2360: LD_INT 9
2362: ST_TO_ADDR
// end ; end ;
2363: GO 2366
2365: POP
// result := CreateHuman ( ) ;
2366: LD_ADDR_VAR 0 2
2370: PUSH
2371: CALL_OW 44
2375: ST_TO_ADDR
// end ;
2376: LD_VAR 0 2
2380: RET
// export function StartResources ; begin
2381: LD_INT 0
2383: PPUSH
// SetResourceType ( GetBase ( fakedepot ) , mat_cans , dif_depot_surky [ 1 ] ) ;
2384: LD_INT 22
2386: PPUSH
2387: CALL_OW 274
2391: PPUSH
2392: LD_INT 1
2394: PPUSH
2395: LD_EXP 70
2399: PUSH
2400: LD_INT 1
2402: ARRAY
2403: PPUSH
2404: CALL_OW 277
// SetResourceType ( GetBase ( fakedepot ) , mat_oil , dif_depot_surky [ 2 ] ) ;
2408: LD_INT 22
2410: PPUSH
2411: CALL_OW 274
2415: PPUSH
2416: LD_INT 2
2418: PPUSH
2419: LD_EXP 70
2423: PUSH
2424: LD_INT 2
2426: ARRAY
2427: PPUSH
2428: CALL_OW 277
// SetResourceType ( GetBase ( fakedepot ) , mat_siberit , dif_depot_surky [ 3 ] ) ;
2432: LD_INT 22
2434: PPUSH
2435: CALL_OW 274
2439: PPUSH
2440: LD_INT 3
2442: PPUSH
2443: LD_EXP 70
2447: PUSH
2448: LD_INT 3
2450: ARRAY
2451: PPUSH
2452: CALL_OW 277
// ; base = FilterAllUnits ( [ [ f_side , you ] , [ f_btype , b_warehouse ] ] ) [ 1 ] ;
2456: LD_ADDR_EXP 11
2460: PUSH
2461: LD_INT 22
2463: PUSH
2464: LD_EXP 6
2468: PUSH
2469: EMPTY
2470: LIST
2471: LIST
2472: PUSH
2473: LD_INT 30
2475: PUSH
2476: LD_INT 1
2478: PUSH
2479: EMPTY
2480: LIST
2481: LIST
2482: PUSH
2483: EMPTY
2484: LIST
2485: LIST
2486: PPUSH
2487: CALL_OW 69
2491: PUSH
2492: LD_INT 1
2494: ARRAY
2495: ST_TO_ADDR
// RemoveUnit ( fakedepot ) ;
2496: LD_INT 22
2498: PPUSH
2499: CALL_OW 64
// end ;
2503: LD_VAR 0 1
2507: 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
2508: LD_INT 0
2510: PPUSH
// bazy_oblasti = [ LesBaza ] ;
2511: LD_ADDR_EXP 33
2515: PUSH
2516: LD_INT 13
2518: PUSH
2519: EMPTY
2520: LIST
2521: ST_TO_ADDR
// dist_max = 60 ;
2522: LD_ADDR_EXP 34
2526: PUSH
2527: LD_INT 60
2529: ST_TO_ADDR
// hranice_leceni_utek = 700 ;
2530: LD_ADDR_EXP 35
2534: PUSH
2535: LD_INT 700
2537: ST_TO_ADDR
// hranice_oprava_utek = 740 ;
2538: LD_ADDR_EXP 37
2542: PUSH
2543: LD_INT 740
2545: ST_TO_ADDR
// hranice_budova_repair = 980 ;
2546: LD_ADDR_EXP 36
2550: PUSH
2551: LD_INT 980
2553: ST_TO_ADDR
// stredy_heal_oblasti = [ 64 , 41 ] ;
2554: LD_ADDR_EXP 38
2558: PUSH
2559: LD_INT 64
2561: PUSH
2562: LD_INT 41
2564: PUSH
2565: EMPTY
2566: LIST
2567: LIST
2568: ST_TO_ADDR
// stredy_repair_oblasti = [ 64 , 41 ] ;
2569: LD_ADDR_EXP 39
2573: PUSH
2574: LD_INT 64
2576: PUSH
2577: LD_INT 41
2579: PUSH
2580: EMPTY
2581: LIST
2582: LIST
2583: ST_TO_ADDR
// stredy_carpark_oblasti = [ 64 , 41 ] ;
2584: LD_ADDR_EXP 41
2588: PUSH
2589: LD_INT 64
2591: PUSH
2592: LD_INT 41
2594: PUSH
2595: EMPTY
2596: LIST
2597: LIST
2598: ST_TO_ADDR
// stredy_baz = [ 64 , 49 ] ;
2599: LD_ADDR_EXP 40
2603: PUSH
2604: LD_INT 64
2606: PUSH
2607: LD_INT 49
2609: PUSH
2610: EMPTY
2611: LIST
2612: LIST
2613: ST_TO_ADDR
// snipy_range = 20 ;
2614: LD_ADDR_EXP 42
2618: PUSH
2619: LD_INT 20
2621: ST_TO_ADDR
// radar_distance = 20 ;
2622: LD_ADDR_EXP 43
2626: PUSH
2627: LD_INT 20
2629: ST_TO_ADDR
// hranice_utok_repair_utek = 600 ;
2630: LD_ADDR_EXP 44
2634: PUSH
2635: LD_INT 600
2637: ST_TO_ADDR
// end ;
2638: LD_VAR 0 1
2642: RET
// export function BLevely ; begin
2643: LD_INT 0
2645: PPUSH
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , zeleny ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , zeleny ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
2646: LD_INT 21
2648: PUSH
2649: LD_INT 3
2651: PUSH
2652: EMPTY
2653: LIST
2654: LIST
2655: PUSH
2656: LD_INT 22
2658: PUSH
2659: LD_EXP 7
2663: PUSH
2664: EMPTY
2665: LIST
2666: LIST
2667: PUSH
2668: EMPTY
2669: LIST
2670: LIST
2671: PPUSH
2672: CALL_OW 69
2676: PPUSH
2677: LD_INT 52
2679: PUSH
2680: EMPTY
2681: LIST
2682: PUSH
2683: LD_INT 22
2685: PUSH
2686: LD_EXP 7
2690: PUSH
2691: EMPTY
2692: LIST
2693: LIST
2694: PUSH
2695: LD_INT 25
2697: PUSH
2698: LD_INT 2
2700: PUSH
2701: EMPTY
2702: LIST
2703: LIST
2704: PUSH
2705: EMPTY
2706: LIST
2707: LIST
2708: LIST
2709: PPUSH
2710: CALL_OW 69
2714: PUSH
2715: LD_INT 1
2717: ARRAY
2718: PPUSH
2719: LD_INT 2
2721: PPUSH
2722: CALL_OW 259
2726: PPUSH
2727: CALL_OW 241
// end ;
2731: LD_VAR 0 1
2735: RET
// export function VyjdiVen ( un ) ; begin
2736: LD_INT 0
2738: PPUSH
// if IsInUnit ( un ) then
2739: LD_VAR 0 1
2743: PPUSH
2744: CALL_OW 310
2748: IFFALSE 2815
// begin if GetType ( IsInUnit ( un ) ) = unit_building then
2750: LD_VAR 0 1
2754: PPUSH
2755: CALL_OW 310
2759: PPUSH
2760: CALL_OW 247
2764: PUSH
2765: LD_INT 3
2767: EQUAL
2768: IFFALSE 2779
// ComExitBuilding ( un ) ;
2770: LD_VAR 0 1
2774: PPUSH
2775: CALL_OW 122
// if GetType ( IsInUnit ( un ) ) = unit_vehicle then
2779: LD_VAR 0 1
2783: PPUSH
2784: CALL_OW 310
2788: PPUSH
2789: CALL_OW 247
2793: PUSH
2794: LD_INT 2
2796: EQUAL
2797: IFFALSE 2808
// ComExitVehicle ( un ) ;
2799: LD_VAR 0 1
2803: PPUSH
2804: CALL_OW 121
// Wait ( 0 0$0.2 ) ;
2808: LD_INT 7
2810: PPUSH
2811: CALL_OW 67
// end ; end ;
2815: LD_VAR 0 2
2819: RET
// export function NearestUnitToUnit2 ( list , un ) ; begin
2820: LD_INT 0
2822: PPUSH
// if not list then
2823: LD_VAR 0 1
2827: NOT
2828: IFFALSE 2840
// result = false else
2830: LD_ADDR_VAR 0 3
2834: PUSH
2835: LD_INT 0
2837: ST_TO_ADDR
2838: GO 2901
// begin if IsInUnit ( un ) and GetType ( un ) <> unit_building then
2840: LD_VAR 0 2
2844: PPUSH
2845: CALL_OW 310
2849: PUSH
2850: LD_VAR 0 2
2854: PPUSH
2855: CALL_OW 247
2859: PUSH
2860: LD_INT 3
2862: NONEQUAL
2863: AND
2864: IFFALSE 2881
// un = IsInUnit ( un ) ;
2866: LD_ADDR_VAR 0 2
2870: PUSH
2871: LD_VAR 0 2
2875: PPUSH
2876: CALL_OW 310
2880: ST_TO_ADDR
// result = NearestUnitToUnit ( list , un ) ;
2881: LD_ADDR_VAR 0 3
2885: PUSH
2886: LD_VAR 0 1
2890: PPUSH
2891: LD_VAR 0 2
2895: PPUSH
2896: CALL_OW 74
2900: ST_TO_ADDR
// end ; end ;
2901: LD_VAR 0 3
2905: RET
// export function IsInArea2 ( jedn , un ) ; begin
2906: LD_INT 0
2908: PPUSH
// if not jedn or jedn = 0 then
2909: LD_VAR 0 1
2913: NOT
2914: PUSH
2915: LD_VAR 0 1
2919: PUSH
2920: LD_INT 0
2922: EQUAL
2923: OR
2924: IFFALSE 2936
// result = false else
2926: LD_ADDR_VAR 0 3
2930: PUSH
2931: LD_INT 0
2933: ST_TO_ADDR
2934: GO 2956
// result = IsInArea ( jedn , un ) ;
2936: LD_ADDR_VAR 0 3
2940: PUSH
2941: LD_VAR 0 1
2945: PPUSH
2946: LD_VAR 0 2
2950: PPUSH
2951: CALL_OW 308
2955: ST_TO_ADDR
// end ;
2956: LD_VAR 0 3
2960: RET
// export function See2 ( side , un ) ; var x , y ; begin
2961: LD_INT 0
2963: PPUSH
2964: PPUSH
2965: PPUSH
// if not IsPlaced ( un ) or side < 1 then
2966: LD_VAR 0 2
2970: PPUSH
2971: CALL_OW 305
2975: NOT
2976: PUSH
2977: LD_VAR 0 1
2981: PUSH
2982: LD_INT 1
2984: LESS
2985: OR
2986: IFFALSE 2998
// result = false else
2988: LD_ADDR_VAR 0 3
2992: PUSH
2993: LD_INT 0
2995: ST_TO_ADDR
2996: GO 3065
// begin x := GetX ( un ) ;
2998: LD_ADDR_VAR 0 4
3002: PUSH
3003: LD_VAR 0 2
3007: PPUSH
3008: CALL_OW 250
3012: ST_TO_ADDR
// y := GetY ( un ) ;
3013: LD_ADDR_VAR 0 5
3017: PUSH
3018: LD_VAR 0 2
3022: PPUSH
3023: CALL_OW 251
3027: ST_TO_ADDR
// if not un then
3028: LD_VAR 0 2
3032: NOT
3033: IFFALSE 3045
// result = false else
3035: LD_ADDR_VAR 0 3
3039: PUSH
3040: LD_INT 0
3042: ST_TO_ADDR
3043: GO 3065
// begin result = See ( side , un ) ;
3045: LD_ADDR_VAR 0 3
3049: PUSH
3050: LD_VAR 0 1
3054: PPUSH
3055: LD_VAR 0 2
3059: PPUSH
3060: CALL_OW 292
3064: ST_TO_ADDR
// end ; end ; end ;
3065: LD_VAR 0 3
3069: RET
// every 0 0$0.75 trigger tick > 50 do
3070: LD_OWVAR 1
3074: PUSH
3075: LD_INT 50
3077: GREATER
3078: IFFALSE 3130
3080: GO 3082
3082: DISABLE
// begin if neutocit_na_velitele then
3083: LD_EXP 21
3087: IFFALSE 3091
// exit ;
3089: GO 3130
// AI_cast2 ( zeleny , LesBazaExpanded ) ;
3091: LD_EXP 7
3095: PPUSH
3096: LD_INT 14
3098: PPUSH
3099: CALL 4680 0 2
// Wait ( 0 0$0.4 ) ;
3103: LD_INT 14
3105: PPUSH
3106: CALL_OW 67
// AI_cast1 ( zeleny , LesBazaExpanded ) ;
3110: LD_EXP 7
3114: PPUSH
3115: LD_INT 14
3117: PPUSH
3118: CALL 3131 0 2
// Wait ( 0 0$0.3 ) ;
3122: LD_INT 10
3124: PPUSH
3125: CALL_OW 67
// enable ;
3129: ENABLE
// end ;
3130: 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
3131: LD_INT 0
3133: PPUSH
3134: PPUSH
3135: PPUSH
3136: PPUSH
3137: PPUSH
3138: PPUSH
3139: PPUSH
3140: PPUSH
3141: PPUSH
3142: PPUSH
3143: PPUSH
3144: PPUSH
3145: PPUSH
3146: PPUSH
3147: PPUSH
3148: PPUSH
3149: PPUSH
3150: PPUSH
3151: PPUSH
// side = strana ;
3152: LD_ADDR_VAR 0 5
3156: PUSH
3157: LD_VAR 0 1
3161: ST_TO_ADDR
// begin inzenyri = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_class , class_engineer ] , [ f_class , class_apeman_engineer ] ] ] ) ;
3162: LD_ADDR_VAR 0 11
3166: PUSH
3167: LD_INT 95
3169: PUSH
3170: LD_VAR 0 2
3174: PUSH
3175: EMPTY
3176: LIST
3177: LIST
3178: PUSH
3179: LD_INT 50
3181: PUSH
3182: EMPTY
3183: LIST
3184: PUSH
3185: LD_INT 22
3187: PUSH
3188: LD_VAR 0 5
3192: PUSH
3193: EMPTY
3194: LIST
3195: LIST
3196: PUSH
3197: LD_INT 2
3199: PUSH
3200: LD_INT 25
3202: PUSH
3203: LD_INT 2
3205: PUSH
3206: EMPTY
3207: LIST
3208: LIST
3209: PUSH
3210: LD_INT 25
3212: PUSH
3213: LD_INT 16
3215: PUSH
3216: EMPTY
3217: LIST
3218: LIST
3219: PUSH
3220: EMPTY
3221: LIST
3222: LIST
3223: LIST
3224: PUSH
3225: EMPTY
3226: LIST
3227: LIST
3228: LIST
3229: LIST
3230: PPUSH
3231: CALL_OW 69
3235: ST_TO_ADDR
// b = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_or , [ f_side , side ] , [ f_side , you ] ] , [ f_type , unit_building ] , [ f_not , [ f_lives , hranice_budova_repair ] ] ] ) diff arm ;
3236: LD_ADDR_VAR 0 7
3240: PUSH
3241: LD_INT 95
3243: PUSH
3244: LD_VAR 0 2
3248: PUSH
3249: EMPTY
3250: LIST
3251: LIST
3252: PUSH
3253: LD_INT 52
3255: PUSH
3256: EMPTY
3257: LIST
3258: PUSH
3259: LD_INT 2
3261: PUSH
3262: LD_INT 22
3264: PUSH
3265: LD_VAR 0 5
3269: PUSH
3270: EMPTY
3271: LIST
3272: LIST
3273: PUSH
3274: LD_INT 22
3276: PUSH
3277: LD_EXP 6
3281: PUSH
3282: EMPTY
3283: LIST
3284: LIST
3285: PUSH
3286: EMPTY
3287: LIST
3288: LIST
3289: LIST
3290: PUSH
3291: LD_INT 21
3293: PUSH
3294: LD_INT 3
3296: PUSH
3297: EMPTY
3298: LIST
3299: LIST
3300: PUSH
3301: LD_INT 3
3303: PUSH
3304: LD_INT 24
3306: PUSH
3307: LD_EXP 36
3311: PUSH
3312: EMPTY
3313: LIST
3314: LIST
3315: PUSH
3316: EMPTY
3317: LIST
3318: LIST
3319: PUSH
3320: EMPTY
3321: LIST
3322: LIST
3323: LIST
3324: LIST
3325: LIST
3326: PPUSH
3327: CALL_OW 69
3331: PUSH
3332: LD_INT 78
3334: DIFF
3335: ST_TO_ADDR
// ; b_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_or , [ f_side , side ] , [ f_side , you ] ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 250 ] ] ] ) diff arm ;
3336: LD_ADDR_VAR 0 8
3340: PUSH
3341: LD_INT 95
3343: PUSH
3344: LD_VAR 0 2
3348: PUSH
3349: EMPTY
3350: LIST
3351: LIST
3352: PUSH
3353: LD_INT 52
3355: PUSH
3356: EMPTY
3357: LIST
3358: PUSH
3359: LD_INT 2
3361: PUSH
3362: LD_INT 22
3364: PUSH
3365: LD_VAR 0 5
3369: PUSH
3370: EMPTY
3371: LIST
3372: LIST
3373: PUSH
3374: LD_INT 22
3376: PUSH
3377: LD_EXP 6
3381: PUSH
3382: EMPTY
3383: LIST
3384: LIST
3385: PUSH
3386: EMPTY
3387: LIST
3388: LIST
3389: LIST
3390: PUSH
3391: LD_INT 21
3393: PUSH
3394: LD_INT 3
3396: PUSH
3397: EMPTY
3398: LIST
3399: LIST
3400: PUSH
3401: LD_INT 3
3403: PUSH
3404: LD_INT 24
3406: PUSH
3407: LD_INT 250
3409: PUSH
3410: EMPTY
3411: LIST
3412: LIST
3413: PUSH
3414: EMPTY
3415: LIST
3416: LIST
3417: PUSH
3418: EMPTY
3419: LIST
3420: LIST
3421: LIST
3422: LIST
3423: LIST
3424: PPUSH
3425: CALL_OW 69
3429: PUSH
3430: LD_INT 78
3432: DIFF
3433: ST_TO_ADDR
// sklady = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
3434: LD_ADDR_VAR 0 10
3438: PUSH
3439: LD_INT 95
3441: PUSH
3442: LD_VAR 0 2
3446: PUSH
3447: EMPTY
3448: LIST
3449: LIST
3450: PUSH
3451: LD_INT 50
3453: PUSH
3454: EMPTY
3455: LIST
3456: PUSH
3457: LD_INT 22
3459: PUSH
3460: LD_VAR 0 5
3464: PUSH
3465: EMPTY
3466: LIST
3467: LIST
3468: PUSH
3469: LD_INT 2
3471: PUSH
3472: LD_INT 30
3474: PUSH
3475: LD_INT 0
3477: PUSH
3478: EMPTY
3479: LIST
3480: LIST
3481: PUSH
3482: LD_INT 30
3484: PUSH
3485: LD_INT 1
3487: PUSH
3488: EMPTY
3489: LIST
3490: LIST
3491: PUSH
3492: EMPTY
3493: LIST
3494: LIST
3495: LIST
3496: PUSH
3497: EMPTY
3498: LIST
3499: LIST
3500: LIST
3501: LIST
3502: PPUSH
3503: CALL_OW 69
3507: ST_TO_ADDR
// if inzenyri then
3508: LD_VAR 0 11
3512: IFFALSE 3929
// for un in inzenyri do
3514: LD_ADDR_VAR 0 6
3518: PUSH
3519: LD_VAR 0 11
3523: PUSH
3524: FOR_IN
3525: IFFALSE 3927
// begin if GetLives ( un ) < hranice_leceni_utek then
3527: LD_VAR 0 6
3531: PPUSH
3532: CALL_OW 256
3536: PUSH
3537: LD_EXP 35
3541: LESS
3542: IFFALSE 3555
// UtecDoNejblizsiHealOblasti ( un ) else
3544: LD_VAR 0 6
3548: PPUSH
3549: CALL 7525 0 1
3553: GO 3925
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
3555: LD_VAR 0 6
3559: PPUSH
3560: CALL_OW 256
3564: PUSH
3565: LD_INT 1000
3567: LESS
3568: PUSH
3569: LD_VAR 0 6
3573: PPUSH
3574: LD_VAR 0 6
3578: PPUSH
3579: CALL 7135 0 1
3583: PPUSH
3584: CALL 2906 0 2
3588: AND
3589: IFFALSE 3593
// else
3591: GO 3925
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
3593: LD_VAR 0 6
3597: PPUSH
3598: LD_VAR 0 6
3602: PPUSH
3603: CALL 7265 0 1
3607: PPUSH
3608: CALL_OW 299
3612: PUSH
3613: LD_INT 4
3615: GREATER
3616: IFFALSE 3639
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) else
3618: LD_VAR 0 6
3622: PPUSH
3623: LD_VAR 0 6
3627: PPUSH
3628: CALL 7135 0 1
3632: PPUSH
3633: CALL_OW 113
3637: GO 3925
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
3639: LD_VAR 0 8
3643: PUSH
3644: LD_VAR 0 6
3648: PPUSH
3649: LD_VAR 0 8
3653: PPUSH
3654: LD_VAR 0 6
3658: PPUSH
3659: CALL 2820 0 2
3663: PPUSH
3664: CALL_OW 296
3668: PUSH
3669: LD_EXP 34
3673: LESS
3674: AND
3675: IFFALSE 3718
// begin VyjdiVen ( un ) ;
3677: LD_VAR 0 6
3681: PPUSH
3682: CALL 2736 0 1
// if b_red then
3686: LD_VAR 0 8
3690: IFFALSE 3716
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
3692: LD_VAR 0 6
3696: PPUSH
3697: LD_VAR 0 8
3701: PPUSH
3702: LD_VAR 0 6
3706: PPUSH
3707: CALL 2820 0 2
3711: PPUSH
3712: CALL_OW 130
// end else
3716: GO 3925
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
3718: LD_VAR 0 7
3722: PUSH
3723: LD_VAR 0 6
3727: PPUSH
3728: LD_VAR 0 7
3732: PPUSH
3733: LD_VAR 0 6
3737: PPUSH
3738: CALL 2820 0 2
3742: PPUSH
3743: CALL_OW 296
3747: PUSH
3748: LD_EXP 34
3752: LESS
3753: AND
3754: IFFALSE 3797
// begin VyjdiVen ( un ) ;
3756: LD_VAR 0 6
3760: PPUSH
3761: CALL 2736 0 1
// if b then
3765: LD_VAR 0 7
3769: IFFALSE 3795
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
3771: LD_VAR 0 6
3775: PPUSH
3776: LD_VAR 0 7
3780: PPUSH
3781: LD_VAR 0 6
3785: PPUSH
3786: CALL 2820 0 2
3790: PPUSH
3791: CALL_OW 130
// end else
3795: GO 3925
// if not GetLives ( un ) = 1000 then
3797: LD_VAR 0 6
3801: PPUSH
3802: CALL_OW 256
3806: PUSH
3807: LD_INT 1000
3809: EQUAL
3810: NOT
3811: IFFALSE 3824
// UtecDoNejblizsiHealOblasti ( un ) else
3813: LD_VAR 0 6
3817: PPUSH
3818: CALL 7525 0 1
3822: GO 3925
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
3824: LD_VAR 0 6
3828: PPUSH
3829: CALL_OW 256
3833: PUSH
3834: LD_INT 1000
3836: EQUAL
3837: PUSH
3838: LD_VAR 0 6
3842: PPUSH
3843: CALL_OW 310
3847: PUSH
3848: LD_INT 0
3850: EQUAL
3851: AND
3852: IFFALSE 3925
// begin ComFree ( un ) ;
3854: LD_VAR 0 6
3858: PPUSH
3859: CALL_OW 139
// if sklady and GetDistUnits ( un , NearestUnitToUnit2 ( sklady , un ) ) < dist_max then
3863: LD_VAR 0 10
3867: PUSH
3868: LD_VAR 0 6
3872: PPUSH
3873: LD_VAR 0 10
3877: PPUSH
3878: LD_VAR 0 6
3882: PPUSH
3883: CALL 2820 0 2
3887: PPUSH
3888: CALL_OW 296
3892: PUSH
3893: LD_EXP 34
3897: LESS
3898: AND
3899: IFFALSE 3925
// ComEnterUnit ( un , NearestUnitToUnit2 ( sklady , un ) ) ;
3901: LD_VAR 0 6
3905: PPUSH
3906: LD_VAR 0 10
3910: PPUSH
3911: LD_VAR 0 6
3915: PPUSH
3916: CALL 2820 0 2
3920: PPUSH
3921: CALL_OW 120
// end ; end ;
3925: GO 3524
3927: POP
3928: 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 lesnitsky ;
3929: LD_ADDR_VAR 0 12
3933: PUSH
3934: LD_INT 95
3936: PUSH
3937: LD_VAR 0 2
3941: PUSH
3942: EMPTY
3943: LIST
3944: LIST
3945: PUSH
3946: LD_INT 50
3948: PUSH
3949: EMPTY
3950: LIST
3951: PUSH
3952: LD_INT 22
3954: PUSH
3955: LD_VAR 0 5
3959: PUSH
3960: EMPTY
3961: LIST
3962: LIST
3963: PUSH
3964: LD_INT 56
3966: PUSH
3967: EMPTY
3968: LIST
3969: PUSH
3970: LD_INT 2
3972: PUSH
3973: LD_INT 25
3975: PUSH
3976: LD_INT 1
3978: PUSH
3979: EMPTY
3980: LIST
3981: LIST
3982: PUSH
3983: LD_INT 25
3985: PUSH
3986: LD_INT 5
3988: PUSH
3989: EMPTY
3990: LIST
3991: LIST
3992: PUSH
3993: LD_INT 25
3995: PUSH
3996: LD_INT 9
3998: PUSH
3999: EMPTY
4000: LIST
4001: LIST
4002: PUSH
4003: LD_INT 25
4005: PUSH
4006: LD_INT 8
4008: PUSH
4009: EMPTY
4010: LIST
4011: LIST
4012: PUSH
4013: EMPTY
4014: LIST
4015: LIST
4016: LIST
4017: LIST
4018: LIST
4019: PUSH
4020: EMPTY
4021: LIST
4022: LIST
4023: LIST
4024: LIST
4025: LIST
4026: PPUSH
4027: CALL_OW 69
4031: PUSH
4032: LD_EXP 2
4036: DIFF
4037: 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 ] ] ] ) ;
4038: LD_ADDR_VAR 0 15
4042: PUSH
4043: LD_INT 95
4045: PUSH
4046: LD_VAR 0 2
4050: PUSH
4051: EMPTY
4052: LIST
4053: LIST
4054: PUSH
4055: LD_INT 52
4057: PUSH
4058: EMPTY
4059: LIST
4060: PUSH
4061: LD_INT 3
4063: PUSH
4064: LD_INT 57
4066: PUSH
4067: EMPTY
4068: LIST
4069: PUSH
4070: EMPTY
4071: LIST
4072: LIST
4073: PUSH
4074: LD_INT 50
4076: PUSH
4077: EMPTY
4078: LIST
4079: PUSH
4080: LD_INT 22
4082: PUSH
4083: LD_VAR 0 5
4087: PUSH
4088: EMPTY
4089: LIST
4090: LIST
4091: PUSH
4092: LD_INT 58
4094: PUSH
4095: EMPTY
4096: LIST
4097: PUSH
4098: LD_INT 2
4100: PUSH
4101: LD_INT 30
4103: PUSH
4104: LD_INT 31
4106: PUSH
4107: EMPTY
4108: LIST
4109: LIST
4110: PUSH
4111: LD_INT 30
4113: PUSH
4114: LD_INT 32
4116: PUSH
4117: EMPTY
4118: LIST
4119: LIST
4120: PUSH
4121: EMPTY
4122: LIST
4123: LIST
4124: LIST
4125: PUSH
4126: EMPTY
4127: LIST
4128: LIST
4129: LIST
4130: LIST
4131: LIST
4132: LIST
4133: LIST
4134: PPUSH
4135: CALL_OW 69
4139: 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 ] ] ] ) ;
4140: LD_ADDR_VAR 0 16
4144: PUSH
4145: LD_INT 95
4147: PUSH
4148: LD_VAR 0 2
4152: PUSH
4153: EMPTY
4154: LIST
4155: LIST
4156: PUSH
4157: LD_INT 52
4159: PUSH
4160: EMPTY
4161: LIST
4162: PUSH
4163: LD_INT 3
4165: PUSH
4166: LD_INT 57
4168: PUSH
4169: EMPTY
4170: LIST
4171: PUSH
4172: EMPTY
4173: LIST
4174: LIST
4175: PUSH
4176: LD_INT 50
4178: PUSH
4179: EMPTY
4180: LIST
4181: PUSH
4182: LD_INT 22
4184: PUSH
4185: LD_VAR 0 5
4189: PUSH
4190: EMPTY
4191: LIST
4192: LIST
4193: PUSH
4194: LD_INT 2
4196: PUSH
4197: LD_INT 30
4199: PUSH
4200: LD_INT 4
4202: PUSH
4203: EMPTY
4204: LIST
4205: LIST
4206: PUSH
4207: LD_INT 30
4209: PUSH
4210: LD_INT 5
4212: PUSH
4213: EMPTY
4214: LIST
4215: LIST
4216: PUSH
4217: EMPTY
4218: LIST
4219: LIST
4220: LIST
4221: PUSH
4222: EMPTY
4223: LIST
4224: LIST
4225: LIST
4226: LIST
4227: LIST
4228: LIST
4229: PPUSH
4230: CALL_OW 69
4234: ST_TO_ADDR
// for i in volne_kasy do
4235: LD_ADDR_VAR 0 4
4239: PUSH
4240: LD_VAR 0 16
4244: PUSH
4245: FOR_IN
4246: IFFALSE 4281
// if UnitsInside ( i ) > 5 then
4248: LD_VAR 0 4
4252: PPUSH
4253: CALL_OW 313
4257: PUSH
4258: LD_INT 5
4260: GREATER
4261: IFFALSE 4279
// volne_kasy = volne_kasy diff i ;
4263: LD_ADDR_VAR 0 16
4267: PUSH
4268: LD_VAR 0 16
4272: PUSH
4273: LD_VAR 0 4
4277: DIFF
4278: ST_TO_ADDR
4279: GO 4245
4281: POP
4282: POP
// if vojaci then
4283: LD_VAR 0 12
4287: IFFALSE 4675
// for un in vojaci do
4289: LD_ADDR_VAR 0 6
4293: PUSH
4294: LD_VAR 0 12
4298: PUSH
4299: FOR_IN
4300: IFFALSE 4673
// begin if GetLives ( un ) < hranice_leceni_utek then
4302: LD_VAR 0 6
4306: PPUSH
4307: CALL_OW 256
4311: PUSH
4312: LD_EXP 35
4316: LESS
4317: IFFALSE 4330
// UtecDoNejblizsiHealOblasti ( un ) else
4319: LD_VAR 0 6
4323: PPUSH
4324: CALL 7525 0 1
4328: GO 4671
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
4330: LD_VAR 0 6
4334: PPUSH
4335: CALL_OW 256
4339: PUSH
4340: LD_INT 1000
4342: LESS
4343: PUSH
4344: LD_VAR 0 6
4348: PPUSH
4349: LD_VAR 0 6
4353: PPUSH
4354: CALL 7135 0 1
4358: PPUSH
4359: CALL 2906 0 2
4363: AND
4364: IFFALSE 4368
// else
4366: GO 4671
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
4368: LD_VAR 0 6
4372: PPUSH
4373: LD_VAR 0 6
4377: PPUSH
4378: CALL 7265 0 1
4382: PPUSH
4383: CALL_OW 299
4387: PUSH
4388: LD_INT 4
4390: GREATER
4391: IFFALSE 4414
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) else
4393: LD_VAR 0 6
4397: PPUSH
4398: LD_VAR 0 6
4402: PPUSH
4403: CALL 7135 0 1
4407: PPUSH
4408: CALL_OW 113
4412: GO 4671
// if volne_bunkry then
4414: LD_VAR 0 15
4418: IFFALSE 4536
// begin for bunkr in volne_bunkry do
4420: LD_ADDR_VAR 0 13
4424: PUSH
4425: LD_VAR 0 15
4429: PUSH
4430: FOR_IN
4431: IFFALSE 4532
// begin if PocetJednotekCoJdouDoBudov ( vojaci ) = volne_bunkry + 0 then
4433: LD_VAR 0 12
4437: PPUSH
4438: CALL 7684 0 1
4442: PUSH
4443: LD_VAR 0 15
4447: PUSH
4448: LD_INT 0
4450: PLUS
4451: EQUAL
4452: IFFALSE 4456
// else
4454: GO 4530
// if GetDistUnits ( un , bunkr ) < dist_max and un = NejblizsiJednotkaCoNemaTask ( vojaci , bunkr ) then
4456: LD_VAR 0 6
4460: PPUSH
4461: LD_VAR 0 13
4465: PPUSH
4466: CALL_OW 296
4470: PUSH
4471: LD_EXP 34
4475: LESS
4476: PUSH
4477: LD_VAR 0 6
4481: PUSH
4482: LD_VAR 0 12
4486: PPUSH
4487: LD_VAR 0 13
4491: PPUSH
4492: CALL 7754 0 2
4496: EQUAL
4497: AND
4498: IFFALSE 4530
// begin ComEnterUnit ( un , bunkr ) ;
4500: LD_VAR 0 6
4504: PPUSH
4505: LD_VAR 0 13
4509: PPUSH
4510: CALL_OW 120
// volne_bunkry = volne_bunkry diff bunkr ;
4514: LD_ADDR_VAR 0 15
4518: PUSH
4519: LD_VAR 0 15
4523: PUSH
4524: LD_VAR 0 13
4528: DIFF
4529: ST_TO_ADDR
// end ; end ;
4530: GO 4430
4532: POP
4533: POP
// end else
4534: GO 4671
// if volne_kasy then
4536: LD_VAR 0 16
4540: IFFALSE 4634
// begin for kasa in volne_kasy do
4542: LD_ADDR_VAR 0 14
4546: PUSH
4547: LD_VAR 0 16
4551: PUSH
4552: FOR_IN
4553: IFFALSE 4630
// begin if UnitsInside ( kasa ) < 6 and un = NejblizsiJednotkaCoNemaTask ( vojaci , kasa ) and GetDistUnits ( un , kasa ) < dist_max then
4555: LD_VAR 0 14
4559: PPUSH
4560: CALL_OW 313
4564: PUSH
4565: LD_INT 6
4567: LESS
4568: PUSH
4569: LD_VAR 0 6
4573: PUSH
4574: LD_VAR 0 12
4578: PPUSH
4579: LD_VAR 0 14
4583: PPUSH
4584: CALL 7754 0 2
4588: EQUAL
4589: AND
4590: PUSH
4591: LD_VAR 0 6
4595: PPUSH
4596: LD_VAR 0 14
4600: PPUSH
4601: CALL_OW 296
4605: PUSH
4606: LD_EXP 34
4610: LESS
4611: AND
4612: IFFALSE 4628
// ComEnterUnit ( un , kasa ) ;
4614: LD_VAR 0 6
4618: PPUSH
4619: LD_VAR 0 14
4623: PPUSH
4624: CALL_OW 120
// end ;
4628: GO 4552
4630: POP
4631: POP
// end else
4632: GO 4671
// if not GetLives ( un ) = 1000 and not IsInUnit ( un ) then
4634: LD_VAR 0 6
4638: PPUSH
4639: CALL_OW 256
4643: PUSH
4644: LD_INT 1000
4646: EQUAL
4647: NOT
4648: PUSH
4649: LD_VAR 0 6
4653: PPUSH
4654: CALL_OW 310
4658: NOT
4659: AND
4660: IFFALSE 4671
// UtecDoNejblizsiHealOblasti ( un ) end ;
4662: LD_VAR 0 6
4666: PPUSH
4667: CALL 7525 0 1
4671: GO 4299
4673: POP
4674: POP
// end ; end ;
4675: LD_VAR 0 3
4679: 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
4680: LD_INT 0
4682: PPUSH
4683: PPUSH
4684: PPUSH
4685: PPUSH
4686: PPUSH
4687: PPUSH
4688: PPUSH
4689: PPUSH
4690: PPUSH
4691: PPUSH
4692: PPUSH
4693: PPUSH
4694: PPUSH
4695: PPUSH
4696: PPUSH
4697: PPUSH
4698: PPUSH
4699: PPUSH
4700: PPUSH
4701: PPUSH
4702: PPUSH
4703: PPUSH
4704: PPUSH
4705: PPUSH
4706: PPUSH
4707: PPUSH
// DoBunkru ( strana , area ) ;
4708: LD_VAR 0 1
4712: PPUSH
4713: LD_VAR 0 2
4717: PPUSH
4718: CALL 6700 0 2
// side = strana ;
4722: LD_ADDR_VAR 0 5
4726: PUSH
4727: LD_VAR 0 1
4731: ST_TO_ADDR
// begin doktori = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_scientistic ] ] ) diff mru8 ;
4732: LD_ADDR_VAR 0 9
4736: PUSH
4737: LD_INT 95
4739: PUSH
4740: LD_VAR 0 2
4744: PUSH
4745: EMPTY
4746: LIST
4747: LIST
4748: PUSH
4749: LD_INT 50
4751: PUSH
4752: EMPTY
4753: LIST
4754: PUSH
4755: LD_INT 22
4757: PUSH
4758: LD_VAR 0 5
4762: PUSH
4763: EMPTY
4764: LIST
4765: LIST
4766: PUSH
4767: LD_INT 25
4769: PUSH
4770: LD_INT 4
4772: PUSH
4773: EMPTY
4774: LIST
4775: LIST
4776: PUSH
4777: EMPTY
4778: LIST
4779: LIST
4780: LIST
4781: LIST
4782: PPUSH
4783: CALL_OW 69
4787: PUSH
4788: LD_EXP 32
4792: DIFF
4793: ST_TO_ADDR
// lidi = FilterAllUnits ( [ [ f_inarea , LesLeceni ] , [ f_placed ] , [ f_or , [ f_side , side ] , [ f_side , you ] ] , [ f_type , unit_human ] , [ f_outside ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
4794: LD_ADDR_VAR 0 11
4798: PUSH
4799: LD_INT 95
4801: PUSH
4802: LD_INT 15
4804: PUSH
4805: EMPTY
4806: LIST
4807: LIST
4808: PUSH
4809: LD_INT 52
4811: PUSH
4812: EMPTY
4813: LIST
4814: PUSH
4815: LD_INT 2
4817: PUSH
4818: LD_INT 22
4820: PUSH
4821: LD_VAR 0 5
4825: PUSH
4826: EMPTY
4827: LIST
4828: LIST
4829: PUSH
4830: LD_INT 22
4832: PUSH
4833: LD_EXP 6
4837: PUSH
4838: EMPTY
4839: LIST
4840: LIST
4841: PUSH
4842: EMPTY
4843: LIST
4844: LIST
4845: LIST
4846: PUSH
4847: LD_INT 21
4849: PUSH
4850: LD_INT 1
4852: PUSH
4853: EMPTY
4854: LIST
4855: LIST
4856: PUSH
4857: LD_INT 56
4859: PUSH
4860: EMPTY
4861: LIST
4862: PUSH
4863: LD_INT 3
4865: PUSH
4866: LD_INT 24
4868: PUSH
4869: LD_INT 1000
4871: PUSH
4872: EMPTY
4873: LIST
4874: LIST
4875: PUSH
4876: EMPTY
4877: LIST
4878: LIST
4879: PUSH
4880: EMPTY
4881: LIST
4882: LIST
4883: LIST
4884: LIST
4885: LIST
4886: LIST
4887: PPUSH
4888: CALL_OW 69
4892: ST_TO_ADDR
// lidi_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_or , [ f_side , side ] , [ f_side , you ] ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
4893: LD_ADDR_VAR 0 12
4897: PUSH
4898: LD_INT 95
4900: PUSH
4901: LD_VAR 0 2
4905: PUSH
4906: EMPTY
4907: LIST
4908: LIST
4909: PUSH
4910: LD_INT 52
4912: PUSH
4913: EMPTY
4914: LIST
4915: PUSH
4916: LD_INT 2
4918: PUSH
4919: LD_INT 22
4921: PUSH
4922: LD_VAR 0 5
4926: PUSH
4927: EMPTY
4928: LIST
4929: LIST
4930: PUSH
4931: LD_INT 22
4933: PUSH
4934: LD_EXP 6
4938: PUSH
4939: EMPTY
4940: LIST
4941: LIST
4942: PUSH
4943: EMPTY
4944: LIST
4945: LIST
4946: LIST
4947: PUSH
4948: LD_INT 21
4950: PUSH
4951: LD_INT 1
4953: PUSH
4954: EMPTY
4955: LIST
4956: LIST
4957: PUSH
4958: LD_INT 3
4960: PUSH
4961: LD_INT 24
4963: PUSH
4964: LD_INT 250
4966: PUSH
4967: EMPTY
4968: LIST
4969: LIST
4970: PUSH
4971: EMPTY
4972: LIST
4973: LIST
4974: PUSH
4975: EMPTY
4976: LIST
4977: LIST
4978: LIST
4979: LIST
4980: LIST
4981: PPUSH
4982: CALL_OW 69
4986: 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 ] ] ] ) ;
4987: LD_ADDR_VAR 0 7
4991: PUSH
4992: LD_INT 95
4994: PUSH
4995: LD_VAR 0 2
4999: PUSH
5000: EMPTY
5001: LIST
5002: LIST
5003: PUSH
5004: LD_INT 50
5006: PUSH
5007: EMPTY
5008: LIST
5009: PUSH
5010: LD_INT 22
5012: PUSH
5013: LD_VAR 0 5
5017: PUSH
5018: EMPTY
5019: LIST
5020: LIST
5021: PUSH
5022: LD_INT 2
5024: PUSH
5025: LD_INT 30
5027: PUSH
5028: LD_INT 6
5030: PUSH
5031: EMPTY
5032: LIST
5033: LIST
5034: PUSH
5035: LD_INT 30
5037: PUSH
5038: LD_INT 7
5040: PUSH
5041: EMPTY
5042: LIST
5043: LIST
5044: PUSH
5045: LD_INT 30
5047: PUSH
5048: LD_INT 8
5050: PUSH
5051: EMPTY
5052: LIST
5053: LIST
5054: PUSH
5055: EMPTY
5056: LIST
5057: LIST
5058: LIST
5059: LIST
5060: PUSH
5061: EMPTY
5062: LIST
5063: LIST
5064: LIST
5065: LIST
5066: PPUSH
5067: CALL_OW 69
5071: ST_TO_ADDR
// nepritel_red_vehs = FilterAllUnits ( [ [ f_not , [ f_lives , 250 ] ] , [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ;
5072: LD_ADDR_VAR 0 24
5076: PUSH
5077: LD_INT 3
5079: PUSH
5080: LD_INT 24
5082: PUSH
5083: LD_INT 250
5085: PUSH
5086: EMPTY
5087: LIST
5088: LIST
5089: PUSH
5090: EMPTY
5091: LIST
5092: LIST
5093: PUSH
5094: LD_INT 22
5096: PUSH
5097: LD_EXP 6
5101: PUSH
5102: EMPTY
5103: LIST
5104: LIST
5105: PUSH
5106: LD_INT 21
5108: PUSH
5109: LD_INT 2
5111: PUSH
5112: EMPTY
5113: LIST
5114: LIST
5115: PUSH
5116: EMPTY
5117: LIST
5118: LIST
5119: LIST
5120: PPUSH
5121: CALL_OW 69
5125: ST_TO_ADDR
// for i in labaky do
5126: LD_ADDR_VAR 0 4
5130: PUSH
5131: LD_VAR 0 7
5135: PUSH
5136: FOR_IN
5137: IFFALSE 5172
// if UnitsInside ( i ) > 5 then
5139: LD_VAR 0 4
5143: PPUSH
5144: CALL_OW 313
5148: PUSH
5149: LD_INT 5
5151: GREATER
5152: IFFALSE 5170
// labaky = labaky diff i ;
5154: LD_ADDR_VAR 0 7
5158: PUSH
5159: LD_VAR 0 7
5163: PUSH
5164: LD_VAR 0 4
5168: DIFF
5169: ST_TO_ADDR
5170: GO 5136
5172: POP
5173: POP
// if doktori then
5174: LD_VAR 0 9
5178: IFFALSE 5664
// for un in doktori do
5180: LD_ADDR_VAR 0 6
5184: PUSH
5185: LD_VAR 0 9
5189: PUSH
5190: FOR_IN
5191: IFFALSE 5662
// begin if GetLives ( un ) < hranice_leceni_utek then
5193: LD_VAR 0 6
5197: PPUSH
5198: CALL_OW 256
5202: PUSH
5203: LD_EXP 35
5207: LESS
5208: IFFALSE 5221
// UtecDoNejblizsiHealOblasti ( un ) else
5210: LD_VAR 0 6
5214: PPUSH
5215: CALL 7525 0 1
5219: GO 5660
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
5221: LD_VAR 0 6
5225: PPUSH
5226: LD_VAR 0 6
5230: PPUSH
5231: CALL 7265 0 1
5235: PPUSH
5236: CALL_OW 299
5240: PUSH
5241: LD_INT 4
5243: GREATER
5244: IFFALSE 5267
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) else
5246: LD_VAR 0 6
5250: PPUSH
5251: LD_VAR 0 6
5255: PPUSH
5256: CALL 7135 0 1
5260: PPUSH
5261: CALL_OW 113
5265: GO 5660
// if lidi_red and IsInArea2 ( NearestUnitToUnit2 ( lidi_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( lidi_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi_red , un ) ) < dist_max then
5267: LD_VAR 0 12
5271: PUSH
5272: LD_VAR 0 12
5276: PPUSH
5277: LD_VAR 0 6
5281: PPUSH
5282: CALL 2820 0 2
5286: PPUSH
5287: LD_VAR 0 12
5291: PPUSH
5292: LD_VAR 0 6
5296: PPUSH
5297: CALL 2820 0 2
5301: PPUSH
5302: CALL 7265 0 1
5306: PPUSH
5307: CALL 2906 0 2
5311: AND
5312: PUSH
5313: LD_VAR 0 6
5317: PPUSH
5318: LD_VAR 0 12
5322: PPUSH
5323: LD_VAR 0 6
5327: PPUSH
5328: CALL 2820 0 2
5332: PPUSH
5333: CALL_OW 296
5337: PUSH
5338: LD_EXP 34
5342: LESS
5343: AND
5344: IFFALSE 5387
// begin VyjdiVen ( un ) ;
5346: LD_VAR 0 6
5350: PPUSH
5351: CALL 2736 0 1
// if lidi_red then
5355: LD_VAR 0 12
5359: IFFALSE 5385
// ComHeal ( un , NearestUnitToUnit2 ( lidi_red , un ) ) ;
5361: LD_VAR 0 6
5365: PPUSH
5366: LD_VAR 0 12
5370: PPUSH
5371: LD_VAR 0 6
5375: PPUSH
5376: CALL 2820 0 2
5380: PPUSH
5381: CALL_OW 128
// end else
5385: GO 5660
// if lidi and IsInArea2 ( NearestUnitToUnit2 ( lidi , un ) , NajdiNejblizsiHealAreaExpanded ( NearestUnitToUnit2 ( lidi , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi , un ) ) < dist_max then
5387: LD_VAR 0 11
5391: PUSH
5392: LD_VAR 0 11
5396: PPUSH
5397: LD_VAR 0 6
5401: PPUSH
5402: CALL 2820 0 2
5406: PPUSH
5407: LD_VAR 0 11
5411: PPUSH
5412: LD_VAR 0 6
5416: PPUSH
5417: CALL 2820 0 2
5421: PPUSH
5422: CALL 7200 0 1
5426: PPUSH
5427: CALL 2906 0 2
5431: AND
5432: PUSH
5433: LD_VAR 0 6
5437: PPUSH
5438: LD_VAR 0 11
5442: PPUSH
5443: LD_VAR 0 6
5447: PPUSH
5448: CALL 2820 0 2
5452: PPUSH
5453: CALL_OW 296
5457: PUSH
5458: LD_EXP 34
5462: LESS
5463: AND
5464: IFFALSE 5507
// begin VyjdiVen ( un ) ;
5466: LD_VAR 0 6
5470: PPUSH
5471: CALL 2736 0 1
// if lidi then
5475: LD_VAR 0 11
5479: IFFALSE 5505
// ComHeal ( un , NearestUnitToUnit2 ( lidi , un ) ) ;
5481: LD_VAR 0 6
5485: PPUSH
5486: LD_VAR 0 11
5490: PPUSH
5491: LD_VAR 0 6
5495: PPUSH
5496: CALL 2820 0 2
5500: PPUSH
5501: CALL_OW 128
// end else
5505: GO 5660
// if not GetLives ( un ) = 1000 then
5507: LD_VAR 0 6
5511: PPUSH
5512: CALL_OW 256
5516: PUSH
5517: LD_INT 1000
5519: EQUAL
5520: NOT
5521: IFFALSE 5534
// UtecDoNejblizsiHealOblasti ( un ) else
5523: LD_VAR 0 6
5527: PPUSH
5528: CALL 7525 0 1
5532: GO 5660
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
5534: LD_VAR 0 6
5538: PPUSH
5539: CALL_OW 256
5543: PUSH
5544: LD_INT 1000
5546: EQUAL
5547: PUSH
5548: LD_VAR 0 6
5552: PPUSH
5553: CALL_OW 310
5557: PUSH
5558: LD_INT 0
5560: EQUAL
5561: AND
5562: IFFALSE 5660
// begin ComFree ( un ) ;
5564: LD_VAR 0 6
5568: PPUSH
5569: CALL_OW 139
// if labaky and GetDistUnits ( un , NearestUnitToUnit2 ( labaky , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( labaky , un ) ) < 6 then
5573: LD_VAR 0 7
5577: PUSH
5578: LD_VAR 0 6
5582: PPUSH
5583: LD_VAR 0 7
5587: PPUSH
5588: LD_VAR 0 6
5592: PPUSH
5593: CALL 2820 0 2
5597: PPUSH
5598: CALL_OW 296
5602: PUSH
5603: LD_EXP 34
5607: LESS
5608: AND
5609: PUSH
5610: LD_VAR 0 7
5614: PPUSH
5615: LD_VAR 0 6
5619: PPUSH
5620: CALL 2820 0 2
5624: PPUSH
5625: CALL_OW 313
5629: PUSH
5630: LD_INT 6
5632: LESS
5633: AND
5634: IFFALSE 5660
// ComEnterUnit ( un , NearestUnitToUnit2 ( labaky , un ) ) ;
5636: LD_VAR 0 6
5640: PPUSH
5641: LD_VAR 0 7
5645: PPUSH
5646: LD_VAR 0 6
5650: PPUSH
5651: CALL 2820 0 2
5655: PPUSH
5656: CALL_OW 120
// end ; end ;
5660: GO 5190
5662: POP
5663: POP
// mechanici = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_class , class_mechanic ] ] ) ;
5664: LD_ADDR_VAR 0 10
5668: PUSH
5669: LD_INT 95
5671: PUSH
5672: LD_VAR 0 2
5676: PUSH
5677: EMPTY
5678: LIST
5679: LIST
5680: PUSH
5681: LD_INT 50
5683: PUSH
5684: EMPTY
5685: LIST
5686: PUSH
5687: LD_INT 22
5689: PUSH
5690: LD_VAR 0 5
5694: PUSH
5695: EMPTY
5696: LIST
5697: LIST
5698: PUSH
5699: LD_INT 25
5701: PUSH
5702: LD_INT 3
5704: PUSH
5705: EMPTY
5706: LIST
5707: LIST
5708: PUSH
5709: EMPTY
5710: LIST
5711: LIST
5712: LIST
5713: LIST
5714: PPUSH
5715: CALL_OW 69
5719: ST_TO_ADDR
// auta = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
5720: LD_ADDR_VAR 0 13
5724: PUSH
5725: LD_INT 95
5727: PUSH
5728: LD_VAR 0 2
5732: PUSH
5733: EMPTY
5734: LIST
5735: LIST
5736: PUSH
5737: LD_INT 52
5739: PUSH
5740: EMPTY
5741: LIST
5742: PUSH
5743: LD_INT 22
5745: PUSH
5746: LD_VAR 0 5
5750: PUSH
5751: EMPTY
5752: LIST
5753: LIST
5754: PUSH
5755: LD_INT 21
5757: PUSH
5758: LD_INT 2
5760: PUSH
5761: EMPTY
5762: LIST
5763: LIST
5764: PUSH
5765: LD_INT 3
5767: PUSH
5768: LD_INT 24
5770: PUSH
5771: LD_INT 1000
5773: PUSH
5774: EMPTY
5775: LIST
5776: LIST
5777: PUSH
5778: EMPTY
5779: LIST
5780: LIST
5781: PUSH
5782: EMPTY
5783: LIST
5784: LIST
5785: LIST
5786: LIST
5787: LIST
5788: PPUSH
5789: CALL_OW 69
5793: ST_TO_ADDR
// auta_red = FilterAllUnits ( [ [ f_inarea , area ] , [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
5794: LD_ADDR_VAR 0 14
5798: PUSH
5799: LD_INT 95
5801: PUSH
5802: LD_VAR 0 2
5806: PUSH
5807: EMPTY
5808: LIST
5809: LIST
5810: PUSH
5811: LD_INT 52
5813: PUSH
5814: EMPTY
5815: LIST
5816: PUSH
5817: LD_INT 22
5819: PUSH
5820: LD_VAR 0 5
5824: PUSH
5825: EMPTY
5826: LIST
5827: LIST
5828: PUSH
5829: LD_INT 21
5831: PUSH
5832: LD_INT 2
5834: PUSH
5835: EMPTY
5836: LIST
5837: LIST
5838: PUSH
5839: LD_INT 3
5841: PUSH
5842: LD_INT 24
5844: PUSH
5845: LD_INT 250
5847: PUSH
5848: EMPTY
5849: LIST
5850: LIST
5851: PUSH
5852: EMPTY
5853: LIST
5854: LIST
5855: PUSH
5856: EMPTY
5857: LIST
5858: LIST
5859: LIST
5860: LIST
5861: LIST
5862: PPUSH
5863: CALL_OW 69
5867: ST_TO_ADDR
// tovarny = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) ;
5868: LD_ADDR_VAR 0 8
5872: PUSH
5873: LD_INT 95
5875: PUSH
5876: LD_VAR 0 2
5880: PUSH
5881: EMPTY
5882: LIST
5883: LIST
5884: PUSH
5885: LD_INT 50
5887: PUSH
5888: EMPTY
5889: LIST
5890: PUSH
5891: LD_INT 22
5893: PUSH
5894: LD_VAR 0 5
5898: PUSH
5899: EMPTY
5900: LIST
5901: LIST
5902: PUSH
5903: LD_INT 2
5905: PUSH
5906: LD_INT 30
5908: PUSH
5909: LD_INT 2
5911: PUSH
5912: EMPTY
5913: LIST
5914: LIST
5915: PUSH
5916: LD_INT 30
5918: PUSH
5919: LD_INT 3
5921: PUSH
5922: EMPTY
5923: LIST
5924: LIST
5925: PUSH
5926: EMPTY
5927: LIST
5928: LIST
5929: LIST
5930: PUSH
5931: EMPTY
5932: LIST
5933: LIST
5934: LIST
5935: LIST
5936: PPUSH
5937: CALL_OW 69
5941: ST_TO_ADDR
// dalkova_vez = FilterAllUnits ( [ [ f_inarea , area ] , [ f_ok ] , [ f_side , side ] , [ f_btype , b_control_tower ] ] ) ;
5942: LD_ADDR_VAR 0 28
5946: PUSH
5947: LD_INT 95
5949: PUSH
5950: LD_VAR 0 2
5954: PUSH
5955: EMPTY
5956: LIST
5957: LIST
5958: PUSH
5959: LD_INT 50
5961: PUSH
5962: EMPTY
5963: LIST
5964: PUSH
5965: LD_INT 22
5967: PUSH
5968: LD_VAR 0 5
5972: PUSH
5973: EMPTY
5974: LIST
5975: LIST
5976: PUSH
5977: LD_INT 30
5979: PUSH
5980: LD_INT 36
5982: PUSH
5983: EMPTY
5984: LIST
5985: LIST
5986: PUSH
5987: EMPTY
5988: LIST
5989: LIST
5990: LIST
5991: LIST
5992: PPUSH
5993: CALL_OW 69
5997: ST_TO_ADDR
// for i in tovarny do
5998: LD_ADDR_VAR 0 4
6002: PUSH
6003: LD_VAR 0 8
6007: PUSH
6008: FOR_IN
6009: IFFALSE 6044
// if UnitsInside ( i ) > 5 then
6011: LD_VAR 0 4
6015: PPUSH
6016: CALL_OW 313
6020: PUSH
6021: LD_INT 5
6023: GREATER
6024: IFFALSE 6042
// tovarny = tovarny diff i ;
6026: LD_ADDR_VAR 0 8
6030: PUSH
6031: LD_VAR 0 8
6035: PUSH
6036: LD_VAR 0 4
6040: DIFF
6041: ST_TO_ADDR
6042: GO 6008
6044: POP
6045: POP
// if mechanici then
6046: LD_VAR 0 10
6050: IFFALSE 6695
// for un in mechanici do
6052: LD_ADDR_VAR 0 6
6056: PUSH
6057: LD_VAR 0 10
6061: PUSH
6062: FOR_IN
6063: IFFALSE 6693
// begin if not GetBType ( IsInUnit ( un ) ) = b_control_tower then
6065: LD_VAR 0 6
6069: PPUSH
6070: CALL_OW 310
6074: PPUSH
6075: CALL_OW 266
6079: PUSH
6080: LD_INT 36
6082: EQUAL
6083: NOT
6084: IFFALSE 6691
// begin if GetLives ( un ) < hranice_leceni_utek then
6086: LD_VAR 0 6
6090: PPUSH
6091: CALL_OW 256
6095: PUSH
6096: LD_EXP 35
6100: LESS
6101: IFFALSE 6114
// UtecDoNejblizsiHealOblasti ( un ) else
6103: LD_VAR 0 6
6107: PPUSH
6108: CALL 7525 0 1
6112: GO 6691
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
6114: LD_VAR 0 6
6118: PPUSH
6119: CALL_OW 256
6123: PUSH
6124: LD_INT 1000
6126: LESS
6127: PUSH
6128: LD_VAR 0 6
6132: PPUSH
6133: LD_VAR 0 6
6137: PPUSH
6138: CALL 7135 0 1
6142: PPUSH
6143: CALL 2906 0 2
6147: AND
6148: IFFALSE 6152
// else
6150: GO 6691
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6152: LD_VAR 0 6
6156: PPUSH
6157: LD_VAR 0 6
6161: PPUSH
6162: CALL 7265 0 1
6166: PPUSH
6167: CALL_OW 299
6171: PUSH
6172: LD_INT 4
6174: GREATER
6175: IFFALSE 6198
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) else
6177: LD_VAR 0 6
6181: PPUSH
6182: LD_VAR 0 6
6186: PPUSH
6187: CALL 7135 0 1
6191: PPUSH
6192: CALL_OW 113
6196: GO 6691
// 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
6198: LD_VAR 0 14
6202: PUSH
6203: LD_VAR 0 6
6207: PPUSH
6208: CALL 7843 0 1
6212: AND
6213: PUSH
6214: LD_VAR 0 14
6218: PPUSH
6219: LD_VAR 0 6
6223: PPUSH
6224: CALL 2820 0 2
6228: PPUSH
6229: LD_VAR 0 14
6233: PPUSH
6234: LD_VAR 0 6
6238: PPUSH
6239: CALL 2820 0 2
6243: PPUSH
6244: CALL 7265 0 1
6248: PPUSH
6249: CALL 2906 0 2
6253: AND
6254: PUSH
6255: LD_VAR 0 6
6259: PPUSH
6260: LD_VAR 0 14
6264: PPUSH
6265: LD_VAR 0 6
6269: PPUSH
6270: CALL 2820 0 2
6274: PPUSH
6275: CALL_OW 296
6279: PUSH
6280: LD_EXP 34
6284: LESS
6285: AND
6286: IFFALSE 6329
// begin VyjdiVen ( un ) ;
6288: LD_VAR 0 6
6292: PPUSH
6293: CALL 2736 0 1
// if auta_red then
6297: LD_VAR 0 14
6301: IFFALSE 6327
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta_red , un ) ) ;
6303: LD_VAR 0 6
6307: PPUSH
6308: LD_VAR 0 14
6312: PPUSH
6313: LD_VAR 0 6
6317: PPUSH
6318: CALL 2820 0 2
6322: PPUSH
6323: CALL_OW 129
// end else
6327: GO 6691
// if auta and IsInArea2 ( NearestUnitToUnit2 ( auta , un ) , NajdiNejblizsiRepairAreaExpanded ( NearestUnitToUnit2 ( auta , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta , un ) ) < dist_max then
6329: LD_VAR 0 13
6333: PUSH
6334: LD_VAR 0 13
6338: PPUSH
6339: LD_VAR 0 6
6343: PPUSH
6344: CALL 2820 0 2
6348: PPUSH
6349: LD_VAR 0 13
6353: PPUSH
6354: LD_VAR 0 6
6358: PPUSH
6359: CALL 2820 0 2
6363: PPUSH
6364: CALL 7395 0 1
6368: PPUSH
6369: CALL 2906 0 2
6373: AND
6374: PUSH
6375: LD_VAR 0 6
6379: PPUSH
6380: LD_VAR 0 13
6384: PPUSH
6385: LD_VAR 0 6
6389: PPUSH
6390: CALL 2820 0 2
6394: PPUSH
6395: CALL_OW 296
6399: PUSH
6400: LD_EXP 34
6404: LESS
6405: AND
6406: IFFALSE 6449
// begin VyjdiVen ( un ) ;
6408: LD_VAR 0 6
6412: PPUSH
6413: CALL 2736 0 1
// if auta then
6417: LD_VAR 0 13
6421: IFFALSE 6447
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta , un ) ) ;
6423: LD_VAR 0 6
6427: PPUSH
6428: LD_VAR 0 13
6432: PPUSH
6433: LD_VAR 0 6
6437: PPUSH
6438: CALL 2820 0 2
6442: PPUSH
6443: CALL_OW 129
// end else
6447: GO 6691
// if not GetLives ( un ) = 1000 then
6449: LD_VAR 0 6
6453: PPUSH
6454: CALL_OW 256
6458: PUSH
6459: LD_INT 1000
6461: EQUAL
6462: NOT
6463: IFFALSE 6476
// UtecDoNejblizsiHealOblasti ( un ) else
6465: LD_VAR 0 6
6469: PPUSH
6470: CALL 7525 0 1
6474: GO 6691
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
6476: LD_VAR 0 6
6480: PPUSH
6481: CALL_OW 256
6485: PUSH
6486: LD_INT 1000
6488: EQUAL
6489: PUSH
6490: LD_VAR 0 6
6494: PPUSH
6495: CALL_OW 310
6499: PUSH
6500: LD_INT 0
6502: EQUAL
6503: AND
6504: IFFALSE 6691
// begin ComFree ( un ) ;
6506: LD_VAR 0 6
6510: PPUSH
6511: CALL_OW 139
// if dalkova_vez and GetDistUnits ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( dalkova_vez , un ) ) < 3 then
6515: LD_VAR 0 28
6519: PUSH
6520: LD_VAR 0 6
6524: PPUSH
6525: LD_VAR 0 28
6529: PPUSH
6530: LD_VAR 0 6
6534: PPUSH
6535: CALL 2820 0 2
6539: PPUSH
6540: CALL_OW 296
6544: PUSH
6545: LD_EXP 34
6549: LESS
6550: AND
6551: PUSH
6552: LD_VAR 0 28
6556: PPUSH
6557: LD_VAR 0 6
6561: PPUSH
6562: CALL 2820 0 2
6566: PPUSH
6567: CALL_OW 313
6571: PUSH
6572: LD_INT 3
6574: LESS
6575: AND
6576: IFFALSE 6604
// ComEnterUnit ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) else
6578: LD_VAR 0 6
6582: PPUSH
6583: LD_VAR 0 28
6587: PPUSH
6588: LD_VAR 0 6
6592: PPUSH
6593: CALL 2820 0 2
6597: PPUSH
6598: CALL_OW 120
6602: GO 6691
// if tovarny and GetDistUnits ( un , NearestUnitToUnit2 ( tovarny , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( tovarny , un ) ) < 6 then
6604: LD_VAR 0 8
6608: PUSH
6609: LD_VAR 0 6
6613: PPUSH
6614: LD_VAR 0 8
6618: PPUSH
6619: LD_VAR 0 6
6623: PPUSH
6624: CALL 2820 0 2
6628: PPUSH
6629: CALL_OW 296
6633: PUSH
6634: LD_EXP 34
6638: LESS
6639: AND
6640: PUSH
6641: LD_VAR 0 8
6645: PPUSH
6646: LD_VAR 0 6
6650: PPUSH
6651: CALL 2820 0 2
6655: PPUSH
6656: CALL_OW 313
6660: PUSH
6661: LD_INT 6
6663: LESS
6664: AND
6665: IFFALSE 6691
// ComEnterUnit ( un , NearestUnitToUnit2 ( tovarny , un ) ) ;
6667: LD_VAR 0 6
6671: PPUSH
6672: LD_VAR 0 8
6676: PPUSH
6677: LD_VAR 0 6
6681: PPUSH
6682: CALL 2820 0 2
6686: PPUSH
6687: CALL_OW 120
// end ; end ; end ;
6691: GO 6062
6693: POP
6694: POP
// end ; end ;
6695: LD_VAR 0 3
6699: RET
// var poslednitick ; function DoBunkru ( side , area ) ; var vojaci , vojaciout , volne_bunkry , kasy , cl ; begin
6700: LD_INT 0
6702: PPUSH
6703: PPUSH
6704: PPUSH
6705: PPUSH
6706: PPUSH
6707: PPUSH
// if not poslednitick then
6708: LD_LOC 4
6712: NOT
6713: IFFALSE 6725
// poslednitick = tick ;
6715: LD_ADDR_LOC 4
6719: PUSH
6720: LD_OWVAR 1
6724: ST_TO_ADDR
// if tick > poslednitick + 100 then
6725: LD_OWVAR 1
6729: PUSH
6730: LD_LOC 4
6734: PUSH
6735: LD_INT 100
6737: PLUS
6738: GREATER
6739: IFFALSE 7130
// 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 ] ] ] ) ;
6741: LD_ADDR_VAR 0 5
6745: PUSH
6746: LD_INT 95
6748: PUSH
6749: LD_VAR 0 2
6753: PUSH
6754: EMPTY
6755: LIST
6756: LIST
6757: PUSH
6758: LD_INT 50
6760: PUSH
6761: EMPTY
6762: LIST
6763: PUSH
6764: LD_INT 22
6766: PUSH
6767: LD_VAR 0 1
6771: PUSH
6772: EMPTY
6773: LIST
6774: LIST
6775: PUSH
6776: LD_INT 56
6778: PUSH
6779: EMPTY
6780: LIST
6781: PUSH
6782: LD_INT 2
6784: PUSH
6785: LD_INT 25
6787: PUSH
6788: LD_INT 1
6790: PUSH
6791: EMPTY
6792: LIST
6793: LIST
6794: PUSH
6795: LD_INT 25
6797: PUSH
6798: LD_INT 5
6800: PUSH
6801: EMPTY
6802: LIST
6803: LIST
6804: PUSH
6805: LD_INT 25
6807: PUSH
6808: LD_INT 9
6810: PUSH
6811: EMPTY
6812: LIST
6813: LIST
6814: PUSH
6815: LD_INT 25
6817: PUSH
6818: LD_INT 8
6820: PUSH
6821: EMPTY
6822: LIST
6823: LIST
6824: PUSH
6825: EMPTY
6826: LIST
6827: LIST
6828: LIST
6829: LIST
6830: LIST
6831: PUSH
6832: EMPTY
6833: LIST
6834: LIST
6835: LIST
6836: LIST
6837: LIST
6838: PPUSH
6839: CALL_OW 69
6843: 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 ] ] ] ) ;
6844: LD_ADDR_VAR 0 6
6848: PUSH
6849: LD_INT 95
6851: PUSH
6852: LD_VAR 0 2
6856: PUSH
6857: EMPTY
6858: LIST
6859: LIST
6860: PUSH
6861: LD_INT 52
6863: PUSH
6864: EMPTY
6865: LIST
6866: PUSH
6867: LD_INT 3
6869: PUSH
6870: LD_INT 57
6872: PUSH
6873: EMPTY
6874: LIST
6875: PUSH
6876: EMPTY
6877: LIST
6878: LIST
6879: PUSH
6880: LD_INT 50
6882: PUSH
6883: EMPTY
6884: LIST
6885: PUSH
6886: LD_INT 22
6888: PUSH
6889: LD_VAR 0 1
6893: PUSH
6894: EMPTY
6895: LIST
6896: LIST
6897: PUSH
6898: LD_INT 58
6900: PUSH
6901: EMPTY
6902: LIST
6903: PUSH
6904: LD_INT 2
6906: PUSH
6907: LD_INT 30
6909: PUSH
6910: LD_INT 31
6912: PUSH
6913: EMPTY
6914: LIST
6915: LIST
6916: PUSH
6917: LD_INT 30
6919: PUSH
6920: LD_INT 32
6922: PUSH
6923: EMPTY
6924: LIST
6925: LIST
6926: PUSH
6927: EMPTY
6928: LIST
6929: LIST
6930: LIST
6931: PUSH
6932: EMPTY
6933: LIST
6934: LIST
6935: LIST
6936: LIST
6937: LIST
6938: LIST
6939: LIST
6940: PPUSH
6941: CALL_OW 69
6945: 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 ] ] ] ) ;
6946: LD_ADDR_VAR 0 7
6950: PUSH
6951: LD_INT 95
6953: PUSH
6954: LD_VAR 0 2
6958: PUSH
6959: EMPTY
6960: LIST
6961: LIST
6962: PUSH
6963: LD_INT 52
6965: PUSH
6966: EMPTY
6967: LIST
6968: PUSH
6969: LD_INT 3
6971: PUSH
6972: LD_INT 57
6974: PUSH
6975: EMPTY
6976: LIST
6977: PUSH
6978: EMPTY
6979: LIST
6980: LIST
6981: PUSH
6982: LD_INT 3
6984: PUSH
6985: LD_INT 58
6987: PUSH
6988: EMPTY
6989: LIST
6990: PUSH
6991: EMPTY
6992: LIST
6993: LIST
6994: PUSH
6995: LD_INT 50
6997: PUSH
6998: EMPTY
6999: LIST
7000: PUSH
7001: LD_INT 22
7003: PUSH
7004: LD_VAR 0 1
7008: PUSH
7009: EMPTY
7010: LIST
7011: LIST
7012: PUSH
7013: LD_INT 2
7015: PUSH
7016: LD_INT 30
7018: PUSH
7019: LD_INT 4
7021: PUSH
7022: EMPTY
7023: LIST
7024: LIST
7025: PUSH
7026: LD_INT 30
7028: PUSH
7029: LD_INT 5
7031: PUSH
7032: EMPTY
7033: LIST
7034: LIST
7035: PUSH
7036: EMPTY
7037: LIST
7038: LIST
7039: LIST
7040: PUSH
7041: EMPTY
7042: LIST
7043: LIST
7044: LIST
7045: LIST
7046: LIST
7047: LIST
7048: LIST
7049: PPUSH
7050: CALL_OW 69
7054: ST_TO_ADDR
// if volne_bunkry and kasy and not vojaciout then
7055: LD_VAR 0 6
7059: PUSH
7060: LD_VAR 0 7
7064: AND
7065: PUSH
7066: LD_VAR 0 5
7070: NOT
7071: AND
7072: IFFALSE 7130
// begin cl = UnitsInside ( kasy [ 1 ] ) [ 1 ] ;
7074: LD_ADDR_VAR 0 8
7078: PUSH
7079: LD_VAR 0 7
7083: PUSH
7084: LD_INT 1
7086: ARRAY
7087: PPUSH
7088: CALL_OW 313
7092: PUSH
7093: LD_INT 1
7095: ARRAY
7096: ST_TO_ADDR
// if cl then
7097: LD_VAR 0 8
7101: IFFALSE 7130
// begin VyjdiVen ( cl ) ;
7103: LD_VAR 0 8
7107: PPUSH
7108: CALL 2736 0 1
// ComEnterUnit ( cl , volne_bunkry [ 1 ] ) ;
7112: LD_VAR 0 8
7116: PPUSH
7117: LD_VAR 0 6
7121: PUSH
7122: LD_INT 1
7124: ARRAY
7125: PPUSH
7126: CALL_OW 120
// end ; end ; end ; end ;
7130: LD_VAR 0 3
7134: RET
// export function NajdiNejblizsiHealArea ( un ) ; begin
7135: LD_INT 0
7137: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 64 , 41 ] :
7138: LD_EXP 38
7142: PPUSH
7143: LD_VAR 0 1
7147: PPUSH
7148: CALL_OW 250
7152: PPUSH
7153: LD_VAR 0 1
7157: PPUSH
7158: CALL_OW 251
7162: PPUSH
7163: CALL_OW 439
7167: PUSH
7168: LD_INT 64
7170: PUSH
7171: LD_INT 41
7173: PUSH
7174: EMPTY
7175: LIST
7176: LIST
7177: DOUBLE
7178: EQUAL
7179: IFTRUE 7183
7181: GO 7194
7183: POP
// result = LesLeceni ; end ;
7184: LD_ADDR_VAR 0 2
7188: PUSH
7189: LD_INT 15
7191: ST_TO_ADDR
7192: GO 7195
7194: POP
// end ;
7195: LD_VAR 0 2
7199: RET
// export function NajdiNejblizsiHealAreaExpanded ( un ) ; begin
7200: LD_INT 0
7202: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 64 , 41 ] :
7203: LD_EXP 38
7207: PPUSH
7208: LD_VAR 0 1
7212: PPUSH
7213: CALL_OW 250
7217: PPUSH
7218: LD_VAR 0 1
7222: PPUSH
7223: CALL_OW 251
7227: PPUSH
7228: CALL_OW 439
7232: PUSH
7233: LD_INT 64
7235: PUSH
7236: LD_INT 41
7238: PUSH
7239: EMPTY
7240: LIST
7241: LIST
7242: DOUBLE
7243: EQUAL
7244: IFTRUE 7248
7246: GO 7259
7248: POP
// result = LesLeceniExpanded ; end ;
7249: LD_ADDR_VAR 0 2
7253: PUSH
7254: LD_INT 16
7256: ST_TO_ADDR
7257: GO 7260
7259: POP
// end ;
7260: LD_VAR 0 2
7264: RET
// export function NajdiNejblizsiBaseArea ( un ) ; begin
7265: LD_INT 0
7267: PPUSH
// case FindNearestPoint ( stredy_baz , GetX ( un ) , GetY ( un ) ) of [ 64 , 49 ] :
7268: LD_EXP 40
7272: PPUSH
7273: LD_VAR 0 1
7277: PPUSH
7278: CALL_OW 250
7282: PPUSH
7283: LD_VAR 0 1
7287: PPUSH
7288: CALL_OW 251
7292: PPUSH
7293: CALL_OW 439
7297: PUSH
7298: LD_INT 64
7300: PUSH
7301: LD_INT 49
7303: PUSH
7304: EMPTY
7305: LIST
7306: LIST
7307: DOUBLE
7308: EQUAL
7309: IFTRUE 7313
7311: GO 7324
7313: POP
// result = LesBaza ; end ;
7314: LD_ADDR_VAR 0 2
7318: PUSH
7319: LD_INT 13
7321: ST_TO_ADDR
7322: GO 7325
7324: POP
// end ;
7325: LD_VAR 0 2
7329: RET
// export function NajdiNejblizsiRepairArea ( un ) ; begin
7330: LD_INT 0
7332: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 64 , 41 ] :
7333: LD_EXP 39
7337: PPUSH
7338: LD_VAR 0 1
7342: PPUSH
7343: CALL_OW 250
7347: PPUSH
7348: LD_VAR 0 1
7352: PPUSH
7353: CALL_OW 251
7357: PPUSH
7358: CALL_OW 439
7362: PUSH
7363: LD_INT 64
7365: PUSH
7366: LD_INT 41
7368: PUSH
7369: EMPTY
7370: LIST
7371: LIST
7372: DOUBLE
7373: EQUAL
7374: IFTRUE 7378
7376: GO 7389
7378: POP
// result = LesLeceni ; end ;
7379: LD_ADDR_VAR 0 2
7383: PUSH
7384: LD_INT 15
7386: ST_TO_ADDR
7387: GO 7390
7389: POP
// end ;
7390: LD_VAR 0 2
7394: RET
// function NajdiNejblizsiRepairAreaExpanded ( un ) ; begin
7395: LD_INT 0
7397: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 64 , 41 ] :
7398: LD_EXP 39
7402: PPUSH
7403: LD_VAR 0 1
7407: PPUSH
7408: CALL_OW 250
7412: PPUSH
7413: LD_VAR 0 1
7417: PPUSH
7418: CALL_OW 251
7422: PPUSH
7423: CALL_OW 439
7427: PUSH
7428: LD_INT 64
7430: PUSH
7431: LD_INT 41
7433: PUSH
7434: EMPTY
7435: LIST
7436: LIST
7437: DOUBLE
7438: EQUAL
7439: IFTRUE 7443
7441: GO 7454
7443: POP
// result = LesLeceniExpanded ; end ;
7444: LD_ADDR_VAR 0 2
7448: PUSH
7449: LD_INT 16
7451: ST_TO_ADDR
7452: GO 7455
7454: POP
// end ;
7455: LD_VAR 0 2
7459: RET
// export function NajdiNejblizsiCarParkArea ( un ) ; begin
7460: LD_INT 0
7462: PPUSH
// case FindNearestPoint ( stredy_carpark_oblasti , GetX ( un ) , GetY ( un ) ) of [ 64 , 41 ] :
7463: LD_EXP 41
7467: PPUSH
7468: LD_VAR 0 1
7472: PPUSH
7473: CALL_OW 250
7477: PPUSH
7478: LD_VAR 0 1
7482: PPUSH
7483: CALL_OW 251
7487: PPUSH
7488: CALL_OW 439
7492: PUSH
7493: LD_INT 64
7495: PUSH
7496: LD_INT 41
7498: PUSH
7499: EMPTY
7500: LIST
7501: LIST
7502: DOUBLE
7503: EQUAL
7504: IFTRUE 7508
7506: GO 7519
7508: POP
// result = LesLeceni ; end ;
7509: LD_ADDR_VAR 0 2
7513: PUSH
7514: LD_INT 15
7516: ST_TO_ADDR
7517: GO 7520
7519: POP
// end ;
7520: LD_VAR 0 2
7524: RET
// export function UtecDoNejblizsiHealOblasti ( un ) ; begin
7525: LD_INT 0
7527: PPUSH
// VyjdiVen ( un ) ;
7528: LD_VAR 0 1
7532: PPUSH
7533: CALL 2736 0 1
// if not IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
7537: LD_VAR 0 1
7541: PPUSH
7542: LD_VAR 0 1
7546: PPUSH
7547: CALL 7135 0 1
7551: PPUSH
7552: CALL 2906 0 2
7556: NOT
7557: IFFALSE 7578
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) ;
7559: LD_VAR 0 1
7563: PPUSH
7564: LD_VAR 0 1
7568: PPUSH
7569: CALL 7135 0 1
7573: PPUSH
7574: CALL_OW 113
// end ;
7578: LD_VAR 0 2
7582: RET
// function UtecDoNejblizsiCarParkOblasti ( un ) ; begin
7583: LD_INT 0
7585: PPUSH
// if GetDistUnitArea ( un , NajdiNejblizsiCarParkArea ( un ) ) > 4 then
7586: LD_VAR 0 1
7590: PPUSH
7591: LD_VAR 0 1
7595: PPUSH
7596: CALL 7460 0 1
7600: PPUSH
7601: CALL_OW 299
7605: PUSH
7606: LD_INT 4
7608: GREATER
7609: IFFALSE 7630
// begin ComMoveToArea ( un , NajdiNejblizsiCarParkArea ( un ) ) ;
7611: LD_VAR 0 1
7615: PPUSH
7616: LD_VAR 0 1
7620: PPUSH
7621: CALL 7460 0 1
7625: PPUSH
7626: CALL_OW 113
// end ; end ;
7630: LD_VAR 0 2
7634: RET
// export function UtecDoNejblizsiRepairOblasti ( un ) ; begin
7635: LD_INT 0
7637: PPUSH
// if not IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
7638: LD_VAR 0 1
7642: PPUSH
7643: LD_VAR 0 1
7647: PPUSH
7648: CALL 7330 0 1
7652: PPUSH
7653: CALL 2906 0 2
7657: NOT
7658: IFFALSE 7679
// ComMoveToArea ( un , NajdiNejblizsiRepairArea ( un ) ) ;
7660: LD_VAR 0 1
7664: PPUSH
7665: LD_VAR 0 1
7669: PPUSH
7670: CALL 7330 0 1
7674: PPUSH
7675: CALL_OW 113
// end ;
7679: LD_VAR 0 2
7683: RET
// function PocetJednotekCoJdouDoBudov ( list ) ; var pocet , i ; begin
7684: LD_INT 0
7686: PPUSH
7687: PPUSH
7688: PPUSH
// pocet = 0 ;
7689: LD_ADDR_VAR 0 3
7693: PUSH
7694: LD_INT 0
7696: ST_TO_ADDR
// for i in list do
7697: LD_ADDR_VAR 0 4
7701: PUSH
7702: LD_VAR 0 1
7706: PUSH
7707: FOR_IN
7708: IFFALSE 7737
// if JdeDoBudovy ( i ) then
7710: LD_VAR 0 4
7714: PPUSH
7715: CALL 8012 0 1
7719: IFFALSE 7735
// pocet = pocet + 1 ;
7721: LD_ADDR_VAR 0 3
7725: PUSH
7726: LD_VAR 0 3
7730: PUSH
7731: LD_INT 1
7733: PLUS
7734: ST_TO_ADDR
7735: GO 7707
7737: POP
7738: POP
// result = pocet ;
7739: LD_ADDR_VAR 0 2
7743: PUSH
7744: LD_VAR 0 3
7748: ST_TO_ADDR
// end ;
7749: LD_VAR 0 2
7753: RET
// function NejblizsiJednotkaCoNemaTask ( list , budova ) ; var k ; begin
7754: LD_INT 0
7756: PPUSH
7757: PPUSH
// for k in list do
7758: LD_ADDR_VAR 0 4
7762: PUSH
7763: LD_VAR 0 1
7767: PUSH
7768: FOR_IN
7769: IFFALSE 7800
// begin if JdeDoBudovy ( k ) then
7771: LD_VAR 0 4
7775: PPUSH
7776: CALL 8012 0 1
7780: IFFALSE 7798
// list = list diff k ;
7782: LD_ADDR_VAR 0 1
7786: PUSH
7787: LD_VAR 0 1
7791: PUSH
7792: LD_VAR 0 4
7796: DIFF
7797: ST_TO_ADDR
// end ;
7798: GO 7768
7800: POP
7801: POP
// if list then
7802: LD_VAR 0 1
7806: IFFALSE 7830
// result = NearestUnitToUnit ( list , budova ) else
7808: LD_ADDR_VAR 0 3
7812: PUSH
7813: LD_VAR 0 1
7817: PPUSH
7818: LD_VAR 0 2
7822: PPUSH
7823: CALL_OW 74
7827: ST_TO_ADDR
7828: GO 7838
// result = 0 ;
7830: LD_ADDR_VAR 0 3
7834: PUSH
7835: LD_INT 0
7837: ST_TO_ADDR
// end ;
7838: LD_VAR 0 3
7842: RET
// function MuzeJitOpravovatCerveny ( un ) ; var tmp ; begin
7843: LD_INT 0
7845: PPUSH
7846: PPUSH
// tmp = false ;
7847: LD_ADDR_VAR 0 3
7851: PUSH
7852: LD_INT 0
7854: ST_TO_ADDR
// if UnitsInside ( IsInUnit ( un ) ) > 3 then
7855: LD_VAR 0 1
7859: PPUSH
7860: CALL_OW 310
7864: PPUSH
7865: CALL_OW 313
7869: PUSH
7870: LD_INT 3
7872: GREATER
7873: IFFALSE 7893
// begin tmp = true ;
7875: LD_ADDR_VAR 0 3
7879: PUSH
7880: LD_INT 1
7882: ST_TO_ADDR
// result = true ;
7883: LD_ADDR_VAR 0 2
7887: PUSH
7888: LD_INT 1
7890: ST_TO_ADDR
// end else
7891: GO 7901
// result = false ;
7893: LD_ADDR_VAR 0 2
7897: PUSH
7898: LD_INT 0
7900: ST_TO_ADDR
// if not tmp then
7901: LD_VAR 0 3
7905: NOT
7906: IFFALSE 8007
// begin if GetTaskList ( un ) <> 0 then
7908: LD_VAR 0 1
7912: PPUSH
7913: CALL_OW 437
7917: PUSH
7918: LD_INT 0
7920: NONEQUAL
7921: IFFALSE 7999
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = r then
7923: LD_VAR 0 1
7927: PPUSH
7928: CALL_OW 437
7932: PUSH
7933: LD_INT 1
7935: ARRAY
7936: PUSH
7937: LD_INT 1
7939: ARRAY
7940: PUSH
7941: LD_STRING r
7943: EQUAL
7944: IFFALSE 7956
// result = true else
7946: LD_ADDR_VAR 0 2
7950: PUSH
7951: LD_INT 1
7953: ST_TO_ADDR
7954: GO 7997
// if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
7956: LD_VAR 0 1
7960: PPUSH
7961: CALL_OW 437
7965: PUSH
7966: LD_INT 1
7968: ARRAY
7969: PUSH
7970: LD_INT 1
7972: ARRAY
7973: PUSH
7974: LD_STRING e
7976: EQUAL
7977: IFFALSE 7989
// result = true else
7979: LD_ADDR_VAR 0 2
7983: PUSH
7984: LD_INT 1
7986: ST_TO_ADDR
7987: GO 7997
// result = false ;
7989: LD_ADDR_VAR 0 2
7993: PUSH
7994: LD_INT 0
7996: ST_TO_ADDR
// end else
7997: GO 8007
// result = false ;
7999: LD_ADDR_VAR 0 2
8003: PUSH
8004: LD_INT 0
8006: ST_TO_ADDR
// end end ;
8007: LD_VAR 0 2
8011: RET
// function JdeDoBudovy ( un ) ; begin
8012: LD_INT 0
8014: PPUSH
// if GetTaskList ( un ) <> 0 then
8015: LD_VAR 0 1
8019: PPUSH
8020: CALL_OW 437
8024: PUSH
8025: LD_INT 0
8027: NONEQUAL
8028: IFFALSE 8073
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
8030: LD_VAR 0 1
8034: PPUSH
8035: CALL_OW 437
8039: PUSH
8040: LD_INT 1
8042: ARRAY
8043: PUSH
8044: LD_INT 1
8046: ARRAY
8047: PUSH
8048: LD_STRING e
8050: EQUAL
8051: IFFALSE 8063
// result = true else
8053: LD_ADDR_VAR 0 2
8057: PUSH
8058: LD_INT 1
8060: ST_TO_ADDR
8061: GO 8071
// result = false ;
8063: LD_ADDR_VAR 0 2
8067: PUSH
8068: LD_INT 0
8070: ST_TO_ADDR
// end else
8071: GO 8081
// result = false ;
8073: LD_ADDR_VAR 0 2
8077: PUSH
8078: LD_INT 0
8080: ST_TO_ADDR
// end ;
8081: LD_VAR 0 2
8085: RET
// export function NajdiVojaka ; var voj ; begin
8086: LD_INT 0
8088: PPUSH
8089: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod then
8090: LD_INT 24
8092: PUSH
8093: LD_INT 250
8095: PUSH
8096: EMPTY
8097: LIST
8098: LIST
8099: PUSH
8100: LD_INT 23
8102: PUSH
8103: LD_INT 3
8105: PUSH
8106: EMPTY
8107: LIST
8108: LIST
8109: PUSH
8110: LD_INT 22
8112: PUSH
8113: LD_EXP 6
8117: PUSH
8118: EMPTY
8119: LIST
8120: LIST
8121: PUSH
8122: LD_INT 2
8124: PUSH
8125: LD_INT 25
8127: PUSH
8128: LD_INT 1
8130: PUSH
8131: EMPTY
8132: LIST
8133: LIST
8134: PUSH
8135: LD_INT 25
8137: PUSH
8138: LD_INT 9
8140: PUSH
8141: EMPTY
8142: LIST
8143: LIST
8144: PUSH
8145: EMPTY
8146: LIST
8147: LIST
8148: LIST
8149: PUSH
8150: EMPTY
8151: LIST
8152: LIST
8153: LIST
8154: LIST
8155: PPUSH
8156: CALL_OW 69
8160: PUSH
8161: LD_EXP 1
8165: DIFF
8166: IFFALSE 8250
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod ;
8168: LD_ADDR_VAR 0 2
8172: PUSH
8173: LD_INT 24
8175: PUSH
8176: LD_INT 250
8178: PUSH
8179: EMPTY
8180: LIST
8181: LIST
8182: PUSH
8183: LD_INT 23
8185: PUSH
8186: LD_INT 3
8188: PUSH
8189: EMPTY
8190: LIST
8191: LIST
8192: PUSH
8193: LD_INT 22
8195: PUSH
8196: LD_EXP 6
8200: PUSH
8201: EMPTY
8202: LIST
8203: LIST
8204: PUSH
8205: LD_INT 2
8207: PUSH
8208: LD_INT 25
8210: PUSH
8211: LD_INT 1
8213: PUSH
8214: EMPTY
8215: LIST
8216: LIST
8217: PUSH
8218: LD_INT 25
8220: PUSH
8221: LD_INT 9
8223: PUSH
8224: EMPTY
8225: LIST
8226: LIST
8227: PUSH
8228: EMPTY
8229: LIST
8230: LIST
8231: LIST
8232: PUSH
8233: EMPTY
8234: LIST
8235: LIST
8236: LIST
8237: LIST
8238: PPUSH
8239: CALL_OW 69
8243: PUSH
8244: LD_EXP 1
8248: DIFF
8249: ST_TO_ADDR
// if voj then
8250: LD_VAR 0 2
8254: IFFALSE 8282
// result = voj [ Rand ( 1 , voj ) ] else
8256: LD_ADDR_VAR 0 1
8260: PUSH
8261: LD_VAR 0 2
8265: PUSH
8266: LD_INT 1
8268: PPUSH
8269: LD_VAR 0 2
8273: PPUSH
8274: CALL_OW 12
8278: ARRAY
8279: ST_TO_ADDR
8280: GO 8343
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_combat ) ;
8282: LD_ADDR_VAR 0 1
8286: PUSH
8287: LD_INT 24
8289: PUSH
8290: LD_INT 250
8292: PUSH
8293: EMPTY
8294: LIST
8295: LIST
8296: PUSH
8297: LD_INT 23
8299: PUSH
8300: LD_INT 3
8302: PUSH
8303: EMPTY
8304: LIST
8305: LIST
8306: PUSH
8307: LD_INT 22
8309: PUSH
8310: LD_EXP 6
8314: PUSH
8315: EMPTY
8316: LIST
8317: LIST
8318: PUSH
8319: EMPTY
8320: LIST
8321: LIST
8322: LIST
8323: PPUSH
8324: CALL_OW 69
8328: PUSH
8329: LD_EXP 1
8333: DIFF
8334: PPUSH
8335: LD_INT 1
8337: PPUSH
8338: CALL_OW 433
8342: ST_TO_ADDR
// end ;
8343: LD_VAR 0 1
8347: RET
// export function NajdiVedce ; var ved ; begin
8348: LD_INT 0
8350: PPUSH
8351: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod then
8352: LD_INT 24
8354: PUSH
8355: LD_INT 250
8357: PUSH
8358: EMPTY
8359: LIST
8360: LIST
8361: PUSH
8362: LD_INT 23
8364: PUSH
8365: LD_INT 3
8367: PUSH
8368: EMPTY
8369: LIST
8370: LIST
8371: PUSH
8372: LD_INT 22
8374: PUSH
8375: LD_EXP 6
8379: PUSH
8380: EMPTY
8381: LIST
8382: LIST
8383: PUSH
8384: LD_INT 25
8386: PUSH
8387: LD_INT 4
8389: PUSH
8390: EMPTY
8391: LIST
8392: LIST
8393: PUSH
8394: EMPTY
8395: LIST
8396: LIST
8397: LIST
8398: LIST
8399: PPUSH
8400: CALL_OW 69
8404: PUSH
8405: LD_EXP 1
8409: DIFF
8410: IFFALSE 8476
// ved = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod ;
8412: LD_ADDR_VAR 0 2
8416: PUSH
8417: LD_INT 24
8419: PUSH
8420: LD_INT 250
8422: PUSH
8423: EMPTY
8424: LIST
8425: LIST
8426: PUSH
8427: LD_INT 23
8429: PUSH
8430: LD_INT 3
8432: PUSH
8433: EMPTY
8434: LIST
8435: LIST
8436: PUSH
8437: LD_INT 22
8439: PUSH
8440: LD_EXP 6
8444: PUSH
8445: EMPTY
8446: LIST
8447: LIST
8448: PUSH
8449: LD_INT 25
8451: PUSH
8452: LD_INT 4
8454: PUSH
8455: EMPTY
8456: LIST
8457: LIST
8458: PUSH
8459: EMPTY
8460: LIST
8461: LIST
8462: LIST
8463: LIST
8464: PPUSH
8465: CALL_OW 69
8469: PUSH
8470: LD_EXP 1
8474: DIFF
8475: ST_TO_ADDR
// if ved then
8476: LD_VAR 0 2
8480: IFFALSE 8508
// result = ved [ Rand ( 1 , ved ) ] else
8482: LD_ADDR_VAR 0 1
8486: PUSH
8487: LD_VAR 0 2
8491: PUSH
8492: LD_INT 1
8494: PPUSH
8495: LD_VAR 0 2
8499: PPUSH
8500: CALL_OW 12
8504: ARRAY
8505: ST_TO_ADDR
8506: GO 8569
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_scientistic ) ;
8508: LD_ADDR_VAR 0 1
8512: PUSH
8513: LD_INT 24
8515: PUSH
8516: LD_INT 250
8518: PUSH
8519: EMPTY
8520: LIST
8521: LIST
8522: PUSH
8523: LD_INT 23
8525: PUSH
8526: LD_INT 3
8528: PUSH
8529: EMPTY
8530: LIST
8531: LIST
8532: PUSH
8533: LD_INT 22
8535: PUSH
8536: LD_EXP 6
8540: PUSH
8541: EMPTY
8542: LIST
8543: LIST
8544: PUSH
8545: EMPTY
8546: LIST
8547: LIST
8548: LIST
8549: PPUSH
8550: CALL_OW 69
8554: PUSH
8555: LD_EXP 1
8559: DIFF
8560: PPUSH
8561: LD_INT 4
8563: PPUSH
8564: CALL_OW 433
8568: ST_TO_ADDR
// end ;
8569: LD_VAR 0 1
8573: RET
// export function NajdiMechanika ; var mech ; begin
8574: LD_INT 0
8576: PPUSH
8577: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod then
8578: LD_INT 24
8580: PUSH
8581: LD_INT 250
8583: PUSH
8584: EMPTY
8585: LIST
8586: LIST
8587: PUSH
8588: LD_INT 23
8590: PUSH
8591: LD_INT 3
8593: PUSH
8594: EMPTY
8595: LIST
8596: LIST
8597: PUSH
8598: LD_INT 22
8600: PUSH
8601: LD_EXP 6
8605: PUSH
8606: EMPTY
8607: LIST
8608: LIST
8609: PUSH
8610: LD_INT 25
8612: PUSH
8613: LD_INT 3
8615: PUSH
8616: EMPTY
8617: LIST
8618: LIST
8619: PUSH
8620: EMPTY
8621: LIST
8622: LIST
8623: LIST
8624: LIST
8625: PPUSH
8626: CALL_OW 69
8630: PUSH
8631: LD_EXP 1
8635: DIFF
8636: IFFALSE 8702
// mech = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod ;
8638: LD_ADDR_VAR 0 2
8642: PUSH
8643: LD_INT 24
8645: PUSH
8646: LD_INT 250
8648: PUSH
8649: EMPTY
8650: LIST
8651: LIST
8652: PUSH
8653: LD_INT 23
8655: PUSH
8656: LD_INT 3
8658: PUSH
8659: EMPTY
8660: LIST
8661: LIST
8662: PUSH
8663: LD_INT 22
8665: PUSH
8666: LD_EXP 6
8670: PUSH
8671: EMPTY
8672: LIST
8673: LIST
8674: PUSH
8675: LD_INT 25
8677: PUSH
8678: LD_INT 3
8680: PUSH
8681: EMPTY
8682: LIST
8683: LIST
8684: PUSH
8685: EMPTY
8686: LIST
8687: LIST
8688: LIST
8689: LIST
8690: PPUSH
8691: CALL_OW 69
8695: PUSH
8696: LD_EXP 1
8700: DIFF
8701: ST_TO_ADDR
// if mech then
8702: LD_VAR 0 2
8706: IFFALSE 8734
// result = mech [ Rand ( 1 , mech ) ] else
8708: LD_ADDR_VAR 0 1
8712: PUSH
8713: LD_VAR 0 2
8717: PUSH
8718: LD_INT 1
8720: PPUSH
8721: LD_VAR 0 2
8725: PPUSH
8726: CALL_OW 12
8730: ARRAY
8731: ST_TO_ADDR
8732: GO 8795
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_mechanical ) ;
8734: LD_ADDR_VAR 0 1
8738: PUSH
8739: LD_INT 24
8741: PUSH
8742: LD_INT 250
8744: PUSH
8745: EMPTY
8746: LIST
8747: LIST
8748: PUSH
8749: LD_INT 23
8751: PUSH
8752: LD_INT 3
8754: PUSH
8755: EMPTY
8756: LIST
8757: LIST
8758: PUSH
8759: LD_INT 22
8761: PUSH
8762: LD_EXP 6
8766: PUSH
8767: EMPTY
8768: LIST
8769: LIST
8770: PUSH
8771: EMPTY
8772: LIST
8773: LIST
8774: LIST
8775: PPUSH
8776: CALL_OW 69
8780: PUSH
8781: LD_EXP 1
8785: DIFF
8786: PPUSH
8787: LD_INT 3
8789: PPUSH
8790: CALL_OW 433
8794: ST_TO_ADDR
// end ;
8795: LD_VAR 0 1
8799: RET
// export function NajdiDelnika ; var del ; begin
8800: LD_INT 0
8802: PPUSH
8803: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod then
8804: LD_INT 24
8806: PUSH
8807: LD_INT 250
8809: PUSH
8810: EMPTY
8811: LIST
8812: LIST
8813: PUSH
8814: LD_INT 23
8816: PUSH
8817: LD_INT 3
8819: PUSH
8820: EMPTY
8821: LIST
8822: LIST
8823: PUSH
8824: LD_INT 22
8826: PUSH
8827: LD_EXP 6
8831: PUSH
8832: EMPTY
8833: LIST
8834: LIST
8835: PUSH
8836: LD_INT 25
8838: PUSH
8839: LD_INT 2
8841: PUSH
8842: EMPTY
8843: LIST
8844: LIST
8845: PUSH
8846: EMPTY
8847: LIST
8848: LIST
8849: LIST
8850: LIST
8851: PPUSH
8852: CALL_OW 69
8856: PUSH
8857: LD_EXP 1
8861: DIFF
8862: IFFALSE 8928
// del = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod ;
8864: LD_ADDR_VAR 0 2
8868: PUSH
8869: LD_INT 24
8871: PUSH
8872: LD_INT 250
8874: PUSH
8875: EMPTY
8876: LIST
8877: LIST
8878: PUSH
8879: LD_INT 23
8881: PUSH
8882: LD_INT 3
8884: PUSH
8885: EMPTY
8886: LIST
8887: LIST
8888: PUSH
8889: LD_INT 22
8891: PUSH
8892: LD_EXP 6
8896: PUSH
8897: EMPTY
8898: LIST
8899: LIST
8900: PUSH
8901: LD_INT 25
8903: PUSH
8904: LD_INT 2
8906: PUSH
8907: EMPTY
8908: LIST
8909: LIST
8910: PUSH
8911: EMPTY
8912: LIST
8913: LIST
8914: LIST
8915: LIST
8916: PPUSH
8917: CALL_OW 69
8921: PUSH
8922: LD_EXP 1
8926: DIFF
8927: ST_TO_ADDR
// if del then
8928: LD_VAR 0 2
8932: IFFALSE 8960
// result = del [ Rand ( 1 , del ) ] else
8934: LD_ADDR_VAR 0 1
8938: PUSH
8939: LD_VAR 0 2
8943: PUSH
8944: LD_INT 1
8946: PPUSH
8947: LD_VAR 0 2
8951: PPUSH
8952: CALL_OW 12
8956: ARRAY
8957: ST_TO_ADDR
8958: GO 9021
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_engineering ) ;
8960: LD_ADDR_VAR 0 1
8964: PUSH
8965: LD_INT 24
8967: PUSH
8968: LD_INT 250
8970: PUSH
8971: EMPTY
8972: LIST
8973: LIST
8974: PUSH
8975: LD_INT 23
8977: PUSH
8978: LD_INT 3
8980: PUSH
8981: EMPTY
8982: LIST
8983: LIST
8984: PUSH
8985: LD_INT 22
8987: PUSH
8988: LD_EXP 6
8992: PUSH
8993: EMPTY
8994: LIST
8995: LIST
8996: PUSH
8997: EMPTY
8998: LIST
8999: LIST
9000: LIST
9001: PPUSH
9002: CALL_OW 69
9006: PUSH
9007: LD_EXP 1
9011: DIFF
9012: PPUSH
9013: LD_INT 2
9015: PPUSH
9016: CALL_OW 433
9020: ST_TO_ADDR
// end ;
9021: LD_VAR 0 1
9025: RET
// export function PlaceVehArea ( veh , area ) ; begin
9026: LD_INT 0
9028: PPUSH
// if area = zapad then
9029: LD_VAR 0 2
9033: PUSH
9034: LD_INT 18
9036: EQUAL
9037: IFFALSE 9053
// SetDir ( veh , 1 ) else
9039: LD_VAR 0 1
9043: PPUSH
9044: LD_INT 1
9046: PPUSH
9047: CALL_OW 233
9051: GO 9113
// if area = sever then
9053: LD_VAR 0 2
9057: PUSH
9058: LD_INT 17
9060: EQUAL
9061: IFFALSE 9077
// SetDir ( veh , 2 ) else
9063: LD_VAR 0 1
9067: PPUSH
9068: LD_INT 2
9070: PPUSH
9071: CALL_OW 233
9075: GO 9113
// if area = vychod then
9077: LD_VAR 0 2
9081: PUSH
9082: LD_INT 20
9084: EQUAL
9085: IFFALSE 9101
// SetDir ( veh , 4 ) else
9087: LD_VAR 0 1
9091: PPUSH
9092: LD_INT 4
9094: PPUSH
9095: CALL_OW 233
9099: GO 9113
// SetDir ( veh , 5 ) ;
9101: LD_VAR 0 1
9105: PPUSH
9106: LD_INT 5
9108: PPUSH
9109: CALL_OW 233
// PlaceUnitArea ( veh , area , false ) ;
9113: LD_VAR 0 1
9117: PPUSH
9118: LD_VAR 0 2
9122: PPUSH
9123: LD_INT 0
9125: PPUSH
9126: CALL_OW 49
// end ;
9130: LD_VAR 0 3
9134: RET
// export function AddRiderIfManual ( veh ) ; var un ; begin
9135: LD_INT 0
9137: PPUSH
9138: PPUSH
// if GetControl ( veh ) = 1 then
9139: LD_VAR 0 1
9143: PPUSH
9144: CALL_OW 263
9148: PUSH
9149: LD_INT 1
9151: EQUAL
9152: IFFALSE 9197
// begin un = VytvorAraba ( 1 ) ;
9154: LD_ADDR_VAR 0 3
9158: PUSH
9159: LD_INT 1
9161: PPUSH
9162: CALL 9202 0 1
9166: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
9167: LD_VAR 0 3
9171: PPUSH
9172: LD_VAR 0 1
9176: PPUSH
9177: CALL_OW 52
// ar_utok = ar_utok ^ un ;
9181: LD_ADDR_EXP 20
9185: PUSH
9186: LD_EXP 20
9190: PUSH
9191: LD_VAR 0 3
9195: ADD
9196: ST_TO_ADDR
// end ; end ;
9197: LD_VAR 0 2
9201: RET
// export function VytvorAraba ( povolani ) ; var max , min ; begin
9202: LD_INT 0
9204: PPUSH
9205: PPUSH
9206: PPUSH
// max = dif_enemy_max_skill ;
9207: LD_ADDR_VAR 0 3
9211: PUSH
9212: LD_EXP 54
9216: ST_TO_ADDR
// min = dif_enemy_min_skill ;
9217: LD_ADDR_VAR 0 4
9221: PUSH
9222: LD_EXP 53
9226: ST_TO_ADDR
// if tick >= 22 22$00 then
9227: LD_OWVAR 1
9231: PUSH
9232: LD_INT 46200
9234: GREATEREQUAL
9235: IFFALSE 9253
// begin min = 7 ;
9237: LD_ADDR_VAR 0 4
9241: PUSH
9242: LD_INT 7
9244: ST_TO_ADDR
// max = 9 ;
9245: LD_ADDR_VAR 0 3
9249: PUSH
9250: LD_INT 9
9252: ST_TO_ADDR
// end ; hc_name :=  ;
9253: LD_ADDR_OWVAR 26
9257: PUSH
9258: LD_STRING 
9260: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
9261: LD_ADDR_OWVAR 29
9265: PUSH
9266: LD_INT 9
9268: PPUSH
9269: LD_INT 11
9271: PPUSH
9272: CALL_OW 12
9276: PUSH
9277: LD_INT 9
9279: PPUSH
9280: LD_INT 11
9282: PPUSH
9283: CALL_OW 12
9287: PUSH
9288: EMPTY
9289: LIST
9290: LIST
9291: ST_TO_ADDR
// uc_nation := nation_arabian ;
9292: LD_ADDR_OWVAR 21
9296: PUSH
9297: LD_INT 2
9299: ST_TO_ADDR
// uc_side = legie ;
9300: LD_ADDR_OWVAR 20
9304: PUSH
9305: LD_EXP 8
9309: ST_TO_ADDR
// if Prob ( 30 ) then
9310: LD_INT 30
9312: PPUSH
9313: CALL_OW 13
9317: IFFALSE 9329
// hc_sex := 2 else
9319: LD_ADDR_OWVAR 27
9323: PUSH
9324: LD_INT 2
9326: ST_TO_ADDR
9327: GO 9337
// hc_sex := 1 ;
9329: LD_ADDR_OWVAR 27
9333: PUSH
9334: LD_INT 1
9336: ST_TO_ADDR
// case povolani of 1 :
9337: LD_VAR 0 1
9341: PUSH
9342: LD_INT 1
9344: DOUBLE
9345: EQUAL
9346: IFTRUE 9350
9348: GO 9438
9350: POP
// begin hc_skills := [ rand ( min , max ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) ] ;
9351: LD_ADDR_OWVAR 31
9355: PUSH
9356: LD_VAR 0 4
9360: PPUSH
9361: LD_VAR 0 3
9365: PPUSH
9366: CALL_OW 12
9370: PUSH
9371: LD_INT 0
9373: PPUSH
9374: LD_VAR 0 4
9378: PUSH
9379: LD_INT 3
9381: MINUS
9382: PPUSH
9383: CALL_OW 12
9387: PUSH
9388: LD_INT 0
9390: PPUSH
9391: LD_VAR 0 4
9395: PUSH
9396: LD_INT 3
9398: MINUS
9399: PPUSH
9400: CALL_OW 12
9404: PUSH
9405: LD_INT 0
9407: PPUSH
9408: LD_VAR 0 4
9412: PUSH
9413: LD_INT 3
9415: MINUS
9416: PPUSH
9417: CALL_OW 12
9421: PUSH
9422: EMPTY
9423: LIST
9424: LIST
9425: LIST
9426: LIST
9427: ST_TO_ADDR
// hc_class = class_soldier ;
9428: LD_ADDR_OWVAR 28
9432: PUSH
9433: LD_INT 1
9435: ST_TO_ADDR
// end ; 2 :
9436: GO 10023
9438: LD_INT 2
9440: DOUBLE
9441: EQUAL
9442: IFTRUE 9446
9444: GO 9534
9446: POP
// begin hc_skills := [ rand ( 0 , min - 3 ) , rand ( min , max ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) ] ;
9447: LD_ADDR_OWVAR 31
9451: PUSH
9452: LD_INT 0
9454: PPUSH
9455: LD_VAR 0 4
9459: PUSH
9460: LD_INT 3
9462: MINUS
9463: PPUSH
9464: CALL_OW 12
9468: PUSH
9469: LD_VAR 0 4
9473: PPUSH
9474: LD_VAR 0 3
9478: PPUSH
9479: CALL_OW 12
9483: PUSH
9484: LD_INT 0
9486: PPUSH
9487: LD_VAR 0 4
9491: PUSH
9492: LD_INT 3
9494: MINUS
9495: PPUSH
9496: CALL_OW 12
9500: PUSH
9501: LD_INT 0
9503: PPUSH
9504: LD_VAR 0 4
9508: PUSH
9509: LD_INT 3
9511: MINUS
9512: PPUSH
9513: CALL_OW 12
9517: PUSH
9518: EMPTY
9519: LIST
9520: LIST
9521: LIST
9522: LIST
9523: ST_TO_ADDR
// hc_class = class_engineer ;
9524: LD_ADDR_OWVAR 28
9528: PUSH
9529: LD_INT 2
9531: ST_TO_ADDR
// end ; 3 :
9532: GO 10023
9534: LD_INT 3
9536: DOUBLE
9537: EQUAL
9538: IFTRUE 9542
9540: GO 9630
9542: POP
// begin hc_skills := [ rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( min , max ) , rand ( 0 , min - 3 ) ] ;
9543: LD_ADDR_OWVAR 31
9547: PUSH
9548: LD_INT 0
9550: PPUSH
9551: LD_VAR 0 4
9555: PUSH
9556: LD_INT 3
9558: MINUS
9559: PPUSH
9560: CALL_OW 12
9564: PUSH
9565: LD_INT 0
9567: PPUSH
9568: LD_VAR 0 4
9572: PUSH
9573: LD_INT 3
9575: MINUS
9576: PPUSH
9577: CALL_OW 12
9581: PUSH
9582: LD_VAR 0 4
9586: PPUSH
9587: LD_VAR 0 3
9591: PPUSH
9592: CALL_OW 12
9596: PUSH
9597: LD_INT 0
9599: PPUSH
9600: LD_VAR 0 4
9604: PUSH
9605: LD_INT 3
9607: MINUS
9608: PPUSH
9609: CALL_OW 12
9613: PUSH
9614: EMPTY
9615: LIST
9616: LIST
9617: LIST
9618: LIST
9619: ST_TO_ADDR
// hc_class = class_mechanic ;
9620: LD_ADDR_OWVAR 28
9624: PUSH
9625: LD_INT 3
9627: ST_TO_ADDR
// end ; 4 :
9628: GO 10023
9630: LD_INT 4
9632: DOUBLE
9633: EQUAL
9634: IFTRUE 9638
9636: GO 9726
9638: POP
// begin hc_skills := [ rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( min , max ) ] ;
9639: LD_ADDR_OWVAR 31
9643: PUSH
9644: LD_INT 0
9646: PPUSH
9647: LD_VAR 0 4
9651: PUSH
9652: LD_INT 3
9654: MINUS
9655: PPUSH
9656: CALL_OW 12
9660: PUSH
9661: LD_INT 0
9663: PPUSH
9664: LD_VAR 0 4
9668: PUSH
9669: LD_INT 3
9671: MINUS
9672: PPUSH
9673: CALL_OW 12
9677: PUSH
9678: LD_INT 0
9680: PPUSH
9681: LD_VAR 0 4
9685: PUSH
9686: LD_INT 3
9688: MINUS
9689: PPUSH
9690: CALL_OW 12
9694: PUSH
9695: LD_VAR 0 4
9699: PPUSH
9700: LD_VAR 0 3
9704: PPUSH
9705: CALL_OW 12
9709: PUSH
9710: EMPTY
9711: LIST
9712: LIST
9713: LIST
9714: LIST
9715: ST_TO_ADDR
// hc_class = class_scientistic ;
9716: LD_ADDR_OWVAR 28
9720: PUSH
9721: LD_INT 4
9723: ST_TO_ADDR
// end ; class_sniper :
9724: GO 10023
9726: LD_INT 5
9728: DOUBLE
9729: EQUAL
9730: IFTRUE 9734
9732: GO 9822
9734: POP
// begin hc_skills := [ rand ( min , max ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) ] ;
9735: LD_ADDR_OWVAR 31
9739: PUSH
9740: LD_VAR 0 4
9744: PPUSH
9745: LD_VAR 0 3
9749: PPUSH
9750: CALL_OW 12
9754: PUSH
9755: LD_INT 0
9757: PPUSH
9758: LD_VAR 0 4
9762: PUSH
9763: LD_INT 3
9765: MINUS
9766: PPUSH
9767: CALL_OW 12
9771: PUSH
9772: LD_INT 0
9774: PPUSH
9775: LD_VAR 0 4
9779: PUSH
9780: LD_INT 3
9782: MINUS
9783: PPUSH
9784: CALL_OW 12
9788: PUSH
9789: LD_INT 0
9791: PPUSH
9792: LD_VAR 0 4
9796: PUSH
9797: LD_INT 3
9799: MINUS
9800: PPUSH
9801: CALL_OW 12
9805: PUSH
9806: EMPTY
9807: LIST
9808: LIST
9809: LIST
9810: LIST
9811: ST_TO_ADDR
// hc_class = class_sniper ;
9812: LD_ADDR_OWVAR 28
9816: PUSH
9817: LD_INT 5
9819: ST_TO_ADDR
// end ; class_mortar :
9820: GO 10023
9822: LD_INT 8
9824: DOUBLE
9825: EQUAL
9826: IFTRUE 9830
9828: GO 9918
9830: POP
// begin hc_skills := [ rand ( min , max ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) ] ;
9831: LD_ADDR_OWVAR 31
9835: PUSH
9836: LD_VAR 0 4
9840: PPUSH
9841: LD_VAR 0 3
9845: PPUSH
9846: CALL_OW 12
9850: PUSH
9851: LD_INT 0
9853: PPUSH
9854: LD_VAR 0 4
9858: PUSH
9859: LD_INT 3
9861: MINUS
9862: PPUSH
9863: CALL_OW 12
9867: PUSH
9868: LD_INT 0
9870: PPUSH
9871: LD_VAR 0 4
9875: PUSH
9876: LD_INT 3
9878: MINUS
9879: PPUSH
9880: CALL_OW 12
9884: PUSH
9885: LD_INT 0
9887: PPUSH
9888: LD_VAR 0 4
9892: PUSH
9893: LD_INT 3
9895: MINUS
9896: PPUSH
9897: CALL_OW 12
9901: PUSH
9902: EMPTY
9903: LIST
9904: LIST
9905: LIST
9906: LIST
9907: ST_TO_ADDR
// hc_class = class_mortar ;
9908: LD_ADDR_OWVAR 28
9912: PUSH
9913: LD_INT 8
9915: ST_TO_ADDR
// end ; class_apeman_kamikaze :
9916: GO 10023
9918: LD_INT 17
9920: DOUBLE
9921: EQUAL
9922: IFTRUE 9926
9924: GO 10022
9926: POP
// begin hc_skills := [ rand ( min - 3 , max - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) , rand ( 0 , min - 3 ) ] ;
9927: LD_ADDR_OWVAR 31
9931: PUSH
9932: LD_VAR 0 4
9936: PUSH
9937: LD_INT 3
9939: MINUS
9940: PPUSH
9941: LD_VAR 0 3
9945: PUSH
9946: LD_INT 3
9948: MINUS
9949: PPUSH
9950: CALL_OW 12
9954: PUSH
9955: LD_INT 0
9957: PPUSH
9958: LD_VAR 0 4
9962: PUSH
9963: LD_INT 3
9965: MINUS
9966: PPUSH
9967: CALL_OW 12
9971: PUSH
9972: LD_INT 0
9974: PPUSH
9975: LD_VAR 0 4
9979: PUSH
9980: LD_INT 3
9982: MINUS
9983: PPUSH
9984: CALL_OW 12
9988: PUSH
9989: LD_INT 0
9991: PPUSH
9992: LD_VAR 0 4
9996: PUSH
9997: LD_INT 3
9999: MINUS
10000: PPUSH
10001: CALL_OW 12
10005: PUSH
10006: EMPTY
10007: LIST
10008: LIST
10009: LIST
10010: LIST
10011: ST_TO_ADDR
// hc_class = class_apeman_kamikaze ;
10012: LD_ADDR_OWVAR 28
10016: PUSH
10017: LD_INT 17
10019: ST_TO_ADDR
// end ; end ;
10020: GO 10023
10022: POP
// result := CreateHuman ( ) ;
10023: LD_ADDR_VAR 0 2
10027: PUSH
10028: CALL_OW 44
10032: ST_TO_ADDR
// end ;
10033: LD_VAR 0 2
10037: RET
// export function CreateVehsArea ( pocet , area ) ; var i , v ; begin
10038: LD_INT 0
10040: PPUSH
10041: PPUSH
10042: PPUSH
// for i = 1 to pocet do
10043: LD_ADDR_VAR 0 4
10047: PUSH
10048: DOUBLE
10049: LD_INT 1
10051: DEC
10052: ST_TO_ADDR
10053: LD_VAR 0 1
10057: PUSH
10058: FOR_TO
10059: IFFALSE 10227
// begin vc_control = [ control_apeman , control_manual ] [ Rand ( 1 , 2 ) ] ;
10061: LD_ADDR_OWVAR 38
10065: PUSH
10066: LD_INT 5
10068: PUSH
10069: LD_INT 1
10071: PUSH
10072: EMPTY
10073: LIST
10074: LIST
10075: PUSH
10076: LD_INT 1
10078: PPUSH
10079: LD_INT 2
10081: PPUSH
10082: CALL_OW 12
10086: ARRAY
10087: ST_TO_ADDR
// vc_engine = engine_siberite ;
10088: LD_ADDR_OWVAR 39
10092: PUSH
10093: LD_INT 3
10095: ST_TO_ADDR
// vc_chassis = [ ar_medium_trike , ar_half_tracked ] [ Rand ( 1 , 2 ) ] ;
10096: LD_ADDR_OWVAR 37
10100: PUSH
10101: LD_INT 13
10103: PUSH
10104: LD_INT 14
10106: PUSH
10107: EMPTY
10108: LIST
10109: LIST
10110: PUSH
10111: LD_INT 1
10113: PPUSH
10114: LD_INT 2
10116: PPUSH
10117: CALL_OW 12
10121: ARRAY
10122: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher ] [ Rand ( 1 , 4 ) ] ;
10123: LD_ADDR_OWVAR 40
10127: PUSH
10128: LD_INT 25
10130: PUSH
10131: LD_INT 26
10133: PUSH
10134: LD_INT 27
10136: PUSH
10137: LD_INT 28
10139: PUSH
10140: EMPTY
10141: LIST
10142: LIST
10143: LIST
10144: LIST
10145: PUSH
10146: LD_INT 1
10148: PPUSH
10149: LD_INT 4
10151: PPUSH
10152: CALL_OW 12
10156: ARRAY
10157: ST_TO_ADDR
// uc_side = legie ;
10158: LD_ADDR_OWVAR 20
10162: PUSH
10163: LD_EXP 8
10167: ST_TO_ADDR
// uc_nation = nation_arabian ;
10168: LD_ADDR_OWVAR 21
10172: PUSH
10173: LD_INT 2
10175: ST_TO_ADDR
// v = CreateVehicle ;
10176: LD_ADDR_VAR 0 5
10180: PUSH
10181: CALL_OW 45
10185: ST_TO_ADDR
// ar_utok = ar_utok ^ v ;
10186: LD_ADDR_EXP 20
10190: PUSH
10191: LD_EXP 20
10195: PUSH
10196: LD_VAR 0 5
10200: ADD
10201: ST_TO_ADDR
// AddRiderIfManual ( v ) ;
10202: LD_VAR 0 5
10206: PPUSH
10207: CALL 9135 0 1
// PlaceVehArea ( v , area ) ;
10211: LD_VAR 0 5
10215: PPUSH
10216: LD_VAR 0 2
10220: PPUSH
10221: CALL 9026 0 2
// end ;
10225: GO 10058
10227: POP
10228: POP
// end ;
10229: LD_VAR 0 3
10233: RET
// export function CreateBombVehsArea ( pocet , area ) ; var i , v ; begin
10234: LD_INT 0
10236: PPUSH
10237: PPUSH
10238: PPUSH
// for i = 1 to pocet do
10239: LD_ADDR_VAR 0 4
10243: PUSH
10244: DOUBLE
10245: LD_INT 1
10247: DEC
10248: ST_TO_ADDR
10249: LD_VAR 0 1
10253: PUSH
10254: FOR_TO
10255: IFFALSE 10396
// begin vc_control = [ control_apeman , control_manual ] [ Rand ( 1 , 2 ) ] ;
10257: LD_ADDR_OWVAR 38
10261: PUSH
10262: LD_INT 5
10264: PUSH
10265: LD_INT 1
10267: PUSH
10268: EMPTY
10269: LIST
10270: LIST
10271: PUSH
10272: LD_INT 1
10274: PPUSH
10275: LD_INT 2
10277: PPUSH
10278: CALL_OW 12
10282: ARRAY
10283: ST_TO_ADDR
// vc_engine = engine_siberite ;
10284: LD_ADDR_OWVAR 39
10288: PUSH
10289: LD_INT 3
10291: ST_TO_ADDR
// vc_chassis = [ ar_medium_trike , ar_half_tracked ] [ Rand ( 1 , 2 ) ] ;
10292: LD_ADDR_OWVAR 37
10296: PUSH
10297: LD_INT 13
10299: PUSH
10300: LD_INT 14
10302: PUSH
10303: EMPTY
10304: LIST
10305: LIST
10306: PUSH
10307: LD_INT 1
10309: PPUSH
10310: LD_INT 2
10312: PPUSH
10313: CALL_OW 12
10317: ARRAY
10318: ST_TO_ADDR
// vc_weapon = ar_selfpropelled_bomb ;
10319: LD_ADDR_OWVAR 40
10323: PUSH
10324: LD_INT 29
10326: ST_TO_ADDR
// uc_side = legie ;
10327: LD_ADDR_OWVAR 20
10331: PUSH
10332: LD_EXP 8
10336: ST_TO_ADDR
// uc_nation = nation_arabian ;
10337: LD_ADDR_OWVAR 21
10341: PUSH
10342: LD_INT 2
10344: ST_TO_ADDR
// v = CreateVehicle ;
10345: LD_ADDR_VAR 0 5
10349: PUSH
10350: CALL_OW 45
10354: ST_TO_ADDR
// ar_utok = ar_utok ^ v ;
10355: LD_ADDR_EXP 20
10359: PUSH
10360: LD_EXP 20
10364: PUSH
10365: LD_VAR 0 5
10369: ADD
10370: ST_TO_ADDR
// AddRiderIfManual ( v ) ;
10371: LD_VAR 0 5
10375: PPUSH
10376: CALL 9135 0 1
// PlaceVehArea ( v , area ) ;
10380: LD_VAR 0 5
10384: PPUSH
10385: LD_VAR 0 2
10389: PPUSH
10390: CALL 9026 0 2
// end ;
10394: GO 10254
10396: POP
10397: POP
// end ;
10398: LD_VAR 0 3
10402: RET
// export function CreateSoldiersArea ( pocet , area ) ; var i , v ; begin
10403: LD_INT 0
10405: PPUSH
10406: PPUSH
10407: PPUSH
// for i = 1 to pocet do
10408: LD_ADDR_VAR 0 4
10412: PUSH
10413: DOUBLE
10414: LD_INT 1
10416: DEC
10417: ST_TO_ADDR
10418: LD_VAR 0 1
10422: PUSH
10423: FOR_TO
10424: IFFALSE 10490
// begin v = VytvorAraba ( [ 1 , class_mortar ] [ Rand ( 1 , 2 ) ] ) ;
10426: LD_ADDR_VAR 0 5
10430: PUSH
10431: LD_INT 1
10433: PUSH
10434: LD_INT 8
10436: PUSH
10437: EMPTY
10438: LIST
10439: LIST
10440: PUSH
10441: LD_INT 1
10443: PPUSH
10444: LD_INT 2
10446: PPUSH
10447: CALL_OW 12
10451: ARRAY
10452: PPUSH
10453: CALL 9202 0 1
10457: ST_TO_ADDR
// ar_utok = ar_utok ^ v ;
10458: LD_ADDR_EXP 20
10462: PUSH
10463: LD_EXP 20
10467: PUSH
10468: LD_VAR 0 5
10472: ADD
10473: ST_TO_ADDR
// PlaceVehArea ( v , area ) ;
10474: LD_VAR 0 5
10478: PPUSH
10479: LD_VAR 0 2
10483: PPUSH
10484: CALL 9026 0 2
// end ;
10488: GO 10423
10490: POP
10491: POP
// end ;
10492: LD_VAR 0 3
10496: RET
// export function CreateSnipersArea ( pocet , area ) ; var i , v ; begin
10497: LD_INT 0
10499: PPUSH
10500: PPUSH
10501: PPUSH
// for i = 1 to pocet do
10502: LD_ADDR_VAR 0 4
10506: PUSH
10507: DOUBLE
10508: LD_INT 1
10510: DEC
10511: ST_TO_ADDR
10512: LD_VAR 0 1
10516: PUSH
10517: FOR_TO
10518: IFFALSE 10565
// begin v = VytvorAraba ( class_sniper ) ;
10520: LD_ADDR_VAR 0 5
10524: PUSH
10525: LD_INT 5
10527: PPUSH
10528: CALL 9202 0 1
10532: ST_TO_ADDR
// ar_utok = ar_utok ^ v ;
10533: LD_ADDR_EXP 20
10537: PUSH
10538: LD_EXP 20
10542: PUSH
10543: LD_VAR 0 5
10547: ADD
10548: ST_TO_ADDR
// PlaceVehArea ( v , area ) ;
10549: LD_VAR 0 5
10553: PPUSH
10554: LD_VAR 0 2
10558: PPUSH
10559: CALL 9026 0 2
// end ;
10563: GO 10517
10565: POP
10566: POP
// end ;
10567: LD_VAR 0 3
10571: RET
// export function CreateApesArea ( pocet , area ) ; var i , v ; begin
10572: LD_INT 0
10574: PPUSH
10575: PPUSH
10576: PPUSH
// for i = 1 to pocet do
10577: LD_ADDR_VAR 0 4
10581: PUSH
10582: DOUBLE
10583: LD_INT 1
10585: DEC
10586: ST_TO_ADDR
10587: LD_VAR 0 1
10591: PUSH
10592: FOR_TO
10593: IFFALSE 10640
// begin v = VytvorAraba ( class_apeman_kamikaze ) ;
10595: LD_ADDR_VAR 0 5
10599: PUSH
10600: LD_INT 17
10602: PPUSH
10603: CALL 9202 0 1
10607: ST_TO_ADDR
// ar_utok = ar_utok ^ v ;
10608: LD_ADDR_EXP 20
10612: PUSH
10613: LD_EXP 20
10617: PUSH
10618: LD_VAR 0 5
10622: ADD
10623: ST_TO_ADDR
// PlaceVehArea ( v , area ) ;
10624: LD_VAR 0 5
10628: PPUSH
10629: LD_VAR 0 2
10633: PPUSH
10634: CALL 9026 0 2
// end ;
10638: GO 10592
10640: POP
10641: POP
// end ;
10642: LD_VAR 0 3
10646: RET
// export function NajdiVojakaZeleny ; var voj ; begin
10647: LD_INT 0
10649: PPUSH
10650: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , zeleny ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Lesnitsky then
10651: LD_INT 24
10653: PUSH
10654: LD_INT 250
10656: PUSH
10657: EMPTY
10658: LIST
10659: LIST
10660: PUSH
10661: LD_INT 22
10663: PUSH
10664: LD_EXP 7
10668: PUSH
10669: EMPTY
10670: LIST
10671: LIST
10672: PUSH
10673: LD_INT 2
10675: PUSH
10676: LD_INT 25
10678: PUSH
10679: LD_INT 1
10681: PUSH
10682: EMPTY
10683: LIST
10684: LIST
10685: PUSH
10686: LD_INT 25
10688: PUSH
10689: LD_INT 9
10691: PUSH
10692: EMPTY
10693: LIST
10694: LIST
10695: PUSH
10696: EMPTY
10697: LIST
10698: LIST
10699: LIST
10700: PUSH
10701: EMPTY
10702: LIST
10703: LIST
10704: LIST
10705: PPUSH
10706: CALL_OW 69
10710: PUSH
10711: LD_EXP 2
10715: DIFF
10716: IFFALSE 10789
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , zeleny ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Lesnitsky ;
10718: LD_ADDR_VAR 0 2
10722: PUSH
10723: LD_INT 24
10725: PUSH
10726: LD_INT 250
10728: PUSH
10729: EMPTY
10730: LIST
10731: LIST
10732: PUSH
10733: LD_INT 22
10735: PUSH
10736: LD_EXP 7
10740: PUSH
10741: EMPTY
10742: LIST
10743: LIST
10744: PUSH
10745: LD_INT 2
10747: PUSH
10748: LD_INT 25
10750: PUSH
10751: LD_INT 1
10753: PUSH
10754: EMPTY
10755: LIST
10756: LIST
10757: PUSH
10758: LD_INT 25
10760: PUSH
10761: LD_INT 9
10763: PUSH
10764: EMPTY
10765: LIST
10766: LIST
10767: PUSH
10768: EMPTY
10769: LIST
10770: LIST
10771: LIST
10772: PUSH
10773: EMPTY
10774: LIST
10775: LIST
10776: LIST
10777: PPUSH
10778: CALL_OW 69
10782: PUSH
10783: LD_EXP 2
10787: DIFF
10788: ST_TO_ADDR
// if voj then
10789: LD_VAR 0 2
10793: IFFALSE 10821
// result = voj [ Rand ( 1 , voj ) ] else
10795: LD_ADDR_VAR 0 1
10799: PUSH
10800: LD_VAR 0 2
10804: PUSH
10805: LD_INT 1
10807: PPUSH
10808: LD_VAR 0 2
10812: PPUSH
10813: CALL_OW 12
10817: ARRAY
10818: ST_TO_ADDR
10819: GO 10865
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_side , zeleny ] ] ) , skill_combat ) ;
10821: LD_ADDR_VAR 0 1
10825: PUSH
10826: LD_INT 24
10828: PUSH
10829: LD_INT 250
10831: PUSH
10832: EMPTY
10833: LIST
10834: LIST
10835: PUSH
10836: LD_INT 22
10838: PUSH
10839: LD_EXP 7
10843: PUSH
10844: EMPTY
10845: LIST
10846: LIST
10847: PUSH
10848: EMPTY
10849: LIST
10850: LIST
10851: PPUSH
10852: CALL_OW 69
10856: PPUSH
10857: LD_INT 1
10859: PPUSH
10860: CALL_OW 433
10864: ST_TO_ADDR
// end ; end_of_file
10865: LD_VAR 0 1
10869: RET
// export function DialogSLesnitskym ; var un ; begin
10870: LD_INT 0
10872: PPUSH
10873: PPUSH
// zakaz_vybrani = false ;
10874: LD_ADDR_EXP 5
10878: PUSH
10879: LD_INT 0
10881: ST_TO_ADDR
// InGameOff ;
10882: CALL_OW 9
// if not editor then
10886: LD_EXP 10
10890: NOT
10891: IFFALSE 10992
// begin DialogueOn ;
10893: CALL_OW 6
// Say ( vsevolod , D4-vse1 ) ;
10897: LD_EXP 1
10901: PPUSH
10902: LD_STRING D4-vse1
10904: PPUSH
10905: CALL_OW 88
// Say ( lesnitsky , D4-les1 ) ;
10909: LD_EXP 2
10913: PPUSH
10914: LD_STRING D4-les1
10916: PPUSH
10917: CALL_OW 88
// Say ( vsevolod , D4-vse2 ) ;
10921: LD_EXP 1
10925: PPUSH
10926: LD_STRING D4-vse2
10928: PPUSH
10929: CALL_OW 88
// Say ( lesnitsky , D4-les2 ) ;
10933: LD_EXP 2
10937: PPUSH
10938: LD_STRING D4-les2
10940: PPUSH
10941: CALL_OW 88
// Say ( vsevolod , D4-vse3 ) ;
10945: LD_EXP 1
10949: PPUSH
10950: LD_STRING D4-vse3
10952: PPUSH
10953: CALL_OW 88
// Say ( lesnitsky , D4-les3 ) ;
10957: LD_EXP 2
10961: PPUSH
10962: LD_STRING D4-les3
10964: PPUSH
10965: CALL_OW 88
// Say ( vsevolod , D4-vse4 ) ;
10969: LD_EXP 1
10973: PPUSH
10974: LD_STRING D4-vse4
10976: PPUSH
10977: CALL_OW 88
// DialogueOff ;
10981: CALL_OW 7
// Wait ( 0 0$0.2 ) ;
10985: LD_INT 7
10987: PPUSH
10988: CALL_OW 67
// end ; SetAttitude ( you , legie , att_enemy , true ) ;
10992: LD_EXP 6
10996: PPUSH
10997: LD_EXP 8
11001: PPUSH
11002: LD_INT 2
11004: PPUSH
11005: LD_INT 1
11007: PPUSH
11008: CALL_OW 80
// SetAttitude ( zeleny , legie , att_enemy , true ) ;
11012: LD_EXP 7
11016: PPUSH
11017: LD_EXP 8
11021: PPUSH
11022: LD_INT 2
11024: PPUSH
11025: LD_INT 1
11027: PPUSH
11028: CALL_OW 80
// for un in FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , zeleny ] ] ) do
11032: LD_ADDR_VAR 0 2
11036: PUSH
11037: LD_INT 21
11039: PUSH
11040: LD_INT 2
11042: PUSH
11043: EMPTY
11044: LIST
11045: LIST
11046: PUSH
11047: LD_INT 22
11049: PUSH
11050: LD_EXP 7
11054: PUSH
11055: EMPTY
11056: LIST
11057: LIST
11058: PUSH
11059: EMPTY
11060: LIST
11061: LIST
11062: PPUSH
11063: CALL_OW 69
11067: PUSH
11068: FOR_IN
11069: IFFALSE 11087
// SetSide ( un , you ) ;
11071: LD_VAR 0 2
11075: PPUSH
11076: LD_EXP 6
11080: PPUSH
11081: CALL_OW 235
11085: GO 11068
11087: POP
11088: POP
// for un in FilterAllUnits ( [ [ f_class , 3 ] , [ f_side , zeleny ] ] ) do
11089: LD_ADDR_VAR 0 2
11093: PUSH
11094: LD_INT 25
11096: PUSH
11097: LD_INT 3
11099: PUSH
11100: EMPTY
11101: LIST
11102: LIST
11103: PUSH
11104: LD_INT 22
11106: PUSH
11107: LD_EXP 7
11111: PUSH
11112: EMPTY
11113: LIST
11114: LIST
11115: PUSH
11116: EMPTY
11117: LIST
11118: LIST
11119: PPUSH
11120: CALL_OW 69
11124: PUSH
11125: FOR_IN
11126: IFFALSE 11144
// SetSide ( un , you ) ;
11128: LD_VAR 0 2
11132: PPUSH
11133: LD_EXP 6
11137: PPUSH
11138: CALL_OW 235
11142: GO 11125
11144: POP
11145: POP
// SetSide ( naft , you ) ;
11146: LD_INT 59
11148: PPUSH
11149: LD_EXP 6
11153: PPUSH
11154: CALL_OW 235
// SetSide ( [ mru2 , mru3 , mru4 , mru5 , mru6 , mru7 , mru8 ] , you ) ;
11158: LD_EXP 26
11162: PUSH
11163: LD_EXP 27
11167: PUSH
11168: LD_EXP 28
11172: PUSH
11173: LD_EXP 29
11177: PUSH
11178: LD_EXP 30
11182: PUSH
11183: LD_EXP 31
11187: PUSH
11188: LD_EXP 32
11192: PUSH
11193: EMPTY
11194: LIST
11195: LIST
11196: LIST
11197: LIST
11198: LIST
11199: LIST
11200: LIST
11201: PPUSH
11202: LD_EXP 6
11206: PPUSH
11207: CALL_OW 235
// if not editor then
11211: LD_EXP 10
11215: NOT
11216: IFFALSE 11225
// ChangeMissionObjectives ( D4-M01 ) ;
11218: LD_STRING D4-M01
11220: PPUSH
11221: CALL_OW 337
// Wait ( 0 0$0.2 ) ;
11225: LD_INT 7
11227: PPUSH
11228: CALL_OW 67
// if not editor then
11232: LD_EXP 10
11236: NOT
11237: IFFALSE 11246
// Query ( info2 ) ;
11239: LD_STRING info2
11241: PPUSH
11242: CALL_OW 97
// Wait ( 0 0$0.2 ) ;
11246: LD_INT 7
11248: PPUSH
11249: CALL_OW 67
// SaveForQuickRestart ;
11253: CALL_OW 22
// KillUnit ( arm ) ;
11257: LD_INT 78
11259: PPUSH
11260: CALL_OW 66
// vse_stamina = GetAttr ( vsevolod , attr_stamina ) ;
11264: LD_ADDR_EXP 23
11268: PUSH
11269: LD_EXP 1
11273: PPUSH
11274: LD_INT 1
11276: PPUSH
11277: CALL_OW 260
11281: ST_TO_ADDR
// les_stamina = GetAttr ( lesnitsky , attr_stamina ) ;
11282: LD_ADDR_EXP 24
11286: PUSH
11287: LD_EXP 2
11291: PPUSH
11292: LD_INT 1
11294: PPUSH
11295: CALL_OW 260
11299: ST_TO_ADDR
// hrajeme = true ;
11300: LD_ADDR_EXP 13
11304: PUSH
11305: LD_INT 1
11307: ST_TO_ADDR
// EnableExclamations ;
11308: CALL_OW 473
// end ;
11312: LD_VAR 0 1
11316: RET
// export function DialogKdePosily ( ) ; begin
11317: LD_INT 0
11319: PPUSH
// Say ( NajdiVojaka , D4-nekdo1 ) ;
11320: CALL 8086 0 0
11324: PPUSH
11325: LD_STRING D4-nekdo1
11327: PPUSH
11328: CALL_OW 88
// Say ( vsevolod , D4-vse5 ) ;
11332: LD_EXP 1
11336: PPUSH
11337: LD_STRING D4-vse5
11339: PPUSH
11340: CALL_OW 88
// end ;
11344: LD_VAR 0 1
11348: RET
// export function DialogMyTuChcipneme ( ) ; begin
11349: LD_INT 0
11351: PPUSH
// Say ( NajdiVojakaZeleny , D4-nekdo2 ) ;
11352: CALL 10647 0 0
11356: PPUSH
11357: LD_STRING D4-nekdo2
11359: PPUSH
11360: CALL_OW 88
// Say ( lesnitsky , D4-les5 ) ;
11364: LD_EXP 2
11368: PPUSH
11369: LD_STRING D4-les5
11371: PPUSH
11372: CALL_OW 88
// end ;
11376: LD_VAR 0 1
11380: RET
// export function DialogJeJichMoc ( ) ; begin
11381: LD_INT 0
11383: PPUSH
// Say ( NajdiVojaka , D4-nekdo3 ) ;
11384: CALL 8086 0 0
11388: PPUSH
11389: LD_STRING D4-nekdo3
11391: PPUSH
11392: CALL_OW 88
// end ;
11396: LD_VAR 0 1
11400: RET
// export function DialogZatracenaLegie ( ) ; begin
11401: LD_INT 0
11403: PPUSH
// Say ( NajdiDelnika , D4-nekdo0 ) ;
11404: CALL 8800 0 0
11408: PPUSH
11409: LD_STRING D4-nekdo0
11411: PPUSH
11412: CALL_OW 88
// Say ( vsevolod , D4-vseNeco ) ;
11416: LD_EXP 1
11420: PPUSH
11421: LD_STRING D4-vseNeco
11423: PPUSH
11424: CALL_OW 88
// end ;
11428: LD_VAR 0 1
11432: RET
// export function DialogHeikeBomby ( ) ; begin
11433: LD_INT 0
11435: PPUSH
// SayRadio ( heike , D4-heike-bomb ) ;
11436: LD_EXP 9
11440: PPUSH
11441: LD_STRING D4-heike-bomb
11443: PPUSH
11444: CALL_OW 94
// end ;
11448: LD_VAR 0 1
11452: RET
// export function DialogHeikeKonec ( ) ; begin
11453: LD_INT 0
11455: PPUSH
// Say ( heike , D4-heike3 ) ;
11456: LD_EXP 9
11460: PPUSH
11461: LD_STRING D4-heike3
11463: PPUSH
11464: CALL_OW 88
// Say ( arab , D4-arab1 ) ;
11468: LD_INT 95
11470: PPUSH
11471: LD_STRING D4-arab1
11473: PPUSH
11474: CALL_OW 88
// end ; end_of_file
11478: LD_VAR 0 1
11482: RET
// every 0 0$1 trigger zakaz_vybrani and tick < 10 10$00 do
11483: LD_EXP 5
11487: PUSH
11488: LD_OWVAR 1
11492: PUSH
11493: LD_INT 21000
11495: LESS
11496: AND
11497: IFFALSE 11541
11499: GO 11501
11501: DISABLE
// begin Wait ( 0 0$1.4 ) ;
11502: LD_INT 49
11504: PPUSH
11505: CALL_OW 67
// if IsInUnit ( Vsevolod ) then
11509: LD_EXP 1
11513: PPUSH
11514: CALL_OW 310
11518: IFFALSE 11531
// CenterOnUnits ( auto ) else
11520: LD_EXP 3
11524: PPUSH
11525: CALL_OW 85
11529: GO 11540
// CenterOnUnits ( Vsevolod ) ;
11531: LD_EXP 1
11535: PPUSH
11536: CALL_OW 85
// enable ;
11540: ENABLE
// end ;
11541: END
// every 0 0$0.4 trigger zakaz_vybrani do
11542: LD_EXP 5
11546: IFFALSE 11575
11548: GO 11550
11550: DISABLE
// begin DeselectUnits ( [ vsevolod , IsInUnit ( vsevolod ) ] ) ;
11551: LD_EXP 1
11555: PUSH
11556: LD_EXP 1
11560: PPUSH
11561: CALL_OW 310
11565: PUSH
11566: EMPTY
11567: LIST
11568: LIST
11569: PPUSH
11570: CALL_OW 491
// enable ;
11574: ENABLE
// end ;
11575: END
// export enable_death_losts ; every 0 0$5 do
11576: GO 11578
11578: DISABLE
// enable_death_losts = true ;
11579: LD_ADDR_EXP 45
11583: PUSH
11584: LD_INT 1
11586: ST_TO_ADDR
11587: END
// every 0 0$1.4 trigger enable_death_losts do
11588: LD_EXP 45
11592: IFFALSE 11634
11594: GO 11596
11596: DISABLE
// begin if IsDead ( vsevolod ) then
11597: LD_EXP 1
11601: PPUSH
11602: CALL_OW 301
11606: IFFALSE 11615
// YouLost ( sevidead ) ;
11608: LD_STRING sevidead
11610: PPUSH
11611: CALL_OW 104
// if IsDead ( lesnitsky ) then
11615: LD_EXP 2
11619: PPUSH
11620: CALL_OW 301
11624: IFFALSE 11633
// YouLost ( lesnitskydead ) ;
11626: LD_STRING lesnitskydead
11628: PPUSH
11629: CALL_OW 104
// enable ;
11633: ENABLE
// end ;
11634: END
// every 0 0$1 do var unit , list , i ;
11635: GO 11637
11637: DISABLE
11638: LD_INT 0
11640: PPUSH
11641: PPUSH
11642: PPUSH
// begin if IsSelected ( FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_turret ] ] , [ f_ok ] , [ f_not , [ f_constructed ] ] , [ f_bweapon , 0 ] ] ) ) + 0 = 1 then
11643: LD_INT 22
11645: PUSH
11646: LD_EXP 6
11650: PUSH
11651: EMPTY
11652: LIST
11653: LIST
11654: PUSH
11655: LD_INT 2
11657: PUSH
11658: LD_INT 30
11660: PUSH
11661: LD_INT 32
11663: PUSH
11664: EMPTY
11665: LIST
11666: LIST
11667: PUSH
11668: LD_INT 30
11670: PUSH
11671: LD_INT 33
11673: PUSH
11674: EMPTY
11675: LIST
11676: LIST
11677: PUSH
11678: EMPTY
11679: LIST
11680: LIST
11681: LIST
11682: PUSH
11683: LD_INT 50
11685: PUSH
11686: EMPTY
11687: LIST
11688: PUSH
11689: LD_INT 3
11691: PUSH
11692: LD_INT 57
11694: PUSH
11695: EMPTY
11696: LIST
11697: PUSH
11698: EMPTY
11699: LIST
11700: LIST
11701: PUSH
11702: LD_INT 35
11704: PUSH
11705: LD_INT 0
11707: PUSH
11708: EMPTY
11709: LIST
11710: LIST
11711: PUSH
11712: EMPTY
11713: LIST
11714: LIST
11715: LIST
11716: LIST
11717: LIST
11718: PPUSH
11719: CALL_OW 69
11723: PPUSH
11724: CALL_OW 306
11728: PUSH
11729: LD_INT 0
11731: PLUS
11732: PUSH
11733: LD_INT 1
11735: EQUAL
11736: IFFALSE 12272
// begin for i in FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_turret ] ] , [ f_ok ] , [ f_not , [ f_constructed ] ] , [ f_bweapon , 0 ] ] ) do
11738: LD_ADDR_VAR 0 3
11742: PUSH
11743: LD_INT 22
11745: PUSH
11746: LD_EXP 6
11750: PUSH
11751: EMPTY
11752: LIST
11753: LIST
11754: PUSH
11755: LD_INT 2
11757: PUSH
11758: LD_INT 30
11760: PUSH
11761: LD_INT 32
11763: PUSH
11764: EMPTY
11765: LIST
11766: LIST
11767: PUSH
11768: LD_INT 30
11770: PUSH
11771: LD_INT 33
11773: PUSH
11774: EMPTY
11775: LIST
11776: LIST
11777: PUSH
11778: EMPTY
11779: LIST
11780: LIST
11781: LIST
11782: PUSH
11783: LD_INT 50
11785: PUSH
11786: EMPTY
11787: LIST
11788: PUSH
11789: LD_INT 3
11791: PUSH
11792: LD_INT 57
11794: PUSH
11795: EMPTY
11796: LIST
11797: PUSH
11798: EMPTY
11799: LIST
11800: LIST
11801: PUSH
11802: LD_INT 35
11804: PUSH
11805: LD_INT 0
11807: PUSH
11808: EMPTY
11809: LIST
11810: LIST
11811: PUSH
11812: EMPTY
11813: LIST
11814: LIST
11815: LIST
11816: LIST
11817: LIST
11818: PPUSH
11819: CALL_OW 69
11823: PUSH
11824: FOR_IN
11825: IFFALSE 11852
// if IsSelected ( i ) then
11827: LD_VAR 0 3
11831: PPUSH
11832: CALL_OW 306
11836: IFFALSE 11850
// begin unit = i ;
11838: LD_ADDR_VAR 0 1
11842: PUSH
11843: LD_VAR 0 3
11847: ST_TO_ADDR
// break ;
11848: GO 11852
// end ;
11850: GO 11824
11852: POP
11853: POP
// if not unit then
11854: LD_VAR 0 1
11858: NOT
11859: IFFALSE 11863
// exit ;
11861: GO 12273
// if GetSide ( unit ) = you and GetBType ( unit ) in [ b_bunker , b_turret ] and not GetWeapon ( unit ) and IsOk ( unit ) and not IsConstructed ( unit ) then
11863: LD_VAR 0 1
11867: PPUSH
11868: CALL_OW 255
11872: PUSH
11873: LD_EXP 6
11877: EQUAL
11878: PUSH
11879: LD_VAR 0 1
11883: PPUSH
11884: CALL_OW 266
11888: PUSH
11889: LD_INT 32
11891: PUSH
11892: LD_INT 33
11894: PUSH
11895: EMPTY
11896: LIST
11897: LIST
11898: IN
11899: AND
11900: PUSH
11901: LD_VAR 0 1
11905: PPUSH
11906: CALL_OW 264
11910: NOT
11911: AND
11912: PUSH
11913: LD_VAR 0 1
11917: PPUSH
11918: CALL_OW 302
11922: AND
11923: PUSH
11924: LD_VAR 0 1
11928: PPUSH
11929: CALL_OW 304
11933: NOT
11934: AND
11935: IFFALSE 12272
// begin list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
11937: LD_ADDR_VAR 0 2
11941: PUSH
11942: LD_INT 1
11944: PUSH
11945: LD_INT 2
11947: PUSH
11948: LD_INT 3
11950: PUSH
11951: LD_INT 4
11953: PUSH
11954: LD_INT 5
11956: PUSH
11957: LD_INT 6
11959: PUSH
11960: LD_INT 7
11962: PUSH
11963: EMPTY
11964: LIST
11965: LIST
11966: LIST
11967: LIST
11968: LIST
11969: LIST
11970: LIST
11971: ST_TO_ADDR
// if not base then
11972: LD_EXP 11
11976: NOT
11977: IFFALSE 11981
// exit ;
11979: GO 12273
// if dif_zbrani_zbyva <= 0 then
11981: LD_EXP 71
11985: PUSH
11986: LD_INT 0
11988: LESSEQUAL
11989: IFFALSE 11993
// exit ;
11991: GO 12273
// if list + 0 <= 1 then
11993: LD_VAR 0 2
11997: PUSH
11998: LD_INT 0
12000: PLUS
12001: PUSH
12002: LD_INT 1
12004: LESSEQUAL
12005: IFFALSE 12009
// exit ;
12007: GO 12273
// case SelectiveQuery ( zbran , list ) of 1 :
12009: LD_STRING zbran
12011: PPUSH
12012: LD_VAR 0 2
12016: PPUSH
12017: CALL_OW 98
12021: PUSH
12022: LD_INT 1
12024: DOUBLE
12025: EQUAL
12026: IFTRUE 12030
12028: GO 12059
12030: POP
// begin PlaceWeaponTurret ( unit , ru_heavy_machine_gun ) ;
12031: LD_VAR 0 1
12035: PPUSH
12036: LD_INT 42
12038: PPUSH
12039: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12043: LD_ADDR_EXP 71
12047: PUSH
12048: LD_EXP 71
12052: PUSH
12053: LD_INT 1
12055: MINUS
12056: ST_TO_ADDR
// end ; 2 :
12057: GO 12272
12059: LD_INT 2
12061: DOUBLE
12062: EQUAL
12063: IFTRUE 12067
12065: GO 12096
12067: POP
// begin PlaceWeaponTurret ( unit , ru_gatling_gun ) ;
12068: LD_VAR 0 1
12072: PPUSH
12073: LD_INT 43
12075: PPUSH
12076: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12080: LD_ADDR_EXP 71
12084: PUSH
12085: LD_EXP 71
12089: PUSH
12090: LD_INT 1
12092: MINUS
12093: ST_TO_ADDR
// end ; 3 :
12094: GO 12272
12096: LD_INT 3
12098: DOUBLE
12099: EQUAL
12100: IFTRUE 12104
12102: GO 12133
12104: POP
// begin PlaceWeaponTurret ( unit , ru_gun ) ;
12105: LD_VAR 0 1
12109: PPUSH
12110: LD_INT 44
12112: PPUSH
12113: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12117: LD_ADDR_EXP 71
12121: PUSH
12122: LD_EXP 71
12126: PUSH
12127: LD_INT 1
12129: MINUS
12130: ST_TO_ADDR
// end ; 4 :
12131: GO 12272
12133: LD_INT 4
12135: DOUBLE
12136: EQUAL
12137: IFTRUE 12141
12139: GO 12170
12141: POP
// begin PlaceWeaponTurret ( unit , ru_heavy_gun ) ;
12142: LD_VAR 0 1
12146: PPUSH
12147: LD_INT 46
12149: PPUSH
12150: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12154: LD_ADDR_EXP 71
12158: PUSH
12159: LD_EXP 71
12163: PUSH
12164: LD_INT 1
12166: MINUS
12167: ST_TO_ADDR
// end ; 5 :
12168: GO 12272
12170: LD_INT 5
12172: DOUBLE
12173: EQUAL
12174: IFTRUE 12178
12176: GO 12207
12178: POP
// begin PlaceWeaponTurret ( unit , ru_rocket_launcher ) ;
12179: LD_VAR 0 1
12183: PPUSH
12184: LD_INT 45
12186: PPUSH
12187: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12191: LD_ADDR_EXP 71
12195: PUSH
12196: LD_EXP 71
12200: PUSH
12201: LD_INT 1
12203: MINUS
12204: ST_TO_ADDR
// end ; 6 :
12205: GO 12272
12207: LD_INT 6
12209: DOUBLE
12210: EQUAL
12211: IFTRUE 12215
12213: GO 12244
12215: POP
// begin PlaceWeaponTurret ( unit , ru_rocket ) ;
12216: LD_VAR 0 1
12220: PPUSH
12221: LD_INT 47
12223: PPUSH
12224: CALL_OW 431
// dif_zbrani_zbyva = dif_zbrani_zbyva - 1 ;
12228: LD_ADDR_EXP 71
12232: PUSH
12233: LD_EXP 71
12237: PUSH
12238: LD_INT 1
12240: MINUS
12241: ST_TO_ADDR
// end ; 7 :
12242: GO 12272
12244: LD_INT 7
12246: DOUBLE
12247: EQUAL
12248: IFTRUE 12252
12250: GO 12271
12252: POP
// begin DeselectUnits ( unit ) ;
12253: LD_VAR 0 1
12257: PPUSH
12258: CALL_OW 491
// Wait ( 0 0$3 ) ;
12262: LD_INT 105
12264: PPUSH
12265: CALL_OW 67
// end ; end ;
12269: GO 12272
12271: POP
// end ; end ; enable ;
12272: ENABLE
// end ; end_of_file
12273: PPOPN 3
12275: END
// on Contact ( side , side2 ) do begin if side = you and side2 = zeleny then
12276: LD_VAR 0 1
12280: PUSH
12281: LD_EXP 6
12285: EQUAL
12286: PUSH
12287: LD_VAR 0 2
12291: PUSH
12292: LD_EXP 7
12296: EQUAL
12297: AND
12298: IFFALSE 12307
// begin YouLost ( utok ) ;
12300: LD_STRING utok
12302: PPUSH
12303: CALL_OW 104
// end ; end ;
12307: PPOPN 2
12309: END
// on UnitDestroyed ( unit ) do begin if unit in ar_utok then
12310: LD_VAR 0 1
12314: PUSH
12315: LD_EXP 20
12319: IN
12320: IFFALSE 12338
// ar_utok = ar_utok diff unit ;
12322: LD_ADDR_EXP 20
12326: PUSH
12327: LD_EXP 20
12331: PUSH
12332: LD_VAR 0 1
12336: DIFF
12337: ST_TO_ADDR
// end ;
12338: PPOPN 1
12340: END
// on VehicleCaptured ( new_vehicle , old_vehicle , original_side , human ) do begin VehicleCaptured2 ( new_vehicle , old_vehicle , original_side , human ) ;
12341: LD_VAR 0 1
12345: PPUSH
12346: LD_VAR 0 2
12350: PPUSH
12351: LD_VAR 0 3
12355: PPUSH
12356: LD_VAR 0 4
12360: PPUSH
12361: CALL 12456 0 4
// end ;
12365: PPOPN 4
12367: END
// var capturedEmptyVehs ; every 0 0$1 do
12368: GO 12370
12370: DISABLE
// capturedEmptyVehs = [ ] ;
12371: LD_ADDR_LOC 5
12375: PUSH
12376: EMPTY
12377: ST_TO_ADDR
12378: END
// on EnterVehicle ( vehicle , human ) do begin EnterVeh ( vehicle , human ) ;
12379: LD_VAR 0 1
12383: PPUSH
12384: LD_VAR 0 2
12388: PPUSH
12389: CALL 12413 0 2
// end ;
12393: PPOPN 2
12395: END
// on EnterVehicleFromBuilding ( vehicle , human , building ) do begin EnterVeh ( vehicle , human ) ;
12396: LD_VAR 0 1
12400: PPUSH
12401: LD_VAR 0 2
12405: PPUSH
12406: CALL 12413 0 2
// end ;
12410: PPOPN 3
12412: END
// function EnterVeh ( new_vehicle , human ) ; begin
12413: LD_INT 0
12415: PPUSH
// if new_vehicle in capturedEmptyVehs then
12416: LD_VAR 0 1
12420: PUSH
12421: LD_LOC 5
12425: IN
12426: IFFALSE 12451
// VehicleCaptured2 ( new_vehicle , new_vehicle , - 1 , human ) ;
12428: LD_VAR 0 1
12432: PPUSH
12433: LD_VAR 0 1
12437: PPUSH
12438: LD_INT 1
12440: NEG
12441: PPUSH
12442: LD_VAR 0 2
12446: PPUSH
12447: CALL 12456 0 4
// end ;
12451: LD_VAR 0 3
12455: RET
// function VehicleCaptured2 ( new_vehicle , old_vehicle , original_side , human ) ; var side , nation , weapon , chassis , control , engine , fuel , dir , x , y , lives , veh , rider , selected ; begin
12456: LD_INT 0
12458: PPUSH
12459: PPUSH
12460: PPUSH
12461: PPUSH
12462: PPUSH
12463: PPUSH
12464: PPUSH
12465: PPUSH
12466: PPUSH
12467: PPUSH
12468: PPUSH
12469: PPUSH
12470: PPUSH
12471: PPUSH
12472: PPUSH
// x = GetX ( new_vehicle ) ;
12473: LD_ADDR_VAR 0 14
12477: PUSH
12478: LD_VAR 0 1
12482: PPUSH
12483: CALL_OW 250
12487: ST_TO_ADDR
// y = GetY ( new_vehicle ) ;
12488: LD_ADDR_VAR 0 15
12492: PUSH
12493: LD_VAR 0 1
12497: PPUSH
12498: CALL_OW 251
12502: ST_TO_ADDR
// side = GetSide ( new_vehicle ) ;
12503: LD_ADDR_VAR 0 6
12507: PUSH
12508: LD_VAR 0 1
12512: PPUSH
12513: CALL_OW 255
12517: ST_TO_ADDR
// nation = GetNation ( new_vehicle ) ;
12518: LD_ADDR_VAR 0 7
12522: PUSH
12523: LD_VAR 0 1
12527: PPUSH
12528: CALL_OW 248
12532: ST_TO_ADDR
// weapon = GetWeapon ( new_vehicle ) ;
12533: LD_ADDR_VAR 0 8
12537: PUSH
12538: LD_VAR 0 1
12542: PPUSH
12543: CALL_OW 264
12547: ST_TO_ADDR
// chassis = GetChassis ( new_vehicle ) ;
12548: LD_ADDR_VAR 0 9
12552: PUSH
12553: LD_VAR 0 1
12557: PPUSH
12558: CALL_OW 265
12562: ST_TO_ADDR
// control = GetControl ( new_vehicle ) ;
12563: LD_ADDR_VAR 0 10
12567: PUSH
12568: LD_VAR 0 1
12572: PPUSH
12573: CALL_OW 263
12577: ST_TO_ADDR
// engine = GetEngine ( new_vehicle ) ;
12578: LD_ADDR_VAR 0 11
12582: PUSH
12583: LD_VAR 0 1
12587: PPUSH
12588: CALL_OW 262
12592: ST_TO_ADDR
// if engine <> engine_siberite then
12593: LD_VAR 0 11
12597: PUSH
12598: LD_INT 3
12600: NONEQUAL
12601: IFFALSE 12618
// fuel = GetFuel ( new_vehicle ) ;
12603: LD_ADDR_VAR 0 12
12607: PUSH
12608: LD_VAR 0 1
12612: PPUSH
12613: CALL_OW 261
12617: ST_TO_ADDR
// dir = GetDir ( new_vehicle ) ;
12618: LD_ADDR_VAR 0 13
12622: PUSH
12623: LD_VAR 0 1
12627: PPUSH
12628: CALL_OW 254
12632: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
12633: LD_ADDR_VAR 0 16
12637: PUSH
12638: LD_VAR 0 1
12642: PPUSH
12643: CALL_OW 256
12647: ST_TO_ADDR
// if control = control_manual and not UnitsInside ( new_vehicle ) then
12648: LD_VAR 0 10
12652: PUSH
12653: LD_INT 1
12655: EQUAL
12656: PUSH
12657: LD_VAR 0 1
12661: PPUSH
12662: CALL_OW 313
12666: NOT
12667: AND
12668: IFFALSE 12688
// begin capturedEmptyVehs = capturedEmptyVehs ^ new_vehicle ;
12670: LD_ADDR_LOC 5
12674: PUSH
12675: LD_LOC 5
12679: PUSH
12680: LD_VAR 0 1
12684: ADD
12685: ST_TO_ADDR
// exit ;
12686: GO 12997
// end ; if UnitsInside ( new_vehicle ) then
12688: LD_VAR 0 1
12692: PPUSH
12693: CALL_OW 313
12697: IFFALSE 12746
// begin rider = UnitsInside ( new_vehicle ) [ 1 ] ;
12699: LD_ADDR_VAR 0 18
12703: PUSH
12704: LD_VAR 0 1
12708: PPUSH
12709: CALL_OW 313
12713: PUSH
12714: LD_INT 1
12716: ARRAY
12717: ST_TO_ADDR
// if IsSelected ( rider ) then
12718: LD_VAR 0 18
12722: PPUSH
12723: CALL_OW 306
12727: IFFALSE 12737
// selected = 1 ;
12729: LD_ADDR_VAR 0 19
12733: PUSH
12734: LD_INT 1
12736: ST_TO_ADDR
// RemoveUnit ( rider ) ;
12737: LD_VAR 0 18
12741: PPUSH
12742: CALL_OW 64
// end ; if IsSelected ( new_vehicle ) then
12746: LD_VAR 0 1
12750: PPUSH
12751: CALL_OW 306
12755: IFFALSE 12774
// begin DeselectUnits ( new_vehicle ) ;
12757: LD_VAR 0 1
12761: PPUSH
12762: CALL_OW 491
// selected = 1 ;
12766: LD_ADDR_VAR 0 19
12770: PUSH
12771: LD_INT 1
12773: ST_TO_ADDR
// end ; if new_vehicle in capturedEmptyVehs then
12774: LD_VAR 0 1
12778: PUSH
12779: LD_LOC 5
12783: IN
12784: IFFALSE 12802
// capturedEmptyVehs = capturedEmptyVehs diff new_vehicle ;
12786: LD_ADDR_LOC 5
12790: PUSH
12791: LD_LOC 5
12795: PUSH
12796: LD_VAR 0 1
12800: DIFF
12801: ST_TO_ADDR
// uc_side = side ;
12802: LD_ADDR_OWVAR 20
12806: PUSH
12807: LD_VAR 0 6
12811: ST_TO_ADDR
// uc_nation = nation ;
12812: LD_ADDR_OWVAR 21
12816: PUSH
12817: LD_VAR 0 7
12821: ST_TO_ADDR
// vc_chassis = chassis ;
12822: LD_ADDR_OWVAR 37
12826: PUSH
12827: LD_VAR 0 9
12831: ST_TO_ADDR
// vc_control = control ;
12832: LD_ADDR_OWVAR 38
12836: PUSH
12837: LD_VAR 0 10
12841: ST_TO_ADDR
// vc_engine = engine ;
12842: LD_ADDR_OWVAR 39
12846: PUSH
12847: LD_VAR 0 11
12851: ST_TO_ADDR
// if engine <> engine_siberite then
12852: LD_VAR 0 11
12856: PUSH
12857: LD_INT 3
12859: NONEQUAL
12860: IFFALSE 12872
// vc_fuel_battery = fuel ;
12862: LD_ADDR_OWVAR 41
12866: PUSH
12867: LD_VAR 0 12
12871: ST_TO_ADDR
// vc_weapon = weapon ;
12872: LD_ADDR_OWVAR 40
12876: PUSH
12877: LD_VAR 0 8
12881: ST_TO_ADDR
// uc_direction = dir ;
12882: LD_ADDR_OWVAR 24
12886: PUSH
12887: LD_VAR 0 13
12891: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
12892: LD_ADDR_VAR 0 16
12896: PUSH
12897: LD_VAR 0 1
12901: PPUSH
12902: CALL_OW 256
12906: ST_TO_ADDR
// veh = CreateVehicle ;
12907: LD_ADDR_VAR 0 17
12911: PUSH
12912: CALL_OW 45
12916: ST_TO_ADDR
// SetLives ( veh , lives ) ;
12917: LD_VAR 0 17
12921: PPUSH
12922: LD_VAR 0 16
12926: PPUSH
12927: CALL_OW 234
// RemoveUnit ( new_vehicle ) ;
12931: LD_VAR 0 1
12935: PPUSH
12936: CALL_OW 64
// PlaceUnitXY ( veh , x , y , false ) ;
12940: LD_VAR 0 17
12944: PPUSH
12945: LD_VAR 0 14
12949: PPUSH
12950: LD_VAR 0 15
12954: PPUSH
12955: LD_INT 0
12957: PPUSH
12958: CALL_OW 48
// if rider then
12962: LD_VAR 0 18
12966: IFFALSE 12982
// PlaceHumanInUnit ( rider , veh ) ;
12968: LD_VAR 0 18
12972: PPUSH
12973: LD_VAR 0 17
12977: PPUSH
12978: CALL_OW 52
// if selected then
12982: LD_VAR 0 19
12986: IFFALSE 12997
// SelectUnits ( veh ) ;
12988: LD_VAR 0 17
12992: PPUSH
12993: CALL_OW 490
// end ; end_of_file
12997: LD_VAR 0 5
13001: 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_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 , dif_depot_surky , dif_zbrani_zbyva , dif_faze1_aut , dif_faze2_aut , dif_faze3_aut , dif_faze1_lidi , dif_faze2_lidi , dif_faze3_lidi ; export function Obtiznost ; begin
13002: LD_INT 0
13004: PPUSH
// dif_enemy_min_skill = [ 5 , 6 , 7 ] [ difficulty ] ;
13005: LD_ADDR_EXP 53
13009: PUSH
13010: LD_INT 5
13012: PUSH
13013: LD_INT 6
13015: PUSH
13016: LD_INT 7
13018: PUSH
13019: EMPTY
13020: LIST
13021: LIST
13022: LIST
13023: PUSH
13024: LD_OWVAR 67
13028: ARRAY
13029: ST_TO_ADDR
// dif_enemy_max_skill = [ 7 , 8 , 9 ] [ difficulty ] ;
13030: LD_ADDR_EXP 54
13034: PUSH
13035: LD_INT 7
13037: PUSH
13038: LD_INT 8
13040: PUSH
13041: LD_INT 9
13043: PUSH
13044: EMPTY
13045: LIST
13046: LIST
13047: LIST
13048: PUSH
13049: LD_OWVAR 67
13053: ARRAY
13054: ST_TO_ADDR
// dif_faze1_aut = [ 3 , 4 , 5 ] [ difficulty ] ;
13055: LD_ADDR_EXP 72
13059: PUSH
13060: LD_INT 3
13062: PUSH
13063: LD_INT 4
13065: PUSH
13066: LD_INT 5
13068: PUSH
13069: EMPTY
13070: LIST
13071: LIST
13072: LIST
13073: PUSH
13074: LD_OWVAR 67
13078: ARRAY
13079: ST_TO_ADDR
// dif_faze2_aut = [ 4 , 5 , 6 ] [ difficulty ] ;
13080: LD_ADDR_EXP 73
13084: PUSH
13085: LD_INT 4
13087: PUSH
13088: LD_INT 5
13090: PUSH
13091: LD_INT 6
13093: PUSH
13094: EMPTY
13095: LIST
13096: LIST
13097: LIST
13098: PUSH
13099: LD_OWVAR 67
13103: ARRAY
13104: ST_TO_ADDR
// dif_faze3_aut = [ 5 , 6 , 6 ] [ difficulty ] ;
13105: LD_ADDR_EXP 74
13109: PUSH
13110: LD_INT 5
13112: PUSH
13113: LD_INT 6
13115: PUSH
13116: LD_INT 6
13118: PUSH
13119: EMPTY
13120: LIST
13121: LIST
13122: LIST
13123: PUSH
13124: LD_OWVAR 67
13128: ARRAY
13129: ST_TO_ADDR
// dif_faze1_lidi = [ 4 , 5 , 6 ] [ difficulty ] ;
13130: LD_ADDR_EXP 75
13134: PUSH
13135: LD_INT 4
13137: PUSH
13138: LD_INT 5
13140: PUSH
13141: LD_INT 6
13143: PUSH
13144: EMPTY
13145: LIST
13146: LIST
13147: LIST
13148: PUSH
13149: LD_OWVAR 67
13153: ARRAY
13154: ST_TO_ADDR
// dif_faze2_lidi = [ 5 , 6 , 7 ] [ difficulty ] ;
13155: LD_ADDR_EXP 76
13159: PUSH
13160: LD_INT 5
13162: PUSH
13163: LD_INT 6
13165: PUSH
13166: LD_INT 7
13168: PUSH
13169: EMPTY
13170: LIST
13171: LIST
13172: LIST
13173: PUSH
13174: LD_OWVAR 67
13178: ARRAY
13179: ST_TO_ADDR
// dif_faze3_lidi = [ 6 , 7 , 7 ] [ difficulty ] ;
13180: LD_ADDR_EXP 77
13184: PUSH
13185: LD_INT 6
13187: PUSH
13188: LD_INT 7
13190: PUSH
13191: LD_INT 7
13193: PUSH
13194: EMPTY
13195: LIST
13196: LIST
13197: LIST
13198: PUSH
13199: LD_OWVAR 67
13203: ARRAY
13204: ST_TO_ADDR
// beden = [ 350 , 300 , 250 ] [ difficulty ] ;
13205: LD_ADDR_EXP 12
13209: PUSH
13210: LD_INT 350
13212: PUSH
13213: LD_INT 300
13215: PUSH
13216: LD_INT 250
13218: PUSH
13219: EMPTY
13220: LIST
13221: LIST
13222: LIST
13223: PUSH
13224: LD_OWVAR 67
13228: ARRAY
13229: ST_TO_ADDR
// dif_depot_surky = [ [ beden , 700 , 80 ] , [ beden , 700 , 80 ] , [ beden , 700 , 80 ] ] [ difficulty ] ;
13230: LD_ADDR_EXP 70
13234: PUSH
13235: LD_EXP 12
13239: PUSH
13240: LD_INT 700
13242: PUSH
13243: LD_INT 80
13245: PUSH
13246: EMPTY
13247: LIST
13248: LIST
13249: LIST
13250: PUSH
13251: LD_EXP 12
13255: PUSH
13256: LD_INT 700
13258: PUSH
13259: LD_INT 80
13261: PUSH
13262: EMPTY
13263: LIST
13264: LIST
13265: LIST
13266: PUSH
13267: LD_EXP 12
13271: PUSH
13272: LD_INT 700
13274: PUSH
13275: LD_INT 80
13277: PUSH
13278: EMPTY
13279: LIST
13280: LIST
13281: LIST
13282: PUSH
13283: EMPTY
13284: LIST
13285: LIST
13286: LIST
13287: PUSH
13288: LD_OWVAR 67
13292: ARRAY
13293: ST_TO_ADDR
// dif_zbrani_zbyva = [ 6 , 6 , 5 ] [ difficulty ] ;
13294: LD_ADDR_EXP 71
13298: PUSH
13299: LD_INT 6
13301: PUSH
13302: LD_INT 6
13304: PUSH
13305: LD_INT 5
13307: PUSH
13308: EMPTY
13309: LIST
13310: LIST
13311: LIST
13312: PUSH
13313: LD_OWVAR 67
13317: ARRAY
13318: ST_TO_ADDR
// end ; end_of_file
13319: LD_VAR 0 1
13323: RET
// every 0 0$1 do
13324: GO 13326
13326: DISABLE
// begin ShowStrings ;
13327: CALL 13333 0 0
// enable ;
13331: ENABLE
// end ;
13332: END
// export function ShowStrings ; begin
13333: LD_INT 0
13335: PPUSH
// if not hrajeme then
13336: LD_EXP 13
13340: NOT
13341: IFFALSE 13345
// exit ;
13343: GO 13385
// display_strings = [ #Ru01-Time , tick ] ;
13345: LD_ADDR_OWVAR 47
13349: PUSH
13350: LD_STRING #Ru01-Time
13352: PUSH
13353: LD_OWVAR 1
13357: PUSH
13358: EMPTY
13359: LIST
13360: LIST
13361: ST_TO_ADDR
// display_strings = display_strings ^ [ #Ru04-Zbrane , dif_zbrani_zbyva ] ;
13362: LD_ADDR_OWVAR 47
13366: PUSH
13367: LD_OWVAR 47
13371: PUSH
13372: LD_STRING #Ru04-Zbrane
13374: PUSH
13375: LD_EXP 71
13379: PUSH
13380: EMPTY
13381: LIST
13382: LIST
13383: ADD
13384: ST_TO_ADDR
// end ; end_of_file
13385: LD_VAR 0 1
13389: RET
// var lesTimeProb , lesMaxDist ; every 0 0$0.6 do
13390: GO 13392
13392: DISABLE
// begin lesTimeProb = 30 ;
13393: LD_ADDR_LOC 6
13397: PUSH
13398: LD_INT 30
13400: ST_TO_ADDR
// lesMaxDist = 28 ;
13401: LD_ADDR_LOC 7
13405: PUSH
13406: LD_INT 28
13408: ST_TO_ADDR
// end ;
13409: END
// every 0 0$1 do
13410: GO 13412
13412: DISABLE
// ComRemember ( lesnitsky ) ;
13413: LD_EXP 2
13417: PPUSH
13418: CALL_OW 143
13422: END
// every 0 0$1 do var enemy , nearest ;
13423: GO 13425
13425: DISABLE
13426: LD_INT 0
13428: PPUSH
13429: PPUSH
// begin if outro_running then
13430: LD_EXP 22
13434: IFFALSE 13438
// exit ;
13436: GO 13764
// if GetLives ( lesnitsky ) < hranice_leceni_utek and not IsInArea2 ( lesnitsky , NajdiNejblizsiHealArea ( lesnitsky ) ) then
13438: LD_EXP 2
13442: PPUSH
13443: CALL_OW 256
13447: PUSH
13448: LD_EXP 35
13452: LESS
13453: PUSH
13454: LD_EXP 2
13458: PPUSH
13459: LD_EXP 2
13463: PPUSH
13464: CALL 7135 0 1
13468: PPUSH
13469: CALL 2906 0 2
13473: NOT
13474: AND
13475: IFFALSE 13488
// UtecDoNejblizsiHealOblasti ( lesnitsky ) else
13477: LD_EXP 2
13481: PPUSH
13482: CALL 7525 0 1
13486: GO 13763
// if GetDistUnitXY ( lesnitsky , 65 , 40 ) >= 16 then
13488: LD_EXP 2
13492: PPUSH
13493: LD_INT 65
13495: PPUSH
13496: LD_INT 40
13498: PPUSH
13499: CALL_OW 297
13503: PUSH
13504: LD_INT 16
13506: GREATEREQUAL
13507: IFFALSE 13523
// ComMoveToArea ( lesnitsky , LesLeceni ) else
13509: LD_EXP 2
13513: PPUSH
13514: LD_INT 15
13516: PPUSH
13517: CALL_OW 113
13521: GO 13763
// if GetDistUnitXY ( lesnitsky , 65 , 40 ) >= 8 and not FilterAllUnits ( [ [ f_side , legie ] , [ f_ok ] , [ f_placed ] ] ) then
13523: LD_EXP 2
13527: PPUSH
13528: LD_INT 65
13530: PPUSH
13531: LD_INT 40
13533: PPUSH
13534: CALL_OW 297
13538: PUSH
13539: LD_INT 8
13541: GREATEREQUAL
13542: PUSH
13543: LD_INT 22
13545: PUSH
13546: LD_EXP 8
13550: PUSH
13551: EMPTY
13552: LIST
13553: LIST
13554: PUSH
13555: LD_INT 50
13557: PUSH
13558: EMPTY
13559: LIST
13560: PUSH
13561: LD_INT 52
13563: PUSH
13564: EMPTY
13565: LIST
13566: PUSH
13567: EMPTY
13568: LIST
13569: LIST
13570: LIST
13571: PPUSH
13572: CALL_OW 69
13576: NOT
13577: AND
13578: IFFALSE 13594
// ComMoveToArea ( lesnitsky , LesLeceni ) else
13580: LD_EXP 2
13584: PPUSH
13585: LD_INT 15
13587: PPUSH
13588: CALL_OW 113
13592: GO 13763
// begin enemy = FilterAllUnits ( [ [ f_side , legie ] , [ f_ok ] , [ f_placed ] ] ) ;
13594: LD_ADDR_VAR 0 1
13598: PUSH
13599: LD_INT 22
13601: PUSH
13602: LD_EXP 8
13606: PUSH
13607: EMPTY
13608: LIST
13609: LIST
13610: PUSH
13611: LD_INT 50
13613: PUSH
13614: EMPTY
13615: LIST
13616: PUSH
13617: LD_INT 52
13619: PUSH
13620: EMPTY
13621: LIST
13622: PUSH
13623: EMPTY
13624: LIST
13625: LIST
13626: LIST
13627: PPUSH
13628: CALL_OW 69
13632: ST_TO_ADDR
// nearest = NearestUnitToUnit2 ( enemy , lesnitsky ) ;
13633: LD_ADDR_VAR 0 2
13637: PUSH
13638: LD_VAR 0 1
13642: PPUSH
13643: LD_EXP 2
13647: PPUSH
13648: CALL 2820 0 2
13652: ST_TO_ADDR
// if nearest then
13653: LD_VAR 0 2
13657: IFFALSE 13763
// begin if GetDistUnitXY ( nearest , stredy_baz [ 1 ] , stredy_baz [ 2 ] ) < 28 then
13659: LD_VAR 0 2
13663: PPUSH
13664: LD_EXP 40
13668: PUSH
13669: LD_INT 1
13671: ARRAY
13672: PPUSH
13673: LD_EXP 40
13677: PUSH
13678: LD_INT 2
13680: ARRAY
13681: PPUSH
13682: CALL_OW 297
13686: PUSH
13687: LD_INT 28
13689: LESS
13690: IFFALSE 13763
// begin if Prob ( lesTimeProb ) and GetLives ( nearest ) > 300 then
13692: LD_LOC 6
13696: PPUSH
13697: CALL_OW 13
13701: PUSH
13702: LD_VAR 0 2
13706: PPUSH
13707: CALL_OW 256
13711: PUSH
13712: LD_INT 300
13714: GREATER
13715: AND
13716: IFFALSE 13749
// ComTimeShift ( lesnitsky , GetX ( nearest ) , GetY ( nearest ) ) else
13718: LD_EXP 2
13722: PPUSH
13723: LD_VAR 0 2
13727: PPUSH
13728: CALL_OW 250
13732: PPUSH
13733: LD_VAR 0 2
13737: PPUSH
13738: CALL_OW 251
13742: PPUSH
13743: CALL_OW 154
13747: GO 13763
// ComAttackUnit ( lesnitsky , nearest ) ;
13749: LD_EXP 2
13753: PPUSH
13754: LD_VAR 0 2
13758: PPUSH
13759: CALL_OW 115
// end ; end ; end ; enable ;
13763: ENABLE
// end ; end_of_file
13764: PPOPN 2
13766: END
// every 0 0$1 do var un , enemy ;
13767: GO 13769
13769: DISABLE
13770: LD_INT 0
13772: PPUSH
13773: PPUSH
// begin enemy = FilterAllUnits ( [ [ f_or , [ f_side , you ] , [ f_side , zeleny ] ] , [ f_placed ] ] ) diff lesnitsky ;
13774: LD_ADDR_VAR 0 2
13778: PUSH
13779: LD_INT 2
13781: PUSH
13782: LD_INT 22
13784: PUSH
13785: LD_EXP 6
13789: PUSH
13790: EMPTY
13791: LIST
13792: LIST
13793: PUSH
13794: LD_INT 22
13796: PUSH
13797: LD_EXP 7
13801: PUSH
13802: EMPTY
13803: LIST
13804: LIST
13805: PUSH
13806: EMPTY
13807: LIST
13808: LIST
13809: LIST
13810: PUSH
13811: LD_INT 52
13813: PUSH
13814: EMPTY
13815: LIST
13816: PUSH
13817: EMPTY
13818: LIST
13819: LIST
13820: PPUSH
13821: CALL_OW 69
13825: PUSH
13826: LD_EXP 2
13830: DIFF
13831: ST_TO_ADDR
// if neutocit_na_velitele then
13832: LD_EXP 21
13836: IFFALSE 13854
// enemy = enemy diff vsevolod ;
13838: LD_ADDR_VAR 0 2
13842: PUSH
13843: LD_VAR 0 2
13847: PUSH
13848: LD_EXP 1
13852: DIFF
13853: ST_TO_ADDR
// if ar_utok then
13854: LD_EXP 20
13858: IFFALSE 13960
// for un in ar_utok do
13860: LD_ADDR_VAR 0 1
13864: PUSH
13865: LD_EXP 20
13869: PUSH
13870: FOR_IN
13871: IFFALSE 13958
// begin if GetClass ( un ) = class_apeman_kamikaze or GetWeapon ( un ) = ar_selfpropelled_bomb then
13873: LD_VAR 0 1
13877: PPUSH
13878: CALL_OW 257
13882: PUSH
13883: LD_INT 17
13885: EQUAL
13886: PUSH
13887: LD_VAR 0 1
13891: PPUSH
13892: CALL_OW 264
13896: PUSH
13897: LD_INT 29
13899: EQUAL
13900: OR
13901: IFFALSE 13929
// begin ComAttackUnit ( un , NearestUnitToUnit2 ( enemy , un ) ) ;
13903: LD_VAR 0 1
13907: PPUSH
13908: LD_VAR 0 2
13912: PPUSH
13913: LD_VAR 0 1
13917: PPUSH
13918: CALL 2820 0 2
13922: PPUSH
13923: CALL_OW 115
// end else
13927: GO 13956
// if not HasTask ( un ) then
13929: LD_VAR 0 1
13933: PPUSH
13934: CALL_OW 314
13938: NOT
13939: IFFALSE 13956
// ComAgressiveMove ( un , 66 , 41 ) ;
13941: LD_VAR 0 1
13945: PPUSH
13946: LD_INT 66
13948: PPUSH
13949: LD_INT 41
13951: PPUSH
13952: CALL_OW 114
// end ;
13956: GO 13870
13958: POP
13959: POP
// enable ;
13960: ENABLE
// end ;
13961: PPOPN 2
13963: END
// every 1 1$30 do
13964: GO 13966
13966: DISABLE
// begin SayRadio ( heike , D4-heike1 ) ;
13967: LD_EXP 9
13971: PPUSH
13972: LD_STRING D4-heike1
13974: PPUSH
13975: CALL_OW 94
// Say ( lesnitsky , D4-les4 ) ;
13979: LD_EXP 2
13983: PPUSH
13984: LD_STRING D4-les4
13986: PPUSH
13987: CALL_OW 88
// SayRadio ( heike , D4-heike2 ) ;
13991: LD_EXP 9
13995: PPUSH
13996: LD_STRING D4-heike2
13998: PPUSH
13999: CALL_OW 94
// end ;
14003: END
// every 2 2$00 do
14004: GO 14006
14006: DISABLE
// begin CreateSoldiersArea ( dif_faze1_lidi - 1 , vychod ) ;
14007: LD_EXP 75
14011: PUSH
14012: LD_INT 1
14014: MINUS
14015: PPUSH
14016: LD_INT 20
14018: PPUSH
14019: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze1_lidi - 1 , zapad ) ;
14023: LD_EXP 75
14027: PUSH
14028: LD_INT 1
14030: MINUS
14031: PPUSH
14032: LD_INT 18
14034: PPUSH
14035: CALL 10403 0 2
// CreateVehsArea ( dif_faze1_aut - 1 , jih ) ;
14039: LD_EXP 72
14043: PUSH
14044: LD_INT 1
14046: MINUS
14047: PPUSH
14048: LD_INT 19
14050: PPUSH
14051: CALL 10038 0 2
// CreateVehsArea ( dif_faze1_aut - 1 , sever ) ;
14055: LD_EXP 72
14059: PUSH
14060: LD_INT 1
14062: MINUS
14063: PPUSH
14064: LD_INT 17
14066: PPUSH
14067: CALL 10038 0 2
// end ;
14071: END
// every 3 3$40 do
14072: GO 14074
14074: DISABLE
// begin DialogZatracenaLegie ( ) ;
14075: CALL 11401 0 0
// end ;
14079: END
// every 4 4$00 do
14080: GO 14082
14082: DISABLE
// begin CreateSoldiersArea ( dif_faze1_lidi , sever ) ;
14083: LD_EXP 75
14087: PPUSH
14088: LD_INT 17
14090: PPUSH
14091: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze1_lidi , jih ) ;
14095: LD_EXP 75
14099: PPUSH
14100: LD_INT 19
14102: PPUSH
14103: CALL 10403 0 2
// CreateVehsArea ( dif_faze1_aut , vychod ) ;
14107: LD_EXP 72
14111: PPUSH
14112: LD_INT 20
14114: PPUSH
14115: CALL 10038 0 2
// CreateVehsArea ( dif_faze1_aut , zapad ) ;
14119: LD_EXP 72
14123: PPUSH
14124: LD_INT 18
14126: PPUSH
14127: CALL 10038 0 2
// end ;
14131: END
// every 5 5$00 do
14132: GO 14134
14134: DISABLE
// begin SetTech ( tech_weap1 , legie , state_researched ) ;
14135: LD_INT 51
14137: PPUSH
14138: LD_EXP 8
14142: PPUSH
14143: LD_INT 2
14145: PPUSH
14146: CALL_OW 322
// CreateSoldiersArea ( dif_faze1_lidi - 1 , zapad ) ;
14150: LD_EXP 75
14154: PUSH
14155: LD_INT 1
14157: MINUS
14158: PPUSH
14159: LD_INT 18
14161: PPUSH
14162: CALL 10403 0 2
// end ;
14166: END
// every 6 6$00 do
14167: GO 14169
14169: DISABLE
// begin CreateSoldiersArea ( dif_faze1_lidi , sever ) ;
14170: LD_EXP 75
14174: PPUSH
14175: LD_INT 17
14177: PPUSH
14178: CALL 10403 0 2
// CreateVehsArea ( dif_faze2_aut , jih ) ;
14182: LD_EXP 73
14186: PPUSH
14187: LD_INT 19
14189: PPUSH
14190: CALL 10038 0 2
// end ;
14194: END
// every 6 6$30 do
14195: GO 14197
14197: DISABLE
// begin SetTech ( tech_bio1 , legie , state_researched ) ;
14198: LD_INT 66
14200: PPUSH
14201: LD_EXP 8
14205: PPUSH
14206: LD_INT 2
14208: PPUSH
14209: CALL_OW 322
// CreateSoldiersArea ( dif_faze2_lidi - 1 , jih ) ;
14213: LD_EXP 76
14217: PUSH
14218: LD_INT 1
14220: MINUS
14221: PPUSH
14222: LD_INT 19
14224: PPUSH
14225: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze2_lidi + 1 , sever ) ;
14229: LD_EXP 76
14233: PUSH
14234: LD_INT 1
14236: PLUS
14237: PPUSH
14238: LD_INT 17
14240: PPUSH
14241: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze2_lidi , zapad ) ;
14245: LD_EXP 76
14249: PPUSH
14250: LD_INT 18
14252: PPUSH
14253: CALL 10403 0 2
// end ;
14257: END
// every 8 8$00 do
14258: GO 14260
14260: DISABLE
// begin CreateSoldiersArea ( dif_faze2_lidi , sever ) ;
14261: LD_EXP 76
14265: PPUSH
14266: LD_INT 17
14268: PPUSH
14269: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze2_aut , vychod ) ;
14273: LD_EXP 73
14277: PPUSH
14278: LD_INT 20
14280: PPUSH
14281: CALL 10403 0 2
// CreateVehsArea ( dif_faze2_aut , zapad ) ;
14285: LD_EXP 73
14289: PPUSH
14290: LD_INT 18
14292: PPUSH
14293: CALL 10038 0 2
// CreateVehsArea ( dif_faze1_aut , sever ) ;
14297: LD_EXP 72
14301: PPUSH
14302: LD_INT 17
14304: PPUSH
14305: CALL 10038 0 2
// end ;
14309: END
// every 9 9$30 do
14310: GO 14312
14312: DISABLE
// begin DialogKdePosily ( ) ;
14313: CALL 11317 0 0
// end ;
14317: END
// every 9 9$30 do
14318: GO 14320
14320: DISABLE
// begin SetTech ( tech_weap3 , you , state_researched ) ;
14321: LD_INT 53
14323: PPUSH
14324: LD_EXP 6
14328: PPUSH
14329: LD_INT 2
14331: PPUSH
14332: CALL_OW 322
// SetTech ( tech_bio2 , legie , state_researched ) ;
14336: LD_INT 67
14338: PPUSH
14339: LD_EXP 8
14343: PPUSH
14344: LD_INT 2
14346: PPUSH
14347: CALL_OW 322
// CreateSoldiersArea ( dif_faze2_lidi , jih ) ;
14351: LD_EXP 76
14355: PPUSH
14356: LD_INT 19
14358: PPUSH
14359: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze2_lidi , sever ) ;
14363: LD_EXP 76
14367: PPUSH
14368: LD_INT 17
14370: PPUSH
14371: CALL 10403 0 2
// CreateVehsArea ( dif_faze2_aut , vychod ) ;
14375: LD_EXP 73
14379: PPUSH
14380: LD_INT 20
14382: PPUSH
14383: CALL 10038 0 2
// CreateVehsArea ( dif_faze2_aut , zapad ) ;
14387: LD_EXP 73
14391: PPUSH
14392: LD_INT 18
14394: PPUSH
14395: CALL 10038 0 2
// end ;
14399: END
// every 11 11$00 do
14400: GO 14402
14402: DISABLE
// begin CreateSoldiersArea ( dif_faze2_lidi , vychod ) ;
14403: LD_EXP 76
14407: PPUSH
14408: LD_INT 20
14410: PPUSH
14411: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze2_lidi , zapad ) ;
14415: LD_EXP 76
14419: PPUSH
14420: LD_INT 18
14422: PPUSH
14423: CALL 10403 0 2
// end ;
14427: END
// every 12 12$20 do
14428: GO 14430
14430: DISABLE
// begin SetTech ( tech_sib1 , legie , state_researched ) ;
14431: LD_INT 54
14433: PPUSH
14434: LD_EXP 8
14438: PPUSH
14439: LD_INT 2
14441: PPUSH
14442: CALL_OW 322
// SetTech ( tech_sib2 , legie , state_researched ) ;
14446: LD_INT 55
14448: PPUSH
14449: LD_EXP 8
14453: PPUSH
14454: LD_INT 2
14456: PPUSH
14457: CALL_OW 322
// CreateVehsArea ( dif_faze2_aut , zapad ) ;
14461: LD_EXP 73
14465: PPUSH
14466: LD_INT 18
14468: PPUSH
14469: CALL 10038 0 2
// CreateVehsArea ( dif_faze2_aut , vychod ) ;
14473: LD_EXP 73
14477: PPUSH
14478: LD_INT 20
14480: PPUSH
14481: CALL 10038 0 2
// end ;
14485: END
// every 14 14$00 do
14486: GO 14488
14488: DISABLE
// begin CreateSoldiersArea ( dif_faze2_lidi , jih ) ;
14489: LD_EXP 76
14493: PPUSH
14494: LD_INT 19
14496: PPUSH
14497: CALL 10403 0 2
// CreateVehsArea ( dif_faze3_aut , sever ) ;
14501: LD_EXP 74
14505: PPUSH
14506: LD_INT 17
14508: PPUSH
14509: CALL 10038 0 2
// end ;
14513: END
// every 14 14$20 do
14514: GO 14516
14516: DISABLE
// begin DialogHeikeBomby ( ) ;
14517: CALL 11433 0 0
// end ;
14521: END
// every 14 14$30 do
14522: GO 14524
14524: DISABLE
// begin SetTech ( tech_weap2 , legie , state_researched ) ;
14525: LD_INT 52
14527: PPUSH
14528: LD_EXP 8
14532: PPUSH
14533: LD_INT 2
14535: PPUSH
14536: CALL_OW 322
// CreateSoldiersArea ( dif_faze2_lidi , vychod ) ;
14540: LD_EXP 76
14544: PPUSH
14545: LD_INT 20
14547: PPUSH
14548: CALL 10403 0 2
// CreateVehsArea ( dif_faze3_aut , zapad ) ;
14552: LD_EXP 74
14556: PPUSH
14557: LD_INT 18
14559: PPUSH
14560: CALL 10038 0 2
// CreateApesArea ( 2 , vychod ) ;
14564: LD_INT 2
14566: PPUSH
14567: LD_INT 20
14569: PPUSH
14570: CALL 10572 0 2
// Wait ( 0 0$20 ) ;
14574: LD_INT 700
14576: PPUSH
14577: CALL_OW 67
// DialogMyTuChcipneme ( ) ;
14581: CALL 11349 0 0
// end ;
14585: END
// every 16 16$00 do
14586: GO 14588
14588: DISABLE
// begin CreateSoldiersArea ( dif_faze3_lidi , zapad ) ;
14589: LD_EXP 77
14593: PPUSH
14594: LD_INT 18
14596: PPUSH
14597: CALL 10403 0 2
// CreateVehsArea ( dif_faze3_aut , vychod ) ;
14601: LD_EXP 74
14605: PPUSH
14606: LD_INT 20
14608: PPUSH
14609: CALL 10038 0 2
// end ;
14613: END
// every 17 17$20 do
14614: GO 14616
14616: DISABLE
// begin SetTech ( tech_sib3 , legie , state_researched ) ;
14617: LD_INT 56
14619: PPUSH
14620: LD_EXP 8
14624: PPUSH
14625: LD_INT 2
14627: PPUSH
14628: CALL_OW 322
// CreateSoldiersArea ( dif_faze3_lidi , zapad ) ;
14632: LD_EXP 77
14636: PPUSH
14637: LD_INT 18
14639: PPUSH
14640: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , jih ) ;
14644: LD_EXP 77
14648: PPUSH
14649: LD_INT 19
14651: PPUSH
14652: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , sever ) ;
14656: LD_EXP 77
14660: PPUSH
14661: LD_INT 17
14663: PPUSH
14664: CALL 10403 0 2
// CreateVehsArea ( dif_faze2_aut , sever ) ;
14668: LD_EXP 73
14672: PPUSH
14673: LD_INT 17
14675: PPUSH
14676: CALL 10038 0 2
// CreateVehsArea ( dif_faze2_aut , vychod ) ;
14680: LD_EXP 73
14684: PPUSH
14685: LD_INT 20
14687: PPUSH
14688: CALL 10038 0 2
// CreateApesArea ( 1 , sever ) ;
14692: LD_INT 1
14694: PPUSH
14695: LD_INT 17
14697: PPUSH
14698: CALL 10572 0 2
// end ;
14702: END
// every 18 18$40 do
14703: GO 14705
14705: DISABLE
// begin CreateVehsArea ( dif_faze1_aut , zapad ) ;
14706: LD_EXP 72
14710: PPUSH
14711: LD_INT 18
14713: PPUSH
14714: CALL 10038 0 2
// CreateVehsArea ( dif_faze1_aut , jih ) ;
14718: LD_EXP 72
14722: PPUSH
14723: LD_INT 19
14725: PPUSH
14726: CALL 10038 0 2
// CreateSoldiersArea ( 3 , sever ) ;
14730: LD_INT 3
14732: PPUSH
14733: LD_INT 17
14735: PPUSH
14736: CALL 10403 0 2
// CreateSoldiersArea ( 2 , vychod ) ;
14740: LD_INT 2
14742: PPUSH
14743: LD_INT 20
14745: PPUSH
14746: CALL 10403 0 2
// CreateApesArea ( 1 , zapad ) ;
14750: LD_INT 1
14752: PPUSH
14753: LD_INT 18
14755: PPUSH
14756: CALL 10572 0 2
// CreateApesArea ( 1 , vychod ) ;
14760: LD_INT 1
14762: PPUSH
14763: LD_INT 20
14765: PPUSH
14766: CALL 10572 0 2
// end ;
14770: END
// every 20 20$00 do
14771: GO 14773
14773: DISABLE
// begin CreateVehsArea ( dif_faze3_aut , sever ) ;
14774: LD_EXP 74
14778: PPUSH
14779: LD_INT 17
14781: PPUSH
14782: CALL 10038 0 2
// CreateVehsArea ( dif_faze3_aut , vychod ) ;
14786: LD_EXP 74
14790: PPUSH
14791: LD_INT 20
14793: PPUSH
14794: CALL 10038 0 2
// CreateSoldiersArea ( 2 , zapad ) ;
14798: LD_INT 2
14800: PPUSH
14801: LD_INT 18
14803: PPUSH
14804: CALL 10403 0 2
// CreateSoldiersArea ( 3 , jih ) ;
14808: LD_INT 3
14810: PPUSH
14811: LD_INT 19
14813: PPUSH
14814: CALL 10403 0 2
// CreateBombVehsArea ( 1 , sever ) ;
14818: LD_INT 1
14820: PPUSH
14821: LD_INT 17
14823: PPUSH
14824: CALL 10234 0 2
// end ;
14828: END
// every 22 22$00 do
14829: GO 14831
14831: DISABLE
// begin SetTech ( tech_weap3 , legie , state_researched ) ;
14832: LD_INT 53
14834: PPUSH
14835: LD_EXP 8
14839: PPUSH
14840: LD_INT 2
14842: PPUSH
14843: CALL_OW 322
// CreateVehsArea ( dif_faze3_aut , jih ) ;
14847: LD_EXP 74
14851: PPUSH
14852: LD_INT 19
14854: PPUSH
14855: CALL 10038 0 2
// CreateVehsArea ( dif_faze3_aut , sever ) ;
14859: LD_EXP 74
14863: PPUSH
14864: LD_INT 17
14866: PPUSH
14867: CALL 10038 0 2
// CreateSoldiersArea ( dif_faze3_lidi , zapad ) ;
14871: LD_EXP 77
14875: PPUSH
14876: LD_INT 18
14878: PPUSH
14879: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , vychod ) ;
14883: LD_EXP 77
14887: PPUSH
14888: LD_INT 20
14890: PPUSH
14891: CALL 10403 0 2
// CreateBombVehsArea ( 1 , jih ) ;
14895: LD_INT 1
14897: PPUSH
14898: LD_INT 19
14900: PPUSH
14901: CALL 10234 0 2
// CreateBombVehsArea ( 1 , vychod ) ;
14905: LD_INT 1
14907: PPUSH
14908: LD_INT 20
14910: PPUSH
14911: CALL 10234 0 2
// CreateApesArea ( 2 , sever ) ;
14915: LD_INT 2
14917: PPUSH
14918: LD_INT 17
14920: PPUSH
14921: CALL 10572 0 2
// CreateApesArea ( 2 , zapad ) ;
14925: LD_INT 2
14927: PPUSH
14928: LD_INT 18
14930: PPUSH
14931: CALL 10572 0 2
// Wait ( 0 0$6 ) ;
14935: LD_INT 210
14937: PPUSH
14938: CALL_OW 67
// DialogJeJichMoc ( ) ;
14942: CALL 11381 0 0
// neutocit_na_velitele = true ;
14946: LD_ADDR_EXP 21
14950: PUSH
14951: LD_INT 1
14953: ST_TO_ADDR
// DoNotAttack ( legie , vsevolod ) ;
14954: LD_EXP 8
14958: PPUSH
14959: LD_EXP 1
14963: PPUSH
14964: CALL_OW 471
// DoNotAttack ( legie , lesnitsky ) ;
14968: LD_EXP 8
14972: PPUSH
14973: LD_EXP 2
14977: PPUSH
14978: CALL_OW 471
// end ;
14982: END
// every 22 22$10 do
14983: GO 14985
14985: DISABLE
// begin CreateSnipersArea ( 2 , sever ) ;
14986: LD_INT 2
14988: PPUSH
14989: LD_INT 17
14991: PPUSH
14992: CALL 10497 0 2
// CreateSnipersArea ( 3 , vychod ) ;
14996: LD_INT 3
14998: PPUSH
14999: LD_INT 20
15001: PPUSH
15002: CALL 10497 0 2
// end ;
15006: END
// every 22 22$20 do
15007: GO 15009
15009: DISABLE
// begin CreateVehsArea ( dif_faze3_aut , sever ) ;
15010: LD_EXP 74
15014: PPUSH
15015: LD_INT 17
15017: PPUSH
15018: CALL 10038 0 2
// CreateVehsArea ( dif_faze3_aut , jih ) ;
15022: LD_EXP 74
15026: PPUSH
15027: LD_INT 19
15029: PPUSH
15030: CALL 10038 0 2
// CreateSoldiersArea ( dif_faze3_lidi , sever ) ;
15034: LD_EXP 77
15038: PPUSH
15039: LD_INT 17
15041: PPUSH
15042: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , jih ) ;
15046: LD_EXP 77
15050: PPUSH
15051: LD_INT 19
15053: PPUSH
15054: CALL 10403 0 2
// CreateBombVehsArea ( 2 , jih ) ;
15058: LD_INT 2
15060: PPUSH
15061: LD_INT 19
15063: PPUSH
15064: CALL 10234 0 2
// CreateBombVehsArea ( 2 , vychod ) ;
15068: LD_INT 2
15070: PPUSH
15071: LD_INT 20
15073: PPUSH
15074: CALL 10234 0 2
// CreateBombVehsArea ( 2 , vychod ) ;
15078: LD_INT 2
15080: PPUSH
15081: LD_INT 20
15083: PPUSH
15084: CALL 10234 0 2
// CreateBombVehsArea ( 2 , zapad ) ;
15088: LD_INT 2
15090: PPUSH
15091: LD_INT 18
15093: PPUSH
15094: CALL 10234 0 2
// CreateApesArea ( 2 , sever ) ;
15098: LD_INT 2
15100: PPUSH
15101: LD_INT 17
15103: PPUSH
15104: CALL 10572 0 2
// CreateApesArea ( 1 , zapad ) ;
15108: LD_INT 1
15110: PPUSH
15111: LD_INT 18
15113: PPUSH
15114: CALL 10572 0 2
// CreateApesArea ( 1 , vychod ) ;
15118: LD_INT 1
15120: PPUSH
15121: LD_INT 20
15123: PPUSH
15124: CALL 10572 0 2
// CreateApesArea ( 2 , jih ) ;
15128: LD_INT 2
15130: PPUSH
15131: LD_INT 19
15133: PPUSH
15134: CALL 10572 0 2
// end ;
15138: END
// every 22 22$40 do
15139: GO 15141
15141: DISABLE
// begin CreateVehsArea ( dif_faze2_aut , sever ) ;
15142: LD_EXP 73
15146: PPUSH
15147: LD_INT 17
15149: PPUSH
15150: CALL 10038 0 2
// CreateVehsArea ( dif_faze2_aut , jih ) ;
15154: LD_EXP 73
15158: PPUSH
15159: LD_INT 19
15161: PPUSH
15162: CALL 10038 0 2
// end ;
15166: END
// every 22 22$50 do
15167: GO 15169
15169: DISABLE
// begin CreateSoldiersArea ( dif_faze3_lidi , zapad ) ;
15170: LD_EXP 77
15174: PPUSH
15175: LD_INT 18
15177: PPUSH
15178: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , vychod ) ;
15182: LD_EXP 77
15186: PPUSH
15187: LD_INT 20
15189: PPUSH
15190: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , sever ) ;
15194: LD_EXP 77
15198: PPUSH
15199: LD_INT 17
15201: PPUSH
15202: CALL 10403 0 2
// CreateSoldiersArea ( dif_faze3_lidi , jih ) ;
15206: LD_EXP 77
15210: PPUSH
15211: LD_INT 19
15213: PPUSH
15214: CALL 10403 0 2
// end ;
15218: END
// every 22 22$46 do
15219: GO 15221
15221: DISABLE
// begin CreateVehsArea ( dif_faze2_aut , sever ) ;
15222: LD_EXP 73
15226: PPUSH
15227: LD_INT 17
15229: PPUSH
15230: CALL 10038 0 2
// CreateVehsArea ( dif_faze2_aut , jih ) ;
15234: LD_EXP 73
15238: PPUSH
15239: LD_INT 19
15241: PPUSH
15242: CALL 10038 0 2
// end ;
15246: END
// every 22 22$30 do var b ;
15247: GO 15249
15249: DISABLE
15250: LD_INT 0
15252: PPUSH
// begin PriorityAttack ( legie , depot ) ;
15253: LD_EXP 8
15257: PPUSH
15258: LD_INT 6
15260: PPUSH
15261: CALL_OW 470
// InGameOn ;
15265: CALL_OW 8
// interface_hidden = true ;
15269: LD_ADDR_OWVAR 54
15273: PUSH
15274: LD_INT 1
15276: ST_TO_ADDR
// outro_running = true ;
15277: LD_ADDR_EXP 22
15281: PUSH
15282: LD_INT 1
15284: ST_TO_ADDR
// SetAttr ( [ vsevolod , lesnitsky ] , attr_stamina , 100 ) ;
15285: LD_EXP 1
15289: PUSH
15290: LD_EXP 2
15294: PUSH
15295: EMPTY
15296: LIST
15297: LIST
15298: PPUSH
15299: LD_INT 1
15301: PPUSH
15302: LD_INT 100
15304: PPUSH
15305: CALL_OW 239
// CenterNowOnXY ( 66 , 40 ) ;
15309: LD_INT 66
15311: PPUSH
15312: LD_INT 40
15314: PPUSH
15315: CALL_OW 86
// DisableExclamations ;
15319: CALL_OW 474
// zakaz_vybrani = true ;
15323: LD_ADDR_EXP 5
15327: PUSH
15328: LD_INT 1
15330: ST_TO_ADDR
// SetAttr ( heike , attr_stamina , 100 ) ;
15331: LD_EXP 9
15335: PPUSH
15336: LD_INT 1
15338: PPUSH
15339: LD_INT 100
15341: PPUSH
15342: CALL_OW 239
// SetAttr ( heike , attr_speed , 12 ) ;
15346: LD_EXP 9
15350: PPUSH
15351: LD_INT 2
15353: PPUSH
15354: LD_INT 12
15356: PPUSH
15357: CALL_OW 239
// PlaceUnitArea ( heike , HeikeSpawn , false ) ;
15361: LD_EXP 9
15365: PPUSH
15366: LD_INT 23
15368: PPUSH
15369: LD_INT 0
15371: PPUSH
15372: CALL_OW 49
// end ;
15376: PPOPN 1
15378: END
// every 0 0$0.2 trigger outro_running do
15379: LD_EXP 22
15383: IFFALSE 15482
15385: GO 15387
15387: DISABLE
// begin SetLives ( lesnitsky , 1000 ) ;
15388: LD_EXP 2
15392: PPUSH
15393: LD_INT 1000
15395: PPUSH
15396: CALL_OW 234
// SetLives ( vsevolod , 1000 ) ;
15400: LD_EXP 1
15404: PPUSH
15405: LD_INT 1000
15407: PPUSH
15408: CALL_OW 234
// SetLives ( heike , 1000 ) ;
15412: LD_EXP 9
15416: PPUSH
15417: LD_INT 1000
15419: PPUSH
15420: CALL_OW 234
// VyjdiVen ( lesnitsky ) ;
15424: LD_EXP 2
15428: PPUSH
15429: CALL 2736 0 1
// VyjdiVen ( vsevolod ) ;
15433: LD_EXP 1
15437: PPUSH
15438: CALL 2736 0 1
// ComMoveToArea ( [ lesnitsky , vsevolod ] , ending ) ;
15442: LD_EXP 2
15446: PUSH
15447: LD_EXP 1
15451: PUSH
15452: EMPTY
15453: LIST
15454: LIST
15455: PPUSH
15456: LD_INT 21
15458: PPUSH
15459: CALL_OW 113
// AddComHold ( [ lesnitsky , vsevolod ] ) ;
15463: LD_EXP 2
15467: PUSH
15468: LD_EXP 1
15472: PUSH
15473: EMPTY
15474: LIST
15475: LIST
15476: PPUSH
15477: CALL_OW 200
// enable ;
15481: ENABLE
// end ;
15482: END
// every 0 0$1 do var un ;
15483: GO 15485
15485: DISABLE
15486: LD_INT 0
15488: PPUSH
// begin if outro_running then
15489: LD_EXP 22
15493: IFFALSE 15890
// begin if FilterAllUnits ( [ [ f_or , [ f_side , you ] , [ f_side , lesnitsky ] ] , [ f_type , unit_human ] , [ f_ok ] , [ f_placed ] ] ) + 0 < 3 and not IsOk ( depot ) then
15495: LD_INT 2
15497: PUSH
15498: LD_INT 22
15500: PUSH
15501: LD_EXP 6
15505: PUSH
15506: EMPTY
15507: LIST
15508: LIST
15509: PUSH
15510: LD_INT 22
15512: PUSH
15513: LD_EXP 2
15517: PUSH
15518: EMPTY
15519: LIST
15520: LIST
15521: PUSH
15522: EMPTY
15523: LIST
15524: LIST
15525: LIST
15526: PUSH
15527: LD_INT 21
15529: PUSH
15530: LD_INT 1
15532: PUSH
15533: EMPTY
15534: LIST
15535: LIST
15536: PUSH
15537: LD_INT 50
15539: PUSH
15540: EMPTY
15541: LIST
15542: PUSH
15543: LD_INT 52
15545: PUSH
15546: EMPTY
15547: LIST
15548: PUSH
15549: EMPTY
15550: LIST
15551: LIST
15552: LIST
15553: LIST
15554: PPUSH
15555: CALL_OW 69
15559: PUSH
15560: LD_INT 0
15562: PLUS
15563: PUSH
15564: LD_INT 3
15566: LESS
15567: PUSH
15568: LD_INT 6
15570: PPUSH
15571: CALL_OW 302
15575: NOT
15576: AND
15577: IFFALSE 15890
// begin for un in FilterAllUnits ( [ [ f_or , [ f_side , you ] , [ f_side , lesnitsky ] ] , [ f_type , unit_human ] , [ f_ok ] , [ f_placed ] ] ) diff vsevolod diff lesnitsky do
15579: LD_ADDR_VAR 0 1
15583: PUSH
15584: LD_INT 2
15586: PUSH
15587: LD_INT 22
15589: PUSH
15590: LD_EXP 6
15594: PUSH
15595: EMPTY
15596: LIST
15597: LIST
15598: PUSH
15599: LD_INT 22
15601: PUSH
15602: LD_EXP 2
15606: PUSH
15607: EMPTY
15608: LIST
15609: LIST
15610: PUSH
15611: EMPTY
15612: LIST
15613: LIST
15614: LIST
15615: PUSH
15616: LD_INT 21
15618: PUSH
15619: LD_INT 1
15621: PUSH
15622: EMPTY
15623: LIST
15624: LIST
15625: PUSH
15626: LD_INT 50
15628: PUSH
15629: EMPTY
15630: LIST
15631: PUSH
15632: LD_INT 52
15634: PUSH
15635: EMPTY
15636: LIST
15637: PUSH
15638: EMPTY
15639: LIST
15640: LIST
15641: LIST
15642: LIST
15643: PPUSH
15644: CALL_OW 69
15648: PUSH
15649: LD_EXP 1
15653: DIFF
15654: PUSH
15655: LD_EXP 2
15659: DIFF
15660: PUSH
15661: FOR_IN
15662: IFFALSE 15684
// begin if un then
15664: LD_VAR 0 1
15668: IFFALSE 15682
// SetLives ( un , 200 ) ;
15670: LD_VAR 0 1
15674: PPUSH
15675: LD_INT 200
15677: PPUSH
15678: CALL_OW 234
// end ;
15682: GO 15661
15684: POP
15685: POP
// for un in FilterAllUnits ( [ [ f_side , legie ] ] ) do
15686: LD_ADDR_VAR 0 1
15690: PUSH
15691: LD_INT 22
15693: PUSH
15694: LD_EXP 8
15698: PUSH
15699: EMPTY
15700: LIST
15701: LIST
15702: PUSH
15703: EMPTY
15704: LIST
15705: PPUSH
15706: CALL_OW 69
15710: PUSH
15711: FOR_IN
15712: IFFALSE 15725
// ComStop ( un ) ;
15714: LD_VAR 0 1
15718: PPUSH
15719: CALL_OW 141
15723: GO 15711
15725: POP
15726: POP
// SetAttitude ( you , legie , att_neutral , false ) ;
15727: LD_EXP 6
15731: PPUSH
15732: LD_EXP 8
15736: PPUSH
15737: LD_INT 0
15739: PPUSH
15740: LD_INT 0
15742: PPUSH
15743: CALL_OW 80
// SetAttitude ( lesnitsky , legie , att_neutral , false ) ;
15747: LD_EXP 2
15751: PPUSH
15752: LD_EXP 8
15756: PPUSH
15757: LD_INT 0
15759: PPUSH
15760: LD_INT 0
15762: PPUSH
15763: CALL_OW 80
// SetAttitude ( legie , you , att_friend , false ) ;
15767: LD_EXP 8
15771: PPUSH
15772: LD_EXP 6
15776: PPUSH
15777: LD_INT 1
15779: PPUSH
15780: LD_INT 0
15782: PPUSH
15783: CALL_OW 80
// SetAttitude ( legie , you , att_friend , false ) ;
15787: LD_EXP 8
15791: PPUSH
15792: LD_EXP 6
15796: PPUSH
15797: LD_INT 1
15799: PPUSH
15800: LD_INT 0
15802: PPUSH
15803: CALL_OW 80
// Wait ( 0 0$3 ) ;
15807: LD_INT 105
15809: PPUSH
15810: CALL_OW 67
// SetAttr ( lesnitsky , attr_stamina , les_stamina ) ;
15814: LD_EXP 2
15818: PPUSH
15819: LD_INT 1
15821: PPUSH
15822: LD_EXP 24
15826: PPUSH
15827: CALL_OW 239
// SetAttr ( vsevolod , attr_stamina , vse_stamina ) ;
15831: LD_EXP 1
15835: PPUSH
15836: LD_INT 1
15838: PPUSH
15839: LD_EXP 23
15843: PPUSH
15844: CALL_OW 239
// Wait ( 0 0$0.6 ) ;
15848: LD_INT 21
15850: PPUSH
15851: CALL_OW 67
// DialogueOn ;
15855: CALL_OW 6
// DialogHeikeKonec ( ) ;
15859: CALL 11453 0 0
// DWait ( 0 0$0.5 ) ;
15863: LD_INT 18
15865: PPUSH
15866: CALL_OW 68
// DialogueOff ;
15870: CALL_OW 7
// InGameOff ;
15874: CALL_OW 9
// interface_hidden = false ;
15878: LD_ADDR_OWVAR 54
15882: PUSH
15883: LD_INT 0
15885: ST_TO_ADDR
// KonecMise ;
15886: CALL 661 0 0
// end ; end ; enable ;
15890: ENABLE
// end ;
15891: PPOPN 1
15893: END
