// export gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , richard , alice , kvantovy ; export vsevolod ; var you , zeleny ; var vsevolod , lesnitsky , naklad_type ; var zakaz_vybrani , navrat_z_alaskitove_mise , auto ; starting begin IngameOn ;
   0: CALL_OW 8
// interface_hidden = true ;
   4: LD_ADDR_OWVAR 54
   8: PUSH
   9: LD_INT 1
  11: ST_TO_ADDR
// RandomizeAll ;
  12: CALL_OW 11
// ResetFog ;
  16: CALL_OW 335
// zakaz_vybrani = true ;
  20: LD_ADDR_LOC 6
  24: PUSH
  25: LD_INT 1
  27: ST_TO_ADDR
// you = 3 ;
  28: LD_ADDR_LOC 1
  32: PUSH
  33: LD_INT 3
  35: ST_TO_ADDR
// zeleny = 7 ;
  36: LD_ADDR_LOC 2
  40: PUSH
  41: LD_INT 7
  43: ST_TO_ADDR
// music_nat = 5 ;
  44: LD_ADDR_OWVAR 71
  48: PUSH
  49: LD_INT 5
  51: ST_TO_ADDR
// music_class = 3 ;
  52: LD_ADDR_OWVAR 72
  56: PUSH
  57: LD_INT 3
  59: ST_TO_ADDR
// DisableExclamations ( ) ;
  60: CALL_OW 474
// LoadSave ( ) ;
  64: CALL 2360 0 0
// SetBName ( depot , lesnitsky ) ;
  68: LD_INT 7
  70: PPUSH
  71: LD_STRING lesnitsky
  73: PPUSH
  74: CALL_OW 500
// SetBLevel ( ( FilterAllUnits ( [ f_type , unit_building ] ) ) , 6 ) ;
  78: LD_INT 21
  80: PUSH
  81: LD_INT 3
  83: PUSH
  84: EMPTY
  85: LIST
  86: LIST
  87: PPUSH
  88: CALL_OW 69
  92: PPUSH
  93: LD_INT 6
  95: PPUSH
  96: CALL_OW 241
// SetResourceType ( GetBase ( depot ) , mat_cans , 100 ) ;
 100: LD_INT 7
 102: PPUSH
 103: CALL_OW 274
 107: PPUSH
 108: LD_INT 1
 110: PPUSH
 111: LD_INT 100
 113: PPUSH
 114: CALL_OW 277
// SetResourceType ( GetBase ( depot ) , mat_oil , 100 ) ;
 118: LD_INT 7
 120: PPUSH
 121: CALL_OW 274
 125: PPUSH
 126: LD_INT 2
 128: PPUSH
 129: LD_INT 100
 131: PPUSH
 132: CALL_OW 277
// uc_side = you ;
 136: LD_ADDR_OWVAR 20
 140: PUSH
 141: LD_LOC 1
 145: ST_TO_ADDR
// SetClass ( vsevolod , 1 ) ;
 146: LD_LOC 3
 150: PPUSH
 151: LD_INT 1
 153: PPUSH
 154: CALL_OW 336
// uc_side = zeleny ;
 158: LD_ADDR_OWVAR 20
 162: PUSH
 163: LD_LOC 2
 167: ST_TO_ADDR
// lesnitsky := NewCharacter ( Lesnitsky ) ;
 168: LD_ADDR_LOC 4
 172: PUSH
 173: LD_STRING Lesnitsky
 175: PPUSH
 176: CALL_OW 25
 180: ST_TO_ADDR
// PlaceUnitXY ( lesnitsky , 66 , 40 , false ) ;
 181: LD_LOC 4
 185: PPUSH
 186: LD_INT 66
 188: PPUSH
 189: LD_INT 40
 191: PPUSH
 192: LD_INT 0
 194: PPUSH
 195: CALL_OW 48
// prepareGreens ;
 199: CALL 288 0 0
// prepareVeh ;
 203: CALL 525 0 0
// RevealFogArea ( you , mapa ) ;
 207: LD_LOC 1
 211: PPUSH
 212: LD_INT 11
 214: PPUSH
 215: CALL_OW 332
// CenterNowOnUnits ( auto ) ;
 219: LD_LOC 8
 223: PPUSH
 224: CALL_OW 87
// ComBuild ( del , b_bunker , 46 , 31 , 2 ) ;
 228: LD_INT 156
 230: PPUSH
 231: LD_INT 32
 233: PPUSH
 234: LD_INT 46
 236: PPUSH
 237: LD_INT 31
 239: PPUSH
 240: LD_INT 2
 242: PPUSH
 243: CALL_OW 145
// ComEnterUnit ( sol , FilterAllUnits ( [ f_btype , b_barracks ] ) [ 1 ] ) ;
 247: LD_INT 158
 249: PPUSH
 250: LD_INT 30
 252: PUSH
 253: LD_INT 5
 255: PUSH
 256: EMPTY
 257: LIST
 258: LIST
 259: PPUSH
 260: CALL_OW 69
 264: PUSH
 265: LD_INT 1
 267: ARRAY
 268: PPUSH
 269: CALL_OW 120
// AddComEnterUnit ( del , depot ) ;
 273: LD_INT 156
 275: PPUSH
 276: LD_INT 7
 278: PPUSH
 279: CALL_OW 180
// Intro ( ) ;
 283: CALL 705 0 0
// end ;
 287: END
// function prepareGreens ; var b , typ , un , i ; begin
 288: LD_INT 0
 290: PPUSH
 291: PPUSH
 292: PPUSH
 293: PPUSH
 294: PPUSH
// for b in FilterAllUnits ( [ f_btype , b_bunker ] ) do
 295: LD_ADDR_VAR 0 2
 299: PUSH
 300: LD_INT 30
 302: PUSH
 303: LD_INT 32
 305: PUSH
 306: EMPTY
 307: LIST
 308: LIST
 309: PPUSH
 310: CALL_OW 69
 314: PUSH
 315: FOR_IN
 316: IFFALSE 370
// begin un = VytvorCloveka ( 1 ) ;
 318: LD_ADDR_VAR 0 4
 322: PUSH
 323: LD_INT 1
 325: PPUSH
 326: CALL 1812 0 1
 330: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
 331: LD_VAR 0 4
 335: PPUSH
 336: LD_VAR 0 2
 340: PPUSH
 341: CALL_OW 254
 345: PUSH
 346: LD_INT 3
 348: PLUS
 349: PPUSH
 350: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
 354: LD_VAR 0 4
 358: PPUSH
 359: LD_VAR 0 2
 363: PPUSH
 364: CALL_OW 52
// end ;
 368: GO 315
 370: POP
 371: POP
// for b in FilterAllUnits ( [ f_btype , b_barracks ] ) do
 372: LD_ADDR_VAR 0 2
 376: PUSH
 377: LD_INT 30
 379: PUSH
 380: LD_INT 5
 382: PUSH
 383: EMPTY
 384: LIST
 385: LIST
 386: PPUSH
 387: CALL_OW 69
 391: PUSH
 392: FOR_IN
 393: IFFALSE 444
// for i = 1 to 4 do
 395: LD_ADDR_VAR 0 5
 399: PUSH
 400: DOUBLE
 401: LD_INT 1
 403: DEC
 404: ST_TO_ADDR
 405: LD_INT 4
 407: PUSH
 408: FOR_TO
 409: IFFALSE 440
// begin un = VytvorCloveka ( 1 ) ;
 411: LD_ADDR_VAR 0 4
 415: PUSH
 416: LD_INT 1
 418: PPUSH
 419: CALL 1812 0 1
 423: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
 424: LD_VAR 0 4
 428: PPUSH
 429: LD_VAR 0 2
 433: PPUSH
 434: CALL_OW 52
// end ;
 438: GO 408
 440: POP
 441: POP
 442: GO 392
 444: POP
 445: POP
// for b in FilterAllUnits ( [ f_btype , b_lab_full ] ) do
 446: LD_ADDR_VAR 0 2
 450: PUSH
 451: LD_INT 30
 453: PUSH
 454: LD_INT 8
 456: PUSH
 457: EMPTY
 458: LIST
 459: LIST
 460: PPUSH
 461: CALL_OW 69
 465: PUSH
 466: FOR_IN
 467: IFFALSE 518
// for i = 1 to 5 do
 469: LD_ADDR_VAR 0 5
 473: PUSH
 474: DOUBLE
 475: LD_INT 1
 477: DEC
 478: ST_TO_ADDR
 479: LD_INT 5
 481: PUSH
 482: FOR_TO
 483: IFFALSE 514
// begin un = VytvorCloveka ( 4 ) ;
 485: LD_ADDR_VAR 0 4
 489: PUSH
 490: LD_INT 4
 492: PPUSH
 493: CALL 1812 0 1
 497: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
 498: LD_VAR 0 4
 502: PPUSH
 503: LD_VAR 0 2
 507: PPUSH
 508: CALL_OW 52
// end ;
 512: GO 482
 514: POP
 515: POP
 516: GO 466
 518: POP
 519: POP
// end ;
 520: LD_VAR 0 1
 524: RET
// function prepareVeh ; begin
 525: LD_INT 0
 527: PPUSH
// uc_side = 3 ;
 528: LD_ADDR_OWVAR 20
 532: PUSH
 533: LD_INT 3
 535: ST_TO_ADDR
// uc_nation = 3 ;
 536: LD_ADDR_OWVAR 21
 540: PUSH
 541: LD_INT 3
 543: ST_TO_ADDR
// if navrat_z_alaskitove_mise then
 544: LD_LOC 7
 548: IFFALSE 560
// uc_direction = 2 else
 550: LD_ADDR_OWVAR 24
 554: PUSH
 555: LD_INT 2
 557: ST_TO_ADDR
 558: GO 568
// uc_direction = 4 ;
 560: LD_ADDR_OWVAR 24
 564: PUSH
 565: LD_INT 4
 567: ST_TO_ADDR
// vc_chassis = ru_medium_wheeled ;
 568: LD_ADDR_OWVAR 37
 572: PUSH
 573: LD_INT 21
 575: ST_TO_ADDR
// vc_control = control_manual ;
 576: LD_ADDR_OWVAR 38
 580: PUSH
 581: LD_INT 1
 583: ST_TO_ADDR
// vc_engine = engine_combustion ;
 584: LD_ADDR_OWVAR 39
 588: PUSH
 589: LD_INT 1
 591: ST_TO_ADDR
// vc_fuel_battery = 100 ;
 592: LD_ADDR_OWVAR 41
 596: PUSH
 597: LD_INT 100
 599: ST_TO_ADDR
// vc_weapon = ru_heavy_machine_gun ;
 600: LD_ADDR_OWVAR 40
 604: PUSH
 605: LD_INT 42
 607: ST_TO_ADDR
// auto = CreateVehicle ;
 608: LD_ADDR_LOC 8
 612: PUSH
 613: CALL_OW 45
 617: ST_TO_ADDR
// if navrat_z_alaskitove_mise then
 618: LD_LOC 7
 622: IFFALSE 656
// begin SetDir ( auto , 2 ) ;
 624: LD_LOC 8
 628: PPUSH
 629: LD_INT 2
 631: PPUSH
 632: CALL_OW 233
// PlaceUnitXY ( auto , 32 , 4 , false ) ;
 636: LD_LOC 8
 640: PPUSH
 641: LD_INT 32
 643: PPUSH
 644: LD_INT 4
 646: PPUSH
 647: LD_INT 0
 649: PPUSH
 650: CALL_OW 48
// end else
 654: GO 686
// begin SetDir ( auto , 4 ) ;
 656: LD_LOC 8
 660: PPUSH
 661: LD_INT 4
 663: PPUSH
 664: CALL_OW 233
// PlaceUnitXY ( auto , 103 , 42 , false ) ;
 668: LD_LOC 8
 672: PPUSH
 673: LD_INT 103
 675: PPUSH
 676: LD_INT 42
 678: PPUSH
 679: LD_INT 0
 681: PPUSH
 682: CALL_OW 48
// end ; PlaceHumanInUnit ( vsevolod , auto ) ;
 686: LD_LOC 3
 690: PPUSH
 691: LD_LOC 8
 695: PPUSH
 696: CALL_OW 52
// end ;
 700: LD_VAR 0 1
 704: RET
// function Intro ( ) ; var i ; begin
 705: LD_INT 0
 707: PPUSH
 708: PPUSH
// if navrat_z_alaskitove_mise then
 709: LD_LOC 7
 713: IFFALSE 802
// begin for i in [ [ 38 , 13 ] , [ 49 , 26 ] , [ 57 , 36 ] , [ 62 , 41 ] ] do
 715: LD_ADDR_VAR 0 2
 719: PUSH
 720: LD_INT 38
 722: PUSH
 723: LD_INT 13
 725: PUSH
 726: EMPTY
 727: LIST
 728: LIST
 729: PUSH
 730: LD_INT 49
 732: PUSH
 733: LD_INT 26
 735: PUSH
 736: EMPTY
 737: LIST
 738: LIST
 739: PUSH
 740: LD_INT 57
 742: PUSH
 743: LD_INT 36
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: PUSH
 750: LD_INT 62
 752: PUSH
 753: LD_INT 41
 755: PUSH
 756: EMPTY
 757: LIST
 758: LIST
 759: PUSH
 760: EMPTY
 761: LIST
 762: LIST
 763: LIST
 764: LIST
 765: PUSH
 766: FOR_IN
 767: IFFALSE 798
// AddComMoveXY ( vsevolod , i [ 1 ] , i [ 2 ] ) ;
 769: LD_LOC 3
 773: PPUSH
 774: LD_VAR 0 2
 778: PUSH
 779: LD_INT 1
 781: ARRAY
 782: PPUSH
 783: LD_VAR 0 2
 787: PUSH
 788: LD_INT 2
 790: ARRAY
 791: PPUSH
 792: CALL_OW 171
 796: GO 766
 798: POP
 799: POP
// end else
 800: GO 876
// begin for i in [ [ 91 , 41 ] , [ 79 , 41 ] , [ 73 , 44 ] ] do
 802: LD_ADDR_VAR 0 2
 806: PUSH
 807: LD_INT 91
 809: PUSH
 810: LD_INT 41
 812: PUSH
 813: EMPTY
 814: LIST
 815: LIST
 816: PUSH
 817: LD_INT 79
 819: PUSH
 820: LD_INT 41
 822: PUSH
 823: EMPTY
 824: LIST
 825: LIST
 826: PUSH
 827: LD_INT 73
 829: PUSH
 830: LD_INT 44
 832: PUSH
 833: EMPTY
 834: LIST
 835: LIST
 836: PUSH
 837: EMPTY
 838: LIST
 839: LIST
 840: LIST
 841: PUSH
 842: FOR_IN
 843: IFFALSE 874
// AddComMoveXY ( vsevolod , i [ 1 ] , i [ 2 ] ) ;
 845: LD_LOC 3
 849: PPUSH
 850: LD_VAR 0 2
 854: PUSH
 855: LD_INT 1
 857: ARRAY
 858: PPUSH
 859: LD_VAR 0 2
 863: PUSH
 864: LD_INT 2
 866: ARRAY
 867: PPUSH
 868: CALL_OW 171
 872: GO 842
 874: POP
 875: POP
// end ; end ;
 876: LD_VAR 0 1
 880: RET
// every 0 0$0.2 trigger IsInArea ( auto , karapark ) do
 881: LD_LOC 8
 885: PPUSH
 886: LD_INT 4
 888: PPUSH
 889: CALL_OW 308
 893: IFFALSE 1011
 895: GO 897
 897: DISABLE
// begin Wait ( 0 0$1.3 ) ;
 898: LD_INT 46
 900: PPUSH
 901: CALL_OW 67
// ComExitVehicle ( vsevolod ) ;
 905: LD_LOC 3
 909: PPUSH
 910: CALL_OW 121
// Wait ( 0 0$0.1 ) ;
 914: LD_INT 4
 916: PPUSH
 917: CALL_OW 67
// AddComHold ( vsevolod ) ;
 921: LD_LOC 3
 925: PPUSH
 926: CALL_OW 200
// Wait ( 0 0$0.2 ) ;
 930: LD_INT 7
 932: PPUSH
 933: CALL_OW 67
// Wait ( 0 0$0.2 ) ;
 937: LD_INT 7
 939: PPUSH
 940: CALL_OW 67
// AddComTurnUnit ( lesnitsky , vsevolod ) ;
 944: LD_LOC 4
 948: PPUSH
 949: LD_LOC 3
 953: PPUSH
 954: CALL_OW 179
// Wait ( 0 0$0.4 ) ;
 958: LD_INT 14
 960: PPUSH
 961: CALL_OW 67
// AddComHold ( vsevolod ) ;
 965: LD_LOC 3
 969: PPUSH
 970: CALL_OW 200
// AddComMoveToArea ( vsevolod , talkarea ) ;
 974: LD_LOC 3
 978: PPUSH
 979: LD_INT 12
 981: PPUSH
 982: CALL_OW 173
// AddComTurnUnit ( vsevolod , lesnitsky ) ;
 986: LD_LOC 3
 990: PPUSH
 991: LD_LOC 4
 995: PPUSH
 996: CALL_OW 179
// Wait ( 0 0$1.3 ) ;
1000: LD_INT 46
1002: PPUSH
1003: CALL_OW 67
// DialogSLesnitskym ( ) ;
1007: CALL 1012 0 0
// end ;
1011: END
// function DialogSLesnitskym ( ) ; begin
1012: LD_INT 0
1014: PPUSH
// Say ( lesnitsky , les-1 ) ;
1015: LD_LOC 4
1019: PPUSH
1020: LD_STRING les-1
1022: PPUSH
1023: CALL_OW 88
// Say ( vsevolod , vse-1 ) ;
1027: LD_LOC 3
1031: PPUSH
1032: LD_STRING vse-1
1034: PPUSH
1035: CALL_OW 88
// Say ( lesnitsky , les-2 ) ;
1039: LD_LOC 4
1043: PPUSH
1044: LD_STRING les-2
1046: PPUSH
1047: CALL_OW 88
// Say ( vsevolod , vse-2 ) ;
1051: LD_LOC 3
1055: PPUSH
1056: LD_STRING vse-2
1058: PPUSH
1059: CALL_OW 88
// Say ( lesnitsky , les-3 ) ;
1063: LD_LOC 4
1067: PPUSH
1068: LD_STRING les-3
1070: PPUSH
1071: CALL_OW 88
// ComMoveXY ( ved , 69 , 35 ) ;
1075: LD_INT 171
1077: PPUSH
1078: LD_INT 69
1080: PPUSH
1081: LD_INT 35
1083: PPUSH
1084: CALL_OW 111
// AddComMoveXY ( ved , 80 , 57 ) ;
1088: LD_INT 171
1090: PPUSH
1091: LD_INT 80
1093: PPUSH
1094: LD_INT 57
1096: PPUSH
1097: CALL_OW 171
// Say ( vsevolod , vse-3 ) ;
1101: LD_LOC 3
1105: PPUSH
1106: LD_STRING vse-3
1108: PPUSH
1109: CALL_OW 88
// Say ( lesnitsky , les-4 ) ;
1113: LD_LOC 4
1117: PPUSH
1118: LD_STRING les-4
1120: PPUSH
1121: CALL_OW 88
// if navrat_z_alaskitove_mise then
1125: LD_LOC 7
1129: IFFALSE 1169
// begin Say ( lesnitsky , les-5b ) ;
1131: LD_LOC 4
1135: PPUSH
1136: LD_STRING les-5b
1138: PPUSH
1139: CALL_OW 88
// Say ( vsevolod , vse-5 ) ;
1143: LD_LOC 3
1147: PPUSH
1148: LD_STRING vse-5
1150: PPUSH
1151: CALL_OW 88
// Say ( lesnitsky , les-5b-2 ) ;
1155: LD_LOC 4
1159: PPUSH
1160: LD_STRING les-5b-2
1162: PPUSH
1163: CALL_OW 88
// end else
1167: GO 1217
// begin Say ( lesnitsky , les-5a ) ;
1169: LD_LOC 4
1173: PPUSH
1174: LD_STRING les-5a
1176: PPUSH
1177: CALL_OW 88
// Say ( vsevolod , vse-5 ) ;
1181: LD_LOC 3
1185: PPUSH
1186: LD_STRING vse-5
1188: PPUSH
1189: CALL_OW 88
// Say ( lesnitsky , les-5a-2 ) ;
1193: LD_LOC 4
1197: PPUSH
1198: LD_STRING les-5a-2
1200: PPUSH
1201: CALL_OW 88
// Say ( lesnitsky , les-6 ) ;
1205: LD_LOC 4
1209: PPUSH
1210: LD_STRING les-6
1212: PPUSH
1213: CALL_OW 88
// end ; Say ( vsevolod , vse-4 ) ;
1217: LD_LOC 3
1221: PPUSH
1222: LD_STRING vse-4
1224: PPUSH
1225: CALL_OW 88
// if navrat_z_alaskitove_mise then
1229: LD_LOC 7
1233: IFFALSE 1315
// begin Wait ( 0 0$1.2 ) ;
1235: LD_INT 42
1237: PPUSH
1238: CALL_OW 67
// case Query ( naklad ) of 1 :
1242: LD_STRING naklad
1244: PPUSH
1245: CALL_OW 97
1249: PUSH
1250: LD_INT 1
1252: DOUBLE
1253: EQUAL
1254: IFTRUE 1258
1256: GO 1269
1258: POP
// naklad_type = 1 ; 2 :
1259: LD_ADDR_LOC 5
1263: PUSH
1264: LD_INT 1
1266: ST_TO_ADDR
1267: GO 1308
1269: LD_INT 2
1271: DOUBLE
1272: EQUAL
1273: IFTRUE 1277
1275: GO 1288
1277: POP
// naklad_type = 2 ; 3 :
1278: LD_ADDR_LOC 5
1282: PUSH
1283: LD_INT 2
1285: ST_TO_ADDR
1286: GO 1308
1288: LD_INT 3
1290: DOUBLE
1291: EQUAL
1292: IFTRUE 1296
1294: GO 1307
1296: POP
// naklad_type = 3 ; end ;
1297: LD_ADDR_LOC 5
1301: PUSH
1302: LD_INT 3
1304: ST_TO_ADDR
1305: GO 1308
1307: POP
// Wait ( 0 0$1 ) ;
1308: LD_INT 35
1310: PPUSH
1311: CALL_OW 67
// end ; Wait ( 0 0$0.5 ) ;
1315: LD_INT 18
1317: PPUSH
1318: CALL_OW 67
// if navrat_z_alaskitove_mise then
1322: LD_LOC 7
1326: IFFALSE 1404
// begin if IsOk ( auto ) and not IsInUnit ( vsevolod ) then
1328: LD_LOC 8
1332: PPUSH
1333: CALL_OW 302
1337: PUSH
1338: LD_LOC 3
1342: PPUSH
1343: CALL_OW 310
1347: NOT
1348: AND
1349: IFFALSE 1365
// ComEnterUnit ( vsevolod , auto ) ;
1351: LD_LOC 3
1355: PPUSH
1356: LD_LOC 8
1360: PPUSH
1361: CALL_OW 120
// AddComMoveXY ( vsevolod , 79 , 41 ) ;
1365: LD_LOC 3
1369: PPUSH
1370: LD_INT 79
1372: PPUSH
1373: LD_INT 41
1375: PPUSH
1376: CALL_OW 171
// AddComMoveXY ( vsevolod , 105 , 43 ) ;
1380: LD_LOC 3
1384: PPUSH
1385: LD_INT 105
1387: PPUSH
1388: LD_INT 43
1390: PPUSH
1391: CALL_OW 171
// KonecMise ( 2 ) ;
1395: LD_INT 2
1397: PPUSH
1398: CALL 2452 0 1
// end else
1402: GO 1665
// begin if IsOk ( auto ) and not IsInUnit ( vsevolod ) then
1404: LD_LOC 8
1408: PPUSH
1409: CALL_OW 302
1413: PUSH
1414: LD_LOC 3
1418: PPUSH
1419: CALL_OW 310
1423: NOT
1424: AND
1425: IFFALSE 1441
// ComEnterUnit ( vsevolod , auto ) ;
1427: LD_LOC 3
1431: PPUSH
1432: LD_LOC 8
1436: PPUSH
1437: CALL_OW 120
// AddComMoveXY ( vsevolod , 50 , 28 ) ;
1441: LD_LOC 3
1445: PPUSH
1446: LD_INT 50
1448: PPUSH
1449: LD_INT 28
1451: PPUSH
1452: CALL_OW 171
// AddComMoveXY ( vsevolod , 42 , 17 ) ;
1456: LD_LOC 3
1460: PPUSH
1461: LD_INT 42
1463: PPUSH
1464: LD_INT 17
1466: PPUSH
1467: CALL_OW 171
// AddComMoveXY ( vsevolod , 31 , 2 ) ;
1471: LD_LOC 3
1475: PPUSH
1476: LD_INT 31
1478: PPUSH
1479: LD_INT 2
1481: PPUSH
1482: CALL_OW 171
// Wait ( 0 0$4.5 ) ;
1486: LD_INT 158
1488: PPUSH
1489: CALL_OW 67
// ComEnterUnit ( mech1 , NearestUnitToUnit ( FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , zeleny ] , [ f_empty ] ] ) , mech1 ) ) ;
1493: LD_INT 163
1495: PPUSH
1496: LD_INT 21
1498: PUSH
1499: LD_INT 2
1501: PUSH
1502: EMPTY
1503: LIST
1504: LIST
1505: PUSH
1506: LD_INT 22
1508: PUSH
1509: LD_LOC 2
1513: PUSH
1514: EMPTY
1515: LIST
1516: LIST
1517: PUSH
1518: LD_INT 58
1520: PUSH
1521: EMPTY
1522: LIST
1523: PUSH
1524: EMPTY
1525: LIST
1526: LIST
1527: LIST
1528: PPUSH
1529: CALL_OW 69
1533: PPUSH
1534: LD_INT 163
1536: PPUSH
1537: CALL_OW 74
1541: PPUSH
1542: CALL_OW 120
// AddComMoveXY ( mech1 , 42 , 17 ) ;
1546: LD_INT 163
1548: PPUSH
1549: LD_INT 42
1551: PPUSH
1552: LD_INT 17
1554: PPUSH
1555: CALL_OW 171
// AddComMoveXY ( mech1 , 31 , 2 ) ;
1559: LD_INT 163
1561: PPUSH
1562: LD_INT 31
1564: PPUSH
1565: LD_INT 2
1567: PPUSH
1568: CALL_OW 171
// Wait ( 0 0$1 ) ;
1572: LD_INT 35
1574: PPUSH
1575: CALL_OW 67
// ComEnterUnit ( mech2 , NearestUnitToUnit ( FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , zeleny ] , [ f_empty ] ] ) , mech2 ) ) ;
1579: LD_INT 126
1581: PPUSH
1582: LD_INT 21
1584: PUSH
1585: LD_INT 2
1587: PUSH
1588: EMPTY
1589: LIST
1590: LIST
1591: PUSH
1592: LD_INT 22
1594: PUSH
1595: LD_LOC 2
1599: PUSH
1600: EMPTY
1601: LIST
1602: LIST
1603: PUSH
1604: LD_INT 58
1606: PUSH
1607: EMPTY
1608: LIST
1609: PUSH
1610: EMPTY
1611: LIST
1612: LIST
1613: LIST
1614: PPUSH
1615: CALL_OW 69
1619: PPUSH
1620: LD_INT 126
1622: PPUSH
1623: CALL_OW 74
1627: PPUSH
1628: CALL_OW 120
// AddComMoveXY ( mech2 , 42 , 17 ) ;
1632: LD_INT 126
1634: PPUSH
1635: LD_INT 42
1637: PPUSH
1638: LD_INT 17
1640: PPUSH
1641: CALL_OW 171
// AddComMoveXY ( mech2 , 31 , 2 ) ;
1645: LD_INT 126
1647: PPUSH
1648: LD_INT 31
1650: PPUSH
1651: LD_INT 2
1653: PPUSH
1654: CALL_OW 171
// KonecMise ( 1 ) ;
1658: LD_INT 1
1660: PPUSH
1661: CALL 2452 0 1
// end ; end ;
1665: LD_VAR 0 1
1669: RET
// every 0 0$1 trigger zakaz_vybrani do
1670: LD_LOC 6
1674: IFFALSE 1718
1676: GO 1678
1678: DISABLE
// begin Wait ( 0 0$1.4 ) ;
1679: LD_INT 49
1681: PPUSH
1682: CALL_OW 67
// if IsInUnit ( Vsevolod ) then
1686: LD_LOC 3
1690: PPUSH
1691: CALL_OW 310
1695: IFFALSE 1708
// CenterOnUnits ( auto ) else
1697: LD_LOC 8
1701: PPUSH
1702: CALL_OW 85
1706: GO 1717
// CenterOnUnits ( Vsevolod ) ;
1708: LD_LOC 3
1712: PPUSH
1713: CALL_OW 85
// enable ;
1717: ENABLE
// end ;
1718: END
// on UnitGoesToRed ( un ) do begin if un = Vsevolod then
1719: LD_VAR 0 1
1723: PUSH
1724: LD_LOC 3
1728: EQUAL
1729: IFFALSE 1745
// begin Wait ( 0 0$1.5 ) ;
1731: LD_INT 52
1733: PPUSH
1734: CALL_OW 67
// YouLost ( sevidead ) ;
1738: LD_STRING sevidead
1740: PPUSH
1741: CALL_OW 104
// end ; end ;
1745: PPOPN 1
1747: END
// on Contact ( side , side2 ) do begin if side = you and side2 = zeleny then
1748: LD_VAR 0 1
1752: PUSH
1753: LD_LOC 1
1757: EQUAL
1758: PUSH
1759: LD_VAR 0 2
1763: PUSH
1764: LD_LOC 2
1768: EQUAL
1769: AND
1770: IFFALSE 1809
// begin Wait ( 0 0$1.5 ) ;
1772: LD_INT 52
1774: PPUSH
1775: CALL_OW 67
// DialogueOn ( ) ;
1779: CALL_OW 6
// Say ( lesnitsky , les-utok ) ;
1783: LD_LOC 4
1787: PPUSH
1788: LD_STRING les-utok
1790: PPUSH
1791: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1795: LD_INT 18
1797: PPUSH
1798: CALL_OW 67
// YouLost ( soud ) ;
1802: LD_STRING soud
1804: PPUSH
1805: CALL_OW 104
// end ; end ;
1809: PPOPN 2
1811: END
// function VytvorCloveka ( povolani ) ; var x , mx ; begin
1812: LD_INT 0
1814: PPUSH
1815: PPUSH
1816: PPUSH
// x = 6 ;
1817: LD_ADDR_VAR 0 3
1821: PUSH
1822: LD_INT 6
1824: ST_TO_ADDR
// mx = 4 ;
1825: LD_ADDR_VAR 0 4
1829: PUSH
1830: LD_INT 4
1832: ST_TO_ADDR
// hc_name :=  ;
1833: LD_ADDR_OWVAR 26
1837: PUSH
1838: LD_STRING 
1840: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
1841: LD_ADDR_OWVAR 29
1845: PUSH
1846: LD_INT 9
1848: PPUSH
1849: LD_INT 11
1851: PPUSH
1852: CALL_OW 12
1856: PUSH
1857: LD_INT 9
1859: PPUSH
1860: LD_INT 11
1862: PPUSH
1863: CALL_OW 12
1867: PUSH
1868: EMPTY
1869: LIST
1870: LIST
1871: ST_TO_ADDR
// uc_nation := 3 ;
1872: LD_ADDR_OWVAR 21
1876: PUSH
1877: LD_INT 3
1879: ST_TO_ADDR
// uc_side = zeleny ;
1880: LD_ADDR_OWVAR 20
1884: PUSH
1885: LD_LOC 2
1889: ST_TO_ADDR
// if Prob ( 20 ) then
1890: LD_INT 20
1892: PPUSH
1893: CALL_OW 13
1897: IFFALSE 1909
// hc_sex := 2 else
1899: LD_ADDR_OWVAR 27
1903: PUSH
1904: LD_INT 2
1906: ST_TO_ADDR
1907: GO 1917
// hc_sex := 1 ;
1909: LD_ADDR_OWVAR 27
1913: PUSH
1914: LD_INT 1
1916: ST_TO_ADDR
// if povolani = 3 then
1917: LD_VAR 0 1
1921: PUSH
1922: LD_INT 3
1924: EQUAL
1925: IFFALSE 1935
// hc_sex = 2 ;
1927: LD_ADDR_OWVAR 27
1931: PUSH
1932: LD_INT 2
1934: ST_TO_ADDR
// if povolani = 4 then
1935: LD_VAR 0 1
1939: PUSH
1940: LD_INT 4
1942: EQUAL
1943: IFFALSE 1953
// hc_sex = 2 ;
1945: LD_ADDR_OWVAR 27
1949: PUSH
1950: LD_INT 2
1952: ST_TO_ADDR
// case povolani of 1 :
1953: LD_VAR 0 1
1957: PUSH
1958: LD_INT 1
1960: DOUBLE
1961: EQUAL
1962: IFTRUE 1966
1964: GO 2046
1966: POP
// begin hc_skills := [ rand ( x - 1 , x ) , rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( 0 , mx ) ] ;
1967: LD_ADDR_OWVAR 31
1971: PUSH
1972: LD_VAR 0 3
1976: PUSH
1977: LD_INT 1
1979: MINUS
1980: PPUSH
1981: LD_VAR 0 3
1985: PPUSH
1986: CALL_OW 12
1990: PUSH
1991: LD_INT 0
1993: PPUSH
1994: LD_VAR 0 4
1998: PPUSH
1999: CALL_OW 12
2003: PUSH
2004: LD_INT 0
2006: PPUSH
2007: LD_VAR 0 4
2011: PPUSH
2012: CALL_OW 12
2016: PUSH
2017: LD_INT 0
2019: PPUSH
2020: LD_VAR 0 4
2024: PPUSH
2025: CALL_OW 12
2029: PUSH
2030: EMPTY
2031: LIST
2032: LIST
2033: LIST
2034: LIST
2035: ST_TO_ADDR
// hc_class = class_soldier ;
2036: LD_ADDR_OWVAR 28
2040: PUSH
2041: LD_INT 1
2043: ST_TO_ADDR
// end ; 2 :
2044: GO 2311
2046: LD_INT 2
2048: DOUBLE
2049: EQUAL
2050: IFTRUE 2054
2052: GO 2134
2054: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( x - 1 , x ) , rand ( 0 , mx ) , rand ( 0 , mx ) ] ;
2055: LD_ADDR_OWVAR 31
2059: PUSH
2060: LD_INT 0
2062: PPUSH
2063: LD_VAR 0 4
2067: PPUSH
2068: CALL_OW 12
2072: PUSH
2073: LD_VAR 0 3
2077: PUSH
2078: LD_INT 1
2080: MINUS
2081: PPUSH
2082: LD_VAR 0 3
2086: PPUSH
2087: CALL_OW 12
2091: PUSH
2092: LD_INT 0
2094: PPUSH
2095: LD_VAR 0 4
2099: PPUSH
2100: CALL_OW 12
2104: PUSH
2105: LD_INT 0
2107: PPUSH
2108: LD_VAR 0 4
2112: PPUSH
2113: CALL_OW 12
2117: PUSH
2118: EMPTY
2119: LIST
2120: LIST
2121: LIST
2122: LIST
2123: ST_TO_ADDR
// hc_class = class_engineer ;
2124: LD_ADDR_OWVAR 28
2128: PUSH
2129: LD_INT 2
2131: ST_TO_ADDR
// end ; 3 :
2132: GO 2311
2134: LD_INT 3
2136: DOUBLE
2137: EQUAL
2138: IFTRUE 2142
2140: GO 2222
2142: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( x - 1 , x ) , rand ( 0 , mx ) ] ;
2143: LD_ADDR_OWVAR 31
2147: PUSH
2148: LD_INT 0
2150: PPUSH
2151: LD_VAR 0 4
2155: PPUSH
2156: CALL_OW 12
2160: PUSH
2161: LD_INT 0
2163: PPUSH
2164: LD_VAR 0 4
2168: PPUSH
2169: CALL_OW 12
2173: PUSH
2174: LD_VAR 0 3
2178: PUSH
2179: LD_INT 1
2181: MINUS
2182: PPUSH
2183: LD_VAR 0 3
2187: PPUSH
2188: CALL_OW 12
2192: PUSH
2193: LD_INT 0
2195: PPUSH
2196: LD_VAR 0 4
2200: PPUSH
2201: CALL_OW 12
2205: PUSH
2206: EMPTY
2207: LIST
2208: LIST
2209: LIST
2210: LIST
2211: ST_TO_ADDR
// hc_class = class_mechanic ;
2212: LD_ADDR_OWVAR 28
2216: PUSH
2217: LD_INT 3
2219: ST_TO_ADDR
// end ; 4 :
2220: GO 2311
2222: LD_INT 4
2224: DOUBLE
2225: EQUAL
2226: IFTRUE 2230
2228: GO 2310
2230: POP
// begin hc_skills := [ rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( 0 , mx ) , rand ( x - 1 , x ) ] ;
2231: LD_ADDR_OWVAR 31
2235: PUSH
2236: LD_INT 0
2238: PPUSH
2239: LD_VAR 0 4
2243: PPUSH
2244: CALL_OW 12
2248: PUSH
2249: LD_INT 0
2251: PPUSH
2252: LD_VAR 0 4
2256: PPUSH
2257: CALL_OW 12
2261: PUSH
2262: LD_INT 0
2264: PPUSH
2265: LD_VAR 0 4
2269: PPUSH
2270: CALL_OW 12
2274: PUSH
2275: LD_VAR 0 3
2279: PUSH
2280: LD_INT 1
2282: MINUS
2283: PPUSH
2284: LD_VAR 0 3
2288: PPUSH
2289: CALL_OW 12
2293: PUSH
2294: EMPTY
2295: LIST
2296: LIST
2297: LIST
2298: LIST
2299: ST_TO_ADDR
// hc_class = class_scientistic ;
2300: LD_ADDR_OWVAR 28
2304: PUSH
2305: LD_INT 4
2307: ST_TO_ADDR
// end ; end ;
2308: GO 2311
2310: POP
// result := CreateHuman ( ) ;
2311: LD_ADDR_VAR 0 2
2315: PUSH
2316: CALL_OW 44
2320: ST_TO_ADDR
// end ;
2321: LD_VAR 0 2
2325: RET
// every 0 0$0.4 trigger zakaz_vybrani do
2326: LD_LOC 6
2330: IFFALSE 2359
2332: GO 2334
2334: DISABLE
// begin DeselectUnits ( [ vsevolod , IsInUnit ( vsevolod ) ] ) ;
2335: LD_LOC 3
2339: PUSH
2340: LD_LOC 3
2344: PPUSH
2345: CALL_OW 310
2349: PUSH
2350: EMPTY
2351: LIST
2352: LIST
2353: PPUSH
2354: CALL_OW 491
// enable ;
2358: ENABLE
// end ;
2359: END
// function LoadSave ( ) ; begin
2360: LD_INT 0
2362: PPUSH
// uc_nation = nation_russian ;
2363: LD_ADDR_OWVAR 21
2367: PUSH
2368: LD_INT 3
2370: ST_TO_ADDR
// uc_side = You ;
2371: LD_ADDR_OWVAR 20
2375: PUSH
2376: LD_LOC 1
2380: ST_TO_ADDR
// navrat_z_alaskitove_mise = LoadVariable ( AlaskiteMissionFirst , 0 ) ;
2381: LD_ADDR_LOC 7
2385: PUSH
2386: LD_STRING AlaskiteMissionFirst
2388: PPUSH
2389: LD_INT 0
2391: PPUSH
2392: CALL_OW 30
2396: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
2397: LD_STRING Vsevolod
2399: PPUSH
2400: CALL_OW 28
2404: NOT
2405: IFFALSE 2422
// vsevolod = NewCharacter ( Vsevolod ) else
2407: LD_ADDR_LOC 3
2411: PUSH
2412: LD_STRING Vsevolod
2414: PPUSH
2415: CALL_OW 25
2419: ST_TO_ADDR
2420: GO 2435
// vsevolod = CreateCharacter ( Vsevolod ) ;
2422: LD_ADDR_LOC 3
2426: PUSH
2427: LD_STRING Vsevolod
2429: PPUSH
2430: CALL_OW 34
2434: ST_TO_ADDR
// SetClass ( vsevolod , 1 ) ;
2435: LD_LOC 3
2439: PPUSH
2440: LD_INT 1
2442: PPUSH
2443: CALL_OW 336
// end ;
2447: LD_VAR 0 1
2451: RET
// function KonecMise ( dalsimise ) ; var a ; begin
2452: LD_INT 0
2454: PPUSH
2455: PPUSH
// Wait ( 0 0$10 ) ;
2456: LD_INT 350
2458: PPUSH
2459: CALL_OW 67
// if navrat_z_alaskitove_mise then
2463: LD_LOC 7
2467: IFFALSE 2483
// SaveVariable ( naklad_type , NakladVybranSebou ) else
2469: LD_LOC 5
2473: PPUSH
2474: LD_STRING NakladVybranSebou
2476: PPUSH
2477: CALL_OW 39
2481: GO 2493
// SaveVariable ( 1 , AutaNavic ) ;
2483: LD_INT 1
2485: PPUSH
2486: LD_STRING AutaNavic
2488: PPUSH
2489: CALL_OW 39
// Wait ( 0 0$0.5 ) ;
2493: LD_INT 18
2495: PPUSH
2496: CALL_OW 67
// ChangeSideFog ( 3 , 8 ) ;
2500: LD_INT 3
2502: PPUSH
2503: LD_INT 8
2505: PPUSH
2506: CALL_OW 343
// your_side = 8 ;
2510: LD_ADDR_OWVAR 2
2514: PUSH
2515: LD_INT 8
2517: ST_TO_ADDR
// if IsInUnit ( vsevolod ) then
2518: LD_LOC 3
2522: PPUSH
2523: CALL_OW 310
2527: IFFALSE 2555
// begin a = IsInUnit ( vsevolod ) ;
2529: LD_ADDR_VAR 0 3
2533: PUSH
2534: LD_LOC 3
2538: PPUSH
2539: CALL_OW 310
2543: ST_TO_ADDR
// RemoveUnit ( a ) ;
2544: LD_VAR 0 3
2548: PPUSH
2549: CALL_OW 64
// end else
2553: GO 2564
// RemoveUnit ( vsevolod ) ;
2555: LD_LOC 3
2559: PPUSH
2560: CALL_OW 64
// ResetFog ;
2564: CALL_OW 335
// HideArea ( 3 , mapa ) ;
2568: LD_INT 3
2570: PPUSH
2571: LD_INT 11
2573: PPUSH
2574: CALL_OW 333
// Wait ( 0 0$0.2 ) ;
2578: LD_INT 7
2580: PPUSH
2581: CALL_OW 67
// if dalsimise = 1 then
2585: LD_VAR 0 1
2589: PUSH
2590: LD_INT 1
2592: EQUAL
2593: IFFALSE 2607
// ChangeMap ( 3 , %_cont ) else
2595: LD_STRING 3
2597: PPUSH
2598: LD_STRING %_cont
2600: PPUSH
2601: CALL_OW 340
2605: GO 2617
// ChangeMap ( 3 , %_cont_cont ) ;
2607: LD_STRING 3
2609: PPUSH
2610: LD_STRING %_cont_cont
2612: PPUSH
2613: CALL_OW 340
// end ;
2617: LD_VAR 0 2
2621: RET
