// var ident , peopledef , un , whole_units ; export Burlak_saved , Gaydar_saved , Gaydar_wait , you , ally , arab , attack , selfdefend , sm_attack1 , sm_attack2 , sm_attack3 , other , alliance , Burlak , Gnyevko , Platonov , Belkov , Scholtze , Kuzmov , Kovalyuk , SoldierX , Soldier1 , Scientist1 , Engineer1 , Mechanic1 , Popov , Gaydar , Heike , new , player_units , saved_player_units , Convoy , Convoy_length , Convoy_delay , FirstCargo , trucks_diverted_count , trucks_diverted_list , number_of_trucks , number_of_guns , number_of_hv_guns , number_of_gatlings , number_of_hv_mchn_gun , konec , RecklessAttack , BelkovFreed , pocet , count , attack_offset , attack_count , ar_killed , was_combat , driver , lab_upgraded , workshop_upgraded , depot_build , workshop_build , armoury_build , bunker_build , turret_build , base_dismantled , player_building_captured , pocet_budov , waypointsEND , sm_pocet1_2 , sm_pocet3 , Disabled4 , Disabled8 , Disabled9 , Disabled13 ; function set_difficulty ; begin
   0: LD_INT 0
   2: PPUSH
// number_of_trucks := [ 20 , 17 , 14 ] [ difficulty ] ;
   3: LD_ADDR_EXP 38
   7: PUSH
   8: LD_INT 20
  10: PUSH
  11: LD_INT 17
  13: PUSH
  14: LD_INT 14
  16: PUSH
  17: EMPTY
  18: LIST
  19: LIST
  20: LIST
  21: PUSH
  22: LD_OWVAR 67
  26: ARRAY
  27: ST_TO_ADDR
// number_of_guns := [ 13 , 11 , 9 ] [ difficulty ] ;
  28: LD_ADDR_EXP 39
  32: PUSH
  33: LD_INT 13
  35: PUSH
  36: LD_INT 11
  38: PUSH
  39: LD_INT 9
  41: PUSH
  42: EMPTY
  43: LIST
  44: LIST
  45: LIST
  46: PUSH
  47: LD_OWVAR 67
  51: ARRAY
  52: ST_TO_ADDR
// number_of_hv_guns := [ 6 , 5 , 4 ] [ difficulty ] ;
  53: LD_ADDR_EXP 40
  57: PUSH
  58: LD_INT 6
  60: PUSH
  61: LD_INT 5
  63: PUSH
  64: LD_INT 4
  66: PUSH
  67: EMPTY
  68: LIST
  69: LIST
  70: LIST
  71: PUSH
  72: LD_OWVAR 67
  76: ARRAY
  77: ST_TO_ADDR
// number_of_gatlings := [ 8 , 6 , 4 ] [ difficulty ] ;
  78: LD_ADDR_EXP 41
  82: PUSH
  83: LD_INT 8
  85: PUSH
  86: LD_INT 6
  88: PUSH
  89: LD_INT 4
  91: PUSH
  92: EMPTY
  93: LIST
  94: LIST
  95: LIST
  96: PUSH
  97: LD_OWVAR 67
 101: ARRAY
 102: ST_TO_ADDR
// number_of_hv_mchn_gun := [ 3 , 2 , 1 ] [ difficulty ] ;
 103: LD_ADDR_EXP 42
 107: PUSH
 108: LD_INT 3
 110: PUSH
 111: LD_INT 2
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: EMPTY
 118: LIST
 119: LIST
 120: LIST
 121: PUSH
 122: LD_OWVAR 67
 126: ARRAY
 127: ST_TO_ADDR
// convoy_delay := [ [ 60 , 120 ] , [ 45 , 105 ] , [ 30 , 90 ] ] [ difficulty ] ;
 128: LD_ADDR_EXP 34
 132: PUSH
 133: LD_INT 60
 135: PUSH
 136: LD_INT 120
 138: PUSH
 139: EMPTY
 140: LIST
 141: LIST
 142: PUSH
 143: LD_INT 45
 145: PUSH
 146: LD_INT 105
 148: PUSH
 149: EMPTY
 150: LIST
 151: LIST
 152: PUSH
 153: LD_INT 30
 155: PUSH
 156: LD_INT 90
 158: PUSH
 159: EMPTY
 160: LIST
 161: LIST
 162: PUSH
 163: EMPTY
 164: LIST
 165: LIST
 166: LIST
 167: PUSH
 168: LD_OWVAR 67
 172: ARRAY
 173: ST_TO_ADDR
// attack_offset := [ Rand ( 1 1$0 , 1 1$30 ) , Rand ( 0 0$30 , 1 1$0 ) , Rand ( 0 0$0 , 0 0$30 ) ] [ difficulty ] ;
 174: LD_ADDR_EXP 48
 178: PUSH
 179: LD_INT 2100
 181: PPUSH
 182: LD_INT 3150
 184: PPUSH
 185: CALL_OW 12
 189: PUSH
 190: LD_INT 1050
 192: PPUSH
 193: LD_INT 2100
 195: PPUSH
 196: CALL_OW 12
 200: PUSH
 201: LD_INT 0
 203: PPUSH
 204: LD_INT 1050
 206: PPUSH
 207: CALL_OW 12
 211: PUSH
 212: EMPTY
 213: LIST
 214: LIST
 215: LIST
 216: PUSH
 217: LD_OWVAR 67
 221: ARRAY
 222: ST_TO_ADDR
// attack_count := [ 3 , 5 , 7 ] [ difficulty ] ;
 223: LD_ADDR_EXP 49
 227: PUSH
 228: LD_INT 3
 230: PUSH
 231: LD_INT 5
 233: PUSH
 234: LD_INT 7
 236: PUSH
 237: EMPTY
 238: LIST
 239: LIST
 240: LIST
 241: PUSH
 242: LD_OWVAR 67
 246: ARRAY
 247: ST_TO_ADDR
// Gaydar_wait := [ 1 1$30 , 1 1$10 , 0 0$45 ] [ difficulty ] ;
 248: LD_ADDR_EXP 3
 252: PUSH
 253: LD_INT 3150
 255: PUSH
 256: LD_INT 2450
 258: PUSH
 259: LD_INT 1575
 261: PUSH
 262: EMPTY
 263: LIST
 264: LIST
 265: LIST
 266: PUSH
 267: LD_OWVAR 67
 271: ARRAY
 272: ST_TO_ADDR
// waypointsEND := [ [ [ 103 , 105 ] , [ 76 , 36 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 99 , 48 ] , [ 54 , 52 ] , [ 107 , 55 ] , [ 59 , 38 ] ] , [ [ 91 , 102 ] , [ 103 , 105 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 120 , 76 ] , [ 54 , 52 ] , [ 107 , 55 ] , [ 59 , 38 ] , [ 99 , 48 ] , [ 66 , 35 ] , [ 88 , 42 ] , [ 76 , 36 ] ] , [ [ 91 , 102 ] , [ 103 , 105 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 122 , 89 ] , [ 56 , 62 ] , [ 120 , 76 ] , [ 54 , 52 ] , [ 113 , 62 ] , [ 55 , 44 ] , [ 107 , 55 ] , [ 59 , 38 ] , [ 99 , 48 ] , [ 66 , 35 ] , [ 88 , 42 ] , [ 76 , 36 ] ] ] [ difficulty ] ;
 273: LD_ADDR_EXP 63
 277: PUSH
 278: LD_INT 103
 280: PUSH
 281: LD_INT 105
 283: PUSH
 284: EMPTY
 285: LIST
 286: LIST
 287: PUSH
 288: LD_INT 76
 290: PUSH
 291: LD_INT 36
 293: PUSH
 294: EMPTY
 295: LIST
 296: LIST
 297: PUSH
 298: LD_INT 111
 300: PUSH
 301: LD_INT 105
 303: PUSH
 304: EMPTY
 305: LIST
 306: LIST
 307: PUSH
 308: LD_INT 79
 310: PUSH
 311: LD_INT 94
 313: PUSH
 314: EMPTY
 315: LIST
 316: LIST
 317: PUSH
 318: LD_INT 118
 320: PUSH
 321: LD_INT 104
 323: PUSH
 324: EMPTY
 325: LIST
 326: LIST
 327: PUSH
 328: LD_INT 71
 330: PUSH
 331: LD_INT 85
 333: PUSH
 334: EMPTY
 335: LIST
 336: LIST
 337: PUSH
 338: LD_INT 122
 340: PUSH
 341: LD_INT 98
 343: PUSH
 344: EMPTY
 345: LIST
 346: LIST
 347: PUSH
 348: LD_INT 62
 350: PUSH
 351: LD_INT 75
 353: PUSH
 354: EMPTY
 355: LIST
 356: LIST
 357: PUSH
 358: LD_INT 99
 360: PUSH
 361: LD_INT 48
 363: PUSH
 364: EMPTY
 365: LIST
 366: LIST
 367: PUSH
 368: LD_INT 54
 370: PUSH
 371: LD_INT 52
 373: PUSH
 374: EMPTY
 375: LIST
 376: LIST
 377: PUSH
 378: LD_INT 107
 380: PUSH
 381: LD_INT 55
 383: PUSH
 384: EMPTY
 385: LIST
 386: LIST
 387: PUSH
 388: LD_INT 59
 390: PUSH
 391: LD_INT 38
 393: PUSH
 394: EMPTY
 395: LIST
 396: LIST
 397: PUSH
 398: EMPTY
 399: LIST
 400: LIST
 401: LIST
 402: LIST
 403: LIST
 404: LIST
 405: LIST
 406: LIST
 407: LIST
 408: LIST
 409: LIST
 410: LIST
 411: PUSH
 412: LD_INT 91
 414: PUSH
 415: LD_INT 102
 417: PUSH
 418: EMPTY
 419: LIST
 420: LIST
 421: PUSH
 422: LD_INT 103
 424: PUSH
 425: LD_INT 105
 427: PUSH
 428: EMPTY
 429: LIST
 430: LIST
 431: PUSH
 432: LD_INT 111
 434: PUSH
 435: LD_INT 105
 437: PUSH
 438: EMPTY
 439: LIST
 440: LIST
 441: PUSH
 442: LD_INT 79
 444: PUSH
 445: LD_INT 94
 447: PUSH
 448: EMPTY
 449: LIST
 450: LIST
 451: PUSH
 452: LD_INT 118
 454: PUSH
 455: LD_INT 104
 457: PUSH
 458: EMPTY
 459: LIST
 460: LIST
 461: PUSH
 462: LD_INT 71
 464: PUSH
 465: LD_INT 85
 467: PUSH
 468: EMPTY
 469: LIST
 470: LIST
 471: PUSH
 472: LD_INT 122
 474: PUSH
 475: LD_INT 98
 477: PUSH
 478: EMPTY
 479: LIST
 480: LIST
 481: PUSH
 482: LD_INT 62
 484: PUSH
 485: LD_INT 75
 487: PUSH
 488: EMPTY
 489: LIST
 490: LIST
 491: PUSH
 492: LD_INT 120
 494: PUSH
 495: LD_INT 76
 497: PUSH
 498: EMPTY
 499: LIST
 500: LIST
 501: PUSH
 502: LD_INT 54
 504: PUSH
 505: LD_INT 52
 507: PUSH
 508: EMPTY
 509: LIST
 510: LIST
 511: PUSH
 512: LD_INT 107
 514: PUSH
 515: LD_INT 55
 517: PUSH
 518: EMPTY
 519: LIST
 520: LIST
 521: PUSH
 522: LD_INT 59
 524: PUSH
 525: LD_INT 38
 527: PUSH
 528: EMPTY
 529: LIST
 530: LIST
 531: PUSH
 532: LD_INT 99
 534: PUSH
 535: LD_INT 48
 537: PUSH
 538: EMPTY
 539: LIST
 540: LIST
 541: PUSH
 542: LD_INT 66
 544: PUSH
 545: LD_INT 35
 547: PUSH
 548: EMPTY
 549: LIST
 550: LIST
 551: PUSH
 552: LD_INT 88
 554: PUSH
 555: LD_INT 42
 557: PUSH
 558: EMPTY
 559: LIST
 560: LIST
 561: PUSH
 562: LD_INT 76
 564: PUSH
 565: LD_INT 36
 567: PUSH
 568: EMPTY
 569: LIST
 570: LIST
 571: PUSH
 572: EMPTY
 573: LIST
 574: LIST
 575: LIST
 576: LIST
 577: LIST
 578: LIST
 579: LIST
 580: LIST
 581: LIST
 582: LIST
 583: LIST
 584: LIST
 585: LIST
 586: LIST
 587: LIST
 588: LIST
 589: PUSH
 590: LD_INT 91
 592: PUSH
 593: LD_INT 102
 595: PUSH
 596: EMPTY
 597: LIST
 598: LIST
 599: PUSH
 600: LD_INT 103
 602: PUSH
 603: LD_INT 105
 605: PUSH
 606: EMPTY
 607: LIST
 608: LIST
 609: PUSH
 610: LD_INT 111
 612: PUSH
 613: LD_INT 105
 615: PUSH
 616: EMPTY
 617: LIST
 618: LIST
 619: PUSH
 620: LD_INT 79
 622: PUSH
 623: LD_INT 94
 625: PUSH
 626: EMPTY
 627: LIST
 628: LIST
 629: PUSH
 630: LD_INT 118
 632: PUSH
 633: LD_INT 104
 635: PUSH
 636: EMPTY
 637: LIST
 638: LIST
 639: PUSH
 640: LD_INT 71
 642: PUSH
 643: LD_INT 85
 645: PUSH
 646: EMPTY
 647: LIST
 648: LIST
 649: PUSH
 650: LD_INT 122
 652: PUSH
 653: LD_INT 98
 655: PUSH
 656: EMPTY
 657: LIST
 658: LIST
 659: PUSH
 660: LD_INT 62
 662: PUSH
 663: LD_INT 75
 665: PUSH
 666: EMPTY
 667: LIST
 668: LIST
 669: PUSH
 670: LD_INT 122
 672: PUSH
 673: LD_INT 89
 675: PUSH
 676: EMPTY
 677: LIST
 678: LIST
 679: PUSH
 680: LD_INT 56
 682: PUSH
 683: LD_INT 62
 685: PUSH
 686: EMPTY
 687: LIST
 688: LIST
 689: PUSH
 690: LD_INT 120
 692: PUSH
 693: LD_INT 76
 695: PUSH
 696: EMPTY
 697: LIST
 698: LIST
 699: PUSH
 700: LD_INT 54
 702: PUSH
 703: LD_INT 52
 705: PUSH
 706: EMPTY
 707: LIST
 708: LIST
 709: PUSH
 710: LD_INT 113
 712: PUSH
 713: LD_INT 62
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: PUSH
 720: LD_INT 55
 722: PUSH
 723: LD_INT 44
 725: PUSH
 726: EMPTY
 727: LIST
 728: LIST
 729: PUSH
 730: LD_INT 107
 732: PUSH
 733: LD_INT 55
 735: PUSH
 736: EMPTY
 737: LIST
 738: LIST
 739: PUSH
 740: LD_INT 59
 742: PUSH
 743: LD_INT 38
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: PUSH
 750: LD_INT 99
 752: PUSH
 753: LD_INT 48
 755: PUSH
 756: EMPTY
 757: LIST
 758: LIST
 759: PUSH
 760: LD_INT 66
 762: PUSH
 763: LD_INT 35
 765: PUSH
 766: EMPTY
 767: LIST
 768: LIST
 769: PUSH
 770: LD_INT 88
 772: PUSH
 773: LD_INT 42
 775: PUSH
 776: EMPTY
 777: LIST
 778: LIST
 779: PUSH
 780: LD_INT 76
 782: PUSH
 783: LD_INT 36
 785: PUSH
 786: EMPTY
 787: LIST
 788: LIST
 789: PUSH
 790: EMPTY
 791: LIST
 792: LIST
 793: LIST
 794: LIST
 795: LIST
 796: LIST
 797: LIST
 798: LIST
 799: LIST
 800: LIST
 801: LIST
 802: LIST
 803: LIST
 804: LIST
 805: LIST
 806: LIST
 807: LIST
 808: LIST
 809: LIST
 810: LIST
 811: PUSH
 812: EMPTY
 813: LIST
 814: LIST
 815: LIST
 816: PUSH
 817: LD_OWVAR 67
 821: ARRAY
 822: ST_TO_ADDR
// end ;
 823: LD_VAR 0 1
 827: RET
// function read_parameters ; var i ; begin
 828: LD_INT 0
 830: PPUSH
 831: PPUSH
// you := 3 ;
 832: LD_ADDR_EXP 4
 836: PUSH
 837: LD_INT 3
 839: ST_TO_ADDR
// ally := 6 ;
 840: LD_ADDR_EXP 5
 844: PUSH
 845: LD_INT 6
 847: ST_TO_ADDR
// arab := 2 ;
 848: LD_ADDR_EXP 6
 852: PUSH
 853: LD_INT 2
 855: ST_TO_ADDR
// ChangeSideFog ( you , ally ) ;
 856: LD_EXP 4
 860: PPUSH
 861: LD_EXP 5
 865: PPUSH
 866: CALL_OW 343
// SetAttitude ( ally , you , att_friend , true ) ;
 870: LD_EXP 5
 874: PPUSH
 875: LD_EXP 4
 879: PPUSH
 880: LD_INT 1
 882: PPUSH
 883: LD_INT 1
 885: PPUSH
 886: CALL_OW 80
// SetAttitude ( ally , arab , att_enemy , true ) ;
 890: LD_EXP 5
 894: PPUSH
 895: LD_EXP 6
 899: PPUSH
 900: LD_INT 2
 902: PPUSH
 903: LD_INT 1
 905: PPUSH
 906: CALL_OW 80
// SetAttitude ( you , arab , att_enemy , true ) ;
 910: LD_EXP 4
 914: PPUSH
 915: LD_EXP 6
 919: PPUSH
 920: LD_INT 2
 922: PPUSH
 923: LD_INT 1
 925: PPUSH
 926: CALL_OW 80
// trucks_diverted_count := 0 ;
 930: LD_ADDR_EXP 36
 934: PUSH
 935: LD_INT 0
 937: ST_TO_ADDR
// trucks_diverted_list := [ ] ;
 938: LD_ADDR_EXP 37
 942: PUSH
 943: EMPTY
 944: ST_TO_ADDR
// Disabled4 := false ;
 945: LD_ADDR_EXP 66
 949: PUSH
 950: LD_INT 0
 952: ST_TO_ADDR
// Disabled8 := false ;
 953: LD_ADDR_EXP 67
 957: PUSH
 958: LD_INT 0
 960: ST_TO_ADDR
// Disabled9 := false ;
 961: LD_ADDR_EXP 68
 965: PUSH
 966: LD_INT 0
 968: ST_TO_ADDR
// sm_pocet1_2 := 0 ;
 969: LD_ADDR_EXP 64
 973: PUSH
 974: LD_INT 0
 976: ST_TO_ADDR
// sm_pocet3 := 0 ;
 977: LD_ADDR_EXP 65
 981: PUSH
 982: LD_INT 0
 984: ST_TO_ADDR
// pocet := 0 ;
 985: LD_ADDR_EXP 46
 989: PUSH
 990: LD_INT 0
 992: ST_TO_ADDR
// konec := false ;
 993: LD_ADDR_EXP 43
 997: PUSH
 998: LD_INT 0
1000: ST_TO_ADDR
// BelkovFreed := LoadVariable ( belkov_saved , false ) ;
1001: LD_ADDR_EXP 45
1005: PUSH
1006: LD_STRING belkov_saved
1008: PPUSH
1009: LD_INT 0
1011: PPUSH
1012: CALL_OW 30
1016: ST_TO_ADDR
// case BelkovFreed of 0 :
1017: LD_EXP 45
1021: PUSH
1022: LD_INT 0
1024: DOUBLE
1025: EQUAL
1026: IFTRUE 1030
1028: GO 1041
1030: POP
// BelkovFreed := true ; 1 :
1031: LD_ADDR_EXP 45
1035: PUSH
1036: LD_INT 1
1038: ST_TO_ADDR
1039: GO 1061
1041: LD_INT 1
1043: DOUBLE
1044: EQUAL
1045: IFTRUE 1049
1047: GO 1060
1049: POP
// BelkovFreed := false ; end ;
1050: LD_ADDR_EXP 45
1054: PUSH
1055: LD_INT 0
1057: ST_TO_ADDR
1058: GO 1061
1060: POP
// RecklessAttack := LoadVariable ( stav_utoku , true ) ;
1061: LD_ADDR_EXP 44
1065: PUSH
1066: LD_STRING stav_utoku
1068: PPUSH
1069: LD_INT 1
1071: PPUSH
1072: CALL_OW 30
1076: ST_TO_ADDR
// case RecklessAttack of 1 :
1077: LD_EXP 44
1081: PUSH
1082: LD_INT 1
1084: DOUBLE
1085: EQUAL
1086: IFTRUE 1090
1088: GO 1101
1090: POP
// RecklessAttack := false ; 2 :
1091: LD_ADDR_EXP 44
1095: PUSH
1096: LD_INT 0
1098: ST_TO_ADDR
1099: GO 1140
1101: LD_INT 2
1103: DOUBLE
1104: EQUAL
1105: IFTRUE 1109
1107: GO 1120
1109: POP
// RecklessAttack := false ; 3 :
1110: LD_ADDR_EXP 44
1114: PUSH
1115: LD_INT 0
1117: ST_TO_ADDR
1118: GO 1140
1120: LD_INT 3
1122: DOUBLE
1123: EQUAL
1124: IFTRUE 1128
1126: GO 1139
1128: POP
// RecklessAttack := true ; end ;
1129: LD_ADDR_EXP 44
1133: PUSH
1134: LD_INT 1
1136: ST_TO_ADDR
1137: GO 1140
1139: POP
// lab_upgraded := false ;
1140: LD_ADDR_EXP 53
1144: PUSH
1145: LD_INT 0
1147: ST_TO_ADDR
// workshop_upgraded := false ;
1148: LD_ADDR_EXP 54
1152: PUSH
1153: LD_INT 0
1155: ST_TO_ADDR
// depot_build := false ;
1156: LD_ADDR_EXP 55
1160: PUSH
1161: LD_INT 0
1163: ST_TO_ADDR
// player_building_captured := false ;
1164: LD_ADDR_EXP 61
1168: PUSH
1169: LD_INT 0
1171: ST_TO_ADDR
// pocet_budov := 0 ;
1172: LD_ADDR_EXP 62
1176: PUSH
1177: LD_INT 0
1179: ST_TO_ADDR
// Burlak_saved := false ;
1180: LD_ADDR_EXP 1
1184: PUSH
1185: LD_INT 0
1187: ST_TO_ADDR
// Gaydar_saved := false ;
1188: LD_ADDR_EXP 2
1192: PUSH
1193: LD_INT 0
1195: ST_TO_ADDR
// end ;
1196: LD_VAR 0 1
1200: RET
// function nacti_osobu ( ident ) ; begin
1201: LD_INT 0
1203: PPUSH
// if TestCharacters ( ident ) then
1204: LD_VAR 0 1
1208: PPUSH
1209: CALL_OW 28
1213: IFFALSE 1264
// if CheckCharacterSet ( ident ) = 1 then
1215: LD_VAR 0 1
1219: PPUSH
1220: CALL_OW 29
1224: PUSH
1225: LD_INT 1
1227: EQUAL
1228: IFFALSE 1247
// result := CreateCharacter ( ident ) else
1230: LD_ADDR_VAR 0 2
1234: PUSH
1235: LD_VAR 0 1
1239: PPUSH
1240: CALL_OW 34
1244: ST_TO_ADDR
1245: GO 1262
// result := CreateCharacterSet ( ident ) else
1247: LD_ADDR_VAR 0 2
1251: PUSH
1252: LD_VAR 0 1
1256: PPUSH
1257: CALL_OW 31
1261: ST_TO_ADDR
1262: GO 1272
// result := 0 ;
1264: LD_ADDR_VAR 0 2
1268: PUSH
1269: LD_INT 0
1271: ST_TO_ADDR
// end ;
1272: LD_VAR 0 2
1276: RET
// function create_people ; var def , i , x , y , fff ; begin
1277: LD_INT 0
1279: PPUSH
1280: PPUSH
1281: PPUSH
1282: PPUSH
1283: PPUSH
1284: PPUSH
// other := [ ] ;
1285: LD_ADDR_EXP 12
1289: PUSH
1290: EMPTY
1291: ST_TO_ADDR
// uc_side := arab ;
1292: LD_ADDR_OWVAR 20
1296: PUSH
1297: LD_EXP 6
1301: ST_TO_ADDR
// uc_nation := nation_arabian ;
1302: LD_ADDR_OWVAR 21
1306: PUSH
1307: LD_INT 2
1309: ST_TO_ADDR
// Heike := NewCharacter ( Heike ) ;
1310: LD_ADDR_EXP 28
1314: PUSH
1315: LD_STRING Heike
1317: PPUSH
1318: CALL_OW 25
1322: ST_TO_ADDR
// uc_side := ally ;
1323: LD_ADDR_OWVAR 20
1327: PUSH
1328: LD_EXP 5
1332: ST_TO_ADDR
// uc_nation := nation_russian ;
1333: LD_ADDR_OWVAR 21
1337: PUSH
1338: LD_INT 3
1340: ST_TO_ADDR
// Gaydar := NewCharacter ( Gaydar ) ;
1341: LD_ADDR_EXP 27
1345: PUSH
1346: LD_STRING Gaydar
1348: PPUSH
1349: CALL_OW 25
1353: ST_TO_ADDR
// Kuzmov := NewCharacter ( Kuzmov ) ;
1354: LD_ADDR_EXP 19
1358: PUSH
1359: LD_STRING Kuzmov
1361: PPUSH
1362: CALL_OW 25
1366: ST_TO_ADDR
// uc_side := you ;
1367: LD_ADDR_OWVAR 20
1371: PUSH
1372: LD_EXP 4
1376: ST_TO_ADDR
// uc_nation := nation_russian ;
1377: LD_ADDR_OWVAR 21
1381: PUSH
1382: LD_INT 3
1384: ST_TO_ADDR
// Burlak := nacti_osobu ( Burlak ) ;
1385: LD_ADDR_EXP 14
1389: PUSH
1390: LD_STRING Burlak
1392: PPUSH
1393: CALL 1201 0 1
1397: ST_TO_ADDR
// Gnyevko := nacti_osobu ( Gnyevko ) ;
1398: LD_ADDR_EXP 15
1402: PUSH
1403: LD_STRING Gnyevko
1405: PPUSH
1406: CALL 1201 0 1
1410: ST_TO_ADDR
// Belkov := nacti_osobu ( Belkov ) ;
1411: LD_ADDR_EXP 17
1415: PUSH
1416: LD_STRING Belkov
1418: PPUSH
1419: CALL 1201 0 1
1423: ST_TO_ADDR
// Scholtze := nacti_osobu ( Scholtze ) ;
1424: LD_ADDR_EXP 18
1428: PUSH
1429: LD_STRING Scholtze
1431: PPUSH
1432: CALL 1201 0 1
1436: ST_TO_ADDR
// Kovalyuk := nacti_osobu ( Kovalyuk ) ;
1437: LD_ADDR_EXP 20
1441: PUSH
1442: LD_STRING Kovalyuk
1444: PPUSH
1445: CALL 1201 0 1
1449: ST_TO_ADDR
// Popov := NewCharacter ( Popov ) ;
1450: LD_ADDR_EXP 26
1454: PUSH
1455: LD_STRING Popov
1457: PPUSH
1458: CALL_OW 25
1462: ST_TO_ADDR
// Platonov := NewCharacter ( Platonov ) ;
1463: LD_ADDR_EXP 16
1467: PUSH
1468: LD_STRING Platonov
1470: PPUSH
1471: CALL_OW 25
1475: ST_TO_ADDR
// other := nacti_osobu ( survivors1 ) ;
1476: LD_ADDR_EXP 12
1480: PUSH
1481: LD_STRING survivors1
1483: PPUSH
1484: CALL 1201 0 1
1488: ST_TO_ADDR
// PrepareHuman ( sex_male , class_soldier , 2 ) ;
1489: LD_INT 1
1491: PPUSH
1492: LD_INT 1
1494: PPUSH
1495: LD_INT 2
1497: PPUSH
1498: CALL_OW 380
// hc_name :=  ;
1502: LD_ADDR_OWVAR 26
1506: PUSH
1507: LD_STRING 
1509: ST_TO_ADDR
// Soldier1 := CreateHuman ;
1510: LD_ADDR_EXP 22
1514: PUSH
1515: CALL_OW 44
1519: ST_TO_ADDR
// PrepareHuman ( sex_male , class_soldier , 3 ) ;
1520: LD_INT 1
1522: PPUSH
1523: LD_INT 1
1525: PPUSH
1526: LD_INT 3
1528: PPUSH
1529: CALL_OW 380
// hc_name :=  ;
1533: LD_ADDR_OWVAR 26
1537: PUSH
1538: LD_STRING 
1540: ST_TO_ADDR
// SoldierX := CreateHuman ;
1541: LD_ADDR_EXP 21
1545: PUSH
1546: CALL_OW 44
1550: ST_TO_ADDR
// PrepareHuman ( sex_male , class_engineer , 3 ) ;
1551: LD_INT 1
1553: PPUSH
1554: LD_INT 2
1556: PPUSH
1557: LD_INT 3
1559: PPUSH
1560: CALL_OW 380
// hc_name :=  ;
1564: LD_ADDR_OWVAR 26
1568: PUSH
1569: LD_STRING 
1571: ST_TO_ADDR
// Scientist1 := CreateHuman ;
1572: LD_ADDR_EXP 23
1576: PUSH
1577: CALL_OW 44
1581: ST_TO_ADDR
// PrepareHuman ( sex_male , class_engineer , 2 ) ;
1582: LD_INT 1
1584: PPUSH
1585: LD_INT 2
1587: PPUSH
1588: LD_INT 2
1590: PPUSH
1591: CALL_OW 380
// hc_name :=  ;
1595: LD_ADDR_OWVAR 26
1599: PUSH
1600: LD_STRING 
1602: ST_TO_ADDR
// Engineer1 := CreateHuman ;
1603: LD_ADDR_EXP 24
1607: PUSH
1608: CALL_OW 44
1612: ST_TO_ADDR
// PrepareHuman ( sex_male , class_mechanic , 3 ) ;
1613: LD_INT 1
1615: PPUSH
1616: LD_INT 3
1618: PPUSH
1619: LD_INT 3
1621: PPUSH
1622: CALL_OW 380
// hc_name :=  ;
1626: LD_ADDR_OWVAR 26
1630: PUSH
1631: LD_STRING 
1633: ST_TO_ADDR
// Mechanic1 := CreateHuman ;
1634: LD_ADDR_EXP 25
1638: PUSH
1639: CALL_OW 44
1643: ST_TO_ADDR
// fff := ( [ Burlak , Gnyevko , Belkov , Scholtze , Kuzmov , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) diff [ 0 ] ;
1644: LD_ADDR_VAR 0 6
1648: PUSH
1649: LD_EXP 14
1653: PUSH
1654: LD_EXP 15
1658: PUSH
1659: LD_EXP 17
1663: PUSH
1664: LD_EXP 18
1668: PUSH
1669: LD_EXP 19
1673: PUSH
1674: LD_EXP 20
1678: PUSH
1679: LD_EXP 22
1683: PUSH
1684: LD_EXP 23
1688: PUSH
1689: LD_EXP 24
1693: PUSH
1694: LD_EXP 25
1698: PUSH
1699: EMPTY
1700: LIST
1701: LIST
1702: LIST
1703: LIST
1704: LIST
1705: LIST
1706: LIST
1707: LIST
1708: LIST
1709: LIST
1710: PUSH
1711: LD_EXP 12
1715: UNION
1716: PUSH
1717: LD_INT 0
1719: PUSH
1720: EMPTY
1721: LIST
1722: DIFF
1723: ST_TO_ADDR
// if fff < 14 then
1724: LD_VAR 0 6
1728: PUSH
1729: LD_INT 14
1731: LESS
1732: IFFALSE 1868
// for i := 1 to 14 - fff do
1734: LD_ADDR_VAR 0 3
1738: PUSH
1739: DOUBLE
1740: LD_INT 1
1742: DEC
1743: ST_TO_ADDR
1744: LD_INT 14
1746: PUSH
1747: LD_VAR 0 6
1751: MINUS
1752: PUSH
1753: FOR_TO
1754: IFFALSE 1866
// begin case Rand ( 1 , 3 ) of 1 :
1756: LD_INT 1
1758: PPUSH
1759: LD_INT 3
1761: PPUSH
1762: CALL_OW 12
1766: PUSH
1767: LD_INT 1
1769: DOUBLE
1770: EQUAL
1771: IFTRUE 1775
1773: GO 1791
1775: POP
// PrepareHuman ( 0 , class_mechanic , 2 ) ; 2 :
1776: LD_INT 0
1778: PPUSH
1779: LD_INT 3
1781: PPUSH
1782: LD_INT 2
1784: PPUSH
1785: CALL_OW 380
1789: GO 1840
1791: LD_INT 2
1793: DOUBLE
1794: EQUAL
1795: IFTRUE 1799
1797: GO 1815
1799: POP
// PrepareHuman ( 0 , class_engineer , 2 ) ; 3 :
1800: LD_INT 0
1802: PPUSH
1803: LD_INT 2
1805: PPUSH
1806: LD_INT 2
1808: PPUSH
1809: CALL_OW 380
1813: GO 1840
1815: LD_INT 3
1817: DOUBLE
1818: EQUAL
1819: IFTRUE 1823
1821: GO 1839
1823: POP
// PrepareHuman ( 0 , class_soldier , 2 ) ; end ;
1824: LD_INT 0
1826: PPUSH
1827: LD_INT 1
1829: PPUSH
1830: LD_INT 2
1832: PPUSH
1833: CALL_OW 380
1837: GO 1840
1839: POP
// hc_name :=  ;
1840: LD_ADDR_OWVAR 26
1844: PUSH
1845: LD_STRING 
1847: ST_TO_ADDR
// new := new ^ CreateHuman ;
1848: LD_ADDR_EXP 29
1852: PUSH
1853: LD_EXP 29
1857: PUSH
1858: CALL_OW 44
1862: ADD
1863: ST_TO_ADDR
// end ;
1864: GO 1753
1866: POP
1867: POP
// for un in ( ( [ Popov , Burlak , Gnyevko , Belkov , Scholtze , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) union new ) diff [ 0 ] do
1868: LD_ADDR_LOC 3
1872: PUSH
1873: LD_EXP 26
1877: PUSH
1878: LD_EXP 14
1882: PUSH
1883: LD_EXP 15
1887: PUSH
1888: LD_EXP 17
1892: PUSH
1893: LD_EXP 18
1897: PUSH
1898: LD_EXP 20
1902: PUSH
1903: LD_EXP 22
1907: PUSH
1908: LD_EXP 23
1912: PUSH
1913: LD_EXP 24
1917: PUSH
1918: LD_EXP 25
1922: PUSH
1923: EMPTY
1924: LIST
1925: LIST
1926: LIST
1927: LIST
1928: LIST
1929: LIST
1930: LIST
1931: LIST
1932: LIST
1933: LIST
1934: PUSH
1935: LD_EXP 12
1939: UNION
1940: PUSH
1941: LD_EXP 29
1945: UNION
1946: PUSH
1947: LD_INT 0
1949: PUSH
1950: EMPTY
1951: LIST
1952: DIFF
1953: PUSH
1954: FOR_IN
1955: IFFALSE 1980
// PlaceUnitXYR ( un , 102 , 3 , 7 , false ) ;
1957: LD_LOC 3
1961: PPUSH
1962: LD_INT 102
1964: PPUSH
1965: LD_INT 3
1967: PPUSH
1968: LD_INT 7
1970: PPUSH
1971: LD_INT 0
1973: PPUSH
1974: CALL_OW 50
1978: GO 1954
1980: POP
1981: POP
// PlaceUnitXYR ( Kuzmov , 92 , 75 , 10 , false ) ;
1982: LD_EXP 19
1986: PPUSH
1987: LD_INT 92
1989: PPUSH
1990: LD_INT 75
1992: PPUSH
1993: LD_INT 10
1995: PPUSH
1996: LD_INT 0
1998: PPUSH
1999: CALL_OW 50
// end ;
2003: LD_VAR 0 1
2007: RET
// function make_alliance ; var i , pom ; begin
2008: LD_INT 0
2010: PPUSH
2011: PPUSH
2012: PPUSH
// whole_units := ( ( [ Popov , Burlak , Gnyevko , Belkov , Scholtze , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) union new ) diff [ 0 ] ;
2013: LD_ADDR_LOC 4
2017: PUSH
2018: LD_EXP 26
2022: PUSH
2023: LD_EXP 14
2027: PUSH
2028: LD_EXP 15
2032: PUSH
2033: LD_EXP 17
2037: PUSH
2038: LD_EXP 18
2042: PUSH
2043: LD_EXP 20
2047: PUSH
2048: LD_EXP 22
2052: PUSH
2053: LD_EXP 23
2057: PUSH
2058: LD_EXP 24
2062: PUSH
2063: LD_EXP 25
2067: PUSH
2068: EMPTY
2069: LIST
2070: LIST
2071: LIST
2072: LIST
2073: LIST
2074: LIST
2075: LIST
2076: LIST
2077: LIST
2078: LIST
2079: PUSH
2080: LD_EXP 12
2084: UNION
2085: PUSH
2086: LD_EXP 29
2090: UNION
2091: PUSH
2092: LD_INT 0
2094: PUSH
2095: EMPTY
2096: LIST
2097: DIFF
2098: ST_TO_ADDR
// alliance := whole_units diff player_units ;
2099: LD_ADDR_EXP 13
2103: PUSH
2104: LD_LOC 4
2108: PUSH
2109: LD_EXP 30
2113: DIFF
2114: ST_TO_ADDR
// SetSide ( alliance , ally ) ;
2115: LD_EXP 13
2119: PPUSH
2120: LD_EXP 5
2124: PPUSH
2125: CALL_OW 235
// end ;
2129: LD_VAR 0 1
2133: RET
// function alliance_go_away ; var points , waypoints ; begin
2134: LD_INT 0
2136: PPUSH
2137: PPUSH
2138: PPUSH
// waypoints := [ [ 98 , 6 ] , [ 94 , 9 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 81 , 18 ] , [ 80 , 23 ] , [ 86 , 34 ] , [ 96 , 45 ] , [ 108 , 56 ] , [ 113 , 62 ] , [ 119 , 73 ] , [ 121 , 79 ] , [ 122 , 89 ] , [ 123 , 98 ] , [ 122 , 108 ] , [ 115 , 113 ] , [ 91 , 114 ] , [ 73 , 113 ] , [ 71 , 115 ] , [ 71 , 129 ] , [ 73 , 138 ] ] ;
2139: LD_ADDR_VAR 0 3
2143: PUSH
2144: LD_INT 98
2146: PUSH
2147: LD_INT 6
2149: PUSH
2150: EMPTY
2151: LIST
2152: LIST
2153: PUSH
2154: LD_INT 94
2156: PUSH
2157: LD_INT 9
2159: PUSH
2160: EMPTY
2161: LIST
2162: LIST
2163: PUSH
2164: LD_INT 90
2166: PUSH
2167: LD_INT 14
2169: PUSH
2170: EMPTY
2171: LIST
2172: LIST
2173: PUSH
2174: LD_INT 87
2176: PUSH
2177: LD_INT 17
2179: PUSH
2180: EMPTY
2181: LIST
2182: LIST
2183: PUSH
2184: LD_INT 81
2186: PUSH
2187: LD_INT 18
2189: PUSH
2190: EMPTY
2191: LIST
2192: LIST
2193: PUSH
2194: LD_INT 80
2196: PUSH
2197: LD_INT 23
2199: PUSH
2200: EMPTY
2201: LIST
2202: LIST
2203: PUSH
2204: LD_INT 86
2206: PUSH
2207: LD_INT 34
2209: PUSH
2210: EMPTY
2211: LIST
2212: LIST
2213: PUSH
2214: LD_INT 96
2216: PUSH
2217: LD_INT 45
2219: PUSH
2220: EMPTY
2221: LIST
2222: LIST
2223: PUSH
2224: LD_INT 108
2226: PUSH
2227: LD_INT 56
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: PUSH
2234: LD_INT 113
2236: PUSH
2237: LD_INT 62
2239: PUSH
2240: EMPTY
2241: LIST
2242: LIST
2243: PUSH
2244: LD_INT 119
2246: PUSH
2247: LD_INT 73
2249: PUSH
2250: EMPTY
2251: LIST
2252: LIST
2253: PUSH
2254: LD_INT 121
2256: PUSH
2257: LD_INT 79
2259: PUSH
2260: EMPTY
2261: LIST
2262: LIST
2263: PUSH
2264: LD_INT 122
2266: PUSH
2267: LD_INT 89
2269: PUSH
2270: EMPTY
2271: LIST
2272: LIST
2273: PUSH
2274: LD_INT 123
2276: PUSH
2277: LD_INT 98
2279: PUSH
2280: EMPTY
2281: LIST
2282: LIST
2283: PUSH
2284: LD_INT 122
2286: PUSH
2287: LD_INT 108
2289: PUSH
2290: EMPTY
2291: LIST
2292: LIST
2293: PUSH
2294: LD_INT 115
2296: PUSH
2297: LD_INT 113
2299: PUSH
2300: EMPTY
2301: LIST
2302: LIST
2303: PUSH
2304: LD_INT 91
2306: PUSH
2307: LD_INT 114
2309: PUSH
2310: EMPTY
2311: LIST
2312: LIST
2313: PUSH
2314: LD_INT 73
2316: PUSH
2317: LD_INT 113
2319: PUSH
2320: EMPTY
2321: LIST
2322: LIST
2323: PUSH
2324: LD_INT 71
2326: PUSH
2327: LD_INT 115
2329: PUSH
2330: EMPTY
2331: LIST
2332: LIST
2333: PUSH
2334: LD_INT 71
2336: PUSH
2337: LD_INT 129
2339: PUSH
2340: EMPTY
2341: LIST
2342: LIST
2343: PUSH
2344: LD_INT 73
2346: PUSH
2347: LD_INT 138
2349: PUSH
2350: EMPTY
2351: LIST
2352: LIST
2353: PUSH
2354: EMPTY
2355: LIST
2356: LIST
2357: LIST
2358: LIST
2359: LIST
2360: LIST
2361: LIST
2362: LIST
2363: LIST
2364: LIST
2365: LIST
2366: LIST
2367: LIST
2368: LIST
2369: LIST
2370: LIST
2371: LIST
2372: LIST
2373: LIST
2374: LIST
2375: LIST
2376: ST_TO_ADDR
// for points in waypoints do
2377: LD_ADDR_VAR 0 2
2381: PUSH
2382: LD_VAR 0 3
2386: PUSH
2387: FOR_IN
2388: IFFALSE 2419
// AddComMoveXY ( alliance , points [ 1 ] , points [ 2 ] ) ;
2390: LD_EXP 13
2394: PPUSH
2395: LD_VAR 0 2
2399: PUSH
2400: LD_INT 1
2402: ARRAY
2403: PPUSH
2404: LD_VAR 0 2
2408: PUSH
2409: LD_INT 2
2411: ARRAY
2412: PPUSH
2413: CALL_OW 171
2417: GO 2387
2419: POP
2420: POP
// end ;
2421: LD_VAR 0 1
2425: RET
// function select_people ; var units ; begin
2426: LD_INT 0
2428: PPUSH
2429: PPUSH
// units := [ sel_hired , sel_not_changeable , sel_change_class , Burlak ] ^ [ sel_not_hired , sel_not_changeable , sel_dont_change_class , Popov ] ^ [ sel_not_hired , sel_changeable , sel_change_class , Scholtze , Gnyevko , Belkov , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] ^ new ^ other ;
2430: LD_ADDR_VAR 0 2
2434: PUSH
2435: LD_INT -1
2437: PUSH
2438: LD_INT -4
2440: PUSH
2441: LD_INT -5
2443: PUSH
2444: LD_EXP 14
2448: PUSH
2449: EMPTY
2450: LIST
2451: LIST
2452: LIST
2453: LIST
2454: PUSH
2455: LD_INT -2
2457: PUSH
2458: LD_INT -4
2460: PUSH
2461: LD_INT -6
2463: PUSH
2464: LD_EXP 26
2468: PUSH
2469: EMPTY
2470: LIST
2471: LIST
2472: LIST
2473: LIST
2474: ADD
2475: PUSH
2476: LD_INT -2
2478: PUSH
2479: LD_INT -3
2481: PUSH
2482: LD_INT -5
2484: PUSH
2485: LD_EXP 18
2489: PUSH
2490: LD_EXP 15
2494: PUSH
2495: LD_EXP 17
2499: PUSH
2500: LD_EXP 20
2504: PUSH
2505: LD_EXP 22
2509: PUSH
2510: LD_EXP 23
2514: PUSH
2515: LD_EXP 24
2519: PUSH
2520: LD_EXP 25
2524: PUSH
2525: EMPTY
2526: LIST
2527: LIST
2528: LIST
2529: LIST
2530: LIST
2531: LIST
2532: LIST
2533: LIST
2534: LIST
2535: LIST
2536: LIST
2537: ADD
2538: PUSH
2539: LD_EXP 29
2543: ADD
2544: PUSH
2545: LD_EXP 12
2549: ADD
2550: ST_TO_ADDR
// player_units := [ Burlak , Kuzmov ] union CharacterSelection ( Select 8 characters to go with you , 8 , 8 , units , [ class_soldier , class_mechanic , [ class_engineer , 1 ] , class_scientistic ] ) ;
2551: LD_ADDR_EXP 30
2555: PUSH
2556: LD_EXP 14
2560: PUSH
2561: LD_EXP 19
2565: PUSH
2566: EMPTY
2567: LIST
2568: LIST
2569: PUSH
2570: LD_STRING Select 8 characters to go with you
2572: PPUSH
2573: LD_INT 8
2575: PPUSH
2576: LD_INT 8
2578: PPUSH
2579: LD_VAR 0 2
2583: PPUSH
2584: LD_INT 1
2586: PUSH
2587: LD_INT 3
2589: PUSH
2590: LD_INT 2
2592: PUSH
2593: LD_INT 1
2595: PUSH
2596: EMPTY
2597: LIST
2598: LIST
2599: PUSH
2600: LD_INT 4
2602: PUSH
2603: EMPTY
2604: LIST
2605: LIST
2606: LIST
2607: LIST
2608: PPUSH
2609: CALL_OW 42
2613: UNION
2614: ST_TO_ADDR
// end ;
2615: LD_VAR 0 1
2619: RET
// export function create_gaydar ; begin
2620: LD_INT 0
2622: PPUSH
// PlaceUnitXYR ( Gaydar , 17 , 1 , 3 , false ) ;
2623: LD_EXP 27
2627: PPUSH
2628: LD_INT 17
2630: PPUSH
2631: LD_INT 1
2633: PPUSH
2634: LD_INT 3
2636: PPUSH
2637: LD_INT 0
2639: PPUSH
2640: CALL_OW 50
// ComMoveXY ( Gaydar , 23 , 10 ) ;
2644: LD_EXP 27
2648: PPUSH
2649: LD_INT 23
2651: PPUSH
2652: LD_INT 10
2654: PPUSH
2655: CALL_OW 111
// enable ( 15 ) ;
2659: LD_INT 15
2661: ENABLE_MARKED
// Dialogue10 ;
2662: CALL 7946 0 0
// repeat Wait ( 0 0$1 ) ;
2666: LD_INT 35
2668: PPUSH
2669: CALL_OW 67
// if GetSide ( Gaydar ) = you then
2673: LD_EXP 27
2677: PPUSH
2678: CALL_OW 255
2682: PUSH
2683: LD_EXP 4
2687: EQUAL
2688: IFFALSE 2692
// exit ;
2690: GO 2848
// until Attacks ( Gaydar ) = 0 ;
2692: LD_EXP 27
2696: PPUSH
2697: CALL_OW 320
2701: PUSH
2702: LD_INT 0
2704: EQUAL
2705: IFFALSE 2666
// ComMoveXY ( Gaydar , 27 , 16 ) ;
2707: LD_EXP 27
2711: PPUSH
2712: LD_INT 27
2714: PPUSH
2715: LD_INT 16
2717: PPUSH
2718: CALL_OW 111
// Wait ( 0 0$30 ) ;
2722: LD_INT 1050
2724: PPUSH
2725: CALL_OW 67
// repeat Wait ( 0 0$1 ) ;
2729: LD_INT 35
2731: PPUSH
2732: CALL_OW 67
// if GetSide ( Gaydar ) = you then
2736: LD_EXP 27
2740: PPUSH
2741: CALL_OW 255
2745: PUSH
2746: LD_EXP 4
2750: EQUAL
2751: IFFALSE 2755
// exit ;
2753: GO 2848
// until Attacks ( Gaydar ) = 0 ;
2755: LD_EXP 27
2759: PPUSH
2760: CALL_OW 320
2764: PUSH
2765: LD_INT 0
2767: EQUAL
2768: IFFALSE 2729
// ComMoveXY ( Gaydar , 33 , 30 ) ;
2770: LD_EXP 27
2774: PPUSH
2775: LD_INT 33
2777: PPUSH
2778: LD_INT 30
2780: PPUSH
2781: CALL_OW 111
// Wait ( 0 0$30 ) ;
2785: LD_INT 1050
2787: PPUSH
2788: CALL_OW 67
// repeat Wait ( 0 0$1 ) ;
2792: LD_INT 35
2794: PPUSH
2795: CALL_OW 67
// if GetSide ( Gaydar ) = you then
2799: LD_EXP 27
2803: PPUSH
2804: CALL_OW 255
2808: PUSH
2809: LD_EXP 4
2813: EQUAL
2814: IFFALSE 2818
// exit ;
2816: GO 2848
// until Attacks ( Gaydar ) = 0 ;
2818: LD_EXP 27
2822: PPUSH
2823: CALL_OW 320
2827: PUSH
2828: LD_INT 0
2830: EQUAL
2831: IFFALSE 2792
// ComMoveXY ( Gaydar , 27 , 47 ) ;
2833: LD_EXP 27
2837: PPUSH
2838: LD_INT 27
2840: PPUSH
2841: LD_INT 47
2843: PPUSH
2844: CALL_OW 111
// end ;
2848: LD_VAR 0 1
2852: RET
// starting begin FogOff ( false ) ;
2853: LD_INT 0
2855: PPUSH
2856: CALL_OW 344
// InitBc ;
2860: CALL_OW 21
// InitHc ;
2864: CALL_OW 19
// InitUc ;
2868: CALL_OW 18
// InitVc ;
2872: CALL_OW 20
// IngameOn ;
2876: CALL_OW 8
// disable ( 2 ) ;
2880: LD_INT 2
2882: DISABLE_MARKED
// disable ( 3 ) ;
2883: LD_INT 3
2885: DISABLE_MARKED
// disable ( 4 ) ;
2886: LD_INT 4
2888: DISABLE_MARKED
// disable ( 5 ) ;
2889: LD_INT 5
2891: DISABLE_MARKED
// disable ( 6 ) ;
2892: LD_INT 6
2894: DISABLE_MARKED
// disable ( 7 ) ;
2895: LD_INT 7
2897: DISABLE_MARKED
// disable ( 8 ) ;
2898: LD_INT 8
2900: DISABLE_MARKED
// disable ( 9 ) ;
2901: LD_INT 9
2903: DISABLE_MARKED
// disable ( 10 ) ;
2904: LD_INT 10
2906: DISABLE_MARKED
// disable ( 11 ) ;
2907: LD_INT 11
2909: DISABLE_MARKED
// disable ( 12 ) ;
2910: LD_INT 12
2912: DISABLE_MARKED
// disable ( 13 ) ;
2913: LD_INT 13
2915: DISABLE_MARKED
// disable ( 14 ) ;
2916: LD_INT 14
2918: DISABLE_MARKED
// disable ( 15 ) ;
2919: LD_INT 15
2921: DISABLE_MARKED
// disable ( 16 ) ;
2922: LD_INT 16
2924: DISABLE_MARKED
// disable ( 17 ) ;
2925: LD_INT 17
2927: DISABLE_MARKED
// disable ( 18 ) ;
2928: LD_INT 18
2930: DISABLE_MARKED
// disable ( 19 ) ;
2931: LD_INT 19
2933: DISABLE_MARKED
// Randomize ;
2934: CALL_OW 10
// RandomizeAll ;
2938: CALL_OW 11
// set_difficulty ;
2942: CALL 0 0 0
// read_parameters ;
2946: CALL 828 0 0
// prepare_convoy ;
2950: CALL 8247 0 0
// prepare_arabian_attack ;
2954: CALL 12125 0 0
// prepare_small_arabian_attack ;
2958: CALL 14525 0 0
// create_people ;
2962: CALL 1277 0 0
// CenterNowOnXY ( 102 , 3 ) ;
2966: LD_INT 102
2968: PPUSH
2969: LD_INT 3
2971: PPUSH
2972: CALL_OW 86
// Wait ( 0 0$2 ) ;
2976: LD_INT 70
2978: PPUSH
2979: CALL_OW 67
// Dialogue1 ;
2983: CALL 5534 0 0
// select_people ;
2987: CALL 2426 0 0
// ChangeMissionObjectives ( M1 ) ;
2991: LD_STRING M1
2993: PPUSH
2994: CALL_OW 337
// make_alliance ;
2998: CALL 2008 0 0
// SaveForQuickRestart ;
3002: CALL_OW 22
// IngameOff ;
3006: CALL_OW 9
// alliance_go_away ;
3010: CALL 2134 0 0
// end ;
3014: END
// export function konec_mise ; var pom , pom1 , i , all_people , drv , filter , medal1 , medal2 , medal3 ; begin
3015: LD_INT 0
3017: PPUSH
3018: PPUSH
3019: PPUSH
3020: PPUSH
3021: PPUSH
3022: PPUSH
3023: PPUSH
3024: PPUSH
3025: PPUSH
3026: PPUSH
// medal1 := false ;
3027: LD_ADDR_VAR 0 8
3031: PUSH
3032: LD_INT 0
3034: ST_TO_ADDR
// medal2 := false ;
3035: LD_ADDR_VAR 0 9
3039: PUSH
3040: LD_INT 0
3042: ST_TO_ADDR
// medal3 := false ;
3043: LD_ADDR_VAR 0 10
3047: PUSH
3048: LD_INT 0
3050: ST_TO_ADDR
// Wait ( 0 0$1 ) ;
3051: LD_INT 35
3053: PPUSH
3054: CALL_OW 67
// gained_medals := [ ] ;
3058: LD_ADDR_OWVAR 61
3062: PUSH
3063: EMPTY
3064: ST_TO_ADDR
// missing_medals := [ ] ;
3065: LD_ADDR_OWVAR 62
3069: PUSH
3070: EMPTY
3071: ST_TO_ADDR
// saved_player_units := UnitFilter ( saved_player_units , [ f_not , [ f_or , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] ] ] ) ;
3072: LD_ADDR_EXP 31
3076: PUSH
3077: LD_EXP 31
3081: PPUSH
3082: LD_INT 3
3084: PUSH
3085: LD_INT 2
3087: PUSH
3088: LD_INT 25
3090: PUSH
3091: LD_INT 16
3093: PUSH
3094: EMPTY
3095: LIST
3096: LIST
3097: PUSH
3098: LD_INT 25
3100: PUSH
3101: LD_INT 15
3103: PUSH
3104: EMPTY
3105: LIST
3106: LIST
3107: PUSH
3108: EMPTY
3109: LIST
3110: LIST
3111: LIST
3112: PUSH
3113: EMPTY
3114: LIST
3115: LIST
3116: PPUSH
3117: CALL_OW 72
3121: ST_TO_ADDR
// if ( 0 + saved_player_units ) >= 9 then
3122: LD_INT 0
3124: PUSH
3125: LD_EXP 31
3129: PLUS
3130: PUSH
3131: LD_INT 9
3133: GREATEREQUAL
3134: IFFALSE 3156
// begin medal1 := true ;
3136: LD_ADDR_VAR 0 8
3140: PUSH
3141: LD_INT 1
3143: ST_TO_ADDR
// AddMedal ( LittleLosses , 1 ) ;
3144: LD_STRING LittleLosses
3146: PPUSH
3147: LD_INT 1
3149: PPUSH
3150: CALL_OW 101
// end else
3154: GO 3167
// AddMedal ( LittleLosses , - 1 ) ;
3156: LD_STRING LittleLosses
3158: PPUSH
3159: LD_INT 1
3161: NEG
3162: PPUSH
3163: CALL_OW 101
// if ar_killed >= waypointsEND - 3 then
3167: LD_EXP 50
3171: PUSH
3172: LD_EXP 63
3176: PUSH
3177: LD_INT 3
3179: MINUS
3180: GREATEREQUAL
3181: IFFALSE 3203
// begin medal2 := true ;
3183: LD_ADDR_VAR 0 9
3187: PUSH
3188: LD_INT 1
3190: ST_TO_ADDR
// AddMedal ( EnemyLosses , 1 ) ;
3191: LD_STRING EnemyLosses
3193: PPUSH
3194: LD_INT 1
3196: PPUSH
3197: CALL_OW 101
// end else
3201: GO 3214
// AddMedal ( EnemyLosses , - 1 ) ;
3203: LD_STRING EnemyLosses
3205: PPUSH
3206: LD_INT 1
3208: NEG
3209: PPUSH
3210: CALL_OW 101
// filter := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_not , [ f_or , [ f_btype , b_oil_power ] , [ f_btype , b_oil_mine ] , [ f_btype , b_bunker ] ] ] ] ) ;
3214: LD_ADDR_VAR 0 7
3218: PUSH
3219: LD_INT 21
3221: PUSH
3222: LD_INT 3
3224: PUSH
3225: EMPTY
3226: LIST
3227: LIST
3228: PUSH
3229: LD_INT 3
3231: PUSH
3232: LD_INT 2
3234: PUSH
3235: LD_INT 30
3237: PUSH
3238: LD_INT 26
3240: PUSH
3241: EMPTY
3242: LIST
3243: LIST
3244: PUSH
3245: LD_INT 30
3247: PUSH
3248: LD_INT 29
3250: PUSH
3251: EMPTY
3252: LIST
3253: LIST
3254: PUSH
3255: LD_INT 30
3257: PUSH
3258: LD_INT 32
3260: PUSH
3261: EMPTY
3262: LIST
3263: LIST
3264: PUSH
3265: EMPTY
3266: LIST
3267: LIST
3268: LIST
3269: LIST
3270: PUSH
3271: EMPTY
3272: LIST
3273: LIST
3274: PUSH
3275: EMPTY
3276: LIST
3277: LIST
3278: PPUSH
3279: CALL_OW 69
3283: ST_TO_ADDR
// if filter = 0 then
3284: LD_VAR 0 7
3288: PUSH
3289: LD_INT 0
3291: EQUAL
3292: IFFALSE 3314
// begin medal3 := true ;
3294: LD_ADDR_VAR 0 10
3298: PUSH
3299: LD_INT 1
3301: ST_TO_ADDR
// AddMedal ( Dismantle , 1 ) ;
3302: LD_STRING Dismantle
3304: PPUSH
3305: LD_INT 1
3307: PPUSH
3308: CALL_OW 101
// end else
3312: GO 3325
// AddMedal ( Dismantle , - 1 ) ;
3314: LD_STRING Dismantle
3316: PPUSH
3317: LD_INT 1
3319: NEG
3320: PPUSH
3321: CALL_OW 101
// SA_EndMission ( 3 , 4 , medal1 , medal2 , medal3 ) ;
3325: LD_INT 3
3327: PPUSH
3328: LD_INT 4
3330: PPUSH
3331: LD_VAR 0 8
3335: PPUSH
3336: LD_VAR 0 9
3340: PPUSH
3341: LD_VAR 0 10
3345: PPUSH
3346: CALL 15955 0 5
// GiveMedals ( Main ) ;
3350: LD_STRING Main
3352: PPUSH
3353: CALL_OW 102
// RewardPeople ( saved_player_units ) ;
3357: LD_EXP 31
3361: PPUSH
3362: CALL_OW 43
// SaveCharacters ( Burlak , Burlak ) ;
3366: LD_EXP 14
3370: PPUSH
3371: LD_STRING Burlak
3373: PPUSH
3374: CALL_OW 38
// SaveCharacters ( Gnyevko , Gnyevko ) ;
3378: LD_EXP 15
3382: PPUSH
3383: LD_STRING Gnyevko
3385: PPUSH
3386: CALL_OW 38
// SaveCharacters ( Kovalyuk , Kovalyuk ) ;
3390: LD_EXP 20
3394: PPUSH
3395: LD_STRING Kovalyuk
3397: PPUSH
3398: CALL_OW 38
// SaveCharacters ( Belkov , Belkov ) ;
3402: LD_EXP 17
3406: PPUSH
3407: LD_STRING Belkov
3409: PPUSH
3410: CALL_OW 38
// SaveCharacters ( Scholtze , Scholtze ) ;
3414: LD_EXP 18
3418: PPUSH
3419: LD_STRING Scholtze
3421: PPUSH
3422: CALL_OW 38
// SaveCharacters ( Kuzmov , Kuzmov ) ;
3426: LD_EXP 19
3430: PPUSH
3431: LD_STRING Kuzmov
3433: PPUSH
3434: CALL_OW 38
// SaveCharacters ( Gaydar , Gaydar ) ;
3438: LD_EXP 27
3442: PPUSH
3443: LD_STRING Gaydar
3445: PPUSH
3446: CALL_OW 38
// SaveCharacters ( ( other union new ) diff [ Burlak , Belkov , Gnyevko , Platonov , Kovalyuk , Popov , Scholtze , Kuzmov , Gaydar ] , survivors1 ) ;
3450: LD_EXP 12
3454: PUSH
3455: LD_EXP 29
3459: UNION
3460: PUSH
3461: LD_EXP 14
3465: PUSH
3466: LD_EXP 17
3470: PUSH
3471: LD_EXP 15
3475: PUSH
3476: LD_EXP 16
3480: PUSH
3481: LD_EXP 20
3485: PUSH
3486: LD_EXP 26
3490: PUSH
3491: LD_EXP 18
3495: PUSH
3496: LD_EXP 19
3500: PUSH
3501: LD_EXP 27
3505: PUSH
3506: EMPTY
3507: LIST
3508: LIST
3509: LIST
3510: LIST
3511: LIST
3512: LIST
3513: LIST
3514: LIST
3515: LIST
3516: DIFF
3517: PPUSH
3518: LD_STRING survivors1
3520: PPUSH
3521: CALL_OW 38
// YouWin ;
3525: CALL_OW 103
// exit ;
3529: GO 3531
// end ; end_of_file
3531: LD_VAR 0 1
3535: RET
// every 0 0$0.8 do var qqq , i , un , my_filter ;
3536: GO 3538
3538: DISABLE
3539: LD_INT 0
3541: PPUSH
3542: PPUSH
3543: PPUSH
3544: PPUSH
// begin if konec then
3545: LD_EXP 43
3549: IFFALSE 3637
// my_filter := FilterUnitsInArea ( ExitArea , [ [ f_or , [ f_side , you ] , [ f_side , ally ] ] , [ f_not , [ f_or , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] ] ] ] ) else
3551: LD_ADDR_VAR 0 4
3555: PUSH
3556: LD_INT 1
3558: PPUSH
3559: LD_INT 2
3561: PUSH
3562: LD_INT 22
3564: PUSH
3565: LD_EXP 4
3569: PUSH
3570: EMPTY
3571: LIST
3572: LIST
3573: PUSH
3574: LD_INT 22
3576: PUSH
3577: LD_EXP 5
3581: PUSH
3582: EMPTY
3583: LIST
3584: LIST
3585: PUSH
3586: EMPTY
3587: LIST
3588: LIST
3589: LIST
3590: PUSH
3591: LD_INT 3
3593: PUSH
3594: LD_INT 2
3596: PUSH
3597: LD_INT 25
3599: PUSH
3600: LD_INT 16
3602: PUSH
3603: EMPTY
3604: LIST
3605: LIST
3606: PUSH
3607: LD_INT 25
3609: PUSH
3610: LD_INT 15
3612: PUSH
3613: EMPTY
3614: LIST
3615: LIST
3616: PUSH
3617: EMPTY
3618: LIST
3619: LIST
3620: LIST
3621: PUSH
3622: EMPTY
3623: LIST
3624: LIST
3625: PUSH
3626: EMPTY
3627: LIST
3628: LIST
3629: PPUSH
3630: CALL_OW 70
3634: ST_TO_ADDR
3635: GO 3662
// my_filter := FilterUnitsInArea ( ExitArea , [ f_side , ally ] ) ;
3637: LD_ADDR_VAR 0 4
3641: PUSH
3642: LD_INT 1
3644: PPUSH
3645: LD_INT 22
3647: PUSH
3648: LD_EXP 5
3652: PUSH
3653: EMPTY
3654: LIST
3655: LIST
3656: PPUSH
3657: CALL_OW 70
3661: ST_TO_ADDR
// if my_filter + 0 > 0 then
3662: LD_VAR 0 4
3666: PUSH
3667: LD_INT 0
3669: PLUS
3670: PUSH
3671: LD_INT 0
3673: GREATER
3674: IFFALSE 3947
// for un in my_filter do
3676: LD_ADDR_VAR 0 3
3680: PUSH
3681: LD_VAR 0 4
3685: PUSH
3686: FOR_IN
3687: IFFALSE 3945
// begin if un = Platonov then
3689: LD_VAR 0 3
3693: PUSH
3694: LD_EXP 16
3698: EQUAL
3699: IFFALSE 3726
// begin my_filter := my_filter diff Platonov ;
3701: LD_ADDR_VAR 0 4
3705: PUSH
3706: LD_VAR 0 4
3710: PUSH
3711: LD_EXP 16
3715: DIFF
3716: ST_TO_ADDR
// RemoveUnit ( Platonov ) ;
3717: LD_EXP 16
3721: PPUSH
3722: CALL_OW 64
// end ; if un = Burlak or ( IsDrivenBy ( un ) = Burlak ) then
3726: LD_VAR 0 3
3730: PUSH
3731: LD_EXP 14
3735: EQUAL
3736: PUSH
3737: LD_VAR 0 3
3741: PPUSH
3742: CALL_OW 311
3746: PUSH
3747: LD_EXP 14
3751: EQUAL
3752: OR
3753: IFFALSE 3763
// begin Burlak_saved := true ;
3755: LD_ADDR_EXP 1
3759: PUSH
3760: LD_INT 1
3762: ST_TO_ADDR
// end ; if un = Gaydar or ( IsDrivenBy ( un ) = Gaydar ) then
3763: LD_VAR 0 3
3767: PUSH
3768: LD_EXP 27
3772: EQUAL
3773: PUSH
3774: LD_VAR 0 3
3778: PPUSH
3779: CALL_OW 311
3783: PUSH
3784: LD_EXP 27
3788: EQUAL
3789: OR
3790: IFFALSE 3807
// begin Gaydar_saved := true ;
3792: LD_ADDR_EXP 2
3796: PUSH
3797: LD_INT 1
3799: ST_TO_ADDR
// ChangeMissionObjectives ( MOutGaydar ) ;
3800: LD_STRING MOutGaydar
3802: PPUSH
3803: CALL_OW 337
// end ; if konec then
3807: LD_EXP 43
3811: IFFALSE 3943
// begin if GetType ( un ) = unit_vehicle and GetSide ( IsDrivenBy ( un ) ) = you and not GetNation ( IsDrivenBy ( un ) ) = nation_nature then
3813: LD_VAR 0 3
3817: PPUSH
3818: CALL_OW 247
3822: PUSH
3823: LD_INT 2
3825: EQUAL
3826: PUSH
3827: LD_VAR 0 3
3831: PPUSH
3832: CALL_OW 311
3836: PPUSH
3837: CALL_OW 255
3841: PUSH
3842: LD_EXP 4
3846: EQUAL
3847: AND
3848: PUSH
3849: LD_VAR 0 3
3853: PPUSH
3854: CALL_OW 311
3858: PPUSH
3859: CALL_OW 248
3863: PUSH
3864: LD_INT 0
3866: EQUAL
3867: NOT
3868: AND
3869: IFFALSE 3894
// saved_player_units := saved_player_units union IsDrivenBy ( un ) else
3871: LD_ADDR_EXP 31
3875: PUSH
3876: LD_EXP 31
3880: PUSH
3881: LD_VAR 0 3
3885: PPUSH
3886: CALL_OW 311
3890: UNION
3891: ST_TO_ADDR
3892: GO 3943
// if GetSide ( un ) = you and not GetNation ( un ) = nation_nature then
3894: LD_VAR 0 3
3898: PPUSH
3899: CALL_OW 255
3903: PUSH
3904: LD_EXP 4
3908: EQUAL
3909: PUSH
3910: LD_VAR 0 3
3914: PPUSH
3915: CALL_OW 248
3919: PUSH
3920: LD_INT 0
3922: EQUAL
3923: NOT
3924: AND
3925: IFFALSE 3943
// saved_player_units := saved_player_units union un ;
3927: LD_ADDR_EXP 31
3931: PUSH
3932: LD_EXP 31
3936: PUSH
3937: LD_VAR 0 3
3941: UNION
3942: ST_TO_ADDR
// end ; end ;
3943: GO 3686
3945: POP
3946: POP
// for un in player_units do
3947: LD_ADDR_VAR 0 3
3951: PUSH
3952: LD_EXP 30
3956: PUSH
3957: FOR_IN
3958: IFFALSE 3989
// if IsDead ( un ) then
3960: LD_VAR 0 3
3964: PPUSH
3965: CALL_OW 301
3969: IFFALSE 3987
// player_units := player_units diff un ;
3971: LD_ADDR_EXP 30
3975: PUSH
3976: LD_EXP 30
3980: PUSH
3981: LD_VAR 0 3
3985: DIFF
3986: ST_TO_ADDR
3987: GO 3957
3989: POP
3990: POP
// for un in my_filter do
3991: LD_ADDR_VAR 0 3
3995: PUSH
3996: LD_VAR 0 4
4000: PUSH
4001: FOR_IN
4002: IFFALSE 4092
// begin if GetType ( un ) = unit_vehicle then
4004: LD_VAR 0 3
4008: PPUSH
4009: CALL_OW 247
4013: PUSH
4014: LD_INT 2
4016: EQUAL
4017: IFFALSE 4065
// begin player_units := player_units diff ( IsDrivenBy ( un ) ) ;
4019: LD_ADDR_EXP 30
4023: PUSH
4024: LD_EXP 30
4028: PUSH
4029: LD_VAR 0 3
4033: PPUSH
4034: CALL_OW 311
4038: DIFF
4039: ST_TO_ADDR
// RemoveUnit ( IsDrivenBy ( un ) ) ;
4040: LD_VAR 0 3
4044: PPUSH
4045: CALL_OW 311
4049: PPUSH
4050: CALL_OW 64
// RemoveUnit ( un ) ;
4054: LD_VAR 0 3
4058: PPUSH
4059: CALL_OW 64
// end else
4063: GO 4090
// begin player_units := player_units diff un ;
4065: LD_ADDR_EXP 30
4069: PUSH
4070: LD_EXP 30
4074: PUSH
4075: LD_VAR 0 3
4079: DIFF
4080: ST_TO_ADDR
// RemoveUnit ( un ) ;
4081: LD_VAR 0 3
4085: PPUSH
4086: CALL_OW 64
// end ; end ;
4090: GO 4001
4092: POP
4093: POP
// if Burlak_saved and Gaydar_saved and player_units = 0 then
4094: LD_EXP 1
4098: PUSH
4099: LD_EXP 2
4103: AND
4104: PUSH
4105: LD_EXP 30
4109: PUSH
4110: LD_INT 0
4112: EQUAL
4113: AND
4114: IFFALSE 4120
// konec_mise ;
4116: CALL 3015 0 0
// enable ;
4120: ENABLE
// end ;
4121: PPOPN 4
4123: END
// every 0 0$1 + 0 0$0.4 marked 5 do var un ;
4124: GO 4126
4126: DISABLE
4127: LD_INT 0
4129: PPUSH
// begin enable ;
4130: ENABLE
// for un in player_units do
4131: LD_ADDR_VAR 0 1
4135: PUSH
4136: LD_EXP 30
4140: PUSH
4141: FOR_IN
4142: IFFALSE 4196
// if GetDistUnits ( un , Gaydar ) <= 5 then
4144: LD_VAR 0 1
4148: PPUSH
4149: LD_EXP 27
4153: PPUSH
4154: CALL_OW 296
4158: PUSH
4159: LD_INT 5
4161: LESSEQUAL
4162: IFFALSE 4194
// begin disable ( 5 ) ;
4164: LD_INT 5
4166: DISABLE_MARKED
// SetSide ( Gaydar , you ) ;
4167: LD_EXP 27
4171: PPUSH
4172: LD_EXP 4
4176: PPUSH
4177: CALL_OW 235
// Dialogue11a ( un ) ;
4181: LD_VAR 0 1
4185: PPUSH
4186: CALL 8017 0 1
// exit ;
4190: POP
4191: POP
4192: GO 4198
// end ;
4194: GO 4141
4196: POP
4197: POP
// end ;
4198: PPOPN 1
4200: END
// every 0 0$1 + 0 0$0.2 marked 6 do
4201: GO 4203
4203: DISABLE
// begin if GetDistUnits ( Burlak , Gaydar ) <= 3 or IsInArea ( Gaydar , KnollArea ) then
4204: LD_EXP 14
4208: PPUSH
4209: LD_EXP 27
4213: PPUSH
4214: CALL_OW 296
4218: PUSH
4219: LD_INT 3
4221: LESSEQUAL
4222: PUSH
4223: LD_EXP 27
4227: PPUSH
4228: LD_INT 2
4230: PPUSH
4231: CALL_OW 308
4235: OR
4236: IFFALSE 4263
// begin disable ( 6 ) ;
4238: LD_INT 6
4240: DISABLE_MARKED
// Dialogue11b ;
4241: CALL 8064 0 0
// player_units := player_units union Gaydar ;
4245: LD_ADDR_EXP 30
4249: PUSH
4250: LD_EXP 30
4254: PUSH
4255: LD_EXP 27
4259: UNION
4260: ST_TO_ADDR
// end else
4261: GO 4264
// enable ;
4263: ENABLE
// end ;
4264: END
// every 0 0$0.7 + 0 0$0.3 do var un ;
4265: GO 4267
4267: DISABLE
4268: LD_INT 0
4270: PPUSH
// begin for un in player_units do
4271: LD_ADDR_VAR 0 1
4275: PUSH
4276: LD_EXP 30
4280: PUSH
4281: FOR_IN
4282: IFFALSE 4315
// if GetSide ( Attacks ( un ) ) = ally then
4284: LD_VAR 0 1
4288: PPUSH
4289: CALL_OW 320
4293: PPUSH
4294: CALL_OW 255
4298: PUSH
4299: LD_EXP 5
4303: EQUAL
4304: IFFALSE 4313
// YouLost ( SelfAttack ) ;
4306: LD_STRING SelfAttack
4308: PPUSH
4309: CALL_OW 104
4313: GO 4281
4315: POP
4316: POP
// enable ;
4317: ENABLE
// end ;
4318: PPOPN 1
4320: END
// every 0 0$1.3 do var un , ape ;
4321: GO 4323
4323: DISABLE
4324: LD_INT 0
4326: PPUSH
4327: PPUSH
// begin for un in ( player_units diff Kuzmov ) do
4328: LD_ADDR_VAR 0 1
4332: PUSH
4333: LD_EXP 30
4337: PUSH
4338: LD_EXP 19
4342: DIFF
4343: PUSH
4344: FOR_IN
4345: IFFALSE 4394
// begin if GetDistUnits ( un , Kuzmov ) < 10 then
4347: LD_VAR 0 1
4351: PPUSH
4352: LD_EXP 19
4356: PPUSH
4357: CALL_OW 296
4361: PUSH
4362: LD_INT 10
4364: LESS
4365: IFFALSE 4385
// begin SetSide ( Kuzmov , you ) ;
4367: LD_EXP 19
4371: PPUSH
4372: LD_EXP 4
4376: PPUSH
4377: CALL_OW 235
// exit ;
4381: POP
4382: POP
4383: GO 4414
// end ; Wait ( 3 ) ;
4385: LD_INT 3
4387: PPUSH
4388: CALL_OW 67
// end ;
4392: GO 4344
4394: POP
4395: POP
// if GetSide ( Kuzmov ) = ally then
4396: LD_EXP 19
4400: PPUSH
4401: CALL_OW 255
4405: PUSH
4406: LD_EXP 5
4410: EQUAL
4411: IFFALSE 4414
// enable ;
4413: ENABLE
// end ;
4414: PPOPN 2
4416: END
// every 0 0$1 + 0 0$0.5 do var un ;
4417: GO 4419
4419: DISABLE
4420: LD_INT 0
4422: PPUSH
// begin for un in player_units do
4423: LD_ADDR_VAR 0 1
4427: PUSH
4428: LD_EXP 30
4432: PUSH
4433: FOR_IN
4434: IFFALSE 4516
// if getside ( Attacks ( un ) ) = arab and not was_combat then
4436: LD_VAR 0 1
4440: PPUSH
4441: CALL_OW 320
4445: PPUSH
4446: CALL_OW 255
4450: PUSH
4451: LD_EXP 6
4455: EQUAL
4456: PUSH
4457: LD_EXP 51
4461: NOT
4462: AND
4463: IFFALSE 4513
// begin disable ;
4465: DISABLE
// was_combat := true ;
4466: LD_ADDR_EXP 51
4470: PUSH
4471: LD_INT 1
4473: ST_TO_ADDR
// Wait ( 0 0$5 ) ;
4474: LD_INT 175
4476: PPUSH
4477: CALL_OW 67
// if holdfreemode = 0 then
4481: LD_OWVAR 73
4485: PUSH
4486: LD_INT 0
4488: EQUAL
4489: IFFALSE 4500
// Hint ( Combat ) else
4491: LD_STRING Combat
4493: PPUSH
4494: CALL_OW 339
4498: GO 4507
// Hint ( Combat2 ) ;
4500: LD_STRING Combat2
4502: PPUSH
4503: CALL_OW 339
// exit ;
4507: POP
4508: POP
4509: GO 4518
// end else
4511: GO 4514
// enable ;
4513: ENABLE
4514: GO 4433
4516: POP
4517: POP
// end ;
4518: PPOPN 1
4520: END
// every 0 0$1 + 0 0$0.8 marked 19 do var filter ;
4521: GO 4523
4523: DISABLE
4524: LD_INT 0
4526: PPUSH
// begin filter := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_not , [ f_or , [ f_btype , b_oil_power ] , [ f_btype , b_oil_mine ] , [ f_btype , b_bunker ] ] ] ] ) ;
4527: LD_ADDR_VAR 0 1
4531: PUSH
4532: LD_INT 21
4534: PUSH
4535: LD_INT 3
4537: PUSH
4538: EMPTY
4539: LIST
4540: LIST
4541: PUSH
4542: LD_INT 3
4544: PUSH
4545: LD_INT 2
4547: PUSH
4548: LD_INT 30
4550: PUSH
4551: LD_INT 26
4553: PUSH
4554: EMPTY
4555: LIST
4556: LIST
4557: PUSH
4558: LD_INT 30
4560: PUSH
4561: LD_INT 29
4563: PUSH
4564: EMPTY
4565: LIST
4566: LIST
4567: PUSH
4568: LD_INT 30
4570: PUSH
4571: LD_INT 32
4573: PUSH
4574: EMPTY
4575: LIST
4576: LIST
4577: PUSH
4578: EMPTY
4579: LIST
4580: LIST
4581: LIST
4582: LIST
4583: PUSH
4584: EMPTY
4585: LIST
4586: LIST
4587: PUSH
4588: EMPTY
4589: LIST
4590: LIST
4591: PPUSH
4592: CALL_OW 69
4596: ST_TO_ADDR
// if filter = 0 and not base_dismantled then
4597: LD_VAR 0 1
4601: PUSH
4602: LD_INT 0
4604: EQUAL
4605: PUSH
4606: LD_EXP 60
4610: NOT
4611: AND
4612: IFFALSE 4629
// begin ChangeMissionObjectives ( MOutDestroy ) ;
4614: LD_STRING MOutDestroy
4616: PPUSH
4617: CALL_OW 337
// base_dismantled := true ;
4621: LD_ADDR_EXP 60
4625: PUSH
4626: LD_INT 1
4628: ST_TO_ADDR
// end ; if ( not filter = 0 ) and base_dismantled then
4629: LD_VAR 0 1
4633: PUSH
4634: LD_INT 0
4636: EQUAL
4637: NOT
4638: PUSH
4639: LD_EXP 60
4643: AND
4644: IFFALSE 4661
// begin ChangeMissionObjectives ( MAddDestroy ) ;
4646: LD_STRING MAddDestroy
4648: PPUSH
4649: CALL_OW 337
// base_dismantled := false ;
4653: LD_ADDR_EXP 60
4657: PUSH
4658: LD_INT 0
4660: ST_TO_ADDR
// end ; enable ;
4661: ENABLE
// end ;
4662: PPOPN 1
4664: END
// on BuildingComplete ( building ) do begin if depot_build = false then
4665: LD_EXP 55
4669: PUSH
4670: LD_INT 0
4672: EQUAL
4673: IFFALSE 4797
// begin if ( GetBType ( building ) = b_depot ) and ( GetSide ( building ) = you ) and ( IsInArea ( building , KnollArea ) ) then
4675: LD_VAR 0 1
4679: PPUSH
4680: CALL_OW 266
4684: PUSH
4685: LD_INT 0
4687: EQUAL
4688: PUSH
4689: LD_VAR 0 1
4693: PPUSH
4694: CALL_OW 255
4698: PUSH
4699: LD_EXP 4
4703: EQUAL
4704: AND
4705: PUSH
4706: LD_VAR 0 1
4710: PPUSH
4711: LD_INT 2
4713: PPUSH
4714: CALL_OW 308
4718: AND
4719: IFFALSE 4746
// begin depot_build = true ;
4721: LD_ADDR_EXP 55
4725: PUSH
4726: LD_INT 1
4728: ST_TO_ADDR
// enable ( 2 ) ;
4729: LD_INT 2
4731: ENABLE_MARKED
// enable ( 8 ) ;
4732: LD_INT 8
4734: ENABLE_MARKED
// ChangeMissionObjectives ( MOutBuild ) ;
4735: LD_STRING MOutBuild
4737: PPUSH
4738: CALL_OW 337
// Dialogue2 ;
4742: CALL 5602 0 0
// end ; if ( GetBType ( building ) = b_depot ) and ( GetSide ( building ) = you ) and not ( IsInArea ( building , KnollArea ) ) then
4746: LD_VAR 0 1
4750: PPUSH
4751: CALL_OW 266
4755: PUSH
4756: LD_INT 0
4758: EQUAL
4759: PUSH
4760: LD_VAR 0 1
4764: PPUSH
4765: CALL_OW 255
4769: PUSH
4770: LD_EXP 4
4774: EQUAL
4775: AND
4776: PUSH
4777: LD_VAR 0 1
4781: PPUSH
4782: LD_INT 2
4784: PPUSH
4785: CALL_OW 308
4789: NOT
4790: AND
4791: IFFALSE 4797
// Dialogue2x ;
4793: CALL 5634 0 0
// end ; if GetBType ( building ) = b_workshop and not workshop_build then
4797: LD_VAR 0 1
4801: PPUSH
4802: CALL_OW 266
4806: PUSH
4807: LD_INT 2
4809: EQUAL
4810: PUSH
4811: LD_EXP 56
4815: NOT
4816: AND
4817: IFFALSE 4834
// begin workshop_build := true ;
4819: LD_ADDR_EXP 56
4823: PUSH
4824: LD_INT 1
4826: ST_TO_ADDR
// Hint ( Extensions1 ) ;
4827: LD_STRING Extensions1
4829: PPUSH
4830: CALL_OW 339
// end ; if GetBType ( building ) = b_armoury and not armoury_build then
4834: LD_VAR 0 1
4838: PPUSH
4839: CALL_OW 266
4843: PUSH
4844: LD_INT 4
4846: EQUAL
4847: PUSH
4848: LD_EXP 57
4852: NOT
4853: AND
4854: IFFALSE 4871
// begin armoury_build := true ;
4856: LD_ADDR_EXP 57
4860: PUSH
4861: LD_INT 1
4863: ST_TO_ADDR
// Hint ( Armoury ) ;
4864: LD_STRING Armoury
4866: PPUSH
4867: CALL_OW 339
// end ; if GetBType ( building ) = b_breastwork and not bunker_build then
4871: LD_VAR 0 1
4875: PPUSH
4876: CALL_OW 266
4880: PUSH
4881: LD_INT 31
4883: EQUAL
4884: PUSH
4885: LD_EXP 58
4889: NOT
4890: AND
4891: IFFALSE 4908
// begin bunker_build := true ;
4893: LD_ADDR_EXP 58
4897: PUSH
4898: LD_INT 1
4900: ST_TO_ADDR
// Hint ( Bunkers ) ;
4901: LD_STRING Bunkers
4903: PPUSH
4904: CALL_OW 339
// end ; if GetBType ( building ) = b_bunker and not turret_build then
4908: LD_VAR 0 1
4912: PPUSH
4913: CALL_OW 266
4917: PUSH
4918: LD_INT 32
4920: EQUAL
4921: PUSH
4922: LD_EXP 59
4926: NOT
4927: AND
4928: IFFALSE 4945
// begin turret_build := true ;
4930: LD_ADDR_EXP 59
4934: PUSH
4935: LD_INT 1
4937: ST_TO_ADDR
// Hint ( Turrets ) ;
4938: LD_STRING Turrets
4940: PPUSH
4941: CALL_OW 339
// end ; end ;
4945: PPOPN 1
4947: END
// on UpgradeComplete ( upgraded_building ) do begin if ( GetBType ( upgraded_building ) = b_lab_half ) and not lab_upgraded then
4948: LD_VAR 0 1
4952: PPUSH
4953: CALL_OW 266
4957: PUSH
4958: LD_INT 7
4960: EQUAL
4961: PUSH
4962: LD_EXP 53
4966: NOT
4967: AND
4968: IFFALSE 4982
// begin Dialogue5 ;
4970: CALL 6368 0 0
// lab_upgraded := true ;
4974: LD_ADDR_EXP 53
4978: PUSH
4979: LD_INT 1
4981: ST_TO_ADDR
// end ; if ( GetBType ( upgraded_building ) = b_factory ) and not workshop_upgraded then
4982: LD_VAR 0 1
4986: PPUSH
4987: CALL_OW 266
4991: PUSH
4992: LD_INT 3
4994: EQUAL
4995: PUSH
4996: LD_EXP 54
5000: NOT
5001: AND
5002: IFFALSE 5019
// begin Hint ( Extensions ) ;
5004: LD_STRING Extensions
5006: PPUSH
5007: CALL_OW 339
// workshop_upgraded := true ;
5011: LD_ADDR_EXP 54
5015: PUSH
5016: LD_INT 1
5018: ST_TO_ADDR
// end ; end ;
5019: PPOPN 1
5021: END
// on UnitDestroyed ( my_unit ) do var un ;
5022: LD_INT 0
5024: PPUSH
// begin if my_unit = Burlak then
5025: LD_VAR 0 1
5029: PUSH
5030: LD_EXP 14
5034: EQUAL
5035: IFFALSE 5044
// YouLost ( Burlak ) ;
5037: LD_STRING Burlak
5039: PPUSH
5040: CALL_OW 104
// if my_unit = Gaydar then
5044: LD_VAR 0 1
5048: PUSH
5049: LD_EXP 27
5053: EQUAL
5054: IFFALSE 5063
// YouLost ( Gaydar ) ;
5056: LD_STRING Gaydar
5058: PPUSH
5059: CALL_OW 104
// end ;
5063: PPOPN 2
5065: END
// on UnitGoesToRed ( red_unit ) do var un ;
5066: LD_INT 0
5068: PPUSH
// begin if red_unit in attack then
5069: LD_VAR 0 1
5073: PUSH
5074: LD_EXP 7
5078: IN
5079: IFFALSE 5095
// begin ar_killed := ar_killed + 1 ;
5081: LD_ADDR_EXP 50
5085: PUSH
5086: LD_EXP 50
5090: PUSH
5091: LD_INT 1
5093: PLUS
5094: ST_TO_ADDR
// end ; for un in sm_attack1 do
5095: LD_ADDR_VAR 0 2
5099: PUSH
5100: LD_EXP 9
5104: PUSH
5105: FOR_IN
5106: IFFALSE 5152
// if un = red_unit then
5108: LD_VAR 0 2
5112: PUSH
5113: LD_VAR 0 1
5117: EQUAL
5118: IFFALSE 5150
// begin sm_attack1 := sm_attack1 diff red_unit ;
5120: LD_ADDR_EXP 9
5124: PUSH
5125: LD_EXP 9
5129: PUSH
5130: LD_VAR 0 1
5134: DIFF
5135: ST_TO_ADDR
// ar_killed := ar_killed + 1 ;
5136: LD_ADDR_EXP 50
5140: PUSH
5141: LD_EXP 50
5145: PUSH
5146: LD_INT 1
5148: PLUS
5149: ST_TO_ADDR
// end ;
5150: GO 5105
5152: POP
5153: POP
// for un in sm_attack2 do
5154: LD_ADDR_VAR 0 2
5158: PUSH
5159: LD_EXP 10
5163: PUSH
5164: FOR_IN
5165: IFFALSE 5211
// if un = red_unit then
5167: LD_VAR 0 2
5171: PUSH
5172: LD_VAR 0 1
5176: EQUAL
5177: IFFALSE 5209
// begin sm_attack2 := sm_attack2 diff red_unit ;
5179: LD_ADDR_EXP 10
5183: PUSH
5184: LD_EXP 10
5188: PUSH
5189: LD_VAR 0 1
5193: DIFF
5194: ST_TO_ADDR
// ar_killed := ar_killed + 1 ;
5195: LD_ADDR_EXP 50
5199: PUSH
5200: LD_EXP 50
5204: PUSH
5205: LD_INT 1
5207: PLUS
5208: ST_TO_ADDR
// end ;
5209: GO 5164
5211: POP
5212: POP
// if red_unit = driver then
5213: LD_VAR 0 1
5217: PUSH
5218: LD_EXP 52
5222: EQUAL
5223: IFFALSE 5236
// begin Wait ( 0 0$5 ) ;
5225: LD_INT 175
5227: PPUSH
5228: CALL_OW 67
// steal_player_buildings ;
5232: CALL 13780 0 0
// end ; end ;
5236: PPOPN 2
5238: END
// on Command ( com ) do var i , j , temp , x , y , typeTask ;
5239: LD_INT 0
5241: PPUSH
5242: PPUSH
5243: PPUSH
5244: PPUSH
5245: PPUSH
5246: PPUSH
// begin for i in FilterAllUnits ( [ [ f_side , 3 ] , [ f_type , unit_human ] ] ) do
5247: LD_ADDR_VAR 0 2
5251: PUSH
5252: LD_INT 22
5254: PUSH
5255: LD_INT 3
5257: PUSH
5258: EMPTY
5259: LIST
5260: LIST
5261: PUSH
5262: LD_INT 21
5264: PUSH
5265: LD_INT 1
5267: PUSH
5268: EMPTY
5269: LIST
5270: LIST
5271: PUSH
5272: EMPTY
5273: LIST
5274: LIST
5275: PPUSH
5276: CALL_OW 69
5280: PUSH
5281: FOR_IN
5282: IFFALSE 5529
// if GetTaskList ( i ) > 0 then
5284: LD_VAR 0 2
5288: PPUSH
5289: CALL_OW 437
5293: PUSH
5294: LD_INT 0
5296: GREATER
5297: IFFALSE 5527
// for j = 1 to GetTaskList ( i ) do
5299: LD_ADDR_VAR 0 3
5303: PUSH
5304: DOUBLE
5305: LD_INT 1
5307: DEC
5308: ST_TO_ADDR
5309: LD_VAR 0 2
5313: PPUSH
5314: CALL_OW 437
5318: PUSH
5319: FOR_TO
5320: IFFALSE 5525
// begin temp = GetTaskList ( i ) [ j ] [ 4 ] ;
5322: LD_ADDR_VAR 0 4
5326: PUSH
5327: LD_VAR 0 2
5331: PPUSH
5332: CALL_OW 437
5336: PUSH
5337: LD_VAR 0 3
5341: ARRAY
5342: PUSH
5343: LD_INT 4
5345: ARRAY
5346: ST_TO_ADDR
// x = GetTaskList ( i ) [ j ] [ 2 ] ;
5347: LD_ADDR_VAR 0 5
5351: PUSH
5352: LD_VAR 0 2
5356: PPUSH
5357: CALL_OW 437
5361: PUSH
5362: LD_VAR 0 3
5366: ARRAY
5367: PUSH
5368: LD_INT 2
5370: ARRAY
5371: ST_TO_ADDR
// y = GetTaskList ( i ) [ j ] [ 3 ] ;
5372: LD_ADDR_VAR 0 6
5376: PUSH
5377: LD_VAR 0 2
5381: PPUSH
5382: CALL_OW 437
5386: PUSH
5387: LD_VAR 0 3
5391: ARRAY
5392: PUSH
5393: LD_INT 3
5395: ARRAY
5396: ST_TO_ADDR
// typeTask = GetTaskList ( i ) [ j ] [ 1 ] ;
5397: LD_ADDR_VAR 0 7
5401: PUSH
5402: LD_VAR 0 2
5406: PPUSH
5407: CALL_OW 437
5411: PUSH
5412: LD_VAR 0 3
5416: ARRAY
5417: PUSH
5418: LD_INT 1
5420: ARRAY
5421: ST_TO_ADDR
// if GetSide ( temp ) = 6 and GetType ( temp ) = unit_vehicle then
5422: LD_VAR 0 4
5426: PPUSH
5427: CALL_OW 255
5431: PUSH
5432: LD_INT 6
5434: EQUAL
5435: PUSH
5436: LD_VAR 0 4
5440: PPUSH
5441: CALL_OW 247
5445: PUSH
5446: LD_INT 2
5448: EQUAL
5449: AND
5450: IFFALSE 5463
// SetTaskList ( i , [ ] ) ;
5452: LD_VAR 0 2
5456: PPUSH
5457: EMPTY
5458: PPUSH
5459: CALL_OW 446
// if x > 0 and y > 0 and typeTask = B and InArea ( x , y , BlockBuildArea ) then
5463: LD_VAR 0 5
5467: PUSH
5468: LD_INT 0
5470: GREATER
5471: PUSH
5472: LD_VAR 0 6
5476: PUSH
5477: LD_INT 0
5479: GREATER
5480: AND
5481: PUSH
5482: LD_VAR 0 7
5486: PUSH
5487: LD_STRING B
5489: EQUAL
5490: AND
5491: PUSH
5492: LD_VAR 0 5
5496: PPUSH
5497: LD_VAR 0 6
5501: PPUSH
5502: LD_INT 8
5504: PPUSH
5505: CALL_OW 309
5509: AND
5510: IFFALSE 5523
// SetTaskList ( i , [ ] ) ;
5512: LD_VAR 0 2
5516: PPUSH
5517: EMPTY
5518: PPUSH
5519: CALL_OW 446
// end ;
5523: GO 5319
5525: POP
5526: POP
5527: GO 5281
5529: POP
5530: POP
// end ; end_of_file
5531: PPOPN 7
5533: END
// export function Dialogue1 ; begin
5534: LD_INT 0
5536: PPUSH
// SayRadio ( SoldierX , D1-RSol1-1 ) ;
5537: LD_EXP 21
5541: PPUSH
5542: LD_STRING D1-RSol1-1
5544: PPUSH
5545: CALL_OW 94
// SayRadio ( Platonov , D1-Pla-1 ) ;
5549: LD_EXP 16
5553: PPUSH
5554: LD_STRING D1-Pla-1
5556: PPUSH
5557: CALL_OW 94
// Say ( Burlak , D1-Bur-1 ) ;
5561: LD_EXP 14
5565: PPUSH
5566: LD_STRING D1-Bur-1
5568: PPUSH
5569: CALL_OW 88
// SayRadio ( Platonov , D1-Pla-2 ) ;
5573: LD_EXP 16
5577: PPUSH
5578: LD_STRING D1-Pla-2
5580: PPUSH
5581: CALL_OW 94
// Say ( Burlak , D1-Bur-2 ) ;
5585: LD_EXP 14
5589: PPUSH
5590: LD_STRING D1-Bur-2
5592: PPUSH
5593: CALL_OW 88
// end ;
5597: LD_VAR 0 1
5601: RET
// export function Dialogue2 ; begin
5602: LD_INT 0
5604: PPUSH
// Say ( Burlak , D2-Bur-1 ) ;
5605: LD_EXP 14
5609: PPUSH
5610: LD_STRING D2-Bur-1
5612: PPUSH
5613: CALL_OW 88
// SayRadio ( Platonov , D2-Pla-1 ) ;
5617: LD_EXP 16
5621: PPUSH
5622: LD_STRING D2-Pla-1
5624: PPUSH
5625: CALL_OW 94
// end ;
5629: LD_VAR 0 1
5633: RET
// export function Dialogue2x ; begin
5634: LD_INT 0
5636: PPUSH
// SayRadio ( Platonov , D2a-Pla-1 ) ;
5637: LD_EXP 16
5641: PPUSH
5642: LD_STRING D2a-Pla-1
5644: PPUSH
5645: CALL_OW 94
// end ;
5649: LD_VAR 0 1
5653: RET
// export function Dialogue2a ; begin
5654: LD_INT 0
5656: PPUSH
// Say ( IsDrivenBy ( FirstCargo ) , D2a-RSol1-1 ) ;
5657: LD_EXP 35
5661: PPUSH
5662: CALL_OW 311
5666: PPUSH
5667: LD_STRING D2a-RSol1-1
5669: PPUSH
5670: CALL_OW 88
// end ;
5674: LD_VAR 0 1
5678: RET
// export function Dialogue2b ; begin
5679: LD_INT 0
5681: PPUSH
// DialogueOn ;
5682: CALL_OW 6
// Say ( Kuzmov , D2b-Kuz-1 ) ;
5686: LD_EXP 19
5690: PPUSH
5691: LD_STRING D2b-Kuz-1
5693: PPUSH
5694: CALL_OW 88
// Say ( Burlak , D2b-Bur-1 ) ;
5698: LD_EXP 14
5702: PPUSH
5703: LD_STRING D2b-Bur-1
5705: PPUSH
5706: CALL_OW 88
// Say ( Kuzmov , D2b-Kuz-2 ) ;
5710: LD_EXP 19
5714: PPUSH
5715: LD_STRING D2b-Kuz-2
5717: PPUSH
5718: CALL_OW 88
// Say ( Burlak , D2b-Bur-2 ) ;
5722: LD_EXP 14
5726: PPUSH
5727: LD_STRING D2b-Bur-2
5729: PPUSH
5730: CALL_OW 88
// Say ( Kuzmov , D2b-Kuz-3 ) ;
5734: LD_EXP 19
5738: PPUSH
5739: LD_STRING D2b-Kuz-3
5741: PPUSH
5742: CALL_OW 88
// DialogueOff ;
5746: CALL_OW 7
// Query ( Q1 ) ;
5750: LD_STRING Q1
5752: PPUSH
5753: CALL_OW 97
// enable ( 4 ) ;
5757: LD_INT 4
5759: ENABLE_MARKED
// end ;
5760: LD_VAR 0 1
5764: RET
// export function Dialogue3a ; begin
5765: LD_INT 0
5767: PPUSH
// DialogueOn ;
5768: CALL_OW 6
// SayRadio ( Platonov , D3A-Pla-1 ) ;
5772: LD_EXP 16
5776: PPUSH
5777: LD_STRING D3A-Pla-1
5779: PPUSH
5780: CALL_OW 94
// Say ( Burlak , D3A-Bur-1 ) ;
5784: LD_EXP 14
5788: PPUSH
5789: LD_STRING D3A-Bur-1
5791: PPUSH
5792: CALL_OW 88
// SayRadio ( Platonov , D3A-Pla-2 ) ;
5796: LD_EXP 16
5800: PPUSH
5801: LD_STRING D3A-Pla-2
5803: PPUSH
5804: CALL_OW 94
// Say ( Kuzmov , D3A-Kuz-2 ) ;
5808: LD_EXP 19
5812: PPUSH
5813: LD_STRING D3A-Kuz-2
5815: PPUSH
5816: CALL_OW 88
// DialogueOff ;
5820: CALL_OW 7
// end ;
5824: LD_VAR 0 1
5828: RET
// export function Dialogue3b ; begin
5829: LD_INT 0
5831: PPUSH
// DialogueOn ;
5832: CALL_OW 6
// SayRadio ( Platonov , D3B-Pla-1 ) ;
5836: LD_EXP 16
5840: PPUSH
5841: LD_STRING D3B-Pla-1
5843: PPUSH
5844: CALL_OW 94
// Say ( Burlak , D3B-Bur-1 ) ;
5848: LD_EXP 14
5852: PPUSH
5853: LD_STRING D3B-Bur-1
5855: PPUSH
5856: CALL_OW 88
// SayRadio ( Platonov , D3B-Pla-2 ) ;
5860: LD_EXP 16
5864: PPUSH
5865: LD_STRING D3B-Pla-2
5867: PPUSH
5868: CALL_OW 94
// Say ( Kuzmov , D3B-Kuz-2 ) ;
5872: LD_EXP 19
5876: PPUSH
5877: LD_STRING D3B-Kuz-2
5879: PPUSH
5880: CALL_OW 88
// DialogueOff ;
5884: CALL_OW 7
// end ;
5888: LD_VAR 0 1
5892: RET
// export function Dialogue3c ; begin
5893: LD_INT 0
5895: PPUSH
// DialogueOn ;
5896: CALL_OW 6
// SayRadio ( Platonov , D3C-Pla-1 ) ;
5900: LD_EXP 16
5904: PPUSH
5905: LD_STRING D3C-Pla-1
5907: PPUSH
5908: CALL_OW 94
// Say ( Burlak , D3C-Bur-1 ) ;
5912: LD_EXP 14
5916: PPUSH
5917: LD_STRING D3C-Bur-1
5919: PPUSH
5920: CALL_OW 88
// SayRadio ( Platonov , D3C-Pla-2 ) ;
5924: LD_EXP 16
5928: PPUSH
5929: LD_STRING D3C-Pla-2
5931: PPUSH
5932: CALL_OW 94
// Say ( Burlak , D3C-Bur-2 ) ;
5936: LD_EXP 14
5940: PPUSH
5941: LD_STRING D3C-Bur-2
5943: PPUSH
5944: CALL_OW 88
// Say ( Kuzmov , D3C-Kuz-2 ) ;
5948: LD_EXP 19
5952: PPUSH
5953: LD_STRING D3C-Kuz-2
5955: PPUSH
5956: CALL_OW 88
// DialogueOff ;
5960: CALL_OW 7
// end ;
5964: LD_VAR 0 1
5968: RET
// export function Dialogue3d ; begin
5969: LD_INT 0
5971: PPUSH
// DialogueOn ;
5972: CALL_OW 6
// SayRadio ( Platonov , D3D-Pla-1 ) ;
5976: LD_EXP 16
5980: PPUSH
5981: LD_STRING D3D-Pla-1
5983: PPUSH
5984: CALL_OW 94
// Say ( Burlak , D3D-Bur-1 ) ;
5988: LD_EXP 14
5992: PPUSH
5993: LD_STRING D3D-Bur-1
5995: PPUSH
5996: CALL_OW 88
// SayRadio ( Platonov , D3D-Pla-2 ) ;
6000: LD_EXP 16
6004: PPUSH
6005: LD_STRING D3D-Pla-2
6007: PPUSH
6008: CALL_OW 94
// Say ( Kuzmov , D3D-Kuz-2 ) ;
6012: LD_EXP 19
6016: PPUSH
6017: LD_STRING D3D-Kuz-2
6019: PPUSH
6020: CALL_OW 88
// DialogueOff ;
6024: CALL_OW 7
// end ;
6028: LD_VAR 0 1
6032: RET
// export function Dialogue3e ; begin
6033: LD_INT 0
6035: PPUSH
// DialogueOn ;
6036: CALL_OW 6
// if ( RecklessAttack = true ) and ( BelkovFreed = false ) then
6040: LD_EXP 44
6044: PUSH
6045: LD_INT 1
6047: EQUAL
6048: PUSH
6049: LD_EXP 45
6053: PUSH
6054: LD_INT 0
6056: EQUAL
6057: AND
6058: IFFALSE 6072
// SayRadio ( Platonov , D3E-Pla-1 ) ;
6060: LD_EXP 16
6064: PPUSH
6065: LD_STRING D3E-Pla-1
6067: PPUSH
6068: CALL_OW 94
// if ( RecklessAttack = false ) and ( BelkovFreed = false ) then
6072: LD_EXP 44
6076: PUSH
6077: LD_INT 0
6079: EQUAL
6080: PUSH
6081: LD_EXP 45
6085: PUSH
6086: LD_INT 0
6088: EQUAL
6089: AND
6090: IFFALSE 6104
// SayRadio ( Platonov , D3E-Pla-1a ) ;
6092: LD_EXP 16
6096: PPUSH
6097: LD_STRING D3E-Pla-1a
6099: PPUSH
6100: CALL_OW 94
// if ( RecklessAttack = true ) and ( BelkovFreed = true ) then
6104: LD_EXP 44
6108: PUSH
6109: LD_INT 1
6111: EQUAL
6112: PUSH
6113: LD_EXP 45
6117: PUSH
6118: LD_INT 1
6120: EQUAL
6121: AND
6122: IFFALSE 6136
// SayRadio ( Platonov , D3E-Pla-1b ) ;
6124: LD_EXP 16
6128: PPUSH
6129: LD_STRING D3E-Pla-1b
6131: PPUSH
6132: CALL_OW 94
// if ( RecklessAttack = false ) and ( BelkovFreed = true ) then
6136: LD_EXP 44
6140: PUSH
6141: LD_INT 0
6143: EQUAL
6144: PUSH
6145: LD_EXP 45
6149: PUSH
6150: LD_INT 1
6152: EQUAL
6153: AND
6154: IFFALSE 6168
// SayRadio ( Platonov , D3E-Pla-1c ) ;
6156: LD_EXP 16
6160: PPUSH
6161: LD_STRING D3E-Pla-1c
6163: PPUSH
6164: CALL_OW 94
// DialogueOff ;
6168: CALL_OW 7
// YouLost ( Arrest ) ;
6172: LD_STRING Arrest
6174: PPUSH
6175: CALL_OW 104
// end ;
6179: LD_VAR 0 1
6183: RET
// export function Dialogue4 ; begin
6184: LD_INT 0
6186: PPUSH
// DialogueOn ;
6187: CALL_OW 6
// SayRadio ( Platonov , D4-Pla-1 ) ;
6191: LD_EXP 16
6195: PPUSH
6196: LD_STRING D4-Pla-1
6198: PPUSH
6199: CALL_OW 94
// Say ( Burlak , D4-Bur-1 ) ;
6203: LD_EXP 14
6207: PPUSH
6208: LD_STRING D4-Bur-1
6210: PPUSH
6211: CALL_OW 88
// Say ( Kuzmov , D4-Kuz-1 ) ;
6215: LD_EXP 19
6219: PPUSH
6220: LD_STRING D4-Kuz-1
6222: PPUSH
6223: CALL_OW 88
// if IsOK ( Belkov ) then
6227: LD_EXP 17
6231: PPUSH
6232: CALL_OW 302
6236: IFFALSE 6252
// Say ( Belkov , D4-Bel-1 ) else
6238: LD_EXP 17
6242: PPUSH
6243: LD_STRING D4-Bel-1
6245: PPUSH
6246: CALL_OW 88
6250: GO 6264
// Say ( Burlak , D4-Bur-2 ) ;
6252: LD_EXP 14
6256: PPUSH
6257: LD_STRING D4-Bur-2
6259: PPUSH
6260: CALL_OW 88
// if IsOK ( Gnyevko ) then
6264: LD_EXP 15
6268: PPUSH
6269: CALL_OW 302
6273: IFFALSE 6299
// begin Say ( Gnyevko , D4-Gny-2 ) ;
6275: LD_EXP 15
6279: PPUSH
6280: LD_STRING D4-Gny-2
6282: PPUSH
6283: CALL_OW 88
// Say ( Burlak , D4-Bur-3 ) ;
6287: LD_EXP 14
6291: PPUSH
6292: LD_STRING D4-Bur-3
6294: PPUSH
6295: CALL_OW 88
// end ; Say ( Burlak , D4-Bur-3a ) ;
6299: LD_EXP 14
6303: PPUSH
6304: LD_STRING D4-Bur-3a
6306: PPUSH
6307: CALL_OW 88
// if IsOK ( Belkov ) then
6311: LD_EXP 17
6315: PPUSH
6316: CALL_OW 302
6320: IFFALSE 6336
// Say ( Belkov , D4-Bel-3 ) else
6322: LD_EXP 17
6326: PPUSH
6327: LD_STRING D4-Bel-3
6329: PPUSH
6330: CALL_OW 88
6334: GO 6359
// if IsOK ( Kovalyuk ) then
6336: LD_EXP 20
6340: PPUSH
6341: CALL_OW 302
6345: IFFALSE 6359
// Say ( Kovalyuk , D4-Kov-3 ) ;
6347: LD_EXP 20
6351: PPUSH
6352: LD_STRING D4-Kov-3
6354: PPUSH
6355: CALL_OW 88
// DialogueOff ;
6359: CALL_OW 7
// end ;
6363: LD_VAR 0 1
6367: RET
// export function Dialogue5 ; var filter , filter_all , un ; begin
6368: LD_INT 0
6370: PPUSH
6371: PPUSH
6372: PPUSH
6373: PPUSH
// if IsOK ( Scholtze ) then
6374: LD_EXP 18
6378: PPUSH
6379: CALL_OW 302
6383: IFFALSE 6411
// begin Say ( Scholtze , D5-Sch-1 ) ;
6385: LD_EXP 18
6389: PPUSH
6390: LD_STRING D5-Sch-1
6392: PPUSH
6393: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6397: LD_EXP 14
6401: PPUSH
6402: LD_STRING D5-Bur-1
6404: PPUSH
6405: CALL_OW 88
// end else
6409: GO 6863
// begin filter_all := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) ;
6411: LD_ADDR_VAR 0 3
6415: PUSH
6416: LD_INT 22
6418: PUSH
6419: LD_EXP 4
6423: PUSH
6424: EMPTY
6425: LIST
6426: LIST
6427: PUSH
6428: LD_INT 26
6430: PUSH
6431: LD_INT 1
6433: PUSH
6434: EMPTY
6435: LIST
6436: LIST
6437: PUSH
6438: LD_INT 50
6440: PUSH
6441: EMPTY
6442: LIST
6443: PUSH
6444: LD_INT 3
6446: PUSH
6447: LD_INT 23
6449: PUSH
6450: LD_INT 0
6452: PUSH
6453: EMPTY
6454: LIST
6455: LIST
6456: PUSH
6457: EMPTY
6458: LIST
6459: LIST
6460: PUSH
6461: EMPTY
6462: LIST
6463: LIST
6464: LIST
6465: LIST
6466: PPUSH
6467: CALL_OW 69
6471: ST_TO_ADDR
// filter_all := filter_all diff [ Burlak , Scholtze ] ;
6472: LD_ADDR_VAR 0 3
6476: PUSH
6477: LD_VAR 0 3
6481: PUSH
6482: LD_EXP 14
6486: PUSH
6487: LD_EXP 18
6491: PUSH
6492: EMPTY
6493: LIST
6494: LIST
6495: DIFF
6496: ST_TO_ADDR
// if 0 + filter_all > 0 then
6497: LD_INT 0
6499: PUSH
6500: LD_VAR 0 3
6504: PLUS
6505: PUSH
6506: LD_INT 0
6508: GREATER
6509: IFFALSE 6863
// begin filter := [ ] ;
6511: LD_ADDR_VAR 0 2
6515: PUSH
6516: EMPTY
6517: ST_TO_ADDR
// for un in filter_all do
6518: LD_ADDR_VAR 0 4
6522: PUSH
6523: LD_VAR 0 3
6527: PUSH
6528: FOR_IN
6529: IFFALSE 6598
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Kuzmov ] ) and GetClass ( un ) = class_scientistic then
6531: LD_VAR 0 4
6535: PUSH
6536: LD_EXP 15
6540: PUSH
6541: LD_EXP 17
6545: PUSH
6546: LD_EXP 20
6550: PUSH
6551: LD_EXP 19
6555: PUSH
6556: EMPTY
6557: LIST
6558: LIST
6559: LIST
6560: LIST
6561: IN
6562: NOT
6563: PUSH
6564: LD_VAR 0 4
6568: PPUSH
6569: CALL_OW 257
6573: PUSH
6574: LD_INT 4
6576: EQUAL
6577: AND
6578: IFFALSE 6596
// filter := filter union un ;
6580: LD_ADDR_VAR 0 2
6584: PUSH
6585: LD_VAR 0 2
6589: PUSH
6590: LD_VAR 0 4
6594: UNION
6595: ST_TO_ADDR
6596: GO 6528
6598: POP
6599: POP
// if filter > 0 then
6600: LD_VAR 0 2
6604: PUSH
6605: LD_INT 0
6607: GREATER
6608: IFFALSE 6640
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6610: LD_VAR 0 2
6614: PUSH
6615: LD_INT 1
6617: ARRAY
6618: PPUSH
6619: LD_STRING D5-RSci1-1
6621: PPUSH
6622: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6626: LD_EXP 14
6630: PPUSH
6631: LD_STRING D5-Bur-1
6633: PPUSH
6634: CALL_OW 88
// end else
6638: GO 6863
// begin for un in filter_all do
6640: LD_ADDR_VAR 0 4
6644: PUSH
6645: LD_VAR 0 3
6649: PUSH
6650: FOR_IN
6651: IFFALSE 6705
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Kuzmov ] ) then
6653: LD_VAR 0 4
6657: PUSH
6658: LD_EXP 15
6662: PUSH
6663: LD_EXP 17
6667: PUSH
6668: LD_EXP 20
6672: PUSH
6673: LD_EXP 19
6677: PUSH
6678: EMPTY
6679: LIST
6680: LIST
6681: LIST
6682: LIST
6683: IN
6684: NOT
6685: IFFALSE 6703
// filter := filter union un ;
6687: LD_ADDR_VAR 0 2
6691: PUSH
6692: LD_VAR 0 2
6696: PUSH
6697: LD_VAR 0 4
6701: UNION
6702: ST_TO_ADDR
6703: GO 6650
6705: POP
6706: POP
// if filter > 0 then
6707: LD_VAR 0 2
6711: PUSH
6712: LD_INT 0
6714: GREATER
6715: IFFALSE 6747
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6717: LD_VAR 0 2
6721: PUSH
6722: LD_INT 1
6724: ARRAY
6725: PPUSH
6726: LD_STRING D5-RSci1-1
6728: PPUSH
6729: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6733: LD_EXP 14
6737: PPUSH
6738: LD_STRING D5-Bur-1
6740: PPUSH
6741: CALL_OW 88
// end else
6745: GO 6863
// begin for un in filter_all do
6747: LD_ADDR_VAR 0 4
6751: PUSH
6752: LD_VAR 0 3
6756: PUSH
6757: FOR_IN
6758: IFFALSE 6793
// if GetClass ( un ) = class_scientistic then
6760: LD_VAR 0 4
6764: PPUSH
6765: CALL_OW 257
6769: PUSH
6770: LD_INT 4
6772: EQUAL
6773: IFFALSE 6791
// filter := filter union un ;
6775: LD_ADDR_VAR 0 2
6779: PUSH
6780: LD_VAR 0 2
6784: PUSH
6785: LD_VAR 0 4
6789: UNION
6790: ST_TO_ADDR
6791: GO 6757
6793: POP
6794: POP
// if filter > 0 then
6795: LD_VAR 0 2
6799: PUSH
6800: LD_INT 0
6802: GREATER
6803: IFFALSE 6835
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6805: LD_VAR 0 2
6809: PUSH
6810: LD_INT 1
6812: ARRAY
6813: PPUSH
6814: LD_STRING D5-RSci1-1
6816: PPUSH
6817: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6821: LD_EXP 14
6825: PPUSH
6826: LD_STRING D5-Bur-1
6828: PPUSH
6829: CALL_OW 88
// end else
6833: GO 6863
// begin Say ( filter_all [ 1 ] , D5-RSci1-1 ) ;
6835: LD_VAR 0 3
6839: PUSH
6840: LD_INT 1
6842: ARRAY
6843: PPUSH
6844: LD_STRING D5-RSci1-1
6846: PPUSH
6847: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6851: LD_EXP 14
6855: PPUSH
6856: LD_STRING D5-Bur-1
6858: PPUSH
6859: CALL_OW 88
// end ; end ; end ; end ; end ; end ;
6863: LD_VAR 0 1
6867: RET
// export function Dialogue7 ; var ss , bool , rand_sentence , pole , filter ; begin
6868: LD_INT 0
6870: PPUSH
6871: PPUSH
6872: PPUSH
6873: PPUSH
6874: PPUSH
6875: PPUSH
// Randomize ;
6876: CALL_OW 10
// rand_sentence := Rand ( 1 , 3 ) ;
6880: LD_ADDR_VAR 0 4
6884: PUSH
6885: LD_INT 1
6887: PPUSH
6888: LD_INT 3
6890: PPUSH
6891: CALL_OW 12
6895: ST_TO_ADDR
// case rand_sentence of 1 :
6896: LD_VAR 0 4
6900: PUSH
6901: LD_INT 1
6903: DOUBLE
6904: EQUAL
6905: IFTRUE 6909
6907: GO 6924
6909: POP
// Say ( Burlak , D7-Bur-1 ) ; 2 :
6910: LD_EXP 14
6914: PPUSH
6915: LD_STRING D7-Bur-1
6917: PPUSH
6918: CALL_OW 88
6922: GO 6971
6924: LD_INT 2
6926: DOUBLE
6927: EQUAL
6928: IFTRUE 6932
6930: GO 6947
6932: POP
// Say ( Burlak , D7-Bur-1a ) ; 3 :
6933: LD_EXP 14
6937: PPUSH
6938: LD_STRING D7-Bur-1a
6940: PPUSH
6941: CALL_OW 88
6945: GO 6971
6947: LD_INT 3
6949: DOUBLE
6950: EQUAL
6951: IFTRUE 6955
6953: GO 6970
6955: POP
// Say ( Burlak , D7-Bur-1b ) ; end ;
6956: LD_EXP 14
6960: PPUSH
6961: LD_STRING D7-Bur-1b
6963: PPUSH
6964: CALL_OW 88
6968: GO 6971
6970: POP
// bool := false ;
6971: LD_ADDR_VAR 0 3
6975: PUSH
6976: LD_INT 0
6978: ST_TO_ADDR
// pole := [ ] ;
6979: LD_ADDR_VAR 0 5
6983: PUSH
6984: EMPTY
6985: ST_TO_ADDR
// repeat ss := ( [ 1 , 2 , 3 , 4 ] diff pole ) [ Rand ( 1 , 4 - pole ) ] ;
6986: LD_ADDR_VAR 0 2
6990: PUSH
6991: LD_INT 1
6993: PUSH
6994: LD_INT 2
6996: PUSH
6997: LD_INT 3
6999: PUSH
7000: LD_INT 4
7002: PUSH
7003: EMPTY
7004: LIST
7005: LIST
7006: LIST
7007: LIST
7008: PUSH
7009: LD_VAR 0 5
7013: DIFF
7014: PUSH
7015: LD_INT 1
7017: PPUSH
7018: LD_INT 4
7020: PUSH
7021: LD_VAR 0 5
7025: MINUS
7026: PPUSH
7027: CALL_OW 12
7031: ARRAY
7032: ST_TO_ADDR
// case ss of 1 :
7033: LD_VAR 0 2
7037: PUSH
7038: LD_INT 1
7040: DOUBLE
7041: EQUAL
7042: IFTRUE 7046
7044: GO 7092
7046: POP
// begin if IsOK ( Belkov ) then
7047: LD_EXP 17
7051: PPUSH
7052: CALL_OW 302
7056: IFFALSE 7076
// bool := Say ( Belkov , D7-Bel-1 ) ;
7058: LD_ADDR_VAR 0 3
7062: PUSH
7063: LD_EXP 17
7067: PPUSH
7068: LD_STRING D7-Bel-1
7070: PPUSH
7071: CALL_OW 88
7075: ST_TO_ADDR
// pole := pole union 1 ;
7076: LD_ADDR_VAR 0 5
7080: PUSH
7081: LD_VAR 0 5
7085: PUSH
7086: LD_INT 1
7088: UNION
7089: ST_TO_ADDR
// end ; 2 :
7090: GO 7255
7092: LD_INT 2
7094: DOUBLE
7095: EQUAL
7096: IFTRUE 7100
7098: GO 7146
7100: POP
// begin if IsOK ( Kuzmov ) then
7101: LD_EXP 19
7105: PPUSH
7106: CALL_OW 302
7110: IFFALSE 7130
// bool := Say ( Kuzmov , D7-Kuz-1 ) ;
7112: LD_ADDR_VAR 0 3
7116: PUSH
7117: LD_EXP 19
7121: PPUSH
7122: LD_STRING D7-Kuz-1
7124: PPUSH
7125: CALL_OW 88
7129: ST_TO_ADDR
// pole := pole union 2 ;
7130: LD_ADDR_VAR 0 5
7134: PUSH
7135: LD_VAR 0 5
7139: PUSH
7140: LD_INT 2
7142: UNION
7143: ST_TO_ADDR
// end ; 3 :
7144: GO 7255
7146: LD_INT 3
7148: DOUBLE
7149: EQUAL
7150: IFTRUE 7154
7152: GO 7200
7154: POP
// begin if IsOK ( Kovalyuk ) then
7155: LD_EXP 20
7159: PPUSH
7160: CALL_OW 302
7164: IFFALSE 7184
// bool := Say ( Kovalyuk , D7-Kov-1 ) ;
7166: LD_ADDR_VAR 0 3
7170: PUSH
7171: LD_EXP 20
7175: PPUSH
7176: LD_STRING D7-Kov-1
7178: PPUSH
7179: CALL_OW 88
7183: ST_TO_ADDR
// pole := pole union 3 ;
7184: LD_ADDR_VAR 0 5
7188: PUSH
7189: LD_VAR 0 5
7193: PUSH
7194: LD_INT 3
7196: UNION
7197: ST_TO_ADDR
// end ; 4 :
7198: GO 7255
7200: LD_INT 4
7202: DOUBLE
7203: EQUAL
7204: IFTRUE 7208
7206: GO 7254
7208: POP
// begin if IsOK ( Scholtze ) then
7209: LD_EXP 18
7213: PPUSH
7214: CALL_OW 302
7218: IFFALSE 7238
// bool := Say ( Scholtze , D7-Sch-1 ) ;
7220: LD_ADDR_VAR 0 3
7224: PUSH
7225: LD_EXP 18
7229: PPUSH
7230: LD_STRING D7-Sch-1
7232: PPUSH
7233: CALL_OW 88
7237: ST_TO_ADDR
// pole := pole union 4 ;
7238: LD_ADDR_VAR 0 5
7242: PUSH
7243: LD_VAR 0 5
7247: PUSH
7248: LD_INT 4
7250: UNION
7251: ST_TO_ADDR
// end ; end ;
7252: GO 7255
7254: POP
// Wait ( 1 ) ;
7255: LD_INT 1
7257: PPUSH
7258: CALL_OW 67
// until bool or ( pole > 3 ) ;
7262: LD_VAR 0 3
7266: PUSH
7267: LD_VAR 0 5
7271: PUSH
7272: LD_INT 3
7274: GREATER
7275: OR
7276: IFFALSE 6986
// if not bool then
7278: LD_VAR 0 3
7282: NOT
7283: IFFALSE 7346
// begin filter := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] ] ) diff [ Burlak ] ;
7285: LD_ADDR_VAR 0 6
7289: PUSH
7290: LD_INT 22
7292: PUSH
7293: LD_EXP 4
7297: PUSH
7298: EMPTY
7299: LIST
7300: LIST
7301: PUSH
7302: LD_INT 26
7304: PUSH
7305: LD_INT 1
7307: PUSH
7308: EMPTY
7309: LIST
7310: LIST
7311: PUSH
7312: EMPTY
7313: LIST
7314: LIST
7315: PPUSH
7316: CALL_OW 69
7320: PUSH
7321: LD_EXP 14
7325: PUSH
7326: EMPTY
7327: LIST
7328: DIFF
7329: ST_TO_ADDR
// Say ( filter [ 1 ] , D7-RSol1-1 ) ;
7330: LD_VAR 0 6
7334: PUSH
7335: LD_INT 1
7337: ARRAY
7338: PPUSH
7339: LD_STRING D7-RSol1-1
7341: PPUSH
7342: CALL_OW 88
// end ; end ;
7346: LD_VAR 0 1
7350: RET
// export function Dialogue7a ; begin
7351: LD_INT 0
7353: PPUSH
// Say ( Heike , D7a-Hke-1 ) ;
7354: LD_EXP 28
7358: PPUSH
7359: LD_STRING D7a-Hke-1
7361: PPUSH
7362: CALL_OW 88
// Say ( Burlak , D7a-Bur-1 ) ;
7366: LD_EXP 14
7370: PPUSH
7371: LD_STRING D7a-Bur-1
7373: PPUSH
7374: CALL_OW 88
// end ;
7378: LD_VAR 0 1
7382: RET
// export function Dialogue8 ; var filter , filter_all , un ; begin
7383: LD_INT 0
7385: PPUSH
7386: PPUSH
7387: PPUSH
7388: PPUSH
// if IsOK ( Kuzmov ) then
7389: LD_EXP 19
7393: PPUSH
7394: CALL_OW 302
7398: IFFALSE 7426
// begin Say ( Kuzmov , D8-Kuz-1 ) ;
7400: LD_EXP 19
7404: PPUSH
7405: LD_STRING D8-Kuz-1
7407: PPUSH
7408: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7412: LD_EXP 14
7416: PPUSH
7417: LD_STRING D8-Bur-1
7419: PPUSH
7420: CALL_OW 88
// end else
7424: GO 7878
// begin filter_all := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) ;
7426: LD_ADDR_VAR 0 3
7430: PUSH
7431: LD_INT 22
7433: PUSH
7434: LD_EXP 4
7438: PUSH
7439: EMPTY
7440: LIST
7441: LIST
7442: PUSH
7443: LD_INT 26
7445: PUSH
7446: LD_INT 1
7448: PUSH
7449: EMPTY
7450: LIST
7451: LIST
7452: PUSH
7453: LD_INT 50
7455: PUSH
7456: EMPTY
7457: LIST
7458: PUSH
7459: LD_INT 3
7461: PUSH
7462: LD_INT 23
7464: PUSH
7465: LD_INT 0
7467: PUSH
7468: EMPTY
7469: LIST
7470: LIST
7471: PUSH
7472: EMPTY
7473: LIST
7474: LIST
7475: PUSH
7476: EMPTY
7477: LIST
7478: LIST
7479: LIST
7480: LIST
7481: PPUSH
7482: CALL_OW 69
7486: ST_TO_ADDR
// filter_all := filter_all diff [ Burlak , Kuzmov ] ;
7487: LD_ADDR_VAR 0 3
7491: PUSH
7492: LD_VAR 0 3
7496: PUSH
7497: LD_EXP 14
7501: PUSH
7502: LD_EXP 19
7506: PUSH
7507: EMPTY
7508: LIST
7509: LIST
7510: DIFF
7511: ST_TO_ADDR
// if 0 + filter_all > 0 then
7512: LD_INT 0
7514: PUSH
7515: LD_VAR 0 3
7519: PLUS
7520: PUSH
7521: LD_INT 0
7523: GREATER
7524: IFFALSE 7878
// begin filter := [ ] ;
7526: LD_ADDR_VAR 0 2
7530: PUSH
7531: EMPTY
7532: ST_TO_ADDR
// for un in filter_all do
7533: LD_ADDR_VAR 0 4
7537: PUSH
7538: LD_VAR 0 3
7542: PUSH
7543: FOR_IN
7544: IFFALSE 7613
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Scholtze ] ) and GetClass ( un ) = class_soldier then
7546: LD_VAR 0 4
7550: PUSH
7551: LD_EXP 15
7555: PUSH
7556: LD_EXP 17
7560: PUSH
7561: LD_EXP 20
7565: PUSH
7566: LD_EXP 18
7570: PUSH
7571: EMPTY
7572: LIST
7573: LIST
7574: LIST
7575: LIST
7576: IN
7577: NOT
7578: PUSH
7579: LD_VAR 0 4
7583: PPUSH
7584: CALL_OW 257
7588: PUSH
7589: LD_INT 1
7591: EQUAL
7592: AND
7593: IFFALSE 7611
// filter := filter union un ;
7595: LD_ADDR_VAR 0 2
7599: PUSH
7600: LD_VAR 0 2
7604: PUSH
7605: LD_VAR 0 4
7609: UNION
7610: ST_TO_ADDR
7611: GO 7543
7613: POP
7614: POP
// if filter > 0 then
7615: LD_VAR 0 2
7619: PUSH
7620: LD_INT 0
7622: GREATER
7623: IFFALSE 7655
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7625: LD_VAR 0 2
7629: PUSH
7630: LD_INT 1
7632: ARRAY
7633: PPUSH
7634: LD_STRING D8-RSol1-1
7636: PPUSH
7637: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7641: LD_EXP 14
7645: PPUSH
7646: LD_STRING D8-Bur-1
7648: PPUSH
7649: CALL_OW 88
// end else
7653: GO 7878
// begin for un in filter_all do
7655: LD_ADDR_VAR 0 4
7659: PUSH
7660: LD_VAR 0 3
7664: PUSH
7665: FOR_IN
7666: IFFALSE 7720
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Scholtze ] ) then
7668: LD_VAR 0 4
7672: PUSH
7673: LD_EXP 15
7677: PUSH
7678: LD_EXP 17
7682: PUSH
7683: LD_EXP 20
7687: PUSH
7688: LD_EXP 18
7692: PUSH
7693: EMPTY
7694: LIST
7695: LIST
7696: LIST
7697: LIST
7698: IN
7699: NOT
7700: IFFALSE 7718
// filter := filter union un ;
7702: LD_ADDR_VAR 0 2
7706: PUSH
7707: LD_VAR 0 2
7711: PUSH
7712: LD_VAR 0 4
7716: UNION
7717: ST_TO_ADDR
7718: GO 7665
7720: POP
7721: POP
// if filter > 0 then
7722: LD_VAR 0 2
7726: PUSH
7727: LD_INT 0
7729: GREATER
7730: IFFALSE 7762
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7732: LD_VAR 0 2
7736: PUSH
7737: LD_INT 1
7739: ARRAY
7740: PPUSH
7741: LD_STRING D8-RSol1-1
7743: PPUSH
7744: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7748: LD_EXP 14
7752: PPUSH
7753: LD_STRING D8-Bur-1
7755: PPUSH
7756: CALL_OW 88
// end else
7760: GO 7878
// begin for un in filter_all do
7762: LD_ADDR_VAR 0 4
7766: PUSH
7767: LD_VAR 0 3
7771: PUSH
7772: FOR_IN
7773: IFFALSE 7808
// if GetClass ( un ) = class_soldier then
7775: LD_VAR 0 4
7779: PPUSH
7780: CALL_OW 257
7784: PUSH
7785: LD_INT 1
7787: EQUAL
7788: IFFALSE 7806
// filter := filter union un ;
7790: LD_ADDR_VAR 0 2
7794: PUSH
7795: LD_VAR 0 2
7799: PUSH
7800: LD_VAR 0 4
7804: UNION
7805: ST_TO_ADDR
7806: GO 7772
7808: POP
7809: POP
// if filter > 0 then
7810: LD_VAR 0 2
7814: PUSH
7815: LD_INT 0
7817: GREATER
7818: IFFALSE 7850
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7820: LD_VAR 0 2
7824: PUSH
7825: LD_INT 1
7827: ARRAY
7828: PPUSH
7829: LD_STRING D8-RSol1-1
7831: PPUSH
7832: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7836: LD_EXP 14
7840: PPUSH
7841: LD_STRING D8-Bur-1
7843: PPUSH
7844: CALL_OW 88
// end else
7848: GO 7878
// begin Say ( filter_all [ 1 ] , D8-RSol1-1 ) ;
7850: LD_VAR 0 3
7854: PUSH
7855: LD_INT 1
7857: ARRAY
7858: PPUSH
7859: LD_STRING D8-RSol1-1
7861: PPUSH
7862: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7866: LD_EXP 14
7870: PPUSH
7871: LD_STRING D8-Bur-1
7873: PPUSH
7874: CALL_OW 88
// end ; end ; end ; end ; end ; end ;
7878: LD_VAR 0 1
7882: RET
// export function Dialogue9 ; begin
7883: LD_INT 0
7885: PPUSH
// SayRadio ( Platonov , D9-Pla-1 ) ;
7886: LD_EXP 16
7890: PPUSH
7891: LD_STRING D9-Pla-1
7893: PPUSH
7894: CALL_OW 94
// Say ( Burlak , D9-Bur-1 ) ;
7898: LD_EXP 14
7902: PPUSH
7903: LD_STRING D9-Bur-1
7905: PPUSH
7906: CALL_OW 88
// SayRadio ( Platonov , D9-Pla-2 ) ;
7910: LD_EXP 16
7914: PPUSH
7915: LD_STRING D9-Pla-2
7917: PPUSH
7918: CALL_OW 94
// Say ( Burlak , D9-Bur-2 ) ;
7922: LD_EXP 14
7926: PPUSH
7927: LD_STRING D9-Bur-2
7929: PPUSH
7930: CALL_OW 88
// ChangeMissionObjectives ( M2 ) ;
7934: LD_STRING M2
7936: PPUSH
7937: CALL_OW 337
// end ;
7941: LD_VAR 0 1
7945: RET
// export function Dialogue10 ; begin
7946: LD_INT 0
7948: PPUSH
// Say ( Gaydar , D10-Gay-1 ) ;
7949: LD_EXP 27
7953: PPUSH
7954: LD_STRING D10-Gay-1
7956: PPUSH
7957: CALL_OW 88
// Say ( Burlak , D10-Bur-1 ) ;
7961: LD_EXP 14
7965: PPUSH
7966: LD_STRING D10-Bur-1
7968: PPUSH
7969: CALL_OW 88
// Say ( Gaydar , D10-Gay-2 ) ;
7973: LD_EXP 27
7977: PPUSH
7978: LD_STRING D10-Gay-2
7980: PPUSH
7981: CALL_OW 88
// SayRadio ( Popov , D10-Pop-2 ) ;
7985: LD_EXP 26
7989: PPUSH
7990: LD_STRING D10-Pop-2
7992: PPUSH
7993: CALL_OW 94
// Say ( Gaydar , D10-Gay-3 ) ;
7997: LD_EXP 27
8001: PPUSH
8002: LD_STRING D10-Gay-3
8004: PPUSH
8005: CALL_OW 88
// enable ( 5 ) ;
8009: LD_INT 5
8011: ENABLE_MARKED
// end ;
8012: LD_VAR 0 1
8016: RET
// export function Dialogue11a ( someone ) ; begin
8017: LD_INT 0
8019: PPUSH
// if someone <> Burlak then
8020: LD_VAR 0 1
8024: PUSH
8025: LD_EXP 14
8029: NONEQUAL
8030: IFFALSE 8056
// begin Say ( Gaydar , D11-Gay-1 ) ;
8032: LD_EXP 27
8036: PPUSH
8037: LD_STRING D11-Gay-1
8039: PPUSH
8040: CALL_OW 88
// Say ( someone , D11-RSol1-1 ) ;
8044: LD_VAR 0 1
8048: PPUSH
8049: LD_STRING D11-RSol1-1
8051: PPUSH
8052: CALL_OW 88
// end ; enable ( 6 ) ;
8056: LD_INT 6
8058: ENABLE_MARKED
// end ;
8059: LD_VAR 0 2
8063: RET
// export function Dialogue11b ; begin
8064: LD_INT 0
8066: PPUSH
// Say ( Gaydar , D11-Gay-2 ) ;
8067: LD_EXP 27
8071: PPUSH
8072: LD_STRING D11-Gay-2
8074: PPUSH
8075: CALL_OW 88
// Say ( Burlak , D11-Bur-2 ) ;
8079: LD_EXP 14
8083: PPUSH
8084: LD_STRING D11-Bur-2
8086: PPUSH
8087: CALL_OW 88
// Say ( Gaydar , D11-Gay-3 ) ;
8091: LD_EXP 27
8095: PPUSH
8096: LD_STRING D11-Gay-3
8098: PPUSH
8099: CALL_OW 88
// Say ( Burlak , D11-Bur-3 ) ;
8103: LD_EXP 14
8107: PPUSH
8108: LD_STRING D11-Bur-3
8110: PPUSH
8111: CALL_OW 88
// Say ( Gaydar , D11-Gay-4 ) ;
8115: LD_EXP 27
8119: PPUSH
8120: LD_STRING D11-Gay-4
8122: PPUSH
8123: CALL_OW 88
// Say ( Burlak , D11-Bur-4 ) ;
8127: LD_EXP 14
8131: PPUSH
8132: LD_STRING D11-Bur-4
8134: PPUSH
8135: CALL_OW 88
// Wait ( 0 0$5 ) ;
8139: LD_INT 175
8141: PPUSH
8142: CALL_OW 67
// Dialogue12 ;
8146: CALL 8162 0 0
// Hint ( Dismantle ) ;
8150: LD_STRING Dismantle
8152: PPUSH
8153: CALL_OW 339
// end ;
8157: LD_VAR 0 1
8161: RET
// export function Dialogue12 ; begin
8162: LD_INT 0
8164: PPUSH
// SayRadio ( Popov , D12-Pop-1 ) ;
8165: LD_EXP 26
8169: PPUSH
8170: LD_STRING D12-Pop-1
8172: PPUSH
8173: CALL_OW 94
// Say ( Burlak , D12-Bur-1 ) ;
8177: LD_EXP 14
8181: PPUSH
8182: LD_STRING D12-Bur-1
8184: PPUSH
8185: CALL_OW 88
// SayRadio ( Platonov , D12-Pla-1 ) ;
8189: LD_EXP 16
8193: PPUSH
8194: LD_STRING D12-Pla-1
8196: PPUSH
8197: CALL_OW 94
// ChangeMissionObjectives ( MFinal ) ;
8201: LD_STRING MFinal
8203: PPUSH
8204: CALL_OW 337
// SetAreaMapShow ( ExitArea , true ) ;
8208: LD_INT 1
8210: PPUSH
8211: LD_INT 1
8213: PPUSH
8214: CALL_OW 424
// disable ( 13 ) ;
8218: LD_INT 13
8220: DISABLE_MARKED
// disable ( 12 ) ;
8221: LD_INT 12
8223: DISABLE_MARKED
// enable ( 19 ) ;
8224: LD_INT 19
8226: ENABLE_MARKED
// konec := true ;
8227: LD_ADDR_EXP 43
8231: PUSH
8232: LD_INT 1
8234: ST_TO_ADDR
// end ;
8235: LD_VAR 0 1
8239: RET
// on SailEvent ( num ) do Dialogue7 ; end_of_file
8240: CALL 6868 0 0
8244: PPOPN 1
8246: END
// export function prepare_convoy ; var a , i , rand_convoy , rand_vehicle ; begin
8247: LD_INT 0
8249: PPUSH
8250: PPUSH
8251: PPUSH
8252: PPUSH
8253: PPUSH
// Convoy := [ ] ;
8254: LD_ADDR_EXP 32
8258: PUSH
8259: EMPTY
8260: ST_TO_ADDR
// rand_convoy := [ ] ;
8261: LD_ADDR_VAR 0 4
8265: PUSH
8266: EMPTY
8267: ST_TO_ADDR
// for i := 1 to number_of_trucks do
8268: LD_ADDR_VAR 0 3
8272: PUSH
8273: DOUBLE
8274: LD_INT 1
8276: DEC
8277: ST_TO_ADDR
8278: LD_EXP 38
8282: PUSH
8283: FOR_TO
8284: IFFALSE 8520
// begin uc_side := ally ;
8286: LD_ADDR_OWVAR 20
8290: PUSH
8291: LD_EXP 5
8295: ST_TO_ADDR
// uc_nation := nation_russian ;
8296: LD_ADDR_OWVAR 21
8300: PUSH
8301: LD_INT 3
8303: ST_TO_ADDR
// uc_direction := 3 ;
8304: LD_ADDR_OWVAR 24
8308: PUSH
8309: LD_INT 3
8311: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8312: LD_ADDR_OWVAR 37
8316: PUSH
8317: LD_INT 21
8319: ST_TO_ADDR
// vc_engine := engine_combustion ;
8320: LD_ADDR_OWVAR 39
8324: PUSH
8325: LD_INT 1
8327: ST_TO_ADDR
// vc_weapon := ru_cargo_bay ;
8328: LD_ADDR_OWVAR 40
8332: PUSH
8333: LD_INT 51
8335: ST_TO_ADDR
// vc_control := control_manual ;
8336: LD_ADDR_OWVAR 38
8340: PUSH
8341: LD_INT 1
8343: ST_TO_ADDR
// hc_name :=  ;
8344: LD_ADDR_OWVAR 26
8348: PUSH
8349: LD_STRING 
8351: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
8352: LD_INT 1
8354: PPUSH
8355: LD_INT 0
8357: PPUSH
8358: LD_INT 0
8360: PPUSH
8361: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8365: LD_ADDR_OWVAR 30
8369: PUSH
8370: LD_INT 0
8372: PUSH
8373: LD_INT 0
8375: PUSH
8376: LD_INT 0
8378: PUSH
8379: LD_INT 0
8381: PUSH
8382: EMPTY
8383: LIST
8384: LIST
8385: LIST
8386: LIST
8387: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8388: LD_ADDR_OWVAR 31
8392: PUSH
8393: LD_INT 0
8395: PPUSH
8396: LD_INT 3
8398: PPUSH
8399: CALL_OW 12
8403: PUSH
8404: LD_INT 0
8406: PPUSH
8407: LD_INT 3
8409: PPUSH
8410: CALL_OW 12
8414: PUSH
8415: LD_INT 1
8417: PUSH
8418: LD_INT 0
8420: PPUSH
8421: LD_INT 3
8423: PPUSH
8424: CALL_OW 12
8428: PUSH
8429: EMPTY
8430: LIST
8431: LIST
8432: LIST
8433: LIST
8434: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8435: LD_ADDR_EXP 32
8439: PUSH
8440: LD_EXP 32
8444: PUSH
8445: CALL_OW 45
8449: UNION
8450: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8451: CALL_OW 44
8455: PPUSH
8456: LD_EXP 32
8460: PUSH
8461: LD_VAR 0 3
8465: ARRAY
8466: PPUSH
8467: CALL_OW 52
// SetCargo ( Convoy [ i ] , mat_cans , 100 ) ;
8471: LD_EXP 32
8475: PUSH
8476: LD_VAR 0 3
8480: ARRAY
8481: PPUSH
8482: LD_INT 1
8484: PPUSH
8485: LD_INT 100
8487: PPUSH
8488: CALL_OW 290
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8492: LD_EXP 32
8496: PUSH
8497: LD_VAR 0 3
8501: ARRAY
8502: PPUSH
8503: LD_INT 70
8505: PPUSH
8506: LD_INT 95
8508: PPUSH
8509: CALL_OW 12
8513: PPUSH
8514: CALL_OW 240
// end ;
8518: GO 8283
8520: POP
8521: POP
// for i := number_of_trucks + 1 to number_of_trucks + number_of_guns do
8522: LD_ADDR_VAR 0 3
8526: PUSH
8527: DOUBLE
8528: LD_EXP 38
8532: PUSH
8533: LD_INT 1
8535: PLUS
8536: DEC
8537: ST_TO_ADDR
8538: LD_EXP 38
8542: PUSH
8543: LD_EXP 39
8547: PLUS
8548: PUSH
8549: FOR_TO
8550: IFFALSE 8765
// begin uc_side := ally ;
8552: LD_ADDR_OWVAR 20
8556: PUSH
8557: LD_EXP 5
8561: ST_TO_ADDR
// uc_nation := nation_russian ;
8562: LD_ADDR_OWVAR 21
8566: PUSH
8567: LD_INT 3
8569: ST_TO_ADDR
// uc_direction := 3 ;
8570: LD_ADDR_OWVAR 24
8574: PUSH
8575: LD_INT 3
8577: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8578: LD_ADDR_OWVAR 37
8582: PUSH
8583: LD_INT 21
8585: ST_TO_ADDR
// vc_engine := engine_combustion ;
8586: LD_ADDR_OWVAR 39
8590: PUSH
8591: LD_INT 1
8593: ST_TO_ADDR
// vc_weapon := ru_gun ;
8594: LD_ADDR_OWVAR 40
8598: PUSH
8599: LD_INT 44
8601: ST_TO_ADDR
// vc_control := control_manual ;
8602: LD_ADDR_OWVAR 38
8606: PUSH
8607: LD_INT 1
8609: ST_TO_ADDR
// hc_name :=  ;
8610: LD_ADDR_OWVAR 26
8614: PUSH
8615: LD_STRING 
8617: ST_TO_ADDR
// PrepareHuman ( 0 , class_mechanic , 0 ) ;
8618: LD_INT 0
8620: PPUSH
8621: LD_INT 3
8623: PPUSH
8624: LD_INT 0
8626: PPUSH
8627: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8631: LD_ADDR_OWVAR 30
8635: PUSH
8636: LD_INT 0
8638: PUSH
8639: LD_INT 0
8641: PUSH
8642: LD_INT 0
8644: PUSH
8645: LD_INT 0
8647: PUSH
8648: EMPTY
8649: LIST
8650: LIST
8651: LIST
8652: LIST
8653: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8654: LD_ADDR_OWVAR 31
8658: PUSH
8659: LD_INT 0
8661: PPUSH
8662: LD_INT 3
8664: PPUSH
8665: CALL_OW 12
8669: PUSH
8670: LD_INT 0
8672: PPUSH
8673: LD_INT 3
8675: PPUSH
8676: CALL_OW 12
8680: PUSH
8681: LD_INT 1
8683: PUSH
8684: LD_INT 0
8686: PPUSH
8687: LD_INT 3
8689: PPUSH
8690: CALL_OW 12
8694: PUSH
8695: EMPTY
8696: LIST
8697: LIST
8698: LIST
8699: LIST
8700: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8701: LD_ADDR_EXP 32
8705: PUSH
8706: LD_EXP 32
8710: PUSH
8711: CALL_OW 45
8715: UNION
8716: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8717: CALL_OW 44
8721: PPUSH
8722: LD_EXP 32
8726: PUSH
8727: LD_VAR 0 3
8731: ARRAY
8732: PPUSH
8733: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8737: LD_EXP 32
8741: PUSH
8742: LD_VAR 0 3
8746: ARRAY
8747: PPUSH
8748: LD_INT 70
8750: PPUSH
8751: LD_INT 95
8753: PPUSH
8754: CALL_OW 12
8758: PPUSH
8759: CALL_OW 240
// end ;
8763: GO 8549
8765: POP
8766: POP
// for i := number_of_trucks + number_of_guns + 1 to number_of_trucks + number_of_guns + number_of_gatlings do
8767: LD_ADDR_VAR 0 3
8771: PUSH
8772: DOUBLE
8773: LD_EXP 38
8777: PUSH
8778: LD_EXP 39
8782: PLUS
8783: PUSH
8784: LD_INT 1
8786: PLUS
8787: DEC
8788: ST_TO_ADDR
8789: LD_EXP 38
8793: PUSH
8794: LD_EXP 39
8798: PLUS
8799: PUSH
8800: LD_EXP 41
8804: PLUS
8805: PUSH
8806: FOR_TO
8807: IFFALSE 9022
// begin uc_side := ally ;
8809: LD_ADDR_OWVAR 20
8813: PUSH
8814: LD_EXP 5
8818: ST_TO_ADDR
// uc_nation := nation_russian ;
8819: LD_ADDR_OWVAR 21
8823: PUSH
8824: LD_INT 3
8826: ST_TO_ADDR
// uc_direction := 3 ;
8827: LD_ADDR_OWVAR 24
8831: PUSH
8832: LD_INT 3
8834: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8835: LD_ADDR_OWVAR 37
8839: PUSH
8840: LD_INT 21
8842: ST_TO_ADDR
// vc_engine := engine_combustion ;
8843: LD_ADDR_OWVAR 39
8847: PUSH
8848: LD_INT 1
8850: ST_TO_ADDR
// vc_weapon := ru_gatling_gun ;
8851: LD_ADDR_OWVAR 40
8855: PUSH
8856: LD_INT 43
8858: ST_TO_ADDR
// vc_control := control_manual ;
8859: LD_ADDR_OWVAR 38
8863: PUSH
8864: LD_INT 1
8866: ST_TO_ADDR
// hc_name :=  ;
8867: LD_ADDR_OWVAR 26
8871: PUSH
8872: LD_STRING 
8874: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
8875: LD_INT 1
8877: PPUSH
8878: LD_INT 0
8880: PPUSH
8881: LD_INT 0
8883: PPUSH
8884: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8888: LD_ADDR_OWVAR 30
8892: PUSH
8893: LD_INT 0
8895: PUSH
8896: LD_INT 0
8898: PUSH
8899: LD_INT 0
8901: PUSH
8902: LD_INT 0
8904: PUSH
8905: EMPTY
8906: LIST
8907: LIST
8908: LIST
8909: LIST
8910: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8911: LD_ADDR_OWVAR 31
8915: PUSH
8916: LD_INT 0
8918: PPUSH
8919: LD_INT 3
8921: PPUSH
8922: CALL_OW 12
8926: PUSH
8927: LD_INT 0
8929: PPUSH
8930: LD_INT 3
8932: PPUSH
8933: CALL_OW 12
8937: PUSH
8938: LD_INT 1
8940: PUSH
8941: LD_INT 0
8943: PPUSH
8944: LD_INT 3
8946: PPUSH
8947: CALL_OW 12
8951: PUSH
8952: EMPTY
8953: LIST
8954: LIST
8955: LIST
8956: LIST
8957: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8958: LD_ADDR_EXP 32
8962: PUSH
8963: LD_EXP 32
8967: PUSH
8968: CALL_OW 45
8972: UNION
8973: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8974: CALL_OW 44
8978: PPUSH
8979: LD_EXP 32
8983: PUSH
8984: LD_VAR 0 3
8988: ARRAY
8989: PPUSH
8990: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8994: LD_EXP 32
8998: PUSH
8999: LD_VAR 0 3
9003: ARRAY
9004: PPUSH
9005: LD_INT 70
9007: PPUSH
9008: LD_INT 95
9010: PPUSH
9011: CALL_OW 12
9015: PPUSH
9016: CALL_OW 240
// end ;
9020: GO 8806
9022: POP
9023: POP
// for i := number_of_trucks + number_of_guns + number_of_gatlings + 1 to number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns do
9024: LD_ADDR_VAR 0 3
9028: PUSH
9029: DOUBLE
9030: LD_EXP 38
9034: PUSH
9035: LD_EXP 39
9039: PLUS
9040: PUSH
9041: LD_EXP 41
9045: PLUS
9046: PUSH
9047: LD_INT 1
9049: PLUS
9050: DEC
9051: ST_TO_ADDR
9052: LD_EXP 38
9056: PUSH
9057: LD_EXP 39
9061: PLUS
9062: PUSH
9063: LD_EXP 41
9067: PLUS
9068: PUSH
9069: LD_EXP 40
9073: PLUS
9074: PUSH
9075: FOR_TO
9076: IFFALSE 9317
// begin uc_side := ally ;
9078: LD_ADDR_OWVAR 20
9082: PUSH
9083: LD_EXP 5
9087: ST_TO_ADDR
// uc_nation := nation_russian ;
9088: LD_ADDR_OWVAR 21
9092: PUSH
9093: LD_INT 3
9095: ST_TO_ADDR
// uc_direction := 3 ;
9096: LD_ADDR_OWVAR 24
9100: PUSH
9101: LD_INT 3
9103: ST_TO_ADDR
// vc_chassis := ru_heavy_wheeled ;
9104: LD_ADDR_OWVAR 37
9108: PUSH
9109: LD_INT 23
9111: ST_TO_ADDR
// vc_engine := engine_combustion ;
9112: LD_ADDR_OWVAR 39
9116: PUSH
9117: LD_INT 1
9119: ST_TO_ADDR
// vc_weapon := ru_heavy_gun ;
9120: LD_ADDR_OWVAR 40
9124: PUSH
9125: LD_INT 46
9127: ST_TO_ADDR
// vc_control := control_manual ;
9128: LD_ADDR_OWVAR 38
9132: PUSH
9133: LD_INT 1
9135: ST_TO_ADDR
// hc_name :=  ;
9136: LD_ADDR_OWVAR 26
9140: PUSH
9141: LD_STRING 
9143: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
9144: LD_INT 1
9146: PPUSH
9147: LD_INT 0
9149: PPUSH
9150: LD_INT 0
9152: PPUSH
9153: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
9157: LD_ADDR_OWVAR 30
9161: PUSH
9162: LD_INT 0
9164: PUSH
9165: LD_INT 0
9167: PUSH
9168: LD_INT 0
9170: PUSH
9171: LD_INT 0
9173: PUSH
9174: EMPTY
9175: LIST
9176: LIST
9177: LIST
9178: LIST
9179: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
9180: LD_ADDR_OWVAR 31
9184: PUSH
9185: LD_INT 0
9187: PPUSH
9188: LD_INT 3
9190: PPUSH
9191: CALL_OW 12
9195: PUSH
9196: LD_INT 0
9198: PPUSH
9199: LD_INT 3
9201: PPUSH
9202: CALL_OW 12
9206: PUSH
9207: LD_INT 1
9209: PUSH
9210: LD_INT 0
9212: PPUSH
9213: LD_INT 3
9215: PPUSH
9216: CALL_OW 12
9220: PUSH
9221: EMPTY
9222: LIST
9223: LIST
9224: LIST
9225: LIST
9226: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
9227: LD_ADDR_EXP 32
9231: PUSH
9232: LD_EXP 32
9236: PUSH
9237: CALL_OW 45
9241: UNION
9242: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
9243: CALL_OW 44
9247: PPUSH
9248: LD_EXP 32
9252: PUSH
9253: LD_VAR 0 3
9257: ARRAY
9258: PPUSH
9259: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
9263: LD_EXP 32
9267: PUSH
9268: LD_VAR 0 3
9272: ARRAY
9273: PPUSH
9274: LD_INT 70
9276: PPUSH
9277: LD_INT 95
9279: PPUSH
9280: CALL_OW 12
9284: PPUSH
9285: CALL_OW 240
// SetLives ( Convoy [ i ] , Rand ( 500 , 1000 ) ) ;
9289: LD_EXP 32
9293: PUSH
9294: LD_VAR 0 3
9298: ARRAY
9299: PPUSH
9300: LD_INT 500
9302: PPUSH
9303: LD_INT 1000
9305: PPUSH
9306: CALL_OW 12
9310: PPUSH
9311: CALL_OW 234
// end ;
9315: GO 9075
9317: POP
9318: POP
// for i := number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + 1 to number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + number_of_hv_mchn_gun do
9319: LD_ADDR_VAR 0 3
9323: PUSH
9324: DOUBLE
9325: LD_EXP 38
9329: PUSH
9330: LD_EXP 39
9334: PLUS
9335: PUSH
9336: LD_EXP 41
9340: PLUS
9341: PUSH
9342: LD_EXP 40
9346: PLUS
9347: PUSH
9348: LD_INT 1
9350: PLUS
9351: DEC
9352: ST_TO_ADDR
9353: LD_EXP 38
9357: PUSH
9358: LD_EXP 39
9362: PLUS
9363: PUSH
9364: LD_EXP 41
9368: PLUS
9369: PUSH
9370: LD_EXP 40
9374: PLUS
9375: PUSH
9376: LD_EXP 42
9380: PLUS
9381: PUSH
9382: FOR_TO
9383: IFFALSE 9624
// begin uc_side := ally ;
9385: LD_ADDR_OWVAR 20
9389: PUSH
9390: LD_EXP 5
9394: ST_TO_ADDR
// uc_nation := nation_russian ;
9395: LD_ADDR_OWVAR 21
9399: PUSH
9400: LD_INT 3
9402: ST_TO_ADDR
// uc_direction := 3 ;
9403: LD_ADDR_OWVAR 24
9407: PUSH
9408: LD_INT 3
9410: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
9411: LD_ADDR_OWVAR 37
9415: PUSH
9416: LD_INT 21
9418: ST_TO_ADDR
// vc_engine := engine_combustion ;
9419: LD_ADDR_OWVAR 39
9423: PUSH
9424: LD_INT 1
9426: ST_TO_ADDR
// vc_weapon := ru_heavy_machine_gun ;
9427: LD_ADDR_OWVAR 40
9431: PUSH
9432: LD_INT 42
9434: ST_TO_ADDR
// vc_control := control_manual ;
9435: LD_ADDR_OWVAR 38
9439: PUSH
9440: LD_INT 1
9442: ST_TO_ADDR
// hc_name :=  ;
9443: LD_ADDR_OWVAR 26
9447: PUSH
9448: LD_STRING 
9450: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
9451: LD_INT 1
9453: PPUSH
9454: LD_INT 0
9456: PPUSH
9457: LD_INT 0
9459: PPUSH
9460: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
9464: LD_ADDR_OWVAR 30
9468: PUSH
9469: LD_INT 0
9471: PUSH
9472: LD_INT 0
9474: PUSH
9475: LD_INT 0
9477: PUSH
9478: LD_INT 0
9480: PUSH
9481: EMPTY
9482: LIST
9483: LIST
9484: LIST
9485: LIST
9486: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
9487: LD_ADDR_OWVAR 31
9491: PUSH
9492: LD_INT 0
9494: PPUSH
9495: LD_INT 3
9497: PPUSH
9498: CALL_OW 12
9502: PUSH
9503: LD_INT 0
9505: PPUSH
9506: LD_INT 3
9508: PPUSH
9509: CALL_OW 12
9513: PUSH
9514: LD_INT 1
9516: PUSH
9517: LD_INT 0
9519: PPUSH
9520: LD_INT 3
9522: PPUSH
9523: CALL_OW 12
9527: PUSH
9528: EMPTY
9529: LIST
9530: LIST
9531: LIST
9532: LIST
9533: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
9534: LD_ADDR_EXP 32
9538: PUSH
9539: LD_EXP 32
9543: PUSH
9544: CALL_OW 45
9548: UNION
9549: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
9550: CALL_OW 44
9554: PPUSH
9555: LD_EXP 32
9559: PUSH
9560: LD_VAR 0 3
9564: ARRAY
9565: PPUSH
9566: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
9570: LD_EXP 32
9574: PUSH
9575: LD_VAR 0 3
9579: ARRAY
9580: PPUSH
9581: LD_INT 70
9583: PPUSH
9584: LD_INT 95
9586: PPUSH
9587: CALL_OW 12
9591: PPUSH
9592: CALL_OW 240
// SetLives ( Convoy [ i ] , Rand ( 500 , 1000 ) ) ;
9596: LD_EXP 32
9600: PUSH
9601: LD_VAR 0 3
9605: ARRAY
9606: PPUSH
9607: LD_INT 500
9609: PPUSH
9610: LD_INT 1000
9612: PPUSH
9613: CALL_OW 12
9617: PPUSH
9618: CALL_OW 234
// end ;
9622: GO 9382
9624: POP
9625: POP
// rand_convoy := rand_convoy union Convoy [ 1 ] ;
9626: LD_ADDR_VAR 0 4
9630: PUSH
9631: LD_VAR 0 4
9635: PUSH
9636: LD_EXP 32
9640: PUSH
9641: LD_INT 1
9643: ARRAY
9644: UNION
9645: ST_TO_ADDR
// Convoy := Convoy diff Convoy [ 1 ] ;
9646: LD_ADDR_EXP 32
9650: PUSH
9651: LD_EXP 32
9655: PUSH
9656: LD_EXP 32
9660: PUSH
9661: LD_INT 1
9663: ARRAY
9664: DIFF
9665: ST_TO_ADDR
// Convoy_length := 0 + Convoy ;
9666: LD_ADDR_EXP 33
9670: PUSH
9671: LD_INT 0
9673: PUSH
9674: LD_EXP 32
9678: PLUS
9679: ST_TO_ADDR
// for i := 1 to Convoy_length do
9680: LD_ADDR_VAR 0 3
9684: PUSH
9685: DOUBLE
9686: LD_INT 1
9688: DEC
9689: ST_TO_ADDR
9690: LD_EXP 33
9694: PUSH
9695: FOR_TO
9696: IFFALSE 9766
// begin rand_vehicle := Rand ( 1 , 0 + Convoy ) ;
9698: LD_ADDR_VAR 0 5
9702: PUSH
9703: LD_INT 1
9705: PPUSH
9706: LD_INT 0
9708: PUSH
9709: LD_EXP 32
9713: PLUS
9714: PPUSH
9715: CALL_OW 12
9719: ST_TO_ADDR
// rand_convoy := rand_convoy union Convoy [ rand_vehicle ] ;
9720: LD_ADDR_VAR 0 4
9724: PUSH
9725: LD_VAR 0 4
9729: PUSH
9730: LD_EXP 32
9734: PUSH
9735: LD_VAR 0 5
9739: ARRAY
9740: UNION
9741: ST_TO_ADDR
// Convoy := Convoy diff Convoy [ rand_vehicle ] ;
9742: LD_ADDR_EXP 32
9746: PUSH
9747: LD_EXP 32
9751: PUSH
9752: LD_EXP 32
9756: PUSH
9757: LD_VAR 0 5
9761: ARRAY
9762: DIFF
9763: ST_TO_ADDR
// end ;
9764: GO 9695
9766: POP
9767: POP
// Convoy := rand_convoy ;
9768: LD_ADDR_EXP 32
9772: PUSH
9773: LD_VAR 0 4
9777: ST_TO_ADDR
// for i := 0 + Convoy downto 1 do
9778: LD_ADDR_VAR 0 3
9782: PUSH
9783: DOUBLE
9784: LD_INT 0
9786: PUSH
9787: LD_EXP 32
9791: PLUS
9792: INC
9793: ST_TO_ADDR
9794: LD_INT 1
9796: PUSH
9797: FOR_DOWNTO
9798: IFFALSE 9839
// if GetWeapon ( Convoy [ i ] ) = ru_cargo_bay then
9800: LD_EXP 32
9804: PUSH
9805: LD_VAR 0 3
9809: ARRAY
9810: PPUSH
9811: CALL_OW 264
9815: PUSH
9816: LD_INT 51
9818: EQUAL
9819: IFFALSE 9837
// FirstCargo := Convoy [ i ] ;
9821: LD_ADDR_EXP 35
9825: PUSH
9826: LD_EXP 32
9830: PUSH
9831: LD_VAR 0 3
9835: ARRAY
9836: ST_TO_ADDR
9837: GO 9797
9839: POP
9840: POP
// end ;
9841: LD_VAR 0 1
9845: RET
// var field_pocet , field_mezera , field_delay ; every 0 0$1 marked 2 do var g , h , delka ;
9846: GO 9848
9848: DISABLE
9849: LD_INT 0
9851: PPUSH
9852: PPUSH
9853: PPUSH
// begin enable ( 7 ) ;
9854: LD_INT 7
9856: ENABLE_MARKED
// enable ( 18 ) ;
9857: LD_INT 18
9859: ENABLE_MARKED
// delka := number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + number_of_hv_mchn_gun ;
9860: LD_ADDR_VAR 0 3
9864: PUSH
9865: LD_EXP 38
9869: PUSH
9870: LD_EXP 39
9874: PLUS
9875: PUSH
9876: LD_EXP 41
9880: PLUS
9881: PUSH
9882: LD_EXP 40
9886: PLUS
9887: PUSH
9888: LD_EXP 42
9892: PLUS
9893: ST_TO_ADDR
// field_pocet := [ ] ;
9894: LD_ADDR_LOC 5
9898: PUSH
9899: EMPTY
9900: ST_TO_ADDR
// field_mezera := [ ] ;
9901: LD_ADDR_LOC 6
9905: PUSH
9906: EMPTY
9907: ST_TO_ADDR
// field_delay := [ ] ;
9908: LD_ADDR_LOC 7
9912: PUSH
9913: EMPTY
9914: ST_TO_ADDR
// repeat h := Rand ( 3 , 6 ) ;
9915: LD_ADDR_VAR 0 2
9919: PUSH
9920: LD_INT 3
9922: PPUSH
9923: LD_INT 6
9925: PPUSH
9926: CALL_OW 12
9930: ST_TO_ADDR
// delka := delka - h ;
9931: LD_ADDR_VAR 0 3
9935: PUSH
9936: LD_VAR 0 3
9940: PUSH
9941: LD_VAR 0 2
9945: MINUS
9946: ST_TO_ADDR
// if delka > 0 then
9947: LD_VAR 0 3
9951: PUSH
9952: LD_INT 0
9954: GREATER
9955: IFFALSE 9975
// field_pocet := field_pocet ^ h else
9957: LD_ADDR_LOC 5
9961: PUSH
9962: LD_LOC 5
9966: PUSH
9967: LD_VAR 0 2
9971: ADD
9972: ST_TO_ADDR
9973: GO 9997
// field_pocet := field_pocet ^ ( delka + h ) ;
9975: LD_ADDR_LOC 5
9979: PUSH
9980: LD_LOC 5
9984: PUSH
9985: LD_VAR 0 3
9989: PUSH
9990: LD_VAR 0 2
9994: PLUS
9995: ADD
9996: ST_TO_ADDR
// until delka <= 0 ;
9997: LD_VAR 0 3
10001: PUSH
10002: LD_INT 0
10004: LESSEQUAL
10005: IFFALSE 9915
// for g := 1 to field_pocet do
10007: LD_ADDR_VAR 0 1
10011: PUSH
10012: DOUBLE
10013: LD_INT 1
10015: DEC
10016: ST_TO_ADDR
10017: LD_LOC 5
10021: PUSH
10022: FOR_TO
10023: IFFALSE 10059
// begin h := Rand ( 13 , 15 ) ;
10025: LD_ADDR_VAR 0 2
10029: PUSH
10030: LD_INT 13
10032: PPUSH
10033: LD_INT 15
10035: PPUSH
10036: CALL_OW 12
10040: ST_TO_ADDR
// field_mezera := field_mezera ^ h ;
10041: LD_ADDR_LOC 6
10045: PUSH
10046: LD_LOC 6
10050: PUSH
10051: LD_VAR 0 2
10055: ADD
10056: ST_TO_ADDR
// end ;
10057: GO 10022
10059: POP
10060: POP
// for g := 1 to field_pocet do
10061: LD_ADDR_VAR 0 1
10065: PUSH
10066: DOUBLE
10067: LD_INT 1
10069: DEC
10070: ST_TO_ADDR
10071: LD_LOC 5
10075: PUSH
10076: FOR_TO
10077: IFFALSE 10125
// begin h := Rand ( convoy_delay [ 1 ] , convoy_delay [ 2 ] ) ;
10079: LD_ADDR_VAR 0 2
10083: PUSH
10084: LD_EXP 34
10088: PUSH
10089: LD_INT 1
10091: ARRAY
10092: PPUSH
10093: LD_EXP 34
10097: PUSH
10098: LD_INT 2
10100: ARRAY
10101: PPUSH
10102: CALL_OW 12
10106: ST_TO_ADDR
// field_delay := field_delay ^ h ;
10107: LD_ADDR_LOC 7
10111: PUSH
10112: LD_LOC 7
10116: PUSH
10117: LD_VAR 0 2
10121: ADD
10122: ST_TO_ADDR
// end ;
10123: GO 10076
10125: POP
10126: POP
// for g := 1 to field_pocet do
10127: LD_ADDR_VAR 0 1
10131: PUSH
10132: DOUBLE
10133: LD_INT 1
10135: DEC
10136: ST_TO_ADDR
10137: LD_LOC 5
10141: PUSH
10142: FOR_TO
10143: IFFALSE 10241
// begin make_convoy ( field_pocet [ g ] , field_mezera [ g ] , field_delay [ g ] ) ;
10145: LD_LOC 5
10149: PUSH
10150: LD_VAR 0 1
10154: ARRAY
10155: PPUSH
10156: LD_LOC 6
10160: PUSH
10161: LD_VAR 0 1
10165: ARRAY
10166: PPUSH
10167: LD_LOC 7
10171: PUSH
10172: LD_VAR 0 1
10176: ARRAY
10177: PPUSH
10178: CALL 10283 0 3
// if g = 0 + field_pocet then
10182: LD_VAR 0 1
10186: PUSH
10187: LD_INT 0
10189: PUSH
10190: LD_LOC 5
10194: PLUS
10195: EQUAL
10196: IFFALSE 10239
// begin Wait ( 1 1$30 ) ;
10198: LD_INT 3150
10200: PPUSH
10201: CALL_OW 67
// disable ( 4 ) ;
10205: LD_INT 4
10207: DISABLE_MARKED
// Disabled4 := true ;
10208: LD_ADDR_EXP 66
10212: PUSH
10213: LD_INT 1
10215: ST_TO_ADDR
// Wait ( 0 0$1 ) ;
10216: LD_INT 35
10218: PPUSH
10219: CALL_OW 67
// Dialogue4 ;
10223: CALL 6184 0 0
// Wait ( attack_offset ) ;
10227: LD_EXP 48
10231: PPUSH
10232: CALL_OW 67
// enable ( 11 ) ;
10236: LD_INT 11
10238: ENABLE_MARKED
// end ; end ;
10239: GO 10142
10241: POP
10242: POP
// end ;
10243: PPOPN 3
10245: END
// every 0 0$1 + 0 0$0.1 marked 7 do
10246: GO 10248
10248: DISABLE
// begin enable ;
10249: ENABLE
// if IsInArea ( FirstCargo , KnollArea ) then
10250: LD_EXP 35
10254: PPUSH
10255: LD_INT 2
10257: PPUSH
10258: CALL_OW 308
10262: IFFALSE 10282
// begin disable ( 7 ) ;
10264: LD_INT 7
10266: DISABLE_MARKED
// Dialogue2a ;
10267: CALL 5654 0 0
// Wait ( 2 2$20 ) ;
10271: LD_INT 4900
10273: PPUSH
10274: CALL_OW 67
// Dialogue2b ;
10278: CALL 5679 0 0
// end ; end ;
10282: END
// export function make_convoy ( trucks , delay , after_delay ) ; var k , cargowaypoints1 , cargowaypoints2 , waypoints , points ; begin
10283: LD_INT 0
10285: PPUSH
10286: PPUSH
10287: PPUSH
10288: PPUSH
10289: PPUSH
10290: PPUSH
// delay := delay * 35 ;
10291: LD_ADDR_VAR 0 2
10295: PUSH
10296: LD_VAR 0 2
10300: PUSH
10301: LD_INT 35
10303: MUL
10304: ST_TO_ADDR
// for k := 1 to trucks do
10305: LD_ADDR_VAR 0 5
10309: PUSH
10310: DOUBLE
10311: LD_INT 1
10313: DEC
10314: ST_TO_ADDR
10315: LD_VAR 0 1
10319: PUSH
10320: FOR_TO
10321: IFFALSE 11345
// begin pocet := pocet + 1 ;
10323: LD_ADDR_EXP 46
10327: PUSH
10328: LD_EXP 46
10332: PUSH
10333: LD_INT 1
10335: PLUS
10336: ST_TO_ADDR
// waypoints := [ [ 102 , 4 ] , [ 98 , 6 ] , [ 95 , 8 ] , [ 92 , 11 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 82 , 19 ] , [ 80 , 23 ] , [ 77 , 25 ] , [ 74 , 27 ] , [ 70 , 29 ] , [ 67 , 31 ] , [ 63 , 33 ] , [ 59 , 35 ] , [ 56 , 37 ] , [ 53 , 39 ] , [ 51 , 41 ] , [ 50 , 45 ] , [ 50 , 49 ] , [ 51 , 55 ] , [ 52 , 60 ] , [ 56 , 66 ] , [ 59 , 71 ] , [ 62 , 77 ] , [ 65 , 83 ] , [ 68 , 89 ] , [ 70 , 94 ] , [ 72 , 100 ] , [ 73 , 105 ] , [ 73 , 111 ] , [ 71 , 115 ] , [ 71 , 122 ] , [ 72 , 129 ] , [ 72 , 134 ] , [ 72 , 137 ] ] ;
10337: LD_ADDR_VAR 0 8
10341: PUSH
10342: LD_INT 102
10344: PUSH
10345: LD_INT 4
10347: PUSH
10348: EMPTY
10349: LIST
10350: LIST
10351: PUSH
10352: LD_INT 98
10354: PUSH
10355: LD_INT 6
10357: PUSH
10358: EMPTY
10359: LIST
10360: LIST
10361: PUSH
10362: LD_INT 95
10364: PUSH
10365: LD_INT 8
10367: PUSH
10368: EMPTY
10369: LIST
10370: LIST
10371: PUSH
10372: LD_INT 92
10374: PUSH
10375: LD_INT 11
10377: PUSH
10378: EMPTY
10379: LIST
10380: LIST
10381: PUSH
10382: LD_INT 90
10384: PUSH
10385: LD_INT 14
10387: PUSH
10388: EMPTY
10389: LIST
10390: LIST
10391: PUSH
10392: LD_INT 87
10394: PUSH
10395: LD_INT 17
10397: PUSH
10398: EMPTY
10399: LIST
10400: LIST
10401: PUSH
10402: LD_INT 82
10404: PUSH
10405: LD_INT 19
10407: PUSH
10408: EMPTY
10409: LIST
10410: LIST
10411: PUSH
10412: LD_INT 80
10414: PUSH
10415: LD_INT 23
10417: PUSH
10418: EMPTY
10419: LIST
10420: LIST
10421: PUSH
10422: LD_INT 77
10424: PUSH
10425: LD_INT 25
10427: PUSH
10428: EMPTY
10429: LIST
10430: LIST
10431: PUSH
10432: LD_INT 74
10434: PUSH
10435: LD_INT 27
10437: PUSH
10438: EMPTY
10439: LIST
10440: LIST
10441: PUSH
10442: LD_INT 70
10444: PUSH
10445: LD_INT 29
10447: PUSH
10448: EMPTY
10449: LIST
10450: LIST
10451: PUSH
10452: LD_INT 67
10454: PUSH
10455: LD_INT 31
10457: PUSH
10458: EMPTY
10459: LIST
10460: LIST
10461: PUSH
10462: LD_INT 63
10464: PUSH
10465: LD_INT 33
10467: PUSH
10468: EMPTY
10469: LIST
10470: LIST
10471: PUSH
10472: LD_INT 59
10474: PUSH
10475: LD_INT 35
10477: PUSH
10478: EMPTY
10479: LIST
10480: LIST
10481: PUSH
10482: LD_INT 56
10484: PUSH
10485: LD_INT 37
10487: PUSH
10488: EMPTY
10489: LIST
10490: LIST
10491: PUSH
10492: LD_INT 53
10494: PUSH
10495: LD_INT 39
10497: PUSH
10498: EMPTY
10499: LIST
10500: LIST
10501: PUSH
10502: LD_INT 51
10504: PUSH
10505: LD_INT 41
10507: PUSH
10508: EMPTY
10509: LIST
10510: LIST
10511: PUSH
10512: LD_INT 50
10514: PUSH
10515: LD_INT 45
10517: PUSH
10518: EMPTY
10519: LIST
10520: LIST
10521: PUSH
10522: LD_INT 50
10524: PUSH
10525: LD_INT 49
10527: PUSH
10528: EMPTY
10529: LIST
10530: LIST
10531: PUSH
10532: LD_INT 51
10534: PUSH
10535: LD_INT 55
10537: PUSH
10538: EMPTY
10539: LIST
10540: LIST
10541: PUSH
10542: LD_INT 52
10544: PUSH
10545: LD_INT 60
10547: PUSH
10548: EMPTY
10549: LIST
10550: LIST
10551: PUSH
10552: LD_INT 56
10554: PUSH
10555: LD_INT 66
10557: PUSH
10558: EMPTY
10559: LIST
10560: LIST
10561: PUSH
10562: LD_INT 59
10564: PUSH
10565: LD_INT 71
10567: PUSH
10568: EMPTY
10569: LIST
10570: LIST
10571: PUSH
10572: LD_INT 62
10574: PUSH
10575: LD_INT 77
10577: PUSH
10578: EMPTY
10579: LIST
10580: LIST
10581: PUSH
10582: LD_INT 65
10584: PUSH
10585: LD_INT 83
10587: PUSH
10588: EMPTY
10589: LIST
10590: LIST
10591: PUSH
10592: LD_INT 68
10594: PUSH
10595: LD_INT 89
10597: PUSH
10598: EMPTY
10599: LIST
10600: LIST
10601: PUSH
10602: LD_INT 70
10604: PUSH
10605: LD_INT 94
10607: PUSH
10608: EMPTY
10609: LIST
10610: LIST
10611: PUSH
10612: LD_INT 72
10614: PUSH
10615: LD_INT 100
10617: PUSH
10618: EMPTY
10619: LIST
10620: LIST
10621: PUSH
10622: LD_INT 73
10624: PUSH
10625: LD_INT 105
10627: PUSH
10628: EMPTY
10629: LIST
10630: LIST
10631: PUSH
10632: LD_INT 73
10634: PUSH
10635: LD_INT 111
10637: PUSH
10638: EMPTY
10639: LIST
10640: LIST
10641: PUSH
10642: LD_INT 71
10644: PUSH
10645: LD_INT 115
10647: PUSH
10648: EMPTY
10649: LIST
10650: LIST
10651: PUSH
10652: LD_INT 71
10654: PUSH
10655: LD_INT 122
10657: PUSH
10658: EMPTY
10659: LIST
10660: LIST
10661: PUSH
10662: LD_INT 72
10664: PUSH
10665: LD_INT 129
10667: PUSH
10668: EMPTY
10669: LIST
10670: LIST
10671: PUSH
10672: LD_INT 72
10674: PUSH
10675: LD_INT 134
10677: PUSH
10678: EMPTY
10679: LIST
10680: LIST
10681: PUSH
10682: LD_INT 72
10684: PUSH
10685: LD_INT 137
10687: PUSH
10688: EMPTY
10689: LIST
10690: LIST
10691: PUSH
10692: EMPTY
10693: LIST
10694: LIST
10695: LIST
10696: LIST
10697: LIST
10698: LIST
10699: LIST
10700: LIST
10701: LIST
10702: LIST
10703: LIST
10704: LIST
10705: LIST
10706: LIST
10707: LIST
10708: LIST
10709: LIST
10710: LIST
10711: LIST
10712: LIST
10713: LIST
10714: LIST
10715: LIST
10716: LIST
10717: LIST
10718: LIST
10719: LIST
10720: LIST
10721: LIST
10722: LIST
10723: LIST
10724: LIST
10725: LIST
10726: LIST
10727: LIST
10728: ST_TO_ADDR
// cargowaypoints1 := [ [ 102 , 4 ] , [ 98 , 6 ] , [ 95 , 8 ] , [ 92 , 11 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 82 , 19 ] , [ 80 , 23 ] , [ 77 , 25 ] , [ 74 , 27 ] , [ 70 , 29 ] , [ 67 , 31 ] , [ 63 , 33 ] , [ 59 , 35 ] , [ 56 , 37 ] , [ 53 , 39 ] , [ 51 , 41 ] , [ 50 , 45 ] , [ 50 , 49 ] , [ 51 , 55 ] , [ 52 , 60 ] , [ 56 , 66 ] , [ 59 , 71 ] , [ 62 , 77 ] , [ 88 , 85 ] ] ;
10729: LD_ADDR_VAR 0 6
10733: PUSH
10734: LD_INT 102
10736: PUSH
10737: LD_INT 4
10739: PUSH
10740: EMPTY
10741: LIST
10742: LIST
10743: PUSH
10744: LD_INT 98
10746: PUSH
10747: LD_INT 6
10749: PUSH
10750: EMPTY
10751: LIST
10752: LIST
10753: PUSH
10754: LD_INT 95
10756: PUSH
10757: LD_INT 8
10759: PUSH
10760: EMPTY
10761: LIST
10762: LIST
10763: PUSH
10764: LD_INT 92
10766: PUSH
10767: LD_INT 11
10769: PUSH
10770: EMPTY
10771: LIST
10772: LIST
10773: PUSH
10774: LD_INT 90
10776: PUSH
10777: LD_INT 14
10779: PUSH
10780: EMPTY
10781: LIST
10782: LIST
10783: PUSH
10784: LD_INT 87
10786: PUSH
10787: LD_INT 17
10789: PUSH
10790: EMPTY
10791: LIST
10792: LIST
10793: PUSH
10794: LD_INT 82
10796: PUSH
10797: LD_INT 19
10799: PUSH
10800: EMPTY
10801: LIST
10802: LIST
10803: PUSH
10804: LD_INT 80
10806: PUSH
10807: LD_INT 23
10809: PUSH
10810: EMPTY
10811: LIST
10812: LIST
10813: PUSH
10814: LD_INT 77
10816: PUSH
10817: LD_INT 25
10819: PUSH
10820: EMPTY
10821: LIST
10822: LIST
10823: PUSH
10824: LD_INT 74
10826: PUSH
10827: LD_INT 27
10829: PUSH
10830: EMPTY
10831: LIST
10832: LIST
10833: PUSH
10834: LD_INT 70
10836: PUSH
10837: LD_INT 29
10839: PUSH
10840: EMPTY
10841: LIST
10842: LIST
10843: PUSH
10844: LD_INT 67
10846: PUSH
10847: LD_INT 31
10849: PUSH
10850: EMPTY
10851: LIST
10852: LIST
10853: PUSH
10854: LD_INT 63
10856: PUSH
10857: LD_INT 33
10859: PUSH
10860: EMPTY
10861: LIST
10862: LIST
10863: PUSH
10864: LD_INT 59
10866: PUSH
10867: LD_INT 35
10869: PUSH
10870: EMPTY
10871: LIST
10872: LIST
10873: PUSH
10874: LD_INT 56
10876: PUSH
10877: LD_INT 37
10879: PUSH
10880: EMPTY
10881: LIST
10882: LIST
10883: PUSH
10884: LD_INT 53
10886: PUSH
10887: LD_INT 39
10889: PUSH
10890: EMPTY
10891: LIST
10892: LIST
10893: PUSH
10894: LD_INT 51
10896: PUSH
10897: LD_INT 41
10899: PUSH
10900: EMPTY
10901: LIST
10902: LIST
10903: PUSH
10904: LD_INT 50
10906: PUSH
10907: LD_INT 45
10909: PUSH
10910: EMPTY
10911: LIST
10912: LIST
10913: PUSH
10914: LD_INT 50
10916: PUSH
10917: LD_INT 49
10919: PUSH
10920: EMPTY
10921: LIST
10922: LIST
10923: PUSH
10924: LD_INT 51
10926: PUSH
10927: LD_INT 55
10929: PUSH
10930: EMPTY
10931: LIST
10932: LIST
10933: PUSH
10934: LD_INT 52
10936: PUSH
10937: LD_INT 60
10939: PUSH
10940: EMPTY
10941: LIST
10942: LIST
10943: PUSH
10944: LD_INT 56
10946: PUSH
10947: LD_INT 66
10949: PUSH
10950: EMPTY
10951: LIST
10952: LIST
10953: PUSH
10954: LD_INT 59
10956: PUSH
10957: LD_INT 71
10959: PUSH
10960: EMPTY
10961: LIST
10962: LIST
10963: PUSH
10964: LD_INT 62
10966: PUSH
10967: LD_INT 77
10969: PUSH
10970: EMPTY
10971: LIST
10972: LIST
10973: PUSH
10974: LD_INT 88
10976: PUSH
10977: LD_INT 85
10979: PUSH
10980: EMPTY
10981: LIST
10982: LIST
10983: PUSH
10984: EMPTY
10985: LIST
10986: LIST
10987: LIST
10988: LIST
10989: LIST
10990: LIST
10991: LIST
10992: LIST
10993: LIST
10994: LIST
10995: LIST
10996: LIST
10997: LIST
10998: LIST
10999: LIST
11000: LIST
11001: LIST
11002: LIST
11003: LIST
11004: LIST
11005: LIST
11006: LIST
11007: LIST
11008: LIST
11009: LIST
11010: ST_TO_ADDR
// cargowaypoints2 := [ [ 68 , 89 ] , [ 70 , 94 ] , [ 72 , 100 ] , [ 73 , 105 ] , [ 73 , 111 ] , [ 71 , 115 ] , [ 71 , 122 ] , [ 72 , 129 ] , [ 72 , 134 ] , [ 72 , 137 ] ] ;
11011: LD_ADDR_VAR 0 7
11015: PUSH
11016: LD_INT 68
11018: PUSH
11019: LD_INT 89
11021: PUSH
11022: EMPTY
11023: LIST
11024: LIST
11025: PUSH
11026: LD_INT 70
11028: PUSH
11029: LD_INT 94
11031: PUSH
11032: EMPTY
11033: LIST
11034: LIST
11035: PUSH
11036: LD_INT 72
11038: PUSH
11039: LD_INT 100
11041: PUSH
11042: EMPTY
11043: LIST
11044: LIST
11045: PUSH
11046: LD_INT 73
11048: PUSH
11049: LD_INT 105
11051: PUSH
11052: EMPTY
11053: LIST
11054: LIST
11055: PUSH
11056: LD_INT 73
11058: PUSH
11059: LD_INT 111
11061: PUSH
11062: EMPTY
11063: LIST
11064: LIST
11065: PUSH
11066: LD_INT 71
11068: PUSH
11069: LD_INT 115
11071: PUSH
11072: EMPTY
11073: LIST
11074: LIST
11075: PUSH
11076: LD_INT 71
11078: PUSH
11079: LD_INT 122
11081: PUSH
11082: EMPTY
11083: LIST
11084: LIST
11085: PUSH
11086: LD_INT 72
11088: PUSH
11089: LD_INT 129
11091: PUSH
11092: EMPTY
11093: LIST
11094: LIST
11095: PUSH
11096: LD_INT 72
11098: PUSH
11099: LD_INT 134
11101: PUSH
11102: EMPTY
11103: LIST
11104: LIST
11105: PUSH
11106: LD_INT 72
11108: PUSH
11109: LD_INT 137
11111: PUSH
11112: EMPTY
11113: LIST
11114: LIST
11115: PUSH
11116: EMPTY
11117: LIST
11118: LIST
11119: LIST
11120: LIST
11121: LIST
11122: LIST
11123: LIST
11124: LIST
11125: LIST
11126: LIST
11127: ST_TO_ADDR
// PlaceUnitXY ( Convoy [ pocet ] , 103 , 2 , false ) ;
11128: LD_EXP 32
11132: PUSH
11133: LD_EXP 46
11137: ARRAY
11138: PPUSH
11139: LD_INT 103
11141: PPUSH
11142: LD_INT 2
11144: PPUSH
11145: LD_INT 0
11147: PPUSH
11148: CALL_OW 48
// if Convoy [ pocet ] = FirstCargo then
11152: LD_EXP 32
11156: PUSH
11157: LD_EXP 46
11161: ARRAY
11162: PUSH
11163: LD_EXP 35
11167: EQUAL
11168: IFFALSE 11284
// begin for points in cargowaypoints1 do
11170: LD_ADDR_VAR 0 9
11174: PUSH
11175: LD_VAR 0 6
11179: PUSH
11180: FOR_IN
11181: IFFALSE 11218
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
11183: LD_EXP 32
11187: PUSH
11188: LD_EXP 46
11192: ARRAY
11193: PPUSH
11194: LD_VAR 0 9
11198: PUSH
11199: LD_INT 1
11201: ARRAY
11202: PPUSH
11203: LD_VAR 0 9
11207: PUSH
11208: LD_INT 2
11210: ARRAY
11211: PPUSH
11212: CALL_OW 171
11216: GO 11180
11218: POP
11219: POP
// AddComUnload ( FirstCargo ) ;
11220: LD_EXP 35
11224: PPUSH
11225: CALL_OW 219
// for points in cargowaypoints2 do
11229: LD_ADDR_VAR 0 9
11233: PUSH
11234: LD_VAR 0 7
11238: PUSH
11239: FOR_IN
11240: IFFALSE 11277
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
11242: LD_EXP 32
11246: PUSH
11247: LD_EXP 46
11251: ARRAY
11252: PPUSH
11253: LD_VAR 0 9
11257: PUSH
11258: LD_INT 1
11260: ARRAY
11261: PPUSH
11262: LD_VAR 0 9
11266: PUSH
11267: LD_INT 2
11269: ARRAY
11270: PPUSH
11271: CALL_OW 171
11275: GO 11239
11277: POP
11278: POP
// enable ( 7 ) ;
11279: LD_INT 7
11281: ENABLE_MARKED
// end else
11282: GO 11334
// for points in waypoints do
11284: LD_ADDR_VAR 0 9
11288: PUSH
11289: LD_VAR 0 8
11293: PUSH
11294: FOR_IN
11295: IFFALSE 11332
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
11297: LD_EXP 32
11301: PUSH
11302: LD_EXP 46
11306: ARRAY
11307: PPUSH
11308: LD_VAR 0 9
11312: PUSH
11313: LD_INT 1
11315: ARRAY
11316: PPUSH
11317: LD_VAR 0 9
11321: PUSH
11322: LD_INT 2
11324: ARRAY
11325: PPUSH
11326: CALL_OW 171
11330: GO 11294
11332: POP
11333: POP
// Wait ( delay ) ;
11334: LD_VAR 0 2
11338: PPUSH
11339: CALL_OW 67
// end ;
11343: GO 10320
11345: POP
11346: POP
// after_delay := after_delay * 35 ;
11347: LD_ADDR_VAR 0 3
11351: PUSH
11352: LD_VAR 0 3
11356: PUSH
11357: LD_INT 35
11359: MUL
11360: ST_TO_ADDR
// Wait ( after_delay ) ;
11361: LD_VAR 0 3
11365: PPUSH
11366: CALL_OW 67
// end ;
11370: LD_VAR 0 4
11374: RET
// every 0 0$1 marked 4 do var un , car , cargos ;
11375: GO 11377
11377: DISABLE
11378: LD_INT 0
11380: PPUSH
11381: PPUSH
11382: PPUSH
// begin cargos := FilterAllUnits ( [ [ f_weapon , ru_cargo_bay ] , [ f_side , ally ] ] ) ;
11383: LD_ADDR_VAR 0 3
11387: PUSH
11388: LD_INT 34
11390: PUSH
11391: LD_INT 51
11393: PUSH
11394: EMPTY
11395: LIST
11396: LIST
11397: PUSH
11398: LD_INT 22
11400: PUSH
11401: LD_EXP 5
11405: PUSH
11406: EMPTY
11407: LIST
11408: LIST
11409: PUSH
11410: EMPTY
11411: LIST
11412: LIST
11413: PPUSH
11414: CALL_OW 69
11418: ST_TO_ADDR
// for car in cargos do
11419: LD_ADDR_VAR 0 2
11423: PUSH
11424: LD_VAR 0 3
11428: PUSH
11429: FOR_IN
11430: IFFALSE 12020
// begin Wait ( 1 ) ;
11432: LD_INT 1
11434: PPUSH
11435: CALL_OW 67
// if ( GetDistUnits ( car , NearestUnitToUnit ( player_units , car ) ) <= 5 ) and not ( car in trucks_diverted_list ) then
11439: LD_VAR 0 2
11443: PPUSH
11444: LD_EXP 30
11448: PPUSH
11449: LD_VAR 0 2
11453: PPUSH
11454: CALL_OW 74
11458: PPUSH
11459: CALL_OW 296
11463: PUSH
11464: LD_INT 5
11466: LESSEQUAL
11467: PUSH
11468: LD_VAR 0 2
11472: PUSH
11473: LD_EXP 37
11477: IN
11478: NOT
11479: AND
11480: IFFALSE 12018
// begin trucks_diverted_list := trucks_diverted_list union car ;
11482: LD_ADDR_EXP 37
11486: PUSH
11487: LD_EXP 37
11491: PUSH
11492: LD_VAR 0 2
11496: UNION
11497: ST_TO_ADDR
// if Query ( QQrSteal ) = 1 then
11498: LD_STRING QQrSteal
11500: PPUSH
11501: CALL_OW 97
11505: PUSH
11506: LD_INT 1
11508: EQUAL
11509: IFFALSE 12006
// begin trucks_diverted_count := trucks_diverted_count + 1 ;
11511: LD_ADDR_EXP 36
11515: PUSH
11516: LD_EXP 36
11520: PUSH
11521: LD_INT 1
11523: PLUS
11524: ST_TO_ADDR
// DialogueOn ;
11525: CALL_OW 6
// Say ( Burlak , DQrSteal#1-Bur-1 ) ;
11529: LD_EXP 14
11533: PPUSH
11534: LD_STRING DQrSteal#1-Bur-1
11536: PPUSH
11537: CALL_OW 88
// DialogueOff ;
11541: CALL_OW 7
// ComMoveToArea ( car , CansArea ) ;
11545: LD_VAR 0 2
11549: PPUSH
11550: LD_INT 3
11552: PPUSH
11553: CALL_OW 113
// Wait ( 1 ) ;
11557: LD_INT 1
11559: PPUSH
11560: CALL_OW 67
// AddComUnload ( car ) ;
11564: LD_VAR 0 2
11568: PPUSH
11569: CALL_OW 219
// Wait ( 1 ) ;
11573: LD_INT 1
11575: PPUSH
11576: CALL_OW 67
// AddComMoveXY ( car , 73 , 111 ) ;
11580: LD_VAR 0 2
11584: PPUSH
11585: LD_INT 73
11587: PPUSH
11588: LD_INT 111
11590: PPUSH
11591: CALL_OW 171
// Wait ( 1 ) ;
11595: LD_INT 1
11597: PPUSH
11598: CALL_OW 67
// AddComMoveXY ( car , 71 , 115 ) ;
11602: LD_VAR 0 2
11606: PPUSH
11607: LD_INT 71
11609: PPUSH
11610: LD_INT 115
11612: PPUSH
11613: CALL_OW 171
// Wait ( 1 ) ;
11617: LD_INT 1
11619: PPUSH
11620: CALL_OW 67
// AddComMoveXY ( car , 71 , 122 ) ;
11624: LD_VAR 0 2
11628: PPUSH
11629: LD_INT 71
11631: PPUSH
11632: LD_INT 122
11634: PPUSH
11635: CALL_OW 171
// Wait ( 1 ) ;
11639: LD_INT 1
11641: PPUSH
11642: CALL_OW 67
// AddComMoveXY ( car , 72 , 129 ) ;
11646: LD_VAR 0 2
11650: PPUSH
11651: LD_INT 72
11653: PPUSH
11654: LD_INT 129
11656: PPUSH
11657: CALL_OW 171
// Wait ( 1 ) ;
11661: LD_INT 1
11663: PPUSH
11664: CALL_OW 67
// AddComMoveXY ( car , 72 , 134 ) ;
11668: LD_VAR 0 2
11672: PPUSH
11673: LD_INT 72
11675: PPUSH
11676: LD_INT 134
11678: PPUSH
11679: CALL_OW 171
// Wait ( 1 ) ;
11683: LD_INT 1
11685: PPUSH
11686: CALL_OW 67
// AddComMoveXY ( car , 72 , 138 ) ;
11690: LD_VAR 0 2
11694: PPUSH
11695: LD_INT 72
11697: PPUSH
11698: LD_INT 138
11700: PPUSH
11701: CALL_OW 171
// Wait ( 1 ) ;
11705: LD_INT 1
11707: PPUSH
11708: CALL_OW 67
// AddComMoveToArea ( car , ExitArea ) ;
11712: LD_VAR 0 2
11716: PPUSH
11717: LD_INT 1
11719: PPUSH
11720: CALL_OW 173
// Wait ( 0 0$8 ) ;
11724: LD_INT 280
11726: PPUSH
11727: CALL_OW 67
// if ( RecklessAttack and BelkovFreed ) then
11731: LD_EXP 44
11735: PUSH
11736: LD_EXP 45
11740: AND
11741: IFFALSE 11826
// begin case trucks_diverted_count of 2 :
11743: LD_EXP 36
11747: PUSH
11748: LD_INT 2
11750: DOUBLE
11751: EQUAL
11752: IFTRUE 11756
11754: GO 11763
11756: POP
// Dialogue3a ; 4 :
11757: CALL 5765 0 0
11761: GO 11824
11763: LD_INT 4
11765: DOUBLE
11766: EQUAL
11767: IFTRUE 11771
11769: GO 11778
11771: POP
// Dialogue3b ; 6 :
11772: CALL 5829 0 0
11776: GO 11824
11778: LD_INT 6
11780: DOUBLE
11781: EQUAL
11782: IFTRUE 11786
11784: GO 11793
11786: POP
// Dialogue3c ; 7 :
11787: CALL 5893 0 0
11791: GO 11824
11793: LD_INT 7
11795: DOUBLE
11796: EQUAL
11797: IFTRUE 11801
11799: GO 11808
11801: POP
// Dialogue3d ; 8 :
11802: CALL 5969 0 0
11806: GO 11824
11808: LD_INT 8
11810: DOUBLE
11811: EQUAL
11812: IFTRUE 11816
11814: GO 11823
11816: POP
// Dialogue3e ; end ;
11817: CALL 6033 0 0
11821: GO 11824
11823: POP
// end else
11824: GO 12004
// begin if ( not RecklessAttack ) and ( not BelkovFreed ) then
11826: LD_EXP 44
11830: NOT
11831: PUSH
11832: LD_EXP 45
11836: NOT
11837: AND
11838: IFFALSE 11923
// begin case trucks_diverted_count of 3 :
11840: LD_EXP 36
11844: PUSH
11845: LD_INT 3
11847: DOUBLE
11848: EQUAL
11849: IFTRUE 11853
11851: GO 11860
11853: POP
// Dialogue3a ; 6 :
11854: CALL 5765 0 0
11858: GO 11921
11860: LD_INT 6
11862: DOUBLE
11863: EQUAL
11864: IFTRUE 11868
11866: GO 11875
11868: POP
// Dialogue3b ; 7 :
11869: CALL 5829 0 0
11873: GO 11921
11875: LD_INT 7
11877: DOUBLE
11878: EQUAL
11879: IFTRUE 11883
11881: GO 11890
11883: POP
// Dialogue3c ; 9 :
11884: CALL 5893 0 0
11888: GO 11921
11890: LD_INT 9
11892: DOUBLE
11893: EQUAL
11894: IFTRUE 11898
11896: GO 11905
11898: POP
// Dialogue3d ; 10 :
11899: CALL 5969 0 0
11903: GO 11921
11905: LD_INT 10
11907: DOUBLE
11908: EQUAL
11909: IFTRUE 11913
11911: GO 11920
11913: POP
// Dialogue3e ; end ;
11914: CALL 6033 0 0
11918: GO 11921
11920: POP
// end else
11921: GO 12004
// begin case trucks_diverted_count of 2 :
11923: LD_EXP 36
11927: PUSH
11928: LD_INT 2
11930: DOUBLE
11931: EQUAL
11932: IFTRUE 11936
11934: GO 11943
11936: POP
// Dialogue3a ; 5 :
11937: CALL 5765 0 0
11941: GO 12004
11943: LD_INT 5
11945: DOUBLE
11946: EQUAL
11947: IFTRUE 11951
11949: GO 11958
11951: POP
// Dialogue3b ; 7 :
11952: CALL 5829 0 0
11956: GO 12004
11958: LD_INT 7
11960: DOUBLE
11961: EQUAL
11962: IFTRUE 11966
11964: GO 11973
11966: POP
// Dialogue3c ; 8 :
11967: CALL 5893 0 0
11971: GO 12004
11973: LD_INT 8
11975: DOUBLE
11976: EQUAL
11977: IFTRUE 11981
11979: GO 11988
11981: POP
// Dialogue3d ; 9 :
11982: CALL 5969 0 0
11986: GO 12004
11988: LD_INT 9
11990: DOUBLE
11991: EQUAL
11992: IFTRUE 11996
11994: GO 12003
11996: POP
// Dialogue3e ; end ;
11997: CALL 6033 0 0
12001: GO 12004
12003: POP
// end ; end ; end else
12004: GO 12018
// begin Say ( Burlak , DQrSteal#2-Bur-1 ) ;
12006: LD_EXP 14
12010: PPUSH
12011: LD_STRING DQrSteal#2-Bur-1
12013: PPUSH
12014: CALL_OW 88
// end ; end ; end ;
12018: GO 11429
12020: POP
12021: POP
// if not Disabled4 then
12022: LD_EXP 66
12026: NOT
12027: IFFALSE 12030
// enable ;
12029: ENABLE
// end ;
12030: PPOPN 3
12032: END
// every 0 0$10 marked 18 do var un , filter_nottask ;
12033: GO 12035
12035: DISABLE
12036: LD_INT 0
12038: PPUSH
12039: PPUSH
// begin filter_nottask := FilterUnitsExceptArea ( EnterArea , [ [ f_side , ally ] , [ f_not , [ f_hastask ] ] ] ) ;
12040: LD_ADDR_VAR 0 2
12044: PUSH
12045: LD_INT 4
12047: PPUSH
12048: LD_INT 22
12050: PUSH
12051: LD_EXP 5
12055: PUSH
12056: EMPTY
12057: LIST
12058: LIST
12059: PUSH
12060: LD_INT 3
12062: PUSH
12063: LD_INT 60
12065: PUSH
12066: EMPTY
12067: LIST
12068: PUSH
12069: EMPTY
12070: LIST
12071: LIST
12072: PUSH
12073: EMPTY
12074: LIST
12075: LIST
12076: PPUSH
12077: CALL_OW 71
12081: ST_TO_ADDR
// for un in filter_nottask do
12082: LD_ADDR_VAR 0 1
12086: PUSH
12087: LD_VAR 0 2
12091: PUSH
12092: FOR_IN
12093: IFFALSE 12119
// begin ComMoveXY ( un , 72 , 137 ) ;
12095: LD_VAR 0 1
12099: PPUSH
12100: LD_INT 72
12102: PPUSH
12103: LD_INT 137
12105: PPUSH
12106: CALL_OW 111
// Wait ( 5 ) ;
12110: LD_INT 5
12112: PPUSH
12113: CALL_OW 67
// end ;
12117: GO 12092
12119: POP
12120: POP
// enable ;
12121: ENABLE
// end ; end_of_file
12122: PPOPN 2
12124: END
// export function prepare_arabian_attack ; var vehicle_set , j , auto , abc ; begin
12125: LD_INT 0
12127: PPUSH
12128: PPUSH
12129: PPUSH
12130: PPUSH
12131: PPUSH
// attack := [ ] ;
12132: LD_ADDR_EXP 7
12136: PUSH
12137: EMPTY
12138: ST_TO_ADDR
// vehicle_set := [ [ ar_light_trike , engine_combustion , ar_light_gun , control_manual ] , [ ar_light_trike , engine_combustion , ar_double_machine_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_gatling_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_flame_thrower , control_manual ] , [ ar_half_tracked , engine_combustion , ar_flame_thrower , control_manual ] , [ ar_half_tracked , engine_combustion , ar_rocket_launcher , control_manual ] , [ ar_half_tracked , engine_combustion , ar_gun , control_manual ] ] ;
12139: LD_ADDR_VAR 0 2
12143: PUSH
12144: LD_INT 12
12146: PUSH
12147: LD_INT 1
12149: PUSH
12150: LD_INT 23
12152: PUSH
12153: LD_INT 1
12155: PUSH
12156: EMPTY
12157: LIST
12158: LIST
12159: LIST
12160: LIST
12161: PUSH
12162: LD_INT 12
12164: PUSH
12165: LD_INT 1
12167: PUSH
12168: LD_INT 24
12170: PUSH
12171: LD_INT 1
12173: PUSH
12174: EMPTY
12175: LIST
12176: LIST
12177: LIST
12178: LIST
12179: PUSH
12180: LD_INT 13
12182: PUSH
12183: LD_INT 1
12185: PUSH
12186: LD_INT 27
12188: PUSH
12189: LD_INT 1
12191: PUSH
12192: EMPTY
12193: LIST
12194: LIST
12195: LIST
12196: LIST
12197: PUSH
12198: LD_INT 13
12200: PUSH
12201: LD_INT 1
12203: PUSH
12204: LD_INT 25
12206: PUSH
12207: LD_INT 1
12209: PUSH
12210: EMPTY
12211: LIST
12212: LIST
12213: LIST
12214: LIST
12215: PUSH
12216: LD_INT 13
12218: PUSH
12219: LD_INT 1
12221: PUSH
12222: LD_INT 26
12224: PUSH
12225: LD_INT 1
12227: PUSH
12228: EMPTY
12229: LIST
12230: LIST
12231: LIST
12232: LIST
12233: PUSH
12234: LD_INT 14
12236: PUSH
12237: LD_INT 1
12239: PUSH
12240: LD_INT 26
12242: PUSH
12243: LD_INT 1
12245: PUSH
12246: EMPTY
12247: LIST
12248: LIST
12249: LIST
12250: LIST
12251: PUSH
12252: LD_INT 14
12254: PUSH
12255: LD_INT 1
12257: PUSH
12258: LD_INT 28
12260: PUSH
12261: LD_INT 1
12263: PUSH
12264: EMPTY
12265: LIST
12266: LIST
12267: LIST
12268: LIST
12269: PUSH
12270: LD_INT 14
12272: PUSH
12273: LD_INT 1
12275: PUSH
12276: LD_INT 27
12278: PUSH
12279: LD_INT 1
12281: PUSH
12282: EMPTY
12283: LIST
12284: LIST
12285: LIST
12286: LIST
12287: PUSH
12288: EMPTY
12289: LIST
12290: LIST
12291: LIST
12292: LIST
12293: LIST
12294: LIST
12295: LIST
12296: LIST
12297: ST_TO_ADDR
// for j := 1 to ( 0 + waypointsEND ) do
12298: LD_ADDR_VAR 0 3
12302: PUSH
12303: DOUBLE
12304: LD_INT 1
12306: DEC
12307: ST_TO_ADDR
12308: LD_INT 0
12310: PUSH
12311: LD_EXP 63
12315: PLUS
12316: PUSH
12317: FOR_TO
12318: IFFALSE 12743
// begin uc_side := arab ;
12320: LD_ADDR_OWVAR 20
12324: PUSH
12325: LD_EXP 6
12329: ST_TO_ADDR
// uc_nation := nation_arabian ;
12330: LD_ADDR_OWVAR 21
12334: PUSH
12335: LD_INT 2
12337: ST_TO_ADDR
// uc_direction := 3 ;
12338: LD_ADDR_OWVAR 24
12342: PUSH
12343: LD_INT 3
12345: ST_TO_ADDR
// hc_name :=  ;
12346: LD_ADDR_OWVAR 26
12350: PUSH
12351: LD_STRING 
12353: ST_TO_ADDR
// case Rand ( 1 , 100 ) of 1 .. 10 :
12354: LD_INT 1
12356: PPUSH
12357: LD_INT 100
12359: PPUSH
12360: CALL_OW 12
12364: PUSH
12365: LD_INT 1
12367: DOUBLE
12368: GREATEREQUAL
12369: IFFALSE 12377
12371: LD_INT 10
12373: DOUBLE
12374: LESSEQUAL
12375: IFTRUE 12379
12377: GO 12403
12379: POP
// PrepareHuman ( 0 , class_soldier , Rand ( 3 , 6 ) ) ; 11 .. 60 :
12380: LD_INT 0
12382: PPUSH
12383: LD_INT 1
12385: PPUSH
12386: LD_INT 3
12388: PPUSH
12389: LD_INT 6
12391: PPUSH
12392: CALL_OW 12
12396: PPUSH
12397: CALL_OW 380
12401: GO 12518
12403: LD_INT 11
12405: DOUBLE
12406: GREATEREQUAL
12407: IFFALSE 12415
12409: LD_INT 60
12411: DOUBLE
12412: LESSEQUAL
12413: IFTRUE 12417
12415: GO 12441
12417: POP
// PrepareHuman ( 0 , class_mechanic , Rand ( 3 , 6 ) ) ; 61 .. 90 :
12418: LD_INT 0
12420: PPUSH
12421: LD_INT 3
12423: PPUSH
12424: LD_INT 3
12426: PPUSH
12427: LD_INT 6
12429: PPUSH
12430: CALL_OW 12
12434: PPUSH
12435: CALL_OW 380
12439: GO 12518
12441: LD_INT 61
12443: DOUBLE
12444: GREATEREQUAL
12445: IFFALSE 12453
12447: LD_INT 90
12449: DOUBLE
12450: LESSEQUAL
12451: IFTRUE 12455
12453: GO 12479
12455: POP
// PrepareHuman ( 0 , class_engineer , Rand ( 3 , 6 ) ) ; 91 .. 100 :
12456: LD_INT 0
12458: PPUSH
12459: LD_INT 2
12461: PPUSH
12462: LD_INT 3
12464: PPUSH
12465: LD_INT 6
12467: PPUSH
12468: CALL_OW 12
12472: PPUSH
12473: CALL_OW 380
12477: GO 12518
12479: LD_INT 91
12481: DOUBLE
12482: GREATEREQUAL
12483: IFFALSE 12491
12485: LD_INT 100
12487: DOUBLE
12488: LESSEQUAL
12489: IFTRUE 12493
12491: GO 12517
12493: POP
// PrepareHuman ( 0 , class_scientistic , Rand ( 3 , 6 ) ) ; end ;
12494: LD_INT 0
12496: PPUSH
12497: LD_INT 4
12499: PPUSH
12500: LD_INT 3
12502: PPUSH
12503: LD_INT 6
12505: PPUSH
12506: CALL_OW 12
12510: PPUSH
12511: CALL_OW 380
12515: GO 12518
12517: POP
// auto := Rand ( 1 , ( 0 + vehicle_set ) ) ;
12518: LD_ADDR_VAR 0 4
12522: PUSH
12523: LD_INT 1
12525: PPUSH
12526: LD_INT 0
12528: PUSH
12529: LD_VAR 0 2
12533: PLUS
12534: PPUSH
12535: CALL_OW 12
12539: ST_TO_ADDR
// vc_chassis := vehicle_set [ auto ] [ 1 ] ;
12540: LD_ADDR_OWVAR 37
12544: PUSH
12545: LD_VAR 0 2
12549: PUSH
12550: LD_VAR 0 4
12554: ARRAY
12555: PUSH
12556: LD_INT 1
12558: ARRAY
12559: ST_TO_ADDR
// vc_engine := vehicle_set [ auto ] [ 2 ] ;
12560: LD_ADDR_OWVAR 39
12564: PUSH
12565: LD_VAR 0 2
12569: PUSH
12570: LD_VAR 0 4
12574: ARRAY
12575: PUSH
12576: LD_INT 2
12578: ARRAY
12579: ST_TO_ADDR
// vc_weapon := vehicle_set [ auto ] [ 3 ] ;
12580: LD_ADDR_OWVAR 40
12584: PUSH
12585: LD_VAR 0 2
12589: PUSH
12590: LD_VAR 0 4
12594: ARRAY
12595: PUSH
12596: LD_INT 3
12598: ARRAY
12599: ST_TO_ADDR
// vc_control := vehicle_set [ auto ] [ 4 ] ;
12600: LD_ADDR_OWVAR 38
12604: PUSH
12605: LD_VAR 0 2
12609: PUSH
12610: LD_VAR 0 4
12614: ARRAY
12615: PUSH
12616: LD_INT 4
12618: ARRAY
12619: ST_TO_ADDR
// attack := attack union CreateVehicle ;
12620: LD_ADDR_EXP 7
12624: PUSH
12625: LD_EXP 7
12629: PUSH
12630: CALL_OW 45
12634: UNION
12635: ST_TO_ADDR
// abc := CreateHuman ;
12636: LD_ADDR_VAR 0 5
12640: PUSH
12641: CALL_OW 44
12645: ST_TO_ADDR
// PlaceHumanInUnit ( abc , attack [ j ] ) ;
12646: LD_VAR 0 5
12650: PPUSH
12651: LD_EXP 7
12655: PUSH
12656: LD_VAR 0 3
12660: ARRAY
12661: PPUSH
12662: CALL_OW 52
// SetSkill ( abc , skill_mechanical , Rand ( 3 , 7 ) ) ;
12666: LD_VAR 0 5
12670: PPUSH
12671: LD_INT 3
12673: PPUSH
12674: LD_INT 3
12676: PPUSH
12677: LD_INT 7
12679: PPUSH
12680: CALL_OW 12
12684: PPUSH
12685: CALL_OW 237
// SetFuel ( attack [ j ] , Rand ( 70 , 95 ) ) ;
12689: LD_EXP 7
12693: PUSH
12694: LD_VAR 0 3
12698: ARRAY
12699: PPUSH
12700: LD_INT 70
12702: PPUSH
12703: LD_INT 95
12705: PPUSH
12706: CALL_OW 12
12710: PPUSH
12711: CALL_OW 240
// SetLives ( attack [ j ] , Rand ( 900 , 1000 ) ) ;
12715: LD_EXP 7
12719: PUSH
12720: LD_VAR 0 3
12724: ARRAY
12725: PPUSH
12726: LD_INT 900
12728: PPUSH
12729: LD_INT 1000
12731: PPUSH
12732: CALL_OW 12
12736: PPUSH
12737: CALL_OW 234
// end ;
12741: GO 12317
12743: POP
12744: POP
// end ;
12745: LD_VAR 0 1
12749: RET
// every 0 0$1 marked 10 do var waypoints , points , filterex , filterin , rnd , j ;
12750: GO 12752
12752: DISABLE
12753: LD_INT 0
12755: PPUSH
12756: PPUSH
12757: PPUSH
12758: PPUSH
12759: PPUSH
12760: PPUSH
// begin waypoints := [ [ 98 , 6 ] , [ 94 , 9 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 81 , 18 ] , [ 80 , 23 ] ] ;
12761: LD_ADDR_VAR 0 1
12765: PUSH
12766: LD_INT 98
12768: PUSH
12769: LD_INT 6
12771: PUSH
12772: EMPTY
12773: LIST
12774: LIST
12775: PUSH
12776: LD_INT 94
12778: PUSH
12779: LD_INT 9
12781: PUSH
12782: EMPTY
12783: LIST
12784: LIST
12785: PUSH
12786: LD_INT 90
12788: PUSH
12789: LD_INT 14
12791: PUSH
12792: EMPTY
12793: LIST
12794: LIST
12795: PUSH
12796: LD_INT 87
12798: PUSH
12799: LD_INT 17
12801: PUSH
12802: EMPTY
12803: LIST
12804: LIST
12805: PUSH
12806: LD_INT 81
12808: PUSH
12809: LD_INT 18
12811: PUSH
12812: EMPTY
12813: LIST
12814: LIST
12815: PUSH
12816: LD_INT 80
12818: PUSH
12819: LD_INT 23
12821: PUSH
12822: EMPTY
12823: LIST
12824: LIST
12825: PUSH
12826: EMPTY
12827: LIST
12828: LIST
12829: LIST
12830: LIST
12831: LIST
12832: LIST
12833: ST_TO_ADDR
// for j := 1 to ( 0 + waypointsEND ) do
12834: LD_ADDR_VAR 0 6
12838: PUSH
12839: DOUBLE
12840: LD_INT 1
12842: DEC
12843: ST_TO_ADDR
12844: LD_INT 0
12846: PUSH
12847: LD_EXP 63
12851: PLUS
12852: PUSH
12853: FOR_TO
12854: IFFALSE 13566
// begin Wait ( Rand ( 0 0$5 , 0 0$10 ) ) ;
12856: LD_INT 175
12858: PPUSH
12859: LD_INT 350
12861: PPUSH
12862: CALL_OW 12
12866: PPUSH
12867: CALL_OW 67
// PlaceUnitArea ( attack [ j ] , EnterArea , false ) ;
12871: LD_EXP 7
12875: PUSH
12876: LD_VAR 0 6
12880: ARRAY
12881: PPUSH
12882: LD_INT 4
12884: PPUSH
12885: LD_INT 0
12887: PPUSH
12888: CALL_OW 49
// if j = 1 then
12892: LD_VAR 0 6
12896: PUSH
12897: LD_INT 1
12899: EQUAL
12900: IFFALSE 12911
// begin disable ( 18 ) ;
12902: LD_INT 18
12904: DISABLE_MARKED
// enable ( 9 ) ;
12905: LD_INT 9
12907: ENABLE_MARKED
// enable ( 19 ) ;
12908: LD_INT 19
12910: ENABLE_MARKED
// end ; for points in waypoints do
12911: LD_ADDR_VAR 0 2
12915: PUSH
12916: LD_VAR 0 1
12920: PUSH
12921: FOR_IN
12922: IFFALSE 13060
// begin case Rand ( 1 , 2 ) of 1 :
12924: LD_INT 1
12926: PPUSH
12927: LD_INT 2
12929: PPUSH
12930: CALL_OW 12
12934: PUSH
12935: LD_INT 1
12937: DOUBLE
12938: EQUAL
12939: IFTRUE 12943
12941: GO 12996
12943: POP
// if IsOK ( attack [ j ] ) then
12944: LD_EXP 7
12948: PUSH
12949: LD_VAR 0 6
12953: ARRAY
12954: PPUSH
12955: CALL_OW 302
12959: IFFALSE 12994
// ComAgressiveMove ( attack [ j ] , points [ 1 ] , points [ 2 ] ) ; 2 :
12961: LD_EXP 7
12965: PUSH
12966: LD_VAR 0 6
12970: ARRAY
12971: PPUSH
12972: LD_VAR 0 2
12976: PUSH
12977: LD_INT 1
12979: ARRAY
12980: PPUSH
12981: LD_VAR 0 2
12985: PUSH
12986: LD_INT 2
12988: ARRAY
12989: PPUSH
12990: CALL_OW 114
12994: GO 13058
12996: LD_INT 2
12998: DOUBLE
12999: EQUAL
13000: IFTRUE 13004
13002: GO 13057
13004: POP
// if IsOK ( attack [ j ] ) then
13005: LD_EXP 7
13009: PUSH
13010: LD_VAR 0 6
13014: ARRAY
13015: PPUSH
13016: CALL_OW 302
13020: IFFALSE 13055
// AddComMoveXY ( attack [ j ] , points [ 1 ] , points [ 2 ] ) ; end ;
13022: LD_EXP 7
13026: PUSH
13027: LD_VAR 0 6
13031: ARRAY
13032: PPUSH
13033: LD_VAR 0 2
13037: PUSH
13038: LD_INT 1
13040: ARRAY
13041: PPUSH
13042: LD_VAR 0 2
13046: PUSH
13047: LD_INT 2
13049: ARRAY
13050: PPUSH
13051: CALL_OW 171
13055: GO 13058
13057: POP
// end ;
13058: GO 12921
13060: POP
13061: POP
// filterex := FilterUnitsExceptArea ( KnollArea , [ f_type , unit_building ] ) ;
13062: LD_ADDR_VAR 0 3
13066: PUSH
13067: LD_INT 2
13069: PPUSH
13070: LD_INT 21
13072: PUSH
13073: LD_INT 3
13075: PUSH
13076: EMPTY
13077: LIST
13078: LIST
13079: PPUSH
13080: CALL_OW 71
13084: ST_TO_ADDR
// filterin := FilterUnitsInArea ( KnollArea , [ f_type , unit_building ] ) ;
13085: LD_ADDR_VAR 0 4
13089: PUSH
13090: LD_INT 2
13092: PPUSH
13093: LD_INT 21
13095: PUSH
13096: LD_INT 3
13098: PUSH
13099: EMPTY
13100: LIST
13101: LIST
13102: PPUSH
13103: CALL_OW 70
13107: ST_TO_ADDR
// if 0 + filterin >= 0 + filterex then
13108: LD_INT 0
13110: PUSH
13111: LD_VAR 0 4
13115: PLUS
13116: PUSH
13117: LD_INT 0
13119: PUSH
13120: LD_VAR 0 3
13124: PLUS
13125: GREATEREQUAL
13126: IFFALSE 13395
// begin case Rand ( 1 , 2 ) of 1 :
13128: LD_INT 1
13130: PPUSH
13131: LD_INT 2
13133: PPUSH
13134: CALL_OW 12
13138: PUSH
13139: LD_INT 1
13141: DOUBLE
13142: EQUAL
13143: IFTRUE 13147
13145: GO 13212
13147: POP
// if IsOK ( attack [ j ] ) then
13148: LD_EXP 7
13152: PUSH
13153: LD_VAR 0 6
13157: ARRAY
13158: PPUSH
13159: CALL_OW 302
13163: IFFALSE 13210
// AddComAgressiveMove ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ; 2 :
13165: LD_EXP 7
13169: PUSH
13170: LD_VAR 0 6
13174: ARRAY
13175: PPUSH
13176: LD_EXP 63
13180: PUSH
13181: LD_VAR 0 6
13185: ARRAY
13186: PUSH
13187: LD_INT 1
13189: ARRAY
13190: PPUSH
13191: LD_EXP 63
13195: PUSH
13196: LD_VAR 0 6
13200: ARRAY
13201: PUSH
13202: LD_INT 2
13204: ARRAY
13205: PPUSH
13206: CALL_OW 174
13210: GO 13286
13212: LD_INT 2
13214: DOUBLE
13215: EQUAL
13216: IFTRUE 13220
13218: GO 13285
13220: POP
// if IsOK ( attack [ j ] ) then
13221: LD_EXP 7
13225: PUSH
13226: LD_VAR 0 6
13230: ARRAY
13231: PPUSH
13232: CALL_OW 302
13236: IFFALSE 13283
// AddComMoveXY ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ; end ;
13238: LD_EXP 7
13242: PUSH
13243: LD_VAR 0 6
13247: ARRAY
13248: PPUSH
13249: LD_EXP 63
13253: PUSH
13254: LD_VAR 0 6
13258: ARRAY
13259: PUSH
13260: LD_INT 1
13262: ARRAY
13263: PPUSH
13264: LD_EXP 63
13268: PUSH
13269: LD_VAR 0 6
13273: ARRAY
13274: PUSH
13275: LD_INT 2
13277: ARRAY
13278: PPUSH
13279: CALL_OW 171
13283: GO 13286
13285: POP
// if 0 + filterex > 0 then
13286: LD_INT 0
13288: PUSH
13289: LD_VAR 0 3
13293: PLUS
13294: PUSH
13295: LD_INT 0
13297: GREATER
13298: IFFALSE 13393
// begin Wait ( 10 ) ;
13300: LD_INT 10
13302: PPUSH
13303: CALL_OW 67
// rnd := Rand ( 1 , 0 + filterex ) ;
13307: LD_ADDR_VAR 0 5
13311: PUSH
13312: LD_INT 1
13314: PPUSH
13315: LD_INT 0
13317: PUSH
13318: LD_VAR 0 3
13322: PLUS
13323: PPUSH
13324: CALL_OW 12
13328: ST_TO_ADDR
// if IsOK ( attack [ j ] ) then
13329: LD_EXP 7
13333: PUSH
13334: LD_VAR 0 6
13338: ARRAY
13339: PPUSH
13340: CALL_OW 302
13344: IFFALSE 13393
// AddComAgressiveMove ( attack [ j ] , GetX ( filterex [ rnd ] ) , GetY ( filterex [ rnd ] ) ) ;
13346: LD_EXP 7
13350: PUSH
13351: LD_VAR 0 6
13355: ARRAY
13356: PPUSH
13357: LD_VAR 0 3
13361: PUSH
13362: LD_VAR 0 5
13366: ARRAY
13367: PPUSH
13368: CALL_OW 250
13372: PPUSH
13373: LD_VAR 0 3
13377: PUSH
13378: LD_VAR 0 5
13382: ARRAY
13383: PPUSH
13384: CALL_OW 251
13388: PPUSH
13389: CALL_OW 174
// end ; end else
13393: GO 13564
// begin if 0 + filterex > 0 then
13395: LD_INT 0
13397: PUSH
13398: LD_VAR 0 3
13402: PLUS
13403: PUSH
13404: LD_INT 0
13406: GREATER
13407: IFFALSE 13502
// begin rnd := Rand ( 1 , 0 + filterex ) ;
13409: LD_ADDR_VAR 0 5
13413: PUSH
13414: LD_INT 1
13416: PPUSH
13417: LD_INT 0
13419: PUSH
13420: LD_VAR 0 3
13424: PLUS
13425: PPUSH
13426: CALL_OW 12
13430: ST_TO_ADDR
// if IsOK ( attack [ j ] ) then
13431: LD_EXP 7
13435: PUSH
13436: LD_VAR 0 6
13440: ARRAY
13441: PPUSH
13442: CALL_OW 302
13446: IFFALSE 13495
// AddComAgressiveMove ( attack [ j ] , GetX ( filterex [ rnd ] ) , GetY ( filterex [ rnd ] ) ) ;
13448: LD_EXP 7
13452: PUSH
13453: LD_VAR 0 6
13457: ARRAY
13458: PPUSH
13459: LD_VAR 0 3
13463: PUSH
13464: LD_VAR 0 5
13468: ARRAY
13469: PPUSH
13470: CALL_OW 250
13474: PPUSH
13475: LD_VAR 0 3
13479: PUSH
13480: LD_VAR 0 5
13484: ARRAY
13485: PPUSH
13486: CALL_OW 251
13490: PPUSH
13491: CALL_OW 174
// Wait ( 10 ) ;
13495: LD_INT 10
13497: PPUSH
13498: CALL_OW 67
// end ; if IsOK ( attack [ j ] ) then
13502: LD_EXP 7
13506: PUSH
13507: LD_VAR 0 6
13511: ARRAY
13512: PPUSH
13513: CALL_OW 302
13517: IFFALSE 13564
// AddComAgressiveMove ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ;
13519: LD_EXP 7
13523: PUSH
13524: LD_VAR 0 6
13528: ARRAY
13529: PPUSH
13530: LD_EXP 63
13534: PUSH
13535: LD_VAR 0 6
13539: ARRAY
13540: PUSH
13541: LD_INT 1
13543: ARRAY
13544: PPUSH
13545: LD_EXP 63
13549: PUSH
13550: LD_VAR 0 6
13554: ARRAY
13555: PUSH
13556: LD_INT 2
13558: ARRAY
13559: PPUSH
13560: CALL_OW 174
// end ; end ;
13564: GO 12853
13566: POP
13567: POP
// Wait ( 0 0$20 ) ;
13568: LD_INT 700
13570: PPUSH
13571: CALL_OW 67
// Dialogue7a ;
13575: CALL 7351 0 0
// enable ( 16 ) ;
13579: LD_INT 16
13581: ENABLE_MARKED
// Wait ( 0 0$15 ) ;
13582: LD_INT 525
13584: PPUSH
13585: CALL_OW 67
// Dialogue8 ;
13589: CALL 7383 0 0
// Wait ( 0 0$15 ) ;
13593: LD_INT 525
13595: PPUSH
13596: CALL_OW 67
// Dialogue9 ;
13600: CALL 7883 0 0
// Wait ( 0 0$15 ) ;
13604: LD_INT 525
13606: PPUSH
13607: CALL_OW 67
// create_gaydar ;
13611: CALL 2620 0 0
// Wait ( 0 0$34 ) ;
13615: LD_INT 1190
13617: PPUSH
13618: CALL_OW 67
// enable ( 14 ) ;
13622: LD_INT 14
13624: ENABLE_MARKED
// end ;
13625: PPOPN 6
13627: END
// every 0 0$10 marked 14 do var i , un , live_attack ;
13628: GO 13630
13630: DISABLE
13631: LD_INT 0
13633: PPUSH
13634: PPUSH
13635: PPUSH
// begin live_attack := [ ] ;
13636: LD_ADDR_VAR 0 3
13640: PUSH
13641: EMPTY
13642: ST_TO_ADDR
// for un in attack do
13643: LD_ADDR_VAR 0 2
13647: PUSH
13648: LD_EXP 7
13652: PUSH
13653: FOR_IN
13654: IFFALSE 13718
// begin Wait ( 2 ) ;
13656: LD_INT 2
13658: PPUSH
13659: CALL_OW 67
// if ( IsOK ( un ) ) and ( not HasTask ( un ) ) then
13663: LD_VAR 0 2
13667: PPUSH
13668: CALL_OW 302
13672: PUSH
13673: LD_VAR 0 2
13677: PPUSH
13678: CALL_OW 314
13682: NOT
13683: AND
13684: IFFALSE 13716
// begin live_attack := live_attack union un ;
13686: LD_ADDR_VAR 0 3
13690: PUSH
13691: LD_VAR 0 3
13695: PUSH
13696: LD_VAR 0 2
13700: UNION
13701: ST_TO_ADDR
// i := i + 1 ;
13702: LD_ADDR_VAR 0 1
13706: PUSH
13707: LD_VAR 0 1
13711: PUSH
13712: LD_INT 1
13714: PLUS
13715: ST_TO_ADDR
// end ; end ;
13716: GO 13653
13718: POP
13719: POP
// if i > ( 0 + live_attack ) * 0.7 then
13720: LD_VAR 0 1
13724: PUSH
13725: LD_INT 0
13727: PUSH
13728: LD_VAR 0 3
13732: PLUS
13733: PUSH
13734: LD_REAL  7.00000000000000E-0001
13737: MUL
13738: GREATER
13739: IFFALSE 13745
// steal_player_buildings ;
13741: CALL 13780 0 0
// if i = ( 0 + live_attack ) then
13745: LD_VAR 0 1
13749: PUSH
13750: LD_INT 0
13752: PUSH
13753: LD_VAR 0 3
13757: PLUS
13758: EQUAL
13759: IFFALSE 13776
// ComAgressiveMove ( live_attack , 73 , 139 ) ;
13761: LD_VAR 0 3
13765: PPUSH
13766: LD_INT 73
13768: PPUSH
13769: LD_INT 139
13771: PPUSH
13772: CALL_OW 114
// enable ;
13776: ENABLE
// end ;
13777: PPOPN 3
13779: END
// export function steal_player_buildings ; var my_filter_depot , my_filter_other , i , veh ; begin
13780: LD_INT 0
13782: PPUSH
13783: PPUSH
13784: PPUSH
13785: PPUSH
13786: PPUSH
// my_filter_depot := FilterUnitsInArea ( KnollArea , [ [ f_side , you ] , [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ] ) ;
13787: LD_ADDR_VAR 0 2
13791: PUSH
13792: LD_INT 2
13794: PPUSH
13795: LD_INT 22
13797: PUSH
13798: LD_EXP 4
13802: PUSH
13803: EMPTY
13804: LIST
13805: LIST
13806: PUSH
13807: LD_INT 2
13809: PUSH
13810: LD_INT 30
13812: PUSH
13813: LD_INT 0
13815: PUSH
13816: EMPTY
13817: LIST
13818: LIST
13819: PUSH
13820: LD_INT 30
13822: PUSH
13823: LD_INT 1
13825: PUSH
13826: EMPTY
13827: LIST
13828: LIST
13829: PUSH
13830: EMPTY
13831: LIST
13832: LIST
13833: LIST
13834: PUSH
13835: EMPTY
13836: LIST
13837: PUSH
13838: EMPTY
13839: LIST
13840: LIST
13841: PPUSH
13842: CALL_OW 70
13846: ST_TO_ADDR
// my_filter_other := FilterUnitsInArea ( KnollArea , [ [ f_side , you ] , [ [ f_not , [ f_btype , b_depot ] ] , [ f_type , unit_building ] ] ] ) ;
13847: LD_ADDR_VAR 0 3
13851: PUSH
13852: LD_INT 2
13854: PPUSH
13855: LD_INT 22
13857: PUSH
13858: LD_EXP 4
13862: PUSH
13863: EMPTY
13864: LIST
13865: LIST
13866: PUSH
13867: LD_INT 3
13869: PUSH
13870: LD_INT 30
13872: PUSH
13873: LD_INT 0
13875: PUSH
13876: EMPTY
13877: LIST
13878: LIST
13879: PUSH
13880: EMPTY
13881: LIST
13882: LIST
13883: PUSH
13884: LD_INT 21
13886: PUSH
13887: LD_INT 3
13889: PUSH
13890: EMPTY
13891: LIST
13892: LIST
13893: PUSH
13894: EMPTY
13895: LIST
13896: LIST
13897: PUSH
13898: EMPTY
13899: LIST
13900: LIST
13901: PPUSH
13902: CALL_OW 70
13906: ST_TO_ADDR
// if ( 0 + my_filter_depot ) > 0 or ( 0 + my_filter_other ) > 0 then
13907: LD_INT 0
13909: PUSH
13910: LD_VAR 0 2
13914: PLUS
13915: PUSH
13916: LD_INT 0
13918: GREATER
13919: PUSH
13920: LD_INT 0
13922: PUSH
13923: LD_VAR 0 3
13927: PLUS
13928: PUSH
13929: LD_INT 0
13931: GREATER
13932: OR
13933: IFFALSE 14147
// begin for veh in attack do
13935: LD_ADDR_VAR 0 5
13939: PUSH
13940: LD_EXP 7
13944: PUSH
13945: FOR_IN
13946: IFFALSE 14011
// begin if IsDrivenBy ( veh ) <> 0 and GetClass ( IsDrivenBy ( veh ) ) = classtype_engineer then
13948: LD_VAR 0 5
13952: PPUSH
13953: CALL_OW 311
13957: PUSH
13958: LD_INT 0
13960: NONEQUAL
13961: PUSH
13962: LD_VAR 0 5
13966: PPUSH
13967: CALL_OW 311
13971: PPUSH
13972: CALL_OW 257
13976: PUSH
13977: LD_INT 2
13979: EQUAL
13980: AND
13981: IFFALSE 14009
// begin driver := IsDrivenBy ( veh ) ;
13983: LD_ADDR_EXP 52
13987: PUSH
13988: LD_VAR 0 5
13992: PPUSH
13993: CALL_OW 311
13997: ST_TO_ADDR
// ComExitVehicle ( driver ) ;
13998: LD_EXP 52
14002: PPUSH
14003: CALL_OW 121
// break ;
14007: GO 14011
// end ; end ;
14009: GO 13945
14011: POP
14012: POP
// Wait ( 10 ) ;
14013: LD_INT 10
14015: PPUSH
14016: CALL_OW 67
// if ( 0 + my_filter_depot ) > 0 then
14020: LD_INT 0
14022: PUSH
14023: LD_VAR 0 2
14027: PLUS
14028: PUSH
14029: LD_INT 0
14031: GREATER
14032: IFFALSE 14080
// for i := 1 to ( my_filter_depot + 0 ) do
14034: LD_ADDR_VAR 0 4
14038: PUSH
14039: DOUBLE
14040: LD_INT 1
14042: DEC
14043: ST_TO_ADDR
14044: LD_VAR 0 2
14048: PUSH
14049: LD_INT 0
14051: PLUS
14052: PUSH
14053: FOR_TO
14054: IFFALSE 14078
// AddComEnterUnit ( driver , my_filter_depot [ i ] ) ;
14056: LD_EXP 52
14060: PPUSH
14061: LD_VAR 0 2
14065: PUSH
14066: LD_VAR 0 4
14070: ARRAY
14071: PPUSH
14072: CALL_OW 180
14076: GO 14053
14078: POP
14079: POP
// Wait ( 10 ) ;
14080: LD_INT 10
14082: PPUSH
14083: CALL_OW 67
// if ( 0 + my_filter_other ) > 0 then
14087: LD_INT 0
14089: PUSH
14090: LD_VAR 0 3
14094: PLUS
14095: PUSH
14096: LD_INT 0
14098: GREATER
14099: IFFALSE 14147
// for i := 1 to ( my_filter_other + 0 ) do
14101: LD_ADDR_VAR 0 4
14105: PUSH
14106: DOUBLE
14107: LD_INT 1
14109: DEC
14110: ST_TO_ADDR
14111: LD_VAR 0 3
14115: PUSH
14116: LD_INT 0
14118: PLUS
14119: PUSH
14120: FOR_TO
14121: IFFALSE 14145
// AddComEnterUnit ( driver , my_filter_other [ i ] ) ;
14123: LD_EXP 52
14127: PPUSH
14128: LD_VAR 0 3
14132: PUSH
14133: LD_VAR 0 4
14137: ARRAY
14138: PPUSH
14139: CALL_OW 180
14143: GO 14120
14145: POP
14146: POP
// end ; end ;
14147: LD_VAR 0 1
14151: RET
// every 0 0$1 + 0 0$0.6 marked 9 do
14152: GO 14154
14154: DISABLE
// begin if See ( you , attack [ 1 ] ) then
14155: LD_EXP 4
14159: PPUSH
14160: LD_EXP 7
14164: PUSH
14165: LD_INT 1
14167: ARRAY
14168: PPUSH
14169: CALL_OW 292
14173: IFFALSE 14188
// begin Dialogue7 ;
14175: CALL 6868 0 0
// disable ;
14179: DISABLE
// Disabled9 := true ;
14180: LD_ADDR_EXP 68
14184: PUSH
14185: LD_INT 1
14187: ST_TO_ADDR
// end ; if not disabled9 then
14188: LD_EXP 68
14192: NOT
14193: IFFALSE 14196
// enable ;
14195: ENABLE
// end ;
14196: END
// every 0 0$1 marked 16 do var un1 , un2 , un_mem , distance , my_filter ;
14197: GO 14199
14199: DISABLE
14200: LD_INT 0
14202: PPUSH
14203: PPUSH
14204: PPUSH
14205: PPUSH
14206: PPUSH
// begin my_filter := FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
14207: LD_ADDR_VAR 0 5
14211: PUSH
14212: LD_INT 22
14214: PUSH
14215: LD_EXP 4
14219: PUSH
14220: EMPTY
14221: LIST
14222: LIST
14223: PUSH
14224: LD_INT 2
14226: PUSH
14227: LD_INT 21
14229: PUSH
14230: LD_INT 1
14232: PUSH
14233: EMPTY
14234: LIST
14235: LIST
14236: PUSH
14237: LD_INT 21
14239: PUSH
14240: LD_INT 2
14242: PUSH
14243: EMPTY
14244: LIST
14245: LIST
14246: PUSH
14247: LD_INT 30
14249: PUSH
14250: LD_INT 32
14252: PUSH
14253: EMPTY
14254: LIST
14255: LIST
14256: PUSH
14257: LD_INT 30
14259: PUSH
14260: LD_INT 31
14262: PUSH
14263: EMPTY
14264: LIST
14265: LIST
14266: PUSH
14267: EMPTY
14268: LIST
14269: LIST
14270: LIST
14271: LIST
14272: LIST
14273: PUSH
14274: EMPTY
14275: LIST
14276: LIST
14277: PPUSH
14278: CALL_OW 69
14282: ST_TO_ADDR
// if my_filter = 0 then
14283: LD_VAR 0 5
14287: PUSH
14288: LD_INT 0
14290: EQUAL
14291: IFFALSE 14315
// my_filter := FilterAllUnits ( [ f_side , you ] ) ;
14293: LD_ADDR_VAR 0 5
14297: PUSH
14298: LD_INT 22
14300: PUSH
14301: LD_EXP 4
14305: PUSH
14306: EMPTY
14307: LIST
14308: LIST
14309: PPUSH
14310: CALL_OW 69
14314: ST_TO_ADDR
// attack := UnitFilter ( attack , [ f_ok ] ) ;
14315: LD_ADDR_EXP 7
14319: PUSH
14320: LD_EXP 7
14324: PPUSH
14325: LD_INT 50
14327: PUSH
14328: EMPTY
14329: LIST
14330: PPUSH
14331: CALL_OW 72
14335: ST_TO_ADDR
// if my_filter > 0 and attack > 0 then
14336: LD_VAR 0 5
14340: PUSH
14341: LD_INT 0
14343: GREATER
14344: PUSH
14345: LD_EXP 7
14349: PUSH
14350: LD_INT 0
14352: GREATER
14353: AND
14354: IFFALSE 14511
// for un1 in attack do
14356: LD_ADDR_VAR 0 1
14360: PUSH
14361: LD_EXP 7
14365: PUSH
14366: FOR_IN
14367: IFFALSE 14509
// begin if IsOK ( un1 ) then
14369: LD_VAR 0 1
14373: PPUSH
14374: CALL_OW 302
14378: IFFALSE 14500
// begin distance := GetDistUnits ( un1 , Burlak ) ;
14380: LD_ADDR_VAR 0 4
14384: PUSH
14385: LD_VAR 0 1
14389: PPUSH
14390: LD_EXP 14
14394: PPUSH
14395: CALL_OW 296
14399: ST_TO_ADDR
// un_mem := Burlak ;
14400: LD_ADDR_VAR 0 3
14404: PUSH
14405: LD_EXP 14
14409: ST_TO_ADDR
// for un2 in my_filter do
14410: LD_ADDR_VAR 0 2
14414: PUSH
14415: LD_VAR 0 5
14419: PUSH
14420: FOR_IN
14421: IFFALSE 14484
// begin if distance > GetDistUnits ( un1 , un2 ) then
14423: LD_VAR 0 4
14427: PUSH
14428: LD_VAR 0 1
14432: PPUSH
14433: LD_VAR 0 2
14437: PPUSH
14438: CALL_OW 296
14442: GREATER
14443: IFFALSE 14475
// begin distance := GetDistUnits ( un1 , un2 ) ;
14445: LD_ADDR_VAR 0 4
14449: PUSH
14450: LD_VAR 0 1
14454: PPUSH
14455: LD_VAR 0 2
14459: PPUSH
14460: CALL_OW 296
14464: ST_TO_ADDR
// un_mem := un2 ;
14465: LD_ADDR_VAR 0 3
14469: PUSH
14470: LD_VAR 0 2
14474: ST_TO_ADDR
// end ; Wait ( 3 ) ;
14475: LD_INT 3
14477: PPUSH
14478: CALL_OW 67
// end ;
14482: GO 14420
14484: POP
14485: POP
// ComAttackUnit ( un1 , un_mem ) ;
14486: LD_VAR 0 1
14490: PPUSH
14491: LD_VAR 0 3
14495: PPUSH
14496: CALL_OW 115
// end ; Wait ( 3 ) ;
14500: LD_INT 3
14502: PPUSH
14503: CALL_OW 67
// end ;
14507: GO 14366
14509: POP
14510: POP
// if attack > 0 then
14511: LD_EXP 7
14515: PUSH
14516: LD_INT 0
14518: GREATER
14519: IFFALSE 14522
// enable ;
14521: ENABLE
// end ; end_of_file
14522: PPOPN 5
14524: END
// export function prepare_small_arabian_attack ; var j ; begin
14525: LD_INT 0
14527: PPUSH
14528: PPUSH
// sm_attack1 := [ ] ;
14529: LD_ADDR_EXP 9
14533: PUSH
14534: EMPTY
14535: ST_TO_ADDR
// sm_attack2 := [ ] ;
14536: LD_ADDR_EXP 10
14540: PUSH
14541: EMPTY
14542: ST_TO_ADDR
// sm_attack3 := [ ] ;
14543: LD_ADDR_EXP 11
14547: PUSH
14548: EMPTY
14549: ST_TO_ADDR
// for j := 1 to ( 0 + attack_count ) do
14550: LD_ADDR_VAR 0 2
14554: PUSH
14555: DOUBLE
14556: LD_INT 1
14558: DEC
14559: ST_TO_ADDR
14560: LD_INT 0
14562: PUSH
14563: LD_EXP 49
14567: PLUS
14568: PUSH
14569: FOR_TO
14570: IFFALSE 14820
// begin uc_side := arab ;
14572: LD_ADDR_OWVAR 20
14576: PUSH
14577: LD_EXP 6
14581: ST_TO_ADDR
// uc_nation := nation_arabian ;
14582: LD_ADDR_OWVAR 21
14586: PUSH
14587: LD_INT 2
14589: ST_TO_ADDR
// uc_direction := 2 ;
14590: LD_ADDR_OWVAR 24
14594: PUSH
14595: LD_INT 2
14597: ST_TO_ADDR
// hc_name :=  ;
14598: LD_ADDR_OWVAR 26
14602: PUSH
14603: LD_STRING 
14605: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , Rand ( 2 , 5 ) ) ;
14606: LD_INT 0
14608: PPUSH
14609: LD_INT 1
14611: PPUSH
14612: LD_INT 2
14614: PPUSH
14615: LD_INT 5
14617: PPUSH
14618: CALL_OW 12
14622: PPUSH
14623: CALL_OW 380
// sm_attack1 := sm_attack1 union CreateHuman ;
14627: LD_ADDR_EXP 9
14631: PUSH
14632: LD_EXP 9
14636: PUSH
14637: CALL_OW 44
14641: UNION
14642: ST_TO_ADDR
// uc_side := arab ;
14643: LD_ADDR_OWVAR 20
14647: PUSH
14648: LD_EXP 6
14652: ST_TO_ADDR
// uc_nation := nation_arabian ;
14653: LD_ADDR_OWVAR 21
14657: PUSH
14658: LD_INT 2
14660: ST_TO_ADDR
// uc_direction := 3 ;
14661: LD_ADDR_OWVAR 24
14665: PUSH
14666: LD_INT 3
14668: ST_TO_ADDR
// hc_name :=  ;
14669: LD_ADDR_OWVAR 26
14673: PUSH
14674: LD_STRING 
14676: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , Rand ( 2 , 5 ) ) ;
14677: LD_INT 0
14679: PPUSH
14680: LD_INT 1
14682: PPUSH
14683: LD_INT 2
14685: PPUSH
14686: LD_INT 5
14688: PPUSH
14689: CALL_OW 12
14693: PPUSH
14694: CALL_OW 380
// sm_attack2 := sm_attack2 union CreateHuman ;
14698: LD_ADDR_EXP 10
14702: PUSH
14703: LD_EXP 10
14707: PUSH
14708: CALL_OW 44
14712: UNION
14713: ST_TO_ADDR
// uc_side := arab ;
14714: LD_ADDR_OWVAR 20
14718: PUSH
14719: LD_EXP 6
14723: ST_TO_ADDR
// uc_nation := nation_arabian ;
14724: LD_ADDR_OWVAR 21
14728: PUSH
14729: LD_INT 2
14731: ST_TO_ADDR
// uc_direction := 3 ;
14732: LD_ADDR_OWVAR 24
14736: PUSH
14737: LD_INT 3
14739: ST_TO_ADDR
// hc_name :=  ;
14740: LD_ADDR_OWVAR 26
14744: PUSH
14745: LD_STRING 
14747: ST_TO_ADDR
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
14748: LD_ADDR_OWVAR 30
14752: PUSH
14753: LD_INT 0
14755: PUSH
14756: LD_INT 0
14758: PUSH
14759: LD_INT 0
14761: PUSH
14762: LD_INT 0
14764: PUSH
14765: EMPTY
14766: LIST
14767: LIST
14768: LIST
14769: LIST
14770: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
14771: LD_ADDR_OWVAR 31
14775: PUSH
14776: LD_INT 0
14778: PUSH
14779: LD_INT 0
14781: PUSH
14782: LD_INT 0
14784: PUSH
14785: LD_INT 0
14787: PUSH
14788: EMPTY
14789: LIST
14790: LIST
14791: LIST
14792: LIST
14793: ST_TO_ADDR
// hc_class := class_soldier ;
14794: LD_ADDR_OWVAR 28
14798: PUSH
14799: LD_INT 1
14801: ST_TO_ADDR
// sm_attack3 := sm_attack3 union CreateHuman ;
14802: LD_ADDR_EXP 11
14806: PUSH
14807: LD_EXP 11
14811: PUSH
14812: CALL_OW 44
14816: UNION
14817: ST_TO_ADDR
// end ;
14818: GO 14569
14820: POP
14821: POP
// end ;
14822: LD_VAR 0 1
14826: RET
// every 0 0$2 marked 11 do
14827: GO 14829
14829: DISABLE
// begin sm_pocet1_2 := sm_pocet1_2 + 1 ;
14830: LD_ADDR_EXP 64
14834: PUSH
14835: LD_EXP 64
14839: PUSH
14840: LD_INT 1
14842: PLUS
14843: ST_TO_ADDR
// PlaceUnitXY ( sm_attack1 [ sm_pocet1_2 ] , 19 , 2 , false ) ;
14844: LD_EXP 9
14848: PUSH
14849: LD_EXP 64
14853: ARRAY
14854: PPUSH
14855: LD_INT 19
14857: PPUSH
14858: LD_INT 2
14860: PPUSH
14861: LD_INT 0
14863: PPUSH
14864: CALL_OW 48
// ComMoveToArea ( sm_attack1 [ sm_pocet1_2 ] , PaloukArea ) ;
14868: LD_EXP 9
14872: PUSH
14873: LD_EXP 64
14877: ARRAY
14878: PPUSH
14879: LD_INT 6
14881: PPUSH
14882: CALL_OW 113
// PlaceUnitXY ( sm_attack2 [ sm_pocet1_2 ] , 103 , 1 , false ) ;
14886: LD_EXP 10
14890: PUSH
14891: LD_EXP 64
14895: ARRAY
14896: PPUSH
14897: LD_INT 103
14899: PPUSH
14900: LD_INT 1
14902: PPUSH
14903: LD_INT 0
14905: PPUSH
14906: CALL_OW 48
// ComMoveToArea ( sm_attack2 [ sm_pocet1_2 ] , EnterArea ) ;
14910: LD_EXP 10
14914: PUSH
14915: LD_EXP 64
14919: ARRAY
14920: PPUSH
14921: LD_INT 4
14923: PPUSH
14924: CALL_OW 113
// if sm_pocet1_2 < attack_count then
14928: LD_EXP 64
14932: PUSH
14933: LD_EXP 49
14937: LESS
14938: IFFALSE 14943
// enable else
14940: ENABLE
14941: GO 14948
// begin disable ;
14943: DISABLE
// make_small_attack ;
14944: CALL 14949 0 0
// end ; end ;
14948: END
// function make_small_attack ; var my_filter , i , at1 , at2 , distance , un , un_mem ; begin
14949: LD_INT 0
14951: PPUSH
14952: PPUSH
14953: PPUSH
14954: PPUSH
14955: PPUSH
14956: PPUSH
14957: PPUSH
14958: PPUSH
// ComAgressiveMove ( sm_attack1 , 33 , 28 ) ;
14959: LD_EXP 9
14963: PPUSH
14964: LD_INT 33
14966: PPUSH
14967: LD_INT 28
14969: PPUSH
14970: CALL_OW 114
// ComAgressiveMove ( sm_attack2 , 98 , 7 ) ;
14974: LD_EXP 10
14978: PPUSH
14979: LD_INT 98
14981: PPUSH
14982: LD_INT 7
14984: PPUSH
14985: CALL_OW 114
// Wait ( 0 0$20 ) ;
14989: LD_INT 700
14991: PPUSH
14992: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 31 , 57 ) ;
14996: LD_EXP 9
15000: PPUSH
15001: LD_INT 31
15003: PPUSH
15004: LD_INT 57
15006: PPUSH
15007: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 80 , 24 ) ;
15011: LD_EXP 10
15015: PPUSH
15016: LD_INT 80
15018: PPUSH
15019: LD_INT 24
15021: PPUSH
15022: CALL_OW 174
// Wait ( 0 0$20 ) ;
15026: LD_INT 700
15028: PPUSH
15029: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 40 , 71 ) ;
15033: LD_EXP 9
15037: PPUSH
15038: LD_INT 40
15040: PPUSH
15041: LD_INT 71
15043: PPUSH
15044: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 90 , 39 ) ;
15048: LD_EXP 10
15052: PPUSH
15053: LD_INT 90
15055: PPUSH
15056: LD_INT 39
15058: PPUSH
15059: CALL_OW 174
// Wait ( 0 0$20 ) ;
15063: LD_INT 700
15065: PPUSH
15066: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 79 , 81 ) ;
15070: LD_EXP 9
15074: PPUSH
15075: LD_INT 79
15077: PPUSH
15078: LD_INT 81
15080: PPUSH
15081: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 101 , 62 ) ;
15085: LD_EXP 10
15089: PPUSH
15090: LD_INT 101
15092: PPUSH
15093: LD_INT 62
15095: PPUSH
15096: CALL_OW 174
// Wait ( 0 0$20 ) ;
15100: LD_INT 700
15102: PPUSH
15103: CALL_OW 67
// my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
15107: LD_ADDR_VAR 0 2
15111: PUSH
15112: LD_INT 2
15114: PPUSH
15115: LD_INT 22
15117: PUSH
15118: LD_EXP 4
15122: PUSH
15123: EMPTY
15124: LIST
15125: LIST
15126: PPUSH
15127: CALL_OW 70
15131: ST_TO_ADDR
// if my_filter = 0 then
15132: LD_VAR 0 2
15136: PUSH
15137: LD_INT 0
15139: EQUAL
15140: IFFALSE 15177
// begin AddComAgressiveMove ( sm_attack1 , 73 , 138 ) ;
15142: LD_EXP 9
15146: PPUSH
15147: LD_INT 73
15149: PPUSH
15150: LD_INT 138
15152: PPUSH
15153: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 73 , 138 ) ;
15157: LD_EXP 10
15161: PPUSH
15162: LD_INT 73
15164: PPUSH
15165: LD_INT 138
15167: PPUSH
15168: CALL_OW 174
// enable ( 12 ) ;
15172: LD_INT 12
15174: ENABLE_MARKED
// end else
15175: GO 15183
// begin enable ( 17 ) ;
15177: LD_INT 17
15179: ENABLE_MARKED
// enable ( 13 ) ;
15180: LD_INT 13
15182: ENABLE_MARKED
// end ; Wait ( 0 0$20 + attack_offset ) ;
15183: LD_INT 700
15185: PUSH
15186: LD_EXP 48
15190: PLUS
15191: PPUSH
15192: CALL_OW 67
// enable ( 10 ) ;
15196: LD_INT 10
15198: ENABLE_MARKED
// end ;
15199: LD_VAR 0 1
15203: RET
// every 0 0$0.9 marked 12 do var my_filter ;
15204: GO 15206
15206: DISABLE
15207: LD_INT 0
15209: PPUSH
// begin my_filter := FilterUnitsInArea ( BreakThruArea , [ f_side , arab ] ) ;
15210: LD_ADDR_VAR 0 1
15214: PUSH
15215: LD_INT 7
15217: PPUSH
15218: LD_INT 22
15220: PUSH
15221: LD_EXP 6
15225: PUSH
15226: EMPTY
15227: LIST
15228: LIST
15229: PPUSH
15230: CALL_OW 70
15234: ST_TO_ADDR
// if my_filter + 0 > 0 then
15235: LD_VAR 0 1
15239: PUSH
15240: LD_INT 0
15242: PLUS
15243: PUSH
15244: LD_INT 0
15246: GREATER
15247: IFFALSE 15256
// YouLost ( ArabBreakthrough ) ;
15249: LD_STRING ArabBreakthrough
15251: PPUSH
15252: CALL_OW 104
// enable ;
15256: ENABLE
// end ;
15257: PPOPN 1
15259: END
// every 0 0$0.9 marked 13 do var my_filter , un ;
15260: GO 15262
15262: DISABLE
15263: LD_INT 0
15265: PPUSH
15266: PPUSH
// begin my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
15267: LD_ADDR_VAR 0 1
15271: PUSH
15272: LD_INT 2
15274: PPUSH
15275: LD_INT 22
15277: PUSH
15278: LD_EXP 4
15282: PUSH
15283: EMPTY
15284: LIST
15285: LIST
15286: PPUSH
15287: CALL_OW 70
15291: ST_TO_ADDR
// if ( 0 + my_filter ) = 0 then
15292: LD_INT 0
15294: PUSH
15295: LD_VAR 0 1
15299: PLUS
15300: PUSH
15301: LD_INT 0
15303: EQUAL
15304: IFFALSE 15403
// begin for un in sm_attack1 do
15306: LD_ADDR_VAR 0 2
15310: PUSH
15311: LD_EXP 9
15315: PUSH
15316: FOR_IN
15317: IFFALSE 15347
// if isok ( un ) then
15319: LD_VAR 0 2
15323: PPUSH
15324: CALL_OW 302
15328: IFFALSE 15345
// AddComAgressiveMove ( un , 73 , 138 ) ;
15330: LD_VAR 0 2
15334: PPUSH
15335: LD_INT 73
15337: PPUSH
15338: LD_INT 138
15340: PPUSH
15341: CALL_OW 174
15345: GO 15316
15347: POP
15348: POP
// for un in sm_attack2 do
15349: LD_ADDR_VAR 0 2
15353: PUSH
15354: LD_EXP 10
15358: PUSH
15359: FOR_IN
15360: IFFALSE 15390
// if isok ( un ) then
15362: LD_VAR 0 2
15366: PPUSH
15367: CALL_OW 302
15371: IFFALSE 15388
// AddComAgressiveMove ( un , 73 , 138 ) ;
15373: LD_VAR 0 2
15377: PPUSH
15378: LD_INT 73
15380: PPUSH
15381: LD_INT 138
15383: PPUSH
15384: CALL_OW 174
15388: GO 15359
15390: POP
15391: POP
// enable ( 12 ) ;
15392: LD_INT 12
15394: ENABLE_MARKED
// Disabled13 := true ;
15395: LD_ADDR_EXP 69
15399: PUSH
15400: LD_INT 1
15402: ST_TO_ADDR
// end ; if not Disabled13 then
15403: LD_EXP 69
15407: NOT
15408: IFFALSE 15411
// enable ;
15410: ENABLE
// end ;
15411: PPOPN 2
15413: END
// every 0 0$1 marked 15 do
15414: GO 15416
15416: DISABLE
// begin Wait ( Gaydar_wait ) ;
15417: LD_EXP 3
15421: PPUSH
15422: CALL_OW 67
// if not IsDead ( Gaydar ) and sm_pocet3 < attack_count then
15426: LD_EXP 27
15430: PPUSH
15431: CALL_OW 301
15435: NOT
15436: PUSH
15437: LD_EXP 65
15441: PUSH
15442: LD_EXP 49
15446: LESS
15447: AND
15448: IFFALSE 15536
// begin sm_pocet3 := sm_pocet3 + 1 ;
15450: LD_ADDR_EXP 65
15454: PUSH
15455: LD_EXP 65
15459: PUSH
15460: LD_INT 1
15462: PLUS
15463: ST_TO_ADDR
// PlaceUnitXY ( sm_attack3 [ sm_pocet3 ] , 19 , 2 , false ) ;
15464: LD_EXP 11
15468: PUSH
15469: LD_EXP 65
15473: ARRAY
15474: PPUSH
15475: LD_INT 19
15477: PPUSH
15478: LD_INT 2
15480: PPUSH
15481: LD_INT 0
15483: PPUSH
15484: CALL_OW 48
// ComMoveToArea ( sm_attack3 [ sm_pocet3 ] , PaloukArea ) ;
15488: LD_EXP 11
15492: PUSH
15493: LD_EXP 65
15497: ARRAY
15498: PPUSH
15499: LD_INT 6
15501: PPUSH
15502: CALL_OW 113
// Wait ( 10 ) ;
15506: LD_INT 10
15508: PPUSH
15509: CALL_OW 67
// AddComAttackUnit ( sm_attack3 [ sm_pocet3 ] , Gaydar ) ;
15513: LD_EXP 11
15517: PUSH
15518: LD_EXP 65
15522: ARRAY
15523: PPUSH
15524: LD_EXP 27
15528: PPUSH
15529: CALL_OW 175
// enable ;
15533: ENABLE
// end else
15534: GO 15537
// disable ;
15536: DISABLE
// end ;
15537: END
// every 0 0$1 marked 17 do var my_filter , un1 , un2 , distance , un_mem ;
15538: GO 15540
15540: DISABLE
15541: LD_INT 0
15543: PPUSH
15544: PPUSH
15545: PPUSH
15546: PPUSH
15547: PPUSH
// begin my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
15548: LD_ADDR_VAR 0 1
15552: PUSH
15553: LD_INT 2
15555: PPUSH
15556: LD_INT 22
15558: PUSH
15559: LD_EXP 4
15563: PUSH
15564: EMPTY
15565: LIST
15566: LIST
15567: PPUSH
15568: CALL_OW 70
15572: ST_TO_ADDR
// if my_filter <> [ ] then
15573: LD_VAR 0 1
15577: PUSH
15578: EMPTY
15579: NONEQUAL
15580: IFFALSE 15930
// begin for un1 in sm_attack1 do
15582: LD_ADDR_VAR 0 2
15586: PUSH
15587: LD_EXP 9
15591: PUSH
15592: FOR_IN
15593: IFFALSE 15754
// begin if IsOK ( un1 ) then
15595: LD_VAR 0 2
15599: PPUSH
15600: CALL_OW 302
15604: IFFALSE 15736
// begin distance := GetDistUnits ( un1 , my_filter [ 1 ] ) ;
15606: LD_ADDR_VAR 0 4
15610: PUSH
15611: LD_VAR 0 2
15615: PPUSH
15616: LD_VAR 0 1
15620: PUSH
15621: LD_INT 1
15623: ARRAY
15624: PPUSH
15625: CALL_OW 296
15629: ST_TO_ADDR
// un_mem := my_filter [ 1 ] ;
15630: LD_ADDR_VAR 0 5
15634: PUSH
15635: LD_VAR 0 1
15639: PUSH
15640: LD_INT 1
15642: ARRAY
15643: ST_TO_ADDR
// for un2 in my_filter do
15644: LD_ADDR_VAR 0 3
15648: PUSH
15649: LD_VAR 0 1
15653: PUSH
15654: FOR_IN
15655: IFFALSE 15718
// begin if distance > GetDistUnits ( un1 , un2 ) then
15657: LD_VAR 0 4
15661: PUSH
15662: LD_VAR 0 2
15666: PPUSH
15667: LD_VAR 0 3
15671: PPUSH
15672: CALL_OW 296
15676: GREATER
15677: IFFALSE 15709
// begin distance := GetDistUnits ( un1 , un2 ) ;
15679: LD_ADDR_VAR 0 4
15683: PUSH
15684: LD_VAR 0 2
15688: PPUSH
15689: LD_VAR 0 3
15693: PPUSH
15694: CALL_OW 296
15698: ST_TO_ADDR
// un_mem := un2 ;
15699: LD_ADDR_VAR 0 5
15703: PUSH
15704: LD_VAR 0 3
15708: ST_TO_ADDR
// end ; Wait ( 3 ) ;
15709: LD_INT 3
15711: PPUSH
15712: CALL_OW 67
// end ;
15716: GO 15654
15718: POP
15719: POP
// ComAttackUnit ( un1 , un2 ) ;
15720: LD_VAR 0 2
15724: PPUSH
15725: LD_VAR 0 3
15729: PPUSH
15730: CALL_OW 115
// end else
15734: GO 15752
// sm_attack1 := sm_attack1 diff un1 ;
15736: LD_ADDR_EXP 9
15740: PUSH
15741: LD_EXP 9
15745: PUSH
15746: LD_VAR 0 2
15750: DIFF
15751: ST_TO_ADDR
// end ;
15752: GO 15592
15754: POP
15755: POP
// for un1 in sm_attack2 do
15756: LD_ADDR_VAR 0 2
15760: PUSH
15761: LD_EXP 10
15765: PUSH
15766: FOR_IN
15767: IFFALSE 15928
// begin if IsOK ( un1 ) then
15769: LD_VAR 0 2
15773: PPUSH
15774: CALL_OW 302
15778: IFFALSE 15910
// begin distance := GetDistUnits ( un1 , my_filter [ 1 ] ) ;
15780: LD_ADDR_VAR 0 4
15784: PUSH
15785: LD_VAR 0 2
15789: PPUSH
15790: LD_VAR 0 1
15794: PUSH
15795: LD_INT 1
15797: ARRAY
15798: PPUSH
15799: CALL_OW 296
15803: ST_TO_ADDR
// un_mem := my_filter [ 1 ] ;
15804: LD_ADDR_VAR 0 5
15808: PUSH
15809: LD_VAR 0 1
15813: PUSH
15814: LD_INT 1
15816: ARRAY
15817: ST_TO_ADDR
// for un2 in my_filter do
15818: LD_ADDR_VAR 0 3
15822: PUSH
15823: LD_VAR 0 1
15827: PUSH
15828: FOR_IN
15829: IFFALSE 15892
// begin if distance > GetDistUnits ( un1 , un2 ) then
15831: LD_VAR 0 4
15835: PUSH
15836: LD_VAR 0 2
15840: PPUSH
15841: LD_VAR 0 3
15845: PPUSH
15846: CALL_OW 296
15850: GREATER
15851: IFFALSE 15883
// begin distance := GetDistUnits ( un1 , un2 ) ;
15853: LD_ADDR_VAR 0 4
15857: PUSH
15858: LD_VAR 0 2
15862: PPUSH
15863: LD_VAR 0 3
15867: PPUSH
15868: CALL_OW 296
15872: ST_TO_ADDR
// un_mem := un2 ;
15873: LD_ADDR_VAR 0 5
15877: PUSH
15878: LD_VAR 0 3
15882: ST_TO_ADDR
// end ; Wait ( 3 ) ;
15883: LD_INT 3
15885: PPUSH
15886: CALL_OW 67
// end ;
15890: GO 15828
15892: POP
15893: POP
// ComAttackUnit ( un1 , un2 ) ;
15894: LD_VAR 0 2
15898: PPUSH
15899: LD_VAR 0 3
15903: PPUSH
15904: CALL_OW 115
// end else
15908: GO 15926
// sm_attack2 := sm_attack2 diff un1 ;
15910: LD_ADDR_EXP 10
15914: PUSH
15915: LD_EXP 10
15919: PUSH
15920: LD_VAR 0 2
15924: DIFF
15925: ST_TO_ADDR
// end ;
15926: GO 15766
15928: POP
15929: POP
// end ; if sm_attack1 = [ ] and sm_attack2 = [ ] then
15930: LD_EXP 9
15934: PUSH
15935: EMPTY
15936: EQUAL
15937: PUSH
15938: LD_EXP 10
15942: PUSH
15943: EMPTY
15944: EQUAL
15945: AND
15946: IFFALSE 15951
// disable else
15948: DISABLE
15949: GO 15952
// enable ;
15951: ENABLE
// end ; end_of_file
15952: PPOPN 5
15954: END
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
15955: LD_INT 0
15957: PPUSH
15958: PPUSH
// if not missionNumber then
15959: LD_VAR 0 2
15963: NOT
15964: IFFALSE 15968
// exit ;
15966: GO 16098
// achiv := false ;
15968: LD_ADDR_VAR 0 7
15972: PUSH
15973: LD_INT 0
15975: ST_TO_ADDR
// case campaignNumber of 1 :
15976: LD_VAR 0 1
15980: PUSH
15981: LD_INT 1
15983: DOUBLE
15984: EQUAL
15985: IFTRUE 15989
15987: GO 16000
15989: POP
// achiv := ACH_GOTA ; 2 :
15990: LD_ADDR_VAR 0 7
15994: PUSH
15995: LD_STRING ACH_GOTA
15997: ST_TO_ADDR
15998: GO 16050
16000: LD_INT 2
16002: DOUBLE
16003: EQUAL
16004: IFTRUE 16008
16006: GO 16011
16008: POP
// ; 3 :
16009: GO 16050
16011: LD_INT 3
16013: DOUBLE
16014: EQUAL
16015: IFTRUE 16019
16017: GO 16030
16019: POP
// achiv := ACH_MOTSU ; 4 :
16020: LD_ADDR_VAR 0 7
16024: PUSH
16025: LD_STRING ACH_MOTSU
16027: ST_TO_ADDR
16028: GO 16050
16030: LD_INT 4
16032: DOUBLE
16033: EQUAL
16034: IFTRUE 16038
16036: GO 16049
16038: POP
// achiv := ACH_LOP ; end ;
16039: LD_ADDR_VAR 0 7
16043: PUSH
16044: LD_STRING ACH_LOP
16046: ST_TO_ADDR
16047: GO 16050
16049: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
16050: LD_OWVAR 67
16054: PUSH
16055: LD_INT 3
16057: EQUAL
16058: PUSH
16059: LD_VAR 0 7
16063: AND
16064: PUSH
16065: LD_VAR 0 3
16069: AND
16070: PUSH
16071: LD_VAR 0 4
16075: AND
16076: PUSH
16077: LD_VAR 0 5
16081: AND
16082: IFFALSE 16098
// SetAchievementEX ( achiv , missionNumber ) ;
16084: LD_VAR 0 7
16088: PPUSH
16089: LD_VAR 0 2
16093: PPUSH
16094: CALL_OW 564
// end ;
16098: LD_VAR 0 6
16102: RET
// export function SA_BehemothConstructed ; begin
16103: LD_INT 0
16105: PPUSH
// SetAchievement ( ACH_SMC ) ;
16106: LD_STRING ACH_SMC
16108: PPUSH
16109: CALL_OW 543
// end ;
16113: LD_VAR 0 1
16117: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
16118: LD_VAR 0 2
16122: PUSH
16123: LD_INT 1
16125: DOUBLE
16126: EQUAL
16127: IFTRUE 16131
16129: GO 16138
16131: POP
// HackUnlimitedResources ; 2 :
16132: CALL 16322 0 0
16136: GO 16319
16138: LD_INT 2
16140: DOUBLE
16141: EQUAL
16142: IFTRUE 16146
16144: GO 16153
16146: POP
// HackSetLevel10 ; 3 :
16147: CALL 16455 0 0
16151: GO 16319
16153: LD_INT 3
16155: DOUBLE
16156: EQUAL
16157: IFTRUE 16161
16159: GO 16168
16161: POP
// HackSetLevel10YourUnits ; 4 :
16162: CALL 16540 0 0
16166: GO 16319
16168: LD_INT 4
16170: DOUBLE
16171: EQUAL
16172: IFTRUE 16176
16174: GO 16198
16176: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
16177: LD_VAR 0 3
16181: PPUSH
16182: LD_VAR 0 4
16186: PPUSH
16187: LD_VAR 0 5
16191: PPUSH
16192: CALL 16630 0 3
16196: GO 16319
16198: LD_INT 5
16200: DOUBLE
16201: EQUAL
16202: IFTRUE 16206
16204: GO 16213
16206: POP
// HackSpawnVehicle ; 6 :
16207: CALL 16691 0 0
16211: GO 16319
16213: LD_INT 6
16215: DOUBLE
16216: EQUAL
16217: IFTRUE 16221
16219: GO 16228
16221: POP
// HackInvincible ; 7 :
16222: CALL 17237 0 0
16226: GO 16319
16228: LD_INT 7
16230: DOUBLE
16231: EQUAL
16232: IFTRUE 16236
16234: GO 16243
16236: POP
// HackInvisible ; 8 :
16237: CALL 17348 0 0
16241: GO 16319
16243: LD_INT 8
16245: DOUBLE
16246: EQUAL
16247: IFTRUE 16251
16249: GO 16258
16251: POP
// HackChangeYourSide ; 9 :
16252: CALL 17405 0 0
16256: GO 16319
16258: LD_INT 9
16260: DOUBLE
16261: EQUAL
16262: IFTRUE 16266
16264: GO 16273
16266: POP
// HackChangeUnitSide ; 10 :
16267: CALL 17447 0 0
16271: GO 16319
16273: LD_INT 10
16275: DOUBLE
16276: EQUAL
16277: IFTRUE 16281
16279: GO 16288
16281: POP
// HackFog ; 11 :
16282: CALL 17548 0 0
16286: GO 16319
16288: LD_INT 11
16290: DOUBLE
16291: EQUAL
16292: IFTRUE 16296
16294: GO 16303
16296: POP
// HackApeman ; 12 :
16297: CALL 17563 0 0
16301: GO 16319
16303: LD_INT 12
16305: DOUBLE
16306: EQUAL
16307: IFTRUE 16311
16309: GO 16318
16311: POP
// HackBoom ; end ;
16312: CALL 17648 0 0
16316: GO 16319
16318: POP
// end ;
16319: PPOPN 6
16321: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
16322: LD_INT 0
16324: PPUSH
16325: PPUSH
16326: PPUSH
16327: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
16328: LD_ADDR_VAR 0 4
16332: PUSH
16333: LD_INT 22
16335: PUSH
16336: LD_OWVAR 2
16340: PUSH
16341: EMPTY
16342: LIST
16343: LIST
16344: PUSH
16345: LD_INT 2
16347: PUSH
16348: LD_INT 30
16350: PUSH
16351: LD_INT 0
16353: PUSH
16354: EMPTY
16355: LIST
16356: LIST
16357: PUSH
16358: LD_INT 30
16360: PUSH
16361: LD_INT 1
16363: PUSH
16364: EMPTY
16365: LIST
16366: LIST
16367: PUSH
16368: EMPTY
16369: LIST
16370: LIST
16371: LIST
16372: PUSH
16373: EMPTY
16374: LIST
16375: LIST
16376: PPUSH
16377: CALL_OW 69
16381: ST_TO_ADDR
// if not tmp then
16382: LD_VAR 0 4
16386: NOT
16387: IFFALSE 16391
// exit ;
16389: GO 16450
// for i in tmp do
16391: LD_ADDR_VAR 0 2
16395: PUSH
16396: LD_VAR 0 4
16400: PUSH
16401: FOR_IN
16402: IFFALSE 16448
// for j = 1 to 3 do
16404: LD_ADDR_VAR 0 3
16408: PUSH
16409: DOUBLE
16410: LD_INT 1
16412: DEC
16413: ST_TO_ADDR
16414: LD_INT 3
16416: PUSH
16417: FOR_TO
16418: IFFALSE 16444
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
16420: LD_VAR 0 2
16424: PPUSH
16425: CALL_OW 274
16429: PPUSH
16430: LD_VAR 0 3
16434: PPUSH
16435: LD_INT 99999
16437: PPUSH
16438: CALL_OW 277
16442: GO 16417
16444: POP
16445: POP
16446: GO 16401
16448: POP
16449: POP
// end ;
16450: LD_VAR 0 1
16454: RET
// export function HackSetLevel10 ; var i , j ; begin
16455: LD_INT 0
16457: PPUSH
16458: PPUSH
16459: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
16460: LD_ADDR_VAR 0 2
16464: PUSH
16465: LD_INT 21
16467: PUSH
16468: LD_INT 1
16470: PUSH
16471: EMPTY
16472: LIST
16473: LIST
16474: PPUSH
16475: CALL_OW 69
16479: PUSH
16480: FOR_IN
16481: IFFALSE 16533
// if IsSelected ( i ) then
16483: LD_VAR 0 2
16487: PPUSH
16488: CALL_OW 306
16492: IFFALSE 16531
// begin for j := 1 to 4 do
16494: LD_ADDR_VAR 0 3
16498: PUSH
16499: DOUBLE
16500: LD_INT 1
16502: DEC
16503: ST_TO_ADDR
16504: LD_INT 4
16506: PUSH
16507: FOR_TO
16508: IFFALSE 16529
// SetSkill ( i , j , 10 ) ;
16510: LD_VAR 0 2
16514: PPUSH
16515: LD_VAR 0 3
16519: PPUSH
16520: LD_INT 10
16522: PPUSH
16523: CALL_OW 237
16527: GO 16507
16529: POP
16530: POP
// end ;
16531: GO 16480
16533: POP
16534: POP
// end ;
16535: LD_VAR 0 1
16539: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
16540: LD_INT 0
16542: PPUSH
16543: PPUSH
16544: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
16545: LD_ADDR_VAR 0 2
16549: PUSH
16550: LD_INT 22
16552: PUSH
16553: LD_OWVAR 2
16557: PUSH
16558: EMPTY
16559: LIST
16560: LIST
16561: PUSH
16562: LD_INT 21
16564: PUSH
16565: LD_INT 1
16567: PUSH
16568: EMPTY
16569: LIST
16570: LIST
16571: PUSH
16572: EMPTY
16573: LIST
16574: LIST
16575: PPUSH
16576: CALL_OW 69
16580: PUSH
16581: FOR_IN
16582: IFFALSE 16623
// begin for j := 1 to 4 do
16584: LD_ADDR_VAR 0 3
16588: PUSH
16589: DOUBLE
16590: LD_INT 1
16592: DEC
16593: ST_TO_ADDR
16594: LD_INT 4
16596: PUSH
16597: FOR_TO
16598: IFFALSE 16619
// SetSkill ( i , j , 10 ) ;
16600: LD_VAR 0 2
16604: PPUSH
16605: LD_VAR 0 3
16609: PPUSH
16610: LD_INT 10
16612: PPUSH
16613: CALL_OW 237
16617: GO 16597
16619: POP
16620: POP
// end ;
16621: GO 16581
16623: POP
16624: POP
// end ;
16625: LD_VAR 0 1
16629: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
16630: LD_INT 0
16632: PPUSH
// uc_side := your_side ;
16633: LD_ADDR_OWVAR 20
16637: PUSH
16638: LD_OWVAR 2
16642: ST_TO_ADDR
// uc_nation := nation ;
16643: LD_ADDR_OWVAR 21
16647: PUSH
16648: LD_VAR 0 1
16652: ST_TO_ADDR
// InitHc ;
16653: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
16657: LD_INT 0
16659: PPUSH
16660: LD_VAR 0 2
16664: PPUSH
16665: LD_VAR 0 3
16669: PPUSH
16670: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
16674: CALL_OW 44
16678: PPUSH
16679: LD_INT 1
16681: PPUSH
16682: CALL_OW 51
// end ;
16686: LD_VAR 0 4
16690: RET
// export function HackSpawnVehicle ; begin
16691: LD_INT 0
16693: PPUSH
// uc_side := your_side ;
16694: LD_ADDR_OWVAR 20
16698: PUSH
16699: LD_OWVAR 2
16703: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
16704: LD_ADDR_OWVAR 21
16708: PUSH
16709: LD_INT 1
16711: PPUSH
16712: LD_INT 3
16714: PPUSH
16715: CALL_OW 12
16719: ST_TO_ADDR
// InitVc ;
16720: CALL_OW 20
// case uc_nation of 1 :
16724: LD_OWVAR 21
16728: PUSH
16729: LD_INT 1
16731: DOUBLE
16732: EQUAL
16733: IFTRUE 16737
16735: GO 16881
16737: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
16738: LD_ADDR_OWVAR 37
16742: PUSH
16743: LD_INT 1
16745: PUSH
16746: LD_INT 2
16748: PUSH
16749: LD_INT 3
16751: PUSH
16752: LD_INT 4
16754: PUSH
16755: LD_INT 5
16757: PUSH
16758: EMPTY
16759: LIST
16760: LIST
16761: LIST
16762: LIST
16763: LIST
16764: PUSH
16765: LD_INT 1
16767: PPUSH
16768: LD_INT 5
16770: PPUSH
16771: CALL_OW 12
16775: ARRAY
16776: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
16777: LD_ADDR_OWVAR 39
16781: PUSH
16782: LD_INT 1
16784: PPUSH
16785: LD_INT 3
16787: PPUSH
16788: CALL_OW 12
16792: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
16793: LD_ADDR_OWVAR 38
16797: PUSH
16798: LD_INT 1
16800: PUSH
16801: LD_INT 2
16803: PUSH
16804: LD_INT 3
16806: PUSH
16807: EMPTY
16808: LIST
16809: LIST
16810: LIST
16811: PUSH
16812: LD_INT 1
16814: PPUSH
16815: LD_INT 3
16817: PPUSH
16818: CALL_OW 12
16822: ARRAY
16823: ST_TO_ADDR
// vc_weapon := [ us_machine_gun , us_gatling_gun , us_double_gun , us_light_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , us_heavy_gun ] [ rand ( 1 , 9 ) ] ;
16824: LD_ADDR_OWVAR 40
16828: PUSH
16829: LD_INT 2
16831: PUSH
16832: LD_INT 4
16834: PUSH
16835: LD_INT 5
16837: PUSH
16838: LD_INT 3
16840: PUSH
16841: LD_INT 7
16843: PUSH
16844: LD_INT 8
16846: PUSH
16847: LD_INT 9
16849: PUSH
16850: LD_INT 10
16852: PUSH
16853: LD_INT 6
16855: PUSH
16856: EMPTY
16857: LIST
16858: LIST
16859: LIST
16860: LIST
16861: LIST
16862: LIST
16863: LIST
16864: LIST
16865: LIST
16866: PUSH
16867: LD_INT 1
16869: PPUSH
16870: LD_INT 9
16872: PPUSH
16873: CALL_OW 12
16877: ARRAY
16878: ST_TO_ADDR
// end ; 2 :
16879: GO 17146
16881: LD_INT 2
16883: DOUBLE
16884: EQUAL
16885: IFTRUE 16889
16887: GO 17013
16889: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
16890: LD_ADDR_OWVAR 37
16894: PUSH
16895: LD_INT 11
16897: PUSH
16898: LD_INT 12
16900: PUSH
16901: LD_INT 13
16903: PUSH
16904: LD_INT 14
16906: PUSH
16907: EMPTY
16908: LIST
16909: LIST
16910: LIST
16911: LIST
16912: PUSH
16913: LD_INT 1
16915: PPUSH
16916: LD_INT 4
16918: PPUSH
16919: CALL_OW 12
16923: ARRAY
16924: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
16925: LD_ADDR_OWVAR 39
16929: PUSH
16930: LD_INT 1
16932: PPUSH
16933: LD_INT 3
16935: PPUSH
16936: CALL_OW 12
16940: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
16941: LD_ADDR_OWVAR 38
16945: PUSH
16946: LD_INT 1
16948: PUSH
16949: LD_INT 2
16951: PUSH
16952: LD_INT 5
16954: PUSH
16955: EMPTY
16956: LIST
16957: LIST
16958: LIST
16959: PUSH
16960: LD_INT 1
16962: PPUSH
16963: LD_INT 3
16965: PPUSH
16966: CALL_OW 12
16970: ARRAY
16971: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
16972: LD_ADDR_OWVAR 40
16976: PUSH
16977: LD_INT 24
16979: PUSH
16980: LD_INT 26
16982: PUSH
16983: LD_INT 27
16985: PUSH
16986: LD_INT 28
16988: PUSH
16989: LD_INT 29
16991: PUSH
16992: EMPTY
16993: LIST
16994: LIST
16995: LIST
16996: LIST
16997: LIST
16998: PUSH
16999: LD_INT 1
17001: PPUSH
17002: LD_INT 5
17004: PPUSH
17005: CALL_OW 12
17009: ARRAY
17010: ST_TO_ADDR
// end ; 3 :
17011: GO 17146
17013: LD_INT 3
17015: DOUBLE
17016: EQUAL
17017: IFTRUE 17021
17019: GO 17145
17021: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
17022: LD_ADDR_OWVAR 37
17026: PUSH
17027: LD_INT 21
17029: PUSH
17030: LD_INT 23
17032: PUSH
17033: LD_INT 22
17035: PUSH
17036: LD_INT 24
17038: PUSH
17039: EMPTY
17040: LIST
17041: LIST
17042: LIST
17043: LIST
17044: PUSH
17045: LD_INT 1
17047: PPUSH
17048: LD_INT 4
17050: PPUSH
17051: CALL_OW 12
17055: ARRAY
17056: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
17057: LD_ADDR_OWVAR 39
17061: PUSH
17062: LD_INT 1
17064: PPUSH
17065: LD_INT 3
17067: PPUSH
17068: CALL_OW 12
17072: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
17073: LD_ADDR_OWVAR 38
17077: PUSH
17078: LD_INT 1
17080: PUSH
17081: LD_INT 3
17083: PUSH
17084: EMPTY
17085: LIST
17086: LIST
17087: PUSH
17088: LD_INT 1
17090: PPUSH
17091: LD_INT 2
17093: PPUSH
17094: CALL_OW 12
17098: ARRAY
17099: ST_TO_ADDR
// vc_weapon := [ ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_heavy_gun , ru_siberium_rocket , ru_rocket ] [ rand ( 1 , 6 ) ] ;
17100: LD_ADDR_OWVAR 40
17104: PUSH
17105: LD_INT 42
17107: PUSH
17108: LD_INT 43
17110: PUSH
17111: LD_INT 44
17113: PUSH
17114: LD_INT 46
17116: PUSH
17117: LD_INT 48
17119: PUSH
17120: LD_INT 47
17122: PUSH
17123: EMPTY
17124: LIST
17125: LIST
17126: LIST
17127: LIST
17128: LIST
17129: LIST
17130: PUSH
17131: LD_INT 1
17133: PPUSH
17134: LD_INT 6
17136: PPUSH
17137: CALL_OW 12
17141: ARRAY
17142: ST_TO_ADDR
// end ; end ;
17143: GO 17146
17145: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
17146: CALL_OW 45
17150: PPUSH
17151: LD_INT 1
17153: PPUSH
17154: CALL_OW 51
// end ;
17158: LD_VAR 0 1
17162: RET
// export invincible ; every 1 do
17163: GO 17165
17165: DISABLE
// invincible := [ ] ;
17166: LD_ADDR_EXP 70
17170: PUSH
17171: EMPTY
17172: ST_TO_ADDR
17173: END
// every 10 do var i ;
17174: GO 17176
17176: DISABLE
17177: LD_INT 0
17179: PPUSH
// begin enable ;
17180: ENABLE
// if not invincible then
17181: LD_EXP 70
17185: NOT
17186: IFFALSE 17190
// exit ;
17188: GO 17234
// for i in invincible do
17190: LD_ADDR_VAR 0 1
17194: PUSH
17195: LD_EXP 70
17199: PUSH
17200: FOR_IN
17201: IFFALSE 17232
// if GetLives ( i ) < 1000 then
17203: LD_VAR 0 1
17207: PPUSH
17208: CALL_OW 256
17212: PUSH
17213: LD_INT 1000
17215: LESS
17216: IFFALSE 17230
// SetLives ( i , 1000 ) ;
17218: LD_VAR 0 1
17222: PPUSH
17223: LD_INT 1000
17225: PPUSH
17226: CALL_OW 234
17230: GO 17200
17232: POP
17233: POP
// end ;
17234: PPOPN 1
17236: END
// export function HackInvincible ; var i ; begin
17237: LD_INT 0
17239: PPUSH
17240: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
17241: LD_ADDR_VAR 0 2
17245: PUSH
17246: LD_INT 2
17248: PUSH
17249: LD_INT 21
17251: PUSH
17252: LD_INT 1
17254: PUSH
17255: EMPTY
17256: LIST
17257: LIST
17258: PUSH
17259: LD_INT 21
17261: PUSH
17262: LD_INT 2
17264: PUSH
17265: EMPTY
17266: LIST
17267: LIST
17268: PUSH
17269: EMPTY
17270: LIST
17271: LIST
17272: LIST
17273: PPUSH
17274: CALL_OW 69
17278: PUSH
17279: FOR_IN
17280: IFFALSE 17341
// if IsSelected ( i ) then
17282: LD_VAR 0 2
17286: PPUSH
17287: CALL_OW 306
17291: IFFALSE 17339
// begin if i in invincible then
17293: LD_VAR 0 2
17297: PUSH
17298: LD_EXP 70
17302: IN
17303: IFFALSE 17323
// invincible := invincible diff i else
17305: LD_ADDR_EXP 70
17309: PUSH
17310: LD_EXP 70
17314: PUSH
17315: LD_VAR 0 2
17319: DIFF
17320: ST_TO_ADDR
17321: GO 17339
// invincible := invincible union i ;
17323: LD_ADDR_EXP 70
17327: PUSH
17328: LD_EXP 70
17332: PUSH
17333: LD_VAR 0 2
17337: UNION
17338: ST_TO_ADDR
// end ;
17339: GO 17279
17341: POP
17342: POP
// end ;
17343: LD_VAR 0 1
17347: RET
// export function HackInvisible ; var i , j ; begin
17348: LD_INT 0
17350: PPUSH
17351: PPUSH
17352: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
17353: LD_ADDR_VAR 0 2
17357: PUSH
17358: LD_INT 21
17360: PUSH
17361: LD_INT 1
17363: PUSH
17364: EMPTY
17365: LIST
17366: LIST
17367: PPUSH
17368: CALL_OW 69
17372: PUSH
17373: FOR_IN
17374: IFFALSE 17398
// if IsSelected ( i ) then
17376: LD_VAR 0 2
17380: PPUSH
17381: CALL_OW 306
17385: IFFALSE 17396
// begin ComForceInvisible ( i ) ;
17387: LD_VAR 0 2
17391: PPUSH
17392: CALL_OW 496
// end ;
17396: GO 17373
17398: POP
17399: POP
// end ;
17400: LD_VAR 0 1
17404: RET
// export function HackChangeYourSide ; begin
17405: LD_INT 0
17407: PPUSH
// if your_side = 8 then
17408: LD_OWVAR 2
17412: PUSH
17413: LD_INT 8
17415: EQUAL
17416: IFFALSE 17428
// your_side := 0 else
17418: LD_ADDR_OWVAR 2
17422: PUSH
17423: LD_INT 0
17425: ST_TO_ADDR
17426: GO 17442
// your_side := your_side + 1 ;
17428: LD_ADDR_OWVAR 2
17432: PUSH
17433: LD_OWVAR 2
17437: PUSH
17438: LD_INT 1
17440: PLUS
17441: ST_TO_ADDR
// end ;
17442: LD_VAR 0 1
17446: RET
// export function HackChangeUnitSide ; var i , j ; begin
17447: LD_INT 0
17449: PPUSH
17450: PPUSH
17451: PPUSH
// for i in all_units do
17452: LD_ADDR_VAR 0 2
17456: PUSH
17457: LD_OWVAR 3
17461: PUSH
17462: FOR_IN
17463: IFFALSE 17541
// if IsSelected ( i ) then
17465: LD_VAR 0 2
17469: PPUSH
17470: CALL_OW 306
17474: IFFALSE 17539
// begin j := GetSide ( i ) ;
17476: LD_ADDR_VAR 0 3
17480: PUSH
17481: LD_VAR 0 2
17485: PPUSH
17486: CALL_OW 255
17490: ST_TO_ADDR
// if j = 8 then
17491: LD_VAR 0 3
17495: PUSH
17496: LD_INT 8
17498: EQUAL
17499: IFFALSE 17511
// j := 0 else
17501: LD_ADDR_VAR 0 3
17505: PUSH
17506: LD_INT 0
17508: ST_TO_ADDR
17509: GO 17525
// j := j + 1 ;
17511: LD_ADDR_VAR 0 3
17515: PUSH
17516: LD_VAR 0 3
17520: PUSH
17521: LD_INT 1
17523: PLUS
17524: ST_TO_ADDR
// SetSide ( i , j ) ;
17525: LD_VAR 0 2
17529: PPUSH
17530: LD_VAR 0 3
17534: PPUSH
17535: CALL_OW 235
// end ;
17539: GO 17462
17541: POP
17542: POP
// end ;
17543: LD_VAR 0 1
17547: RET
// export function HackFog ; begin
17548: LD_INT 0
17550: PPUSH
// FogOff ( true ) ;
17551: LD_INT 1
17553: PPUSH
17554: CALL_OW 344
// end ;
17558: LD_VAR 0 1
17562: RET
// export function HackApeman ; begin
17563: LD_INT 0
17565: PPUSH
// uc_side := your_side ;
17566: LD_ADDR_OWVAR 20
17570: PUSH
17571: LD_OWVAR 2
17575: ST_TO_ADDR
// uc_nation := 0 ;
17576: LD_ADDR_OWVAR 21
17580: PUSH
17581: LD_INT 0
17583: ST_TO_ADDR
// hc_name :=  ;
17584: LD_ADDR_OWVAR 26
17588: PUSH
17589: LD_STRING 
17591: ST_TO_ADDR
// hc_gallery :=  ;
17592: LD_ADDR_OWVAR 33
17596: PUSH
17597: LD_STRING 
17599: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
17600: LD_ADDR_OWVAR 31
17604: PUSH
17605: LD_INT 0
17607: PUSH
17608: LD_INT 0
17610: PUSH
17611: LD_INT 0
17613: PUSH
17614: LD_INT 0
17616: PUSH
17617: EMPTY
17618: LIST
17619: LIST
17620: LIST
17621: LIST
17622: ST_TO_ADDR
// hc_class := class_apeman ;
17623: LD_ADDR_OWVAR 28
17627: PUSH
17628: LD_INT 12
17630: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
17631: CALL_OW 44
17635: PPUSH
17636: LD_INT 1
17638: PPUSH
17639: CALL_OW 51
// end ;
17643: LD_VAR 0 1
17647: RET
// export function HackBoom ; begin
17648: LD_INT 0
17650: PPUSH
// uc_side := your_side ;
17651: LD_ADDR_OWVAR 20
17655: PUSH
17656: LD_OWVAR 2
17660: ST_TO_ADDR
// uc_nation := 1 ;
17661: LD_ADDR_OWVAR 21
17665: PUSH
17666: LD_INT 1
17668: ST_TO_ADDR
// vc_chassis := us_morphling ;
17669: LD_ADDR_OWVAR 37
17673: PUSH
17674: LD_INT 5
17676: ST_TO_ADDR
// vc_engine := engine_siberite ;
17677: LD_ADDR_OWVAR 39
17681: PUSH
17682: LD_INT 3
17684: ST_TO_ADDR
// vc_control := control_computer ;
17685: LD_ADDR_OWVAR 38
17689: PUSH
17690: LD_INT 3
17692: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
17693: LD_ADDR_OWVAR 40
17697: PUSH
17698: LD_INT 8
17700: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
17701: CALL_OW 45
17705: PPUSH
17706: LD_INT 1
17708: PPUSH
17709: CALL_OW 51
// end ;
17713: LD_VAR 0 1
17717: RET
