// export you , russians , americans , americans2 ; export pokryshkin_met , gnyevko_met , kirilenkova_met , follow_pokryshkin , gladstone_escaped , soldier_escaped , preparing_trap , attacking_brown , attacking_bunker , retreating , returning , betrayed , it_is_your , start_to_run , kirilenkova_appears , saw_apeman , radio_found , burlak_killed_apeman , soldiers_killed_apeman ; export rus_soldiers , number_of_gladstones_apemen , number_of_wild_apemen , browns_combat_level , am1_combat_skill , gladstone_speed , bunker_level , gladstones_running_idle , bunker_see , bunker_lives , apemen_range , apemen_time , apeman_braveness ; function prepare_difficulty ; begin
   0: LD_INT 0
   2: PPUSH
// number_of_wild_apemen = [ 4 , 5 , 6 ] [ difficulty ] ;
   3: LD_ADDR_EXP 26
   7: PUSH
   8: LD_INT 4
  10: PUSH
  11: LD_INT 5
  13: PUSH
  14: LD_INT 6
  16: PUSH
  17: EMPTY
  18: LIST
  19: LIST
  20: LIST
  21: PUSH
  22: LD_OWVAR 67
  26: ARRAY
  27: ST_TO_ADDR
// number_of_gladstones_apemen = [ 3 , 4 , 5 ] [ difficulty ] ;
  28: LD_ADDR_EXP 25
  32: PUSH
  33: LD_INT 3
  35: PUSH
  36: LD_INT 4
  38: PUSH
  39: LD_INT 5
  41: PUSH
  42: EMPTY
  43: LIST
  44: LIST
  45: LIST
  46: PUSH
  47: LD_OWVAR 67
  51: ARRAY
  52: ST_TO_ADDR
// rus_soldiers = [ [ 3 , 3 , 2 , 2 ] , [ 2 , 3 , 2 , 1 ] , [ 2 , 3 , 1 ] ] [ difficulty ] ;
  53: LD_ADDR_EXP 24
  57: PUSH
  58: LD_INT 3
  60: PUSH
  61: LD_INT 3
  63: PUSH
  64: LD_INT 2
  66: PUSH
  67: LD_INT 2
  69: PUSH
  70: EMPTY
  71: LIST
  72: LIST
  73: LIST
  74: LIST
  75: PUSH
  76: LD_INT 2
  78: PUSH
  79: LD_INT 3
  81: PUSH
  82: LD_INT 2
  84: PUSH
  85: LD_INT 1
  87: PUSH
  88: EMPTY
  89: LIST
  90: LIST
  91: LIST
  92: LIST
  93: PUSH
  94: LD_INT 2
  96: PUSH
  97: LD_INT 3
  99: PUSH
 100: LD_INT 1
 102: PUSH
 103: EMPTY
 104: LIST
 105: LIST
 106: LIST
 107: PUSH
 108: EMPTY
 109: LIST
 110: LIST
 111: LIST
 112: PUSH
 113: LD_OWVAR 67
 117: ARRAY
 118: ST_TO_ADDR
// browns_combat_level = [ 2 , 3 , 4 ] [ difficulty ] ;
 119: LD_ADDR_EXP 27
 123: PUSH
 124: LD_INT 2
 126: PUSH
 127: LD_INT 3
 129: PUSH
 130: LD_INT 4
 132: PUSH
 133: EMPTY
 134: LIST
 135: LIST
 136: LIST
 137: PUSH
 138: LD_OWVAR 67
 142: ARRAY
 143: ST_TO_ADDR
// am1_combat_skill = [ 0 , 1 , 2 ] [ difficulty ] ;
 144: LD_ADDR_EXP 28
 148: PUSH
 149: LD_INT 0
 151: PUSH
 152: LD_INT 1
 154: PUSH
 155: LD_INT 2
 157: PUSH
 158: EMPTY
 159: LIST
 160: LIST
 161: LIST
 162: PUSH
 163: LD_OWVAR 67
 167: ARRAY
 168: ST_TO_ADDR
// gladstone_speed = [ 8 , 10 , 12 ] [ difficulty ] ;
 169: LD_ADDR_EXP 29
 173: PUSH
 174: LD_INT 8
 176: PUSH
 177: LD_INT 10
 179: PUSH
 180: LD_INT 12
 182: PUSH
 183: EMPTY
 184: LIST
 185: LIST
 186: LIST
 187: PUSH
 188: LD_OWVAR 67
 192: ARRAY
 193: ST_TO_ADDR
// bunker_level = [ 0 , 2 , 4 ] [ difficulty ] ;
 194: LD_ADDR_EXP 30
 198: PUSH
 199: LD_INT 0
 201: PUSH
 202: LD_INT 2
 204: PUSH
 205: LD_INT 4
 207: PUSH
 208: EMPTY
 209: LIST
 210: LIST
 211: LIST
 212: PUSH
 213: LD_OWVAR 67
 217: ARRAY
 218: ST_TO_ADDR
// bunker_lives = [ 850 , 900 , 1000 ] [ difficulty ] ;
 219: LD_ADDR_EXP 33
 223: PUSH
 224: LD_INT 850
 226: PUSH
 227: LD_INT 900
 229: PUSH
 230: LD_INT 1000
 232: PUSH
 233: EMPTY
 234: LIST
 235: LIST
 236: LIST
 237: PUSH
 238: LD_OWVAR 67
 242: ARRAY
 243: ST_TO_ADDR
// gladstones_running_idle = [ 0 0$6 , 0 0$3 , 0 0$1 ] ;
 244: LD_ADDR_EXP 31
 248: PUSH
 249: LD_INT 210
 251: PUSH
 252: LD_INT 105
 254: PUSH
 255: LD_INT 35
 257: PUSH
 258: EMPTY
 259: LIST
 260: LIST
 261: LIST
 262: ST_TO_ADDR
// if difficulty <> 1 then
 263: LD_OWVAR 67
 267: PUSH
 268: LD_INT 1
 270: NONEQUAL
 271: IFFALSE 283
// RemoveEnvironment ( 48 , 26 ) ;
 273: LD_INT 48
 275: PPUSH
 276: LD_INT 26
 278: PPUSH
 279: CALL_OW 347
// if difficulty <> 2 then
 283: LD_OWVAR 67
 287: PUSH
 288: LD_INT 2
 290: NONEQUAL
 291: IFFALSE 303
// RemoveEnvironment ( 48 , 27 ) ;
 293: LD_INT 48
 295: PPUSH
 296: LD_INT 27
 298: PPUSH
 299: CALL_OW 347
// bunker_see = [ See1 , See2 , See3 ] [ difficulty ] ;
 303: LD_ADDR_EXP 32
 307: PUSH
 308: LD_INT 4
 310: PUSH
 311: LD_INT 5
 313: PUSH
 314: LD_INT 6
 316: PUSH
 317: EMPTY
 318: LIST
 319: LIST
 320: LIST
 321: PUSH
 322: LD_OWVAR 67
 326: ARRAY
 327: ST_TO_ADDR
// apemen_range = [ 1 , 2 , 3 ] [ difficulty ] ;
 328: LD_ADDR_EXP 34
 332: PUSH
 333: LD_INT 1
 335: PUSH
 336: LD_INT 2
 338: PUSH
 339: LD_INT 3
 341: PUSH
 342: EMPTY
 343: LIST
 344: LIST
 345: LIST
 346: PUSH
 347: LD_OWVAR 67
 351: ARRAY
 352: ST_TO_ADDR
// apemen_time = [ 0 0$2 , 0 0$4 , 0 0$6 ] [ difficulty ] ;
 353: LD_ADDR_EXP 35
 357: PUSH
 358: LD_INT 70
 360: PUSH
 361: LD_INT 140
 363: PUSH
 364: LD_INT 210
 366: PUSH
 367: EMPTY
 368: LIST
 369: LIST
 370: LIST
 371: PUSH
 372: LD_OWVAR 67
 376: ARRAY
 377: ST_TO_ADDR
// apeman_braveness = [ 240 , 150 , 90 ] [ difficulty ] ;
 378: LD_ADDR_EXP 36
 382: PUSH
 383: LD_INT 240
 385: PUSH
 386: LD_INT 150
 388: PUSH
 389: LD_INT 90
 391: PUSH
 392: EMPTY
 393: LIST
 394: LIST
 395: LIST
 396: PUSH
 397: LD_OWVAR 67
 401: ARRAY
 402: ST_TO_ADDR
// end ;
 403: LD_VAR 0 1
 407: RET
// function prepare_sides ; begin
 408: LD_INT 0
 410: PPUSH
// americans = 1 ;
 411: LD_ADDR_EXP 3
 415: PUSH
 416: LD_INT 1
 418: ST_TO_ADDR
// americans2 = 4 ;
 419: LD_ADDR_EXP 4
 423: PUSH
 424: LD_INT 4
 426: ST_TO_ADDR
// you = 3 ;
 427: LD_ADDR_EXP 1
 431: PUSH
 432: LD_INT 3
 434: ST_TO_ADDR
// russians = 6 ;
 435: LD_ADDR_EXP 2
 439: PUSH
 440: LD_INT 6
 442: ST_TO_ADDR
// end ;
 443: LD_VAR 0 1
 447: RET
// starting begin disable ( 666 ) ;
 448: LD_INT 666
 450: DISABLE_MARKED
// prepare_sides ;
 451: CALL 408 0 0
// prepare_difficulty ;
 455: CALL 0 0 0
// prepare_people ;
 459: CALL 2222 0 0
// place_wild_apemen ;
 463: CALL 2412 0 0
// place_americans ;
 467: CALL 2453 0 0
// place_team ;
 471: CALL 2278 0 0
// burlak_appears ;
 475: CALL 2651 0 0
// end ; end_of_file
 479: END
// export burlak , pokryshkin , belkov , gnyevko , kirilenkova , kurin , team , brown , gladstone , am1 , am_bunker , wild_apemen , gladstones_apemen , trappers , your_units ; function prepare_burlak ; begin
 480: LD_INT 0
 482: PPUSH
// uc_side := you ;
 483: LD_ADDR_OWVAR 20
 487: PUSH
 488: LD_EXP 1
 492: ST_TO_ADDR
// Burlak := NewCharacter ( Burlak ) ;
 493: LD_ADDR_EXP 37
 497: PUSH
 498: LD_STRING Burlak
 500: PPUSH
 501: CALL_OW 25
 505: ST_TO_ADDR
// exit ;
 506: GO 619
// uc_nation := nation_russian ;
 508: LD_ADDR_OWVAR 21
 512: PUSH
 513: LD_INT 3
 515: ST_TO_ADDR
// hc_importance = 110 ;
 516: LD_ADDR_OWVAR 32
 520: PUSH
 521: LD_INT 110
 523: ST_TO_ADDR
// hc_sex = sex_male ;
 524: LD_ADDR_OWVAR 27
 528: PUSH
 529: LD_INT 1
 531: ST_TO_ADDR
// hc_class = class_mechanic ;
 532: LD_ADDR_OWVAR 28
 536: PUSH
 537: LD_INT 3
 539: ST_TO_ADDR
// hc_basic_skills = [ 0 , 1 , 2 , 0 ] ;
 540: LD_ADDR_OWVAR 30
 544: PUSH
 545: LD_INT 0
 547: PUSH
 548: LD_INT 1
 550: PUSH
 551: LD_INT 2
 553: PUSH
 554: LD_INT 0
 556: PUSH
 557: EMPTY
 558: LIST
 559: LIST
 560: LIST
 561: LIST
 562: ST_TO_ADDR
// hc_skills = [ 0 , 1 , 2 , 0 ] ;
 563: LD_ADDR_OWVAR 31
 567: PUSH
 568: LD_INT 0
 570: PUSH
 571: LD_INT 1
 573: PUSH
 574: LD_INT 2
 576: PUSH
 577: LD_INT 0
 579: PUSH
 580: EMPTY
 581: LIST
 582: LIST
 583: LIST
 584: LIST
 585: ST_TO_ADDR
// hc_attr = [ 12 , 11 ] ;
 586: LD_ADDR_OWVAR 29
 590: PUSH
 591: LD_INT 12
 593: PUSH
 594: LD_INT 11
 596: PUSH
 597: EMPTY
 598: LIST
 599: LIST
 600: ST_TO_ADDR
// hc_name := Y. I. Gorky ;
 601: LD_ADDR_OWVAR 26
 605: PUSH
 606: LD_STRING Y. I. Gorky
 608: ST_TO_ADDR
// burlak := CreateHuman ;
 609: LD_ADDR_EXP 37
 613: PUSH
 614: CALL_OW 44
 618: ST_TO_ADDR
// end ;
 619: LD_VAR 0 1
 623: RET
// function prepare_pokryshkin ; begin
 624: LD_INT 0
 626: PPUSH
// uc_side := russians ;
 627: LD_ADDR_OWVAR 20
 631: PUSH
 632: LD_EXP 2
 636: ST_TO_ADDR
// Pokryshkin := NewCharacter ( Pokryshkin ) ;
 637: LD_ADDR_EXP 38
 641: PUSH
 642: LD_STRING Pokryshkin
 644: PPUSH
 645: CALL_OW 25
 649: ST_TO_ADDR
// SetAttr ( Pokryshkin , attr_speed , 12 ) ;
 650: LD_EXP 38
 654: PPUSH
 655: LD_INT 2
 657: PPUSH
 658: LD_INT 12
 660: PPUSH
 661: CALL_OW 239
// SetAttr ( Pokryshkin , attr_stamina , 8 ) ;
 665: LD_EXP 38
 669: PPUSH
 670: LD_INT 1
 672: PPUSH
 673: LD_INT 8
 675: PPUSH
 676: CALL_OW 239
// exit ;
 680: GO 793
// uc_nation := nation_russian ;
 682: LD_ADDR_OWVAR 21
 686: PUSH
 687: LD_INT 3
 689: ST_TO_ADDR
// hc_sex = sex_male ;
 690: LD_ADDR_OWVAR 27
 694: PUSH
 695: LD_INT 1
 697: ST_TO_ADDR
// hc_class = class_soldier ;
 698: LD_ADDR_OWVAR 28
 702: PUSH
 703: LD_INT 1
 705: ST_TO_ADDR
// hc_basic_skills = [ 2 , 0 , 0 , 0 ] ;
 706: LD_ADDR_OWVAR 30
 710: PUSH
 711: LD_INT 2
 713: PUSH
 714: LD_INT 0
 716: PUSH
 717: LD_INT 0
 719: PUSH
 720: LD_INT 0
 722: PUSH
 723: EMPTY
 724: LIST
 725: LIST
 726: LIST
 727: LIST
 728: ST_TO_ADDR
// hc_skills = [ 4 , 1 , 2 , 0 ] ;
 729: LD_ADDR_OWVAR 31
 733: PUSH
 734: LD_INT 4
 736: PUSH
 737: LD_INT 1
 739: PUSH
 740: LD_INT 2
 742: PUSH
 743: LD_INT 0
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: LIST
 750: LIST
 751: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
 752: LD_ADDR_OWVAR 29
 756: PUSH
 757: LD_INT 10
 759: PUSH
 760: LD_INT 10
 762: PUSH
 763: EMPTY
 764: LIST
 765: LIST
 766: ST_TO_ADDR
// hc_importance = 0 ;
 767: LD_ADDR_OWVAR 32
 771: PUSH
 772: LD_INT 0
 774: ST_TO_ADDR
// hc_name := Pokryshkin ;
 775: LD_ADDR_OWVAR 26
 779: PUSH
 780: LD_STRING Pokryshkin
 782: ST_TO_ADDR
// pokryshkin := CreateHuman ;
 783: LD_ADDR_EXP 38
 787: PUSH
 788: CALL_OW 44
 792: ST_TO_ADDR
// end ;
 793: LD_VAR 0 1
 797: RET
// function prepare_belkov ; begin
 798: LD_INT 0
 800: PPUSH
// uc_side := russians ;
 801: LD_ADDR_OWVAR 20
 805: PUSH
 806: LD_EXP 2
 810: ST_TO_ADDR
// Belkov := NewCharacter ( Belkov ) ;
 811: LD_ADDR_EXP 39
 815: PUSH
 816: LD_STRING Belkov
 818: PPUSH
 819: CALL_OW 25
 823: ST_TO_ADDR
// exit ;
 824: GO 937
// uc_nation := nation_russian ;
 826: LD_ADDR_OWVAR 21
 830: PUSH
 831: LD_INT 3
 833: ST_TO_ADDR
// hc_sex = sex_male ;
 834: LD_ADDR_OWVAR 27
 838: PUSH
 839: LD_INT 1
 841: ST_TO_ADDR
// hc_class = class_soldier ;
 842: LD_ADDR_OWVAR 28
 846: PUSH
 847: LD_INT 1
 849: ST_TO_ADDR
// hc_basic_skills = [ 1 , 1 , 1 , 0 ] ;
 850: LD_ADDR_OWVAR 30
 854: PUSH
 855: LD_INT 1
 857: PUSH
 858: LD_INT 1
 860: PUSH
 861: LD_INT 1
 863: PUSH
 864: LD_INT 0
 866: PUSH
 867: EMPTY
 868: LIST
 869: LIST
 870: LIST
 871: LIST
 872: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 1 , 0 ] ;
 873: LD_ADDR_OWVAR 31
 877: PUSH
 878: LD_INT 2
 880: PUSH
 881: LD_INT 1
 883: PUSH
 884: LD_INT 1
 886: PUSH
 887: LD_INT 0
 889: PUSH
 890: EMPTY
 891: LIST
 892: LIST
 893: LIST
 894: LIST
 895: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
 896: LD_ADDR_OWVAR 29
 900: PUSH
 901: LD_INT 10
 903: PUSH
 904: LD_INT 10
 906: PUSH
 907: EMPTY
 908: LIST
 909: LIST
 910: ST_TO_ADDR
// hc_importance = 40 ;
 911: LD_ADDR_OWVAR 32
 915: PUSH
 916: LD_INT 40
 918: ST_TO_ADDR
// hc_name := Petr Belkov ;
 919: LD_ADDR_OWVAR 26
 923: PUSH
 924: LD_STRING Petr Belkov
 926: ST_TO_ADDR
// belkov := CreateHuman ;
 927: LD_ADDR_EXP 39
 931: PUSH
 932: CALL_OW 44
 936: ST_TO_ADDR
// end ;
 937: LD_VAR 0 1
 941: RET
// function prepare_gnyevko ; begin
 942: LD_INT 0
 944: PPUSH
// uc_side := russians ;
 945: LD_ADDR_OWVAR 20
 949: PUSH
 950: LD_EXP 2
 954: ST_TO_ADDR
// Gnyevko := NewCharacter ( Gnyevko ) ;
 955: LD_ADDR_EXP 40
 959: PUSH
 960: LD_STRING Gnyevko
 962: PPUSH
 963: CALL_OW 25
 967: ST_TO_ADDR
// exit ;
 968: GO 1073
// hc_sex = sex_male ;
 970: LD_ADDR_OWVAR 27
 974: PUSH
 975: LD_INT 1
 977: ST_TO_ADDR
// hc_class = class_soldier ;
 978: LD_ADDR_OWVAR 28
 982: PUSH
 983: LD_INT 1
 985: ST_TO_ADDR
// hc_basic_skills = [ 1 , 2 , 0 , 0 ] ;
 986: LD_ADDR_OWVAR 30
 990: PUSH
 991: LD_INT 1
 993: PUSH
 994: LD_INT 2
 996: PUSH
 997: LD_INT 0
 999: PUSH
1000: LD_INT 0
1002: PUSH
1003: EMPTY
1004: LIST
1005: LIST
1006: LIST
1007: LIST
1008: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 0 , 0 ] ;
1009: LD_ADDR_OWVAR 31
1013: PUSH
1014: LD_INT 1
1016: PUSH
1017: LD_INT 2
1019: PUSH
1020: LD_INT 0
1022: PUSH
1023: LD_INT 0
1025: PUSH
1026: EMPTY
1027: LIST
1028: LIST
1029: LIST
1030: LIST
1031: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1032: LD_ADDR_OWVAR 29
1036: PUSH
1037: LD_INT 10
1039: PUSH
1040: LD_INT 10
1042: PUSH
1043: EMPTY
1044: LIST
1045: LIST
1046: ST_TO_ADDR
// hc_importance = 40 ;
1047: LD_ADDR_OWVAR 32
1051: PUSH
1052: LD_INT 40
1054: ST_TO_ADDR
// hc_name := Gnyevko ;
1055: LD_ADDR_OWVAR 26
1059: PUSH
1060: LD_STRING Gnyevko
1062: ST_TO_ADDR
// gnyevko := CreateHuman ;
1063: LD_ADDR_EXP 40
1067: PUSH
1068: CALL_OW 44
1072: ST_TO_ADDR
// end ;
1073: LD_VAR 0 1
1077: RET
// function prepare_kurin ; begin
1078: LD_INT 0
1080: PPUSH
// uc_side := russians ;
1081: LD_ADDR_OWVAR 20
1085: PUSH
1086: LD_EXP 2
1090: ST_TO_ADDR
// Kurin := NewCharacter ( Kurin ) ;
1091: LD_ADDR_EXP 42
1095: PUSH
1096: LD_STRING Kurin
1098: PPUSH
1099: CALL_OW 25
1103: ST_TO_ADDR
// exit ;
1104: GO 1217
// uc_nation := nation_russian ;
1106: LD_ADDR_OWVAR 21
1110: PUSH
1111: LD_INT 3
1113: ST_TO_ADDR
// hc_sex = sex_male ;
1114: LD_ADDR_OWVAR 27
1118: PUSH
1119: LD_INT 1
1121: ST_TO_ADDR
// hc_class = class_soldier ;
1122: LD_ADDR_OWVAR 28
1126: PUSH
1127: LD_INT 1
1129: ST_TO_ADDR
// hc_basic_skills = [ 2 , 0 , 1 , 0 ] ;
1130: LD_ADDR_OWVAR 30
1134: PUSH
1135: LD_INT 2
1137: PUSH
1138: LD_INT 0
1140: PUSH
1141: LD_INT 1
1143: PUSH
1144: LD_INT 0
1146: PUSH
1147: EMPTY
1148: LIST
1149: LIST
1150: LIST
1151: LIST
1152: ST_TO_ADDR
// hc_skills = [ 4 , 2 , 2 , 1 ] ;
1153: LD_ADDR_OWVAR 31
1157: PUSH
1158: LD_INT 4
1160: PUSH
1161: LD_INT 2
1163: PUSH
1164: LD_INT 2
1166: PUSH
1167: LD_INT 1
1169: PUSH
1170: EMPTY
1171: LIST
1172: LIST
1173: LIST
1174: LIST
1175: ST_TO_ADDR
// hc_attr = [ 12 , 11 ] ;
1176: LD_ADDR_OWVAR 29
1180: PUSH
1181: LD_INT 12
1183: PUSH
1184: LD_INT 11
1186: PUSH
1187: EMPTY
1188: LIST
1189: LIST
1190: ST_TO_ADDR
// hc_importance = 60 ;
1191: LD_ADDR_OWVAR 32
1195: PUSH
1196: LD_INT 60
1198: ST_TO_ADDR
// hc_name := Kurin ;
1199: LD_ADDR_OWVAR 26
1203: PUSH
1204: LD_STRING Kurin
1206: ST_TO_ADDR
// kurin := CreateHuman ;
1207: LD_ADDR_EXP 42
1211: PUSH
1212: CALL_OW 44
1216: ST_TO_ADDR
// end ;
1217: LD_VAR 0 1
1221: RET
// function prepare_kirilenkova ; begin
1222: LD_INT 0
1224: PPUSH
// uc_side := russians ;
1225: LD_ADDR_OWVAR 20
1229: PUSH
1230: LD_EXP 2
1234: ST_TO_ADDR
// Kirilenkova := NewCharacter ( Kirilenkova ) ;
1235: LD_ADDR_EXP 41
1239: PUSH
1240: LD_STRING Kirilenkova
1242: PPUSH
1243: CALL_OW 25
1247: ST_TO_ADDR
// exit ;
1248: GO 1361
// uc_nation := nation_russian ;
1250: LD_ADDR_OWVAR 21
1254: PUSH
1255: LD_INT 3
1257: ST_TO_ADDR
// hc_sex = sex_female ;
1258: LD_ADDR_OWVAR 27
1262: PUSH
1263: LD_INT 2
1265: ST_TO_ADDR
// hc_class = class_scientistic ;
1266: LD_ADDR_OWVAR 28
1270: PUSH
1271: LD_INT 4
1273: ST_TO_ADDR
// hc_basic_skills = [ 1 , 0 , 0 , 2 ] ;
1274: LD_ADDR_OWVAR 30
1278: PUSH
1279: LD_INT 1
1281: PUSH
1282: LD_INT 0
1284: PUSH
1285: LD_INT 0
1287: PUSH
1288: LD_INT 2
1290: PUSH
1291: EMPTY
1292: LIST
1293: LIST
1294: LIST
1295: LIST
1296: ST_TO_ADDR
// hc_skills = [ 1 , 0 , 0 , 2 ] ;
1297: LD_ADDR_OWVAR 31
1301: PUSH
1302: LD_INT 1
1304: PUSH
1305: LD_INT 0
1307: PUSH
1308: LD_INT 0
1310: PUSH
1311: LD_INT 2
1313: PUSH
1314: EMPTY
1315: LIST
1316: LIST
1317: LIST
1318: LIST
1319: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1320: LD_ADDR_OWVAR 29
1324: PUSH
1325: LD_INT 10
1327: PUSH
1328: LD_INT 10
1330: PUSH
1331: EMPTY
1332: LIST
1333: LIST
1334: ST_TO_ADDR
// hc_importance = 40 ;
1335: LD_ADDR_OWVAR 32
1339: PUSH
1340: LD_INT 40
1342: ST_TO_ADDR
// hc_name := Kirilenkova ;
1343: LD_ADDR_OWVAR 26
1347: PUSH
1348: LD_STRING Kirilenkova
1350: ST_TO_ADDR
// kirilenkova := CreateHuman ;
1351: LD_ADDR_EXP 41
1355: PUSH
1356: CALL_OW 44
1360: ST_TO_ADDR
// end ;
1361: LD_VAR 0 1
1365: RET
// function prepare_team ; var l , s ; begin
1366: LD_INT 0
1368: PPUSH
1369: PPUSH
1370: PPUSH
// uc_side := russians ;
1371: LD_ADDR_OWVAR 20
1375: PUSH
1376: LD_EXP 2
1380: ST_TO_ADDR
// uc_nation := nation_russian ;
1381: LD_ADDR_OWVAR 21
1385: PUSH
1386: LD_INT 3
1388: ST_TO_ADDR
// s := 2 ;
1389: LD_ADDR_VAR 0 3
1393: PUSH
1394: LD_INT 2
1396: ST_TO_ADDR
// team := [ ] ;
1397: LD_ADDR_EXP 43
1401: PUSH
1402: EMPTY
1403: ST_TO_ADDR
// hc_name :=  ;
1404: LD_ADDR_OWVAR 26
1408: PUSH
1409: LD_STRING 
1411: ST_TO_ADDR
// hc_gallery :=  ;
1412: LD_ADDR_OWVAR 33
1416: PUSH
1417: LD_STRING 
1419: ST_TO_ADDR
// hc_importance = 30 ;
1420: LD_ADDR_OWVAR 32
1424: PUSH
1425: LD_INT 30
1427: ST_TO_ADDR
// for l in rus_soldiers do
1428: LD_ADDR_VAR 0 2
1432: PUSH
1433: LD_EXP 24
1437: PUSH
1438: FOR_IN
1439: IFFALSE 1489
// begin PrepareSoldier ( s , l ) ;
1441: LD_VAR 0 3
1445: PPUSH
1446: LD_VAR 0 2
1450: PPUSH
1451: CALL_OW 381
// team := team ^ CreateHuman ;
1455: LD_ADDR_EXP 43
1459: PUSH
1460: LD_EXP 43
1464: PUSH
1465: CALL_OW 44
1469: ADD
1470: ST_TO_ADDR
// hc_importance = 20 ;
1471: LD_ADDR_OWVAR 32
1475: PUSH
1476: LD_INT 20
1478: ST_TO_ADDR
// s := 1 ;
1479: LD_ADDR_VAR 0 3
1483: PUSH
1484: LD_INT 1
1486: ST_TO_ADDR
// end ;
1487: GO 1438
1489: POP
1490: POP
// hc_importance = 0 ;
1491: LD_ADDR_OWVAR 32
1495: PUSH
1496: LD_INT 0
1498: ST_TO_ADDR
// end ;
1499: LD_VAR 0 1
1503: RET
// function prepare_brown ; begin
1504: LD_INT 0
1506: PPUSH
// uc_side := americans2 ;
1507: LD_ADDR_OWVAR 20
1511: PUSH
1512: LD_EXP 4
1516: ST_TO_ADDR
// uc_nation := nation_american ;
1517: LD_ADDR_OWVAR 21
1521: PUSH
1522: LD_INT 1
1524: ST_TO_ADDR
// hc_sex = sex_male ;
1525: LD_ADDR_OWVAR 27
1529: PUSH
1530: LD_INT 1
1532: ST_TO_ADDR
// hc_class = class_soldier ;
1533: LD_ADDR_OWVAR 28
1537: PUSH
1538: LD_INT 1
1540: ST_TO_ADDR
// hc_basic_skills = [ browns_combat_level , 0 , 1 , 1 ] ;
1541: LD_ADDR_OWVAR 30
1545: PUSH
1546: LD_EXP 27
1550: PUSH
1551: LD_INT 0
1553: PUSH
1554: LD_INT 1
1556: PUSH
1557: LD_INT 1
1559: PUSH
1560: EMPTY
1561: LIST
1562: LIST
1563: LIST
1564: LIST
1565: ST_TO_ADDR
// hc_skills = [ browns_combat_level , 0 , 1 , 1 ] ;
1566: LD_ADDR_OWVAR 31
1570: PUSH
1571: LD_EXP 27
1575: PUSH
1576: LD_INT 0
1578: PUSH
1579: LD_INT 1
1581: PUSH
1582: LD_INT 1
1584: PUSH
1585: EMPTY
1586: LIST
1587: LIST
1588: LIST
1589: LIST
1590: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1591: LD_ADDR_OWVAR 29
1595: PUSH
1596: LD_INT 10
1598: PUSH
1599: LD_INT 10
1601: PUSH
1602: EMPTY
1603: LIST
1604: LIST
1605: ST_TO_ADDR
// hc_name := Charles Brown ;
1606: LD_ADDR_OWVAR 26
1610: PUSH
1611: LD_STRING Charles Brown
1613: ST_TO_ADDR
// Brown := CreateHuman ;
1614: LD_ADDR_EXP 44
1618: PUSH
1619: CALL_OW 44
1623: ST_TO_ADDR
// end ;
1624: LD_VAR 0 1
1628: RET
// function prepare_am1 ; begin
1629: LD_INT 0
1631: PPUSH
// uc_side := americans ;
1632: LD_ADDR_OWVAR 20
1636: PUSH
1637: LD_EXP 3
1641: ST_TO_ADDR
// uc_nation := nation_american ;
1642: LD_ADDR_OWVAR 21
1646: PUSH
1647: LD_INT 1
1649: ST_TO_ADDR
// hc_sex = sex_female ;
1650: LD_ADDR_OWVAR 27
1654: PUSH
1655: LD_INT 2
1657: ST_TO_ADDR
// hc_class = class_soldier ;
1658: LD_ADDR_OWVAR 28
1662: PUSH
1663: LD_INT 1
1665: ST_TO_ADDR
// hc_basic_skills = [ am1_combat_skill , 1 , 0 , 0 ] ;
1666: LD_ADDR_OWVAR 30
1670: PUSH
1671: LD_EXP 28
1675: PUSH
1676: LD_INT 1
1678: PUSH
1679: LD_INT 0
1681: PUSH
1682: LD_INT 0
1684: PUSH
1685: EMPTY
1686: LIST
1687: LIST
1688: LIST
1689: LIST
1690: ST_TO_ADDR
// hc_skills = [ am1_combat_skill , 1 , 0 , 0 ] ;
1691: LD_ADDR_OWVAR 31
1695: PUSH
1696: LD_EXP 28
1700: PUSH
1701: LD_INT 1
1703: PUSH
1704: LD_INT 0
1706: PUSH
1707: LD_INT 0
1709: PUSH
1710: EMPTY
1711: LIST
1712: LIST
1713: LIST
1714: LIST
1715: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1716: LD_ADDR_OWVAR 29
1720: PUSH
1721: LD_INT 10
1723: PUSH
1724: LD_INT 10
1726: PUSH
1727: EMPTY
1728: LIST
1729: LIST
1730: ST_TO_ADDR
// hc_name :=  ;
1731: LD_ADDR_OWVAR 26
1735: PUSH
1736: LD_STRING 
1738: ST_TO_ADDR
// am1 := CreateHuman ;
1739: LD_ADDR_EXP 46
1743: PUSH
1744: CALL_OW 44
1748: ST_TO_ADDR
// end ;
1749: LD_VAR 0 1
1753: RET
// function prepare_gladstone ; begin
1754: LD_INT 0
1756: PPUSH
// uc_side := americans ;
1757: LD_ADDR_OWVAR 20
1761: PUSH
1762: LD_EXP 3
1766: ST_TO_ADDR
// Gladstone := NewCharacter ( Gladstone ) ;
1767: LD_ADDR_EXP 45
1771: PUSH
1772: LD_STRING Gladstone
1774: PPUSH
1775: CALL_OW 25
1779: ST_TO_ADDR
// exit ;
1780: GO 1887
// uc_nation := nation_american ;
1782: LD_ADDR_OWVAR 21
1786: PUSH
1787: LD_INT 1
1789: ST_TO_ADDR
// hc_sex = sex_male ;
1790: LD_ADDR_OWVAR 27
1794: PUSH
1795: LD_INT 1
1797: ST_TO_ADDR
// hc_class = class_scientistic ;
1798: LD_ADDR_OWVAR 28
1802: PUSH
1803: LD_INT 4
1805: ST_TO_ADDR
// hc_basic_skills = [ 1 , 0 , 0 , 1 ] ;
1806: LD_ADDR_OWVAR 30
1810: PUSH
1811: LD_INT 1
1813: PUSH
1814: LD_INT 0
1816: PUSH
1817: LD_INT 0
1819: PUSH
1820: LD_INT 1
1822: PUSH
1823: EMPTY
1824: LIST
1825: LIST
1826: LIST
1827: LIST
1828: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 0 , 3 ] ;
1829: LD_ADDR_OWVAR 31
1833: PUSH
1834: LD_INT 2
1836: PUSH
1837: LD_INT 1
1839: PUSH
1840: LD_INT 0
1842: PUSH
1843: LD_INT 3
1845: PUSH
1846: EMPTY
1847: LIST
1848: LIST
1849: LIST
1850: LIST
1851: ST_TO_ADDR
// hc_attr = [ 10 , gladstone_speed ] ;
1852: LD_ADDR_OWVAR 29
1856: PUSH
1857: LD_INT 10
1859: PUSH
1860: LD_EXP 29
1864: PUSH
1865: EMPTY
1866: LIST
1867: LIST
1868: ST_TO_ADDR
// hc_name := Timothy Gladstone ;
1869: LD_ADDR_OWVAR 26
1873: PUSH
1874: LD_STRING Timothy Gladstone
1876: ST_TO_ADDR
// gladstone := CreateHuman ;
1877: LD_ADDR_EXP 45
1881: PUSH
1882: CALL_OW 44
1886: ST_TO_ADDR
// end ;
1887: LD_VAR 0 1
1891: RET
// function prepare_gladstones_apemen ; var i , s ; begin
1892: LD_INT 0
1894: PPUSH
1895: PPUSH
1896: PPUSH
// uc_side := americans ;
1897: LD_ADDR_OWVAR 20
1901: PUSH
1902: LD_EXP 3
1906: ST_TO_ADDR
// uc_nation := nation_nature ;
1907: LD_ADDR_OWVAR 21
1911: PUSH
1912: LD_INT 0
1914: ST_TO_ADDR
// gladstones_apemen := [ ] ;
1915: LD_ADDR_EXP 49
1919: PUSH
1920: EMPTY
1921: ST_TO_ADDR
// hc_name :=  ;
1922: LD_ADDR_OWVAR 26
1926: PUSH
1927: LD_STRING 
1929: ST_TO_ADDR
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
1930: LD_ADDR_OWVAR 30
1934: PUSH
1935: LD_INT 0
1937: PUSH
1938: LD_INT 0
1940: PUSH
1941: LD_INT 0
1943: PUSH
1944: LD_INT 0
1946: PUSH
1947: EMPTY
1948: LIST
1949: LIST
1950: LIST
1951: LIST
1952: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
1953: LD_ADDR_OWVAR 31
1957: PUSH
1958: LD_INT 0
1960: PUSH
1961: LD_INT 0
1963: PUSH
1964: LD_INT 0
1966: PUSH
1967: LD_INT 0
1969: PUSH
1970: EMPTY
1971: LIST
1972: LIST
1973: LIST
1974: LIST
1975: ST_TO_ADDR
// hc_agressivity := 20 ;
1976: LD_ADDR_OWVAR 35
1980: PUSH
1981: LD_INT 20
1983: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
1984: LD_ADDR_OWVAR 29
1988: PUSH
1989: LD_INT 10
1991: PUSH
1992: LD_INT 12
1994: PUSH
1995: EMPTY
1996: LIST
1997: LIST
1998: ST_TO_ADDR
// hc_class := class_apeman ;
1999: LD_ADDR_OWVAR 28
2003: PUSH
2004: LD_INT 12
2006: ST_TO_ADDR
// hc_sex := sex_male ;
2007: LD_ADDR_OWVAR 27
2011: PUSH
2012: LD_INT 1
2014: ST_TO_ADDR
// for i := 1 to number_of_gladstones_apemen do
2015: LD_ADDR_VAR 0 2
2019: PUSH
2020: DOUBLE
2021: LD_INT 1
2023: DEC
2024: ST_TO_ADDR
2025: LD_EXP 25
2029: PUSH
2030: FOR_TO
2031: IFFALSE 2051
// gladstones_apemen := gladstones_apemen ^ CreateHuman ;
2033: LD_ADDR_EXP 49
2037: PUSH
2038: LD_EXP 49
2042: PUSH
2043: CALL_OW 44
2047: ADD
2048: ST_TO_ADDR
2049: GO 2030
2051: POP
2052: POP
// end ;
2053: LD_VAR 0 1
2057: RET
// function prepare_wild_apemen ; var i , s ; begin
2058: LD_INT 0
2060: PPUSH
2061: PPUSH
2062: PPUSH
// uc_side := 0 ;
2063: LD_ADDR_OWVAR 20
2067: PUSH
2068: LD_INT 0
2070: ST_TO_ADDR
// uc_nation := nation_nature ;
2071: LD_ADDR_OWVAR 21
2075: PUSH
2076: LD_INT 0
2078: ST_TO_ADDR
// wild_apemen := [ ] ;
2079: LD_ADDR_EXP 48
2083: PUSH
2084: EMPTY
2085: ST_TO_ADDR
// hc_name :=  ;
2086: LD_ADDR_OWVAR 26
2090: PUSH
2091: LD_STRING 
2093: ST_TO_ADDR
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
2094: LD_ADDR_OWVAR 30
2098: PUSH
2099: LD_INT 0
2101: PUSH
2102: LD_INT 0
2104: PUSH
2105: LD_INT 0
2107: PUSH
2108: LD_INT 0
2110: PUSH
2111: EMPTY
2112: LIST
2113: LIST
2114: LIST
2115: LIST
2116: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
2117: LD_ADDR_OWVAR 31
2121: PUSH
2122: LD_INT 0
2124: PUSH
2125: LD_INT 0
2127: PUSH
2128: LD_INT 0
2130: PUSH
2131: LD_INT 0
2133: PUSH
2134: EMPTY
2135: LIST
2136: LIST
2137: LIST
2138: LIST
2139: ST_TO_ADDR
// hc_agressivity := 20 ;
2140: LD_ADDR_OWVAR 35
2144: PUSH
2145: LD_INT 20
2147: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
2148: LD_ADDR_OWVAR 29
2152: PUSH
2153: LD_INT 10
2155: PUSH
2156: LD_INT 12
2158: PUSH
2159: EMPTY
2160: LIST
2161: LIST
2162: ST_TO_ADDR
// hc_class := class_apeman ;
2163: LD_ADDR_OWVAR 28
2167: PUSH
2168: LD_INT 12
2170: ST_TO_ADDR
// hc_sex := sex_male ;
2171: LD_ADDR_OWVAR 27
2175: PUSH
2176: LD_INT 1
2178: ST_TO_ADDR
// for i := 1 to number_of_wild_apemen do
2179: LD_ADDR_VAR 0 2
2183: PUSH
2184: DOUBLE
2185: LD_INT 1
2187: DEC
2188: ST_TO_ADDR
2189: LD_EXP 26
2193: PUSH
2194: FOR_TO
2195: IFFALSE 2215
// wild_apemen := wild_apemen ^ CreateHuman ;
2197: LD_ADDR_EXP 48
2201: PUSH
2202: LD_EXP 48
2206: PUSH
2207: CALL_OW 44
2211: ADD
2212: ST_TO_ADDR
2213: GO 2194
2215: POP
2216: POP
// end ;
2217: LD_VAR 0 1
2221: RET
// export function prepare_people ; begin
2222: LD_INT 0
2224: PPUSH
// prepare_burlak ;
2225: CALL 480 0 0
// prepare_pokryshkin ;
2229: CALL 624 0 0
// prepare_belkov ;
2233: CALL 798 0 0
// prepare_gnyevko ;
2237: CALL 942 0 0
// prepare_kurin ;
2241: CALL 1078 0 0
// prepare_kirilenkova ;
2245: CALL 1222 0 0
// prepare_team ;
2249: CALL 1366 0 0
// prepare_brown ;
2253: CALL 1504 0 0
// prepare_gladstone ;
2257: CALL 1754 0 0
// prepare_am1 ;
2261: CALL 1629 0 0
// prepare_gladstones_apemen ;
2265: CALL 1892 0 0
// prepare_wild_apemen ;
2269: CALL 2058 0 0
// end ;
2273: LD_VAR 0 1
2277: RET
// export function place_team ; var un ; begin
2278: LD_INT 0
2280: PPUSH
2281: PPUSH
// PlaceUnitXY ( Pokryshkin , 90 , 66 , false ) ;
2282: LD_EXP 38
2286: PPUSH
2287: LD_INT 90
2289: PPUSH
2290: LD_INT 66
2292: PPUSH
2293: LD_INT 0
2295: PPUSH
2296: CALL_OW 48
// PlaceUnitXY ( Belkov , 87 , 66 , false ) ;
2300: LD_EXP 39
2304: PPUSH
2305: LD_INT 87
2307: PPUSH
2308: LD_INT 66
2310: PPUSH
2311: LD_INT 0
2313: PPUSH
2314: CALL_OW 48
// for un in team do
2318: LD_ADDR_VAR 0 2
2322: PUSH
2323: LD_EXP 43
2327: PUSH
2328: FOR_IN
2329: IFFALSE 2354
// PlaceUnitXYR ( un , 85 , 63 , 3 , false ) ;
2331: LD_VAR 0 2
2335: PPUSH
2336: LD_INT 85
2338: PPUSH
2339: LD_INT 63
2341: PPUSH
2342: LD_INT 3
2344: PPUSH
2345: LD_INT 0
2347: PPUSH
2348: CALL_OW 50
2352: GO 2328
2354: POP
2355: POP
// end ;
2356: LD_VAR 0 1
2360: RET
// export function place_gnyevko ( x , y ) ; begin
2361: LD_INT 0
2363: PPUSH
// SetLives ( Gnyevko , 450 ) ;
2364: LD_EXP 40
2368: PPUSH
2369: LD_INT 450
2371: PPUSH
2372: CALL_OW 234
// PlaceUnitXY ( Gnyevko , x , y , false ) ;
2376: LD_EXP 40
2380: PPUSH
2381: LD_VAR 0 1
2385: PPUSH
2386: LD_VAR 0 2
2390: PPUSH
2391: LD_INT 0
2393: PPUSH
2394: CALL_OW 48
// ComHold ( Gnyevko ) ;
2398: LD_EXP 40
2402: PPUSH
2403: CALL_OW 140
// end ;
2407: LD_VAR 0 3
2411: RET
// export function place_wild_apemen ; var un ; begin
2412: LD_INT 0
2414: PPUSH
2415: PPUSH
// for un in wild_apemen do
2416: LD_ADDR_VAR 0 2
2420: PUSH
2421: LD_EXP 48
2425: PUSH
2426: FOR_IN
2427: IFFALSE 2446
// PlaceUnitArea ( un , CaveEntrance , false ) ;
2429: LD_VAR 0 2
2433: PPUSH
2434: LD_INT 2
2436: PPUSH
2437: LD_INT 0
2439: PPUSH
2440: CALL_OW 49
2444: GO 2426
2446: POP
2447: POP
// end ;
2448: LD_VAR 0 1
2452: RET
// export function place_americans ; var un ; begin
2453: LD_INT 0
2455: PPUSH
2456: PPUSH
// uc_side := americans ;
2457: LD_ADDR_OWVAR 20
2461: PUSH
2462: LD_EXP 3
2466: ST_TO_ADDR
// uc_nation := nation_american ;
2467: LD_ADDR_OWVAR 21
2471: PUSH
2472: LD_INT 1
2474: ST_TO_ADDR
// bc_type := b_breastwork ;
2475: LD_ADDR_OWVAR 42
2479: PUSH
2480: LD_INT 31
2482: ST_TO_ADDR
// bc_level := bunker_level ;
2483: LD_ADDR_OWVAR 43
2487: PUSH
2488: LD_EXP 30
2492: ST_TO_ADDR
// am_bunker := CreateAndPlaceBuildingXYD ( 54 , 25 , 5 ) ;
2493: LD_ADDR_EXP 47
2497: PUSH
2498: LD_INT 54
2500: PPUSH
2501: LD_INT 25
2503: PPUSH
2504: LD_INT 5
2506: PPUSH
2507: CALL_OW 47
2511: ST_TO_ADDR
// SetLives ( am_bunker , bunker_lives ) ;
2512: LD_EXP 47
2516: PPUSH
2517: LD_EXP 33
2521: PPUSH
2522: CALL_OW 234
// PlaceUnitXYR ( Gladstone , 40 , 7 , 2 , false ) ;
2526: LD_EXP 45
2530: PPUSH
2531: LD_INT 40
2533: PPUSH
2534: LD_INT 7
2536: PPUSH
2537: LD_INT 2
2539: PPUSH
2540: LD_INT 0
2542: PPUSH
2543: CALL_OW 50
// for un in gladstones_apemen do
2547: LD_ADDR_VAR 0 2
2551: PUSH
2552: LD_EXP 49
2556: PUSH
2557: FOR_IN
2558: IFFALSE 2583
// PlaceUnitXYR ( un , 37 , 9 , 5 , false ) ;
2560: LD_VAR 0 2
2564: PPUSH
2565: LD_INT 37
2567: PPUSH
2568: LD_INT 9
2570: PPUSH
2571: LD_INT 5
2573: PPUSH
2574: LD_INT 0
2576: PPUSH
2577: CALL_OW 50
2581: GO 2557
2583: POP
2584: POP
// PlaceUnitXYR ( Am1 , 51 , 22 , 2 , false ) ;
2585: LD_EXP 46
2589: PPUSH
2590: LD_INT 51
2592: PPUSH
2593: LD_INT 22
2595: PPUSH
2596: LD_INT 2
2598: PPUSH
2599: LD_INT 0
2601: PPUSH
2602: CALL_OW 50
// ComEnterUnit ( Am1 , am_bunker ) ;
2606: LD_EXP 46
2610: PPUSH
2611: LD_EXP 47
2615: PPUSH
2616: CALL_OW 120
// end ;
2620: LD_VAR 0 1
2624: RET
// export function place_brown ; begin
2625: LD_INT 0
2627: PPUSH
// PlaceUnitXY ( Brown , 28 , 53 , true ) ;
2628: LD_EXP 44
2632: PPUSH
2633: LD_INT 28
2635: PPUSH
2636: LD_INT 53
2638: PPUSH
2639: LD_INT 1
2641: PPUSH
2642: CALL_OW 48
// end ; end_of_file
2646: LD_VAR 0 1
2650: RET
// var getting_up , kirilenkova_spoke ; export function burlak_appears ; begin
2651: LD_INT 0
2653: PPUSH
// InGameOn ;
2654: CALL_OW 8
// CenterNowOnXY ( 82 , 87 ) ;
2658: LD_INT 82
2660: PPUSH
2661: LD_INT 87
2663: PPUSH
2664: CALL_OW 86
// DWait ( 0 0$1 ) ;
2668: LD_INT 35
2670: PPUSH
2671: CALL_OW 68
// PlaceUnitXY ( Burlak , 82 , 87 , true ) ;
2675: LD_EXP 37
2679: PPUSH
2680: LD_INT 82
2682: PPUSH
2683: LD_INT 87
2685: PPUSH
2686: LD_INT 1
2688: PPUSH
2689: CALL_OW 48
// Wait ( 0 0$3 ) ;
2693: LD_INT 105
2695: PPUSH
2696: CALL_OW 67
// ComWait ( Burlak , 0 0$2 ) ;
2700: LD_EXP 37
2704: PPUSH
2705: LD_INT 70
2707: PPUSH
2708: CALL_OW 142
// AddComMoveXY ( Burlak , 91 , 88 ) ;
2712: LD_EXP 37
2716: PPUSH
2717: LD_INT 91
2719: PPUSH
2720: LD_INT 88
2722: PPUSH
2723: CALL_OW 171
// Say ( Burlak , D1-Bur-1 ) ;
2727: LD_EXP 37
2731: PPUSH
2732: LD_STRING D1-Bur-1
2734: PPUSH
2735: CALL_OW 88
// CenterOnUnits ( Burlak ) ;
2739: LD_EXP 37
2743: PPUSH
2744: CALL_OW 85
// DWait ( 0 0$2 ) ;
2748: LD_INT 70
2750: PPUSH
2751: CALL_OW 68
// ComWait ( Burlak , 0 0$1 ) ;
2755: LD_EXP 37
2759: PPUSH
2760: LD_INT 35
2762: PPUSH
2763: CALL_OW 142
// AddComMoveXY ( Burlak , 104 , 96 ) ;
2767: LD_EXP 37
2771: PPUSH
2772: LD_INT 104
2774: PPUSH
2775: LD_INT 96
2777: PPUSH
2778: CALL_OW 171
// Say ( Burlak , D1-Bur-1a ) ;
2782: LD_EXP 37
2786: PPUSH
2787: LD_STRING D1-Bur-1a
2789: PPUSH
2790: CALL_OW 88
// CenterOnUnits ( Burlak ) ;
2794: LD_EXP 37
2798: PPUSH
2799: CALL_OW 85
// DWait ( 0 0$2 ) ;
2803: LD_INT 70
2805: PPUSH
2806: CALL_OW 68
// ComMoveXY ( Burlak , 103 , 90 ) ;
2810: LD_EXP 37
2814: PPUSH
2815: LD_INT 103
2817: PPUSH
2818: LD_INT 90
2820: PPUSH
2821: CALL_OW 111
// Say ( Burlak , D1-Bur-1b ) ;
2825: LD_EXP 37
2829: PPUSH
2830: LD_STRING D1-Bur-1b
2832: PPUSH
2833: CALL_OW 88
// CenterOnUnits ( Burlak ) ;
2837: LD_EXP 37
2841: PPUSH
2842: CALL_OW 85
// Wait ( 0 0$0.5 ) ;
2846: LD_INT 18
2848: PPUSH
2849: CALL_OW 67
// InGameOff ;
2853: CALL_OW 9
// SaveForQuickRestart ;
2857: CALL_OW 22
// Wait ( 0 0$0.5 ) ;
2861: LD_INT 18
2863: PPUSH
2864: CALL_OW 67
// ChangeMissionObjectives ( M1 ) ;
2868: LD_STRING M1
2870: PPUSH
2871: CALL_OW 337
// Hint ( Selection ) ;
2875: LD_STRING Selection
2877: PPUSH
2878: CALL_OW 339
// end ;
2882: LD_VAR 0 1
2886: RET
// every 0 0$1.5 trigger SeeXY ( you , 71 , 85 ) and SeeXY ( you , 73 , 83 ) do
2887: LD_EXP 1
2891: PPUSH
2892: LD_INT 71
2894: PPUSH
2895: LD_INT 85
2897: PPUSH
2898: CALL_OW 293
2902: PUSH
2903: LD_EXP 1
2907: PPUSH
2908: LD_INT 73
2910: PPUSH
2911: LD_INT 83
2913: PPUSH
2914: CALL_OW 293
2918: AND
2919: IFFALSE 2972
2921: GO 2923
2923: DISABLE
// begin if ( GetDistUnitXY ( Burlak , 72 , 85 ) <= 15 ) and ( GetY ( Burlak ) > 75 ) then
2924: LD_EXP 37
2928: PPUSH
2929: LD_INT 72
2931: PPUSH
2932: LD_INT 85
2934: PPUSH
2935: CALL_OW 297
2939: PUSH
2940: LD_INT 15
2942: LESSEQUAL
2943: PUSH
2944: LD_EXP 37
2948: PPUSH
2949: CALL_OW 251
2953: PUSH
2954: LD_INT 75
2956: GREATER
2957: AND
2958: IFFALSE 2972
// Say ( Burlak , DWaterfall-Bur-1 ) ;
2960: LD_EXP 37
2964: PPUSH
2965: LD_STRING DWaterfall-Bur-1
2967: PPUSH
2968: CALL_OW 88
// end ;
2972: END
// every 0 0$1.5 + 0 0$0.75 trigger SeeXY ( you , 126 , 94 ) and SeeXY ( you , 127 , 92 ) do
2973: LD_EXP 1
2977: PPUSH
2978: LD_INT 126
2980: PPUSH
2981: LD_INT 94
2983: PPUSH
2984: CALL_OW 293
2988: PUSH
2989: LD_EXP 1
2993: PPUSH
2994: LD_INT 127
2996: PPUSH
2997: LD_INT 92
2999: PPUSH
3000: CALL_OW 293
3004: AND
3005: IFFALSE 3058
3007: GO 3009
3009: DISABLE
// begin if ( GetDistUnitXY ( Burlak , 126 , 93 ) <= 15 ) and ( GetY ( Burlak ) > 73 ) then
3010: LD_EXP 37
3014: PPUSH
3015: LD_INT 126
3017: PPUSH
3018: LD_INT 93
3020: PPUSH
3021: CALL_OW 297
3025: PUSH
3026: LD_INT 15
3028: LESSEQUAL
3029: PUSH
3030: LD_EXP 37
3034: PPUSH
3035: CALL_OW 251
3039: PUSH
3040: LD_INT 73
3042: GREATER
3043: AND
3044: IFFALSE 3058
// Say ( Burlak , DCorpse-Bur-1 ) ;
3046: LD_EXP 37
3050: PPUSH
3051: LD_STRING DCorpse-Bur-1
3053: PPUSH
3054: CALL_OW 88
// end ;
3058: END
// every 0 0$1.1 trigger GetLives ( Burlak ) < 940 do
3059: LD_EXP 37
3063: PPUSH
3064: CALL_OW 256
3068: PUSH
3069: LD_INT 940
3071: LESS
3072: IFFALSE 3084
3074: GO 3076
3076: DISABLE
// begin Hint ( Wound ) ;
3077: LD_STRING Wound
3079: PPUSH
3080: CALL_OW 339
// end ;
3084: END
// every 0 0$0.5 trigger SeeXY ( you , 134 , 83 ) do var un , un1 ;
3085: LD_EXP 1
3089: PPUSH
3090: LD_INT 134
3092: PPUSH
3093: LD_INT 83
3095: PPUSH
3096: CALL_OW 293
3100: IFFALSE 3569
3102: GO 3104
3104: DISABLE
3105: LD_INT 0
3107: PPUSH
3108: PPUSH
// begin place_gnyevko ( 134 , 83 ) ;
3109: LD_INT 134
3111: PPUSH
3112: LD_INT 83
3114: PPUSH
3115: CALL 2361 0 2
// if your_units <= 0 then
3119: LD_EXP 51
3123: PUSH
3124: LD_INT 0
3126: LESSEQUAL
3127: IFFALSE 3141
// un := Burlak else
3129: LD_ADDR_VAR 0 1
3133: PUSH
3134: LD_EXP 37
3138: ST_TO_ADDR
3139: GO 3207
// begin un := NearestUnitToUnit ( your_units , Gnyevko ) ;
3141: LD_ADDR_VAR 0 1
3145: PUSH
3146: LD_EXP 51
3150: PPUSH
3151: LD_EXP 40
3155: PPUSH
3156: CALL_OW 74
3160: ST_TO_ADDR
// if GetDistUnits ( un , Gnyevko ) < GetDistUnits ( Burlak , Gnyevko ) + 6 then
3161: LD_VAR 0 1
3165: PPUSH
3166: LD_EXP 40
3170: PPUSH
3171: CALL_OW 296
3175: PUSH
3176: LD_EXP 37
3180: PPUSH
3181: LD_EXP 40
3185: PPUSH
3186: CALL_OW 296
3190: PUSH
3191: LD_INT 6
3193: PLUS
3194: LESS
3195: IFFALSE 3207
// un := Burlak ;
3197: LD_ADDR_VAR 0 1
3201: PUSH
3202: LD_EXP 37
3206: ST_TO_ADDR
// end ; CenterOnUnits ( Gnyevko ) ;
3207: LD_EXP 40
3211: PPUSH
3212: CALL_OW 85
// DialogueOn ;
3216: CALL_OW 6
// interface_hidden := true ;
3220: LD_ADDR_OWVAR 54
3224: PUSH
3225: LD_INT 1
3227: ST_TO_ADDR
// if un = Burlak then
3228: LD_VAR 0 1
3232: PUSH
3233: LD_EXP 37
3237: EQUAL
3238: IFFALSE 3254
// Say ( Burlak , D3-Bur-1 ) else
3240: LD_EXP 37
3244: PPUSH
3245: LD_STRING D3-Bur-1
3247: PPUSH
3248: CALL_OW 88
3252: GO 3295
// if GetSex ( un ) = sex_male then
3254: LD_VAR 0 1
3258: PPUSH
3259: CALL_OW 258
3263: PUSH
3264: LD_INT 1
3266: EQUAL
3267: IFFALSE 3283
// Say ( un , D3-RSol1-1 ) else
3269: LD_VAR 0 1
3273: PPUSH
3274: LD_STRING D3-RSol1-1
3276: PPUSH
3277: CALL_OW 88
3281: GO 3295
// Say ( un , D3-RFSol1-1 ) ;
3283: LD_VAR 0 1
3287: PPUSH
3288: LD_STRING D3-RFSol1-1
3290: PPUSH
3291: CALL_OW 88
// Say ( Gnyevko , D3-Gny-1 ) ;
3295: LD_EXP 40
3299: PPUSH
3300: LD_STRING D3-Gny-1
3302: PPUSH
3303: CALL_OW 88
// if burlak_killed_apeman then
3307: LD_EXP 22
3311: IFFALSE 3327
// Say ( Burlak , D3-Bur-2 ) else
3313: LD_EXP 37
3317: PPUSH
3318: LD_STRING D3-Bur-2
3320: PPUSH
3321: CALL_OW 88
3325: GO 3345
// if soldiers_killed_apeman then
3327: LD_EXP 23
3331: IFFALSE 3345
// Say ( Burlak , D3-Bur-2a ) ;
3333: LD_EXP 37
3337: PPUSH
3338: LD_STRING D3-Bur-2a
3340: PPUSH
3341: CALL_OW 88
// if un = Burlak then
3345: LD_VAR 0 1
3349: PUSH
3350: LD_EXP 37
3354: EQUAL
3355: IFFALSE 3369
// Say ( Burlak , D3-Bur-2b ) ;
3357: LD_EXP 37
3361: PPUSH
3362: LD_STRING D3-Bur-2b
3364: PPUSH
3365: CALL_OW 88
// if not pokryshkin_met then
3369: LD_EXP 5
3373: NOT
3374: IFFALSE 3402
// begin Say ( Burlak , D3-Bur-2c ) ;
3376: LD_EXP 37
3380: PPUSH
3381: LD_STRING D3-Bur-2c
3383: PPUSH
3384: CALL_OW 88
// Say ( Gnyevko , D3-Gny-2 ) ;
3388: LD_EXP 40
3392: PPUSH
3393: LD_STRING D3-Gny-2
3395: PPUSH
3396: CALL_OW 88
// end else
3400: GO 3521
// begin if not returning then
3402: LD_EXP 15
3406: NOT
3407: IFFALSE 3423
// Say ( Burlak , D3-Bur-2d ) else
3409: LD_EXP 37
3413: PPUSH
3414: LD_STRING D3-Bur-2d
3416: PPUSH
3417: CALL_OW 88
3421: GO 3509
// begin if GetSide ( kirilenkova ) = 3 then
3423: LD_EXP 41
3427: PPUSH
3428: CALL_OW 255
3432: PUSH
3433: LD_INT 3
3435: EQUAL
3436: IFFALSE 3442
// SA_SaveGnievkoAfterAll ;
3438: CALL 12491 0 0
// if un = Burlak then
3442: LD_VAR 0 1
3446: PUSH
3447: LD_EXP 37
3451: EQUAL
3452: IFFALSE 3468
// Say ( Burlak , D3-Bur-2e ) else
3454: LD_EXP 37
3458: PPUSH
3459: LD_STRING D3-Bur-2e
3461: PPUSH
3462: CALL_OW 88
3466: GO 3509
// if GetSex ( un ) = sex_male then
3468: LD_VAR 0 1
3472: PPUSH
3473: CALL_OW 258
3477: PUSH
3478: LD_INT 1
3480: EQUAL
3481: IFFALSE 3497
// Say ( un , D3-RSol1-2 ) else
3483: LD_VAR 0 1
3487: PPUSH
3488: LD_STRING D3-RSol1-2
3490: PPUSH
3491: CALL_OW 88
3495: GO 3509
// Say ( un , D3-RFSol1-2 ) end ;
3497: LD_VAR 0 1
3501: PPUSH
3502: LD_STRING D3-RFSol1-2
3504: PPUSH
3505: CALL_OW 88
// Say ( Gnyevko , D3-Gny-2a ) ;
3509: LD_EXP 40
3513: PPUSH
3514: LD_STRING D3-Gny-2a
3516: PPUSH
3517: CALL_OW 88
// end ; SetSide ( Gnyevko , you ) ;
3521: LD_EXP 40
3525: PPUSH
3526: LD_EXP 1
3530: PPUSH
3531: CALL_OW 235
// interface_hidden := false ;
3535: LD_ADDR_OWVAR 54
3539: PUSH
3540: LD_INT 0
3542: ST_TO_ADDR
// DialogueOff ;
3543: CALL_OW 7
// if not pokryshkin_met then
3547: LD_EXP 5
3551: NOT
3552: IFFALSE 3561
// Hint ( selection2 ) ;
3554: LD_STRING selection2
3556: PPUSH
3557: CALL_OW 339
// gnyevko_met := true ;
3561: LD_ADDR_EXP 6
3565: PUSH
3566: LD_INT 1
3568: ST_TO_ADDR
// end ;
3569: PPOPN 2
3571: END
// every 0 0$1 + 0 0$0.16 do var un ;
3572: GO 3574
3574: DISABLE
3575: LD_INT 0
3577: PPUSH
// begin if not wild_apemen then
3578: LD_EXP 48
3582: NOT
3583: IFFALSE 3587
// exit ;
3585: GO 3654
// for un in wild_apemen do
3587: LD_ADDR_VAR 0 1
3591: PUSH
3592: LD_EXP 48
3596: PUSH
3597: FOR_IN
3598: IFFALSE 3651
// if Attacks ( un ) then
3600: LD_VAR 0 1
3604: PPUSH
3605: CALL_OW 320
3609: IFFALSE 3649
// if GetSide ( Attacks ( un ) ) = you then
3611: LD_VAR 0 1
3615: PPUSH
3616: CALL_OW 320
3620: PPUSH
3621: CALL_OW 255
3625: PUSH
3626: LD_EXP 1
3630: EQUAL
3631: IFFALSE 3649
// begin Say ( Burlak , D2-Bur-1a ) ;
3633: LD_EXP 37
3637: PPUSH
3638: LD_STRING D2-Bur-1a
3640: PPUSH
3641: CALL_OW 88
// exit ;
3645: POP
3646: POP
3647: GO 3654
// end ;
3649: GO 3597
3651: POP
3652: POP
// enable ;
3653: ENABLE
// end ;
3654: PPOPN 1
3656: END
// every 0 0$2.7 trigger radio_dropped and SeeXY ( you , radio_x , radio_y ) do var un ;
3657: LD_EXP 53
3661: PUSH
3662: LD_EXP 1
3666: PPUSH
3667: LD_EXP 54
3671: PPUSH
3672: LD_EXP 55
3676: PPUSH
3677: CALL_OW 293
3681: AND
3682: IFFALSE 4087
3684: GO 3686
3686: DISABLE
3687: LD_INT 0
3689: PPUSH
// begin wait ( 0 0$2 ) ;
3690: LD_INT 70
3692: PPUSH
3693: CALL_OW 67
// if not SeeXY ( you , radio_x , radio_y ) then
3697: LD_EXP 1
3701: PPUSH
3702: LD_EXP 54
3706: PPUSH
3707: LD_EXP 55
3711: PPUSH
3712: CALL_OW 293
3716: NOT
3717: IFFALSE 3724
// begin enable ;
3719: ENABLE
// exit ;
3720: GO 4087
// end else
3722: GO 4087
// begin if not pokryshkin_met then
3724: LD_EXP 5
3728: NOT
3729: IFFALSE 3773
// begin DialogueOn ;
3731: CALL_OW 6
// Say ( Burlak , D2a-Bur-1 ) ;
3735: LD_EXP 37
3739: PPUSH
3740: LD_STRING D2a-Bur-1
3742: PPUSH
3743: CALL_OW 88
// Say ( Burlak , D2a-Bur-2 ) ;
3747: LD_EXP 37
3751: PPUSH
3752: LD_STRING D2a-Bur-2
3754: PPUSH
3755: CALL_OW 88
// DialogueOff ;
3759: CALL_OW 7
// radio_found := true ;
3763: LD_ADDR_EXP 21
3767: PUSH
3768: LD_INT 1
3770: ST_TO_ADDR
// exit ;
3771: GO 4087
// end ; un := NearestUnitToXY ( your_units union [ Gnyevko , Burlak , Kirilenkova ] , radio_x , radio_y ) ;
3773: LD_ADDR_VAR 0 1
3777: PUSH
3778: LD_EXP 51
3782: PUSH
3783: LD_EXP 40
3787: PUSH
3788: LD_EXP 37
3792: PUSH
3793: LD_EXP 41
3797: PUSH
3798: EMPTY
3799: LIST
3800: LIST
3801: LIST
3802: UNION
3803: PPUSH
3804: LD_EXP 54
3808: PPUSH
3809: LD_EXP 55
3813: PPUSH
3814: CALL_OW 73
3818: ST_TO_ADDR
// ComMoveXY ( un , ( GetX ( un ) + radio_x ) div 2 , ( GetY ( un ) + radio_y ) div 2 ) ;
3819: LD_VAR 0 1
3823: PPUSH
3824: LD_VAR 0 1
3828: PPUSH
3829: CALL_OW 250
3833: PUSH
3834: LD_EXP 54
3838: PLUS
3839: PUSH
3840: LD_INT 2
3842: DIV
3843: PPUSH
3844: LD_VAR 0 1
3848: PPUSH
3849: CALL_OW 251
3853: PUSH
3854: LD_EXP 55
3858: PLUS
3859: PUSH
3860: LD_INT 2
3862: DIV
3863: PPUSH
3864: CALL_OW 111
// wait ( 0 0$2 ) ;
3868: LD_INT 70
3870: PPUSH
3871: CALL_OW 67
// DialogueOn ;
3875: CALL_OW 6
// case un of Burlak :
3879: LD_VAR 0 1
3883: PUSH
3884: LD_EXP 37
3888: DOUBLE
3889: EQUAL
3890: IFTRUE 3894
3892: GO 3909
3894: POP
// Say ( Burlak , D2a-Bur-1 ) ; Belkov :
3895: LD_EXP 37
3899: PPUSH
3900: LD_STRING D2a-Bur-1
3902: PPUSH
3903: CALL_OW 88
3907: GO 4026
3909: LD_EXP 39
3913: DOUBLE
3914: EQUAL
3915: IFTRUE 3919
3917: GO 3934
3919: POP
// Say ( Belkov , D2a-Bel-1 ) ; Kirilenkova :
3920: LD_EXP 39
3924: PPUSH
3925: LD_STRING D2a-Bel-1
3927: PPUSH
3928: CALL_OW 88
3932: GO 4026
3934: LD_EXP 41
3938: DOUBLE
3939: EQUAL
3940: IFTRUE 3944
3942: GO 3959
3944: POP
// Say ( Kirilenkova , D2a-Kir-1 ) ; Gnyevko :
3945: LD_EXP 41
3949: PPUSH
3950: LD_STRING D2a-Kir-1
3952: PPUSH
3953: CALL_OW 88
3957: GO 4026
3959: LD_EXP 40
3963: DOUBLE
3964: EQUAL
3965: IFTRUE 3969
3967: GO 3984
3969: POP
// Say ( Gnyevko , D2a-Gny-1 ) ; else
3970: LD_EXP 40
3974: PPUSH
3975: LD_STRING D2a-Gny-1
3977: PPUSH
3978: CALL_OW 88
3982: GO 4026
3984: POP
// if GetSex ( un ) = sex_male then
3985: LD_VAR 0 1
3989: PPUSH
3990: CALL_OW 258
3994: PUSH
3995: LD_INT 1
3997: EQUAL
3998: IFFALSE 4014
// Say ( un , D2a-RSol1-1 ) else
4000: LD_VAR 0 1
4004: PPUSH
4005: LD_STRING D2a-RSol1-1
4007: PPUSH
4008: CALL_OW 88
4012: GO 4026
// Say ( un , D2a-RFSol1-1 ) ; end ;
4014: LD_VAR 0 1
4018: PPUSH
4019: LD_STRING D2a-RFSol1-1
4021: PPUSH
4022: CALL_OW 88
// if gnyevko_met and ( un <> Gnyevko ) then
4026: LD_EXP 6
4030: PUSH
4031: LD_VAR 0 1
4035: PUSH
4036: LD_EXP 40
4040: NONEQUAL
4041: AND
4042: IFFALSE 4056
// begin Say ( Gnyevko , D2a-Gny-1 ) ;
4044: LD_EXP 40
4048: PPUSH
4049: LD_STRING D2a-Gny-1
4051: PPUSH
4052: CALL_OW 88
// end ; if not gnyevko_met then
4056: LD_EXP 6
4060: NOT
4061: IFFALSE 4075
// Say ( Burlak , D2a-Bur-2 ) ;
4063: LD_EXP 37
4067: PPUSH
4068: LD_STRING D2a-Bur-2
4070: PPUSH
4071: CALL_OW 88
// radio_found := true ;
4075: LD_ADDR_EXP 21
4079: PUSH
4080: LD_INT 1
4082: ST_TO_ADDR
// DialogueOff ;
4083: CALL_OW 7
// end ; end ;
4087: PPOPN 1
4089: END
// export function d_burlak_alone_meets_apemen ; begin
4090: LD_INT 0
4092: PPUSH
// Say ( Burlak , D2-Bur-1 ) ;
4093: LD_EXP 37
4097: PPUSH
4098: LD_STRING D2-Bur-1
4100: PPUSH
4101: CALL_OW 88
// end ;
4105: LD_VAR 0 1
4109: RET
// function d_burlak_and_gnyevko_meet_pokryshkin ; var x , y , d , un ; var gn , gn_before ; begin
4110: LD_INT 0
4112: PPUSH
4113: PPUSH
4114: PPUSH
4115: PPUSH
4116: PPUSH
4117: PPUSH
4118: PPUSH
// disable ( 1 ) ;
4119: LD_INT 1
4121: DISABLE_MARKED
// ComMoveToArea ( wild_apemen , CaveEntrance ) ;
4122: LD_EXP 48
4126: PPUSH
4127: LD_INT 2
4129: PPUSH
4130: CALL_OW 113
// InGameOn ;
4134: CALL_OW 8
// gn := gnyevko_met and IsOk ( Gnyevko ) and GetSide ( Gnyevko ) = you ;
4138: LD_ADDR_VAR 0 6
4142: PUSH
4143: LD_EXP 6
4147: PUSH
4148: LD_EXP 40
4152: PPUSH
4153: CALL_OW 302
4157: AND
4158: PUSH
4159: LD_EXP 40
4163: PPUSH
4164: CALL_OW 255
4168: PUSH
4169: LD_EXP 1
4173: EQUAL
4174: AND
4175: ST_TO_ADDR
// gn_before := gnyevko_met and GetSide ( Gnyevko ) = russians ;
4176: LD_ADDR_VAR 0 7
4180: PUSH
4181: LD_EXP 6
4185: PUSH
4186: LD_EXP 40
4190: PPUSH
4191: CALL_OW 255
4195: PUSH
4196: LD_EXP 2
4200: EQUAL
4201: AND
4202: ST_TO_ADDR
// ComHold ( [ gnyevko , Burlak ] ) ;
4203: LD_EXP 40
4207: PUSH
4208: LD_EXP 37
4212: PUSH
4213: EMPTY
4214: LIST
4215: LIST
4216: PPUSH
4217: CALL_OW 140
// if gn and ( GetDistUnits ( Pokryshkin , Gnyevko ) + 4 < GetDistUnits ( Pokryshkin , Burlak ) ) then
4221: LD_VAR 0 6
4225: PUSH
4226: LD_EXP 38
4230: PPUSH
4231: LD_EXP 40
4235: PPUSH
4236: CALL_OW 296
4240: PUSH
4241: LD_INT 4
4243: PLUS
4244: PUSH
4245: LD_EXP 38
4249: PPUSH
4250: LD_EXP 37
4254: PPUSH
4255: CALL_OW 296
4259: LESS
4260: AND
4261: IFFALSE 4340
// ComMoveXY ( Pokryshkin , ( GetX ( Pokryshkin ) * 7 + GetX ( Gnyevko ) * 3 ) div 10 , ( GetY ( Pokryshkin ) * 7 + GetY ( Gnyevko ) * 3 ) div 10 ) else
4263: LD_EXP 38
4267: PPUSH
4268: LD_EXP 38
4272: PPUSH
4273: CALL_OW 250
4277: PUSH
4278: LD_INT 7
4280: MUL
4281: PUSH
4282: LD_EXP 40
4286: PPUSH
4287: CALL_OW 250
4291: PUSH
4292: LD_INT 3
4294: MUL
4295: PLUS
4296: PUSH
4297: LD_INT 10
4299: DIV
4300: PPUSH
4301: LD_EXP 38
4305: PPUSH
4306: CALL_OW 251
4310: PUSH
4311: LD_INT 7
4313: MUL
4314: PUSH
4315: LD_EXP 40
4319: PPUSH
4320: CALL_OW 251
4324: PUSH
4325: LD_INT 3
4327: MUL
4328: PLUS
4329: PUSH
4330: LD_INT 10
4332: DIV
4333: PPUSH
4334: CALL_OW 111
4338: GO 4505
// begin ComMoveXY ( Pokryshkin , ( GetX ( Pokryshkin ) * 7 + GetX ( Burlak ) * 3 ) div 10 , ( GetY ( Pokryshkin ) * 7 + GetY ( Burlak ) * 3 ) div 10 ) ;
4340: LD_EXP 38
4344: PPUSH
4345: LD_EXP 38
4349: PPUSH
4350: CALL_OW 250
4354: PUSH
4355: LD_INT 7
4357: MUL
4358: PUSH
4359: LD_EXP 37
4363: PPUSH
4364: CALL_OW 250
4368: PUSH
4369: LD_INT 3
4371: MUL
4372: PLUS
4373: PUSH
4374: LD_INT 10
4376: DIV
4377: PPUSH
4378: LD_EXP 38
4382: PPUSH
4383: CALL_OW 251
4387: PUSH
4388: LD_INT 7
4390: MUL
4391: PUSH
4392: LD_EXP 37
4396: PPUSH
4397: CALL_OW 251
4401: PUSH
4402: LD_INT 3
4404: MUL
4405: PLUS
4406: PUSH
4407: LD_INT 10
4409: DIV
4410: PPUSH
4411: CALL_OW 111
// if gn_before then
4415: LD_VAR 0 7
4419: IFFALSE 4505
// begin ComMoveXY ( Gnyevko , ( GetX ( Gnyevko ) * 7 + GetX ( Burlak ) * 3 ) div 10 , ( GetY ( Gnyevko ) * 7 + GetY ( Burlak ) * 3 ) div 10 ) ;
4421: LD_EXP 40
4425: PPUSH
4426: LD_EXP 40
4430: PPUSH
4431: CALL_OW 250
4435: PUSH
4436: LD_INT 7
4438: MUL
4439: PUSH
4440: LD_EXP 37
4444: PPUSH
4445: CALL_OW 250
4449: PUSH
4450: LD_INT 3
4452: MUL
4453: PLUS
4454: PUSH
4455: LD_INT 10
4457: DIV
4458: PPUSH
4459: LD_EXP 40
4463: PPUSH
4464: CALL_OW 251
4468: PUSH
4469: LD_INT 7
4471: MUL
4472: PUSH
4473: LD_EXP 37
4477: PPUSH
4478: CALL_OW 251
4482: PUSH
4483: LD_INT 3
4485: MUL
4486: PLUS
4487: PUSH
4488: LD_INT 10
4490: DIV
4491: PPUSH
4492: CALL_OW 111
// AddComHold ( Gnyevko ) ;
4496: LD_EXP 40
4500: PPUSH
4501: CALL_OW 200
// end ; end ; AddComHold ( Pokryshkin ) ;
4505: LD_EXP 38
4509: PPUSH
4510: CALL_OW 200
// if gn_before then
4514: LD_VAR 0 7
4518: IFFALSE 4543
// begin CenterOnUnits ( Gnyevko ) ;
4520: LD_EXP 40
4524: PPUSH
4525: CALL_OW 85
// Say ( Gnyevko , D4-Gny-3 ) ;
4529: LD_EXP 40
4533: PPUSH
4534: LD_STRING D4-Gny-3
4536: PPUSH
4537: CALL_OW 88
// end else
4541: GO 4564
// begin CenterOnUnits ( Pokryshkin ) ;
4543: LD_EXP 38
4547: PPUSH
4548: CALL_OW 85
// Say ( Pokryshkin , D4-Pok-1 ) ;
4552: LD_EXP 38
4556: PPUSH
4557: LD_STRING D4-Pok-1
4559: PPUSH
4560: CALL_OW 88
// end ; ChangeSideFog ( russians , you ) ;
4564: LD_EXP 2
4568: PPUSH
4569: LD_EXP 1
4573: PPUSH
4574: CALL_OW 343
// RevealFogArea ( you , RusFog ) ;
4578: LD_EXP 1
4582: PPUSH
4583: LD_INT 3
4585: PPUSH
4586: CALL_OW 332
// d := GetDistUnits ( Burlak , Pokryshkin ) ;
4590: LD_ADDR_VAR 0 4
4594: PUSH
4595: LD_EXP 37
4599: PPUSH
4600: LD_EXP 38
4604: PPUSH
4605: CALL_OW 296
4609: ST_TO_ADDR
// if d > 6 then
4610: LD_VAR 0 4
4614: PUSH
4615: LD_INT 6
4617: GREATER
4618: IFFALSE 4720
// begin ComMoveXY ( Burlak , ( GetX ( Burlak ) * 6 + GetX ( Pokryshkin ) * ( d - 6 ) ) div d , ( GetY ( Burlak ) * 6 + GetY ( Pokryshkin ) * ( d - 6 ) ) div d ) ;
4620: LD_EXP 37
4624: PPUSH
4625: LD_EXP 37
4629: PPUSH
4630: CALL_OW 250
4634: PUSH
4635: LD_INT 6
4637: MUL
4638: PUSH
4639: LD_EXP 38
4643: PPUSH
4644: CALL_OW 250
4648: PUSH
4649: LD_VAR 0 4
4653: PUSH
4654: LD_INT 6
4656: MINUS
4657: MUL
4658: PLUS
4659: PUSH
4660: LD_VAR 0 4
4664: DIV
4665: PPUSH
4666: LD_EXP 37
4670: PPUSH
4671: CALL_OW 251
4675: PUSH
4676: LD_INT 6
4678: MUL
4679: PUSH
4680: LD_EXP 38
4684: PPUSH
4685: CALL_OW 251
4689: PUSH
4690: LD_VAR 0 4
4694: PUSH
4695: LD_INT 6
4697: MINUS
4698: MUL
4699: PLUS
4700: PUSH
4701: LD_VAR 0 4
4705: DIV
4706: PPUSH
4707: CALL_OW 111
// AddComHold ( Burlak ) ;
4711: LD_EXP 37
4715: PPUSH
4716: CALL_OW 200
// end ; if gn then
4720: LD_VAR 0 6
4724: IFFALSE 4856
// begin d := GetDistUnits ( Gnyevko , Pokryshkin ) ;
4726: LD_ADDR_VAR 0 4
4730: PUSH
4731: LD_EXP 40
4735: PPUSH
4736: LD_EXP 38
4740: PPUSH
4741: CALL_OW 296
4745: ST_TO_ADDR
// if d > 6 then
4746: LD_VAR 0 4
4750: PUSH
4751: LD_INT 6
4753: GREATER
4754: IFFALSE 4856
// begin ComMoveXY ( Gnyevko , ( GetX ( Gnyevko ) * 6 + GetX ( Pokryshkin ) * ( d - 6 ) ) div d , ( GetY ( Gnyevko ) * 6 + GetY ( Pokryshkin ) * ( d - 6 ) ) div d ) ;
4756: LD_EXP 40
4760: PPUSH
4761: LD_EXP 40
4765: PPUSH
4766: CALL_OW 250
4770: PUSH
4771: LD_INT 6
4773: MUL
4774: PUSH
4775: LD_EXP 38
4779: PPUSH
4780: CALL_OW 250
4784: PUSH
4785: LD_VAR 0 4
4789: PUSH
4790: LD_INT 6
4792: MINUS
4793: MUL
4794: PLUS
4795: PUSH
4796: LD_VAR 0 4
4800: DIV
4801: PPUSH
4802: LD_EXP 40
4806: PPUSH
4807: CALL_OW 251
4811: PUSH
4812: LD_INT 6
4814: MUL
4815: PUSH
4816: LD_EXP 38
4820: PPUSH
4821: CALL_OW 251
4825: PUSH
4826: LD_VAR 0 4
4830: PUSH
4831: LD_INT 6
4833: MINUS
4834: MUL
4835: PLUS
4836: PUSH
4837: LD_VAR 0 4
4841: DIV
4842: PPUSH
4843: CALL_OW 111
// AddComHold ( Gnyevko ) ;
4847: LD_EXP 40
4851: PPUSH
4852: CALL_OW 200
// end ; end ; if gn then
4856: LD_VAR 0 6
4860: IFFALSE 4917
// begin if GetDistUnits ( Gnyevko , Pokryshkin ) < 20 then
4862: LD_EXP 40
4866: PPUSH
4867: LD_EXP 38
4871: PPUSH
4872: CALL_OW 296
4876: PUSH
4877: LD_INT 20
4879: LESS
4880: IFFALSE 4903
// begin CenterOnUnits ( Gnyevko ) ;
4882: LD_EXP 40
4886: PPUSH
4887: CALL_OW 85
// Say ( Gnyevko , D4-Gny-1 ) ;
4891: LD_EXP 40
4895: PPUSH
4896: LD_STRING D4-Gny-1
4898: PPUSH
4899: CALL_OW 88
// end ; SetSide ( Gnyevko , russians ) ;
4903: LD_EXP 40
4907: PPUSH
4908: LD_EXP 2
4912: PPUSH
4913: CALL_OW 235
// end ; CenterOnUnits ( [ Burlak , Pokryshkin ] ) ;
4917: LD_EXP 37
4921: PUSH
4922: LD_EXP 38
4926: PUSH
4927: EMPTY
4928: LIST
4929: LIST
4930: PPUSH
4931: CALL_OW 85
// Say ( Burlak , D4-Bur-3 ) ;
4935: LD_EXP 37
4939: PPUSH
4940: LD_STRING D4-Bur-3
4942: PPUSH
4943: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-4 ) ;
4947: LD_EXP 38
4951: PPUSH
4952: LD_STRING D4-Pok-4
4954: PPUSH
4955: CALL_OW 88
// place_brown ;
4959: CALL 2625 0 0
// wait ( 0 0$3 ) ;
4963: LD_INT 105
4965: PPUSH
4966: CALL_OW 67
// Say ( Burlak , D4-Bur-4 ) ;
4970: LD_EXP 37
4974: PPUSH
4975: LD_STRING D4-Bur-4
4977: PPUSH
4978: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-5 ) ;
4982: LD_EXP 38
4986: PPUSH
4987: LD_STRING D4-Pok-5
4989: PPUSH
4990: CALL_OW 88
// DWait ( 0 0$3 ) ;
4994: LD_INT 105
4996: PPUSH
4997: CALL_OW 68
// SayRadio ( Brown , D4-Sol1-5 ) ;
5001: LD_EXP 44
5005: PPUSH
5006: LD_STRING D4-Sol1-5
5008: PPUSH
5009: CALL_OW 94
// Say ( Pokryshkin , D4-Pok-6 ) ;
5013: LD_EXP 38
5017: PPUSH
5018: LD_STRING D4-Pok-6
5020: PPUSH
5021: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-6a ) ;
5025: LD_EXP 38
5029: PPUSH
5030: LD_STRING D4-Pok-6a
5032: PPUSH
5033: CALL_OW 88
// Say ( Burlak , D4-Bur-6 ) ;
5037: LD_EXP 37
5041: PPUSH
5042: LD_STRING D4-Bur-6
5044: PPUSH
5045: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-7 ) ;
5049: LD_EXP 38
5053: PPUSH
5054: LD_STRING D4-Pok-7
5056: PPUSH
5057: CALL_OW 88
// InGameOff ;
5061: CALL_OW 9
// ChangeMissionObjectives ( M2 ) ;
5065: LD_STRING M2
5067: PPUSH
5068: CALL_OW 337
// Hint ( Follow ) ;
5072: LD_STRING Follow
5074: PPUSH
5075: CALL_OW 339
// pokryshkin_met := true ;
5079: LD_ADDR_EXP 5
5083: PUSH
5084: LD_INT 1
5086: ST_TO_ADDR
// follow_pokryshkin := true ;
5087: LD_ADDR_EXP 8
5091: PUSH
5092: LD_INT 1
5094: ST_TO_ADDR
// preparing_trap := true ;
5095: LD_ADDR_EXP 11
5099: PUSH
5100: LD_INT 1
5102: ST_TO_ADDR
// trappers := [ Pokryshkin ] ^ team ^ [ Belkov ] ;
5103: LD_ADDR_EXP 50
5107: PUSH
5108: LD_EXP 38
5112: PUSH
5113: EMPTY
5114: LIST
5115: PUSH
5116: LD_EXP 43
5120: ADD
5121: PUSH
5122: LD_EXP 39
5126: PUSH
5127: EMPTY
5128: LIST
5129: ADD
5130: ST_TO_ADDR
// if gnyevko_met then
5131: LD_EXP 6
5135: IFFALSE 5156
// trappers := trappers ^ [ Gnyevko ] ;
5137: LD_ADDR_EXP 50
5141: PUSH
5142: LD_EXP 50
5146: PUSH
5147: LD_EXP 40
5151: PUSH
5152: EMPTY
5153: LIST
5154: ADD
5155: ST_TO_ADDR
// Wait ( 0 0$2 ) ;
5156: LD_INT 70
5158: PPUSH
5159: CALL_OW 67
// prepare_trap ;
5163: CALL 10055 0 0
// ComWait ( Brown , 0 0$6 ) ;
5167: LD_EXP 44
5171: PPUSH
5172: LD_INT 210
5174: PPUSH
5175: CALL_OW 142
// AddComMoveXY ( Brown , 66 , 58 ) ;
5179: LD_EXP 44
5183: PPUSH
5184: LD_INT 66
5186: PPUSH
5187: LD_INT 58
5189: PPUSH
5190: CALL_OW 171
// end ;
5194: LD_VAR 0 1
5198: RET
// function d_gnyevko_alone_meets_pokryshkin ; begin
5199: LD_INT 0
5201: PPUSH
// InGameOn ;
5202: CALL_OW 8
// ComRemember ( Pokryshkin ) ;
5206: LD_EXP 38
5210: PPUSH
5211: CALL_OW 143
// CenterNowOnUnits ( Pokryshkin ) ;
5215: LD_EXP 38
5219: PPUSH
5220: CALL_OW 87
// ComHold ( Gnyevko ) ;
5224: LD_EXP 40
5228: PPUSH
5229: CALL_OW 140
// ComHold ( Burlak ) ;
5233: LD_EXP 37
5237: PPUSH
5238: CALL_OW 140
// ComMoveXY ( Pokryshkin , ( GetX ( Pokryshkin ) * 7 + GetX ( Gnyevko ) * 3 ) div 10 , ( GetY ( Pokryshkin ) * 7 + GetY ( Gnyevko ) * 3 ) div 10 ) ;
5242: LD_EXP 38
5246: PPUSH
5247: LD_EXP 38
5251: PPUSH
5252: CALL_OW 250
5256: PUSH
5257: LD_INT 7
5259: MUL
5260: PUSH
5261: LD_EXP 40
5265: PPUSH
5266: CALL_OW 250
5270: PUSH
5271: LD_INT 3
5273: MUL
5274: PLUS
5275: PUSH
5276: LD_INT 10
5278: DIV
5279: PPUSH
5280: LD_EXP 38
5284: PPUSH
5285: CALL_OW 251
5289: PUSH
5290: LD_INT 7
5292: MUL
5293: PUSH
5294: LD_EXP 40
5298: PPUSH
5299: CALL_OW 251
5303: PUSH
5304: LD_INT 3
5306: MUL
5307: PLUS
5308: PUSH
5309: LD_INT 10
5311: DIV
5312: PPUSH
5313: CALL_OW 111
// Say ( Pokryshkin , D4-Pok-1 ) ;
5317: LD_EXP 38
5321: PPUSH
5322: LD_STRING D4-Pok-1
5324: PPUSH
5325: CALL_OW 88
// Say ( Gnyevko , D4-Gny-1 ) ;
5329: LD_EXP 40
5333: PPUSH
5334: LD_STRING D4-Gny-1
5336: PPUSH
5337: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-2 ) ;
5341: LD_EXP 38
5345: PPUSH
5346: LD_STRING D4-Pok-2
5348: PPUSH
5349: CALL_OW 88
// Say ( Gnyevko , D4-Gny-2 ) ;
5353: LD_EXP 40
5357: PPUSH
5358: LD_STRING D4-Gny-2
5360: PPUSH
5361: CALL_OW 88
// Say ( Pokryshkin , D4-Pok-3 ) ;
5365: LD_EXP 38
5369: PPUSH
5370: LD_STRING D4-Pok-3
5372: PPUSH
5373: CALL_OW 88
// ComReturn ( Pokryshkin ) ;
5377: LD_EXP 38
5381: PPUSH
5382: CALL_OW 144
// ComMoveXY ( Gnyevko , GetRememberedX ( Pokryshkin ) + 2 , GetRememberedY ( Pokryshkin ) + 2 ) ;
5386: LD_EXP 40
5390: PPUSH
5391: LD_EXP 38
5395: PPUSH
5396: CALL_OW 252
5400: PUSH
5401: LD_INT 2
5403: PLUS
5404: PPUSH
5405: LD_EXP 38
5409: PPUSH
5410: CALL_OW 253
5414: PUSH
5415: LD_INT 2
5417: PLUS
5418: PPUSH
5419: CALL_OW 111
// wait ( 0 0$1 ) ;
5423: LD_INT 35
5425: PPUSH
5426: CALL_OW 67
// InGameOff ;
5430: CALL_OW 9
// CenterNowOnUnits ( Burlak ) ;
5434: LD_EXP 37
5438: PPUSH
5439: CALL_OW 87
// SetSide ( Gnyevko , russians ) ;
5443: LD_EXP 40
5447: PPUSH
5448: LD_EXP 2
5452: PPUSH
5453: CALL_OW 235
// end ;
5457: LD_VAR 0 1
5461: RET
// every 0 0$0.5 trigger See ( russians , burlak ) marked 1 do
5462: LD_EXP 2
5466: PPUSH
5467: LD_EXP 37
5471: PPUSH
5472: CALL_OW 292
5476: IFFALSE 5485
5478: GO 5480
5480: DISABLE
// begin d_burlak_and_gnyevko_meet_pokryshkin ;
5481: CALL 4110 0 0
// end ;
5485: END
// every 0 0$0.5 + 0 0$0.25 trigger gnyevko_met and See ( russians , Gnyevko ) marked 1 do
5486: LD_EXP 6
5490: PUSH
5491: LD_EXP 2
5495: PPUSH
5496: LD_EXP 40
5500: PPUSH
5501: CALL_OW 292
5505: AND
5506: IFFALSE 5541
5508: GO 5510
5510: DISABLE
// begin if GetDistUnits ( Burlak , Pokryshkin ) < 25 then
5511: LD_EXP 37
5515: PPUSH
5516: LD_EXP 38
5520: PPUSH
5521: CALL_OW 296
5525: PUSH
5526: LD_INT 25
5528: LESS
5529: IFFALSE 5537
// d_burlak_and_gnyevko_meet_pokryshkin else
5531: CALL 4110 0 0
5535: GO 5541
// d_gnyevko_alone_meets_pokryshkin ;
5537: CALL 5199 0 0
// end ;
5541: END
// every 0 0$0.2 trigger getting_up do var un ;
5542: LD_LOC 1
5546: IFFALSE 5595
5548: GO 5550
5550: DISABLE
5551: LD_INT 0
5553: PPUSH
// begin for un in trappers do
5554: LD_ADDR_VAR 0 1
5558: PUSH
5559: LD_EXP 50
5563: PUSH
5564: FOR_IN
5565: IFFALSE 5593
// begin ComWalk ( un ) ;
5567: LD_VAR 0 1
5571: PPUSH
5572: CALL_OW 138
// wait ( Rand ( 1 , 6 ) ) ;
5576: LD_INT 1
5578: PPUSH
5579: LD_INT 6
5581: PPUSH
5582: CALL_OW 12
5586: PPUSH
5587: CALL_OW 67
// end ;
5591: GO 5564
5593: POP
5594: POP
// end ;
5595: PPOPN 1
5597: END
// function d_trap_sprung ; begin
5598: LD_INT 0
5600: PPUSH
// follow_pokryshkin := false ;
5601: LD_ADDR_EXP 8
5605: PUSH
5606: LD_INT 0
5608: ST_TO_ADDR
// ComStop ( Brown ) ;
5609: LD_EXP 44
5613: PPUSH
5614: CALL_OW 141
// Say ( Brown , D5-Sol1-1 ) ;
5618: LD_EXP 44
5622: PPUSH
5623: LD_STRING D5-Sol1-1
5625: PPUSH
5626: CALL_OW 88
// Say ( Pokryshkin , D5-Pok-1 ) ;
5630: LD_EXP 38
5634: PPUSH
5635: LD_STRING D5-Pok-1
5637: PPUSH
5638: CALL_OW 88
// SetAttitude ( americans2 , russians , att_enemy , true ) ;
5642: LD_EXP 4
5646: PPUSH
5647: LD_EXP 2
5651: PPUSH
5652: LD_INT 2
5654: PPUSH
5655: LD_INT 1
5657: PPUSH
5658: CALL_OW 80
// SetAttitude ( americans2 , you , att_enemy , true ) ;
5662: LD_EXP 4
5666: PPUSH
5667: LD_EXP 1
5671: PPUSH
5672: LD_INT 2
5674: PPUSH
5675: LD_INT 1
5677: PPUSH
5678: CALL_OW 80
// getting_up := true ;
5682: LD_ADDR_LOC 1
5686: PUSH
5687: LD_INT 1
5689: ST_TO_ADDR
// ForceSay ( Brown , D5-Sol1-2 ) ;
5690: LD_EXP 44
5694: PPUSH
5695: LD_STRING D5-Sol1-2
5697: PPUSH
5698: CALL_OW 91
// while IsLive ( Brown ) do
5702: LD_EXP 44
5706: PPUSH
5707: CALL_OW 300
5711: IFFALSE 5722
// wait ( 0 0$1 ) ;
5713: LD_INT 35
5715: PPUSH
5716: CALL_OW 67
5720: GO 5702
// preparing_trap := false ;
5722: LD_ADDR_EXP 11
5726: PUSH
5727: LD_INT 0
5729: ST_TO_ADDR
// end ;
5730: LD_VAR 0 1
5734: RET
// function d_after_trap ( x , y ) ; var un ; begin
5735: LD_INT 0
5737: PPUSH
5738: PPUSH
// InGameOn ;
5739: CALL_OW 8
// for un in trappers ^ [ Burlak ] do
5743: LD_ADDR_VAR 0 4
5747: PUSH
5748: LD_EXP 50
5752: PUSH
5753: LD_EXP 37
5757: PUSH
5758: EMPTY
5759: LIST
5760: ADD
5761: PUSH
5762: FOR_IN
5763: IFFALSE 5821
// begin ComWalk ( un ) ;
5765: LD_VAR 0 4
5769: PPUSH
5770: CALL_OW 138
// ComMoveXY ( un , x + rand ( - 3 , 3 ) , y + rand ( - 3 , 3 ) ) ;
5774: LD_VAR 0 4
5778: PPUSH
5779: LD_VAR 0 1
5783: PUSH
5784: LD_INT 3
5786: NEG
5787: PPUSH
5788: LD_INT 3
5790: PPUSH
5791: CALL_OW 12
5795: PLUS
5796: PPUSH
5797: LD_VAR 0 2
5801: PUSH
5802: LD_INT 3
5804: NEG
5805: PPUSH
5806: LD_INT 3
5808: PPUSH
5809: CALL_OW 12
5813: PLUS
5814: PPUSH
5815: CALL_OW 111
// end ;
5819: GO 5762
5821: POP
5822: POP
// wait ( 0 0$1 ) ;
5823: LD_INT 35
5825: PPUSH
5826: CALL_OW 67
// Say ( Burlak , D5-Bur-2 ) ;
5830: LD_EXP 37
5834: PPUSH
5835: LD_STRING D5-Bur-2
5837: PPUSH
5838: CALL_OW 88
// Say ( Pokryshkin , D5-Pok-2 ) ;
5842: LD_EXP 38
5846: PPUSH
5847: LD_STRING D5-Pok-2
5849: PPUSH
5850: CALL_OW 88
// Say ( Belkov , D5-Bel-2 ) ;
5854: LD_EXP 39
5858: PPUSH
5859: LD_STRING D5-Bel-2
5861: PPUSH
5862: CALL_OW 88
// Say ( Pokryshkin , D5-Pok-3 ) ;
5866: LD_EXP 38
5870: PPUSH
5871: LD_STRING D5-Pok-3
5873: PPUSH
5874: CALL_OW 88
// if gnyevko_met then
5878: LD_EXP 6
5882: IFFALSE 5896
// Say ( Gnyevko , D5-Gny-3 ) ;
5884: LD_EXP 40
5888: PPUSH
5889: LD_STRING D5-Gny-3
5891: PPUSH
5892: CALL_OW 88
// Say ( Burlak , D5-Bur-3 ) ;
5896: LD_EXP 37
5900: PPUSH
5901: LD_STRING D5-Bur-3
5903: PPUSH
5904: CALL_OW 88
// InGameOff ;
5908: CALL_OW 9
// follow_pokryshkin := true ;
5912: LD_ADDR_EXP 8
5916: PUSH
5917: LD_INT 1
5919: ST_TO_ADDR
// end ;
5920: LD_VAR 0 3
5924: RET
// function d_message_about_gladstone ; var ok , un ; begin
5925: LD_INT 0
5927: PPUSH
5928: PPUSH
5929: PPUSH
// follow_pokryshkin := false ;
5930: LD_ADDR_EXP 8
5934: PUSH
5935: LD_INT 0
5937: ST_TO_ADDR
// InGameOn ;
5938: CALL_OW 8
// CenterOnUnits ( Pokryshkin ) ;
5942: LD_EXP 38
5946: PPUSH
5947: CALL_OW 85
// ComStop ( Burlak ) ;
5951: LD_EXP 37
5955: PPUSH
5956: CALL_OW 141
// Say ( Pokryshkin , D6-Pok-1 ) ;
5960: LD_EXP 38
5964: PPUSH
5965: LD_STRING D6-Pok-1
5967: PPUSH
5968: CALL_OW 88
// ComMoveXY ( Burlak , GetX ( Pokryshkin ) , GetY ( Pokryshkin ) ) ;
5972: LD_EXP 37
5976: PPUSH
5977: LD_EXP 38
5981: PPUSH
5982: CALL_OW 250
5986: PPUSH
5987: LD_EXP 38
5991: PPUSH
5992: CALL_OW 251
5996: PPUSH
5997: CALL_OW 111
// CenterOnUnits ( Pokryshkin ) ;
6001: LD_EXP 38
6005: PPUSH
6006: CALL_OW 85
// Say ( Burlak , D6-Bur-1 ) ;
6010: LD_EXP 37
6014: PPUSH
6015: LD_STRING D6-Bur-1
6017: PPUSH
6018: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6022: LD_EXP 38
6026: PPUSH
6027: CALL_OW 85
// ComMoveXY ( trappers ^ [ Burlak ] , 94 , 68 ) ;
6031: LD_EXP 50
6035: PUSH
6036: LD_EXP 37
6040: PUSH
6041: EMPTY
6042: LIST
6043: ADD
6044: PPUSH
6045: LD_INT 94
6047: PPUSH
6048: LD_INT 68
6050: PPUSH
6051: CALL_OW 111
// Say ( Pokryshkin , D6-Pok-2 ) ;
6055: LD_EXP 38
6059: PPUSH
6060: LD_STRING D6-Pok-2
6062: PPUSH
6063: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6067: LD_EXP 38
6071: PPUSH
6072: CALL_OW 85
// Say ( Belkov , D6-Bel-2 ) ;
6076: LD_EXP 39
6080: PPUSH
6081: LD_STRING D6-Bel-2
6083: PPUSH
6084: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6088: LD_EXP 38
6092: PPUSH
6093: CALL_OW 85
// Say ( Burlak , D6-Bur-2 ) ;
6097: LD_EXP 37
6101: PPUSH
6102: LD_STRING D6-Bur-2
6104: PPUSH
6105: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6109: LD_EXP 38
6113: PPUSH
6114: CALL_OW 85
// Say ( Pokryshkin , D6-Pok-3 ) ;
6118: LD_EXP 38
6122: PPUSH
6123: LD_STRING D6-Pok-3
6125: PPUSH
6126: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6130: LD_EXP 38
6134: PPUSH
6135: CALL_OW 85
// ComStop ( trappers ^ [ Burlak ] ) ;
6139: LD_EXP 50
6143: PUSH
6144: LD_EXP 37
6148: PUSH
6149: EMPTY
6150: LIST
6151: ADD
6152: PPUSH
6153: CALL_OW 141
// SayRadio ( Kurin , D6-Kur-3 ) ;
6157: LD_EXP 42
6161: PPUSH
6162: LD_STRING D6-Kur-3
6164: PPUSH
6165: CALL_OW 94
// CenterOnUnits ( Pokryshkin ) ;
6169: LD_EXP 38
6173: PPUSH
6174: CALL_OW 85
// Say ( Pokryshkin , D6-Pok-4 ) ;
6178: LD_EXP 38
6182: PPUSH
6183: LD_STRING D6-Pok-4
6185: PPUSH
6186: CALL_OW 88
// CenterOnUnits ( Pokryshkin ) ;
6190: LD_EXP 38
6194: PPUSH
6195: CALL_OW 85
// SetAttitude ( americans , russians , att_enemy , true ) ;
6199: LD_EXP 3
6203: PPUSH
6204: LD_EXP 2
6208: PPUSH
6209: LD_INT 2
6211: PPUSH
6212: LD_INT 1
6214: PPUSH
6215: CALL_OW 80
// SetAttitude ( americans , you , att_enemy , true ) ;
6219: LD_EXP 3
6223: PPUSH
6224: LD_EXP 1
6228: PPUSH
6229: LD_INT 2
6231: PPUSH
6232: LD_INT 1
6234: PPUSH
6235: CALL_OW 80
// InGameOff ;
6239: CALL_OW 9
// async ;
6243: ASYNC
// Say ( Belkov , D6-Bel-4 ) ;
6244: LD_EXP 39
6248: PPUSH
6249: LD_STRING D6-Bel-4
6251: PPUSH
6252: CALL_OW 88
// sync ;
6256: SYNC
// wait ( 0 0$1 ) ;
6257: LD_INT 35
6259: PPUSH
6260: CALL_OW 67
// ComAttackUnit ( Pokryshkin , am_bunker ) ;
6264: LD_EXP 38
6268: PPUSH
6269: LD_EXP 47
6273: PPUSH
6274: CALL_OW 115
// repeat wait ( 0 0$1 ) ;
6278: LD_INT 35
6280: PPUSH
6281: CALL_OW 67
// ok := true ;
6285: LD_ADDR_VAR 0 2
6289: PUSH
6290: LD_INT 1
6292: ST_TO_ADDR
// for un in trappers do
6293: LD_ADDR_VAR 0 3
6297: PUSH
6298: LD_EXP 50
6302: PUSH
6303: FOR_IN
6304: IFFALSE 6360
// if GetY ( un ) + GetX ( un ) < GetY ( Pokryshkin ) + GetX ( Pokryshkin ) then
6306: LD_VAR 0 3
6310: PPUSH
6311: CALL_OW 251
6315: PUSH
6316: LD_VAR 0 3
6320: PPUSH
6321: CALL_OW 250
6325: PLUS
6326: PUSH
6327: LD_EXP 38
6331: PPUSH
6332: CALL_OW 251
6336: PUSH
6337: LD_EXP 38
6341: PPUSH
6342: CALL_OW 250
6346: PLUS
6347: LESS
6348: IFFALSE 6358
// ok := false ;
6350: LD_ADDR_VAR 0 2
6354: PUSH
6355: LD_INT 0
6357: ST_TO_ADDR
6358: GO 6303
6360: POP
6361: POP
// until ok ;
6362: LD_VAR 0 2
6366: IFFALSE 6278
// wait ( 0 0$1 ) ;
6368: LD_INT 35
6370: PPUSH
6371: CALL_OW 67
// ComAttackUnit ( trappers diff Pokryshkin , am_bunker ) ;
6375: LD_EXP 50
6379: PUSH
6380: LD_EXP 38
6384: DIFF
6385: PPUSH
6386: LD_EXP 47
6390: PPUSH
6391: CALL_OW 115
// attacking_bunker := true ;
6395: LD_ADDR_EXP 13
6399: PUSH
6400: LD_INT 1
6402: ST_TO_ADDR
// end ;
6403: LD_VAR 0 1
6407: RET
// every 0 0$0.6 trigger preparing_trap and UnitFilter ( trappers , [ f_see , americans2 ] ) do var x , y ;
6408: LD_EXP 11
6412: PUSH
6413: LD_EXP 50
6417: PPUSH
6418: LD_INT 101
6420: PUSH
6421: LD_EXP 4
6425: PUSH
6426: EMPTY
6427: LIST
6428: LIST
6429: PPUSH
6430: CALL_OW 72
6434: AND
6435: IFFALSE 6514
6437: GO 6439
6439: DISABLE
6440: LD_INT 0
6442: PPUSH
6443: PPUSH
// begin x := GetX ( Brown ) + 3 ;
6444: LD_ADDR_VAR 0 1
6448: PUSH
6449: LD_EXP 44
6453: PPUSH
6454: CALL_OW 250
6458: PUSH
6459: LD_INT 3
6461: PLUS
6462: ST_TO_ADDR
// y := GetY ( Brown ) ;
6463: LD_ADDR_VAR 0 2
6467: PUSH
6468: LD_EXP 44
6472: PPUSH
6473: CALL_OW 251
6477: ST_TO_ADDR
// d_trap_sprung ;
6478: CALL 5598 0 0
// wait ( 0 0$1 ) ;
6482: LD_INT 35
6484: PPUSH
6485: CALL_OW 67
// d_after_trap ( x , y ) ;
6489: LD_VAR 0 1
6493: PPUSH
6494: LD_VAR 0 2
6498: PPUSH
6499: CALL 5735 0 2
// wait ( 0 0$5 ) ;
6503: LD_INT 175
6505: PPUSH
6506: CALL_OW 67
// d_message_about_gladstone ;
6510: CALL 5925 0 0
// end ;
6514: PPOPN 2
6516: END
// every 0 0$0.4 trigger attacking_bunker and See ( you , am_bunker ) do
6517: LD_EXP 13
6521: PUSH
6522: LD_EXP 1
6526: PPUSH
6527: LD_EXP 47
6531: PPUSH
6532: CALL_OW 292
6536: AND
6537: IFFALSE 6581
6539: GO 6541
6541: DISABLE
// begin music_class = music_combat ;
6542: LD_ADDR_OWVAR 72
6546: PUSH
6547: LD_INT 1
6549: ST_TO_ADDR
// wait ( 0 0$1 ) ;
6550: LD_INT 35
6552: PPUSH
6553: CALL_OW 67
// Say ( Pokryshkin , D7-Pok-1 ) ;
6557: LD_EXP 38
6561: PPUSH
6562: LD_STRING D7-Pok-1
6564: PPUSH
6565: CALL_OW 88
// Say ( am1 , D7-FSol1-1 ) ;
6569: LD_EXP 46
6573: PPUSH
6574: LD_STRING D7-FSol1-1
6576: PPUSH
6577: CALL_OW 88
// end ;
6581: END
// every 0 0$0.4 trigger attacking_bunker and See ( you , am_bunker ) do
6582: LD_EXP 13
6586: PUSH
6587: LD_EXP 1
6591: PPUSH
6592: LD_EXP 47
6596: PPUSH
6597: CALL_OW 292
6601: AND
6602: IFFALSE 6656
6604: GO 6606
6606: DISABLE
// begin while IsOk ( Pokryshkin ) do
6607: LD_EXP 38
6611: PPUSH
6612: CALL_OW 302
6616: IFFALSE 6641
// begin ComAttackUnit ( am_bunker , Pokryshkin ) ;
6618: LD_EXP 47
6622: PPUSH
6623: LD_EXP 38
6627: PPUSH
6628: CALL_OW 115
// wait ( 0 0$1 ) ;
6632: LD_INT 35
6634: PPUSH
6635: CALL_OW 67
// end ;
6639: GO 6607
// wait ( 0 0$3 ) ;
6641: LD_INT 105
6643: PPUSH
6644: CALL_OW 67
// music_class = music_auto ;
6648: LD_ADDR_OWVAR 72
6652: PUSH
6653: LD_INT 0
6655: ST_TO_ADDR
// end ;
6656: END
// every 0 0$0.3 + 0 0$0.15 trigger attacking_bunker do var un ;
6657: LD_EXP 13
6661: IFFALSE 6731
6663: GO 6665
6665: DISABLE
6666: LD_INT 0
6668: PPUSH
// begin for un in trappers diff [ Burlak , pokryshkin ] do
6669: LD_ADDR_VAR 0 1
6673: PUSH
6674: LD_EXP 50
6678: PUSH
6679: LD_EXP 37
6683: PUSH
6684: LD_EXP 38
6688: PUSH
6689: EMPTY
6690: LIST
6691: LIST
6692: DIFF
6693: PUSH
6694: FOR_IN
6695: IFFALSE 6728
// begin if GetLives ( un ) < 500 then
6697: LD_VAR 0 1
6701: PPUSH
6702: CALL_OW 256
6706: PUSH
6707: LD_INT 500
6709: LESS
6710: IFFALSE 6726
// DoNotAttack ( americans , un ) ;
6712: LD_EXP 3
6716: PPUSH
6717: LD_VAR 0 1
6721: PPUSH
6722: CALL_OW 471
// end ;
6726: GO 6694
6728: POP
6729: POP
// enable ;
6730: ENABLE
// end ;
6731: PPOPN 1
6733: END
// every 0 0$0.2 + 0 0$0.1 trigger attacking_bunker and not IsOk ( Pokryshkin ) do var posible ;
6734: LD_EXP 13
6738: PUSH
6739: LD_EXP 38
6743: PPUSH
6744: CALL_OW 302
6748: NOT
6749: AND
6750: IFFALSE 6902
6752: GO 6754
6754: DISABLE
6755: LD_INT 0
6757: PPUSH
// begin ComWait ( trappers , 0 0$3 ) ;
6758: LD_EXP 50
6762: PPUSH
6763: LD_INT 105
6765: PPUSH
6766: CALL_OW 142
// AddComMoveXY ( trappers , 76 , 53 ) ;
6770: LD_EXP 50
6774: PPUSH
6775: LD_INT 76
6777: PPUSH
6778: LD_INT 53
6780: PPUSH
6781: CALL_OW 171
// retreating := true ;
6785: LD_ADDR_EXP 14
6789: PUSH
6790: LD_INT 1
6792: ST_TO_ADDR
// Say ( Belkov , D7a-Bel-1 ) ;
6793: LD_EXP 39
6797: PPUSH
6798: LD_STRING D7a-Bel-1
6800: PPUSH
6801: CALL_OW 88
// posible := UnitFilter ( team ^ [ Gnyevko , Belkov ] , [ [ f_ok ] , [ f_sex , sex_male ] , [ f_side , russians ] ] ) ;
6805: LD_ADDR_VAR 0 1
6809: PUSH
6810: LD_EXP 43
6814: PUSH
6815: LD_EXP 40
6819: PUSH
6820: LD_EXP 39
6824: PUSH
6825: EMPTY
6826: LIST
6827: LIST
6828: ADD
6829: PPUSH
6830: LD_INT 50
6832: PUSH
6833: EMPTY
6834: LIST
6835: PUSH
6836: LD_INT 26
6838: PUSH
6839: LD_INT 1
6841: PUSH
6842: EMPTY
6843: LIST
6844: LIST
6845: PUSH
6846: LD_INT 22
6848: PUSH
6849: LD_EXP 2
6853: PUSH
6854: EMPTY
6855: LIST
6856: LIST
6857: PUSH
6858: EMPTY
6859: LIST
6860: LIST
6861: LIST
6862: PPUSH
6863: CALL_OW 72
6867: ST_TO_ADDR
// if posible then
6868: LD_VAR 0 1
6872: IFFALSE 6890
// say ( posible [ 1 ] , D7a-RSol1-1 ) ;
6874: LD_VAR 0 1
6878: PUSH
6879: LD_INT 1
6881: ARRAY
6882: PPUSH
6883: LD_STRING D7a-RSol1-1
6885: PPUSH
6886: CALL_OW 88
// Say ( am1 , D7a-FSol1-1 ) ;
6890: LD_EXP 46
6894: PPUSH
6895: LD_STRING D7a-FSol1-1
6897: PPUSH
6898: CALL_OW 88
// end ;
6902: PPOPN 1
6904: END
// function all_near ( x , y , r ) ; var un ; begin
6905: LD_INT 0
6907: PPUSH
6908: PPUSH
// result := true ;
6909: LD_ADDR_VAR 0 4
6913: PUSH
6914: LD_INT 1
6916: ST_TO_ADDR
// for un in trappers do
6917: LD_ADDR_VAR 0 5
6921: PUSH
6922: LD_EXP 50
6926: PUSH
6927: FOR_IN
6928: IFFALSE 6978
// if IsOk ( un ) then
6930: LD_VAR 0 5
6934: PPUSH
6935: CALL_OW 302
6939: IFFALSE 6976
// if GetDistUnitXY ( un , x , y ) > r then
6941: LD_VAR 0 5
6945: PPUSH
6946: LD_VAR 0 1
6950: PPUSH
6951: LD_VAR 0 2
6955: PPUSH
6956: CALL_OW 297
6960: PUSH
6961: LD_VAR 0 3
6965: GREATER
6966: IFFALSE 6976
// result := false ;
6968: LD_ADDR_VAR 0 4
6972: PUSH
6973: LD_INT 0
6975: ST_TO_ADDR
6976: GO 6927
6978: POP
6979: POP
// end ;
6980: LD_VAR 0 4
6984: RET
// every 0 0$2 + 0 0$0.3 trigger retreating and all_near ( 76 , 53 , 5 ) do var posible , un ;
6985: LD_EXP 14
6989: PUSH
6990: LD_INT 76
6992: PPUSH
6993: LD_INT 53
6995: PPUSH
6996: LD_INT 5
6998: PPUSH
6999: CALL 6905 0 3
7003: AND
7004: IFFALSE 7514
7006: GO 7008
7008: DISABLE
7009: LD_INT 0
7011: PPUSH
7012: PPUSH
// begin if betrayed then
7013: LD_EXP 16
7017: IFFALSE 7021
// exit ;
7019: GO 7514
// music_class = music_auto ;
7021: LD_ADDR_OWVAR 72
7025: PUSH
7026: LD_INT 0
7028: ST_TO_ADDR
// attacking_bunker := false ;
7029: LD_ADDR_EXP 13
7033: PUSH
7034: LD_INT 0
7036: ST_TO_ADDR
// for un in trappers do
7037: LD_ADDR_VAR 0 2
7041: PUSH
7042: LD_EXP 50
7046: PUSH
7047: FOR_IN
7048: IFFALSE 7066
// NormalAttack ( americans , un ) ;
7050: LD_EXP 3
7054: PPUSH
7055: LD_VAR 0 2
7059: PPUSH
7060: CALL_OW 472
7064: GO 7047
7066: POP
7067: POP
// Say ( Belkov , D7b-Bel-1 ) ;
7068: LD_EXP 39
7072: PPUSH
7073: LD_STRING D7b-Bel-1
7075: PPUSH
7076: CALL_OW 88
// Say ( team [ 1 ] , D7b-FSol1-1 ) ;
7080: LD_EXP 43
7084: PUSH
7085: LD_INT 1
7087: ARRAY
7088: PPUSH
7089: LD_STRING D7b-FSol1-1
7091: PPUSH
7092: CALL_OW 88
// Say ( Belkov , D7b-Bel-2 ) ;
7096: LD_EXP 39
7100: PPUSH
7101: LD_STRING D7b-Bel-2
7103: PPUSH
7104: CALL_OW 88
// posible := UnitFilter ( team ^ [ Gnyevko ] , [ [ f_ok ] , [ f_sex , sex_male ] , [ f_side , russians ] ] ) ;
7108: LD_ADDR_VAR 0 1
7112: PUSH
7113: LD_EXP 43
7117: PUSH
7118: LD_EXP 40
7122: PUSH
7123: EMPTY
7124: LIST
7125: ADD
7126: PPUSH
7127: LD_INT 50
7129: PUSH
7130: EMPTY
7131: LIST
7132: PUSH
7133: LD_INT 26
7135: PUSH
7136: LD_INT 1
7138: PUSH
7139: EMPTY
7140: LIST
7141: LIST
7142: PUSH
7143: LD_INT 22
7145: PUSH
7146: LD_EXP 2
7150: PUSH
7151: EMPTY
7152: LIST
7153: LIST
7154: PUSH
7155: EMPTY
7156: LIST
7157: LIST
7158: LIST
7159: PPUSH
7160: CALL_OW 72
7164: ST_TO_ADDR
// if posible then
7165: LD_VAR 0 1
7169: IFFALSE 7187
// say ( posible [ 1 ] , D7b-RSol1-2 ) ;
7171: LD_VAR 0 1
7175: PUSH
7176: LD_INT 1
7178: ARRAY
7179: PPUSH
7180: LD_STRING D7b-RSol1-2
7182: PPUSH
7183: CALL_OW 88
// if GetDistUnitXY ( Burlak , 76 , 53 ) > 15 then
7187: LD_EXP 37
7191: PPUSH
7192: LD_INT 76
7194: PPUSH
7195: LD_INT 53
7197: PPUSH
7198: CALL_OW 297
7202: PUSH
7203: LD_INT 15
7205: GREATER
7206: IFFALSE 7259
// begin Say ( Belkov , D7b-Bel-3 ) ;
7208: LD_EXP 39
7212: PPUSH
7213: LD_STRING D7b-Bel-3
7215: PPUSH
7216: CALL_OW 88
// repeat wait ( 0 0$2 ) ;
7220: LD_INT 70
7222: PPUSH
7223: CALL_OW 67
// until GetDistUnits ( Burlak , Belkov ) < 10 ;
7227: LD_EXP 37
7231: PPUSH
7232: LD_EXP 39
7236: PPUSH
7237: CALL_OW 296
7241: PUSH
7242: LD_INT 10
7244: LESS
7245: IFFALSE 7220
// Say ( Belkov , D7b-Bel-3a ) ;
7247: LD_EXP 39
7251: PPUSH
7252: LD_STRING D7b-Bel-3a
7254: PPUSH
7255: CALL_OW 88
// end ; InGameOn ;
7259: CALL_OW 8
// ComMoveXY ( Burlak , 71 , 48 ) ;
7263: LD_EXP 37
7267: PPUSH
7268: LD_INT 71
7270: PPUSH
7271: LD_INT 48
7273: PPUSH
7274: CALL_OW 111
// Say ( Burlak , D7b-Bur-3 ) ;
7278: LD_EXP 37
7282: PPUSH
7283: LD_STRING D7b-Bur-3
7285: PPUSH
7286: CALL_OW 88
// CenterOnUnits ( Burlak ) ;
7290: LD_EXP 37
7294: PPUSH
7295: CALL_OW 85
// Say ( Belkov , D7b-Bel-4 ) ;
7299: LD_EXP 39
7303: PPUSH
7304: LD_STRING D7b-Bel-4
7306: PPUSH
7307: CALL_OW 88
// Say ( Burlak , D7b-Bur-4 ) ;
7311: LD_EXP 37
7315: PPUSH
7316: LD_STRING D7b-Bur-4
7318: PPUSH
7319: CALL_OW 88
// Say ( Belkov , D7b-Bel-5 ) ;
7323: LD_EXP 39
7327: PPUSH
7328: LD_STRING D7b-Bel-5
7330: PPUSH
7331: CALL_OW 88
// if team then
7335: LD_EXP 43
7339: IFFALSE 7388
// if GetSex ( team [ 1 ] ) = sex_female then
7341: LD_EXP 43
7345: PUSH
7346: LD_INT 1
7348: ARRAY
7349: PPUSH
7350: CALL_OW 258
7354: PUSH
7355: LD_INT 2
7357: EQUAL
7358: IFFALSE 7388
// begin Say ( team [ 1 ] , D7b-FSol1-5 ) ;
7360: LD_EXP 43
7364: PUSH
7365: LD_INT 1
7367: ARRAY
7368: PPUSH
7369: LD_STRING D7b-FSol1-5
7371: PPUSH
7372: CALL_OW 88
// Say ( Belkov , D7b-Bel-6 ) ;
7376: LD_EXP 39
7380: PPUSH
7381: LD_STRING D7b-Bel-6
7383: PPUSH
7384: CALL_OW 88
// end ; Say ( Burlak , D7b-Bur-6 ) ;
7388: LD_EXP 37
7392: PPUSH
7393: LD_STRING D7b-Bur-6
7395: PPUSH
7396: CALL_OW 88
// if posible then
7400: LD_VAR 0 1
7404: IFFALSE 7422
// say ( posible [ 1 ] , D7b-RSol1-6 ) ;
7406: LD_VAR 0 1
7410: PUSH
7411: LD_INT 1
7413: ARRAY
7414: PPUSH
7415: LD_STRING D7b-RSol1-6
7417: PPUSH
7418: CALL_OW 88
// InGameOff ;
7422: CALL_OW 9
// SetSide ( trappers , you ) ;
7426: LD_EXP 50
7430: PPUSH
7431: LD_EXP 1
7435: PPUSH
7436: CALL_OW 235
// your_units := trappers ^ [ Burlak ] diff 0 ;
7440: LD_ADDR_EXP 51
7444: PUSH
7445: LD_EXP 50
7449: PUSH
7450: LD_EXP 37
7454: PUSH
7455: EMPTY
7456: LIST
7457: ADD
7458: PUSH
7459: LD_INT 0
7461: DIFF
7462: ST_TO_ADDR
// ChangeMissionObjectives ( M3 ) ;
7463: LD_STRING M3
7465: PPUSH
7466: CALL_OW 337
// it_is_your := true ;
7470: LD_ADDR_EXP 17
7474: PUSH
7475: LD_INT 1
7477: ST_TO_ADDR
// if gnyevko_met then
7478: LD_EXP 6
7482: IFFALSE 7493
// Hint ( selection2a ) else
7484: LD_STRING selection2a
7486: PPUSH
7487: CALL_OW 339
7491: GO 7500
// Hint ( selection2b ) ;
7493: LD_STRING selection2b
7495: PPUSH
7496: CALL_OW 339
// wait ( 0 0$5 ) ;
7500: LD_INT 175
7502: PPUSH
7503: CALL_OW 67
// Hint ( visibility ) ;
7507: LD_STRING visibility
7509: PPUSH
7510: CALL_OW 339
// end ;
7514: PPOPN 2
7516: END
// every 0 0$1 trigger it_is_your and not IsOk ( am_depot ) and not IsOk ( am_bunker ) and not IsOk ( Gladstone ) and not IsOk ( am1 ) do var un ;
7517: LD_EXP 17
7521: PUSH
7522: LD_INT 1
7524: PPUSH
7525: CALL_OW 302
7529: NOT
7530: AND
7531: PUSH
7532: LD_EXP 47
7536: PPUSH
7537: CALL_OW 302
7541: NOT
7542: AND
7543: PUSH
7544: LD_EXP 45
7548: PPUSH
7549: CALL_OW 302
7553: NOT
7554: AND
7555: PUSH
7556: LD_EXP 46
7560: PPUSH
7561: CALL_OW 302
7565: NOT
7566: AND
7567: IFFALSE 7769
7569: GO 7571
7571: DISABLE
7572: LD_INT 0
7574: PPUSH
// begin DialogueOn ;
7575: CALL_OW 6
// if IsOk ( Belkov ) then
7579: LD_EXP 39
7583: PPUSH
7584: CALL_OW 302
7588: IFFALSE 7628
// begin Say ( Belkov , D10-Bel-1 ) ;
7590: LD_EXP 39
7594: PPUSH
7595: LD_STRING D10-Bel-1
7597: PPUSH
7598: CALL_OW 88
// Say ( Burlak , D10-Bur-1 ) ;
7602: LD_EXP 37
7606: PPUSH
7607: LD_STRING D10-Bur-1
7609: PPUSH
7610: CALL_OW 88
// Say ( Belkov , D10-Bel-1a ) ;
7614: LD_EXP 39
7618: PPUSH
7619: LD_STRING D10-Bel-1a
7621: PPUSH
7622: CALL_OW 88
// end else
7626: GO 7697
// begin Say ( Burlak , D10-Bur-1 ) ;
7628: LD_EXP 37
7632: PPUSH
7633: LD_STRING D10-Bur-1
7635: PPUSH
7636: CALL_OW 88
// un := UnitFilter ( trappers , [ [ f_sex , sex_male ] , [ f_ok ] ] ) ;
7640: LD_ADDR_VAR 0 1
7644: PUSH
7645: LD_EXP 50
7649: PPUSH
7650: LD_INT 26
7652: PUSH
7653: LD_INT 1
7655: PUSH
7656: EMPTY
7657: LIST
7658: LIST
7659: PUSH
7660: LD_INT 50
7662: PUSH
7663: EMPTY
7664: LIST
7665: PUSH
7666: EMPTY
7667: LIST
7668: LIST
7669: PPUSH
7670: CALL_OW 72
7674: ST_TO_ADDR
// if un then
7675: LD_VAR 0 1
7679: IFFALSE 7697
// Say ( un [ 1 ] , D10-RSol1-1 ) ;
7681: LD_VAR 0 1
7685: PUSH
7686: LD_INT 1
7688: ARRAY
7689: PPUSH
7690: LD_STRING D10-RSol1-1
7692: PPUSH
7693: CALL_OW 88
// end ; Say ( Burlak , D10-Bur-2 ) ;
7697: LD_EXP 37
7701: PPUSH
7702: LD_STRING D10-Bur-2
7704: PPUSH
7705: CALL_OW 88
// if gladstone_escaped or soldier_escaped then
7709: LD_EXP 9
7713: PUSH
7714: LD_EXP 10
7718: OR
7719: IFFALSE 7730
// ChangeMissionObjectives ( M4b ) else
7721: LD_STRING M4b
7723: PPUSH
7724: CALL_OW 337
7728: GO 7737
// ChangeMissionObjectives ( M4a ) ;
7730: LD_STRING M4a
7732: PPUSH
7733: CALL_OW 337
// SetAreaMapShow ( ExitArea , 1 ) ;
7737: LD_INT 1
7739: PPUSH
7740: LD_INT 1
7742: PPUSH
7743: CALL_OW 424
// enable ( 666 ) ;
7747: LD_INT 666
7749: ENABLE_MARKED
// Hint ( ExitArea ) ;
7750: LD_STRING ExitArea
7752: PPUSH
7753: CALL_OW 339
// DialogueOff ;
7757: CALL_OW 7
// returning := true ;
7761: LD_ADDR_EXP 15
7765: PUSH
7766: LD_INT 1
7768: ST_TO_ADDR
// end ;
7769: PPOPN 1
7771: END
// every 0 0$5 trigger returning do
7772: LD_EXP 15
7776: IFFALSE 7804
7778: GO 7780
7780: DISABLE
// begin wait ( Rand ( 0 0$30 , 1 1$00 ) ) ;
7781: LD_INT 1050
7783: PPUSH
7784: LD_INT 2100
7786: PPUSH
7787: CALL_OW 12
7791: PPUSH
7792: CALL_OW 67
// kirilenkova_appears := true ;
7796: LD_ADDR_EXP 19
7800: PUSH
7801: LD_INT 1
7803: ST_TO_ADDR
// end ;
7804: END
// every 0 0$3.1 trigger returning and not kirilenkova_appears do var un ;
7805: LD_EXP 15
7809: PUSH
7810: LD_EXP 19
7814: NOT
7815: AND
7816: IFFALSE 7891
7818: GO 7820
7820: DISABLE
7821: LD_INT 0
7823: PPUSH
// begin for un in FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) do
7824: LD_ADDR_VAR 0 1
7828: PUSH
7829: LD_INT 50
7831: PUSH
7832: EMPTY
7833: LIST
7834: PUSH
7835: LD_INT 22
7837: PUSH
7838: LD_EXP 1
7842: PUSH
7843: EMPTY
7844: LIST
7845: LIST
7846: PUSH
7847: EMPTY
7848: LIST
7849: LIST
7850: PPUSH
7851: CALL_OW 69
7855: PUSH
7856: FOR_IN
7857: IFFALSE 7881
// if GetY ( un ) < 110 then
7859: LD_VAR 0 1
7863: PPUSH
7864: CALL_OW 251
7868: PUSH
7869: LD_INT 110
7871: LESS
7872: IFFALSE 7879
// begin enable ;
7874: ENABLE
// exit ;
7875: POP
7876: POP
7877: GO 7891
// end ;
7879: GO 7856
7881: POP
7882: POP
// kirilenkova_appears := true ;
7883: LD_ADDR_EXP 19
7887: PUSH
7888: LD_INT 1
7890: ST_TO_ADDR
// end ;
7891: PPOPN 1
7893: END
// every 0 0$2.1 trigger kirilenkova_appears do var un ;
7894: LD_EXP 19
7898: IFFALSE 8668
7900: GO 7902
7902: DISABLE
7903: LD_INT 0
7905: PPUSH
// begin if FilterUnitsInArea ( Lake , [ [ f_side , 0 ] , [ f_class , class_apeman ] ] ) = 0 then
7906: LD_INT 8
7908: PPUSH
7909: LD_INT 22
7911: PUSH
7912: LD_INT 0
7914: PUSH
7915: EMPTY
7916: LIST
7917: LIST
7918: PUSH
7919: LD_INT 25
7921: PUSH
7922: LD_INT 12
7924: PUSH
7925: EMPTY
7926: LIST
7927: LIST
7928: PUSH
7929: EMPTY
7930: LIST
7931: LIST
7932: PPUSH
7933: CALL_OW 70
7937: PUSH
7938: LD_INT 0
7940: EQUAL
7941: IFFALSE 7947
// SA_KillApeBeforeKirilenkova ;
7943: CALL 12461 0 0
// ChangeSideFog ( russians , russians ) ;
7947: LD_EXP 2
7951: PPUSH
7952: LD_EXP 2
7956: PPUSH
7957: CALL_OW 343
// PlaceUnitXYR ( kirilenkova , 74 , 110 , 2 , true ) ;
7961: LD_EXP 41
7965: PPUSH
7966: LD_INT 74
7968: PPUSH
7969: LD_INT 110
7971: PPUSH
7972: LD_INT 2
7974: PPUSH
7975: LD_INT 1
7977: PPUSH
7978: CALL_OW 50
// wait ( 0 0$3 ) ;
7982: LD_INT 105
7984: PPUSH
7985: CALL_OW 67
// ComMoveXY ( kirilenkova , 64 , 110 ) ;
7989: LD_EXP 41
7993: PPUSH
7994: LD_INT 64
7996: PPUSH
7997: LD_INT 110
7999: PPUSH
8000: CALL_OW 111
// un := NearestUnitToUnit ( FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) , kirilenkova ) ;
8004: LD_ADDR_VAR 0 1
8008: PUSH
8009: LD_INT 50
8011: PUSH
8012: EMPTY
8013: LIST
8014: PUSH
8015: LD_INT 22
8017: PUSH
8018: LD_EXP 1
8022: PUSH
8023: EMPTY
8024: LIST
8025: LIST
8026: PUSH
8027: EMPTY
8028: LIST
8029: LIST
8030: PPUSH
8031: CALL_OW 69
8035: PPUSH
8036: LD_EXP 41
8040: PPUSH
8041: CALL_OW 74
8045: ST_TO_ADDR
// kirilenkova_spoke := true ;
8046: LD_ADDR_LOC 2
8050: PUSH
8051: LD_INT 1
8053: ST_TO_ADDR
// if GetDistUnits ( un , Kirilenkova ) <= 15 then
8054: LD_VAR 0 1
8058: PPUSH
8059: LD_EXP 41
8063: PPUSH
8064: CALL_OW 296
8068: PUSH
8069: LD_INT 15
8071: LESSEQUAL
8072: IFFALSE 8224
// begin SetSide ( Kirilenkova , you ) ;
8074: LD_EXP 41
8078: PPUSH
8079: LD_EXP 1
8083: PPUSH
8084: CALL_OW 235
// kirilenkova_met := true ;
8088: LD_ADDR_EXP 7
8092: PUSH
8093: LD_INT 1
8095: ST_TO_ADDR
// wait ( 0 0$2 ) ;
8096: LD_INT 70
8098: PPUSH
8099: CALL_OW 67
// DialogueOn ;
8103: CALL_OW 6
// Say ( Kirilenkova , D11a-Kir-1 ) ;
8107: LD_EXP 41
8111: PPUSH
8112: LD_STRING D11a-Kir-1
8114: PPUSH
8115: CALL_OW 88
// if GetDistUnits ( Kirilenkova , Belkov ) < 25 then
8119: LD_EXP 41
8123: PPUSH
8124: LD_EXP 39
8128: PPUSH
8129: CALL_OW 296
8133: PUSH
8134: LD_INT 25
8136: LESS
8137: IFFALSE 8177
// begin Say ( Belkov , D11a-Bel-1 ) ;
8139: LD_EXP 39
8143: PPUSH
8144: LD_STRING D11a-Bel-1
8146: PPUSH
8147: CALL_OW 88
// Say ( Kirilenkova , D11a-Kir-2 ) ;
8151: LD_EXP 41
8155: PPUSH
8156: LD_STRING D11a-Kir-2
8158: PPUSH
8159: CALL_OW 88
// Say ( Belkov , D11a-Bel-2 ) ;
8163: LD_EXP 39
8167: PPUSH
8168: LD_STRING D11a-Bel-2
8170: PPUSH
8171: CALL_OW 88
// end else
8175: GO 8218
// if GetSex ( un ) = sex_male then
8177: LD_VAR 0 1
8181: PPUSH
8182: CALL_OW 258
8186: PUSH
8187: LD_INT 1
8189: EQUAL
8190: IFFALSE 8206
// Say ( un , D11a-RSol1-2 ) else
8192: LD_VAR 0 1
8196: PPUSH
8197: LD_STRING D11a-RSol1-2
8199: PPUSH
8200: CALL_OW 88
8204: GO 8218
// Say ( un , D11a-RFSol1-2 ) ;
8206: LD_VAR 0 1
8210: PPUSH
8211: LD_STRING D11a-RFSol1-2
8213: PPUSH
8214: CALL_OW 88
// DialogueOff ;
8218: CALL_OW 7
// end else
8222: GO 8668
// begin DialogueOn ;
8224: CALL_OW 6
// SayRadio ( Kirilenkova , D11b-Kir-1 ) ;
8228: LD_EXP 41
8232: PPUSH
8233: LD_STRING D11b-Kir-1
8235: PPUSH
8236: CALL_OW 94
// if IsOk ( Belkov ) then
8240: LD_EXP 39
8244: PPUSH
8245: CALL_OW 302
8249: IFFALSE 8277
// begin Say ( Belkov , D11b-Bel-1 ) ;
8251: LD_EXP 39
8255: PPUSH
8256: LD_STRING D11b-Bel-1
8258: PPUSH
8259: CALL_OW 88
// Say ( Belkov , D11b-Bel-1a ) ;
8263: LD_EXP 39
8267: PPUSH
8268: LD_STRING D11b-Bel-1a
8270: PPUSH
8271: CALL_OW 88
// end else
8275: GO 8398
// begin un := FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) diff Burlak ;
8277: LD_ADDR_VAR 0 1
8281: PUSH
8282: LD_INT 50
8284: PUSH
8285: EMPTY
8286: LIST
8287: PUSH
8288: LD_INT 22
8290: PUSH
8291: LD_EXP 1
8295: PUSH
8296: EMPTY
8297: LIST
8298: LIST
8299: PUSH
8300: EMPTY
8301: LIST
8302: LIST
8303: PPUSH
8304: CALL_OW 69
8308: PUSH
8309: LD_EXP 37
8313: DIFF
8314: ST_TO_ADDR
// if un then
8315: LD_VAR 0 1
8319: IFFALSE 8347
// un := un [ Rand ( 1 , un ) ] else
8321: LD_ADDR_VAR 0 1
8325: PUSH
8326: LD_VAR 0 1
8330: PUSH
8331: LD_INT 1
8333: PPUSH
8334: LD_VAR 0 1
8338: PPUSH
8339: CALL_OW 12
8343: ARRAY
8344: ST_TO_ADDR
8345: GO 8357
// un := Burlak ;
8347: LD_ADDR_VAR 0 1
8351: PUSH
8352: LD_EXP 37
8356: ST_TO_ADDR
// if GetSex ( un ) = sex_male then
8357: LD_VAR 0 1
8361: PPUSH
8362: CALL_OW 258
8366: PUSH
8367: LD_INT 1
8369: EQUAL
8370: IFFALSE 8386
// Say ( un , D11b-RSol1-1 ) else
8372: LD_VAR 0 1
8376: PPUSH
8377: LD_STRING D11b-RSol1-1
8379: PPUSH
8380: CALL_OW 88
8384: GO 8398
// Say ( un , D11b-RFSol1-1 ) ;
8386: LD_VAR 0 1
8390: PPUSH
8391: LD_STRING D11b-RFSol1-1
8393: PPUSH
8394: CALL_OW 88
// end ; if SeeArea ( you , Lake ) or not UnitFilter ( wild_apemen , [ f_ok ] ) then
8398: LD_EXP 1
8402: PPUSH
8403: LD_INT 8
8405: PPUSH
8406: CALL_OW 294
8410: PUSH
8411: LD_EXP 48
8415: PPUSH
8416: LD_INT 50
8418: PUSH
8419: EMPTY
8420: LIST
8421: PPUSH
8422: CALL_OW 72
8426: NOT
8427: OR
8428: IFFALSE 8554
// begin SayRadio ( Kirilenkova , D11b2-Kir-1 ) ;
8430: LD_EXP 41
8434: PPUSH
8435: LD_STRING D11b2-Kir-1
8437: PPUSH
8438: CALL_OW 94
// if not UnitFilter ( wild_apemen , [ f_ok ] ) then
8442: LD_EXP 48
8446: PPUSH
8447: LD_INT 50
8449: PUSH
8450: EMPTY
8451: LIST
8452: PPUSH
8453: CALL_OW 72
8457: NOT
8458: IFFALSE 8477
// ComMoveXY ( Kirilenkova , 69 , 98 ) else
8460: LD_EXP 41
8464: PPUSH
8465: LD_INT 69
8467: PPUSH
8468: LD_INT 98
8470: PPUSH
8471: CALL_OW 111
8475: GO 8486
// ComStop ( Kirilenkova ) ;
8477: LD_EXP 41
8481: PPUSH
8482: CALL_OW 141
// if IsOk ( Belkov ) then
8486: LD_EXP 39
8490: PPUSH
8491: CALL_OW 302
8495: IFFALSE 8511
// Say ( Belkov , D11b2-Bel-1 ) else
8497: LD_EXP 39
8501: PPUSH
8502: LD_STRING D11b2-Bel-1
8504: PPUSH
8505: CALL_OW 88
8509: GO 8552
// if GetSex ( un ) = sex_male then
8511: LD_VAR 0 1
8515: PPUSH
8516: CALL_OW 258
8520: PUSH
8521: LD_INT 1
8523: EQUAL
8524: IFFALSE 8540
// Say ( un , D11b1-RSol1-1 ) else
8526: LD_VAR 0 1
8530: PPUSH
8531: LD_STRING D11b1-RSol1-1
8533: PPUSH
8534: CALL_OW 88
8538: GO 8552
// Say ( un , D11b1-RFSol1-1 ) ;
8540: LD_VAR 0 1
8544: PPUSH
8545: LD_STRING D11b1-RFSol1-1
8547: PPUSH
8548: CALL_OW 88
// end else
8552: GO 8664
// begin SayRadio ( Kirilenkova , D11b1-Kir-1 ) ;
8554: LD_EXP 41
8558: PPUSH
8559: LD_STRING D11b1-Kir-1
8561: PPUSH
8562: CALL_OW 94
// if saw_apeman then
8566: LD_EXP 20
8570: IFFALSE 8586
// Say ( Burlak , D11b1-Bur-1 ) else
8572: LD_EXP 37
8576: PPUSH
8577: LD_STRING D11b1-Bur-1
8579: PPUSH
8580: CALL_OW 88
8584: GO 8598
// Say ( Burlak , D11b1-Bur-1a ) ;
8586: LD_EXP 37
8590: PPUSH
8591: LD_STRING D11b1-Bur-1a
8593: PPUSH
8594: CALL_OW 88
// if IsOk ( Belkov ) then
8598: LD_EXP 39
8602: PPUSH
8603: CALL_OW 302
8607: IFFALSE 8623
// Say ( Belkov , D11b1-Bel-1 ) else
8609: LD_EXP 39
8613: PPUSH
8614: LD_STRING D11b1-Bel-1
8616: PPUSH
8617: CALL_OW 88
8621: GO 8664
// if GetSex ( un ) = sex_male then
8623: LD_VAR 0 1
8627: PPUSH
8628: CALL_OW 258
8632: PUSH
8633: LD_INT 1
8635: EQUAL
8636: IFFALSE 8652
// Say ( un , D11b1-RSol1-1 ) else
8638: LD_VAR 0 1
8642: PPUSH
8643: LD_STRING D11b1-RSol1-1
8645: PPUSH
8646: CALL_OW 88
8650: GO 8664
// Say ( un , D11b1-RFSol1-1 ) ;
8652: LD_VAR 0 1
8656: PPUSH
8657: LD_STRING D11b1-RFSol1-1
8659: PPUSH
8660: CALL_OW 88
// end ; DialogueOff ;
8664: CALL_OW 7
// end ; end ;
8668: PPOPN 1
8670: END
// every 0 0$2 + 0 0$0.31 trigger not kirilenkova_met and kirilenkova_spoke and See ( you , kirilenkova ) do
8671: LD_EXP 7
8675: NOT
8676: PUSH
8677: LD_LOC 2
8681: AND
8682: PUSH
8683: LD_EXP 1
8687: PPUSH
8688: LD_EXP 41
8692: PPUSH
8693: CALL_OW 292
8697: AND
8698: IFFALSE 8764
8700: GO 8702
8702: DISABLE
// begin DialogueOn ;
8703: CALL_OW 6
// SetSide ( Kirilenkova , you ) ;
8707: LD_EXP 41
8711: PPUSH
8712: LD_EXP 1
8716: PPUSH
8717: CALL_OW 235
// Say ( Kirilenkova , D11c-Kir-1 ) ;
8721: LD_EXP 41
8725: PPUSH
8726: LD_STRING D11c-Kir-1
8728: PPUSH
8729: CALL_OW 88
// Say ( Burlak , D11c-Bur-1 ) ;
8733: LD_EXP 37
8737: PPUSH
8738: LD_STRING D11c-Bur-1
8740: PPUSH
8741: CALL_OW 88
// DialogueOff ;
8745: CALL_OW 7
// Hint ( Healing ) ;
8749: LD_STRING Healing
8751: PPUSH
8752: CALL_OW 339
// kirilenkova_met := true ;
8756: LD_ADDR_EXP 7
8760: PUSH
8761: LD_INT 1
8763: ST_TO_ADDR
// end ; end_of_file
8764: END
// var apemen_dist , engels_work ; every 0 0$1 trigger not SeeXY ( russians , 86 , 53 ) marked 1 do var un ;
8765: LD_EXP 2
8769: PPUSH
8770: LD_INT 86
8772: PPUSH
8773: LD_INT 53
8775: PPUSH
8776: CALL_OW 293
8780: NOT
8781: IFFALSE 8867
8783: GO 8785
8785: DISABLE
8786: LD_INT 0
8788: PPUSH
// begin if pokryshkin_met then
8789: LD_EXP 5
8793: IFFALSE 8797
// exit ;
8795: GO 8867
// un := team [ Rand ( 1 , team ) ] ;
8797: LD_ADDR_VAR 0 1
8801: PUSH
8802: LD_EXP 43
8806: PUSH
8807: LD_INT 1
8809: PPUSH
8810: LD_EXP 43
8814: PPUSH
8815: CALL_OW 12
8819: ARRAY
8820: ST_TO_ADDR
// ComMoveXY ( un , 86 , 53 ) ;
8821: LD_VAR 0 1
8825: PPUSH
8826: LD_INT 86
8828: PPUSH
8829: LD_INT 53
8831: PPUSH
8832: CALL_OW 111
// repeat Wait ( 0 0$1 ) ;
8836: LD_INT 35
8838: PPUSH
8839: CALL_OW 67
// until SeeXY ( russians , 86 , 53 ) or pokryshkin_met ;
8843: LD_EXP 2
8847: PPUSH
8848: LD_INT 86
8850: PPUSH
8851: LD_INT 53
8853: PPUSH
8854: CALL_OW 293
8858: PUSH
8859: LD_EXP 5
8863: OR
8864: IFFALSE 8836
// enable ;
8866: ENABLE
// end ;
8867: PPOPN 1
8869: END
// every 0 0$1 trigger not SeeXY ( russians , 85 , 73 ) marked 1 do var un ;
8870: LD_EXP 2
8874: PPUSH
8875: LD_INT 85
8877: PPUSH
8878: LD_INT 73
8880: PPUSH
8881: CALL_OW 293
8885: NOT
8886: IFFALSE 8981
8888: GO 8890
8890: DISABLE
8891: LD_INT 0
8893: PPUSH
// begin if pokryshkin_met then
8894: LD_EXP 5
8898: IFFALSE 8902
// exit ;
8900: GO 8981
// un := team [ Rand ( 1 , team ) ] ;
8902: LD_ADDR_VAR 0 1
8906: PUSH
8907: LD_EXP 43
8911: PUSH
8912: LD_INT 1
8914: PPUSH
8915: LD_EXP 43
8919: PPUSH
8920: CALL_OW 12
8924: ARRAY
8925: ST_TO_ADDR
// ComMoveXY ( un , 85 , 73 ) ;
8926: LD_VAR 0 1
8930: PPUSH
8931: LD_INT 85
8933: PPUSH
8934: LD_INT 73
8936: PPUSH
8937: CALL_OW 111
// repeat Wait ( 0 0$1 ) ;
8941: LD_INT 35
8943: PPUSH
8944: CALL_OW 67
// until SeeXY ( russians , 85 , 73 ) or pokryshkin_met ;
8948: LD_EXP 2
8952: PPUSH
8953: LD_INT 85
8955: PPUSH
8956: LD_INT 73
8958: PPUSH
8959: CALL_OW 293
8963: PUSH
8964: LD_EXP 5
8968: OR
8969: IFFALSE 8941
// ComStop ( un ) ;
8971: LD_VAR 0 1
8975: PPUSH
8976: CALL_OW 141
// enable ;
8980: ENABLE
// end ;
8981: PPOPN 1
8983: END
// every 0 0$0.61 trigger IsOk ( Pokryshkin ) and ( GetSide ( Attacks ( Burlak ) ) = russians ) do
8984: LD_EXP 38
8988: PPUSH
8989: CALL_OW 302
8993: PUSH
8994: LD_EXP 37
8998: PPUSH
8999: CALL_OW 320
9003: PPUSH
9004: CALL_OW 255
9008: PUSH
9009: LD_EXP 2
9013: EQUAL
9014: AND
9015: IFFALSE 9111
9017: GO 9019
9019: DISABLE
// begin ComAttackUnit ( FilterAllUnits ( [ f_side , russians ] ) , Burlak ) ;
9020: LD_INT 22
9022: PUSH
9023: LD_EXP 2
9027: PUSH
9028: EMPTY
9029: LIST
9030: LIST
9031: PPUSH
9032: CALL_OW 69
9036: PPUSH
9037: LD_EXP 37
9041: PPUSH
9042: CALL_OW 115
// betrayed := true ;
9046: LD_ADDR_EXP 16
9050: PUSH
9051: LD_INT 1
9053: ST_TO_ADDR
// Say ( Pokryshkin , DAttack-Pok-1 ) ;
9054: LD_EXP 38
9058: PPUSH
9059: LD_STRING DAttack-Pok-1
9061: PPUSH
9062: CALL_OW 88
// repeat wait ( 0 0$6 ) ;
9066: LD_INT 210
9068: PPUSH
9069: CALL_OW 67
// ComAttackUnit ( FilterAllUnits ( [ f_side , russians ] ) , Burlak ) ;
9073: LD_INT 22
9075: PUSH
9076: LD_EXP 2
9080: PUSH
9081: EMPTY
9082: LIST
9083: LIST
9084: PPUSH
9085: CALL_OW 69
9089: PPUSH
9090: LD_EXP 37
9094: PPUSH
9095: CALL_OW 115
// until not IsOk ( Burlak ) ;
9099: LD_EXP 37
9103: PPUSH
9104: CALL_OW 302
9108: NOT
9109: IFFALSE 9066
// end ;
9111: END
// every 0 0$1 trigger not pokryshkin_met and not gnyevko_met and UnitFilter ( wild_apemen , [ f_see , you ] ) marked 11 do var un ;
9112: LD_EXP 5
9116: NOT
9117: PUSH
9118: LD_EXP 6
9122: NOT
9123: AND
9124: PUSH
9125: LD_EXP 48
9129: PPUSH
9130: LD_INT 101
9132: PUSH
9133: LD_EXP 1
9137: PUSH
9138: EMPTY
9139: LIST
9140: LIST
9141: PPUSH
9142: CALL_OW 72
9146: AND
9147: IFFALSE 9603
9149: GO 9151
9151: DISABLE
9152: LD_INT 0
9154: PPUSH
// begin async ;
9155: ASYNC
// if not saw_apeman then
9156: LD_EXP 20
9160: NOT
9161: IFFALSE 9167
// d_burlak_alone_meets_apemen ;
9163: CALL 4090 0 0
// sync ;
9167: SYNC
// saw_apeman := true ;
9168: LD_ADDR_EXP 20
9172: PUSH
9173: LD_INT 1
9175: ST_TO_ADDR
// apemen_dist := 10 * 10 ;
9176: LD_ADDR_LOC 3
9180: PUSH
9181: LD_INT 10
9183: PUSH
9184: LD_INT 10
9186: MUL
9187: ST_TO_ADDR
// repeat for un in wild_apemen do
9188: LD_ADDR_VAR 0 1
9192: PUSH
9193: LD_EXP 48
9197: PUSH
9198: FOR_IN
9199: IFFALSE 9372
// begin if GetDistUnits ( un , Burlak ) * 10 > apemen_dist then
9201: LD_VAR 0 1
9205: PPUSH
9206: LD_EXP 37
9210: PPUSH
9211: CALL_OW 296
9215: PUSH
9216: LD_INT 10
9218: MUL
9219: PUSH
9220: LD_LOC 3
9224: GREATER
9225: IFFALSE 9258
// ComMoveXY ( un , GetX ( Burlak ) , GetY ( Burlak ) ) else
9227: LD_VAR 0 1
9231: PPUSH
9232: LD_EXP 37
9236: PPUSH
9237: CALL_OW 250
9241: PPUSH
9242: LD_EXP 37
9246: PPUSH
9247: CALL_OW 251
9251: PPUSH
9252: CALL_OW 111
9256: GO 9370
// if GetDistUnits ( un , Burlak ) * 10 < apemen_dist - 20 then
9258: LD_VAR 0 1
9262: PPUSH
9263: LD_EXP 37
9267: PPUSH
9268: CALL_OW 296
9272: PUSH
9273: LD_INT 10
9275: MUL
9276: PUSH
9277: LD_LOC 3
9281: PUSH
9282: LD_INT 20
9284: MINUS
9285: LESS
9286: IFFALSE 9349
// ComMoveXY ( un , 2 * GetX ( un ) - GetX ( Burlak ) , 2 * GetY ( un ) - GetY ( Burlak ) ) else
9288: LD_VAR 0 1
9292: PPUSH
9293: LD_INT 2
9295: PUSH
9296: LD_VAR 0 1
9300: PPUSH
9301: CALL_OW 250
9305: MUL
9306: PUSH
9307: LD_EXP 37
9311: PPUSH
9312: CALL_OW 250
9316: MINUS
9317: PPUSH
9318: LD_INT 2
9320: PUSH
9321: LD_VAR 0 1
9325: PPUSH
9326: CALL_OW 251
9330: MUL
9331: PUSH
9332: LD_EXP 37
9336: PPUSH
9337: CALL_OW 251
9341: MINUS
9342: PPUSH
9343: CALL_OW 111
9347: GO 9370
// begin ComStop ( un ) ;
9349: LD_VAR 0 1
9353: PPUSH
9354: CALL_OW 141
// ComWait ( un , 0 0$0.6 ) ;
9358: LD_VAR 0 1
9362: PPUSH
9363: LD_INT 21
9365: PPUSH
9366: CALL_OW 142
// end ; end ;
9370: GO 9198
9372: POP
9373: POP
// wait ( 0 0$0.5 ) ;
9374: LD_INT 18
9376: PPUSH
9377: CALL_OW 67
// apemen_dist := apemen_dist - 1 ;
9381: LD_ADDR_LOC 3
9385: PUSH
9386: LD_LOC 3
9390: PUSH
9391: LD_INT 1
9393: MINUS
9394: ST_TO_ADDR
// un := NearestUnitToUnit ( wild_apemen , Burlak ) ;
9395: LD_ADDR_VAR 0 1
9399: PUSH
9400: LD_EXP 48
9404: PPUSH
9405: LD_EXP 37
9409: PPUSH
9410: CALL_OW 74
9414: ST_TO_ADDR
// if apeman_killed then
9415: LD_EXP 52
9419: IFFALSE 9423
// exit ;
9421: GO 9603
// until ( apemen_dist = 4 * 10 ) or ( GetDistUnits ( un , Burlak ) * 10 > apemen_dist + apemen_range ) ;
9423: LD_LOC 3
9427: PUSH
9428: LD_INT 4
9430: PUSH
9431: LD_INT 10
9433: MUL
9434: EQUAL
9435: PUSH
9436: LD_VAR 0 1
9440: PPUSH
9441: LD_EXP 37
9445: PPUSH
9446: CALL_OW 296
9450: PUSH
9451: LD_INT 10
9453: MUL
9454: PUSH
9455: LD_LOC 3
9459: PUSH
9460: LD_EXP 34
9464: PLUS
9465: GREATER
9466: OR
9467: IFFALSE 9188
// wait ( apemen_time ) ;
9469: LD_EXP 35
9473: PPUSH
9474: CALL_OW 67
// if apeman_killed then
9478: LD_EXP 52
9482: IFFALSE 9486
// exit ;
9484: GO 9603
// ComMoveXY ( wild_apemen , 64 , 88 ) ;
9486: LD_EXP 48
9490: PPUSH
9491: LD_INT 64
9493: PPUSH
9494: LD_INT 88
9496: PPUSH
9497: CALL_OW 111
// repeat wait ( 0 0$1 ) ;
9501: LD_INT 35
9503: PPUSH
9504: CALL_OW 67
// if apeman_killed then
9508: LD_EXP 52
9512: IFFALSE 9516
// exit ;
9514: GO 9603
// until FilterUnitsInArea ( Cave , [ [ f_class , class_apeman ] , [ f_ok ] ] ) + 0 = UnitFilter ( wild_apemen , [ f_ok ] ) + 0 ;
9516: LD_INT 10
9518: PPUSH
9519: LD_INT 25
9521: PUSH
9522: LD_INT 12
9524: PUSH
9525: EMPTY
9526: LIST
9527: LIST
9528: PUSH
9529: LD_INT 50
9531: PUSH
9532: EMPTY
9533: LIST
9534: PUSH
9535: EMPTY
9536: LIST
9537: LIST
9538: PPUSH
9539: CALL_OW 70
9543: PUSH
9544: LD_INT 0
9546: PLUS
9547: PUSH
9548: LD_EXP 48
9552: PPUSH
9553: LD_INT 50
9555: PUSH
9556: EMPTY
9557: LIST
9558: PPUSH
9559: CALL_OW 72
9563: PUSH
9564: LD_INT 0
9566: PLUS
9567: EQUAL
9568: IFFALSE 9501
// apemen_range := apemen_range + 1 ;
9570: LD_ADDR_EXP 34
9574: PUSH
9575: LD_EXP 34
9579: PUSH
9580: LD_INT 1
9582: PLUS
9583: ST_TO_ADDR
// apemen_time := apemen_time * 150 div 100 ;
9584: LD_ADDR_EXP 35
9588: PUSH
9589: LD_EXP 35
9593: PUSH
9594: LD_INT 150
9596: MUL
9597: PUSH
9598: LD_INT 100
9600: DIV
9601: ST_TO_ADDR
// enable ;
9602: ENABLE
// end ;
9603: PPOPN 1
9605: END
// every 0 0$1 trigger kirilenkova_appears do
9606: LD_EXP 19
9610: IFFALSE 9630
9612: GO 9614
9614: DISABLE
// begin apeman_braveness := apeman_braveness - 1 ;
9615: LD_ADDR_EXP 36
9619: PUSH
9620: LD_EXP 36
9624: PUSH
9625: LD_INT 1
9627: MINUS
9628: ST_TO_ADDR
// enable ;
9629: ENABLE
// end ;
9630: END
// every 0 0$1.5 + 0 0$0.7 trigger kirilenkova_appears do var un ;
9631: LD_EXP 19
9635: IFFALSE 9844
9637: GO 9639
9639: DISABLE
9640: LD_INT 0
9642: PPUSH
// begin if not wild_apemen then
9643: LD_EXP 48
9647: NOT
9648: IFFALSE 9652
// exit ;
9650: GO 9844
// if apeman_braveness > 0 then
9652: LD_EXP 36
9656: PUSH
9657: LD_INT 0
9659: GREATER
9660: IFFALSE 9815
// begin for un in wild_apemen do
9662: LD_ADDR_VAR 0 1
9666: PUSH
9667: LD_EXP 48
9671: PUSH
9672: FOR_IN
9673: IFFALSE 9810
// if GetDistUnits ( un , Kirilenkova ) < 6 then
9675: LD_VAR 0 1
9679: PPUSH
9680: LD_EXP 41
9684: PPUSH
9685: CALL_OW 296
9689: PUSH
9690: LD_INT 6
9692: LESS
9693: IFFALSE 9808
// ComMoveXY ( un , GetX ( un ) + 10 * ( GetX ( un ) - GetX ( Kirilenkova ) ) div GetDistUnits ( un , Kirilenkova ) , GetY ( un ) + 10 * ( GetY ( un ) - GetY ( Kirilenkova ) ) div GetDistUnits ( un , Kirilenkova ) ) ;
9695: LD_VAR 0 1
9699: PPUSH
9700: LD_VAR 0 1
9704: PPUSH
9705: CALL_OW 250
9709: PUSH
9710: LD_INT 10
9712: PUSH
9713: LD_VAR 0 1
9717: PPUSH
9718: CALL_OW 250
9722: PUSH
9723: LD_EXP 41
9727: PPUSH
9728: CALL_OW 250
9732: MINUS
9733: MUL
9734: PUSH
9735: LD_VAR 0 1
9739: PPUSH
9740: LD_EXP 41
9744: PPUSH
9745: CALL_OW 296
9749: DIV
9750: PLUS
9751: PPUSH
9752: LD_VAR 0 1
9756: PPUSH
9757: CALL_OW 251
9761: PUSH
9762: LD_INT 10
9764: PUSH
9765: LD_VAR 0 1
9769: PPUSH
9770: CALL_OW 251
9774: PUSH
9775: LD_EXP 41
9779: PPUSH
9780: CALL_OW 251
9784: MINUS
9785: MUL
9786: PUSH
9787: LD_VAR 0 1
9791: PPUSH
9792: LD_EXP 41
9796: PPUSH
9797: CALL_OW 296
9801: DIV
9802: PLUS
9803: PPUSH
9804: CALL_OW 111
9808: GO 9672
9810: POP
9811: POP
// enable ;
9812: ENABLE
// end else
9813: GO 9844
// ComMoveXY ( wild_apemen , GetX ( Kirilenkova ) , GetY ( Kirilenkova ) ) ;
9815: LD_EXP 48
9819: PPUSH
9820: LD_EXP 41
9824: PPUSH
9825: CALL_OW 250
9829: PPUSH
9830: LD_EXP 41
9834: PPUSH
9835: CALL_OW 251
9839: PPUSH
9840: CALL_OW 111
// end ;
9844: PPOPN 1
9846: END
// every 0 0$1.8 trigger it_is_your do var un , saved ;
9847: LD_EXP 17
9851: IFFALSE 10052
9853: GO 9855
9855: DISABLE
9856: LD_INT 0
9858: PPUSH
9859: PPUSH
// begin if not wild_apemen then
9860: LD_EXP 48
9864: NOT
9865: IFFALSE 9869
// exit ;
9867: GO 10052
// if FilterUnitsInArea ( CaveEntrance , [ f_side , you ] ) > 2 then
9869: LD_INT 2
9871: PPUSH
9872: LD_INT 22
9874: PUSH
9875: LD_EXP 1
9879: PUSH
9880: EMPTY
9881: LIST
9882: LIST
9883: PPUSH
9884: CALL_OW 70
9888: PUSH
9889: LD_INT 2
9891: GREATER
9892: IFFALSE 10051
// begin ComAttackUnit ( wild_apemen [ 1 ] , NearestUnitToUnit ( your_units , wild_apemen [ 1 ] ) ) ;
9894: LD_EXP 48
9898: PUSH
9899: LD_INT 1
9901: ARRAY
9902: PPUSH
9903: LD_EXP 51
9907: PPUSH
9908: LD_EXP 48
9912: PUSH
9913: LD_INT 1
9915: ARRAY
9916: PPUSH
9917: CALL_OW 74
9921: PPUSH
9922: CALL_OW 115
// ComMoveToArea ( wild_apemen diff wild_apemen [ 1 ] , InnerCave ) ;
9926: LD_EXP 48
9930: PUSH
9931: LD_EXP 48
9935: PUSH
9936: LD_INT 1
9938: ARRAY
9939: DIFF
9940: PPUSH
9941: LD_INT 11
9943: PPUSH
9944: CALL_OW 113
// AddComWait ( wild_apemen diff wild_apemen [ 1 ] , 0 0$1 ) ;
9948: LD_EXP 48
9952: PUSH
9953: LD_EXP 48
9957: PUSH
9958: LD_INT 1
9960: ARRAY
9961: DIFF
9962: PPUSH
9963: LD_INT 35
9965: PPUSH
9966: CALL_OW 202
// repeat wait ( 0 0$0.3 ) ;
9970: LD_INT 10
9972: PPUSH
9973: CALL_OW 67
// saved := FilterUnitsInArea ( InnerCave , [ f_side , 0 ] ) ;
9977: LD_ADDR_VAR 0 2
9981: PUSH
9982: LD_INT 11
9984: PPUSH
9985: LD_INT 22
9987: PUSH
9988: LD_INT 0
9990: PUSH
9991: EMPTY
9992: LIST
9993: LIST
9994: PPUSH
9995: CALL_OW 70
9999: ST_TO_ADDR
// for un in saved do
10000: LD_ADDR_VAR 0 1
10004: PUSH
10005: LD_VAR 0 2
10009: PUSH
10010: FOR_IN
10011: IFFALSE 10040
// begin RemoveUnit ( un ) ;
10013: LD_VAR 0 1
10017: PPUSH
10018: CALL_OW 64
// wild_apemen := wild_apemen diff un ;
10022: LD_ADDR_EXP 48
10026: PUSH
10027: LD_EXP 48
10031: PUSH
10032: LD_VAR 0 1
10036: DIFF
10037: ST_TO_ADDR
// end ;
10038: GO 10010
10040: POP
10041: POP
// until not wild_apemen ;
10042: LD_EXP 48
10046: NOT
10047: IFFALSE 9970
// end else
10049: GO 10052
// enable ;
10051: ENABLE
// end ;
10052: PPOPN 2
10054: END
// export function prepare_trap ; var un , coord , i ; begin
10055: LD_INT 0
10057: PPUSH
10058: PPUSH
10059: PPUSH
10060: PPUSH
// coord = [ [ - 2 , 0 ] , [ 0 , - 2 ] , [ 0 , 2 ] , [ 1 , 0 ] , [ - 1 , 1 ] , [ - 1 , - 3 ] , [ 2 , 1 ] , [ 2 , - 2 ] , [ 3 , 3 ] , [ 3 , - 3 ] ] ;
10061: LD_ADDR_VAR 0 3
10065: PUSH
10066: LD_INT 2
10068: NEG
10069: PUSH
10070: LD_INT 0
10072: PUSH
10073: EMPTY
10074: LIST
10075: LIST
10076: PUSH
10077: LD_INT 0
10079: PUSH
10080: LD_INT 2
10082: NEG
10083: PUSH
10084: EMPTY
10085: LIST
10086: LIST
10087: PUSH
10088: LD_INT 0
10090: PUSH
10091: LD_INT 2
10093: PUSH
10094: EMPTY
10095: LIST
10096: LIST
10097: PUSH
10098: LD_INT 1
10100: PUSH
10101: LD_INT 0
10103: PUSH
10104: EMPTY
10105: LIST
10106: LIST
10107: PUSH
10108: LD_INT 1
10110: NEG
10111: PUSH
10112: LD_INT 1
10114: PUSH
10115: EMPTY
10116: LIST
10117: LIST
10118: PUSH
10119: LD_INT 1
10121: NEG
10122: PUSH
10123: LD_INT 3
10125: NEG
10126: PUSH
10127: EMPTY
10128: LIST
10129: LIST
10130: PUSH
10131: LD_INT 2
10133: PUSH
10134: LD_INT 1
10136: PUSH
10137: EMPTY
10138: LIST
10139: LIST
10140: PUSH
10141: LD_INT 2
10143: PUSH
10144: LD_INT 2
10146: NEG
10147: PUSH
10148: EMPTY
10149: LIST
10150: LIST
10151: PUSH
10152: LD_INT 3
10154: PUSH
10155: LD_INT 3
10157: PUSH
10158: EMPTY
10159: LIST
10160: LIST
10161: PUSH
10162: LD_INT 3
10164: PUSH
10165: LD_INT 3
10167: NEG
10168: PUSH
10169: EMPTY
10170: LIST
10171: LIST
10172: PUSH
10173: EMPTY
10174: LIST
10175: LIST
10176: LIST
10177: LIST
10178: LIST
10179: LIST
10180: LIST
10181: LIST
10182: LIST
10183: LIST
10184: ST_TO_ADDR
// i = 1 ;
10185: LD_ADDR_VAR 0 4
10189: PUSH
10190: LD_INT 1
10192: ST_TO_ADDR
// for un in [ Pokryshkin ] ^ team ^ [ Gnyevko , Belkov ] do
10193: LD_ADDR_VAR 0 2
10197: PUSH
10198: LD_EXP 38
10202: PUSH
10203: EMPTY
10204: LIST
10205: PUSH
10206: LD_EXP 43
10210: ADD
10211: PUSH
10212: LD_EXP 40
10216: PUSH
10217: LD_EXP 39
10221: PUSH
10222: EMPTY
10223: LIST
10224: LIST
10225: ADD
10226: PUSH
10227: FOR_IN
10228: IFFALSE 10302
// begin ComMoveXY ( un , 65 + coord [ i ] [ 1 ] , 57 + coord [ i ] [ 2 ] ) ;
10230: LD_VAR 0 2
10234: PPUSH
10235: LD_INT 65
10237: PUSH
10238: LD_VAR 0 3
10242: PUSH
10243: LD_VAR 0 4
10247: ARRAY
10248: PUSH
10249: LD_INT 1
10251: ARRAY
10252: PLUS
10253: PPUSH
10254: LD_INT 57
10256: PUSH
10257: LD_VAR 0 3
10261: PUSH
10262: LD_VAR 0 4
10266: ARRAY
10267: PUSH
10268: LD_INT 2
10270: ARRAY
10271: PLUS
10272: PPUSH
10273: CALL_OW 111
// i = i + 1 ;
10277: LD_ADDR_VAR 0 4
10281: PUSH
10282: LD_VAR 0 4
10286: PUSH
10287: LD_INT 1
10289: PLUS
10290: ST_TO_ADDR
// AddComCrawl ( un ) ;
10291: LD_VAR 0 2
10295: PPUSH
10296: CALL_OW 197
// end ;
10300: GO 10227
10302: POP
10303: POP
// end ;
10304: LD_VAR 0 1
10308: RET
// every 0 0$1 trigger follow_pokryshkin and GetDistUnits ( Burlak , Pokryshkin ) > 14 do
10309: LD_EXP 8
10313: PUSH
10314: LD_EXP 37
10318: PPUSH
10319: LD_EXP 38
10323: PPUSH
10324: CALL_OW 296
10328: PUSH
10329: LD_INT 14
10331: GREATER
10332: AND
10333: IFFALSE 10493
10335: GO 10337
10337: DISABLE
// begin InGameOn ;
10338: CALL_OW 8
// ComStop ( team ^ [ Pokryshkin , Gnyevko , Belkov , Brown ] ) ;
10342: LD_EXP 43
10346: PUSH
10347: LD_EXP 38
10351: PUSH
10352: LD_EXP 40
10356: PUSH
10357: LD_EXP 39
10361: PUSH
10362: LD_EXP 44
10366: PUSH
10367: EMPTY
10368: LIST
10369: LIST
10370: LIST
10371: LIST
10372: ADD
10373: PPUSH
10374: CALL_OW 141
// ComStop ( Burlak ) ;
10378: LD_EXP 37
10382: PPUSH
10383: CALL_OW 141
// Say ( Pokryshkin , DSplit-Pok-1 ) ;
10387: LD_EXP 38
10391: PPUSH
10392: LD_STRING DSplit-Pok-1
10394: PPUSH
10395: CALL_OW 88
// ComMoveUnit ( Burlak , Pokryshkin ) ;
10399: LD_EXP 37
10403: PPUSH
10404: LD_EXP 38
10408: PPUSH
10409: CALL_OW 112
// Say ( Burlak , DSplit-Bur-1 ) ;
10413: LD_EXP 37
10417: PPUSH
10418: LD_STRING DSplit-Bur-1
10420: PPUSH
10421: CALL_OW 88
// while GetDistUnits ( Burlak , Pokryshkin ) > 7 do
10425: LD_EXP 37
10429: PPUSH
10430: LD_EXP 38
10434: PPUSH
10435: CALL_OW 296
10439: PUSH
10440: LD_INT 7
10442: GREATER
10443: IFFALSE 10454
// wait ( 0 0$1 ) ;
10445: LD_INT 35
10447: PPUSH
10448: CALL_OW 67
10452: GO 10425
// ComStop ( Burlak ) ;
10454: LD_EXP 37
10458: PPUSH
10459: CALL_OW 141
// InGameOff ;
10463: CALL_OW 9
// if preparing_trap then
10467: LD_EXP 11
10471: IFFALSE 10477
// begin prepare_trap ;
10473: CALL 10055 0 0
// end ; ComMoveXY ( Brown , 66 , 58 ) ;
10477: LD_EXP 44
10481: PPUSH
10482: LD_INT 66
10484: PPUSH
10485: LD_INT 58
10487: PPUSH
10488: CALL_OW 111
// enable ;
10492: ENABLE
// end ;
10493: END
// function someone_attacks_breastwork ; var un ; begin
10494: LD_INT 0
10496: PPUSH
10497: PPUSH
// result := false ;
10498: LD_ADDR_VAR 0 1
10502: PUSH
10503: LD_INT 0
10505: ST_TO_ADDR
// for un in your_units do
10506: LD_ADDR_VAR 0 2
10510: PUSH
10511: LD_EXP 51
10515: PUSH
10516: FOR_IN
10517: IFFALSE 10546
// if Attacks ( un ) = am_bunker then
10519: LD_VAR 0 2
10523: PPUSH
10524: CALL_OW 320
10528: PUSH
10529: LD_EXP 47
10533: EQUAL
10534: IFFALSE 10544
// result := true ;
10536: LD_ADDR_VAR 0 1
10540: PUSH
10541: LD_INT 1
10543: ST_TO_ADDR
10544: GO 10516
10546: POP
10547: POP
// end ;
10548: LD_VAR 0 1
10552: RET
// every 0 0$1 trigger it_is_your and someone_attacks_breastwork do
10553: LD_EXP 17
10557: PUSH
10558: CALL 10494 0 0
10562: AND
10563: IFFALSE 10742
10565: GO 10567
10567: DISABLE
// begin ComWait ( gladstones_apemen , 0 0$5 ) ;
10568: LD_EXP 49
10572: PPUSH
10573: LD_INT 175
10575: PPUSH
10576: CALL_OW 142
// AddComAgressiveMove ( gladstones_apemen , 52 , 25 ) ;
10580: LD_EXP 49
10584: PPUSH
10585: LD_INT 52
10587: PPUSH
10588: LD_INT 25
10590: PPUSH
10591: CALL_OW 174
// Say ( am1 , D8-FSol1-1 ) ;
10595: LD_EXP 46
10599: PPUSH
10600: LD_STRING D8-FSol1-1
10602: PPUSH
10603: CALL_OW 88
// Say ( Gladstone , D8-Glad-1 ) ;
10607: LD_EXP 45
10611: PPUSH
10612: LD_STRING D8-Glad-1
10614: PPUSH
10615: CALL_OW 88
// repeat wait ( 0 0$1 ) ;
10619: LD_INT 35
10621: PPUSH
10622: CALL_OW 67
// until UnitFilter ( gladstones_apemen , [ f_see , you ] ) ;
10626: LD_EXP 49
10630: PPUSH
10631: LD_INT 101
10633: PUSH
10634: LD_EXP 1
10638: PUSH
10639: EMPTY
10640: LIST
10641: LIST
10642: PPUSH
10643: CALL_OW 72
10647: IFFALSE 10619
// Say ( Burlak , D8-Bur-1 ) ;
10649: LD_EXP 37
10653: PPUSH
10654: LD_STRING D8-Bur-1
10656: PPUSH
10657: CALL_OW 88
// repeat wait ( 0 0$1 ) ;
10661: LD_INT 35
10663: PPUSH
10664: CALL_OW 67
// until not IsOk ( am_bunker ) ;
10668: LD_EXP 47
10672: PPUSH
10673: CALL_OW 302
10677: NOT
10678: IFFALSE 10661
// if not start_to_run then
10680: LD_EXP 18
10684: NOT
10685: IFFALSE 10699
// Say ( am1 , D8-FSol1-2a ) ;
10687: LD_EXP 46
10691: PPUSH
10692: LD_STRING D8-FSol1-2a
10694: PPUSH
10695: CALL_OW 88
// start_to_run := true ;
10699: LD_ADDR_EXP 18
10703: PUSH
10704: LD_INT 1
10706: ST_TO_ADDR
// if IsOk ( Gladstone ) then
10707: LD_EXP 45
10711: PPUSH
10712: CALL_OW 302
10716: IFFALSE 10742
// begin Say ( Gladstone , D8-Glad-2 ) ;
10718: LD_EXP 45
10722: PPUSH
10723: LD_STRING D8-Glad-2
10725: PPUSH
10726: CALL_OW 88
// Say ( Burlak , D8-Bur-2 ) ;
10730: LD_EXP 37
10734: PPUSH
10735: LD_STRING D8-Bur-2
10737: PPUSH
10738: CALL_OW 88
// end ; end ;
10742: END
// every 0 0$1 trigger it_is_your and not UnitFilter ( gladstones_apemen , [ f_ok ] ) do var i ;
10743: LD_EXP 17
10747: PUSH
10748: LD_EXP 49
10752: PPUSH
10753: LD_INT 50
10755: PUSH
10756: EMPTY
10757: LIST
10758: PPUSH
10759: CALL_OW 72
10763: NOT
10764: AND
10765: IFFALSE 10871
10767: GO 10769
10769: DISABLE
10770: LD_INT 0
10772: PPUSH
// begin if not IsOk ( Gladstone ) then
10773: LD_EXP 45
10777: PPUSH
10778: CALL_OW 302
10782: NOT
10783: IFFALSE 10787
// exit ;
10785: GO 10871
// for i := 1 to 6 do
10787: LD_ADDR_VAR 0 1
10791: PUSH
10792: DOUBLE
10793: LD_INT 1
10795: DEC
10796: ST_TO_ADDR
10797: LD_INT 6
10799: PUSH
10800: FOR_TO
10801: IFFALSE 10846
// begin if not someone_attacks_breastwork or Attacks ( am_bunker ) then
10803: CALL 10494 0 0
10807: NOT
10808: PUSH
10809: LD_EXP 47
10813: PPUSH
10814: CALL_OW 320
10818: OR
10819: IFFALSE 10837
// begin if IsOk ( am_bunker ) then
10821: LD_EXP 47
10825: PPUSH
10826: CALL_OW 302
10830: IFFALSE 10833
// enable ;
10832: ENABLE
// exit ;
10833: POP
10834: POP
10835: GO 10871
// end ; wait ( 0 0$0.5 ) ;
10837: LD_INT 18
10839: PPUSH
10840: CALL_OW 67
// end ;
10844: GO 10800
10846: POP
10847: POP
// if IsOk ( am_bunker ) then
10848: LD_EXP 47
10852: PPUSH
10853: CALL_OW 302
10857: IFFALSE 10871
// Say ( am1 , D8-FSol1-2 ) ;
10859: LD_EXP 46
10863: PPUSH
10864: LD_STRING D8-FSol1-2
10866: PPUSH
10867: CALL_OW 88
// end ;
10871: PPOPN 1
10873: END
// every 0 0$1.1 trigger start_to_run do
10874: LD_EXP 18
10878: IFFALSE 10964
10880: GO 10882
10882: DISABLE
// begin wait ( gladstones_running_idle ) ;
10883: LD_EXP 31
10887: PPUSH
10888: CALL_OW 67
// ComMoveXY ( [ Gladstone , am1 ] , 59 , 16 ) ;
10892: LD_EXP 45
10896: PUSH
10897: LD_EXP 46
10901: PUSH
10902: EMPTY
10903: LIST
10904: LIST
10905: PPUSH
10906: LD_INT 59
10908: PPUSH
10909: LD_INT 16
10911: PPUSH
10912: CALL_OW 111
// AddComMoveXY ( [ Gladstone , am1 ] , 74 , 15 ) ;
10916: LD_EXP 45
10920: PUSH
10921: LD_EXP 46
10925: PUSH
10926: EMPTY
10927: LIST
10928: LIST
10929: PPUSH
10930: LD_INT 74
10932: PPUSH
10933: LD_INT 15
10935: PPUSH
10936: CALL_OW 171
// ComMoveXY ( [ Gladstone , am1 ] , 71 , 1 ) ;
10940: LD_EXP 45
10944: PUSH
10945: LD_EXP 46
10949: PUSH
10950: EMPTY
10951: LIST
10952: LIST
10953: PPUSH
10954: LD_INT 71
10956: PPUSH
10957: LD_INT 1
10959: PPUSH
10960: CALL_OW 111
// end ; end_of_file
10964: END
// var was_info , was_end_dialog , losses ; export apeman_killed , radio_dropped , radio_x , radio_y ; function evaluate_escapes ; begin
10965: LD_INT 0
10967: PPUSH
// if gladstone_escaped and soldier_escaped then
10968: LD_EXP 9
10972: PUSH
10973: LD_EXP 10
10977: AND
10978: IFFALSE 10994
// Say ( Burlak , D9-Bur-1c ) else
10980: LD_EXP 37
10984: PPUSH
10985: LD_STRING D9-Bur-1c
10987: PPUSH
10988: CALL_OW 88
10992: GO 11097
// if soldier_escaped and not IsOk ( Gladstone ) then
10994: LD_EXP 10
10998: PUSH
10999: LD_EXP 45
11003: PPUSH
11004: CALL_OW 302
11008: NOT
11009: AND
11010: IFFALSE 11026
// Say ( Burlak , D9-Bur-1b ) else
11012: LD_EXP 37
11016: PPUSH
11017: LD_STRING D9-Bur-1b
11019: PPUSH
11020: CALL_OW 88
11024: GO 11097
// if gladstone_escaped and not IsOk ( am1 ) then
11026: LD_EXP 9
11030: PUSH
11031: LD_EXP 46
11035: PPUSH
11036: CALL_OW 302
11040: NOT
11041: AND
11042: IFFALSE 11058
// Say ( Burlak , D9-Bur-1a ) else
11044: LD_EXP 37
11048: PPUSH
11049: LD_STRING D9-Bur-1a
11051: PPUSH
11052: CALL_OW 88
11056: GO 11097
// if not IsOk ( am1 ) and not IsOk ( Gladstone ) then
11058: LD_EXP 46
11062: PPUSH
11063: CALL_OW 302
11067: NOT
11068: PUSH
11069: LD_EXP 45
11073: PPUSH
11074: CALL_OW 302
11078: NOT
11079: AND
11080: IFFALSE 11096
// Say ( Burlak , D9-Bur-1 ) else
11082: LD_EXP 37
11086: PPUSH
11087: LD_STRING D9-Bur-1
11089: PPUSH
11090: CALL_OW 88
11094: GO 11097
// enable ;
11096: ENABLE
// end ;
11097: LD_VAR 0 1
11101: RET
// every 0 0$1 trigger IsInArea ( Gladstone , AmEsc ) do
11102: LD_EXP 45
11106: PPUSH
11107: LD_INT 7
11109: PPUSH
11110: CALL_OW 308
11114: IFFALSE 11154
11116: GO 11118
11118: DISABLE
// begin if not IsOk ( Gladstone ) then
11119: LD_EXP 45
11123: PPUSH
11124: CALL_OW 302
11128: NOT
11129: IFFALSE 11133
// exit ;
11131: GO 11154
// RemoveUnit ( Gladstone ) ;
11133: LD_EXP 45
11137: PPUSH
11138: CALL_OW 64
// gladstone_escaped := true ;
11142: LD_ADDR_EXP 9
11146: PUSH
11147: LD_INT 1
11149: ST_TO_ADDR
// evaluate_escapes ;
11150: CALL 10965 0 0
// end ;
11154: END
// every 0 0$1 + 0 0$0.5 trigger IsInArea ( am1 , AmEsc ) do
11155: LD_EXP 46
11159: PPUSH
11160: LD_INT 7
11162: PPUSH
11163: CALL_OW 308
11167: IFFALSE 11207
11169: GO 11171
11171: DISABLE
// begin if not IsOk ( am1 ) then
11172: LD_EXP 46
11176: PPUSH
11177: CALL_OW 302
11181: NOT
11182: IFFALSE 11186
// exit ;
11184: GO 11207
// RemoveUnit ( am1 ) ;
11186: LD_EXP 46
11190: PPUSH
11191: CALL_OW 64
// soldier_escaped := true ;
11195: LD_ADDR_EXP 10
11199: PUSH
11200: LD_INT 1
11202: ST_TO_ADDR
// evaluate_escapes ;
11203: CALL 10965 0 0
// end ;
11207: END
// on UnitGoesToRed ( un ) do begin if un = Burlak then
11208: LD_VAR 0 1
11212: PUSH
11213: LD_EXP 37
11217: EQUAL
11218: IFFALSE 11246
// begin ExclusiveOn ;
11220: CALL_OW 4
// Wait ( 0 0$5 ) ;
11224: LD_INT 175
11226: PPUSH
11227: CALL_OW 67
// YouLost ( Burlak ) ;
11231: LD_STRING Burlak
11233: PPUSH
11234: CALL_OW 104
// ExclusiveOff ;
11238: CALL_OW 5
// exit ;
11242: GO 11472
// end else
11244: GO 11472
// if ( ( un = Gladstone ) or ( un = am1 ) ) and start_to_run then
11246: LD_VAR 0 1
11250: PUSH
11251: LD_EXP 45
11255: EQUAL
11256: PUSH
11257: LD_VAR 0 1
11261: PUSH
11262: LD_EXP 46
11266: EQUAL
11267: OR
11268: PUSH
11269: LD_EXP 18
11273: AND
11274: IFFALSE 11282
// evaluate_escapes else
11276: CALL 10965 0 0
11280: GO 11472
// if ( un = Gladstone ) and not start_to_run then
11282: LD_VAR 0 1
11286: PUSH
11287: LD_EXP 45
11291: EQUAL
11292: PUSH
11293: LD_EXP 18
11297: NOT
11298: AND
11299: IFFALSE 11311
// begin start_to_run := true ;
11301: LD_ADDR_EXP 18
11305: PUSH
11306: LD_INT 1
11308: ST_TO_ADDR
// end else
11309: GO 11472
// if un = am_bunker then
11311: LD_VAR 0 1
11315: PUSH
11316: LD_EXP 47
11320: EQUAL
11321: IFFALSE 11348
// begin if IsOk ( Pokryshkin ) then
11323: LD_EXP 38
11327: PPUSH
11328: CALL_OW 302
11332: IFFALSE 11346
// SetLives ( Pokryshkin , 240 ) ;
11334: LD_EXP 38
11338: PPUSH
11339: LD_INT 240
11341: PPUSH
11342: CALL_OW 234
// end else
11346: GO 11472
// if un in wild_apemen then
11348: LD_VAR 0 1
11352: PUSH
11353: LD_EXP 48
11357: IN
11358: IFFALSE 11472
// begin if not radio_dropped and ( un = wild_apemen [ 1 ] ) then
11360: LD_EXP 53
11364: NOT
11365: PUSH
11366: LD_VAR 0 1
11370: PUSH
11371: LD_EXP 48
11375: PUSH
11376: LD_INT 1
11378: ARRAY
11379: EQUAL
11380: AND
11381: IFFALSE 11421
// begin radio_dropped := true ;
11383: LD_ADDR_EXP 53
11387: PUSH
11388: LD_INT 1
11390: ST_TO_ADDR
// radio_x := GetX ( un ) ;
11391: LD_ADDR_EXP 54
11395: PUSH
11396: LD_VAR 0 1
11400: PPUSH
11401: CALL_OW 250
11405: ST_TO_ADDR
// radio_y := GetY ( un ) ;
11406: LD_ADDR_EXP 55
11410: PUSH
11411: LD_VAR 0 1
11415: PPUSH
11416: CALL_OW 251
11420: ST_TO_ADDR
// end ; apeman_killed := true ;
11421: LD_ADDR_EXP 52
11425: PUSH
11426: LD_INT 1
11428: ST_TO_ADDR
// if pokryshkin_met then
11429: LD_EXP 5
11433: IFFALSE 11445
// soldiers_killed_apeman := true else
11435: LD_ADDR_EXP 23
11439: PUSH
11440: LD_INT 1
11442: ST_TO_ADDR
11443: GO 11453
// burlak_killed_apeman := true ;
11445: LD_ADDR_EXP 22
11449: PUSH
11450: LD_INT 1
11452: ST_TO_ADDR
// wild_apemen := wild_apemen diff un ;
11453: LD_ADDR_EXP 48
11457: PUSH
11458: LD_EXP 48
11462: PUSH
11463: LD_VAR 0 1
11467: DIFF
11468: ST_TO_ADDR
// disable ( 11 ) ;
11469: LD_INT 11
11471: DISABLE_MARKED
// end ; end ;
11472: PPOPN 1
11474: END
// on UnitDestroyed ( un ) do begin if un = Kirilenkova and GetSide ( un ) = 6 then
11475: LD_VAR 0 1
11479: PUSH
11480: LD_EXP 41
11484: EQUAL
11485: PUSH
11486: LD_VAR 0 1
11490: PPUSH
11491: CALL_OW 255
11495: PUSH
11496: LD_INT 6
11498: EQUAL
11499: AND
11500: IFFALSE 11506
// SA_FeedApe ;
11502: CALL 12476 0 0
// if GetSide ( un ) = you and un <> pokryshkin then
11506: LD_VAR 0 1
11510: PPUSH
11511: CALL_OW 255
11515: PUSH
11516: LD_EXP 1
11520: EQUAL
11521: PUSH
11522: LD_VAR 0 1
11526: PUSH
11527: LD_EXP 38
11531: NONEQUAL
11532: AND
11533: IFFALSE 11543
// losses := true ;
11535: LD_ADDR_LOC 7
11539: PUSH
11540: LD_INT 1
11542: ST_TO_ADDR
// end ;
11543: PPOPN 1
11545: END
// every 0 0$1 + 0 0$0.45 trigger IsInArea ( Burlak , ExitArea ) marked 666 do var posible ;
11546: LD_EXP 37
11550: PPUSH
11551: LD_INT 1
11553: PPUSH
11554: CALL_OW 308
11558: IFFALSE 11892
11560: GO 11562
11562: DISABLE
11563: LD_INT 0
11565: PPUSH
// begin if FilterAllUnits ( [ [ f_side , you ] , [ f_ok ] ] ) diff FilterUnitsInArea ( BigExit , [ [ f_side , you ] , [ f_ok ] ] ) then
11566: LD_INT 22
11568: PUSH
11569: LD_EXP 1
11573: PUSH
11574: EMPTY
11575: LIST
11576: LIST
11577: PUSH
11578: LD_INT 50
11580: PUSH
11581: EMPTY
11582: LIST
11583: PUSH
11584: EMPTY
11585: LIST
11586: LIST
11587: PPUSH
11588: CALL_OW 69
11592: PUSH
11593: LD_INT 9
11595: PPUSH
11596: LD_INT 22
11598: PUSH
11599: LD_EXP 1
11603: PUSH
11604: EMPTY
11605: LIST
11606: LIST
11607: PUSH
11608: LD_INT 50
11610: PUSH
11611: EMPTY
11612: LIST
11613: PUSH
11614: EMPTY
11615: LIST
11616: LIST
11617: PPUSH
11618: CALL_OW 70
11622: DIFF
11623: IFFALSE 11652
// begin if not was_info then
11625: LD_LOC 5
11629: NOT
11630: IFFALSE 11639
// Query ( QExit1 ) ;
11632: LD_STRING QExit1
11634: PPUSH
11635: CALL_OW 97
// was_info := true ;
11639: LD_ADDR_LOC 5
11643: PUSH
11644: LD_INT 1
11646: ST_TO_ADDR
// enable ;
11647: ENABLE
// exit ;
11648: GO 11892
// end else
11650: GO 11892
// begin if not was_end_dialog then
11652: LD_LOC 6
11656: NOT
11657: IFFALSE 11797
// begin if IsOk ( Belkov ) then
11659: LD_EXP 39
11663: PPUSH
11664: CALL_OW 302
11668: IFFALSE 11684
// Say ( Belkov , D12-Bel-1 ) else
11670: LD_EXP 39
11674: PPUSH
11675: LD_STRING D12-Bel-1
11677: PPUSH
11678: CALL_OW 88
11682: GO 11749
// begin posible := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] , [ f_ok ] ] ) ;
11684: LD_ADDR_VAR 0 1
11688: PUSH
11689: LD_INT 22
11691: PUSH
11692: LD_EXP 1
11696: PUSH
11697: EMPTY
11698: LIST
11699: LIST
11700: PUSH
11701: LD_INT 26
11703: PUSH
11704: LD_INT 1
11706: PUSH
11707: EMPTY
11708: LIST
11709: LIST
11710: PUSH
11711: LD_INT 50
11713: PUSH
11714: EMPTY
11715: LIST
11716: PUSH
11717: EMPTY
11718: LIST
11719: LIST
11720: LIST
11721: PPUSH
11722: CALL_OW 69
11726: ST_TO_ADDR
// if posible then
11727: LD_VAR 0 1
11731: IFFALSE 11749
// Say ( posible [ 1 ] , D12-RSol1-1 ) ;
11733: LD_VAR 0 1
11737: PUSH
11738: LD_INT 1
11740: ARRAY
11741: PPUSH
11742: LD_STRING D12-RSol1-1
11744: PPUSH
11745: CALL_OW 88
// end ; if not gnyevko_met and radio_found then
11749: LD_EXP 6
11753: NOT
11754: PUSH
11755: LD_EXP 21
11759: AND
11760: IFFALSE 11797
// begin Say ( Burlak , D12-Bur-1 ) ;
11762: LD_EXP 37
11766: PPUSH
11767: LD_STRING D12-Bur-1
11769: PPUSH
11770: CALL_OW 88
// if IsOk ( Belkov ) then
11774: LD_EXP 39
11778: PPUSH
11779: CALL_OW 302
11783: IFFALSE 11797
// Say ( Belkov , D12-Bel-2 ) ;
11785: LD_EXP 39
11789: PPUSH
11790: LD_STRING D12-Bel-2
11792: PPUSH
11793: CALL_OW 88
// end ; end ; was_end_dialog := true ;
11797: LD_ADDR_LOC 6
11801: PUSH
11802: LD_INT 1
11804: ST_TO_ADDR
// if not gnyevko_met then
11805: LD_EXP 6
11809: NOT
11810: IFFALSE 11888
// if Query ( QExit2 ) = 1 then
11812: LD_STRING QExit2
11814: PPUSH
11815: CALL_OW 97
11819: PUSH
11820: LD_INT 1
11822: EQUAL
11823: IFFALSE 11831
// mission_ends else
11825: CALL 11895 0 0
11829: GO 11886
// begin end_the_mission_allowed := true ;
11831: LD_ADDR_OWVAR 57
11835: PUSH
11836: LD_INT 1
11838: ST_TO_ADDR
// repeat wait ( 0 0$2 ) ;
11839: LD_INT 70
11841: PPUSH
11842: CALL_OW 67
// until FilterUnitsExceptArea ( BigExit , [ [ f_side , you ] , [ f_ok ] ] ) ;
11846: LD_INT 9
11848: PPUSH
11849: LD_INT 22
11851: PUSH
11852: LD_EXP 1
11856: PUSH
11857: EMPTY
11858: LIST
11859: LIST
11860: PUSH
11861: LD_INT 50
11863: PUSH
11864: EMPTY
11865: LIST
11866: PUSH
11867: EMPTY
11868: LIST
11869: LIST
11870: PPUSH
11871: CALL_OW 71
11875: IFFALSE 11839
// end_the_mission_allowed := false ;
11877: LD_ADDR_OWVAR 57
11881: PUSH
11882: LD_INT 0
11884: ST_TO_ADDR
// enable ;
11885: ENABLE
// end else
11886: GO 11892
// mission_ends ;
11888: CALL 11895 0 0
// end ; end ;
11892: PPOPN 1
11894: END
// function mission_ends ; var gn , kir , medal1 , medal2 , medal3 ; begin
11895: LD_INT 0
11897: PPUSH
11898: PPUSH
11899: PPUSH
11900: PPUSH
11901: PPUSH
11902: PPUSH
// wait ( 0 0$1 ) ;
11903: LD_INT 35
11905: PPUSH
11906: CALL_OW 67
// medal1 := ( 1 - ( gladstone_escaped or soldier_escaped ) - soldier_escaped * 2 - gladstone_escaped ) > 0 ;
11910: LD_ADDR_VAR 0 4
11914: PUSH
11915: LD_INT 1
11917: PUSH
11918: LD_EXP 9
11922: PUSH
11923: LD_EXP 10
11927: OR
11928: MINUS
11929: PUSH
11930: LD_EXP 10
11934: PUSH
11935: LD_INT 2
11937: MUL
11938: MINUS
11939: PUSH
11940: LD_EXP 9
11944: MINUS
11945: PUSH
11946: LD_INT 0
11948: GREATER
11949: ST_TO_ADDR
// medal2 := ( 1 - 3 * ( not IsOk ( Gnyevko ) or not IsOk ( Kirilenkova ) ) - ( not IsOk ( Gnyevko ) and not IsOk ( Kirilenkova ) ) ) > 0 ;
11950: LD_ADDR_VAR 0 5
11954: PUSH
11955: LD_INT 1
11957: PUSH
11958: LD_INT 3
11960: PUSH
11961: LD_EXP 40
11965: PPUSH
11966: CALL_OW 302
11970: NOT
11971: PUSH
11972: LD_EXP 41
11976: PPUSH
11977: CALL_OW 302
11981: NOT
11982: OR
11983: MUL
11984: MINUS
11985: PUSH
11986: LD_EXP 40
11990: PPUSH
11991: CALL_OW 302
11995: NOT
11996: PUSH
11997: LD_EXP 41
12001: PPUSH
12002: CALL_OW 302
12006: NOT
12007: AND
12008: MINUS
12009: PUSH
12010: LD_INT 0
12012: GREATER
12013: ST_TO_ADDR
// medal3 := ( not losses ) ;
12014: LD_ADDR_VAR 0 6
12018: PUSH
12019: LD_LOC 7
12023: NOT
12024: ST_TO_ADDR
// SA_EndMission ( 3 , 1 , medal1 , medal2 , medal3 ) ;
12025: LD_INT 3
12027: PPUSH
12028: LD_INT 1
12030: PPUSH
12031: LD_VAR 0 4
12035: PPUSH
12036: LD_VAR 0 5
12040: PPUSH
12041: LD_VAR 0 6
12045: PPUSH
12046: CALL 12506 0 5
// AddMedal ( NoEscape , 1 - ( gladstone_escaped or soldier_escaped ) - soldier_escaped * 2 - gladstone_escaped ) ;
12050: LD_STRING NoEscape
12052: PPUSH
12053: LD_INT 1
12055: PUSH
12056: LD_EXP 9
12060: PUSH
12061: LD_EXP 10
12065: OR
12066: MINUS
12067: PUSH
12068: LD_EXP 10
12072: PUSH
12073: LD_INT 2
12075: MUL
12076: MINUS
12077: PUSH
12078: LD_EXP 9
12082: MINUS
12083: PPUSH
12084: CALL_OW 101
// if GetSide ( Gnyevko ) <> you then
12088: LD_EXP 40
12092: PPUSH
12093: CALL_OW 255
12097: PUSH
12098: LD_EXP 1
12102: NONEQUAL
12103: IFFALSE 12117
// SetLives ( Gnyevko , 0 ) ;
12105: LD_EXP 40
12109: PPUSH
12110: LD_INT 0
12112: PPUSH
12113: CALL_OW 234
// if GetSide ( Kirilenkova ) <> you then
12117: LD_EXP 41
12121: PPUSH
12122: CALL_OW 255
12126: PUSH
12127: LD_EXP 1
12131: NONEQUAL
12132: IFFALSE 12146
// SetLives ( Kirilenkova , 0 ) ;
12134: LD_EXP 41
12138: PPUSH
12139: LD_INT 0
12141: PPUSH
12142: CALL_OW 234
// AddMedal ( Gnyevko , 1 - 3 * ( not IsOk ( Gnyevko ) or not IsOk ( Kirilenkova ) ) - ( not IsOk ( Gnyevko ) and not IsOk ( Kirilenkova ) ) ) ;
12146: LD_STRING Gnyevko
12148: PPUSH
12149: LD_INT 1
12151: PUSH
12152: LD_INT 3
12154: PUSH
12155: LD_EXP 40
12159: PPUSH
12160: CALL_OW 302
12164: NOT
12165: PUSH
12166: LD_EXP 41
12170: PPUSH
12171: CALL_OW 302
12175: NOT
12176: OR
12177: MUL
12178: MINUS
12179: PUSH
12180: LD_EXP 40
12184: PPUSH
12185: CALL_OW 302
12189: NOT
12190: PUSH
12191: LD_EXP 41
12195: PPUSH
12196: CALL_OW 302
12200: NOT
12201: AND
12202: MINUS
12203: PPUSH
12204: CALL_OW 101
// AddMedal ( NoLosses , not losses ) ;
12208: LD_STRING NoLosses
12210: PPUSH
12211: LD_LOC 7
12215: NOT
12216: PPUSH
12217: CALL_OW 101
// GiveMedals ( Main ) ;
12221: LD_STRING Main
12223: PPUSH
12224: CALL_OW 102
// if IsOk ( Gnyevko ) and ( GetSide ( Gnyevko ) = you ) then
12228: LD_EXP 40
12232: PPUSH
12233: CALL_OW 302
12237: PUSH
12238: LD_EXP 40
12242: PPUSH
12243: CALL_OW 255
12247: PUSH
12248: LD_EXP 1
12252: EQUAL
12253: AND
12254: IFFALSE 12275
// your_units := your_units union [ Gnyevko ] ;
12256: LD_ADDR_EXP 51
12260: PUSH
12261: LD_EXP 51
12265: PUSH
12266: LD_EXP 40
12270: PUSH
12271: EMPTY
12272: LIST
12273: UNION
12274: ST_TO_ADDR
// if IsOk ( Kirilenkova ) and ( GetSide ( Kirilenkova ) = you ) then
12275: LD_EXP 41
12279: PPUSH
12280: CALL_OW 302
12284: PUSH
12285: LD_EXP 41
12289: PPUSH
12290: CALL_OW 255
12294: PUSH
12295: LD_EXP 1
12299: EQUAL
12300: AND
12301: IFFALSE 12322
// your_units := your_units union [ Kirilenkova ] ;
12303: LD_ADDR_EXP 51
12307: PUSH
12308: LD_EXP 51
12312: PUSH
12313: LD_EXP 41
12317: PUSH
12318: EMPTY
12319: LIST
12320: UNION
12321: ST_TO_ADDR
// RewardPeople ( your_units ) ;
12322: LD_EXP 51
12326: PPUSH
12327: CALL_OW 43
// SaveCharacters ( Burlak , Burlak ) ;
12331: LD_EXP 37
12335: PPUSH
12336: LD_STRING Burlak
12338: PPUSH
12339: CALL_OW 38
// SaveCharacters ( Gnyevko , Gnyevko ) ;
12343: LD_EXP 40
12347: PPUSH
12348: LD_STRING Gnyevko
12350: PPUSH
12351: CALL_OW 38
// SaveCharacters ( Kirilenkova , Kirilenkova ) ;
12355: LD_EXP 41
12359: PPUSH
12360: LD_STRING Kirilenkova
12362: PPUSH
12363: CALL_OW 38
// SaveCharacters ( Belkov , Belkov ) ;
12367: LD_EXP 39
12371: PPUSH
12372: LD_STRING Belkov
12374: PPUSH
12375: CALL_OW 38
// SaveCharacters ( Pokryshkin , Pokryshkin ) ;
12379: LD_EXP 38
12383: PPUSH
12384: LD_STRING Pokryshkin
12386: PPUSH
12387: CALL_OW 38
// SaveCharacters ( your_units diff [ Burlak , Gnyevko , Kirilenkova , Belkov , Pokryshkin , 0 ] , survivors1 ) ;
12391: LD_EXP 51
12395: PUSH
12396: LD_EXP 37
12400: PUSH
12401: LD_EXP 40
12405: PUSH
12406: LD_EXP 41
12410: PUSH
12411: LD_EXP 39
12415: PUSH
12416: LD_EXP 38
12420: PUSH
12421: LD_INT 0
12423: PUSH
12424: EMPTY
12425: LIST
12426: LIST
12427: LIST
12428: LIST
12429: LIST
12430: LIST
12431: DIFF
12432: PPUSH
12433: LD_STRING survivors1
12435: PPUSH
12436: CALL_OW 38
// SaveCharacters ( Gladstone , Gladstone ) ;
12440: LD_EXP 45
12444: PPUSH
12445: LD_STRING Gladstone
12447: PPUSH
12448: CALL_OW 38
// YouWin ;
12452: CALL_OW 103
// end ; end_of_file
12456: LD_VAR 0 1
12460: RET
// export function SA_KillApeBeforeKirilenkova ; begin
12461: LD_INT 0
12463: PPUSH
// SetAchievement ( ACH_PAV ) ;
12464: LD_STRING ACH_PAV
12466: PPUSH
12467: CALL_OW 543
// end ;
12471: LD_VAR 0 1
12475: RET
// export function SA_FeedApe ; begin
12476: LD_INT 0
12478: PPUSH
// SetAchievement ( ACH_FTA ) ;
12479: LD_STRING ACH_FTA
12481: PPUSH
12482: CALL_OW 543
// end ;
12486: LD_VAR 0 1
12490: RET
// export function SA_SaveGnievkoAfterAll ; begin
12491: LD_INT 0
12493: PPUSH
// SetAchievement ( ACH_OHI ) ;
12494: LD_STRING ACH_OHI
12496: PPUSH
12497: CALL_OW 543
// end ; end_of_file
12501: LD_VAR 0 1
12505: RET
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
12506: LD_INT 0
12508: PPUSH
12509: PPUSH
// if not missionNumber then
12510: LD_VAR 0 2
12514: NOT
12515: IFFALSE 12519
// exit ;
12517: GO 12649
// achiv := false ;
12519: LD_ADDR_VAR 0 7
12523: PUSH
12524: LD_INT 0
12526: ST_TO_ADDR
// case campaignNumber of 1 :
12527: LD_VAR 0 1
12531: PUSH
12532: LD_INT 1
12534: DOUBLE
12535: EQUAL
12536: IFTRUE 12540
12538: GO 12551
12540: POP
// achiv := ACH_GOTA ; 2 :
12541: LD_ADDR_VAR 0 7
12545: PUSH
12546: LD_STRING ACH_GOTA
12548: ST_TO_ADDR
12549: GO 12601
12551: LD_INT 2
12553: DOUBLE
12554: EQUAL
12555: IFTRUE 12559
12557: GO 12562
12559: POP
// ; 3 :
12560: GO 12601
12562: LD_INT 3
12564: DOUBLE
12565: EQUAL
12566: IFTRUE 12570
12568: GO 12581
12570: POP
// achiv := ACH_MOTSU ; 4 :
12571: LD_ADDR_VAR 0 7
12575: PUSH
12576: LD_STRING ACH_MOTSU
12578: ST_TO_ADDR
12579: GO 12601
12581: LD_INT 4
12583: DOUBLE
12584: EQUAL
12585: IFTRUE 12589
12587: GO 12600
12589: POP
// achiv := ACH_LOP ; end ;
12590: LD_ADDR_VAR 0 7
12594: PUSH
12595: LD_STRING ACH_LOP
12597: ST_TO_ADDR
12598: GO 12601
12600: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
12601: LD_OWVAR 67
12605: PUSH
12606: LD_INT 3
12608: EQUAL
12609: PUSH
12610: LD_VAR 0 7
12614: AND
12615: PUSH
12616: LD_VAR 0 3
12620: AND
12621: PUSH
12622: LD_VAR 0 4
12626: AND
12627: PUSH
12628: LD_VAR 0 5
12632: AND
12633: IFFALSE 12649
// SetAchievementEX ( achiv , missionNumber ) ;
12635: LD_VAR 0 7
12639: PPUSH
12640: LD_VAR 0 2
12644: PPUSH
12645: CALL_OW 564
// end ;
12649: LD_VAR 0 6
12653: RET
// export function SA_BehemothConstructed ; begin
12654: LD_INT 0
12656: PPUSH
// SetAchievement ( ACH_SMC ) ;
12657: LD_STRING ACH_SMC
12659: PPUSH
12660: CALL_OW 543
// end ;
12664: LD_VAR 0 1
12668: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
12669: LD_VAR 0 2
12673: PUSH
12674: LD_INT 1
12676: DOUBLE
12677: EQUAL
12678: IFTRUE 12682
12680: GO 12689
12682: POP
// HackUnlimitedResources ; 2 :
12683: CALL 12873 0 0
12687: GO 12870
12689: LD_INT 2
12691: DOUBLE
12692: EQUAL
12693: IFTRUE 12697
12695: GO 12704
12697: POP
// HackSetLevel10 ; 3 :
12698: CALL 13006 0 0
12702: GO 12870
12704: LD_INT 3
12706: DOUBLE
12707: EQUAL
12708: IFTRUE 12712
12710: GO 12719
12712: POP
// HackSetLevel10YourUnits ; 4 :
12713: CALL 13091 0 0
12717: GO 12870
12719: LD_INT 4
12721: DOUBLE
12722: EQUAL
12723: IFTRUE 12727
12725: GO 12749
12727: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
12728: LD_VAR 0 3
12732: PPUSH
12733: LD_VAR 0 4
12737: PPUSH
12738: LD_VAR 0 5
12742: PPUSH
12743: CALL 13181 0 3
12747: GO 12870
12749: LD_INT 5
12751: DOUBLE
12752: EQUAL
12753: IFTRUE 12757
12755: GO 12764
12757: POP
// HackSpawnVehicle ; 6 :
12758: CALL 13242 0 0
12762: GO 12870
12764: LD_INT 6
12766: DOUBLE
12767: EQUAL
12768: IFTRUE 12772
12770: GO 12779
12772: POP
// HackInvincible ; 7 :
12773: CALL 13788 0 0
12777: GO 12870
12779: LD_INT 7
12781: DOUBLE
12782: EQUAL
12783: IFTRUE 12787
12785: GO 12794
12787: POP
// HackInvisible ; 8 :
12788: CALL 13899 0 0
12792: GO 12870
12794: LD_INT 8
12796: DOUBLE
12797: EQUAL
12798: IFTRUE 12802
12800: GO 12809
12802: POP
// HackChangeYourSide ; 9 :
12803: CALL 13956 0 0
12807: GO 12870
12809: LD_INT 9
12811: DOUBLE
12812: EQUAL
12813: IFTRUE 12817
12815: GO 12824
12817: POP
// HackChangeUnitSide ; 10 :
12818: CALL 13998 0 0
12822: GO 12870
12824: LD_INT 10
12826: DOUBLE
12827: EQUAL
12828: IFTRUE 12832
12830: GO 12839
12832: POP
// HackFog ; 11 :
12833: CALL 14099 0 0
12837: GO 12870
12839: LD_INT 11
12841: DOUBLE
12842: EQUAL
12843: IFTRUE 12847
12845: GO 12854
12847: POP
// HackApeman ; 12 :
12848: CALL 14114 0 0
12852: GO 12870
12854: LD_INT 12
12856: DOUBLE
12857: EQUAL
12858: IFTRUE 12862
12860: GO 12869
12862: POP
// HackBoom ; end ;
12863: CALL 14199 0 0
12867: GO 12870
12869: POP
// end ;
12870: PPOPN 6
12872: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
12873: LD_INT 0
12875: PPUSH
12876: PPUSH
12877: PPUSH
12878: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
12879: LD_ADDR_VAR 0 4
12883: PUSH
12884: LD_INT 22
12886: PUSH
12887: LD_OWVAR 2
12891: PUSH
12892: EMPTY
12893: LIST
12894: LIST
12895: PUSH
12896: LD_INT 2
12898: PUSH
12899: LD_INT 30
12901: PUSH
12902: LD_INT 0
12904: PUSH
12905: EMPTY
12906: LIST
12907: LIST
12908: PUSH
12909: LD_INT 30
12911: PUSH
12912: LD_INT 1
12914: PUSH
12915: EMPTY
12916: LIST
12917: LIST
12918: PUSH
12919: EMPTY
12920: LIST
12921: LIST
12922: LIST
12923: PUSH
12924: EMPTY
12925: LIST
12926: LIST
12927: PPUSH
12928: CALL_OW 69
12932: ST_TO_ADDR
// if not tmp then
12933: LD_VAR 0 4
12937: NOT
12938: IFFALSE 12942
// exit ;
12940: GO 13001
// for i in tmp do
12942: LD_ADDR_VAR 0 2
12946: PUSH
12947: LD_VAR 0 4
12951: PUSH
12952: FOR_IN
12953: IFFALSE 12999
// for j = 1 to 3 do
12955: LD_ADDR_VAR 0 3
12959: PUSH
12960: DOUBLE
12961: LD_INT 1
12963: DEC
12964: ST_TO_ADDR
12965: LD_INT 3
12967: PUSH
12968: FOR_TO
12969: IFFALSE 12995
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
12971: LD_VAR 0 2
12975: PPUSH
12976: CALL_OW 274
12980: PPUSH
12981: LD_VAR 0 3
12985: PPUSH
12986: LD_INT 99999
12988: PPUSH
12989: CALL_OW 277
12993: GO 12968
12995: POP
12996: POP
12997: GO 12952
12999: POP
13000: POP
// end ;
13001: LD_VAR 0 1
13005: RET
// export function HackSetLevel10 ; var i , j ; begin
13006: LD_INT 0
13008: PPUSH
13009: PPUSH
13010: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
13011: LD_ADDR_VAR 0 2
13015: PUSH
13016: LD_INT 21
13018: PUSH
13019: LD_INT 1
13021: PUSH
13022: EMPTY
13023: LIST
13024: LIST
13025: PPUSH
13026: CALL_OW 69
13030: PUSH
13031: FOR_IN
13032: IFFALSE 13084
// if IsSelected ( i ) then
13034: LD_VAR 0 2
13038: PPUSH
13039: CALL_OW 306
13043: IFFALSE 13082
// begin for j := 1 to 4 do
13045: LD_ADDR_VAR 0 3
13049: PUSH
13050: DOUBLE
13051: LD_INT 1
13053: DEC
13054: ST_TO_ADDR
13055: LD_INT 4
13057: PUSH
13058: FOR_TO
13059: IFFALSE 13080
// SetSkill ( i , j , 10 ) ;
13061: LD_VAR 0 2
13065: PPUSH
13066: LD_VAR 0 3
13070: PPUSH
13071: LD_INT 10
13073: PPUSH
13074: CALL_OW 237
13078: GO 13058
13080: POP
13081: POP
// end ;
13082: GO 13031
13084: POP
13085: POP
// end ;
13086: LD_VAR 0 1
13090: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
13091: LD_INT 0
13093: PPUSH
13094: PPUSH
13095: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
13096: LD_ADDR_VAR 0 2
13100: PUSH
13101: LD_INT 22
13103: PUSH
13104: LD_OWVAR 2
13108: PUSH
13109: EMPTY
13110: LIST
13111: LIST
13112: PUSH
13113: LD_INT 21
13115: PUSH
13116: LD_INT 1
13118: PUSH
13119: EMPTY
13120: LIST
13121: LIST
13122: PUSH
13123: EMPTY
13124: LIST
13125: LIST
13126: PPUSH
13127: CALL_OW 69
13131: PUSH
13132: FOR_IN
13133: IFFALSE 13174
// begin for j := 1 to 4 do
13135: LD_ADDR_VAR 0 3
13139: PUSH
13140: DOUBLE
13141: LD_INT 1
13143: DEC
13144: ST_TO_ADDR
13145: LD_INT 4
13147: PUSH
13148: FOR_TO
13149: IFFALSE 13170
// SetSkill ( i , j , 10 ) ;
13151: LD_VAR 0 2
13155: PPUSH
13156: LD_VAR 0 3
13160: PPUSH
13161: LD_INT 10
13163: PPUSH
13164: CALL_OW 237
13168: GO 13148
13170: POP
13171: POP
// end ;
13172: GO 13132
13174: POP
13175: POP
// end ;
13176: LD_VAR 0 1
13180: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
13181: LD_INT 0
13183: PPUSH
// uc_side := your_side ;
13184: LD_ADDR_OWVAR 20
13188: PUSH
13189: LD_OWVAR 2
13193: ST_TO_ADDR
// uc_nation := nation ;
13194: LD_ADDR_OWVAR 21
13198: PUSH
13199: LD_VAR 0 1
13203: ST_TO_ADDR
// InitHc ;
13204: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
13208: LD_INT 0
13210: PPUSH
13211: LD_VAR 0 2
13215: PPUSH
13216: LD_VAR 0 3
13220: PPUSH
13221: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
13225: CALL_OW 44
13229: PPUSH
13230: LD_INT 1
13232: PPUSH
13233: CALL_OW 51
// end ;
13237: LD_VAR 0 4
13241: RET
// export function HackSpawnVehicle ; begin
13242: LD_INT 0
13244: PPUSH
// uc_side := your_side ;
13245: LD_ADDR_OWVAR 20
13249: PUSH
13250: LD_OWVAR 2
13254: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
13255: LD_ADDR_OWVAR 21
13259: PUSH
13260: LD_INT 1
13262: PPUSH
13263: LD_INT 3
13265: PPUSH
13266: CALL_OW 12
13270: ST_TO_ADDR
// InitVc ;
13271: CALL_OW 20
// case uc_nation of 1 :
13275: LD_OWVAR 21
13279: PUSH
13280: LD_INT 1
13282: DOUBLE
13283: EQUAL
13284: IFTRUE 13288
13286: GO 13432
13288: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
13289: LD_ADDR_OWVAR 37
13293: PUSH
13294: LD_INT 1
13296: PUSH
13297: LD_INT 2
13299: PUSH
13300: LD_INT 3
13302: PUSH
13303: LD_INT 4
13305: PUSH
13306: LD_INT 5
13308: PUSH
13309: EMPTY
13310: LIST
13311: LIST
13312: LIST
13313: LIST
13314: LIST
13315: PUSH
13316: LD_INT 1
13318: PPUSH
13319: LD_INT 5
13321: PPUSH
13322: CALL_OW 12
13326: ARRAY
13327: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
13328: LD_ADDR_OWVAR 39
13332: PUSH
13333: LD_INT 1
13335: PPUSH
13336: LD_INT 3
13338: PPUSH
13339: CALL_OW 12
13343: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
13344: LD_ADDR_OWVAR 38
13348: PUSH
13349: LD_INT 1
13351: PUSH
13352: LD_INT 2
13354: PUSH
13355: LD_INT 3
13357: PUSH
13358: EMPTY
13359: LIST
13360: LIST
13361: LIST
13362: PUSH
13363: LD_INT 1
13365: PPUSH
13366: LD_INT 3
13368: PPUSH
13369: CALL_OW 12
13373: ARRAY
13374: 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 ) ] ;
13375: LD_ADDR_OWVAR 40
13379: PUSH
13380: LD_INT 2
13382: PUSH
13383: LD_INT 4
13385: PUSH
13386: LD_INT 5
13388: PUSH
13389: LD_INT 3
13391: PUSH
13392: LD_INT 7
13394: PUSH
13395: LD_INT 8
13397: PUSH
13398: LD_INT 9
13400: PUSH
13401: LD_INT 10
13403: PUSH
13404: LD_INT 6
13406: PUSH
13407: EMPTY
13408: LIST
13409: LIST
13410: LIST
13411: LIST
13412: LIST
13413: LIST
13414: LIST
13415: LIST
13416: LIST
13417: PUSH
13418: LD_INT 1
13420: PPUSH
13421: LD_INT 9
13423: PPUSH
13424: CALL_OW 12
13428: ARRAY
13429: ST_TO_ADDR
// end ; 2 :
13430: GO 13697
13432: LD_INT 2
13434: DOUBLE
13435: EQUAL
13436: IFTRUE 13440
13438: GO 13564
13440: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
13441: LD_ADDR_OWVAR 37
13445: PUSH
13446: LD_INT 11
13448: PUSH
13449: LD_INT 12
13451: PUSH
13452: LD_INT 13
13454: PUSH
13455: LD_INT 14
13457: PUSH
13458: EMPTY
13459: LIST
13460: LIST
13461: LIST
13462: LIST
13463: PUSH
13464: LD_INT 1
13466: PPUSH
13467: LD_INT 4
13469: PPUSH
13470: CALL_OW 12
13474: ARRAY
13475: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
13476: LD_ADDR_OWVAR 39
13480: PUSH
13481: LD_INT 1
13483: PPUSH
13484: LD_INT 3
13486: PPUSH
13487: CALL_OW 12
13491: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
13492: LD_ADDR_OWVAR 38
13496: PUSH
13497: LD_INT 1
13499: PUSH
13500: LD_INT 2
13502: PUSH
13503: LD_INT 5
13505: PUSH
13506: EMPTY
13507: LIST
13508: LIST
13509: LIST
13510: PUSH
13511: LD_INT 1
13513: PPUSH
13514: LD_INT 3
13516: PPUSH
13517: CALL_OW 12
13521: ARRAY
13522: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
13523: LD_ADDR_OWVAR 40
13527: PUSH
13528: LD_INT 24
13530: PUSH
13531: LD_INT 26
13533: PUSH
13534: LD_INT 27
13536: PUSH
13537: LD_INT 28
13539: PUSH
13540: LD_INT 29
13542: PUSH
13543: EMPTY
13544: LIST
13545: LIST
13546: LIST
13547: LIST
13548: LIST
13549: PUSH
13550: LD_INT 1
13552: PPUSH
13553: LD_INT 5
13555: PPUSH
13556: CALL_OW 12
13560: ARRAY
13561: ST_TO_ADDR
// end ; 3 :
13562: GO 13697
13564: LD_INT 3
13566: DOUBLE
13567: EQUAL
13568: IFTRUE 13572
13570: GO 13696
13572: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
13573: LD_ADDR_OWVAR 37
13577: PUSH
13578: LD_INT 21
13580: PUSH
13581: LD_INT 23
13583: PUSH
13584: LD_INT 22
13586: PUSH
13587: LD_INT 24
13589: PUSH
13590: EMPTY
13591: LIST
13592: LIST
13593: LIST
13594: LIST
13595: PUSH
13596: LD_INT 1
13598: PPUSH
13599: LD_INT 4
13601: PPUSH
13602: CALL_OW 12
13606: ARRAY
13607: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
13608: LD_ADDR_OWVAR 39
13612: PUSH
13613: LD_INT 1
13615: PPUSH
13616: LD_INT 3
13618: PPUSH
13619: CALL_OW 12
13623: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
13624: LD_ADDR_OWVAR 38
13628: PUSH
13629: LD_INT 1
13631: PUSH
13632: LD_INT 3
13634: PUSH
13635: EMPTY
13636: LIST
13637: LIST
13638: PUSH
13639: LD_INT 1
13641: PPUSH
13642: LD_INT 2
13644: PPUSH
13645: CALL_OW 12
13649: ARRAY
13650: 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 ) ] ;
13651: LD_ADDR_OWVAR 40
13655: PUSH
13656: LD_INT 42
13658: PUSH
13659: LD_INT 43
13661: PUSH
13662: LD_INT 44
13664: PUSH
13665: LD_INT 46
13667: PUSH
13668: LD_INT 48
13670: PUSH
13671: LD_INT 47
13673: PUSH
13674: EMPTY
13675: LIST
13676: LIST
13677: LIST
13678: LIST
13679: LIST
13680: LIST
13681: PUSH
13682: LD_INT 1
13684: PPUSH
13685: LD_INT 6
13687: PPUSH
13688: CALL_OW 12
13692: ARRAY
13693: ST_TO_ADDR
// end ; end ;
13694: GO 13697
13696: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
13697: CALL_OW 45
13701: PPUSH
13702: LD_INT 1
13704: PPUSH
13705: CALL_OW 51
// end ;
13709: LD_VAR 0 1
13713: RET
// export invincible ; every 1 do
13714: GO 13716
13716: DISABLE
// invincible := [ ] ;
13717: LD_ADDR_EXP 56
13721: PUSH
13722: EMPTY
13723: ST_TO_ADDR
13724: END
// every 10 do var i ;
13725: GO 13727
13727: DISABLE
13728: LD_INT 0
13730: PPUSH
// begin enable ;
13731: ENABLE
// if not invincible then
13732: LD_EXP 56
13736: NOT
13737: IFFALSE 13741
// exit ;
13739: GO 13785
// for i in invincible do
13741: LD_ADDR_VAR 0 1
13745: PUSH
13746: LD_EXP 56
13750: PUSH
13751: FOR_IN
13752: IFFALSE 13783
// if GetLives ( i ) < 1000 then
13754: LD_VAR 0 1
13758: PPUSH
13759: CALL_OW 256
13763: PUSH
13764: LD_INT 1000
13766: LESS
13767: IFFALSE 13781
// SetLives ( i , 1000 ) ;
13769: LD_VAR 0 1
13773: PPUSH
13774: LD_INT 1000
13776: PPUSH
13777: CALL_OW 234
13781: GO 13751
13783: POP
13784: POP
// end ;
13785: PPOPN 1
13787: END
// export function HackInvincible ; var i ; begin
13788: LD_INT 0
13790: PPUSH
13791: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
13792: LD_ADDR_VAR 0 2
13796: PUSH
13797: LD_INT 2
13799: PUSH
13800: LD_INT 21
13802: PUSH
13803: LD_INT 1
13805: PUSH
13806: EMPTY
13807: LIST
13808: LIST
13809: PUSH
13810: LD_INT 21
13812: PUSH
13813: LD_INT 2
13815: PUSH
13816: EMPTY
13817: LIST
13818: LIST
13819: PUSH
13820: EMPTY
13821: LIST
13822: LIST
13823: LIST
13824: PPUSH
13825: CALL_OW 69
13829: PUSH
13830: FOR_IN
13831: IFFALSE 13892
// if IsSelected ( i ) then
13833: LD_VAR 0 2
13837: PPUSH
13838: CALL_OW 306
13842: IFFALSE 13890
// begin if i in invincible then
13844: LD_VAR 0 2
13848: PUSH
13849: LD_EXP 56
13853: IN
13854: IFFALSE 13874
// invincible := invincible diff i else
13856: LD_ADDR_EXP 56
13860: PUSH
13861: LD_EXP 56
13865: PUSH
13866: LD_VAR 0 2
13870: DIFF
13871: ST_TO_ADDR
13872: GO 13890
// invincible := invincible union i ;
13874: LD_ADDR_EXP 56
13878: PUSH
13879: LD_EXP 56
13883: PUSH
13884: LD_VAR 0 2
13888: UNION
13889: ST_TO_ADDR
// end ;
13890: GO 13830
13892: POP
13893: POP
// end ;
13894: LD_VAR 0 1
13898: RET
// export function HackInvisible ; var i , j ; begin
13899: LD_INT 0
13901: PPUSH
13902: PPUSH
13903: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
13904: LD_ADDR_VAR 0 2
13908: PUSH
13909: LD_INT 21
13911: PUSH
13912: LD_INT 1
13914: PUSH
13915: EMPTY
13916: LIST
13917: LIST
13918: PPUSH
13919: CALL_OW 69
13923: PUSH
13924: FOR_IN
13925: IFFALSE 13949
// if IsSelected ( i ) then
13927: LD_VAR 0 2
13931: PPUSH
13932: CALL_OW 306
13936: IFFALSE 13947
// begin ComForceInvisible ( i ) ;
13938: LD_VAR 0 2
13942: PPUSH
13943: CALL_OW 496
// end ;
13947: GO 13924
13949: POP
13950: POP
// end ;
13951: LD_VAR 0 1
13955: RET
// export function HackChangeYourSide ; begin
13956: LD_INT 0
13958: PPUSH
// if your_side = 8 then
13959: LD_OWVAR 2
13963: PUSH
13964: LD_INT 8
13966: EQUAL
13967: IFFALSE 13979
// your_side := 0 else
13969: LD_ADDR_OWVAR 2
13973: PUSH
13974: LD_INT 0
13976: ST_TO_ADDR
13977: GO 13993
// your_side := your_side + 1 ;
13979: LD_ADDR_OWVAR 2
13983: PUSH
13984: LD_OWVAR 2
13988: PUSH
13989: LD_INT 1
13991: PLUS
13992: ST_TO_ADDR
// end ;
13993: LD_VAR 0 1
13997: RET
// export function HackChangeUnitSide ; var i , j ; begin
13998: LD_INT 0
14000: PPUSH
14001: PPUSH
14002: PPUSH
// for i in all_units do
14003: LD_ADDR_VAR 0 2
14007: PUSH
14008: LD_OWVAR 3
14012: PUSH
14013: FOR_IN
14014: IFFALSE 14092
// if IsSelected ( i ) then
14016: LD_VAR 0 2
14020: PPUSH
14021: CALL_OW 306
14025: IFFALSE 14090
// begin j := GetSide ( i ) ;
14027: LD_ADDR_VAR 0 3
14031: PUSH
14032: LD_VAR 0 2
14036: PPUSH
14037: CALL_OW 255
14041: ST_TO_ADDR
// if j = 8 then
14042: LD_VAR 0 3
14046: PUSH
14047: LD_INT 8
14049: EQUAL
14050: IFFALSE 14062
// j := 0 else
14052: LD_ADDR_VAR 0 3
14056: PUSH
14057: LD_INT 0
14059: ST_TO_ADDR
14060: GO 14076
// j := j + 1 ;
14062: LD_ADDR_VAR 0 3
14066: PUSH
14067: LD_VAR 0 3
14071: PUSH
14072: LD_INT 1
14074: PLUS
14075: ST_TO_ADDR
// SetSide ( i , j ) ;
14076: LD_VAR 0 2
14080: PPUSH
14081: LD_VAR 0 3
14085: PPUSH
14086: CALL_OW 235
// end ;
14090: GO 14013
14092: POP
14093: POP
// end ;
14094: LD_VAR 0 1
14098: RET
// export function HackFog ; begin
14099: LD_INT 0
14101: PPUSH
// FogOff ( true ) ;
14102: LD_INT 1
14104: PPUSH
14105: CALL_OW 344
// end ;
14109: LD_VAR 0 1
14113: RET
// export function HackApeman ; begin
14114: LD_INT 0
14116: PPUSH
// uc_side := your_side ;
14117: LD_ADDR_OWVAR 20
14121: PUSH
14122: LD_OWVAR 2
14126: ST_TO_ADDR
// uc_nation := 0 ;
14127: LD_ADDR_OWVAR 21
14131: PUSH
14132: LD_INT 0
14134: ST_TO_ADDR
// hc_name :=  ;
14135: LD_ADDR_OWVAR 26
14139: PUSH
14140: LD_STRING 
14142: ST_TO_ADDR
// hc_gallery :=  ;
14143: LD_ADDR_OWVAR 33
14147: PUSH
14148: LD_STRING 
14150: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
14151: LD_ADDR_OWVAR 31
14155: PUSH
14156: LD_INT 0
14158: PUSH
14159: LD_INT 0
14161: PUSH
14162: LD_INT 0
14164: PUSH
14165: LD_INT 0
14167: PUSH
14168: EMPTY
14169: LIST
14170: LIST
14171: LIST
14172: LIST
14173: ST_TO_ADDR
// hc_class := class_apeman ;
14174: LD_ADDR_OWVAR 28
14178: PUSH
14179: LD_INT 12
14181: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
14182: CALL_OW 44
14186: PPUSH
14187: LD_INT 1
14189: PPUSH
14190: CALL_OW 51
// end ;
14194: LD_VAR 0 1
14198: RET
// export function HackBoom ; begin
14199: LD_INT 0
14201: PPUSH
// uc_side := your_side ;
14202: LD_ADDR_OWVAR 20
14206: PUSH
14207: LD_OWVAR 2
14211: ST_TO_ADDR
// uc_nation := 1 ;
14212: LD_ADDR_OWVAR 21
14216: PUSH
14217: LD_INT 1
14219: ST_TO_ADDR
// vc_chassis := us_morphling ;
14220: LD_ADDR_OWVAR 37
14224: PUSH
14225: LD_INT 5
14227: ST_TO_ADDR
// vc_engine := engine_siberite ;
14228: LD_ADDR_OWVAR 39
14232: PUSH
14233: LD_INT 3
14235: ST_TO_ADDR
// vc_control := control_computer ;
14236: LD_ADDR_OWVAR 38
14240: PUSH
14241: LD_INT 3
14243: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
14244: LD_ADDR_OWVAR 40
14248: PUSH
14249: LD_INT 8
14251: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
14252: CALL_OW 45
14256: PPUSH
14257: LD_INT 1
14259: PPUSH
14260: CALL_OW 51
// end ;
14264: LD_VAR 0 1
14268: RET
