// export test , testing ; export americans , americans1 , russians , russians1 ; export John , Cyrus , Bobby , Khatam , Nick , Lisa ; export AmME1 , AmFE2 , AmMSo3 ; export Powell ; export AmD1 , AmD2 , AmD3 , AmD4 ; export AmR1 , AmR2 , RuR1 , RuR2 ; export Time_of_visit , Time_of_attack , vehicle_goes , escape_flag , flee ; export Time_of_capture , vehicles_detected , uncanny_vehicles ; export Khatam_met_americans , Khatam_met_MM , Mikhail_placed , Mikhail_captured ; export resumption_of_talk , depot , Mikhail_in_depot , great_escape , attack , mikhail_marked_for_death ; export remove_mikhail , conversation , Mikhails_escape ; export Number_of_tigers ; export Dep1_lives , Dep2_lives , rep , Mikhails_lives , firing1 , firing2 , russians_attack , russians_attack1 ; export rsol1 , rsol2 , rsol3 , rsol4 , rsol5 , rsol6 , rdrv1 , rdrv2 , rv1 , rv2 ; export Mikhail , vehicle3 , vehicle4 , driver3 , driver4 ; export tigers , tiger1 , tiger2 , tiger3 , tiger4 ; export battle , number_of_crates , count , sergej_succeeds ; export vehicle1_fuel , vehicle2_fuel ; export tigers_allowed , remove_tigers ; export Engineers_not_dead , First_Capture ; export Attack_Distance , Eng_Skill , Sc_Skill , guard_skill ; export Lives_to_Retreat , lost_units ; export Mikhails_Escape_Disabled ; export Initial_Lives , Attack_canceled ; export RuR_lives , JMM_saw_east_guard , East_guard_seen ; export vehicle1_new , vehicle2_new ; export escape_dialogue , vehicle_goes_flag ; export Dialogue_Number , Skip ; export tiger_skill , russ_attack , drivers_skill , soldiers_skill , vehicle_lives ; export RusEast , RusNorth ; export Alive , RunDelay ; export Init_lives , Tested_Americans ; export Lives_Jmm , Lives_Bobby , Lives_Cyrus ; function Prepare_difficulty ; begin
   0: LD_INT 0
   2: PPUSH
// tiger_skill = [ 0 , 1 , 2 ] [ Difficulty ] ;
   3: LD_ADDR_EXP 103
   7: PUSH
   8: LD_INT 0
  10: PUSH
  11: LD_INT 1
  13: PUSH
  14: LD_INT 2
  16: PUSH
  17: EMPTY
  18: LIST
  19: LIST
  20: LIST
  21: PUSH
  22: LD_OWVAR 67
  26: ARRAY
  27: ST_TO_ADDR
// drivers_skill = [ 0 , 1 , 3 ] [ Difficulty ] ;
  28: LD_ADDR_EXP 105
  32: PUSH
  33: LD_INT 0
  35: PUSH
  36: LD_INT 1
  38: PUSH
  39: LD_INT 3
  41: PUSH
  42: EMPTY
  43: LIST
  44: LIST
  45: LIST
  46: PUSH
  47: LD_OWVAR 67
  51: ARRAY
  52: ST_TO_ADDR
// soldiers_skill = [ 0 , 1 , 2 ] [ Difficulty ] ;
  53: LD_ADDR_EXP 106
  57: PUSH
  58: LD_INT 0
  60: PUSH
  61: LD_INT 1
  63: PUSH
  64: LD_INT 2
  66: PUSH
  67: EMPTY
  68: LIST
  69: LIST
  70: LIST
  71: PUSH
  72: LD_OWVAR 67
  76: ARRAY
  77: ST_TO_ADDR
// vehicle_lives = [ 450 , 600 , 1000 ] [ Difficulty ] ;
  78: LD_ADDR_EXP 107
  82: PUSH
  83: LD_INT 450
  85: PUSH
  86: LD_INT 600
  88: PUSH
  89: LD_INT 1000
  91: PUSH
  92: EMPTY
  93: LIST
  94: LIST
  95: LIST
  96: PUSH
  97: LD_OWVAR 67
 101: ARRAY
 102: ST_TO_ADDR
// number_of_crates = [ 5 , 4 , 3 ] [ Difficulty ] ;
 103: LD_ADDR_EXP 76
 107: PUSH
 108: LD_INT 5
 110: PUSH
 111: LD_INT 4
 113: PUSH
 114: LD_INT 3
 116: PUSH
 117: EMPTY
 118: LIST
 119: LIST
 120: LIST
 121: PUSH
 122: LD_OWVAR 67
 126: ARRAY
 127: ST_TO_ADDR
// vehicle1_fuel = [ 50 , 45 , 35 ] [ Difficulty ] ;
 128: LD_ADDR_EXP 79
 132: PUSH
 133: LD_INT 50
 135: PUSH
 136: LD_INT 45
 138: PUSH
 139: LD_INT 35
 141: PUSH
 142: EMPTY
 143: LIST
 144: LIST
 145: LIST
 146: PUSH
 147: LD_OWVAR 67
 151: ARRAY
 152: ST_TO_ADDR
// vehicle2_fuel = [ 55 , 50 , 40 ] [ Difficulty ] ;
 153: LD_ADDR_EXP 80
 157: PUSH
 158: LD_INT 55
 160: PUSH
 161: LD_INT 50
 163: PUSH
 164: LD_INT 40
 166: PUSH
 167: EMPTY
 168: LIST
 169: LIST
 170: LIST
 171: PUSH
 172: LD_OWVAR 67
 176: ARRAY
 177: ST_TO_ADDR
// Attack_Distance = [ 17 , 16 , 15 ] [ Difficulty ] ;
 178: LD_ADDR_EXP 85
 182: PUSH
 183: LD_INT 17
 185: PUSH
 186: LD_INT 16
 188: PUSH
 189: LD_INT 15
 191: PUSH
 192: EMPTY
 193: LIST
 194: LIST
 195: LIST
 196: PUSH
 197: LD_OWVAR 67
 201: ARRAY
 202: ST_TO_ADDR
// Eng_Skill = [ 0 , 0 , 2 ] [ Difficulty ] ;
 203: LD_ADDR_EXP 86
 207: PUSH
 208: LD_INT 0
 210: PUSH
 211: LD_INT 0
 213: PUSH
 214: LD_INT 2
 216: PUSH
 217: EMPTY
 218: LIST
 219: LIST
 220: LIST
 221: PUSH
 222: LD_OWVAR 67
 226: ARRAY
 227: ST_TO_ADDR
// Sc_Skill = [ 0 , 0 , 2 ] [ Difficulty ] ;
 228: LD_ADDR_EXP 87
 232: PUSH
 233: LD_INT 0
 235: PUSH
 236: LD_INT 0
 238: PUSH
 239: LD_INT 2
 241: PUSH
 242: EMPTY
 243: LIST
 244: LIST
 245: LIST
 246: PUSH
 247: LD_OWVAR 67
 251: ARRAY
 252: ST_TO_ADDR
// RunDelay = [ [ 106 , 18 ] , [ 103 , 12 ] , [ 99 , 5 ] ] [ Difficulty ] ;
 253: LD_ADDR_EXP 111
 257: PUSH
 258: LD_INT 106
 260: PUSH
 261: LD_INT 18
 263: PUSH
 264: EMPTY
 265: LIST
 266: LIST
 267: PUSH
 268: LD_INT 103
 270: PUSH
 271: LD_INT 12
 273: PUSH
 274: EMPTY
 275: LIST
 276: LIST
 277: PUSH
 278: LD_INT 99
 280: PUSH
 281: LD_INT 5
 283: PUSH
 284: EMPTY
 285: LIST
 286: LIST
 287: PUSH
 288: EMPTY
 289: LIST
 290: LIST
 291: LIST
 292: PUSH
 293: LD_OWVAR 67
 297: ARRAY
 298: ST_TO_ADDR
// ComMoveXY ( RusEM1 , RunDelay [ 1 ] , RunDelay [ 2 ] ) ;
 299: LD_INT 6
 301: PPUSH
 302: LD_EXP 111
 306: PUSH
 307: LD_INT 1
 309: ARRAY
 310: PPUSH
 311: LD_EXP 111
 315: PUSH
 316: LD_INT 2
 318: ARRAY
 319: PPUSH
 320: CALL_OW 111
// AddComHold ( RusEM1 ) ;
 324: LD_INT 6
 326: PPUSH
 327: CALL_OW 200
// Guard_Skill = [ 0 , 1 , 2 ] [ Difficulty ] ;
 331: LD_ADDR_EXP 88
 335: PUSH
 336: LD_INT 0
 338: PUSH
 339: LD_INT 1
 341: PUSH
 342: LD_INT 2
 344: PUSH
 345: EMPTY
 346: LIST
 347: LIST
 348: LIST
 349: PUSH
 350: LD_OWVAR 67
 354: ARRAY
 355: ST_TO_ADDR
// Lives_to_Retreat = [ 450 , 500 , 600 ] [ Difficulty ] ;
 356: LD_ADDR_EXP 89
 360: PUSH
 361: LD_INT 450
 363: PUSH
 364: LD_INT 500
 366: PUSH
 367: LD_INT 600
 369: PUSH
 370: EMPTY
 371: LIST
 372: LIST
 373: LIST
 374: PUSH
 375: LD_OWVAR 67
 379: ARRAY
 380: ST_TO_ADDR
// RuR_lives = [ 500 , 800 , 1000 ] [ Difficulty ] ;
 381: LD_ADDR_EXP 94
 385: PUSH
 386: LD_INT 500
 388: PUSH
 389: LD_INT 800
 391: PUSH
 392: LD_INT 1000
 394: PUSH
 395: EMPTY
 396: LIST
 397: LIST
 398: LIST
 399: PUSH
 400: LD_OWVAR 67
 404: ARRAY
 405: ST_TO_ADDR
// end ;
 406: LD_VAR 0 1
 410: RET
// function Init ; begin
 411: LD_INT 0
 413: PPUSH
// tigers = [ tiger1 , tiger2 , tiger3 , tiger4 ] ;
 414: LD_ADDR_EXP 70
 418: PUSH
 419: LD_EXP 71
 423: PUSH
 424: LD_EXP 72
 428: PUSH
 429: LD_EXP 73
 433: PUSH
 434: LD_EXP 74
 438: PUSH
 439: EMPTY
 440: LIST
 441: LIST
 442: LIST
 443: LIST
 444: ST_TO_ADDR
// americans = 1 ;
 445: LD_ADDR_EXP 3
 449: PUSH
 450: LD_INT 1
 452: ST_TO_ADDR
// americans1 = 4 ;
 453: LD_ADDR_EXP 4
 457: PUSH
 458: LD_INT 4
 460: ST_TO_ADDR
// russians = 3 ;
 461: LD_ADDR_EXP 5
 465: PUSH
 466: LD_INT 3
 468: ST_TO_ADDR
// russians1 = 6 ;
 469: LD_ADDR_EXP 6
 473: PUSH
 474: LD_INT 6
 476: ST_TO_ADDR
// SetAttitude ( americans , russians , att_enemy , true ) ;
 477: LD_EXP 3
 481: PPUSH
 482: LD_EXP 5
 486: PPUSH
 487: LD_INT 2
 489: PPUSH
 490: LD_INT 1
 492: PPUSH
 493: CALL_OW 80
// SetAttitude ( americans , russians1 , att_neutral , false ) ;
 497: LD_EXP 3
 501: PPUSH
 502: LD_EXP 6
 506: PPUSH
 507: LD_INT 0
 509: PPUSH
 510: LD_INT 0
 512: PPUSH
 513: CALL_OW 80
// SetAttitude ( russians1 , americans , att_neutral , false ) ;
 517: LD_EXP 6
 521: PPUSH
 522: LD_EXP 3
 526: PPUSH
 527: LD_INT 0
 529: PPUSH
 530: LD_INT 0
 532: PPUSH
 533: CALL_OW 80
// SetAttitude ( russians , russians1 , att_friend , true ) ;
 537: LD_EXP 5
 541: PPUSH
 542: LD_EXP 6
 546: PPUSH
 547: LD_INT 1
 549: PPUSH
 550: LD_INT 1
 552: PPUSH
 553: CALL_OW 80
// SetAttitude ( americans , americans1 , att_friend , true ) ;
 557: LD_EXP 3
 561: PPUSH
 562: LD_EXP 4
 566: PPUSH
 567: LD_INT 1
 569: PPUSH
 570: LD_INT 1
 572: PPUSH
 573: CALL_OW 80
// RusEast = [ RusESo1 , RusESo2 ] ;
 577: LD_ADDR_EXP 108
 581: PUSH
 582: LD_INT 13
 584: PUSH
 585: LD_INT 8
 587: PUSH
 588: EMPTY
 589: LIST
 590: LIST
 591: ST_TO_ADDR
// RusNorth = [ RusNSo1 , RusNSo2 , RusNSc1 ] ;
 592: LD_ADDR_EXP 109
 596: PUSH
 597: LD_INT 3
 599: PUSH
 600: LD_INT 14
 602: PUSH
 603: LD_INT 25
 605: PUSH
 606: EMPTY
 607: LIST
 608: LIST
 609: LIST
 610: ST_TO_ADDR
// ComRemember ( RusNorth ) ;
 611: LD_EXP 109
 615: PPUSH
 616: CALL_OW 143
// ComFree ( RusNorth ) ;
 620: LD_EXP 109
 624: PPUSH
 625: CALL_OW 139
// Dep1_lives = 1000 ;
 629: LD_ADDR_EXP 47
 633: PUSH
 634: LD_INT 1000
 636: ST_TO_ADDR
// Dep2_lives = 1000 ;
 637: LD_ADDR_EXP 48
 641: PUSH
 642: LD_INT 1000
 644: ST_TO_ADDR
// InitUc ;
 645: CALL_OW 18
// InitHc ;
 649: CALL_OW 19
// InitVc ;
 653: CALL_OW 20
// uc_direction = 1 ;
 657: LD_ADDR_OWVAR 24
 661: PUSH
 662: LD_INT 1
 664: ST_TO_ADDR
// uc_nation = nation_russian ;
 665: LD_ADDR_OWVAR 21
 669: PUSH
 670: LD_INT 3
 672: ST_TO_ADDR
// uc_side = russians ;
 673: LD_ADDR_OWVAR 20
 677: PUSH
 678: LD_EXP 5
 682: ST_TO_ADDR
// SetFuel ( vehicle1 , vehicle1_fuel ) ;
 683: LD_INT 5
 685: PPUSH
 686: LD_EXP 79
 690: PPUSH
 691: CALL_OW 240
// SetFuel ( vehicle2 , vehicle2_fuel ) ;
 695: LD_INT 4
 697: PPUSH
 698: LD_EXP 80
 702: PPUSH
 703: CALL_OW 240
// vc_chassis = ru_medium_wheeled ;
 707: LD_ADDR_OWVAR 37
 711: PUSH
 712: LD_INT 21
 714: ST_TO_ADDR
// vc_engine = engine_combustion ;
 715: LD_ADDR_OWVAR 39
 719: PUSH
 720: LD_INT 1
 722: ST_TO_ADDR
// vc_control = control_manual ;
 723: LD_ADDR_OWVAR 38
 727: PUSH
 728: LD_INT 1
 730: ST_TO_ADDR
// vc_weapon = ru_cargo_bay ;
 731: LD_ADDR_OWVAR 40
 735: PUSH
 736: LD_INT 51
 738: ST_TO_ADDR
// vehicle3 = CreateVehicle ;
 739: LD_ADDR_EXP 66
 743: PUSH
 744: CALL_OW 45
 748: ST_TO_ADDR
// vehicle4 = CreateVehicle ;
 749: LD_ADDR_EXP 67
 753: PUSH
 754: CALL_OW 45
 758: ST_TO_ADDR
// vc_weapon = ru_heavy_machine_gun ;
 759: LD_ADDR_OWVAR 40
 763: PUSH
 764: LD_INT 42
 766: ST_TO_ADDR
// rv1 = CreateVehicle ;
 767: LD_ADDR_EXP 63
 771: PUSH
 772: CALL_OW 45
 776: ST_TO_ADDR
// SetLives ( rv1 , vehicle_lives ) ;
 777: LD_EXP 63
 781: PPUSH
 782: LD_EXP 107
 786: PPUSH
 787: CALL_OW 234
// rv2 = CreateVehicle ;
 791: LD_ADDR_EXP 64
 795: PUSH
 796: CALL_OW 45
 800: ST_TO_ADDR
// Time_of_visit = 550 550$0 ;
 801: LD_ADDR_EXP 25
 805: PUSH
 806: LD_INT 1155000
 808: ST_TO_ADDR
// Time_of_attack = 550 550$0 ;
 809: LD_ADDR_EXP 26
 813: PUSH
 814: LD_INT 1155000
 816: ST_TO_ADDR
// Time_of_capture = 550 550$0 ;
 817: LD_ADDR_EXP 30
 821: PUSH
 822: LD_INT 1155000
 824: ST_TO_ADDR
// flee = 0 ;
 825: LD_ADDR_EXP 29
 829: PUSH
 830: LD_INT 0
 832: ST_TO_ADDR
// hc_sex = sex_male ;
 833: LD_ADDR_OWVAR 27
 837: PUSH
 838: LD_INT 1
 840: ST_TO_ADDR
// hc_class = class_mechanic ;
 841: LD_ADDR_OWVAR 28
 845: PUSH
 846: LD_INT 3
 848: ST_TO_ADDR
// hc_skills = [ 1 , 0 , drivers_skill , 0 ] ;
 849: LD_ADDR_OWVAR 31
 853: PUSH
 854: LD_INT 1
 856: PUSH
 857: LD_INT 0
 859: PUSH
 860: LD_EXP 105
 864: PUSH
 865: LD_INT 0
 867: PUSH
 868: EMPTY
 869: LIST
 870: LIST
 871: LIST
 872: LIST
 873: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
 874: LD_ADDR_OWVAR 29
 878: PUSH
 879: LD_INT 10
 881: PUSH
 882: LD_INT 10
 884: PUSH
 885: EMPTY
 886: LIST
 887: LIST
 888: ST_TO_ADDR
// hc_name =  ;
 889: LD_ADDR_OWVAR 26
 893: PUSH
 894: LD_STRING 
 896: ST_TO_ADDR
// driver3 = CreateHuman ;
 897: LD_ADDR_EXP 68
 901: PUSH
 902: CALL_OW 44
 906: ST_TO_ADDR
// PlaceHumanInUnit ( driver3 , vehicle3 ) ;
 907: LD_EXP 68
 911: PPUSH
 912: LD_EXP 66
 916: PPUSH
 917: CALL_OW 52
// hc_name =  ;
 921: LD_ADDR_OWVAR 26
 925: PUSH
 926: LD_STRING 
 928: ST_TO_ADDR
// driver4 = CreateHuman ;
 929: LD_ADDR_EXP 69
 933: PUSH
 934: CALL_OW 44
 938: ST_TO_ADDR
// PlaceHumanInUnit ( driver4 , vehicle4 ) ;
 939: LD_EXP 69
 943: PPUSH
 944: LD_EXP 67
 948: PPUSH
 949: CALL_OW 52
// hc_name =  ;
 953: LD_ADDR_OWVAR 26
 957: PUSH
 958: LD_STRING 
 960: ST_TO_ADDR
// hc_skills = [ 1 , 3 , drivers_skill + 1 , 0 ] ;
 961: LD_ADDR_OWVAR 31
 965: PUSH
 966: LD_INT 1
 968: PUSH
 969: LD_INT 3
 971: PUSH
 972: LD_EXP 105
 976: PUSH
 977: LD_INT 1
 979: PLUS
 980: PUSH
 981: LD_INT 0
 983: PUSH
 984: EMPTY
 985: LIST
 986: LIST
 987: LIST
 988: LIST
 989: ST_TO_ADDR
// hc_class = class_engineer ;
 990: LD_ADDR_OWVAR 28
 994: PUSH
 995: LD_INT 2
 997: ST_TO_ADDR
// rdrv1 = CreateHuman ;
 998: LD_ADDR_EXP 61
1002: PUSH
1003: CALL_OW 44
1007: ST_TO_ADDR
// rdrv2 = CreateHuman ;
1008: LD_ADDR_EXP 62
1012: PUSH
1013: CALL_OW 44
1017: ST_TO_ADDR
// PlaceHumanInUnit ( rdrv1 , rv1 ) ;
1018: LD_EXP 61
1022: PPUSH
1023: LD_EXP 63
1027: PPUSH
1028: CALL_OW 52
// PlaceHumanInUnit ( rdrv2 , rv2 ) ;
1032: LD_EXP 62
1036: PPUSH
1037: LD_EXP 64
1041: PPUSH
1042: CALL_OW 52
// hc_class = class_soldier ;
1046: LD_ADDR_OWVAR 28
1050: PUSH
1051: LD_INT 1
1053: ST_TO_ADDR
// hc_skills = [ soldiers_skill , 0 , 1 , 1 ] ;
1054: LD_ADDR_OWVAR 31
1058: PUSH
1059: LD_EXP 106
1063: PUSH
1064: LD_INT 0
1066: PUSH
1067: LD_INT 1
1069: PUSH
1070: LD_INT 1
1072: PUSH
1073: EMPTY
1074: LIST
1075: LIST
1076: LIST
1077: LIST
1078: ST_TO_ADDR
// hc_name =  ;
1079: LD_ADDR_OWVAR 26
1083: PUSH
1084: LD_STRING 
1086: ST_TO_ADDR
// rsol1 = CreateHuman ;
1087: LD_ADDR_EXP 55
1091: PUSH
1092: CALL_OW 44
1096: ST_TO_ADDR
// rsol4 = CreateHuman ;
1097: LD_ADDR_EXP 58
1101: PUSH
1102: CALL_OW 44
1106: ST_TO_ADDR
// hc_skills = [ soldiers_skill - 1 , 0 , 1 , 1 ] ;
1107: LD_ADDR_OWVAR 31
1111: PUSH
1112: LD_EXP 106
1116: PUSH
1117: LD_INT 1
1119: MINUS
1120: PUSH
1121: LD_INT 0
1123: PUSH
1124: LD_INT 1
1126: PUSH
1127: LD_INT 1
1129: PUSH
1130: EMPTY
1131: LIST
1132: LIST
1133: LIST
1134: LIST
1135: ST_TO_ADDR
// rsol3 = CreateHuman ;
1136: LD_ADDR_EXP 57
1140: PUSH
1141: CALL_OW 44
1145: ST_TO_ADDR
// rsol5 = CreateHuman ;
1146: LD_ADDR_EXP 59
1150: PUSH
1151: CALL_OW 44
1155: ST_TO_ADDR
// hc_skills = [ soldiers_skill + 1 , 0 , 1 , 1 ] ;
1156: LD_ADDR_OWVAR 31
1160: PUSH
1161: LD_EXP 106
1165: PUSH
1166: LD_INT 1
1168: PLUS
1169: PUSH
1170: LD_INT 0
1172: PUSH
1173: LD_INT 1
1175: PUSH
1176: LD_INT 1
1178: PUSH
1179: EMPTY
1180: LIST
1181: LIST
1182: LIST
1183: LIST
1184: ST_TO_ADDR
// rsol2 = CreateHuman ;
1185: LD_ADDR_EXP 56
1189: PUSH
1190: CALL_OW 44
1194: ST_TO_ADDR
// hc_skills = [ soldiers_skill , 0 , 1 , 1 ] ;
1195: LD_ADDR_OWVAR 31
1199: PUSH
1200: LD_EXP 106
1204: PUSH
1205: LD_INT 0
1207: PUSH
1208: LD_INT 1
1210: PUSH
1211: LD_INT 1
1213: PUSH
1214: EMPTY
1215: LIST
1216: LIST
1217: LIST
1218: LIST
1219: ST_TO_ADDR
// rsol6 = CreateHuman ;
1220: LD_ADDR_EXP 60
1224: PUSH
1225: CALL_OW 44
1229: ST_TO_ADDR
// hc_sex = sex_male ;
1230: LD_ADDR_OWVAR 27
1234: PUSH
1235: LD_INT 1
1237: ST_TO_ADDR
// uc_side = russians1 ;
1238: LD_ADDR_OWVAR 20
1242: PUSH
1243: LD_EXP 6
1247: ST_TO_ADDR
// PrepareNewCharacter ( Mikhail ) ;
1248: LD_STRING Mikhail
1250: PPUSH
1251: CALL_OW 26
// hc_class = class_mechanic ;
1255: LD_ADDR_OWVAR 28
1259: PUSH
1260: LD_INT 3
1262: ST_TO_ADDR
// Mikhail = CreateHuman ;
1263: LD_ADDR_EXP 65
1267: PUSH
1268: CALL_OW 44
1272: ST_TO_ADDR
// Mikhail_in_depot = false ;
1273: LD_ADDR_EXP 39
1277: PUSH
1278: LD_INT 0
1280: ST_TO_ADDR
// Mikhails_lives = 1000 ;
1281: LD_ADDR_EXP 50
1285: PUSH
1286: LD_INT 1000
1288: ST_TO_ADDR
// hc_gallery =  ;
1289: LD_ADDR_OWVAR 33
1293: PUSH
1294: LD_STRING 
1296: ST_TO_ADDR
// hc_face_number = 0 ;
1297: LD_ADDR_OWVAR 34
1301: PUSH
1302: LD_INT 0
1304: ST_TO_ADDR
// uc_nation = nation_american ;
1305: LD_ADDR_OWVAR 21
1309: PUSH
1310: LD_INT 1
1312: ST_TO_ADDR
// uc_side = americans ;
1313: LD_ADDR_OWVAR 20
1317: PUSH
1318: LD_EXP 3
1322: ST_TO_ADDR
// Lives_JMM = LoadVariable ( lives_jmm , 1000 ) ;
1323: LD_ADDR_EXP 114
1327: PUSH
1328: LD_STRING lives_jmm
1330: PPUSH
1331: LD_INT 1000
1333: PPUSH
1334: CALL_OW 30
1338: ST_TO_ADDR
// Lives_Bobby = LoadVariable ( lives_bobby , 1000 ) ;
1339: LD_ADDR_EXP 115
1343: PUSH
1344: LD_STRING lives_bobby
1346: PPUSH
1347: LD_INT 1000
1349: PPUSH
1350: CALL_OW 30
1354: ST_TO_ADDR
// Lives_Cyrus = LoadVariable ( lives_cyrus , 1000 ) ;
1355: LD_ADDR_EXP 116
1359: PUSH
1360: LD_STRING lives_cyrus
1362: PPUSH
1363: LD_INT 1000
1365: PPUSH
1366: CALL_OW 30
1370: ST_TO_ADDR
// if Lives_JMM < 251 then
1371: LD_EXP 114
1375: PUSH
1376: LD_INT 251
1378: LESS
1379: IFFALSE 1389
// Lives_JMM := 251 ;
1381: LD_ADDR_EXP 114
1385: PUSH
1386: LD_INT 251
1388: ST_TO_ADDR
// if Lives_Bobby < 251 then
1389: LD_EXP 115
1393: PUSH
1394: LD_INT 251
1396: LESS
1397: IFFALSE 1407
// Lives_Bobby := 251 ;
1399: LD_ADDR_EXP 115
1403: PUSH
1404: LD_INT 251
1406: ST_TO_ADDR
// if Lives_Cyrus < 251 then
1407: LD_EXP 116
1411: PUSH
1412: LD_INT 251
1414: LESS
1415: IFFALSE 1425
// Lives_Cyrus := 251 ;
1417: LD_ADDR_EXP 116
1421: PUSH
1422: LD_INT 251
1424: ST_TO_ADDR
// if testing then
1425: LD_EXP 2
1429: IFFALSE 1465
// begin PrepareSoldier ( sex_male , 3 ) ;
1431: LD_INT 1
1433: PPUSH
1434: LD_INT 3
1436: PPUSH
1437: CALL_OW 381
// hc_name = Macmillan ;
1441: LD_ADDR_OWVAR 26
1445: PUSH
1446: LD_STRING Macmillan
1448: ST_TO_ADDR
// John = CreateHuman ;
1449: LD_ADDR_EXP 7
1453: PUSH
1454: CALL_OW 44
1458: ST_TO_ADDR
// InitHc ;
1459: CALL_OW 19
// end else
1463: GO 1478
// John = CreateCharacter ( JMM ) ;
1465: LD_ADDR_EXP 7
1469: PUSH
1470: LD_STRING JMM
1472: PPUSH
1473: CALL_OW 34
1477: ST_TO_ADDR
// SetLives ( John , Lives_JMM ) ;
1478: LD_EXP 7
1482: PPUSH
1483: LD_EXP 114
1487: PPUSH
1488: CALL_OW 234
// if not John then
1492: LD_EXP 7
1496: NOT
1497: IFFALSE 1512
// BuildQuery ( Error: John Macmillan not found!!! , [ OK ] ) ;
1499: LD_STRING Error: John Macmillan not found!!!
1501: PPUSH
1502: LD_STRING OK
1504: PUSH
1505: EMPTY
1506: LIST
1507: PPUSH
1508: CALL_OW 99
// if testing then
1512: LD_EXP 2
1516: IFFALSE 1552
// begin PrepareSoldier ( sex_male , 0 ) ;
1518: LD_INT 1
1520: PPUSH
1521: LD_INT 0
1523: PPUSH
1524: CALL_OW 381
// hc_name = Powell ;
1528: LD_ADDR_OWVAR 26
1532: PUSH
1533: LD_STRING Powell
1535: ST_TO_ADDR
// Powell = CreateHuman ;
1536: LD_ADDR_EXP 16
1540: PUSH
1541: CALL_OW 44
1545: ST_TO_ADDR
// InitHc ;
1546: CALL_OW 19
// end else
1550: GO 1565
// Powell = CreateCharacter ( Powell ) ;
1552: LD_ADDR_EXP 16
1556: PUSH
1557: LD_STRING Powell
1559: PPUSH
1560: CALL_OW 34
1564: ST_TO_ADDR
// if not Powell then
1565: LD_EXP 16
1569: NOT
1570: IFFALSE 1585
// BuildQuery ( Error: Powell not found!!! , [ OK ] ) ;
1572: LD_STRING Error: Powell not found!!!
1574: PPUSH
1575: LD_STRING OK
1577: PUSH
1578: EMPTY
1579: LIST
1580: PPUSH
1581: CALL_OW 99
// Bobby = CreateCharacter ( Bobby ) ;
1585: LD_ADDR_EXP 9
1589: PUSH
1590: LD_STRING Bobby
1592: PPUSH
1593: CALL_OW 34
1597: ST_TO_ADDR
// if Bobby then
1598: LD_EXP 9
1602: IFFALSE 1618
// SetLives ( Bobby , Lives_Bobby ) ;
1604: LD_EXP 9
1608: PPUSH
1609: LD_EXP 115
1613: PPUSH
1614: CALL_OW 234
// Cyrus = CreateCharacter ( Cyrus ) ;
1618: LD_ADDR_EXP 8
1622: PUSH
1623: LD_STRING Cyrus
1625: PPUSH
1626: CALL_OW 34
1630: ST_TO_ADDR
// if Cyrus then
1631: LD_EXP 8
1635: IFFALSE 1651
// SetLives ( Cyrus , Lives_Cyrus ) ;
1637: LD_EXP 8
1641: PPUSH
1642: LD_EXP 116
1646: PPUSH
1647: CALL_OW 234
// uc_side = americans1 ;
1651: LD_ADDR_OWVAR 20
1655: PUSH
1656: LD_EXP 4
1660: ST_TO_ADDR
// Lisa = NewCharacter ( Lisa ) ;
1661: LD_ADDR_EXP 12
1665: PUSH
1666: LD_STRING Lisa
1668: PPUSH
1669: CALL_OW 25
1673: ST_TO_ADDR
// uc_side = americans1 ;
1674: LD_ADDR_OWVAR 20
1678: PUSH
1679: LD_EXP 4
1683: ST_TO_ADDR
// Khatam = NewCharacter ( Khatam ) ;
1684: LD_ADDR_EXP 10
1688: PUSH
1689: LD_STRING Khatam
1691: PPUSH
1692: CALL_OW 25
1696: ST_TO_ADDR
// SetClass ( Khatam , class_scientistic ) ;
1697: LD_EXP 10
1701: PPUSH
1702: LD_INT 4
1704: PPUSH
1705: CALL_OW 336
// Khatam_met_MM = false ;
1709: LD_ADDR_EXP 34
1713: PUSH
1714: LD_INT 0
1716: ST_TO_ADDR
// uc_side = americans1 ;
1717: LD_ADDR_OWVAR 20
1721: PUSH
1722: LD_EXP 4
1726: ST_TO_ADDR
// hc_sex = sex_male ;
1727: LD_ADDR_OWVAR 27
1731: PUSH
1732: LD_INT 1
1734: ST_TO_ADDR
// hc_class = class_engineer ;
1735: LD_ADDR_OWVAR 28
1739: PUSH
1740: LD_INT 2
1742: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 0 ] ;
1743: LD_ADDR_OWVAR 31
1747: PUSH
1748: LD_INT 1
1750: PUSH
1751: LD_INT 2
1753: PUSH
1754: LD_INT 1
1756: PUSH
1757: LD_INT 0
1759: PUSH
1760: EMPTY
1761: LIST
1762: LIST
1763: LIST
1764: LIST
1765: ST_TO_ADDR
// hc_name =  ;
1766: LD_ADDR_OWVAR 26
1770: PUSH
1771: LD_STRING 
1773: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1774: LD_ADDR_OWVAR 29
1778: PUSH
1779: LD_INT 10
1781: PUSH
1782: LD_INT 10
1784: PUSH
1785: EMPTY
1786: LIST
1787: LIST
1788: ST_TO_ADDR
// AmME1 = CreateHuman ;
1789: LD_ADDR_EXP 13
1793: PUSH
1794: CALL_OW 44
1798: ST_TO_ADDR
// hc_sex = sex_female ;
1799: LD_ADDR_OWVAR 27
1803: PUSH
1804: LD_INT 2
1806: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 2 , 1 ] ;
1807: LD_ADDR_OWVAR 31
1811: PUSH
1812: LD_INT 1
1814: PUSH
1815: LD_INT 1
1817: PUSH
1818: LD_INT 2
1820: PUSH
1821: LD_INT 1
1823: PUSH
1824: EMPTY
1825: LIST
1826: LIST
1827: LIST
1828: LIST
1829: ST_TO_ADDR
// hc_name =  ;
1830: LD_ADDR_OWVAR 26
1834: PUSH
1835: LD_STRING 
1837: ST_TO_ADDR
// AmFE2 = CreateHuman ;
1838: LD_ADDR_EXP 14
1842: PUSH
1843: CALL_OW 44
1847: ST_TO_ADDR
// hc_sex = sex_male ;
1848: LD_ADDR_OWVAR 27
1852: PUSH
1853: LD_INT 1
1855: ST_TO_ADDR
// hc_class = class_soldier ;
1856: LD_ADDR_OWVAR 28
1860: PUSH
1861: LD_INT 1
1863: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 1 , 0 ] ;
1864: LD_ADDR_OWVAR 31
1868: PUSH
1869: LD_INT 2
1871: PUSH
1872: LD_INT 1
1874: PUSH
1875: LD_INT 1
1877: PUSH
1878: LD_INT 0
1880: PUSH
1881: EMPTY
1882: LIST
1883: LIST
1884: LIST
1885: LIST
1886: ST_TO_ADDR
// hc_name =  ;
1887: LD_ADDR_OWVAR 26
1891: PUSH
1892: LD_STRING 
1894: ST_TO_ADDR
// AmMSo3 = CreateHuman ;
1895: LD_ADDR_EXP 15
1899: PUSH
1900: CALL_OW 44
1904: ST_TO_ADDR
// if John then
1905: LD_EXP 7
1909: IFFALSE 1929
// PlaceUnitXY ( John , 44 , 72 , false ) ;
1911: LD_EXP 7
1915: PPUSH
1916: LD_INT 44
1918: PPUSH
1919: LD_INT 72
1921: PPUSH
1922: LD_INT 0
1924: PPUSH
1925: CALL_OW 48
// if Bobby then
1929: LD_EXP 9
1933: IFFALSE 1953
// PlaceUnitXY ( Bobby , 43 , 74 , false ) ;
1935: LD_EXP 9
1939: PPUSH
1940: LD_INT 43
1942: PPUSH
1943: LD_INT 74
1945: PPUSH
1946: LD_INT 0
1948: PPUSH
1949: CALL_OW 48
// if Cyrus then
1953: LD_EXP 8
1957: IFFALSE 1977
// PlaceUnitXY ( Cyrus , 47 , 76 , false ) ;
1959: LD_EXP 8
1963: PPUSH
1964: LD_INT 47
1966: PPUSH
1967: LD_INT 76
1969: PPUSH
1970: LD_INT 0
1972: PPUSH
1973: CALL_OW 48
// PlaceUnitXY ( Lisa , 30 , 55 , false ) ;
1977: LD_EXP 12
1981: PPUSH
1982: LD_INT 30
1984: PPUSH
1985: LD_INT 55
1987: PPUSH
1988: LD_INT 0
1990: PPUSH
1991: CALL_OW 48
// ComCrawl ( Lisa ) ;
1995: LD_EXP 12
1999: PPUSH
2000: CALL_OW 137
// AddComHold ( Lisa ) ;
2004: LD_EXP 12
2008: PPUSH
2009: CALL_OW 200
// AddComTurnXY ( Lisa , 34 , 60 ) ;
2013: LD_EXP 12
2017: PPUSH
2018: LD_INT 34
2020: PPUSH
2021: LD_INT 60
2023: PPUSH
2024: CALL_OW 178
// PlaceUnitXY ( AmME1 , 31 , 50 , false ) ;
2028: LD_EXP 13
2032: PPUSH
2033: LD_INT 31
2035: PPUSH
2036: LD_INT 50
2038: PPUSH
2039: LD_INT 0
2041: PPUSH
2042: CALL_OW 48
// ComCrawl ( AmME1 ) ;
2046: LD_EXP 13
2050: PPUSH
2051: CALL_OW 137
// AddComHold ( AmME1 ) ;
2055: LD_EXP 13
2059: PPUSH
2060: CALL_OW 200
// AddComTurnXY ( AmME1 , 34 , 50 ) ;
2064: LD_EXP 13
2068: PPUSH
2069: LD_INT 34
2071: PPUSH
2072: LD_INT 50
2074: PPUSH
2075: CALL_OW 178
// PlaceUnitXY ( AmFE2 , 33 , 51 , false ) ;
2079: LD_EXP 14
2083: PPUSH
2084: LD_INT 33
2086: PPUSH
2087: LD_INT 51
2089: PPUSH
2090: LD_INT 0
2092: PPUSH
2093: CALL_OW 48
// ComCrawl ( AmFE2 ) ;
2097: LD_EXP 14
2101: PPUSH
2102: CALL_OW 137
// AddComHold ( AmFE2 ) ;
2106: LD_EXP 14
2110: PPUSH
2111: CALL_OW 200
// AddComTurnXY ( AmFE2 , 34 , 50 ) ;
2115: LD_EXP 14
2119: PPUSH
2120: LD_INT 34
2122: PPUSH
2123: LD_INT 50
2125: PPUSH
2126: CALL_OW 178
// ComFree ( [ John , Bobby , Cyrus ] ) ;
2130: LD_EXP 7
2134: PUSH
2135: LD_EXP 9
2139: PUSH
2140: LD_EXP 8
2144: PUSH
2145: EMPTY
2146: LIST
2147: LIST
2148: LIST
2149: PPUSH
2150: CALL_OW 139
// Nick = 0 ;
2154: LD_ADDR_EXP 11
2158: PUSH
2159: LD_INT 0
2161: ST_TO_ADDR
// if not Cyrus and not Bobby then
2162: LD_EXP 8
2166: NOT
2167: PUSH
2168: LD_EXP 9
2172: NOT
2173: AND
2174: IFFALSE 2317
// begin uc_side = americans1 ;
2176: LD_ADDR_OWVAR 20
2180: PUSH
2181: LD_EXP 4
2185: ST_TO_ADDR
// uc_nation = nation_american ;
2186: LD_ADDR_OWVAR 21
2190: PUSH
2191: LD_INT 1
2193: ST_TO_ADDR
// hc_sex = sex_male ;
2194: LD_ADDR_OWVAR 27
2198: PUSH
2199: LD_INT 1
2201: ST_TO_ADDR
// hc_class = class_soldier ;
2202: LD_ADDR_OWVAR 28
2206: PUSH
2207: LD_INT 1
2209: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 1 , 0 ] ;
2210: LD_ADDR_OWVAR 31
2214: PUSH
2215: LD_INT 1
2217: PUSH
2218: LD_INT 1
2220: PUSH
2221: LD_INT 1
2223: PUSH
2224: LD_INT 0
2226: PUSH
2227: EMPTY
2228: LIST
2229: LIST
2230: LIST
2231: LIST
2232: ST_TO_ADDR
// hc_name =  ;
2233: LD_ADDR_OWVAR 26
2237: PUSH
2238: LD_STRING 
2240: ST_TO_ADDR
// hc_attr = [ 11 , 8 ] ;
2241: LD_ADDR_OWVAR 29
2245: PUSH
2246: LD_INT 11
2248: PUSH
2249: LD_INT 8
2251: PUSH
2252: EMPTY
2253: LIST
2254: LIST
2255: ST_TO_ADDR
// Nick = CreateHuman ;
2256: LD_ADDR_EXP 11
2260: PUSH
2261: CALL_OW 44
2265: ST_TO_ADDR
// PlaceUnitXY ( Nick , 32 , 49 , false ) ;
2266: LD_EXP 11
2270: PPUSH
2271: LD_INT 32
2273: PPUSH
2274: LD_INT 49
2276: PPUSH
2277: LD_INT 0
2279: PPUSH
2280: CALL_OW 48
// comCrawl ( Nick ) ;
2284: LD_EXP 11
2288: PPUSH
2289: CALL_OW 137
// AddComHold ( Nick ) ;
2293: LD_EXP 11
2297: PPUSH
2298: CALL_OW 200
// AddComTurnXY ( Nick , 34 , 50 ) ;
2302: LD_EXP 11
2306: PPUSH
2307: LD_INT 34
2309: PPUSH
2310: LD_INT 50
2312: PPUSH
2313: CALL_OW 178
// end ; hc_sex = sex_male ;
2317: LD_ADDR_OWVAR 27
2321: PUSH
2322: LD_INT 1
2324: ST_TO_ADDR
// hc_class = class_soldier ;
2325: LD_ADDR_OWVAR 28
2329: PUSH
2330: LD_INT 1
2332: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 1 ] ;
2333: LD_ADDR_OWVAR 31
2337: PUSH
2338: LD_INT 1
2340: PUSH
2341: LD_INT 2
2343: PUSH
2344: LD_INT 1
2346: PUSH
2347: LD_INT 1
2349: PUSH
2350: EMPTY
2351: LIST
2352: LIST
2353: LIST
2354: LIST
2355: ST_TO_ADDR
// hc_name =  ;
2356: LD_ADDR_OWVAR 26
2360: PUSH
2361: LD_STRING 
2363: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
2364: LD_ADDR_OWVAR 29
2368: PUSH
2369: LD_INT 10
2371: PUSH
2372: LD_INT 10
2374: PUSH
2375: EMPTY
2376: LIST
2377: LIST
2378: ST_TO_ADDR
// uc_direction = 1 ;
2379: LD_ADDR_OWVAR 24
2383: PUSH
2384: LD_INT 1
2386: ST_TO_ADDR
// AmR1 = CreateHuman ;
2387: LD_ADDR_EXP 21
2391: PUSH
2392: CALL_OW 44
2396: ST_TO_ADDR
// hc_name =  ;
2397: LD_ADDR_OWVAR 26
2401: PUSH
2402: LD_STRING 
2404: ST_TO_ADDR
// uc_direction = 1 ;
2405: LD_ADDR_OWVAR 24
2409: PUSH
2410: LD_INT 1
2412: ST_TO_ADDR
// AmR2 = CreateHuman ;
2413: LD_ADDR_EXP 22
2417: PUSH
2418: CALL_OW 44
2422: ST_TO_ADDR
// uc_side = russians ;
2423: LD_ADDR_OWVAR 20
2427: PUSH
2428: LD_EXP 5
2432: ST_TO_ADDR
// uc_nation = nation_russian ;
2433: LD_ADDR_OWVAR 21
2437: PUSH
2438: LD_INT 3
2440: ST_TO_ADDR
// hc_sex = sex_male ;
2441: LD_ADDR_OWVAR 27
2445: PUSH
2446: LD_INT 1
2448: ST_TO_ADDR
// hc_class = class_soldier ;
2449: LD_ADDR_OWVAR 28
2453: PUSH
2454: LD_INT 1
2456: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 0 , 0 ] ;
2457: LD_ADDR_OWVAR 31
2461: PUSH
2462: LD_INT 2
2464: PUSH
2465: LD_INT 1
2467: PUSH
2468: LD_INT 0
2470: PUSH
2471: LD_INT 0
2473: PUSH
2474: EMPTY
2475: LIST
2476: LIST
2477: LIST
2478: LIST
2479: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
2480: LD_ADDR_OWVAR 29
2484: PUSH
2485: LD_INT 10
2487: PUSH
2488: LD_INT 10
2490: PUSH
2491: EMPTY
2492: LIST
2493: LIST
2494: ST_TO_ADDR
// hc_name =  ;
2495: LD_ADDR_OWVAR 26
2499: PUSH
2500: LD_STRING 
2502: ST_TO_ADDR
// uc_direction = 4 ;
2503: LD_ADDR_OWVAR 24
2507: PUSH
2508: LD_INT 4
2510: ST_TO_ADDR
// RuR1 = CreateHuman ;
2511: LD_ADDR_EXP 23
2515: PUSH
2516: CALL_OW 44
2520: ST_TO_ADDR
// SetLives ( RuR1 , RuR_lives ) ;
2521: LD_EXP 23
2525: PPUSH
2526: LD_EXP 94
2530: PPUSH
2531: CALL_OW 234
// hc_name =  ;
2535: LD_ADDR_OWVAR 26
2539: PUSH
2540: LD_STRING 
2542: ST_TO_ADDR
// uc_direction = 4 ;
2543: LD_ADDR_OWVAR 24
2547: PUSH
2548: LD_INT 4
2550: ST_TO_ADDR
// RuR2 = CreateHuman ;
2551: LD_ADDR_EXP 24
2555: PUSH
2556: CALL_OW 44
2560: ST_TO_ADDR
// SetLives ( RuR2 , RuR_lives ) ;
2561: LD_EXP 24
2565: PPUSH
2566: LD_EXP 94
2570: PPUSH
2571: CALL_OW 234
// SetSkill ( RusNE1 , skill_engineering , eng_skill ) ;
2575: LD_INT 26
2577: PPUSH
2578: LD_INT 2
2580: PPUSH
2581: LD_EXP 86
2585: PPUSH
2586: CALL_OW 237
// SetSkill ( RusNSc1 , skill_scientistic , sc_skill ) ;
2590: LD_INT 25
2592: PPUSH
2593: LD_INT 4
2595: PPUSH
2596: LD_EXP 87
2600: PPUSH
2601: CALL_OW 237
// SetSkill ( guard1 , skill_combat , guard_skill ) ;
2605: LD_INT 11
2607: PPUSH
2608: LD_INT 1
2610: PPUSH
2611: LD_EXP 88
2615: PPUSH
2616: CALL_OW 237
// SetSkill ( guard2 , skill_combat , guard_skill ) ;
2620: LD_INT 12
2622: PPUSH
2623: LD_INT 1
2625: PPUSH
2626: LD_EXP 88
2630: PPUSH
2631: CALL_OW 237
// SetSkill ( guard3 , skill_combat , guard_skill ) ;
2635: LD_INT 7
2637: PPUSH
2638: LD_INT 1
2640: PPUSH
2641: LD_EXP 88
2645: PPUSH
2646: CALL_OW 237
// case Difficulty of 1 :
2650: LD_OWVAR 67
2654: PUSH
2655: LD_INT 1
2657: DOUBLE
2658: EQUAL
2659: IFTRUE 2663
2661: GO 2739
2663: POP
// begin SetLives ( BrW1 , 600 ) ;
2664: LD_INT 29
2666: PPUSH
2667: LD_INT 600
2669: PPUSH
2670: CALL_OW 234
// DestroyUnit ( BrW3 ) ;
2674: LD_INT 30
2676: PPUSH
2677: CALL_OW 65
// DestroyUnit ( Brw2 ) ;
2681: LD_INT 9
2683: PPUSH
2684: CALL_OW 65
// DestroyUnit ( RusNSo4 ) ;
2688: LD_INT 28
2690: PPUSH
2691: CALL_OW 65
// DestroyUnit ( RusNSo5 ) ;
2695: LD_INT 24
2697: PPUSH
2698: CALL_OW 65
// DestroyUnit ( RusNSo6 ) ;
2702: LD_INT 31
2704: PPUSH
2705: CALL_OW 65
// DestroyUnit ( RusNE1 ) ;
2709: LD_INT 26
2711: PPUSH
2712: CALL_OW 65
// DestroyUnit ( guard2 ) ;
2716: LD_INT 12
2718: PPUSH
2719: CALL_OW 65
// DestroyUnit ( guard3 ) ;
2723: LD_INT 7
2725: PPUSH
2726: CALL_OW 65
// DestroyUnit ( RusNSo3 ) ;
2730: LD_INT 27
2732: PPUSH
2733: CALL_OW 65
// end ; 2 :
2737: GO 2814
2739: LD_INT 2
2741: DOUBLE
2742: EQUAL
2743: IFTRUE 2747
2745: GO 2802
2747: POP
// begin SetLives ( BrW3 , 700 ) ;
2748: LD_INT 30
2750: PPUSH
2751: LD_INT 700
2753: PPUSH
2754: CALL_OW 234
// DestroyUnit ( Brw2 ) ;
2758: LD_INT 9
2760: PPUSH
2761: CALL_OW 65
// DestroyUnit ( RusNSo4 ) ;
2765: LD_INT 28
2767: PPUSH
2768: CALL_OW 65
// DestroyUnit ( RusNSo5 ) ;
2772: LD_INT 24
2774: PPUSH
2775: CALL_OW 65
// DestroyUnit ( RusNSo6 ) ;
2779: LD_INT 31
2781: PPUSH
2782: CALL_OW 65
// DestroyUnit ( RusNE1 ) ;
2786: LD_INT 26
2788: PPUSH
2789: CALL_OW 65
// DestroyUnit ( guard2 ) ;
2793: LD_INT 12
2795: PPUSH
2796: CALL_OW 65
// end ; 3 :
2800: GO 2814
2802: LD_INT 3
2804: DOUBLE
2805: EQUAL
2806: IFTRUE 2810
2808: GO 2813
2810: POP
// begin end ; end ;
2811: GO 2814
2813: POP
// battle = false ;
2814: LD_ADDR_EXP 75
2818: PUSH
2819: LD_INT 0
2821: ST_TO_ADDR
// count = 0 ;
2822: LD_ADDR_EXP 77
2826: PUSH
2827: LD_INT 0
2829: ST_TO_ADDR
// sergej_succeeds = 0 ;
2830: LD_ADDR_EXP 78
2834: PUSH
2835: LD_INT 0
2837: ST_TO_ADDR
// Khatam_met_americans = 1 ;
2838: LD_ADDR_EXP 33
2842: PUSH
2843: LD_INT 1
2845: ST_TO_ADDR
// disable ( Khatam_met_americans ) ;
2846: LD_EXP 33
2850: DISABLE_MARKED
// escape_flag = false ;
2851: LD_ADDR_EXP 28
2855: PUSH
2856: LD_INT 0
2858: ST_TO_ADDR
// vehicle_goes = 2 ;
2859: LD_ADDR_EXP 27
2863: PUSH
2864: LD_INT 2
2866: ST_TO_ADDR
// disable ( vehicle_goes ) ;
2867: LD_EXP 27
2871: DISABLE_MARKED
// Mikhail_placed = 3 ;
2872: LD_ADDR_EXP 35
2876: PUSH
2877: LD_INT 3
2879: ST_TO_ADDR
// disable ( mikhail_placed ) ;
2880: LD_EXP 35
2884: DISABLE_MARKED
// Mikhail_captured = 4 ;
2885: LD_ADDR_EXP 36
2889: PUSH
2890: LD_INT 4
2892: ST_TO_ADDR
// disable ( Mikhail_captured ) ;
2893: LD_EXP 36
2897: DISABLE_MARKED
// vehicles_detected = 5 ;
2898: LD_ADDR_EXP 31
2902: PUSH
2903: LD_INT 5
2905: ST_TO_ADDR
// disable ( vehicles_detected ) ;
2906: LD_EXP 31
2910: DISABLE_MARKED
// uncanny_vehicles = 6 ;
2911: LD_ADDR_EXP 32
2915: PUSH
2916: LD_INT 6
2918: ST_TO_ADDR
// depot = 8 ;
2919: LD_ADDR_EXP 38
2923: PUSH
2924: LD_INT 8
2926: ST_TO_ADDR
// disable ( depot ) ;
2927: LD_EXP 38
2931: DISABLE_MARKED
// great_escape = 9 ;
2932: LD_ADDR_EXP 40
2936: PUSH
2937: LD_INT 9
2939: ST_TO_ADDR
// disable ( great_escape ) ;
2940: LD_EXP 40
2944: DISABLE_MARKED
// attack = 10 ;
2945: LD_ADDR_EXP 41
2949: PUSH
2950: LD_INT 10
2952: ST_TO_ADDR
// disable ( attack ) ;
2953: LD_EXP 41
2957: DISABLE_MARKED
// remove_mikhail = 11 ;
2958: LD_ADDR_EXP 43
2962: PUSH
2963: LD_INT 11
2965: ST_TO_ADDR
// disable ( remove_mikhail ) ;
2966: LD_EXP 43
2970: DISABLE_MARKED
// conversation = 12 ;
2971: LD_ADDR_EXP 44
2975: PUSH
2976: LD_INT 12
2978: ST_TO_ADDR
// disable ( conversation ) ;
2979: LD_EXP 44
2983: DISABLE_MARKED
// Mikhails_escape = 13 ;
2984: LD_ADDR_EXP 45
2988: PUSH
2989: LD_INT 13
2991: ST_TO_ADDR
// disable ( Mikhails_escape ) ;
2992: LD_EXP 45
2996: DISABLE_MARKED
// rep = true ;
2997: LD_ADDR_EXP 49
3001: PUSH
3002: LD_INT 1
3004: ST_TO_ADDR
// firing1 = 14 ;
3005: LD_ADDR_EXP 51
3009: PUSH
3010: LD_INT 14
3012: ST_TO_ADDR
// disable ( firing1 ) ;
3013: LD_EXP 51
3017: DISABLE_MARKED
// firing2 = 15 ;
3018: LD_ADDR_EXP 52
3022: PUSH
3023: LD_INT 15
3025: ST_TO_ADDR
// disable ( firing2 ) ;
3026: LD_EXP 52
3030: DISABLE_MARKED
// russians_attack = 16 ;
3031: LD_ADDR_EXP 53
3035: PUSH
3036: LD_INT 16
3038: ST_TO_ADDR
// disable ( russians_attack ) ;
3039: LD_EXP 53
3043: DISABLE_MARKED
// russians_attack1 = 17 ;
3044: LD_ADDR_EXP 54
3048: PUSH
3049: LD_INT 17
3051: ST_TO_ADDR
// disable ( russians_attack1 ) ;
3052: LD_EXP 54
3056: DISABLE_MARKED
// tigers_allowed = 18 ;
3057: LD_ADDR_EXP 81
3061: PUSH
3062: LD_INT 18
3064: ST_TO_ADDR
// disable ( tigers_allowed ) ;
3065: LD_EXP 81
3069: DISABLE_MARKED
// remove_tigers = 19 ;
3070: LD_ADDR_EXP 82
3074: PUSH
3075: LD_INT 19
3077: ST_TO_ADDR
// disable ( remove_tigers ) ;
3078: LD_EXP 82
3082: DISABLE_MARKED
// Engineers_not_dead = 20 ;
3083: LD_ADDR_EXP 83
3087: PUSH
3088: LD_INT 20
3090: ST_TO_ADDR
// disable ( Engineers_not_dead ) ;
3091: LD_EXP 83
3095: DISABLE_MARKED
// East_guard_seen = 21 ;
3096: LD_ADDR_EXP 96
3100: PUSH
3101: LD_INT 21
3103: ST_TO_ADDR
// enable ( East_guard_seen ) ;
3104: LD_EXP 96
3108: ENABLE_MARKED
// mikhail_marked_for_death = false ;
3109: LD_ADDR_EXP 42
3113: PUSH
3114: LD_INT 0
3116: ST_TO_ADDR
// JMMInVehicle := false ;
3117: LD_ADDR_EXP 118
3121: PUSH
3122: LD_INT 0
3124: ST_TO_ADDR
// CyrusInVehicle := false ;
3125: LD_ADDR_EXP 119
3129: PUSH
3130: LD_INT 0
3132: ST_TO_ADDR
// Dialogue_Number = 0 ;
3133: LD_ADDR_EXP 101
3137: PUSH
3138: LD_INT 0
3140: ST_TO_ADDR
// Skip = false ;
3141: LD_ADDR_EXP 102
3145: PUSH
3146: LD_INT 0
3148: ST_TO_ADDR
// JMM_saw_east_guard = false ;
3149: LD_ADDR_EXP 95
3153: PUSH
3154: LD_INT 0
3156: ST_TO_ADDR
// Attack_canceled = false ;
3157: LD_ADDR_EXP 93
3161: PUSH
3162: LD_INT 0
3164: ST_TO_ADDR
// lost_units = 0 ;
3165: LD_ADDR_EXP 90
3169: PUSH
3170: LD_INT 0
3172: ST_TO_ADDR
// First_Capture = true ;
3173: LD_ADDR_EXP 84
3177: PUSH
3178: LD_INT 1
3180: ST_TO_ADDR
// vehicle1_new = 0 ;
3181: LD_ADDR_EXP 97
3185: PUSH
3186: LD_INT 0
3188: ST_TO_ADDR
// vehicle2_new = 0 ;
3189: LD_ADDR_EXP 98
3193: PUSH
3194: LD_INT 0
3196: ST_TO_ADDR
// escape_dialogue = false ;
3197: LD_ADDR_EXP 99
3201: PUSH
3202: LD_INT 0
3204: ST_TO_ADDR
// vehicle_goes_flag = true ;
3205: LD_ADDR_EXP 100
3209: PUSH
3210: LD_INT 1
3212: ST_TO_ADDR
// Tested_Americans = [ ] ;
3213: LD_ADDR_EXP 113
3217: PUSH
3218: EMPTY
3219: ST_TO_ADDR
// Init_Lives = [ ] ;
3220: LD_ADDR_EXP 112
3224: PUSH
3225: EMPTY
3226: ST_TO_ADDR
// Mikhails_Escape_Disabled = true ;
3227: LD_ADDR_EXP 91
3231: PUSH
3232: LD_INT 1
3234: ST_TO_ADDR
// Initial_Lives = GetLives ( [ John , Cyrus , Bobby , Khatam , Lisa , AmME1 , AmFE2 , AmMSo3 , Nick ] ) ;
3235: LD_ADDR_EXP 92
3239: PUSH
3240: LD_EXP 7
3244: PUSH
3245: LD_EXP 8
3249: PUSH
3250: LD_EXP 9
3254: PUSH
3255: LD_EXP 10
3259: PUSH
3260: LD_EXP 12
3264: PUSH
3265: LD_EXP 13
3269: PUSH
3270: LD_EXP 14
3274: PUSH
3275: LD_EXP 15
3279: PUSH
3280: LD_EXP 11
3284: PUSH
3285: EMPTY
3286: LIST
3287: LIST
3288: LIST
3289: LIST
3290: LIST
3291: LIST
3292: LIST
3293: LIST
3294: LIST
3295: PPUSH
3296: CALL_OW 256
3300: ST_TO_ADDR
// CenterOnXY ( 41 , 65 ) ;
3301: LD_INT 41
3303: PPUSH
3304: LD_INT 65
3306: PPUSH
3307: CALL_OW 84
// end ;
3311: LD_VAR 0 1
3315: RET
// starting begin RandomizeAll ;
3316: CALL_OW 11
// testing = false ;
3320: LD_ADDR_EXP 2
3324: PUSH
3325: LD_INT 0
3327: ST_TO_ADDR
// test = 0 ;
3328: LD_ADDR_EXP 1
3332: PUSH
3333: LD_INT 0
3335: ST_TO_ADDR
// Prepare_difficulty ;
3336: CALL 0 0 0
// InitNorthBase ;
3340: CALL 21027 0 0
// Init ;
3344: CALL 411 0 0
// end ;
3348: END
// on UnitDestroyed ( un ) do begin if un = Mikhail then
3349: LD_VAR 0 1
3353: PUSH
3354: LD_EXP 65
3358: EQUAL
3359: IFFALSE 3365
// SA_MikhailKilled ;
3361: CALL 23165 0 0
// end ; end_of_file
3365: PPOPN 1
3367: END
// export Speaker ; var Byl_u_zakladny1 , Followed , Mikhails_outcome , Mikhail_status , end_of_m ; var rsol , rv , tiger , sour , target_of_escape , attacker ; export JMMInVehicle , CyrusInVehicle ; export function WaitTask ( list_of_units , reaction ) ; var i , busy ; begin
3368: LD_INT 0
3370: PPUSH
3371: PPUSH
3372: PPUSH
// wait ( 2 ) ;
3373: LD_INT 2
3375: PPUSH
3376: CALL_OW 67
// repeat busy = false ;
3380: LD_ADDR_VAR 0 5
3384: PUSH
3385: LD_INT 0
3387: ST_TO_ADDR
// for i in list_of_units do
3388: LD_ADDR_VAR 0 4
3392: PUSH
3393: LD_VAR 0 1
3397: PUSH
3398: FOR_IN
3399: IFFALSE 3433
// if IsOk ( i ) then
3401: LD_VAR 0 4
3405: PPUSH
3406: CALL_OW 302
3410: IFFALSE 3431
// if HasTask ( i ) then
3412: LD_VAR 0 4
3416: PPUSH
3417: CALL_OW 314
3421: IFFALSE 3431
// busy = true ;
3423: LD_ADDR_VAR 0 5
3427: PUSH
3428: LD_INT 1
3430: ST_TO_ADDR
3431: GO 3398
3433: POP
3434: POP
// if busy then
3435: LD_VAR 0 5
3439: IFFALSE 3454
// wait ( 0 0$1 * reaction ) ;
3441: LD_INT 35
3443: PUSH
3444: LD_VAR 0 2
3448: MUL
3449: PPUSH
3450: CALL_OW 67
// until not ( busy ) ;
3454: LD_VAR 0 5
3458: NOT
3459: IFFALSE 3380
// end ;
3461: LD_VAR 0 3
3465: RET
// every 0 0$1 trigger not ( test ) do var sold , alive , Un , hlp ;
3466: LD_EXP 1
3470: NOT
3471: IFFALSE 6892
3473: GO 3475
3475: DISABLE
3476: LD_INT 0
3478: PPUSH
3479: PPUSH
3480: PPUSH
3481: PPUSH
// begin hlp = tick ;
3482: LD_ADDR_VAR 0 4
3486: PUSH
3487: LD_OWVAR 1
3491: ST_TO_ADDR
// IngameOn ;
3492: CALL_OW 8
// Dialogue_Number = 1 ;
3496: LD_ADDR_EXP 101
3500: PUSH
3501: LD_INT 1
3503: ST_TO_ADDR
// if IsOk ( Bobby ) or IsOk ( Cyrus ) then
3504: LD_EXP 9
3508: PPUSH
3509: CALL_OW 302
3513: PUSH
3514: LD_EXP 8
3518: PPUSH
3519: CALL_OW 302
3523: OR
3524: IFFALSE 5574
// begin alive = [ ] ;
3526: LD_ADDR_VAR 0 2
3530: PUSH
3531: EMPTY
3532: ST_TO_ADDR
// Speaker = [ ] ;
3533: LD_ADDR_EXP 117
3537: PUSH
3538: EMPTY
3539: ST_TO_ADDR
// if IsOk ( Bobby ) then
3540: LD_EXP 9
3544: PPUSH
3545: CALL_OW 302
3549: IFFALSE 3567
// alive = alive ^ Bobby ;
3551: LD_ADDR_VAR 0 2
3555: PUSH
3556: LD_VAR 0 2
3560: PUSH
3561: LD_EXP 9
3565: ADD
3566: ST_TO_ADDR
// if IsOk ( Cyrus ) then
3567: LD_EXP 8
3571: PPUSH
3572: CALL_OW 302
3576: IFFALSE 3594
// alive = alive ^ Cyrus ;
3578: LD_ADDR_VAR 0 2
3582: PUSH
3583: LD_VAR 0 2
3587: PUSH
3588: LD_EXP 8
3592: ADD
3593: ST_TO_ADDR
// if IsOk ( Bobby ) and not ( Skip ) then
3594: LD_EXP 9
3598: PPUSH
3599: CALL_OW 302
3603: PUSH
3604: LD_EXP 102
3608: NOT
3609: AND
3610: IFFALSE 3653
// if IsOk ( Cyrus ) then
3612: LD_EXP 8
3616: PPUSH
3617: CALL_OW 302
3621: IFFALSE 3639
// AddComTurnUnit ( Bobby , Cyrus ) else
3623: LD_EXP 9
3627: PPUSH
3628: LD_EXP 8
3632: PPUSH
3633: CALL_OW 179
3637: GO 3653
// AddComTurnUnit ( Bobby , John ) ;
3639: LD_EXP 9
3643: PPUSH
3644: LD_EXP 7
3648: PPUSH
3649: CALL_OW 179
// if IsOk ( Bobby ) and not ( Skip ) then
3653: LD_EXP 9
3657: PPUSH
3658: CALL_OW 302
3662: PUSH
3663: LD_EXP 102
3667: NOT
3668: AND
3669: IFFALSE 3683
// AddComWait ( Bobby , 0 0$1 ) ;
3671: LD_EXP 9
3675: PPUSH
3676: LD_INT 35
3678: PPUSH
3679: CALL_OW 202
// if IsOk ( Bobby ) and not ( Skip ) then
3683: LD_EXP 9
3687: PPUSH
3688: CALL_OW 302
3692: PUSH
3693: LD_EXP 102
3697: NOT
3698: AND
3699: IFFALSE 3716
// AddComMoveXY ( Bobby , 39 , 67 ) ;
3701: LD_EXP 9
3705: PPUSH
3706: LD_INT 39
3708: PPUSH
3709: LD_INT 67
3711: PPUSH
3712: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
3716: LD_EXP 9
3720: PPUSH
3721: CALL_OW 302
3725: PUSH
3726: LD_EXP 102
3730: NOT
3731: AND
3732: IFFALSE 3748
// AddComTurnUnit ( Bobby , John ) ;
3734: LD_EXP 9
3738: PPUSH
3739: LD_EXP 7
3743: PPUSH
3744: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
3748: LD_EXP 8
3752: PPUSH
3753: CALL_OW 302
3757: PUSH
3758: LD_EXP 102
3762: NOT
3763: AND
3764: IFFALSE 3778
// ComWait ( Cyrus , 0 0$0.5 ) ;
3766: LD_EXP 8
3770: PPUSH
3771: LD_INT 18
3773: PPUSH
3774: CALL_OW 142
// if IsOk ( Cyrus ) and not ( Skip ) then
3778: LD_EXP 8
3782: PPUSH
3783: CALL_OW 302
3787: PUSH
3788: LD_EXP 102
3792: NOT
3793: AND
3794: IFFALSE 3811
// AddComMoveXY ( Cyrus , 41 , 71 ) ;
3796: LD_EXP 8
3800: PPUSH
3801: LD_INT 41
3803: PPUSH
3804: LD_INT 71
3806: PPUSH
3807: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
3811: LD_EXP 8
3815: PPUSH
3816: CALL_OW 302
3820: PUSH
3821: LD_EXP 102
3825: NOT
3826: AND
3827: IFFALSE 3841
// AddComWait ( Cyrus , 0 0$1 ) ;
3829: LD_EXP 8
3833: PPUSH
3834: LD_INT 35
3836: PPUSH
3837: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
3841: LD_EXP 7
3845: PPUSH
3846: CALL_OW 302
3850: PUSH
3851: LD_EXP 102
3855: NOT
3856: AND
3857: IFFALSE 3874
// ComMoveXY ( John , 47 , 68 ) ;
3859: LD_EXP 7
3863: PPUSH
3864: LD_INT 47
3866: PPUSH
3867: LD_INT 68
3869: PPUSH
3870: CALL_OW 111
// if IsOk ( John ) and not ( Skip ) then
3874: LD_EXP 7
3878: PPUSH
3879: CALL_OW 302
3883: PUSH
3884: LD_EXP 102
3888: NOT
3889: AND
3890: IFFALSE 3933
// if IsOk ( Bobby ) then
3892: LD_EXP 9
3896: PPUSH
3897: CALL_OW 302
3901: IFFALSE 3919
// AddComTurnUnit ( John , Bobby ) else
3903: LD_EXP 7
3907: PPUSH
3908: LD_EXP 9
3912: PPUSH
3913: CALL_OW 179
3917: GO 3933
// AddComTurnUnit ( John , Cyrus ) ;
3919: LD_EXP 7
3923: PPUSH
3924: LD_EXP 8
3928: PPUSH
3929: CALL_OW 179
// Un = alive [ Rand ( 1 , alive ) ] ;
3933: LD_ADDR_VAR 0 3
3937: PUSH
3938: LD_VAR 0 2
3942: PUSH
3943: LD_INT 1
3945: PPUSH
3946: LD_VAR 0 2
3950: PPUSH
3951: CALL_OW 12
3955: ARRAY
3956: ST_TO_ADDR
// if not ( Skip ) then
3957: LD_EXP 102
3961: NOT
3962: IFFALSE 3999
// if ( Un = Bobby ) and IsOk ( Bobby ) then
3964: LD_VAR 0 3
3968: PUSH
3969: LD_EXP 9
3973: EQUAL
3974: PUSH
3975: LD_EXP 9
3979: PPUSH
3980: CALL_OW 302
3984: AND
3985: IFFALSE 3999
// Say ( Bobby , D1a-Bobby-1 ) ;
3987: LD_EXP 9
3991: PPUSH
3992: LD_STRING D1a-Bobby-1
3994: PPUSH
3995: CALL_OW 88
// if not ( Skip ) then
3999: LD_EXP 102
4003: NOT
4004: IFFALSE 4041
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
4006: LD_VAR 0 3
4010: PUSH
4011: LD_EXP 8
4015: EQUAL
4016: PUSH
4017: LD_EXP 8
4021: PPUSH
4022: CALL_OW 302
4026: AND
4027: IFFALSE 4041
// Say ( Cyrus , D1a-Cyrus-1 ) ;
4029: LD_EXP 8
4033: PPUSH
4034: LD_STRING D1a-Cyrus-1
4036: PPUSH
4037: CALL_OW 88
// if IsOk ( Bobby ) and not ( Skip ) then
4041: LD_EXP 9
4045: PPUSH
4046: CALL_OW 302
4050: PUSH
4051: LD_EXP 102
4055: NOT
4056: AND
4057: IFFALSE 4074
// ComMoveXY ( Bobby , 47 , 70 ) ;
4059: LD_EXP 9
4063: PPUSH
4064: LD_INT 47
4066: PPUSH
4067: LD_INT 70
4069: PPUSH
4070: CALL_OW 111
// if IsOk ( Bobby ) and not ( Skip ) then
4074: LD_EXP 9
4078: PPUSH
4079: CALL_OW 302
4083: PUSH
4084: LD_EXP 102
4088: NOT
4089: AND
4090: IFFALSE 4104
// AddComWait ( Bobby , 0 0$0.5 ) ;
4092: LD_EXP 9
4096: PPUSH
4097: LD_INT 18
4099: PPUSH
4100: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4104: LD_EXP 8
4108: PPUSH
4109: CALL_OW 302
4113: PUSH
4114: LD_EXP 102
4118: NOT
4119: AND
4120: IFFALSE 4137
// AddComMoveXY ( Cyrus , 43 , 69 ) ;
4122: LD_EXP 8
4126: PPUSH
4127: LD_INT 43
4129: PPUSH
4130: LD_INT 69
4132: PPUSH
4133: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
4137: LD_EXP 8
4141: PPUSH
4142: CALL_OW 302
4146: PUSH
4147: LD_EXP 102
4151: NOT
4152: AND
4153: IFFALSE 4167
// AddComWait ( Cyrus , 0 0$0.5 ) ;
4155: LD_EXP 8
4159: PPUSH
4160: LD_INT 18
4162: PPUSH
4163: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4167: LD_EXP 8
4171: PPUSH
4172: CALL_OW 302
4176: PUSH
4177: LD_EXP 102
4181: NOT
4182: AND
4183: IFFALSE 4226
// if IsOk ( Bobby ) then
4185: LD_EXP 9
4189: PPUSH
4190: CALL_OW 302
4194: IFFALSE 4212
// AddComTurnUnit ( Cyrus , Bobby ) else
4196: LD_EXP 8
4200: PPUSH
4201: LD_EXP 9
4205: PPUSH
4206: CALL_OW 179
4210: GO 4226
// AddComTurnUnit ( Cyrus , John ) ;
4212: LD_EXP 8
4216: PPUSH
4217: LD_EXP 7
4221: PPUSH
4222: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4226: LD_EXP 7
4230: PPUSH
4231: CALL_OW 302
4235: PUSH
4236: LD_EXP 102
4240: NOT
4241: AND
4242: IFFALSE 4256
// AddComWait ( John , 0 0$5 ) ;
4244: LD_EXP 7
4248: PPUSH
4249: LD_INT 175
4251: PPUSH
4252: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4256: LD_EXP 7
4260: PPUSH
4261: CALL_OW 302
4265: PUSH
4266: LD_EXP 102
4270: NOT
4271: AND
4272: IFFALSE 4289
// AddComMoveXY ( John , 36 , 63 ) ;
4274: LD_EXP 7
4278: PPUSH
4279: LD_INT 36
4281: PPUSH
4282: LD_INT 63
4284: PPUSH
4285: CALL_OW 171
// if IsOk ( John ) and not ( Skip ) then
4289: LD_EXP 7
4293: PPUSH
4294: CALL_OW 302
4298: PUSH
4299: LD_EXP 102
4303: NOT
4304: AND
4305: IFFALSE 4348
// if IsOk ( Cyrus ) then
4307: LD_EXP 8
4311: PPUSH
4312: CALL_OW 302
4316: IFFALSE 4334
// AddComTurnUnit ( John , Cyrus ) else
4318: LD_EXP 7
4322: PPUSH
4323: LD_EXP 8
4327: PPUSH
4328: CALL_OW 179
4332: GO 4348
// AddComTurnUnit ( John , Bobby ) ;
4334: LD_EXP 7
4338: PPUSH
4339: LD_EXP 9
4343: PPUSH
4344: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4348: LD_EXP 7
4352: PPUSH
4353: CALL_OW 302
4357: PUSH
4358: LD_EXP 102
4362: NOT
4363: AND
4364: IFFALSE 4378
// Say ( John , D1a-JMM-1 ) ;
4366: LD_EXP 7
4370: PPUSH
4371: LD_STRING D1a-JMM-1
4373: PPUSH
4374: CALL_OW 88
// Un = alive [ Rand ( 1 , alive ) ] ;
4378: LD_ADDR_VAR 0 3
4382: PUSH
4383: LD_VAR 0 2
4387: PUSH
4388: LD_INT 1
4390: PPUSH
4391: LD_VAR 0 2
4395: PPUSH
4396: CALL_OW 12
4400: ARRAY
4401: ST_TO_ADDR
// if not ( Skip ) then
4402: LD_EXP 102
4406: NOT
4407: IFFALSE 4444
// if ( Un = Bobby ) and IsOk ( Bobby ) then
4409: LD_VAR 0 3
4413: PUSH
4414: LD_EXP 9
4418: EQUAL
4419: PUSH
4420: LD_EXP 9
4424: PPUSH
4425: CALL_OW 302
4429: AND
4430: IFFALSE 4444
// Say ( Bobby , D1a-Bobby-2 ) ;
4432: LD_EXP 9
4436: PPUSH
4437: LD_STRING D1a-Bobby-2
4439: PPUSH
4440: CALL_OW 88
// if not ( Skip ) then
4444: LD_EXP 102
4448: NOT
4449: IFFALSE 4486
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
4451: LD_VAR 0 3
4455: PUSH
4456: LD_EXP 8
4460: EQUAL
4461: PUSH
4462: LD_EXP 8
4466: PPUSH
4467: CALL_OW 302
4471: AND
4472: IFFALSE 4486
// Say ( Cyrus , D1a-Cyrus-2 ) ;
4474: LD_EXP 8
4478: PPUSH
4479: LD_STRING D1a-Cyrus-2
4481: PPUSH
4482: CALL_OW 88
// CenterOnUnits ( [ John , Lisa ] ) ;
4486: LD_EXP 7
4490: PUSH
4491: LD_EXP 12
4495: PUSH
4496: EMPTY
4497: LIST
4498: LIST
4499: PPUSH
4500: CALL_OW 85
// if IsOk ( Bobby ) and not ( Skip ) then
4504: LD_EXP 9
4508: PPUSH
4509: CALL_OW 302
4513: PUSH
4514: LD_EXP 102
4518: NOT
4519: AND
4520: IFFALSE 4536
// AddComTurnUnit ( Bobby , John ) ;
4522: LD_EXP 9
4526: PPUSH
4527: LD_EXP 7
4531: PPUSH
4532: CALL_OW 179
// if IsOk ( Bobby ) and not ( Skip ) then
4536: LD_EXP 9
4540: PPUSH
4541: CALL_OW 302
4545: PUSH
4546: LD_EXP 102
4550: NOT
4551: AND
4552: IFFALSE 4569
// AddComMoveXY ( Bobby , 42 , 69 ) ;
4554: LD_EXP 9
4558: PPUSH
4559: LD_INT 42
4561: PPUSH
4562: LD_INT 69
4564: PPUSH
4565: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
4569: LD_EXP 9
4573: PPUSH
4574: CALL_OW 302
4578: PUSH
4579: LD_EXP 102
4583: NOT
4584: AND
4585: IFFALSE 4599
// AddComWait ( Bobby , 0 0$0.3 ) ;
4587: LD_EXP 9
4591: PPUSH
4592: LD_INT 10
4594: PPUSH
4595: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4599: LD_EXP 8
4603: PPUSH
4604: CALL_OW 302
4608: PUSH
4609: LD_EXP 102
4613: NOT
4614: AND
4615: IFFALSE 4629
// AddComWait ( Cyrus , 0 0$2 ) ;
4617: LD_EXP 8
4621: PPUSH
4622: LD_INT 70
4624: PPUSH
4625: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4629: LD_EXP 8
4633: PPUSH
4634: CALL_OW 302
4638: PUSH
4639: LD_EXP 102
4643: NOT
4644: AND
4645: IFFALSE 4662
// AddComMoveXY ( Cyrus , 37 , 66 ) ;
4647: LD_EXP 8
4651: PPUSH
4652: LD_INT 37
4654: PPUSH
4655: LD_INT 66
4657: PPUSH
4658: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
4662: LD_EXP 8
4666: PPUSH
4667: CALL_OW 302
4671: PUSH
4672: LD_EXP 102
4676: NOT
4677: AND
4678: IFFALSE 4694
// AddComTurnUnit ( Cyrus , John ) ;
4680: LD_EXP 8
4684: PPUSH
4685: LD_EXP 7
4689: PPUSH
4690: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4694: LD_EXP 7
4698: PPUSH
4699: CALL_OW 302
4703: PUSH
4704: LD_EXP 102
4708: NOT
4709: AND
4710: IFFALSE 4724
// AddComWait ( John , 0 0$3 ) ;
4712: LD_EXP 7
4716: PPUSH
4717: LD_INT 105
4719: PPUSH
4720: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4724: LD_EXP 7
4728: PPUSH
4729: CALL_OW 302
4733: PUSH
4734: LD_EXP 102
4738: NOT
4739: AND
4740: IFFALSE 4756
// AddComTurnUnit ( John , Lisa ) ;
4742: LD_EXP 7
4746: PPUSH
4747: LD_EXP 12
4751: PPUSH
4752: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4756: LD_EXP 7
4760: PPUSH
4761: CALL_OW 302
4765: PUSH
4766: LD_EXP 102
4770: NOT
4771: AND
4772: IFFALSE 4786
// AddComWait ( John , 0 0$1 ) ;
4774: LD_EXP 7
4778: PPUSH
4779: LD_INT 35
4781: PPUSH
4782: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4786: LD_EXP 7
4790: PPUSH
4791: CALL_OW 302
4795: PUSH
4796: LD_EXP 102
4800: NOT
4801: AND
4802: IFFALSE 4813
// AddComHold ( John ) ;
4804: LD_EXP 7
4808: PPUSH
4809: CALL_OW 200
// if IsOk ( John ) and not ( Skip ) then
4813: LD_EXP 7
4817: PPUSH
4818: CALL_OW 302
4822: PUSH
4823: LD_EXP 102
4827: NOT
4828: AND
4829: IFFALSE 4843
// Say ( John , D1a-JMM-2 ) ;
4831: LD_EXP 7
4835: PPUSH
4836: LD_STRING D1a-JMM-2
4838: PPUSH
4839: CALL_OW 88
// if IsOk ( John ) and not ( Skip ) then
4843: LD_EXP 7
4847: PPUSH
4848: CALL_OW 302
4852: PUSH
4853: LD_EXP 102
4857: NOT
4858: AND
4859: IFFALSE 4873
// ComWait ( John , 0 0$0.5 ) ;
4861: LD_EXP 7
4865: PPUSH
4866: LD_INT 18
4868: PPUSH
4869: CALL_OW 142
// if IsOk ( John ) and not ( Skip ) then
4873: LD_EXP 7
4877: PPUSH
4878: CALL_OW 302
4882: PUSH
4883: LD_EXP 102
4887: NOT
4888: AND
4889: IFFALSE 4905
// AddComTurnUnit ( John , Lisa ) ;
4891: LD_EXP 7
4895: PPUSH
4896: LD_EXP 12
4900: PPUSH
4901: CALL_OW 179
// if not ( IsAt ( John , 36 , 63 ) ) then
4905: LD_EXP 7
4909: PPUSH
4910: LD_INT 36
4912: PPUSH
4913: LD_INT 63
4915: PPUSH
4916: CALL_OW 307
4920: NOT
4921: IFFALSE 4952
// begin ComMoveXY ( John , 36 , 63 ) ;
4923: LD_EXP 7
4927: PPUSH
4928: LD_INT 36
4930: PPUSH
4931: LD_INT 63
4933: PPUSH
4934: CALL_OW 111
// AddComTurnUnit ( John , Lisa ) ;
4938: LD_EXP 7
4942: PPUSH
4943: LD_EXP 12
4947: PPUSH
4948: CALL_OW 179
// end ; if IsOk ( Bobby ) and not ( Skip ) then
4952: LD_EXP 9
4956: PPUSH
4957: CALL_OW 302
4961: PUSH
4962: LD_EXP 102
4966: NOT
4967: AND
4968: IFFALSE 4982
// ComWait ( Bobby , 0 0$1 ) ;
4970: LD_EXP 9
4974: PPUSH
4975: LD_INT 35
4977: PPUSH
4978: CALL_OW 142
// if IsOk ( Bobby ) and not ( Skip ) then
4982: LD_EXP 9
4986: PPUSH
4987: CALL_OW 302
4991: PUSH
4992: LD_EXP 102
4996: NOT
4997: AND
4998: IFFALSE 5014
// AddComTurnUnit ( Bobby , Lisa ) ;
5000: LD_EXP 9
5004: PPUSH
5005: LD_EXP 12
5009: PPUSH
5010: CALL_OW 179
// if IsOk ( Bobby ) and not ( IsAt ( Bobby , 36 , 61 ) ) then
5014: LD_EXP 9
5018: PPUSH
5019: CALL_OW 302
5023: PUSH
5024: LD_EXP 9
5028: PPUSH
5029: LD_INT 36
5031: PPUSH
5032: LD_INT 61
5034: PPUSH
5035: CALL_OW 307
5039: NOT
5040: AND
5041: IFFALSE 5058
// AddComMoveXY ( Bobby , 36 , 61 ) ;
5043: LD_EXP 9
5047: PPUSH
5048: LD_INT 36
5050: PPUSH
5051: LD_INT 61
5053: PPUSH
5054: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
5058: LD_EXP 9
5062: PPUSH
5063: CALL_OW 302
5067: PUSH
5068: LD_EXP 102
5072: NOT
5073: AND
5074: IFFALSE 5088
// AddComWait ( Bobby , 0 0$0.5 ) ;
5076: LD_EXP 9
5080: PPUSH
5081: LD_INT 18
5083: PPUSH
5084: CALL_OW 202
// if IsOk ( Bobby ) and not ( Skip ) then
5088: LD_EXP 9
5092: PPUSH
5093: CALL_OW 302
5097: PUSH
5098: LD_EXP 102
5102: NOT
5103: AND
5104: IFFALSE 5120
// AddComTurnUnit ( Bobby , Lisa ) ;
5106: LD_EXP 9
5110: PPUSH
5111: LD_EXP 12
5115: PPUSH
5116: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
5120: LD_EXP 8
5124: PPUSH
5125: CALL_OW 302
5129: PUSH
5130: LD_EXP 102
5134: NOT
5135: AND
5136: IFFALSE 5150
// ComWait ( Cyrus , 0 0$1 ) ;
5138: LD_EXP 8
5142: PPUSH
5143: LD_INT 35
5145: PPUSH
5146: CALL_OW 142
// if IsOk ( Cyrus ) and not ( Skip ) then
5150: LD_EXP 8
5154: PPUSH
5155: CALL_OW 302
5159: PUSH
5160: LD_EXP 102
5164: NOT
5165: AND
5166: IFFALSE 5182
// AddComTurnUnit ( Cyrus , Lisa ) ;
5168: LD_EXP 8
5172: PPUSH
5173: LD_EXP 12
5177: PPUSH
5178: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
5182: LD_EXP 8
5186: PPUSH
5187: CALL_OW 302
5191: PUSH
5192: LD_EXP 102
5196: NOT
5197: AND
5198: IFFALSE 5212
// AddComWait ( Cyrus , 0 0$1 ) ;
5200: LD_EXP 8
5204: PPUSH
5205: LD_INT 35
5207: PPUSH
5208: CALL_OW 202
// if IsOk ( Cyrus ) and not ( IsAt ( Cyrus , 35 , 63 ) ) then
5212: LD_EXP 8
5216: PPUSH
5217: CALL_OW 302
5221: PUSH
5222: LD_EXP 8
5226: PPUSH
5227: LD_INT 35
5229: PPUSH
5230: LD_INT 63
5232: PPUSH
5233: CALL_OW 307
5237: NOT
5238: AND
5239: IFFALSE 5256
// AddComMoveXY ( Cyrus , 35 , 63 ) ;
5241: LD_EXP 8
5245: PPUSH
5246: LD_INT 35
5248: PPUSH
5249: LD_INT 63
5251: PPUSH
5252: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
5256: LD_EXP 8
5260: PPUSH
5261: CALL_OW 302
5265: PUSH
5266: LD_EXP 102
5270: NOT
5271: AND
5272: IFFALSE 5288
// AddComTurnUnit ( Cyrus , Lisa ) ;
5274: LD_EXP 8
5278: PPUSH
5279: LD_EXP 12
5283: PPUSH
5284: CALL_OW 179
// if IsOk ( Lisa ) and not ( Skip ) then
5288: LD_EXP 12
5292: PPUSH
5293: CALL_OW 302
5297: PUSH
5298: LD_EXP 102
5302: NOT
5303: AND
5304: IFFALSE 5315
// CenterOnUnits ( Lisa ) ;
5306: LD_EXP 12
5310: PPUSH
5311: CALL_OW 85
// if IsOk ( Lisa ) and not ( Skip ) then
5315: LD_EXP 12
5319: PPUSH
5320: CALL_OW 302
5324: PUSH
5325: LD_EXP 102
5329: NOT
5330: AND
5331: IFFALSE 5345
// ComWait ( Lisa , 0 0$2 ) ;
5333: LD_EXP 12
5337: PPUSH
5338: LD_INT 70
5340: PPUSH
5341: CALL_OW 142
// AddComWalk ( Lisa ) ;
5345: LD_EXP 12
5349: PPUSH
5350: CALL_OW 198
// AddComMoveXY ( Lisa , 33 , 59 ) ;
5354: LD_EXP 12
5358: PPUSH
5359: LD_INT 33
5361: PPUSH
5362: LD_INT 59
5364: PPUSH
5365: CALL_OW 171
// AddComTurnUnit ( Lisa , John ) ;
5369: LD_EXP 12
5373: PPUSH
5374: LD_EXP 7
5378: PPUSH
5379: CALL_OW 179
// if not ( Skip ) then
5383: LD_EXP 102
5387: NOT
5388: IFFALSE 5402
// ComWait ( AmME1 , 0 0$3 ) ;
5390: LD_EXP 13
5394: PPUSH
5395: LD_INT 105
5397: PPUSH
5398: CALL_OW 142
// AddComWalk ( AmME1 ) ;
5402: LD_EXP 13
5406: PPUSH
5407: CALL_OW 198
// AddComMoveXY ( AmME1 , 31 , 58 ) ;
5411: LD_EXP 13
5415: PPUSH
5416: LD_INT 31
5418: PPUSH
5419: LD_INT 58
5421: PPUSH
5422: CALL_OW 171
// AddComTurnUnit ( AmME1 , John ) ;
5426: LD_EXP 13
5430: PPUSH
5431: LD_EXP 7
5435: PPUSH
5436: CALL_OW 179
// if not ( Skip ) then
5440: LD_EXP 102
5444: NOT
5445: IFFALSE 5459
// ComWait ( AmFE2 , 0 0$3 ) ;
5447: LD_EXP 14
5451: PPUSH
5452: LD_INT 105
5454: PPUSH
5455: CALL_OW 142
// AddComWalk ( AmFE2 ) ;
5459: LD_EXP 14
5463: PPUSH
5464: CALL_OW 198
// AddComMoveXY ( AmFE2 , 33 , 56 ) ;
5468: LD_EXP 14
5472: PPUSH
5473: LD_INT 33
5475: PPUSH
5476: LD_INT 56
5478: PPUSH
5479: CALL_OW 171
// AddComTurnUnit ( AmFE2 , John ) ;
5483: LD_EXP 14
5487: PPUSH
5488: LD_EXP 7
5492: PPUSH
5493: CALL_OW 179
// if Nick then
5497: LD_EXP 11
5501: IFFALSE 5560
// begin if not ( Skip ) then
5503: LD_EXP 102
5507: NOT
5508: IFFALSE 5522
// ComWait ( Nick , 0 0$2 ) ;
5510: LD_EXP 11
5514: PPUSH
5515: LD_INT 70
5517: PPUSH
5518: CALL_OW 142
// AddComWalk ( Nick ) ;
5522: LD_EXP 11
5526: PPUSH
5527: CALL_OW 198
// AddComMoveXY ( Nick , 34 , 57 ) ;
5531: LD_EXP 11
5535: PPUSH
5536: LD_INT 34
5538: PPUSH
5539: LD_INT 57
5541: PPUSH
5542: CALL_OW 171
// AddComTurnUnit ( Nick , John ) ;
5546: LD_EXP 11
5550: PPUSH
5551: LD_EXP 7
5555: PPUSH
5556: CALL_OW 179
// end ; Say ( Lisa , D1a-Lisa-2 ) ;
5560: LD_EXP 12
5564: PPUSH
5565: LD_STRING D1a-Lisa-2
5567: PPUSH
5568: CALL_OW 88
// end else
5572: GO 6301
// begin ComMoveXY ( John , 49 , 66 ) ;
5574: LD_EXP 7
5578: PPUSH
5579: LD_INT 49
5581: PPUSH
5582: LD_INT 66
5584: PPUSH
5585: CALL_OW 111
// AddComWait ( John , 0 0$0.5 ) ;
5589: LD_EXP 7
5593: PPUSH
5594: LD_INT 18
5596: PPUSH
5597: CALL_OW 202
// if not ( Skip ) then
5601: LD_EXP 102
5605: NOT
5606: IFFALSE 5615
// Wait ( 0 0$3 ) ;
5608: LD_INT 105
5610: PPUSH
5611: CALL_OW 67
// if not ( Skip ) then
5615: LD_EXP 102
5619: NOT
5620: IFFALSE 5634
// Say ( John , D1b-JMM-1 ) ;
5622: LD_EXP 7
5626: PPUSH
5627: LD_STRING D1b-JMM-1
5629: PPUSH
5630: CALL_OW 88
// if not ( Skip ) then
5634: LD_EXP 102
5638: NOT
5639: IFFALSE 5656
// AddComTurnXY ( John , 54 , 71 ) ;
5641: LD_EXP 7
5645: PPUSH
5646: LD_INT 54
5648: PPUSH
5649: LD_INT 71
5651: PPUSH
5652: CALL_OW 178
// if not ( Skip ) then
5656: LD_EXP 102
5660: NOT
5661: IFFALSE 5675
// AddComWait ( John , 0 0$0.7 ) ;
5663: LD_EXP 7
5667: PPUSH
5668: LD_INT 24
5670: PPUSH
5671: CALL_OW 202
// if not ( Skip ) then
5675: LD_EXP 102
5679: NOT
5680: IFFALSE 5697
// AddComTurnXY ( John , 55 , 63 ) ;
5682: LD_EXP 7
5686: PPUSH
5687: LD_INT 55
5689: PPUSH
5690: LD_INT 63
5692: PPUSH
5693: CALL_OW 178
// if not ( Skip ) then
5697: LD_EXP 102
5701: NOT
5702: IFFALSE 5716
// AddComWait ( John , 0 0$0.7 ) ;
5704: LD_EXP 7
5708: PPUSH
5709: LD_INT 24
5711: PPUSH
5712: CALL_OW 202
// if not ( Skip ) then
5716: LD_EXP 102
5720: NOT
5721: IFFALSE 5738
// AddComMoveXY ( John , 45 , 62 ) ;
5723: LD_EXP 7
5727: PPUSH
5728: LD_INT 45
5730: PPUSH
5731: LD_INT 62
5733: PPUSH
5734: CALL_OW 171
// if not ( Skip ) then
5738: LD_EXP 102
5742: NOT
5743: IFFALSE 5760
// AddComTurnXY ( John , 52 , 60 ) ;
5745: LD_EXP 7
5749: PPUSH
5750: LD_INT 52
5752: PPUSH
5753: LD_INT 60
5755: PPUSH
5756: CALL_OW 178
// if not ( Skip ) then
5760: LD_EXP 102
5764: NOT
5765: IFFALSE 5779
// AddComWait ( John , 0 0$1 ) ;
5767: LD_EXP 7
5771: PPUSH
5772: LD_INT 35
5774: PPUSH
5775: CALL_OW 202
// if not ( Skip ) then
5779: LD_EXP 102
5783: NOT
5784: IFFALSE 5801
// AddComTurnXY ( John , 37 , 48 ) ;
5786: LD_EXP 7
5790: PPUSH
5791: LD_INT 37
5793: PPUSH
5794: LD_INT 48
5796: PPUSH
5797: CALL_OW 178
// if not ( Skip ) then
5801: LD_EXP 102
5805: NOT
5806: IFFALSE 5820
// AddComWait ( John , 0 0$0.5 ) ;
5808: LD_EXP 7
5812: PPUSH
5813: LD_INT 18
5815: PPUSH
5816: CALL_OW 202
// if not ( Skip ) then
5820: LD_EXP 102
5824: NOT
5825: IFFALSE 5842
// AddComTurnXY ( John , 36 , 60 ) ;
5827: LD_EXP 7
5831: PPUSH
5832: LD_INT 36
5834: PPUSH
5835: LD_INT 60
5837: PPUSH
5838: CALL_OW 178
// if not ( Skip ) then
5842: LD_EXP 102
5846: NOT
5847: IFFALSE 5861
// AddComWait ( John , 0 0$1 ) ;
5849: LD_EXP 7
5853: PPUSH
5854: LD_INT 35
5856: PPUSH
5857: CALL_OW 202
// if not ( Skip ) then
5861: LD_EXP 102
5865: NOT
5866: IFFALSE 5883
// AddComMoveXY ( John , 41 , 65 ) ;
5868: LD_EXP 7
5872: PPUSH
5873: LD_INT 41
5875: PPUSH
5876: LD_INT 65
5878: PPUSH
5879: CALL_OW 171
// AddComMoveXY ( John , 36 , 61 ) ;
5883: LD_EXP 7
5887: PPUSH
5888: LD_INT 36
5890: PPUSH
5891: LD_INT 61
5893: PPUSH
5894: CALL_OW 171
// if not ( Skip ) then
5898: LD_EXP 102
5902: NOT
5903: IFFALSE 5920
// AddComTurnXY ( John , 29 , 54 ) ;
5905: LD_EXP 7
5909: PPUSH
5910: LD_INT 29
5912: PPUSH
5913: LD_INT 54
5915: PPUSH
5916: CALL_OW 178
// while not ( GetDistUnitXY ( John , 36 , 61 ) < 2 ) do
5920: LD_EXP 7
5924: PPUSH
5925: LD_INT 36
5927: PPUSH
5928: LD_INT 61
5930: PPUSH
5931: CALL_OW 297
5935: PUSH
5936: LD_INT 2
5938: LESS
5939: NOT
5940: IFFALSE 5951
// Wait ( 0 0$0.2 ) ;
5942: LD_INT 7
5944: PPUSH
5945: CALL_OW 67
5949: GO 5920
// if not ( Skip ) then
5951: LD_EXP 102
5955: NOT
5956: IFFALSE 5967
// AddComCrawl ( John ) ;
5958: LD_EXP 7
5962: PPUSH
5963: CALL_OW 197
// CenterOnXY ( GetX ( Lisa ) - 1 , GetY ( Lisa ) - 3 ) ;
5967: LD_EXP 12
5971: PPUSH
5972: CALL_OW 250
5976: PUSH
5977: LD_INT 1
5979: MINUS
5980: PPUSH
5981: LD_EXP 12
5985: PPUSH
5986: CALL_OW 251
5990: PUSH
5991: LD_INT 3
5993: MINUS
5994: PPUSH
5995: CALL_OW 84
// Say ( John , D1b-JMM-1a ) ;
5999: LD_EXP 7
6003: PPUSH
6004: LD_STRING D1b-JMM-1a
6006: PPUSH
6007: CALL_OW 88
// if not ( Skip ) then
6011: LD_EXP 102
6015: NOT
6016: IFFALSE 6030
// ComWait ( John , 0 0$3 ) ;
6018: LD_EXP 7
6022: PPUSH
6023: LD_INT 105
6025: PPUSH
6026: CALL_OW 142
// AddComWalk ( John ) ;
6030: LD_EXP 7
6034: PPUSH
6035: CALL_OW 198
// AddComTurnUnit ( John , Lisa ) ;
6039: LD_EXP 7
6043: PPUSH
6044: LD_EXP 12
6048: PPUSH
6049: CALL_OW 179
// if not ( Skip ) then
6053: LD_EXP 102
6057: NOT
6058: IFFALSE 6072
// ComWait ( Lisa , 0 0$0.5 ) ;
6060: LD_EXP 12
6064: PPUSH
6065: LD_INT 18
6067: PPUSH
6068: CALL_OW 142
// AddComWalk ( Lisa ) ;
6072: LD_EXP 12
6076: PPUSH
6077: CALL_OW 198
// AddComMoveXY ( Lisa , 33 , 59 ) ;
6081: LD_EXP 12
6085: PPUSH
6086: LD_INT 33
6088: PPUSH
6089: LD_INT 59
6091: PPUSH
6092: CALL_OW 171
// AddComTurnUnit ( Lisa , John ) ;
6096: LD_EXP 12
6100: PPUSH
6101: LD_EXP 7
6105: PPUSH
6106: CALL_OW 179
// if not ( Skip ) then
6110: LD_EXP 102
6114: NOT
6115: IFFALSE 6129
// ComWait ( AmME1 , 0 0$1 ) ;
6117: LD_EXP 13
6121: PPUSH
6122: LD_INT 35
6124: PPUSH
6125: CALL_OW 142
// AddComWalk ( AmME1 ) ;
6129: LD_EXP 13
6133: PPUSH
6134: CALL_OW 198
// AddComMoveXY ( AmME1 , 31 , 58 ) ;
6138: LD_EXP 13
6142: PPUSH
6143: LD_INT 31
6145: PPUSH
6146: LD_INT 58
6148: PPUSH
6149: CALL_OW 171
// AddComTurnUnit ( AmME1 , John ) ;
6153: LD_EXP 13
6157: PPUSH
6158: LD_EXP 7
6162: PPUSH
6163: CALL_OW 179
// if not ( Skip ) then
6167: LD_EXP 102
6171: NOT
6172: IFFALSE 6186
// ComWait ( AmFE2 , 0 0$1 ) ;
6174: LD_EXP 14
6178: PPUSH
6179: LD_INT 35
6181: PPUSH
6182: CALL_OW 142
// AddComWalk ( AmFE2 ) ;
6186: LD_EXP 14
6190: PPUSH
6191: CALL_OW 198
// AddComMoveXY ( AmFE2 , 33 , 56 ) ;
6195: LD_EXP 14
6199: PPUSH
6200: LD_INT 33
6202: PPUSH
6203: LD_INT 56
6205: PPUSH
6206: CALL_OW 171
// AddComTurnUnit ( AmFE2 , John ) ;
6210: LD_EXP 14
6214: PPUSH
6215: LD_EXP 7
6219: PPUSH
6220: CALL_OW 179
// if Nick then
6224: LD_EXP 11
6228: IFFALSE 6268
// begin AddComWalk ( Nick ) ;
6230: LD_EXP 11
6234: PPUSH
6235: CALL_OW 198
// AddComMoveXY ( Nick , 34 , 57 ) ;
6239: LD_EXP 11
6243: PPUSH
6244: LD_INT 34
6246: PPUSH
6247: LD_INT 57
6249: PPUSH
6250: CALL_OW 171
// AddComTurnUnit ( Nick , John ) ;
6254: LD_EXP 11
6258: PPUSH
6259: LD_EXP 7
6263: PPUSH
6264: CALL_OW 179
// end ; if not ( Skip ) then
6268: LD_EXP 102
6272: NOT
6273: IFFALSE 6282
// Wait ( 0 0$1 ) ;
6275: LD_INT 35
6277: PPUSH
6278: CALL_OW 67
// if not ( Skip ) then
6282: LD_EXP 102
6286: NOT
6287: IFFALSE 6301
// Say ( Lisa , D1b-Lisa-1 ) ;
6289: LD_EXP 12
6293: PPUSH
6294: LD_STRING D1b-Lisa-1
6296: PPUSH
6297: CALL_OW 88
// end ; if not ( Skip ) then
6301: LD_EXP 102
6305: NOT
6306: IFFALSE 6320
// Say ( John , D1-JMM-1 ) ;
6308: LD_EXP 7
6312: PPUSH
6313: LD_STRING D1-JMM-1
6315: PPUSH
6316: CALL_OW 88
// if not ( Skip ) then
6320: LD_EXP 102
6324: NOT
6325: IFFALSE 6339
// Say ( Lisa , D1-Lisa-1 ) ;
6327: LD_EXP 12
6331: PPUSH
6332: LD_STRING D1-Lisa-1
6334: PPUSH
6335: CALL_OW 88
// if not ( Skip ) then
6339: LD_EXP 102
6343: NOT
6344: IFFALSE 6358
// Say ( John , D1-JMM-2 ) ;
6346: LD_EXP 7
6350: PPUSH
6351: LD_STRING D1-JMM-2
6353: PPUSH
6354: CALL_OW 88
// if not ( Skip ) then
6358: LD_EXP 102
6362: NOT
6363: IFFALSE 6377
// SayRadio ( Powell , D1-Pow-2 ) ;
6365: LD_EXP 16
6369: PPUSH
6370: LD_STRING D1-Pow-2
6372: PPUSH
6373: CALL_OW 94
// if not ( Skip ) and IsOk ( Cyrus ) then
6377: LD_EXP 102
6381: NOT
6382: PUSH
6383: LD_EXP 8
6387: PPUSH
6388: CALL_OW 302
6392: AND
6393: IFFALSE 6419
// begin Say ( Cyrus , D1-Cyrus-2 ) ;
6395: LD_EXP 8
6399: PPUSH
6400: LD_STRING D1-Cyrus-2
6402: PPUSH
6403: CALL_OW 88
// Say ( John , D1-JMM-3 ) ;
6407: LD_EXP 7
6411: PPUSH
6412: LD_STRING D1-JMM-3
6414: PPUSH
6415: CALL_OW 88
// end ; if not ( Skip ) then
6419: LD_EXP 102
6423: NOT
6424: IFFALSE 6438
// SayRadio ( Powell , D1-Pow-3 ) ;
6426: LD_EXP 16
6430: PPUSH
6431: LD_STRING D1-Pow-3
6433: PPUSH
6434: CALL_OW 94
// if not ( Skip ) then
6438: LD_EXP 102
6442: NOT
6443: IFFALSE 6457
// Say ( John , D1-JMM-4 ) ;
6445: LD_EXP 7
6449: PPUSH
6450: LD_STRING D1-JMM-4
6452: PPUSH
6453: CALL_OW 88
// if not ( Skip ) then
6457: LD_EXP 102
6461: NOT
6462: IFFALSE 6476
// SayRadio ( Powell , D1-Pow-4 ) ;
6464: LD_EXP 16
6468: PPUSH
6469: LD_STRING D1-Pow-4
6471: PPUSH
6472: CALL_OW 94
// if not ( Skip ) then
6476: LD_EXP 102
6480: NOT
6481: IFFALSE 6495
// SayRadio ( Powell , D1-Pow-4a ) ;
6483: LD_EXP 16
6487: PPUSH
6488: LD_STRING D1-Pow-4a
6490: PPUSH
6491: CALL_OW 94
// alive = [ ] ;
6495: LD_ADDR_VAR 0 2
6499: PUSH
6500: EMPTY
6501: ST_TO_ADDR
// Speaker = [ ] ;
6502: LD_ADDR_EXP 117
6506: PUSH
6507: EMPTY
6508: ST_TO_ADDR
// if IsOk ( Bobby ) then
6509: LD_EXP 9
6513: PPUSH
6514: CALL_OW 302
6518: IFFALSE 6536
// alive = alive ^ Bobby ;
6520: LD_ADDR_VAR 0 2
6524: PUSH
6525: LD_VAR 0 2
6529: PUSH
6530: LD_EXP 9
6534: ADD
6535: ST_TO_ADDR
// if IsOk ( Cyrus ) then
6536: LD_EXP 8
6540: PPUSH
6541: CALL_OW 302
6545: IFFALSE 6563
// alive = alive ^ Cyrus ;
6547: LD_ADDR_VAR 0 2
6551: PUSH
6552: LD_VAR 0 2
6556: PUSH
6557: LD_EXP 8
6561: ADD
6562: ST_TO_ADDR
// if ( IsOk ( Bobby ) or IsOk ( Cyrus ) ) then
6563: LD_EXP 9
6567: PPUSH
6568: CALL_OW 302
6572: PUSH
6573: LD_EXP 8
6577: PPUSH
6578: CALL_OW 302
6582: OR
6583: IFFALSE 6609
// Un = alive [ Rand ( 1 , alive ) ] ;
6585: LD_ADDR_VAR 0 3
6589: PUSH
6590: LD_VAR 0 2
6594: PUSH
6595: LD_INT 1
6597: PPUSH
6598: LD_VAR 0 2
6602: PPUSH
6603: CALL_OW 12
6607: ARRAY
6608: ST_TO_ADDR
// if alive <> 0 then
6609: LD_VAR 0 2
6613: PUSH
6614: LD_INT 0
6616: NONEQUAL
6617: IFFALSE 6722
// begin if not ( Skip ) then
6619: LD_EXP 102
6623: NOT
6624: IFFALSE 6680
// if ( Un = Bobby ) and IsOk ( Bobby ) then
6626: LD_VAR 0 3
6630: PUSH
6631: LD_EXP 9
6635: EQUAL
6636: PUSH
6637: LD_EXP 9
6641: PPUSH
6642: CALL_OW 302
6646: AND
6647: IFFALSE 6680
// begin Say ( Bobby , D1-Bobby-4 ) ;
6649: LD_EXP 9
6653: PPUSH
6654: LD_STRING D1-Bobby-4
6656: PPUSH
6657: CALL_OW 88
// if not ( Skip ) then
6661: LD_EXP 102
6665: NOT
6666: IFFALSE 6680
// Say ( Lisa , D1-Lisa-4 ) ;
6668: LD_EXP 12
6672: PPUSH
6673: LD_STRING D1-Lisa-4
6675: PPUSH
6676: CALL_OW 88
// end ; if not ( Skip ) then
6680: LD_EXP 102
6684: NOT
6685: IFFALSE 6722
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
6687: LD_VAR 0 3
6691: PUSH
6692: LD_EXP 8
6696: EQUAL
6697: PUSH
6698: LD_EXP 8
6702: PPUSH
6703: CALL_OW 302
6707: AND
6708: IFFALSE 6722
// Say ( Cyrus , D1-Cyrus-4 ) ;
6710: LD_EXP 8
6714: PPUSH
6715: LD_STRING D1-Cyrus-4
6717: PPUSH
6718: CALL_OW 88
// end ; if not ( Skip ) then
6722: LD_EXP 102
6726: NOT
6727: IFFALSE 6741
// Say ( John , D1-JMM-5 ) ;
6729: LD_EXP 7
6733: PPUSH
6734: LD_STRING D1-JMM-5
6736: PPUSH
6737: CALL_OW 88
// sold = FilterUnitsInArea ( Start , [ f_side , americans ] ) ;
6741: LD_ADDR_VAR 0 1
6745: PUSH
6746: LD_INT 8
6748: PPUSH
6749: LD_INT 22
6751: PUSH
6752: LD_EXP 3
6756: PUSH
6757: EMPTY
6758: LIST
6759: LIST
6760: PPUSH
6761: CALL_OW 70
6765: ST_TO_ADDR
// IngameOff ;
6766: CALL_OW 9
// tick = hlp ;
6770: LD_ADDR_OWVAR 1
6774: PUSH
6775: LD_VAR 0 4
6779: ST_TO_ADDR
// Skip = false ;
6780: LD_ADDR_EXP 102
6784: PUSH
6785: LD_INT 0
6787: ST_TO_ADDR
// ComFree ( sold ) ;
6788: LD_VAR 0 1
6792: PPUSH
6793: CALL_OW 139
// ComFree ( John ) ;
6797: LD_EXP 7
6801: PPUSH
6802: CALL_OW 139
// wait ( 0 0$1 ) ;
6806: LD_INT 35
6808: PPUSH
6809: CALL_OW 67
// ChangeMissionObjectives ( M1 ) ;
6813: LD_STRING M1
6815: PPUSH
6816: CALL_OW 337
// SaveForQuickRestart ;
6820: CALL_OW 22
// Hint ( Engineers ) ;
6824: LD_STRING Engineers
6826: PPUSH
6827: CALL_OW 339
// Hint ( Groups ) ;
6831: LD_STRING Groups
6833: PPUSH
6834: CALL_OW 339
// SetSide ( [ Lisa , AmME1 , AmFE2 ] , americans ) ;
6838: LD_EXP 12
6842: PUSH
6843: LD_EXP 13
6847: PUSH
6848: LD_EXP 14
6852: PUSH
6853: EMPTY
6854: LIST
6855: LIST
6856: LIST
6857: PPUSH
6858: LD_EXP 3
6862: PPUSH
6863: CALL_OW 235
// if Nick then
6867: LD_EXP 11
6871: IFFALSE 6887
// SetSide ( Nick , americans ) ;
6873: LD_EXP 11
6877: PPUSH
6878: LD_EXP 3
6882: PPUSH
6883: CALL_OW 235
// enable ( Engineers_not_dead ) ;
6887: LD_EXP 83
6891: ENABLE_MARKED
// end ;
6892: PPOPN 4
6894: END
// every 0 0$1 trigger ( SeeArea ( americans , Dead_Am_1 ) > 0 ) do
6895: LD_EXP 3
6899: PPUSH
6900: LD_INT 18
6902: PPUSH
6903: CALL_OW 294
6907: PUSH
6908: LD_INT 0
6910: GREATER
6911: IFFALSE 7257
6913: GO 6915
6915: DISABLE
// begin hc_sex = sex_male ;
6916: LD_ADDR_OWVAR 27
6920: PUSH
6921: LD_INT 1
6923: ST_TO_ADDR
// hc_class = class_soldier ;
6924: LD_ADDR_OWVAR 28
6928: PUSH
6929: LD_INT 1
6931: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 1 ] ;
6932: LD_ADDR_OWVAR 31
6936: PUSH
6937: LD_INT 1
6939: PUSH
6940: LD_INT 2
6942: PUSH
6943: LD_INT 1
6945: PUSH
6946: LD_INT 1
6948: PUSH
6949: EMPTY
6950: LIST
6951: LIST
6952: LIST
6953: LIST
6954: ST_TO_ADDR
// hc_name =  ;
6955: LD_ADDR_OWVAR 26
6959: PUSH
6960: LD_STRING 
6962: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
6963: LD_ADDR_OWVAR 29
6967: PUSH
6968: LD_INT 10
6970: PUSH
6971: LD_INT 10
6973: PUSH
6974: EMPTY
6975: LIST
6976: LIST
6977: ST_TO_ADDR
// uc_side = americans1 ;
6978: LD_ADDR_OWVAR 20
6982: PUSH
6983: LD_EXP 4
6987: ST_TO_ADDR
// uc_nation = nation_american ;
6988: LD_ADDR_OWVAR 21
6992: PUSH
6993: LD_INT 1
6995: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
6996: LD_INT 0
6998: PPUSH
6999: LD_INT 1
7001: PPUSH
7002: LD_INT 0
7004: PPUSH
7005: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
7009: LD_ADDR_OWVAR 24
7013: PUSH
7014: LD_INT 1
7016: PPUSH
7017: LD_INT 6
7019: PPUSH
7020: CALL_OW 12
7024: ST_TO_ADDR
// AmD1 = CreateHuman ;
7025: LD_ADDR_EXP 17
7029: PUSH
7030: CALL_OW 44
7034: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
7035: LD_INT 0
7037: PPUSH
7038: LD_INT 1
7040: PPUSH
7041: LD_INT 0
7043: PPUSH
7044: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
7048: LD_ADDR_OWVAR 24
7052: PUSH
7053: LD_INT 1
7055: PPUSH
7056: LD_INT 6
7058: PPUSH
7059: CALL_OW 12
7063: ST_TO_ADDR
// AmD2 = CreateHuman ;
7064: LD_ADDR_EXP 18
7068: PUSH
7069: CALL_OW 44
7073: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
7074: LD_INT 0
7076: PPUSH
7077: LD_INT 1
7079: PPUSH
7080: LD_INT 0
7082: PPUSH
7083: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
7087: LD_ADDR_OWVAR 24
7091: PUSH
7092: LD_INT 1
7094: PPUSH
7095: LD_INT 6
7097: PPUSH
7098: CALL_OW 12
7102: ST_TO_ADDR
// AmD3 = CreateHuman ;
7103: LD_ADDR_EXP 19
7107: PUSH
7108: CALL_OW 44
7112: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
7113: LD_INT 0
7115: PPUSH
7116: LD_INT 1
7118: PPUSH
7119: LD_INT 0
7121: PPUSH
7122: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
7126: LD_ADDR_OWVAR 24
7130: PUSH
7131: LD_INT 1
7133: PPUSH
7134: LD_INT 6
7136: PPUSH
7137: CALL_OW 12
7141: ST_TO_ADDR
// AmD4 = CreateHuman ;
7142: LD_ADDR_EXP 20
7146: PUSH
7147: CALL_OW 44
7151: ST_TO_ADDR
// SetLives ( [ AmD1 , AmD2 , AmD3 , AmD4 ] , 0 ) ;
7152: LD_EXP 17
7156: PUSH
7157: LD_EXP 18
7161: PUSH
7162: LD_EXP 19
7166: PUSH
7167: LD_EXP 20
7171: PUSH
7172: EMPTY
7173: LIST
7174: LIST
7175: LIST
7176: LIST
7177: PPUSH
7178: LD_INT 0
7180: PPUSH
7181: CALL_OW 234
// PlaceUnitXY ( AmD1 , 27 , 15 , false ) ;
7185: LD_EXP 17
7189: PPUSH
7190: LD_INT 27
7192: PPUSH
7193: LD_INT 15
7195: PPUSH
7196: LD_INT 0
7198: PPUSH
7199: CALL_OW 48
// PlaceUnitXY ( AmD2 , 25 , 13 , false ) ;
7203: LD_EXP 18
7207: PPUSH
7208: LD_INT 25
7210: PPUSH
7211: LD_INT 13
7213: PPUSH
7214: LD_INT 0
7216: PPUSH
7217: CALL_OW 48
// PlaceUnitXY ( AmD3 , 29 , 16 , false ) ;
7221: LD_EXP 19
7225: PPUSH
7226: LD_INT 29
7228: PPUSH
7229: LD_INT 16
7231: PPUSH
7232: LD_INT 0
7234: PPUSH
7235: CALL_OW 48
// PlaceUnitXY ( AmD4 , 27 , 14 , false ) ;
7239: LD_EXP 20
7243: PPUSH
7244: LD_INT 27
7246: PPUSH
7247: LD_INT 14
7249: PPUSH
7250: LD_INT 0
7252: PPUSH
7253: CALL_OW 48
// end ;
7257: END
// every 0 0$1 trigger ( SeeXY ( americans , 27 , 15 ) or SeeXY ( americans , 25 , 13 ) or SeeXY ( americans , 29 , 16 ) or SeeXY ( americans , 28 , 14 ) ) do var alive , speaker , Un ;
7258: LD_EXP 3
7262: PPUSH
7263: LD_INT 27
7265: PPUSH
7266: LD_INT 15
7268: PPUSH
7269: CALL_OW 293
7273: PUSH
7274: LD_EXP 3
7278: PPUSH
7279: LD_INT 25
7281: PPUSH
7282: LD_INT 13
7284: PPUSH
7285: CALL_OW 293
7289: OR
7290: PUSH
7291: LD_EXP 3
7295: PPUSH
7296: LD_INT 29
7298: PPUSH
7299: LD_INT 16
7301: PPUSH
7302: CALL_OW 293
7306: OR
7307: PUSH
7308: LD_EXP 3
7312: PPUSH
7313: LD_INT 28
7315: PPUSH
7316: LD_INT 14
7318: PPUSH
7319: CALL_OW 293
7323: OR
7324: IFFALSE 8183
7326: GO 7328
7328: DISABLE
7329: LD_INT 0
7331: PPUSH
7332: PPUSH
7333: PPUSH
// begin InGameOn ;
7334: CALL_OW 8
// CenterOnXY ( 27 , 15 ) ;
7338: LD_INT 27
7340: PPUSH
7341: LD_INT 15
7343: PPUSH
7344: CALL_OW 84
// if IsOk ( John ) then
7348: LD_EXP 7
7352: PPUSH
7353: CALL_OW 302
7357: IFFALSE 7398
// begin ComWalk ( John ) ;
7359: LD_EXP 7
7363: PPUSH
7364: CALL_OW 138
// ComMoveXY ( John , 24 , 14 ) ;
7368: LD_EXP 7
7372: PPUSH
7373: LD_INT 24
7375: PPUSH
7376: LD_INT 14
7378: PPUSH
7379: CALL_OW 111
// AddComTurnXY ( John , 27 , 15 ) ;
7383: LD_EXP 7
7387: PPUSH
7388: LD_INT 27
7390: PPUSH
7391: LD_INT 15
7393: PPUSH
7394: CALL_OW 178
// end ; if IsOk ( Lisa ) then
7398: LD_EXP 12
7402: PPUSH
7403: CALL_OW 302
7407: IFFALSE 7448
// begin ComWalk ( Lisa ) ;
7409: LD_EXP 12
7413: PPUSH
7414: CALL_OW 138
// ComMoveXY ( Lisa , 27 , 13 ) ;
7418: LD_EXP 12
7422: PPUSH
7423: LD_INT 27
7425: PPUSH
7426: LD_INT 13
7428: PPUSH
7429: CALL_OW 111
// AddComTurnXY ( Lisa , 28 , 14 ) ;
7433: LD_EXP 12
7437: PPUSH
7438: LD_INT 28
7440: PPUSH
7441: LD_INT 14
7443: PPUSH
7444: CALL_OW 178
// end ; if IsOk ( Bobby ) then
7448: LD_EXP 9
7452: PPUSH
7453: CALL_OW 302
7457: IFFALSE 7498
// begin ComWalk ( Bobby ) ;
7459: LD_EXP 9
7463: PPUSH
7464: CALL_OW 138
// ComMoveXY ( Bobby , 30 , 18 ) ;
7468: LD_EXP 9
7472: PPUSH
7473: LD_INT 30
7475: PPUSH
7476: LD_INT 18
7478: PPUSH
7479: CALL_OW 111
// AddComTurnXY ( Bobby , 29 , 16 ) ;
7483: LD_EXP 9
7487: PPUSH
7488: LD_INT 29
7490: PPUSH
7491: LD_INT 16
7493: PPUSH
7494: CALL_OW 178
// end ; if IsOk ( Cyrus ) then
7498: LD_EXP 8
7502: PPUSH
7503: CALL_OW 302
7507: IFFALSE 7548
// begin ComWalk ( Cyrus ) ;
7509: LD_EXP 8
7513: PPUSH
7514: CALL_OW 138
// ComMoveXY ( Cyrus , 27 , 16 ) ;
7518: LD_EXP 8
7522: PPUSH
7523: LD_INT 27
7525: PPUSH
7526: LD_INT 16
7528: PPUSH
7529: CALL_OW 111
// AddComTurnXY ( Cyrus , 27 , 15 ) ;
7533: LD_EXP 8
7537: PPUSH
7538: LD_INT 27
7540: PPUSH
7541: LD_INT 15
7543: PPUSH
7544: CALL_OW 178
// end ; if IsOk ( AmME1 ) then
7548: LD_EXP 13
7552: PPUSH
7553: CALL_OW 302
7557: IFFALSE 7598
// begin ComWalk ( AmME1 ) ;
7559: LD_EXP 13
7563: PPUSH
7564: CALL_OW 138
// ComMoveXY ( AmME1 , 27 , 14 ) ;
7568: LD_EXP 13
7572: PPUSH
7573: LD_INT 27
7575: PPUSH
7576: LD_INT 14
7578: PPUSH
7579: CALL_OW 111
// AddComTurnXY ( AmME1 , 28 , 14 ) ;
7583: LD_EXP 13
7587: PPUSH
7588: LD_INT 28
7590: PPUSH
7591: LD_INT 14
7593: PPUSH
7594: CALL_OW 178
// end ; if IsOk ( AmFE2 ) then
7598: LD_EXP 14
7602: PPUSH
7603: CALL_OW 302
7607: IFFALSE 7648
// begin ComWalk ( AmFE2 ) ;
7609: LD_EXP 14
7613: PPUSH
7614: CALL_OW 138
// ComMoveXY ( AmFE2 , 23 , 14 ) ;
7618: LD_EXP 14
7622: PPUSH
7623: LD_INT 23
7625: PPUSH
7626: LD_INT 14
7628: PPUSH
7629: CALL_OW 111
// AddComTurnXY ( AmFE2 , 25 , 13 ) ;
7633: LD_EXP 14
7637: PPUSH
7638: LD_INT 25
7640: PPUSH
7641: LD_INT 13
7643: PPUSH
7644: CALL_OW 178
// end ; if IsOk ( Khatam ) then
7648: LD_EXP 10
7652: PPUSH
7653: CALL_OW 302
7657: IFFALSE 7698
// begin ComWalk ( Khatam ) ;
7659: LD_EXP 10
7663: PPUSH
7664: CALL_OW 138
// ComMoveXY ( Khatam , 25 , 14 ) ;
7668: LD_EXP 10
7672: PPUSH
7673: LD_INT 25
7675: PPUSH
7676: LD_INT 14
7678: PPUSH
7679: CALL_OW 111
// AddComTurnXY ( Khatam , 25 , 13 ) ;
7683: LD_EXP 10
7687: PPUSH
7688: LD_INT 25
7690: PPUSH
7691: LD_INT 13
7693: PPUSH
7694: CALL_OW 178
// end ; if IsOk ( Nick ) then
7698: LD_EXP 11
7702: PPUSH
7703: CALL_OW 302
7707: IFFALSE 7748
// begin ComWalk ( Nick ) ;
7709: LD_EXP 11
7713: PPUSH
7714: CALL_OW 138
// ComMoveXY ( Nick , 24 , 16 ) ;
7718: LD_EXP 11
7722: PPUSH
7723: LD_INT 24
7725: PPUSH
7726: LD_INT 16
7728: PPUSH
7729: CALL_OW 111
// AddComTurnXY ( Nick , 25 , 13 ) ;
7733: LD_EXP 11
7737: PPUSH
7738: LD_INT 25
7740: PPUSH
7741: LD_INT 13
7743: PPUSH
7744: CALL_OW 178
// end ; alive = [ ] ;
7748: LD_ADDR_VAR 0 1
7752: PUSH
7753: EMPTY
7754: ST_TO_ADDR
// if IsOk ( Lisa ) then
7755: LD_EXP 12
7759: PPUSH
7760: CALL_OW 302
7764: IFFALSE 7782
// alive = alive ^ Lisa ;
7766: LD_ADDR_VAR 0 1
7770: PUSH
7771: LD_VAR 0 1
7775: PUSH
7776: LD_EXP 12
7780: ADD
7781: ST_TO_ADDR
// if IsOk ( Bobby ) then
7782: LD_EXP 9
7786: PPUSH
7787: CALL_OW 302
7791: IFFALSE 7809
// alive = alive ^ Bobby ;
7793: LD_ADDR_VAR 0 1
7797: PUSH
7798: LD_VAR 0 1
7802: PUSH
7803: LD_EXP 9
7807: ADD
7808: ST_TO_ADDR
// if IsOk ( Cyrus ) then
7809: LD_EXP 8
7813: PPUSH
7814: CALL_OW 302
7818: IFFALSE 7836
// alive = alive ^ Cyrus ;
7820: LD_ADDR_VAR 0 1
7824: PUSH
7825: LD_VAR 0 1
7829: PUSH
7830: LD_EXP 8
7834: ADD
7835: ST_TO_ADDR
// if IsOk ( AmME1 ) then
7836: LD_EXP 13
7840: PPUSH
7841: CALL_OW 302
7845: IFFALSE 7863
// alive = alive ^ AmME1 ;
7847: LD_ADDR_VAR 0 1
7851: PUSH
7852: LD_VAR 0 1
7856: PUSH
7857: LD_EXP 13
7861: ADD
7862: ST_TO_ADDR
// if IsOk ( AmFE2 ) then
7863: LD_EXP 14
7867: PPUSH
7868: CALL_OW 302
7872: IFFALSE 7890
// alive = alive ^ AmFE2 ;
7874: LD_ADDR_VAR 0 1
7878: PUSH
7879: LD_VAR 0 1
7883: PUSH
7884: LD_EXP 14
7888: ADD
7889: ST_TO_ADDR
// speaker = alive [ Rand ( 1 , alive ) ] ;
7890: LD_ADDR_VAR 0 2
7894: PUSH
7895: LD_VAR 0 1
7899: PUSH
7900: LD_INT 1
7902: PPUSH
7903: LD_VAR 0 1
7907: PPUSH
7908: CALL_OW 12
7912: ARRAY
7913: ST_TO_ADDR
// case speaker of Lisa :
7914: LD_VAR 0 2
7918: PUSH
7919: LD_EXP 12
7923: DOUBLE
7924: EQUAL
7925: IFTRUE 7929
7927: GO 7944
7929: POP
// Say ( Lisa , DCorpses-Lisa-1 ) ; Bobby :
7930: LD_EXP 12
7934: PPUSH
7935: LD_STRING DCorpses-Lisa-1
7937: PPUSH
7938: CALL_OW 88
7942: GO 8045
7944: LD_EXP 9
7948: DOUBLE
7949: EQUAL
7950: IFTRUE 7954
7952: GO 7969
7954: POP
// Say ( Bobby , DCorpses-Bobby-1 ) ; Cyrus :
7955: LD_EXP 9
7959: PPUSH
7960: LD_STRING DCorpses-Bobby-1
7962: PPUSH
7963: CALL_OW 88
7967: GO 8045
7969: LD_EXP 8
7973: DOUBLE
7974: EQUAL
7975: IFTRUE 7979
7977: GO 7994
7979: POP
// Say ( Cyrus , DCorpses-Cyrus-1 ) ; AmME1 :
7980: LD_EXP 8
7984: PPUSH
7985: LD_STRING DCorpses-Cyrus-1
7987: PPUSH
7988: CALL_OW 88
7992: GO 8045
7994: LD_EXP 13
7998: DOUBLE
7999: EQUAL
8000: IFTRUE 8004
8002: GO 8019
8004: POP
// Say ( AmME1 , DCorpses-Sol1-1 ) ; AmFE2 :
8005: LD_EXP 13
8009: PPUSH
8010: LD_STRING DCorpses-Sol1-1
8012: PPUSH
8013: CALL_OW 88
8017: GO 8045
8019: LD_EXP 14
8023: DOUBLE
8024: EQUAL
8025: IFTRUE 8029
8027: GO 8044
8029: POP
// Say ( AmFE2 , DCorpses-FSol1-1 ) ; end ;
8030: LD_EXP 14
8034: PPUSH
8035: LD_STRING DCorpses-FSol1-1
8037: PPUSH
8038: CALL_OW 88
8042: GO 8045
8044: POP
// Say ( John , DCorpses-JMM-1 ) ;
8045: LD_EXP 7
8049: PPUSH
8050: LD_STRING DCorpses-JMM-1
8052: PPUSH
8053: CALL_OW 88
// if IsOk ( Khatam ) then
8057: LD_EXP 10
8061: PPUSH
8062: CALL_OW 302
8066: IFFALSE 8080
// Say ( Khatam , DCorpses-Khat-1 ) ;
8068: LD_EXP 10
8072: PPUSH
8073: LD_STRING DCorpses-Khat-1
8075: PPUSH
8076: CALL_OW 88
// IngameOff ;
8080: CALL_OW 9
// Say ( John , DCorpses-JMM-2 ) ;
8084: LD_EXP 7
8088: PPUSH
8089: LD_STRING DCorpses-JMM-2
8091: PPUSH
8092: CALL_OW 88
// Tested_Americans = [ John , Lisa , Bobby , Cyrus , Khatam , AmME1 , AmFE2 ] ;
8096: LD_ADDR_EXP 113
8100: PUSH
8101: LD_EXP 7
8105: PUSH
8106: LD_EXP 12
8110: PUSH
8111: LD_EXP 9
8115: PUSH
8116: LD_EXP 8
8120: PUSH
8121: LD_EXP 10
8125: PUSH
8126: LD_EXP 13
8130: PUSH
8131: LD_EXP 14
8135: PUSH
8136: EMPTY
8137: LIST
8138: LIST
8139: LIST
8140: LIST
8141: LIST
8142: LIST
8143: LIST
8144: ST_TO_ADDR
// for Un in Tested_Americans do
8145: LD_ADDR_VAR 0 3
8149: PUSH
8150: LD_EXP 113
8154: PUSH
8155: FOR_IN
8156: IFFALSE 8181
// Init_Lives = Init_Lives ^ GetLives ( Un ) ;
8158: LD_ADDR_EXP 112
8162: PUSH
8163: LD_EXP 112
8167: PUSH
8168: LD_VAR 0 3
8172: PPUSH
8173: CALL_OW 256
8177: ADD
8178: ST_TO_ADDR
8179: GO 8155
8181: POP
8182: POP
// end ;
8183: PPOPN 3
8185: END
// every 0 0$4 do var all , i , pom ;
8186: GO 8188
8188: DISABLE
8189: LD_INT 0
8191: PPUSH
8192: PPUSH
8193: PPUSH
// begin pom = true ;
8194: LD_ADDR_VAR 0 3
8198: PUSH
8199: LD_INT 1
8201: ST_TO_ADDR
// if GetLives ( [ John , Cyrus , Bobby , Khatam , Lisa , AmME1 , AmFE2 , AmMSo3 , Nick ] ) < Initial_Lives - 1 then
8202: LD_EXP 7
8206: PUSH
8207: LD_EXP 8
8211: PUSH
8212: LD_EXP 9
8216: PUSH
8217: LD_EXP 10
8221: PUSH
8222: LD_EXP 12
8226: PUSH
8227: LD_EXP 13
8231: PUSH
8232: LD_EXP 14
8236: PUSH
8237: LD_EXP 15
8241: PUSH
8242: LD_EXP 11
8246: PUSH
8247: EMPTY
8248: LIST
8249: LIST
8250: LIST
8251: LIST
8252: LIST
8253: LIST
8254: LIST
8255: LIST
8256: LIST
8257: PPUSH
8258: CALL_OW 256
8262: PUSH
8263: LD_EXP 92
8267: PUSH
8268: LD_INT 1
8270: MINUS
8271: LESS
8272: IFFALSE 8304
// begin if holdfreemode then
8274: LD_OWVAR 73
8278: IFFALSE 8289
// Hint ( Hold2 ) else
8280: LD_STRING Hold2
8282: PPUSH
8283: CALL_OW 339
8287: GO 8296
// Hint ( Hold ) ;
8289: LD_STRING Hold
8291: PPUSH
8292: CALL_OW 339
// pom = false ;
8296: LD_ADDR_VAR 0 3
8300: PUSH
8301: LD_INT 0
8303: ST_TO_ADDR
// end ; if pom then
8304: LD_VAR 0 3
8308: IFFALSE 8311
// enable ;
8310: ENABLE
// end ;
8311: PPOPN 3
8313: END
// function Retreat ; var Un , i , Lives_Decreased ; begin
8314: LD_INT 0
8316: PPUSH
8317: PPUSH
8318: PPUSH
8319: PPUSH
// i = 1 ;
8320: LD_ADDR_VAR 0 3
8324: PUSH
8325: LD_INT 1
8327: ST_TO_ADDR
// for Un in Tested_Americans do
8328: LD_ADDR_VAR 0 2
8332: PUSH
8333: LD_EXP 113
8337: PUSH
8338: FOR_IN
8339: IFFALSE 8388
// begin if GetLives ( Un ) <> Init_Lives [ i ] then
8341: LD_VAR 0 2
8345: PPUSH
8346: CALL_OW 256
8350: PUSH
8351: LD_EXP 112
8355: PUSH
8356: LD_VAR 0 3
8360: ARRAY
8361: NONEQUAL
8362: IFFALSE 8372
// Lives_Decreased = true ;
8364: LD_ADDR_VAR 0 4
8368: PUSH
8369: LD_INT 1
8371: ST_TO_ADDR
// i = i + 1 ;
8372: LD_ADDR_VAR 0 3
8376: PUSH
8377: LD_VAR 0 3
8381: PUSH
8382: LD_INT 1
8384: PLUS
8385: ST_TO_ADDR
// end ;
8386: GO 8338
8388: POP
8389: POP
// if ( ( See ( americans , Brw1 ) or See ( americans , Brw2 ) or See ( americans , Brw3 ) ) and ( FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_vehicle ] ] ) = 0 ) and Lives_Decreased and not ( IsInArea ( John , hill ) ) ) then
8390: LD_EXP 3
8394: PPUSH
8395: LD_INT 29
8397: PPUSH
8398: CALL_OW 292
8402: PUSH
8403: LD_EXP 3
8407: PPUSH
8408: LD_INT 9
8410: PPUSH
8411: CALL_OW 292
8415: OR
8416: PUSH
8417: LD_EXP 3
8421: PPUSH
8422: LD_INT 30
8424: PPUSH
8425: CALL_OW 292
8429: OR
8430: PUSH
8431: LD_INT 22
8433: PUSH
8434: LD_EXP 3
8438: PUSH
8439: EMPTY
8440: LIST
8441: LIST
8442: PUSH
8443: LD_INT 21
8445: PUSH
8446: LD_INT 2
8448: PUSH
8449: EMPTY
8450: LIST
8451: LIST
8452: PUSH
8453: EMPTY
8454: LIST
8455: LIST
8456: PPUSH
8457: CALL_OW 69
8461: PUSH
8462: LD_INT 0
8464: EQUAL
8465: AND
8466: PUSH
8467: LD_VAR 0 4
8471: AND
8472: PUSH
8473: LD_EXP 7
8477: PPUSH
8478: LD_INT 17
8480: PPUSH
8481: CALL_OW 308
8485: NOT
8486: AND
8487: IFFALSE 8499
// result = 1 else
8489: LD_ADDR_VAR 0 1
8493: PUSH
8494: LD_INT 1
8496: ST_TO_ADDR
8497: GO 8507
// result = 0 ;
8499: LD_ADDR_VAR 0 1
8503: PUSH
8504: LD_INT 0
8506: ST_TO_ADDR
// end ;
8507: LD_VAR 0 1
8511: RET
// every 0 0$2 trigger Retreat do
8512: CALL 8314 0 0
8516: IFFALSE 8541
8518: GO 8520
8520: DISABLE
// begin Byl_u_zakladny1 = true ;
8521: LD_ADDR_LOC 1
8525: PUSH
8526: LD_INT 1
8528: ST_TO_ADDR
// Say ( John , DX1-JMM-1 ) ;
8529: LD_EXP 7
8533: PPUSH
8534: LD_STRING DX1-JMM-1
8536: PPUSH
8537: CALL_OW 88
// end ;
8541: END
// every 0 0$1 trigger SeeXY ( americans , 75 , 70 ) or SeeXY ( americans , 77 , 73 ) or SeeXY ( americans , 77 , 69 ) or SeeXY ( americans , 78 , 71 ) do var Uns , Un ;
8542: LD_EXP 3
8546: PPUSH
8547: LD_INT 75
8549: PPUSH
8550: LD_INT 70
8552: PPUSH
8553: CALL_OW 293
8557: PUSH
8558: LD_EXP 3
8562: PPUSH
8563: LD_INT 77
8565: PPUSH
8566: LD_INT 73
8568: PPUSH
8569: CALL_OW 293
8573: OR
8574: PUSH
8575: LD_EXP 3
8579: PPUSH
8580: LD_INT 77
8582: PPUSH
8583: LD_INT 69
8585: PPUSH
8586: CALL_OW 293
8590: OR
8591: PUSH
8592: LD_EXP 3
8596: PPUSH
8597: LD_INT 78
8599: PPUSH
8600: LD_INT 71
8602: PPUSH
8603: CALL_OW 293
8607: OR
8608: IFFALSE 9092
8610: GO 8612
8612: DISABLE
8613: LD_INT 0
8615: PPUSH
8616: PPUSH
// begin PlaceUnitXY ( AmR1 , 75 , 70 , false ) ;
8617: LD_EXP 21
8621: PPUSH
8622: LD_INT 75
8624: PPUSH
8625: LD_INT 70
8627: PPUSH
8628: LD_INT 0
8630: PPUSH
8631: CALL_OW 48
// SetLives ( AmR1 , 500 ) ;
8635: LD_EXP 21
8639: PPUSH
8640: LD_INT 500
8642: PPUSH
8643: CALL_OW 234
// PlaceUnitXY ( AmR2 , 77 , 73 , false ) ;
8647: LD_EXP 22
8651: PPUSH
8652: LD_INT 77
8654: PPUSH
8655: LD_INT 73
8657: PPUSH
8658: LD_INT 0
8660: PPUSH
8661: CALL_OW 48
// SetLives ( AmR2 , 0 ) ;
8665: LD_EXP 22
8669: PPUSH
8670: LD_INT 0
8672: PPUSH
8673: CALL_OW 234
// PlaceUnitXY ( RuR1 , 77 , 69 , false ) ;
8677: LD_EXP 23
8681: PPUSH
8682: LD_INT 77
8684: PPUSH
8685: LD_INT 69
8687: PPUSH
8688: LD_INT 0
8690: PPUSH
8691: CALL_OW 48
// PlaceUnitXY ( RuR2 , 78 , 71 , false ) ;
8695: LD_EXP 24
8699: PPUSH
8700: LD_INT 78
8702: PPUSH
8703: LD_INT 71
8705: PPUSH
8706: LD_INT 0
8708: PPUSH
8709: CALL_OW 48
// ComAttackUnit ( [ RuR1 , RuR2 ] , AmR1 ) ;
8713: LD_EXP 23
8717: PUSH
8718: LD_EXP 24
8722: PUSH
8723: EMPTY
8724: LIST
8725: LIST
8726: PPUSH
8727: LD_EXP 21
8731: PPUSH
8732: CALL_OW 115
// Uns = FilterAllUnits ( [ [ f_side , americans ] , [ f_distxy , 77 , 71 , 20 ] ] ) diff [ John , Lisa , Khatam ] ;
8736: LD_ADDR_VAR 0 1
8740: PUSH
8741: LD_INT 22
8743: PUSH
8744: LD_EXP 3
8748: PUSH
8749: EMPTY
8750: LIST
8751: LIST
8752: PUSH
8753: LD_INT 92
8755: PUSH
8756: LD_INT 77
8758: PUSH
8759: LD_INT 71
8761: PUSH
8762: LD_INT 20
8764: PUSH
8765: EMPTY
8766: LIST
8767: LIST
8768: LIST
8769: LIST
8770: PUSH
8771: EMPTY
8772: LIST
8773: LIST
8774: PPUSH
8775: CALL_OW 69
8779: PUSH
8780: LD_EXP 7
8784: PUSH
8785: LD_EXP 12
8789: PUSH
8790: LD_EXP 10
8794: PUSH
8795: EMPTY
8796: LIST
8797: LIST
8798: LIST
8799: DIFF
8800: ST_TO_ADDR
// if Uns <> 0 then
8801: LD_VAR 0 1
8805: PUSH
8806: LD_INT 0
8808: NONEQUAL
8809: IFFALSE 8847
// begin Un = Uns [ Rand ( 1 , Uns ) ] ;
8811: LD_ADDR_VAR 0 2
8815: PUSH
8816: LD_VAR 0 1
8820: PUSH
8821: LD_INT 1
8823: PPUSH
8824: LD_VAR 0 1
8828: PPUSH
8829: CALL_OW 12
8833: ARRAY
8834: ST_TO_ADDR
// Say ( Un , DF-Sol1-1 ) ;
8835: LD_VAR 0 2
8839: PPUSH
8840: LD_STRING DF-Sol1-1
8842: PPUSH
8843: CALL_OW 88
// end ; Say ( John , DF-JMM-1 ) ;
8847: LD_EXP 7
8851: PPUSH
8852: LD_STRING DF-JMM-1
8854: PPUSH
8855: CALL_OW 88
// while IsOk ( RuR1 ) or IsOk ( RuR2 ) do
8859: LD_EXP 23
8863: PPUSH
8864: CALL_OW 302
8868: PUSH
8869: LD_EXP 24
8873: PPUSH
8874: CALL_OW 302
8878: OR
8879: IFFALSE 8890
// Wait ( 0 0$1 ) ;
8881: LD_INT 35
8883: PPUSH
8884: CALL_OW 67
8888: GO 8859
// if not ( IsDead ( AmR1 ) ) then
8890: LD_EXP 21
8894: PPUSH
8895: CALL_OW 301
8899: NOT
8900: IFFALSE 8988
// begin SetSide ( AmR1 , americans ) ;
8902: LD_EXP 21
8906: PPUSH
8907: LD_EXP 3
8911: PPUSH
8912: CALL_OW 235
// Uns = FilterAllUnits ( [ [ f_side , americans ] , [ f_class , class_scientistic ] ] ) ;
8916: LD_ADDR_VAR 0 1
8920: PUSH
8921: LD_INT 22
8923: PUSH
8924: LD_EXP 3
8928: PUSH
8929: EMPTY
8930: LIST
8931: LIST
8932: PUSH
8933: LD_INT 25
8935: PUSH
8936: LD_INT 4
8938: PUSH
8939: EMPTY
8940: LIST
8941: LIST
8942: PUSH
8943: EMPTY
8944: LIST
8945: LIST
8946: PPUSH
8947: CALL_OW 69
8951: ST_TO_ADDR
// if Uns <> 0 then
8952: LD_VAR 0 1
8956: PUSH
8957: LD_INT 0
8959: NONEQUAL
8960: IFFALSE 8976
// Say ( John , DFa-JMM-1 ) else
8962: LD_EXP 7
8966: PPUSH
8967: LD_STRING DFa-JMM-1
8969: PPUSH
8970: CALL_OW 88
8974: GO 8988
// Say ( John , DFa-JMM-1a ) ;
8976: LD_EXP 7
8980: PPUSH
8981: LD_STRING DFa-JMM-1a
8983: PPUSH
8984: CALL_OW 88
// end ; while not ( IsOk ( AmR1 ) or IsDead ( AmR1 ) ) do
8988: LD_EXP 21
8992: PPUSH
8993: CALL_OW 302
8997: PUSH
8998: LD_EXP 21
9002: PPUSH
9003: CALL_OW 301
9007: OR
9008: NOT
9009: IFFALSE 9020
// Wait ( 0 0$1 ) ;
9011: LD_INT 35
9013: PPUSH
9014: CALL_OW 67
9018: GO 8988
// if IsOk ( AmR1 ) then
9020: LD_EXP 21
9024: PPUSH
9025: CALL_OW 302
9029: IFFALSE 9077
// begin Say ( AmR1 , DFb-Sol1-1 ) ;
9031: LD_EXP 21
9035: PPUSH
9036: LD_STRING DFb-Sol1-1
9038: PPUSH
9039: CALL_OW 88
// ComMoveXY ( AmR1 , 77 , 73 ) ;
9043: LD_EXP 21
9047: PPUSH
9048: LD_INT 77
9050: PPUSH
9051: LD_INT 73
9053: PPUSH
9054: CALL_OW 111
// Wait ( 0 0$2 ) ;
9058: LD_INT 70
9060: PPUSH
9061: CALL_OW 67
// Say ( AmR1 , DFb-Sol1-1a ) ;
9065: LD_EXP 21
9069: PPUSH
9070: LD_STRING DFb-Sol1-1a
9072: PPUSH
9073: CALL_OW 88
// end ; if IsDead ( AmR1 ) then
9077: LD_EXP 21
9081: PPUSH
9082: CALL_OW 301
9086: IFFALSE 9092
// SA_Negligence ;
9088: CALL 23180 0 0
// end ;
9092: PPOPN 2
9094: END
// every 0 0$2 trigger See ( americans , dep1 ) or See ( americans , dep2 ) do
9095: LD_EXP 3
9099: PPUSH
9100: LD_INT 1
9102: PPUSH
9103: CALL_OW 292
9107: PUSH
9108: LD_EXP 3
9112: PPUSH
9113: LD_INT 10
9115: PPUSH
9116: CALL_OW 292
9120: OR
9121: IFFALSE 9133
9123: GO 9125
9125: DISABLE
// begin Hint ( CapturingBuilding ) ;
9126: LD_STRING CapturingBuilding
9128: PPUSH
9129: CALL_OW 339
// end ;
9133: END
// function see_vehicle ; begin
9134: LD_INT 0
9136: PPUSH
// if ( See ( americans , vehicle1 ) or See ( americans , vehicle2 ) ) then
9137: LD_EXP 3
9141: PPUSH
9142: LD_INT 5
9144: PPUSH
9145: CALL_OW 292
9149: PUSH
9150: LD_EXP 3
9154: PPUSH
9155: LD_INT 4
9157: PPUSH
9158: CALL_OW 292
9162: OR
9163: IFFALSE 9180
// begin result = 1 ;
9165: LD_ADDR_VAR 0 1
9169: PUSH
9170: LD_INT 1
9172: ST_TO_ADDR
// enable ( vehicles_detected ) ;
9173: LD_EXP 31
9177: ENABLE_MARKED
// end else
9178: GO 9188
// result = 0 ;
9180: LD_ADDR_VAR 0 1
9184: PUSH
9185: LD_INT 0
9187: ST_TO_ADDR
// end ;
9188: LD_VAR 0 1
9192: RET
// function see_vehicle1 ; begin
9193: LD_INT 0
9195: PPUSH
// if ( See ( americans , vehicle1 ) or See ( americans , vehicle2 ) ) then
9196: LD_EXP 3
9200: PPUSH
9201: LD_INT 5
9203: PPUSH
9204: CALL_OW 292
9208: PUSH
9209: LD_EXP 3
9213: PPUSH
9214: LD_INT 4
9216: PPUSH
9217: CALL_OW 292
9221: OR
9222: IFFALSE 9234
// begin result = 1 ;
9224: LD_ADDR_VAR 0 1
9228: PUSH
9229: LD_INT 1
9231: ST_TO_ADDR
// end else
9232: GO 9242
// result = 0 ;
9234: LD_ADDR_VAR 0 1
9238: PUSH
9239: LD_INT 0
9241: ST_TO_ADDR
// end ;
9242: LD_VAR 0 1
9246: RET
// function guardians_are_death ; begin
9247: LD_INT 0
9249: PPUSH
// if not ( IsOk ( RusESo1 ) or IsOk ( RusESo2 ) or IsOK ( RusEM1 ) ) then
9250: LD_INT 13
9252: PPUSH
9253: CALL_OW 302
9257: PUSH
9258: LD_INT 8
9260: PPUSH
9261: CALL_OW 302
9265: OR
9266: PUSH
9267: LD_INT 6
9269: PPUSH
9270: CALL_OW 302
9274: OR
9275: NOT
9276: IFFALSE 9288
// result = 1 else
9278: LD_ADDR_VAR 0 1
9282: PUSH
9283: LD_INT 1
9285: ST_TO_ADDR
9286: GO 9296
// result = 0 ;
9288: LD_ADDR_VAR 0 1
9292: PUSH
9293: LD_INT 0
9295: ST_TO_ADDR
// end ;
9296: LD_VAR 0 1
9300: RET
// every 0 0$1 trigger ( see_vehicle and not ( JMM_saw_east_guard ) ) marked 21 do
9301: CALL 9134 0 0
9305: PUSH
9306: LD_EXP 95
9310: NOT
9311: AND
9312: IFFALSE 9337
9314: GO 9316
9316: DISABLE
// begin JMM_saw_east_guard = true ;
9317: LD_ADDR_EXP 95
9321: PUSH
9322: LD_INT 1
9324: ST_TO_ADDR
// Say ( John , DX3-JMM-1 ) ;
9325: LD_EXP 7
9329: PPUSH
9330: LD_STRING DX3-JMM-1
9332: PPUSH
9333: CALL_OW 88
// end ;
9337: END
// every 0 0$2 trigger IsOk ( RusEM1 ) and IsDrivenBy ( vehicle1 ) = RusEM1 do
9338: LD_INT 6
9340: PPUSH
9341: CALL_OW 302
9345: PUSH
9346: LD_INT 5
9348: PPUSH
9349: CALL_OW 311
9353: PUSH
9354: LD_INT 6
9356: EQUAL
9357: AND
9358: IFFALSE 9371
9360: GO 9362
9362: DISABLE
// begin sergej_succeeds = 1 ;
9363: LD_ADDR_EXP 78
9367: PUSH
9368: LD_INT 1
9370: ST_TO_ADDR
// end ;
9371: END
// every 0 0$1 trigger FilterUnitsInArea ( Dohled , [ [ f_see , russians ] , [ f_side , americans ] ] ) > 0 do
9372: LD_INT 9
9374: PPUSH
9375: LD_INT 101
9377: PUSH
9378: LD_EXP 5
9382: PUSH
9383: EMPTY
9384: LIST
9385: LIST
9386: PUSH
9387: LD_INT 22
9389: PUSH
9390: LD_EXP 3
9394: PUSH
9395: EMPTY
9396: LIST
9397: LIST
9398: PUSH
9399: EMPTY
9400: LIST
9401: LIST
9402: PPUSH
9403: CALL_OW 70
9407: PUSH
9408: LD_INT 0
9410: GREATER
9411: IFFALSE 9529
9413: GO 9415
9415: DISABLE
// begin ComFree ( RusEast ) ;
9416: LD_EXP 108
9420: PPUSH
9421: CALL_OW 139
// disable ( East_guard_seen ) ;
9425: LD_EXP 96
9429: DISABLE_MARKED
// DialogueOn ;
9430: CALL_OW 6
// SayNoFace ( RusESo2 , DX3-Rus1-1 ) ;
9434: LD_INT 8
9436: PPUSH
9437: LD_STRING DX3-Rus1-1
9439: PPUSH
9440: CALL_OW 89
// DialogueOff ;
9444: CALL_OW 7
// if not ( JMM_saw_east_guard ) then
9448: LD_EXP 95
9452: NOT
9453: IFFALSE 9524
// begin JMM_saw_east_guard = true ;
9455: LD_ADDR_EXP 95
9459: PUSH
9460: LD_INT 1
9462: ST_TO_ADDR
// DialogueOn ;
9463: CALL_OW 6
// Say ( John , DX3-JMM-1 ) ;
9467: LD_EXP 7
9471: PPUSH
9472: LD_STRING DX3-JMM-1
9474: PPUSH
9475: CALL_OW 88
// DialogueOff ;
9479: CALL_OW 7
// PlaceSeeing ( 117 , 41 , americans , - 6 ) ;
9483: LD_INT 117
9485: PPUSH
9486: LD_INT 41
9488: PPUSH
9489: LD_EXP 3
9493: PPUSH
9494: LD_INT 6
9496: NEG
9497: PPUSH
9498: CALL_OW 330
// Wait ( 0 0$10 ) ;
9502: LD_INT 350
9504: PPUSH
9505: CALL_OW 67
// RemoveSeeing ( 117 , 41 , americans ) ;
9509: LD_INT 117
9511: PPUSH
9512: LD_INT 41
9514: PPUSH
9515: LD_EXP 3
9519: PPUSH
9520: CALL_OW 331
// end ; enable ( attack ) ;
9524: LD_EXP 41
9528: ENABLE_MARKED
// end ;
9529: END
// every 0 0$5 trigger see_vehicle1 and guardians_are_death marked 6 do
9530: CALL 9193 0 0
9534: PUSH
9535: CALL 9247 0 0
9539: AND
9540: IFFALSE 9619
9542: GO 9544
9544: DISABLE
// begin DialogueOn ;
9545: CALL_OW 6
// if IsOk ( Bobby ) then
9549: LD_EXP 9
9553: PPUSH
9554: CALL_OW 302
9558: IFFALSE 9574
// Say ( Bobby , DX2-Bobby-1 ) else
9560: LD_EXP 9
9564: PPUSH
9565: LD_STRING DX2-Bobby-1
9567: PPUSH
9568: CALL_OW 88
9572: GO 9586
// Say ( John , DX2-JMM-1 ) ;
9574: LD_EXP 7
9578: PPUSH
9579: LD_STRING DX2-JMM-1
9581: PPUSH
9582: CALL_OW 88
// if ( Byl_u_zakladny1 and IsOk ( Bobby ) ) then
9586: LD_LOC 1
9590: PUSH
9591: LD_EXP 9
9595: PPUSH
9596: CALL_OW 302
9600: AND
9601: IFFALSE 9615
// Say ( John , DX2-JMM-1a ) ;
9603: LD_EXP 7
9607: PPUSH
9608: LD_STRING DX2-JMM-1a
9610: PPUSH
9611: CALL_OW 88
// DialogueOff ;
9615: CALL_OW 7
// end ;
9619: END
// every 0 0$2 trigger see_vehicle1 and guardians_are_death do
9620: CALL 9193 0 0
9624: PUSH
9625: CALL 9247 0 0
9629: AND
9630: IFFALSE 9669
9632: GO 9634
9634: DISABLE
// begin if IsOk ( vehicle1 ) and IsOk ( Vehicle2 ) then
9635: LD_INT 5
9637: PPUSH
9638: CALL_OW 302
9642: PUSH
9643: LD_INT 4
9645: PPUSH
9646: CALL_OW 302
9650: AND
9651: IFFALSE 9662
// Hint ( CapturingVehicles1 ) else
9653: LD_STRING CapturingVehicles1
9655: PPUSH
9656: CALL_OW 339
9660: GO 9669
// Hint ( CapturingVehicles2 ) ;
9662: LD_STRING CapturingVehicles2
9664: PPUSH
9665: CALL_OW 339
// end ;
9669: END
// on VehicleCaptured ( vehnew , vehold , origside , hum ) marked 5 do var InV1 , InV2 ;
9670: LD_INT 0
9672: PPUSH
9673: PPUSH
// begin if ( ( vehold = vehicle1 ) or ( vehold = vehicle2 ) ) and ( hum <> RusEM1 ) and First_Capture then
9674: LD_VAR 0 2
9678: PUSH
9679: LD_INT 5
9681: EQUAL
9682: PUSH
9683: LD_VAR 0 2
9687: PUSH
9688: LD_INT 4
9690: EQUAL
9691: OR
9692: PUSH
9693: LD_VAR 0 4
9697: PUSH
9698: LD_INT 6
9700: NONEQUAL
9701: AND
9702: PUSH
9703: LD_EXP 84
9707: AND
9708: IFFALSE 9955
// begin First_Capture = false ;
9710: LD_ADDR_EXP 84
9714: PUSH
9715: LD_INT 0
9717: ST_TO_ADDR
// disable ( uncanny_vehicles ) ;
9718: LD_EXP 32
9722: DISABLE_MARKED
// DialogueOn ;
9723: CALL_OW 6
// if ( ( hum = John ) and IsOk ( Lisa ) ) then
9727: LD_VAR 0 4
9731: PUSH
9732: LD_EXP 7
9736: EQUAL
9737: PUSH
9738: LD_EXP 12
9742: PPUSH
9743: CALL_OW 302
9747: AND
9748: IFFALSE 9783
// begin Say ( Lisa , DX2b-Lisa-1 ) ;
9750: LD_EXP 12
9754: PPUSH
9755: LD_STRING DX2b-Lisa-1
9757: PPUSH
9758: CALL_OW 88
// Say ( John , DX2b-JMM-1 ) ;
9762: LD_EXP 7
9766: PPUSH
9767: LD_STRING DX2b-JMM-1
9769: PPUSH
9770: CALL_OW 88
// Hint ( ControllingVehicles ) ;
9774: LD_STRING ControllingVehicles
9776: PPUSH
9777: CALL_OW 339
// end else
9781: GO 9933
// begin Say ( John , DX2a-JMM-1 ) ;
9783: LD_EXP 7
9787: PPUSH
9788: LD_STRING DX2a-JMM-1
9790: PPUSH
9791: CALL_OW 88
// if hum = Lisa then
9795: LD_VAR 0 4
9799: PUSH
9800: LD_EXP 12
9804: EQUAL
9805: IFFALSE 9821
// Say ( Lisa , DX2a-Lisa-1 ) else
9807: LD_EXP 12
9811: PPUSH
9812: LD_STRING DX2a-Lisa-1
9814: PPUSH
9815: CALL_OW 88
9819: GO 9914
// if hum = Bobby then
9821: LD_VAR 0 4
9825: PUSH
9826: LD_EXP 9
9830: EQUAL
9831: IFFALSE 9847
// Say ( Bobby , DX2a-Bobby-1 ) else
9833: LD_EXP 9
9837: PPUSH
9838: LD_STRING DX2a-Bobby-1
9840: PPUSH
9841: CALL_OW 88
9845: GO 9914
// if hum = Cyrus then
9847: LD_VAR 0 4
9851: PUSH
9852: LD_EXP 8
9856: EQUAL
9857: IFFALSE 9873
// Say ( Cyrus , DX2a-Cyrus-1 ) else
9859: LD_EXP 8
9863: PPUSH
9864: LD_STRING DX2a-Cyrus-1
9866: PPUSH
9867: CALL_OW 88
9871: GO 9914
// if ( GetSex ( hum ) = Sex_Male ) then
9873: LD_VAR 0 4
9877: PPUSH
9878: CALL_OW 258
9882: PUSH
9883: LD_INT 1
9885: EQUAL
9886: IFFALSE 9902
// Say ( hum , DX2a-Sol1-1 ) else
9888: LD_VAR 0 4
9892: PPUSH
9893: LD_STRING DX2a-Sol1-1
9895: PPUSH
9896: CALL_OW 88
9900: GO 9914
// Say ( hum , DX2a-FSol1-1 ) ;
9902: LD_VAR 0 4
9906: PPUSH
9907: LD_STRING DX2a-FSol1-1
9909: PPUSH
9910: CALL_OW 88
// Say ( John , DX2a-JMM-2 ) ;
9914: LD_EXP 7
9918: PPUSH
9919: LD_STRING DX2a-JMM-2
9921: PPUSH
9922: CALL_OW 88
// Hint ( ControllingVehicles ) ;
9926: LD_STRING ControllingVehicles
9928: PPUSH
9929: CALL_OW 339
// end ; DialogueOff ;
9933: CALL_OW 7
// if sergej_succeeds = 0 then
9937: LD_EXP 78
9941: PUSH
9942: LD_INT 0
9944: EQUAL
9945: IFFALSE 9955
// sergej_succeeds = 2 ;
9947: LD_ADDR_EXP 78
9951: PUSH
9952: LD_INT 2
9954: ST_TO_ADDR
// end ; if ( vehold = vehicle1 ) then
9955: LD_VAR 0 2
9959: PUSH
9960: LD_INT 5
9962: EQUAL
9963: IFFALSE 9975
// vehicle1_new = vehnew ;
9965: LD_ADDR_EXP 97
9969: PUSH
9970: LD_VAR 0 1
9974: ST_TO_ADDR
// if ( vehold = vehicle2 ) then
9975: LD_VAR 0 2
9979: PUSH
9980: LD_INT 4
9982: EQUAL
9983: IFFALSE 9995
// vehicle2_new = vehnew ;
9985: LD_ADDR_EXP 98
9989: PUSH
9990: LD_VAR 0 1
9994: ST_TO_ADDR
// end ;
9995: PPOPN 6
9997: END
// every 0 0$5 trigger ( IsOk ( vehicle1_new ) and not ( IsInArea ( vehicle1_new , Area01 ) ) ) or ( IsOk ( vehicle2_new ) and not ( IsInArea ( vehicle2_new , Area01 ) ) ) do
9998: LD_EXP 97
10002: PPUSH
10003: CALL_OW 302
10007: PUSH
10008: LD_EXP 97
10012: PPUSH
10013: LD_INT 1
10015: PPUSH
10016: CALL_OW 308
10020: NOT
10021: AND
10022: PUSH
10023: LD_EXP 98
10027: PPUSH
10028: CALL_OW 302
10032: PUSH
10033: LD_EXP 98
10037: PPUSH
10038: LD_INT 1
10040: PPUSH
10041: CALL_OW 308
10045: NOT
10046: AND
10047: OR
10048: IFFALSE 10060
10050: GO 10052
10052: DISABLE
// begin Hint ( VehicleState ) ;
10053: LD_STRING VehicleState
10055: PPUSH
10056: CALL_OW 339
// end ;
10060: END
// every 0 0$1 trigger GetLives ( RusEM1 ) < 1000 do
10061: LD_INT 6
10063: PPUSH
10064: CALL_OW 256
10068: PUSH
10069: LD_INT 1000
10071: LESS
10072: IFFALSE 10094
10074: GO 10076
10076: DISABLE
// begin if not ( IsBusy ( RusEM1 ) ) then
10077: LD_INT 6
10079: PPUSH
10080: CALL_OW 315
10084: NOT
10085: IFFALSE 10094
// ComFree ( RusEM1 ) ;
10087: LD_INT 6
10089: PPUSH
10090: CALL_OW 139
// end ;
10094: END
// every 0 0$3 trigger FilterUnitsInArea ( Before_River , [ f_side , americans ] ) <> 0 do var Uns , Un ;
10095: LD_INT 24
10097: PPUSH
10098: LD_INT 22
10100: PUSH
10101: LD_EXP 3
10105: PUSH
10106: EMPTY
10107: LIST
10108: LIST
10109: PPUSH
10110: CALL_OW 70
10114: PUSH
10115: LD_INT 0
10117: NONEQUAL
10118: IFFALSE 10195
10120: GO 10122
10122: DISABLE
10123: LD_INT 0
10125: PPUSH
10126: PPUSH
// begin Uns = FilterUnitsInArea ( Before_River , [ [ f_side , americans ] ] ) ;
10127: LD_ADDR_VAR 0 1
10131: PUSH
10132: LD_INT 24
10134: PPUSH
10135: LD_INT 22
10137: PUSH
10138: LD_EXP 3
10142: PUSH
10143: EMPTY
10144: LIST
10145: LIST
10146: PUSH
10147: EMPTY
10148: LIST
10149: PPUSH
10150: CALL_OW 70
10154: ST_TO_ADDR
// for Un in Uns do
10155: LD_ADDR_VAR 0 2
10159: PUSH
10160: LD_VAR 0 1
10164: PUSH
10165: FOR_IN
10166: IFFALSE 10192
// if IsSelected ( Un ) then
10168: LD_VAR 0 2
10172: PPUSH
10173: CALL_OW 306
10177: IFFALSE 10190
// begin Hint ( Rivers ) ;
10179: LD_STRING Rivers
10181: PPUSH
10182: CALL_OW 339
// exit ;
10186: POP
10187: POP
10188: GO 10195
// end ;
10190: GO 10165
10192: POP
10193: POP
// enable ;
10194: ENABLE
// end ;
10195: PPOPN 2
10197: END
// every 0 0$0.1 marked 10 do
10198: GO 10200
10200: DISABLE
// begin AddComEnterUnit ( RusEM1 , vehicle1 ) ;
10201: LD_INT 6
10203: PPUSH
10204: LD_INT 5
10206: PPUSH
10207: CALL_OW 180
// AddComFree ( RusEM1 ) ;
10211: LD_INT 6
10213: PPUSH
10214: CALL_OW 199
// end ;
10218: END
// function Nearest ( un , units ) ; var nearest_dist , nearest_un , sold , dist ; begin
10219: LD_INT 0
10221: PPUSH
10222: PPUSH
10223: PPUSH
10224: PPUSH
10225: PPUSH
// nearest_dist = 1000 ;
10226: LD_ADDR_VAR 0 4
10230: PUSH
10231: LD_INT 1000
10233: ST_TO_ADDR
// nearest_un = un ;
10234: LD_ADDR_VAR 0 5
10238: PUSH
10239: LD_VAR 0 1
10243: ST_TO_ADDR
// for sold in units do
10244: LD_ADDR_VAR 0 6
10248: PUSH
10249: LD_VAR 0 2
10253: PUSH
10254: FOR_IN
10255: IFFALSE 10311
// begin dist = GetDistUnits ( un , sold ) ;
10257: LD_ADDR_VAR 0 7
10261: PUSH
10262: LD_VAR 0 1
10266: PPUSH
10267: LD_VAR 0 6
10271: PPUSH
10272: CALL_OW 296
10276: ST_TO_ADDR
// if dist < nearest_dist then
10277: LD_VAR 0 7
10281: PUSH
10282: LD_VAR 0 4
10286: LESS
10287: IFFALSE 10309
// begin nearest_un = sold ;
10289: LD_ADDR_VAR 0 5
10293: PUSH
10294: LD_VAR 0 6
10298: ST_TO_ADDR
// nearest_dist = dist ;
10299: LD_ADDR_VAR 0 4
10303: PUSH
10304: LD_VAR 0 7
10308: ST_TO_ADDR
// end ; end ;
10309: GO 10254
10311: POP
10312: POP
// result := nearest_un ;
10313: LD_ADDR_VAR 0 3
10317: PUSH
10318: LD_VAR 0 5
10322: ST_TO_ADDR
// end ;
10323: LD_VAR 0 3
10327: RET
// function FindMostIll ( Uns ) ; var TheMostIll , Un ; begin
10328: LD_INT 0
10330: PPUSH
10331: PPUSH
10332: PPUSH
// TheMostIll = Uns [ 1 ] ;
10333: LD_ADDR_VAR 0 3
10337: PUSH
10338: LD_VAR 0 1
10342: PUSH
10343: LD_INT 1
10345: ARRAY
10346: ST_TO_ADDR
// for Un in Uns do
10347: LD_ADDR_VAR 0 4
10351: PUSH
10352: LD_VAR 0 1
10356: PUSH
10357: FOR_IN
10358: IFFALSE 10394
// if GetLives ( Un ) < GetLives ( TheMostIll ) then
10360: LD_VAR 0 4
10364: PPUSH
10365: CALL_OW 256
10369: PUSH
10370: LD_VAR 0 3
10374: PPUSH
10375: CALL_OW 256
10379: LESS
10380: IFFALSE 10392
// TheMostIll = Un ;
10382: LD_ADDR_VAR 0 3
10386: PUSH
10387: LD_VAR 0 4
10391: ST_TO_ADDR
10392: GO 10357
10394: POP
10395: POP
// result = TheMostIll ;
10396: LD_ADDR_VAR 0 2
10400: PUSH
10401: LD_VAR 0 3
10405: ST_TO_ADDR
// end ;
10406: LD_VAR 0 2
10410: RET
// every 0 0$0.5 trigger SeeXY ( americans , 25 , 32 ) do var Uns , Un , Ill , The_Most_Ill ;
10411: LD_EXP 3
10415: PPUSH
10416: LD_INT 25
10418: PPUSH
10419: LD_INT 32
10421: PPUSH
10422: CALL_OW 293
10426: IFFALSE 10979
10428: GO 10430
10430: DISABLE
10431: LD_INT 0
10433: PPUSH
10434: PPUSH
10435: PPUSH
10436: PPUSH
// begin IngameOn ;
10437: CALL_OW 8
// PlaceUnitXYR ( Khatam , 25 , 31 , 1 , false ) ;
10441: LD_EXP 10
10445: PPUSH
10446: LD_INT 25
10448: PPUSH
10449: LD_INT 31
10451: PPUSH
10452: LD_INT 1
10454: PPUSH
10455: LD_INT 0
10457: PPUSH
10458: CALL_OW 50
// CenterOnUnits ( Khatam ) ;
10462: LD_EXP 10
10466: PPUSH
10467: CALL_OW 85
// Uns = FilterAllUnits ( [ [ f_side , americans ] ] ) ;
10471: LD_ADDR_VAR 0 1
10475: PUSH
10476: LD_INT 22
10478: PUSH
10479: LD_EXP 3
10483: PUSH
10484: EMPTY
10485: LIST
10486: LIST
10487: PUSH
10488: EMPTY
10489: LIST
10490: PPUSH
10491: CALL_OW 69
10495: ST_TO_ADDR
// for Un in Uns do
10496: LD_ADDR_VAR 0 2
10500: PUSH
10501: LD_VAR 0 1
10505: PUSH
10506: FOR_IN
10507: IFFALSE 10549
// begin ComWait ( Un , 0 0$1 * Rand ( 5 , 15 ) ) ;
10509: LD_VAR 0 2
10513: PPUSH
10514: LD_INT 35
10516: PUSH
10517: LD_INT 5
10519: PPUSH
10520: LD_INT 15
10522: PPUSH
10523: CALL_OW 12
10527: MUL
10528: PPUSH
10529: CALL_OW 142
// ComTurnUnit ( Un , Khatam ) ;
10533: LD_VAR 0 2
10537: PPUSH
10538: LD_EXP 10
10542: PPUSH
10543: CALL_OW 119
// end ;
10547: GO 10506
10549: POP
10550: POP
// AddComMoveUnit ( Khatam , Nearest ( Khatam , FilterAllUnits ( [ f_side , americans ] ) diff [ Khatam ] ) ) ;
10551: LD_EXP 10
10555: PPUSH
10556: LD_EXP 10
10560: PPUSH
10561: LD_INT 22
10563: PUSH
10564: LD_EXP 3
10568: PUSH
10569: EMPTY
10570: LIST
10571: LIST
10572: PPUSH
10573: CALL_OW 69
10577: PUSH
10578: LD_EXP 10
10582: PUSH
10583: EMPTY
10584: LIST
10585: DIFF
10586: PPUSH
10587: CALL 10219 0 2
10591: PPUSH
10592: CALL_OW 172
// Say ( Khatam , D2a-Khat-1 ) ;
10596: LD_EXP 10
10600: PPUSH
10601: LD_STRING D2a-Khat-1
10603: PPUSH
10604: CALL_OW 88
// if GetDistUnits ( Khatam , John ) < 15 and GetDistUnits ( Khatam , John ) > 5 then
10608: LD_EXP 10
10612: PPUSH
10613: LD_EXP 7
10617: PPUSH
10618: CALL_OW 296
10622: PUSH
10623: LD_INT 15
10625: LESS
10626: PUSH
10627: LD_EXP 10
10631: PPUSH
10632: LD_EXP 7
10636: PPUSH
10637: CALL_OW 296
10641: PUSH
10642: LD_INT 5
10644: GREATER
10645: AND
10646: IFFALSE 10662
// AddComMoveUnit ( Khatam , John ) ;
10648: LD_EXP 10
10652: PPUSH
10653: LD_EXP 7
10657: PPUSH
10658: CALL_OW 172
// Say ( John , D2a-JMM-1 ) ;
10662: LD_EXP 7
10666: PPUSH
10667: LD_STRING D2a-JMM-1
10669: PPUSH
10670: CALL_OW 88
// IngameOff ;
10674: CALL_OW 9
// DialogueOn ;
10678: CALL_OW 6
// interface_hidden = true ;
10682: LD_ADDR_OWVAR 54
10686: PUSH
10687: LD_INT 1
10689: ST_TO_ADDR
// Say ( Khatam , D2a-Khat-2 ) ;
10690: LD_EXP 10
10694: PPUSH
10695: LD_STRING D2a-Khat-2
10697: PPUSH
10698: CALL_OW 88
// Say ( John , D2a-JMM-2 ) ;
10702: LD_EXP 7
10706: PPUSH
10707: LD_STRING D2a-JMM-2
10709: PPUSH
10710: CALL_OW 88
// Say ( Khatam , D2a-Khat-3 ) ;
10714: LD_EXP 10
10718: PPUSH
10719: LD_STRING D2a-Khat-3
10721: PPUSH
10722: CALL_OW 88
// Say ( John , D2a-JMM-3 ) ;
10726: LD_EXP 7
10730: PPUSH
10731: LD_STRING D2a-JMM-3
10733: PPUSH
10734: CALL_OW 88
// Say ( Khatam , D2a-Khat-4 ) ;
10738: LD_EXP 10
10742: PPUSH
10743: LD_STRING D2a-Khat-4
10745: PPUSH
10746: CALL_OW 88
// Say ( John , D2a-JMM-4 ) ;
10750: LD_EXP 7
10754: PPUSH
10755: LD_STRING D2a-JMM-4
10757: PPUSH
10758: CALL_OW 88
// Say ( Khatam , D2a-Khat-5 ) ;
10762: LD_EXP 10
10766: PPUSH
10767: LD_STRING D2a-Khat-5
10769: PPUSH
10770: CALL_OW 88
// Say ( John , D2a-JMM-5 ) ;
10774: LD_EXP 7
10778: PPUSH
10779: LD_STRING D2a-JMM-5
10781: PPUSH
10782: CALL_OW 88
// interface_hidden = false ;
10786: LD_ADDR_OWVAR 54
10790: PUSH
10791: LD_INT 0
10793: ST_TO_ADDR
// DialogueOff ;
10794: CALL_OW 7
// ComFree ( Uns ) ;
10798: LD_VAR 0 1
10802: PPUSH
10803: CALL_OW 139
// ComFree ( Khatam ) ;
10807: LD_EXP 10
10811: PPUSH
10812: CALL_OW 139
// SetSide ( Khatam , americans ) ;
10816: LD_EXP 10
10820: PPUSH
10821: LD_EXP 3
10825: PPUSH
10826: CALL_OW 235
// Ill = UnitFilter ( [ John , Cyrus , Bobby , Nick , Lisa , AmME1 , AmFE2 , AmMSo3 ] , [ f_ok ] ) ;
10830: LD_ADDR_VAR 0 3
10834: PUSH
10835: LD_EXP 7
10839: PUSH
10840: LD_EXP 8
10844: PUSH
10845: LD_EXP 9
10849: PUSH
10850: LD_EXP 11
10854: PUSH
10855: LD_EXP 12
10859: PUSH
10860: LD_EXP 13
10864: PUSH
10865: LD_EXP 14
10869: PUSH
10870: LD_EXP 15
10874: PUSH
10875: EMPTY
10876: LIST
10877: LIST
10878: LIST
10879: LIST
10880: LIST
10881: LIST
10882: LIST
10883: LIST
10884: PPUSH
10885: LD_INT 50
10887: PUSH
10888: EMPTY
10889: LIST
10890: PPUSH
10891: CALL_OW 72
10895: ST_TO_ADDR
// The_Most_Ill = FindMostIll ( Ill ) ;
10896: LD_ADDR_VAR 0 4
10900: PUSH
10901: LD_VAR 0 3
10905: PPUSH
10906: CALL 10328 0 1
10910: ST_TO_ADDR
// if GetLives ( The_Most_Ill ) < 1000 and IsLive ( The_Most_Ill ) then
10911: LD_VAR 0 4
10915: PPUSH
10916: CALL_OW 256
10920: PUSH
10921: LD_INT 1000
10923: LESS
10924: PUSH
10925: LD_VAR 0 4
10929: PPUSH
10930: CALL_OW 300
10934: AND
10935: IFFALSE 10972
// begin ComHeal ( Khatam , The_Most_Ill ) ;
10937: LD_EXP 10
10941: PPUSH
10942: LD_VAR 0 4
10946: PPUSH
10947: CALL_OW 128
// Say ( Khatam , D2b-Khat-1 ) ;
10951: LD_EXP 10
10955: PPUSH
10956: LD_STRING D2b-Khat-1
10958: PPUSH
10959: CALL_OW 88
// Hint ( Scientists1 ) ;
10963: LD_STRING Scientists1
10965: PPUSH
10966: CALL_OW 339
// end else
10970: GO 10979
// Hint ( Scientists2 ) ;
10972: LD_STRING Scientists2
10974: PPUSH
10975: CALL_OW 339
// end ;
10979: PPOPN 4
10981: END
// function Set_times ; var Time_to_visit , i ; begin
10982: LD_INT 0
10984: PPUSH
10985: PPUSH
10986: PPUSH
// Time_of_capture = tick ;
10987: LD_ADDR_EXP 30
10991: PUSH
10992: LD_OWVAR 1
10996: ST_TO_ADDR
// i = ( 27 - ( Time_of_capture ) / 1 1$0 ) / ( 2 + Difficulty ) ;
10997: LD_ADDR_VAR 0 3
11001: PUSH
11002: LD_INT 27
11004: PUSH
11005: LD_EXP 30
11009: PUSH
11010: LD_INT 2100
11012: DIVREAL
11013: MINUS
11014: PUSH
11015: LD_INT 2
11017: PUSH
11018: LD_OWVAR 67
11022: PLUS
11023: DIVREAL
11024: ST_TO_ADDR
// if i < 1.5 then
11025: LD_VAR 0 3
11029: PUSH
11030: LD_REAL  1.50000000000000E+0000
11033: LESS
11034: IFFALSE 11045
// i = 1.5 ;
11036: LD_ADDR_VAR 0 3
11040: PUSH
11041: LD_REAL  1.50000000000000E+0000
11044: ST_TO_ADDR
// if i > 4 then
11045: LD_VAR 0 3
11049: PUSH
11050: LD_INT 4
11052: GREATER
11053: IFFALSE 11063
// i = 4 ;
11055: LD_ADDR_VAR 0 3
11059: PUSH
11060: LD_INT 4
11062: ST_TO_ADDR
// Time_to_visit = ( i * 1 1$0 ) div 1 ;
11063: LD_ADDR_VAR 0 2
11067: PUSH
11068: LD_VAR 0 3
11072: PUSH
11073: LD_INT 2100
11075: MUL
11076: PUSH
11077: LD_INT 1
11079: DIV
11080: ST_TO_ADDR
// Time_of_visit = Time_of_capture + Time_to_visit ;
11081: LD_ADDR_EXP 25
11085: PUSH
11086: LD_EXP 30
11090: PUSH
11091: LD_VAR 0 2
11095: PLUS
11096: ST_TO_ADDR
// Time_of_attack = Time_of_visit + 5 5$30 + ( 3 - Difficulty ) * ( 2 2$00 ) ;
11097: LD_ADDR_EXP 26
11101: PUSH
11102: LD_EXP 25
11106: PUSH
11107: LD_INT 11550
11109: PLUS
11110: PUSH
11111: LD_INT 3
11113: PUSH
11114: LD_OWVAR 67
11118: MINUS
11119: PUSH
11120: LD_INT 4200
11122: MUL
11123: PLUS
11124: ST_TO_ADDR
// ChangeMissionObjectives ( M2 ) ;
11125: LD_STRING M2
11127: PPUSH
11128: CALL_OW 337
// Say ( John , D3b-JMM-1 ) ;
11132: LD_EXP 7
11136: PPUSH
11137: LD_STRING D3b-JMM-1
11139: PPUSH
11140: CALL_OW 88
// end ;
11144: LD_VAR 0 1
11148: RET
// every 0 0$2 trigger GetSide ( Arm1 ) = americans do
11149: LD_INT 2
11151: PPUSH
11152: CALL_OW 255
11156: PUSH
11157: LD_EXP 3
11161: EQUAL
11162: IFFALSE 11174
11164: GO 11166
11166: DISABLE
// begin Hint ( Armoury ) ;
11167: LD_STRING Armoury
11169: PPUSH
11170: CALL_OW 339
// end ;
11174: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , americans ] , [ f_btype , b_breastwork ] ] ) > 0 do
11175: LD_INT 22
11177: PUSH
11178: LD_EXP 3
11182: PUSH
11183: EMPTY
11184: LIST
11185: LIST
11186: PUSH
11187: LD_INT 30
11189: PUSH
11190: LD_INT 31
11192: PUSH
11193: EMPTY
11194: LIST
11195: LIST
11196: PUSH
11197: EMPTY
11198: LIST
11199: LIST
11200: PPUSH
11201: CALL_OW 69
11205: PUSH
11206: LD_INT 0
11208: GREATER
11209: IFFALSE 11221
11211: GO 11213
11213: DISABLE
// begin Hint ( Breastworks ) ;
11214: LD_STRING Breastworks
11216: PPUSH
11217: CALL_OW 339
// end ;
11221: END
// every 0 0$3 trigger GetSide ( dep1 ) = americans do
11222: LD_INT 1
11224: PPUSH
11225: CALL_OW 255
11229: PUSH
11230: LD_EXP 3
11234: EQUAL
11235: IFFALSE 11436
11237: GO 11239
11239: DISABLE
// begin DialogueOn ;
11240: CALL_OW 6
// if GetSide ( dep2 ) = americans then
11244: LD_INT 10
11246: PPUSH
11247: CALL_OW 255
11251: PUSH
11252: LD_EXP 3
11256: EQUAL
11257: IFFALSE 11367
// begin Say ( John , D3a-JMM-1 ) ;
11259: LD_EXP 7
11263: PPUSH
11264: LD_STRING D3a-JMM-1
11266: PPUSH
11267: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-1 ) ;
11271: LD_EXP 16
11275: PPUSH
11276: LD_STRING D3a-Pow-1
11278: PPUSH
11279: CALL_OW 94
// Say ( John , D3a-JMM-2 ) ;
11283: LD_EXP 7
11287: PPUSH
11288: LD_STRING D3a-JMM-2
11290: PPUSH
11291: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-2 ) ;
11295: LD_EXP 16
11299: PPUSH
11300: LD_STRING D3a-Pow-2
11302: PPUSH
11303: CALL_OW 94
// Say ( John , D3a-JMM-3 ) ;
11307: LD_EXP 7
11311: PPUSH
11312: LD_STRING D3a-JMM-3
11314: PPUSH
11315: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-3 ) ;
11319: LD_EXP 16
11323: PPUSH
11324: LD_STRING D3a-Pow-3
11326: PPUSH
11327: CALL_OW 94
// Say ( John , D3a-JMM-4 ) ;
11331: LD_EXP 7
11335: PPUSH
11336: LD_STRING D3a-JMM-4
11338: PPUSH
11339: CALL_OW 88
// DialogueOff ;
11343: CALL_OW 7
// Hint ( Depot2 ) ;
11347: LD_STRING Depot2
11349: PPUSH
11350: CALL_OW 339
// Hint ( Transporting ) ;
11354: LD_STRING Transporting
11356: PPUSH
11357: CALL_OW 339
// Set_times ;
11361: CALL 10982 0 0
// end else
11365: GO 11436
// begin Wait ( 2 * 0 0$1 ) ;
11367: LD_INT 2
11369: PUSH
11370: LD_INT 35
11372: MUL
11373: PPUSH
11374: CALL_OW 67
// Say ( John , D3-JMM-1 ) ;
11378: LD_EXP 7
11382: PPUSH
11383: LD_STRING D3-JMM-1
11385: PPUSH
11386: CALL_OW 88
// SayRadio ( Powell , D3-Pow-1 ) ;
11390: LD_EXP 16
11394: PPUSH
11395: LD_STRING D3-Pow-1
11397: PPUSH
11398: CALL_OW 94
// if IsOk ( Cyrus ) then
11402: LD_EXP 8
11406: PPUSH
11407: CALL_OW 302
11411: IFFALSE 11425
// Say ( Cyrus , D3-Cyrus-1 ) ;
11413: LD_EXP 8
11417: PPUSH
11418: LD_STRING D3-Cyrus-1
11420: PPUSH
11421: CALL_OW 88
// DialogueOff ;
11425: CALL_OW 7
// Hint ( Depot ) ;
11429: LD_STRING Depot
11431: PPUSH
11432: CALL_OW 339
// end ; end ;
11436: END
// every 0 0$3 trigger GetSide ( dep2 ) = americans do
11437: LD_INT 10
11439: PPUSH
11440: CALL_OW 255
11444: PUSH
11445: LD_EXP 3
11449: EQUAL
11450: IFFALSE 11651
11452: GO 11454
11454: DISABLE
// begin DialogueOn ;
11455: CALL_OW 6
// if GetSide ( dep1 ) = americans then
11459: LD_INT 1
11461: PPUSH
11462: CALL_OW 255
11466: PUSH
11467: LD_EXP 3
11471: EQUAL
11472: IFFALSE 11582
// begin Say ( John , D3a-JMM-1 ) ;
11474: LD_EXP 7
11478: PPUSH
11479: LD_STRING D3a-JMM-1
11481: PPUSH
11482: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-1 ) ;
11486: LD_EXP 16
11490: PPUSH
11491: LD_STRING D3a-Pow-1
11493: PPUSH
11494: CALL_OW 94
// Say ( John , D3a-JMM-2 ) ;
11498: LD_EXP 7
11502: PPUSH
11503: LD_STRING D3a-JMM-2
11505: PPUSH
11506: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-2 ) ;
11510: LD_EXP 16
11514: PPUSH
11515: LD_STRING D3a-Pow-2
11517: PPUSH
11518: CALL_OW 94
// Say ( John , D3a-JMM-3 ) ;
11522: LD_EXP 7
11526: PPUSH
11527: LD_STRING D3a-JMM-3
11529: PPUSH
11530: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-3 ) ;
11534: LD_EXP 16
11538: PPUSH
11539: LD_STRING D3a-Pow-3
11541: PPUSH
11542: CALL_OW 94
// Say ( John , D3a-JMM-4 ) ;
11546: LD_EXP 7
11550: PPUSH
11551: LD_STRING D3a-JMM-4
11553: PPUSH
11554: CALL_OW 88
// DialogueOff ;
11558: CALL_OW 7
// Hint ( Depot2 ) ;
11562: LD_STRING Depot2
11564: PPUSH
11565: CALL_OW 339
// Hint ( Transporting ) ;
11569: LD_STRING Transporting
11571: PPUSH
11572: CALL_OW 339
// Set_times ;
11576: CALL 10982 0 0
// end else
11580: GO 11651
// begin Wait ( 2 * 0 0$1 ) ;
11582: LD_INT 2
11584: PUSH
11585: LD_INT 35
11587: MUL
11588: PPUSH
11589: CALL_OW 67
// Say ( John , D3-JMM-1 ) ;
11593: LD_EXP 7
11597: PPUSH
11598: LD_STRING D3-JMM-1
11600: PPUSH
11601: CALL_OW 88
// SayRadio ( Powell , D3-Pow-1 ) ;
11605: LD_EXP 16
11609: PPUSH
11610: LD_STRING D3-Pow-1
11612: PPUSH
11613: CALL_OW 94
// if IsOk ( Cyrus ) then
11617: LD_EXP 8
11621: PPUSH
11622: CALL_OW 302
11626: IFFALSE 11640
// Say ( Cyrus , D3-Cyrus-1 ) ;
11628: LD_EXP 8
11632: PPUSH
11633: LD_STRING D3-Cyrus-1
11635: PPUSH
11636: CALL_OW 88
// DialogueOff ;
11640: CALL_OW 7
// Hint ( Depot ) ;
11644: LD_STRING Depot
11646: PPUSH
11647: CALL_OW 339
// end ; end ;
11651: END
// every 0 0$5 trigger GetResourceType ( GetBase ( GetUnitNumber ( 52 , 10 ) ) , mat_cans ) > 20 do
11652: LD_INT 52
11654: PPUSH
11655: LD_INT 10
11657: PPUSH
11658: CALL_OW 438
11662: PPUSH
11663: CALL_OW 274
11667: PPUSH
11668: LD_INT 1
11670: PPUSH
11671: CALL_OW 275
11675: PUSH
11676: LD_INT 20
11678: GREATER
11679: IFFALSE 11691
11681: GO 11683
11683: DISABLE
// begin Hint ( Building ) ;
11684: LD_STRING Building
11686: PPUSH
11687: CALL_OW 339
// end ;
11691: END
// on BuildingStarted ( build , hum ) do begin Hint ( Building2 ) ;
11692: LD_STRING Building2
11694: PPUSH
11695: CALL_OW 339
// disable ;
11699: DISABLE
// end ;
11700: PPOPN 2
11702: END
// every 0 0$0.5 trigger escape_flag do
11703: LD_EXP 28
11707: IFFALSE 11768
11709: GO 11711
11711: DISABLE
// begin if FilterUnitsInArea ( prijezd , [ f_side , americans ] ) > 0 then
11712: LD_INT 10
11714: PPUSH
11715: LD_INT 22
11717: PUSH
11718: LD_EXP 3
11722: PUSH
11723: EMPTY
11724: LIST
11725: LIST
11726: PPUSH
11727: CALL_OW 70
11731: PUSH
11732: LD_INT 0
11734: GREATER
11735: IFFALSE 11767
// ComMoveXY ( FilterUnitsInArea ( prijezd , [ f_side , americans ] ) , 16 , 7 ) ;
11737: LD_INT 10
11739: PPUSH
11740: LD_INT 22
11742: PUSH
11743: LD_EXP 3
11747: PUSH
11748: EMPTY
11749: LIST
11750: LIST
11751: PPUSH
11752: CALL_OW 70
11756: PPUSH
11757: LD_INT 16
11759: PPUSH
11760: LD_INT 7
11762: PPUSH
11763: CALL_OW 111
// enable ;
11767: ENABLE
// end ;
11768: END
// function Escape ; begin
11769: LD_INT 0
11771: PPUSH
// wait ( 0 0$1 ) ;
11772: LD_INT 35
11774: PPUSH
11775: CALL_OW 67
// ComStop ( [ vehicle3 , vehicle4 ] ) ;
11779: LD_EXP 66
11783: PUSH
11784: LD_EXP 67
11788: PUSH
11789: EMPTY
11790: LIST
11791: LIST
11792: PPUSH
11793: CALL_OW 141
// wait ( 0 0$1 ) ;
11797: LD_INT 35
11799: PPUSH
11800: CALL_OW 67
// if IsOk ( vehicle3 ) then
11804: LD_EXP 66
11808: PPUSH
11809: CALL_OW 302
11813: IFFALSE 11830
// ComMoveXY ( vehicle3 , 3 , 6 ) ;
11815: LD_EXP 66
11819: PPUSH
11820: LD_INT 3
11822: PPUSH
11823: LD_INT 6
11825: PPUSH
11826: CALL_OW 111
// if IsOk ( vehicle4 ) then
11830: LD_EXP 67
11834: PPUSH
11835: CALL_OW 302
11839: IFFALSE 11856
// ComMoveXY ( vehicle4 , 4 , 8 ) ;
11841: LD_EXP 67
11845: PPUSH
11846: LD_INT 4
11848: PPUSH
11849: LD_INT 8
11851: PPUSH
11852: CALL_OW 111
// if IsOk ( Mikhail ) and not ( Mikhail_in_depot ) then
11856: LD_EXP 65
11860: PPUSH
11861: CALL_OW 302
11865: PUSH
11866: LD_EXP 39
11870: NOT
11871: AND
11872: IFFALSE 11964
// begin target_of_escape = [ 4 , 6 ] ;
11874: LD_ADDR_LOC 10
11878: PUSH
11879: LD_INT 4
11881: PUSH
11882: LD_INT 6
11884: PUSH
11885: EMPTY
11886: LIST
11887: LIST
11888: ST_TO_ADDR
// SetSide ( Mikhail , russians1 ) ;
11889: LD_EXP 65
11893: PPUSH
11894: LD_EXP 6
11898: PPUSH
11899: CALL_OW 235
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
11903: LD_EXP 65
11907: PPUSH
11908: LD_LOC 10
11912: PUSH
11913: LD_INT 1
11915: ARRAY
11916: PPUSH
11917: LD_LOC 10
11921: PUSH
11922: LD_INT 2
11924: ARRAY
11925: PPUSH
11926: CALL_OW 171
// AddComHold ( Mikhail ) ;
11930: LD_EXP 65
11934: PPUSH
11935: CALL_OW 200
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
11939: LD_EXP 3
11943: PPUSH
11944: LD_EXP 6
11948: PPUSH
11949: LD_INT 2
11951: PPUSH
11952: LD_INT 1
11954: PPUSH
11955: CALL_OW 80
// enable ( Mikhails_escape ) ;
11959: LD_EXP 45
11963: ENABLE_MARKED
// end ; escape_flag = true ;
11964: LD_ADDR_EXP 28
11968: PUSH
11969: LD_INT 1
11971: ST_TO_ADDR
// escape_dialogue = true ;
11972: LD_ADDR_EXP 99
11976: PUSH
11977: LD_INT 1
11979: ST_TO_ADDR
// Say ( driver3 , D5-Rus2-1a ) ;
11980: LD_EXP 68
11984: PPUSH
11985: LD_STRING D5-Rus2-1a
11987: PPUSH
11988: CALL_OW 88
// escape_dialogue = false ;
11992: LD_ADDR_EXP 99
11996: PUSH
11997: LD_INT 0
11999: ST_TO_ADDR
// end ;
12000: LD_VAR 0 1
12004: RET
// every 0 0$3 trigger tick > Time_of_visit do var e ;
12005: LD_OWVAR 1
12009: PUSH
12010: LD_EXP 25
12014: GREATER
12015: IFFALSE 12247
12017: GO 12019
12019: DISABLE
12020: LD_INT 0
12022: PPUSH
// begin repeat if FilterUnitsInArea ( Prijezd , [ ] ) = 0 then
12023: LD_INT 10
12025: PPUSH
12026: EMPTY
12027: PPUSH
12028: CALL_OW 70
12032: PUSH
12033: LD_INT 0
12035: EQUAL
12036: IFFALSE 12040
// break ;
12038: GO 12071
// ComMoveXY ( FilterUnitsInArea ( prijezd , [ ] ) , 16 , 7 ) ;
12040: LD_INT 10
12042: PPUSH
12043: EMPTY
12044: PPUSH
12045: CALL_OW 70
12049: PPUSH
12050: LD_INT 16
12052: PPUSH
12053: LD_INT 7
12055: PPUSH
12056: CALL_OW 111
// wait ( 0 0$1 ) ;
12060: LD_INT 35
12062: PPUSH
12063: CALL_OW 67
// until false ;
12067: LD_INT 0
12069: IFFALSE 12023
// PlaceUnitXY ( vehicle3 , 5 , 5 , false ) ;
12071: LD_EXP 66
12075: PPUSH
12076: LD_INT 5
12078: PPUSH
12079: LD_INT 5
12081: PPUSH
12082: LD_INT 0
12084: PPUSH
12085: CALL_OW 48
// PlaceUnitXY ( vehicle4 , 6 , 8 , false ) ;
12089: LD_EXP 67
12093: PPUSH
12094: LD_INT 6
12096: PPUSH
12097: LD_INT 8
12099: PPUSH
12100: LD_INT 0
12102: PPUSH
12103: CALL_OW 48
// ComMoveXY ( vehicle3 , 66 , 15 ) ;
12107: LD_EXP 66
12111: PPUSH
12112: LD_INT 66
12114: PPUSH
12115: LD_INT 15
12117: PPUSH
12118: CALL_OW 111
// ComMoveXY ( vehicle4 , 67 , 20 ) ;
12122: LD_EXP 67
12126: PPUSH
12127: LD_INT 67
12129: PPUSH
12130: LD_INT 20
12132: PPUSH
12133: CALL_OW 111
// if See ( americans , vehicle3 ) or See ( americans , vehicle4 ) then
12137: LD_EXP 3
12141: PPUSH
12142: LD_EXP 66
12146: PPUSH
12147: CALL_OW 292
12151: PUSH
12152: LD_EXP 3
12156: PPUSH
12157: LD_EXP 67
12161: PPUSH
12162: CALL_OW 292
12166: OR
12167: IFFALSE 12194
// if not ( escape_flag ) then
12169: LD_EXP 28
12173: NOT
12174: IFFALSE 12186
// e = true else
12176: LD_ADDR_VAR 0 1
12180: PUSH
12181: LD_INT 1
12183: ST_TO_ADDR
12184: GO 12194
// e = false ;
12186: LD_ADDR_VAR 0 1
12190: PUSH
12191: LD_INT 0
12193: ST_TO_ADDR
// wait ( 0 0$7 ) ;
12194: LD_INT 245
12196: PPUSH
12197: CALL_OW 67
// if e then
12201: LD_VAR 0 1
12205: IFFALSE 12211
// Escape ;
12207: CALL 11769 0 0
// if vehicle_goes_flag then
12211: LD_EXP 100
12215: IFFALSE 12222
// enable ( vehicle_goes ) ;
12217: LD_EXP 27
12221: ENABLE_MARKED
// wait ( 0 0$3 ) ;
12222: LD_INT 105
12224: PPUSH
12225: CALL_OW 67
// CenterOnUnits ( [ vehicle3 , vehicle4 ] ) ;
12229: LD_EXP 66
12233: PUSH
12234: LD_EXP 67
12238: PUSH
12239: EMPTY
12240: LIST
12241: LIST
12242: PPUSH
12243: CALL_OW 85
// end ;
12247: PPOPN 1
12249: END
// every 0 0$2 marked 2 do
12250: GO 12252
12252: DISABLE
// begin if ( ( GetDistUnitXY ( vehicle3 , 66 , 15 ) < 5 and ( See ( americans , vehicle3 ) or GetLives ( vehicle3 ) < 1000 ) ) ) or ( ( GetDistUnitXY ( vehicle4 , 67 , 20 ) < 5 and ( See ( americans , vehicle4 ) or GetLives ( vehicle3 ) < 1000 ) ) ) or ( GetLives ( vehicle3 ) < 500 ) or ( GetLives ( vehicle4 ) < 500 ) then
12253: LD_EXP 66
12257: PPUSH
12258: LD_INT 66
12260: PPUSH
12261: LD_INT 15
12263: PPUSH
12264: CALL_OW 297
12268: PUSH
12269: LD_INT 5
12271: LESS
12272: PUSH
12273: LD_EXP 3
12277: PPUSH
12278: LD_EXP 66
12282: PPUSH
12283: CALL_OW 292
12287: PUSH
12288: LD_EXP 66
12292: PPUSH
12293: CALL_OW 256
12297: PUSH
12298: LD_INT 1000
12300: LESS
12301: OR
12302: AND
12303: PUSH
12304: LD_EXP 67
12308: PPUSH
12309: LD_INT 67
12311: PPUSH
12312: LD_INT 20
12314: PPUSH
12315: CALL_OW 297
12319: PUSH
12320: LD_INT 5
12322: LESS
12323: PUSH
12324: LD_EXP 3
12328: PPUSH
12329: LD_EXP 67
12333: PPUSH
12334: CALL_OW 292
12338: PUSH
12339: LD_EXP 66
12343: PPUSH
12344: CALL_OW 256
12348: PUSH
12349: LD_INT 1000
12351: LESS
12352: OR
12353: AND
12354: OR
12355: PUSH
12356: LD_EXP 66
12360: PPUSH
12361: CALL_OW 256
12365: PUSH
12366: LD_INT 500
12368: LESS
12369: OR
12370: PUSH
12371: LD_EXP 67
12375: PPUSH
12376: CALL_OW 256
12380: PUSH
12381: LD_INT 500
12383: LESS
12384: OR
12385: IFFALSE 12400
// begin if not ( escape_flag ) then
12387: LD_EXP 28
12391: NOT
12392: IFFALSE 12398
// Escape ;
12394: CALL 11769 0 0
// end else
12398: GO 12401
// enable ;
12400: ENABLE
// end ;
12401: END
// every 0 0$2 + 0 0$1 trigger IsOk ( vehicle3 ) and not ( escape_flag ) marked 2 do
12402: LD_EXP 66
12406: PPUSH
12407: CALL_OW 302
12411: PUSH
12412: LD_EXP 28
12416: NOT
12417: AND
12418: IFFALSE 12474
12420: GO 12422
12422: DISABLE
// begin if GetDistUnits ( vehicle3 , dep1 ) < 25 then
12423: LD_EXP 66
12427: PPUSH
12428: LD_INT 1
12430: PPUSH
12431: CALL_OW 296
12435: PUSH
12436: LD_INT 25
12438: LESS
12439: IFFALSE 12473
// begin CenterOnUnits ( [ vehicle3 , vehicle4 ] ) ;
12441: LD_EXP 66
12445: PUSH
12446: LD_EXP 67
12450: PUSH
12451: EMPTY
12452: LIST
12453: LIST
12454: PPUSH
12455: CALL_OW 85
// Say ( driver3 , D5-Rus2-1 ) ;
12459: LD_EXP 68
12463: PPUSH
12464: LD_STRING D5-Rus2-1
12466: PPUSH
12467: CALL_OW 88
// end else
12471: GO 12474
// enable ;
12473: ENABLE
// end ;
12474: END
// every 0 0$1 trigger escape_flag do var rus ;
12475: LD_EXP 28
12479: IFFALSE 12845
12481: GO 12483
12483: DISABLE
12484: LD_INT 0
12486: PPUSH
// begin if IsInArea ( vehicle3 , prijezd ) and ( IsInUnit ( driver3 ) > 0 ) then
12487: LD_EXP 66
12491: PPUSH
12492: LD_INT 10
12494: PPUSH
12495: CALL_OW 308
12499: PUSH
12500: LD_EXP 68
12504: PPUSH
12505: CALL_OW 310
12509: PUSH
12510: LD_INT 0
12512: GREATER
12513: AND
12514: IFFALSE 12572
// begin flee = flee + 1 ;
12516: LD_ADDR_EXP 29
12520: PUSH
12521: LD_EXP 29
12525: PUSH
12526: LD_INT 1
12528: PLUS
12529: ST_TO_ADDR
// DestroyUnit ( vehicle3 ) ;
12530: LD_EXP 66
12534: PPUSH
12535: CALL_OW 65
// if not ( IsOk ( vehicle4 ) ) then
12539: LD_EXP 67
12543: PPUSH
12544: CALL_OW 302
12548: NOT
12549: IFFALSE 12572
// begin disable ( vehicle_goes ) ;
12551: LD_EXP 27
12555: DISABLE_MARKED
// escape_flag = false ;
12556: LD_ADDR_EXP 28
12560: PUSH
12561: LD_INT 0
12563: ST_TO_ADDR
// vehicle_goes_flag = false ;
12564: LD_ADDR_EXP 100
12568: PUSH
12569: LD_INT 0
12571: ST_TO_ADDR
// end ; end ; if IsInArea ( vehicle4 , prijezd ) and ( IsInUnit ( driver4 ) > 0 ) then
12572: LD_EXP 67
12576: PPUSH
12577: LD_INT 10
12579: PPUSH
12580: CALL_OW 308
12584: PUSH
12585: LD_EXP 69
12589: PPUSH
12590: CALL_OW 310
12594: PUSH
12595: LD_INT 0
12597: GREATER
12598: AND
12599: IFFALSE 12657
// begin flee = flee + 1 ;
12601: LD_ADDR_EXP 29
12605: PUSH
12606: LD_EXP 29
12610: PUSH
12611: LD_INT 1
12613: PLUS
12614: ST_TO_ADDR
// DestroyUnit ( vehicle4 ) ;
12615: LD_EXP 67
12619: PPUSH
12620: CALL_OW 65
// if not ( IsOk ( vehicle3 ) ) then
12624: LD_EXP 66
12628: PPUSH
12629: CALL_OW 302
12633: NOT
12634: IFFALSE 12657
// begin disable ( vehicle_goes ) ;
12636: LD_EXP 27
12640: DISABLE_MARKED
// escape_flag = false ;
12641: LD_ADDR_EXP 28
12645: PUSH
12646: LD_INT 0
12648: ST_TO_ADDR
// vehicle_goes_flag = false ;
12649: LD_ADDR_EXP 100
12653: PUSH
12654: LD_INT 0
12656: ST_TO_ADDR
// end ; end ; if not ( IsOk ( vehicle3 ) or IsOk ( vehicle4 ) ) and flee = 0 then
12657: LD_EXP 66
12661: PPUSH
12662: CALL_OW 302
12666: PUSH
12667: LD_EXP 67
12671: PPUSH
12672: CALL_OW 302
12676: OR
12677: NOT
12678: PUSH
12679: LD_EXP 29
12683: PUSH
12684: LD_INT 0
12686: EQUAL
12687: AND
12688: IFFALSE 12724
// begin escape_flag = false ;
12690: LD_ADDR_EXP 28
12694: PUSH
12695: LD_INT 0
12697: ST_TO_ADDR
// Time_of_attack = Time_of_attack + 1 1$0 ;
12698: LD_ADDR_EXP 26
12702: PUSH
12703: LD_EXP 26
12707: PUSH
12708: LD_INT 2100
12710: PLUS
12711: ST_TO_ADDR
// Attack_canceled = true ;
12712: LD_ADDR_EXP 93
12716: PUSH
12717: LD_INT 1
12719: ST_TO_ADDR
// SA_NothingHere ;
12720: CALL 23195 0 0
// end ; if escape_flag = false and IsOk ( AmME1 ) then
12724: LD_EXP 28
12728: PUSH
12729: LD_INT 0
12731: EQUAL
12732: PUSH
12733: LD_EXP 13
12737: PPUSH
12738: CALL_OW 302
12742: AND
12743: IFFALSE 12838
// begin while escape_dialogue do
12745: LD_EXP 99
12749: IFFALSE 12760
// Wait ( 0 0$1 ) ;
12751: LD_INT 35
12753: PPUSH
12754: CALL_OW 67
12758: GO 12745
// case flee of 1 :
12760: LD_EXP 29
12764: PUSH
12765: LD_INT 1
12767: DOUBLE
12768: EQUAL
12769: IFTRUE 12773
12771: GO 12800
12773: POP
// begin Say ( AmME1 , D5a-Sol1-1 ) ;
12774: LD_EXP 13
12778: PPUSH
12779: LD_STRING D5a-Sol1-1
12781: PPUSH
12782: CALL_OW 88
// Say ( John , D5a-JMM-1 ) ;
12786: LD_EXP 7
12790: PPUSH
12791: LD_STRING D5a-JMM-1
12793: PPUSH
12794: CALL_OW 88
// end ; 2 :
12798: GO 12836
12800: LD_INT 2
12802: DOUBLE
12803: EQUAL
12804: IFTRUE 12808
12806: GO 12835
12808: POP
// begin Say ( AmME1 , D5a-Sol1-1a ) ;
12809: LD_EXP 13
12813: PPUSH
12814: LD_STRING D5a-Sol1-1a
12816: PPUSH
12817: CALL_OW 88
// Say ( John , D5a-JMM-1 ) ;
12821: LD_EXP 7
12825: PPUSH
12826: LD_STRING D5a-JMM-1
12828: PPUSH
12829: CALL_OW 88
// end ; end ;
12833: GO 12836
12835: POP
// end else
12836: GO 12845
// if escape_flag then
12838: LD_EXP 28
12842: IFFALSE 12845
// enable ;
12844: ENABLE
// end ;
12845: PPOPN 1
12847: END
// function PlaceMikhail ; var AllAmUn , i , max , max_un ; begin
12848: LD_INT 0
12850: PPUSH
12851: PPUSH
12852: PPUSH
12853: PPUSH
12854: PPUSH
// AllAmUn := FilterAllUnits ( [ [ f_side , americans ] , [ f_ok ] , [ f_type , unit_human ] ] ) ;
12855: LD_ADDR_VAR 0 2
12859: PUSH
12860: LD_INT 22
12862: PUSH
12863: LD_EXP 3
12867: PUSH
12868: EMPTY
12869: LIST
12870: LIST
12871: PUSH
12872: LD_INT 50
12874: PUSH
12875: EMPTY
12876: LIST
12877: PUSH
12878: LD_INT 21
12880: PUSH
12881: LD_INT 1
12883: PUSH
12884: EMPTY
12885: LIST
12886: LIST
12887: PUSH
12888: EMPTY
12889: LIST
12890: LIST
12891: LIST
12892: PPUSH
12893: CALL_OW 69
12897: ST_TO_ADDR
// if AllAmUn = 1 then
12898: LD_VAR 0 2
12902: PUSH
12903: LD_INT 1
12905: EQUAL
12906: IFFALSE 12974
// begin PlaceUnitXYR ( Mikhail , GetX ( John ) , GetY ( John ) , 5 , true ) ;
12908: LD_EXP 65
12912: PPUSH
12913: LD_EXP 7
12917: PPUSH
12918: CALL_OW 250
12922: PPUSH
12923: LD_EXP 7
12927: PPUSH
12928: CALL_OW 251
12932: PPUSH
12933: LD_INT 5
12935: PPUSH
12936: LD_INT 1
12938: PPUSH
12939: CALL_OW 50
// Wait ( 0 0$3 ) ;
12943: LD_INT 105
12945: PPUSH
12946: CALL_OW 67
// ComAttackUnit ( Mikhail , John ) ;
12950: LD_EXP 65
12954: PPUSH
12955: LD_EXP 7
12959: PPUSH
12960: CALL_OW 115
// result = true ;
12964: LD_ADDR_VAR 0 1
12968: PUSH
12969: LD_INT 1
12971: ST_TO_ADDR
// end else
12972: GO 13133
// if AllAmUn > 1 then
12974: LD_VAR 0 2
12978: PUSH
12979: LD_INT 1
12981: GREATER
12982: IFFALSE 13125
// begin for i in AllAmUn do
12984: LD_ADDR_VAR 0 3
12988: PUSH
12989: LD_VAR 0 2
12993: PUSH
12994: FOR_IN
12995: IFFALSE 13033
// begin if not ( IsDying ( i ) ) and ( i <> John ) then
12997: LD_VAR 0 3
13001: PPUSH
13002: CALL_OW 303
13006: NOT
13007: PUSH
13008: LD_VAR 0 3
13012: PUSH
13013: LD_EXP 7
13017: NONEQUAL
13018: AND
13019: IFFALSE 13031
// max_un := i ;
13021: LD_ADDR_VAR 0 5
13025: PUSH
13026: LD_VAR 0 3
13030: ST_TO_ADDR
// end ;
13031: GO 12994
13033: POP
13034: POP
// PlaceUnitXYR ( Mikhail , GetX ( max_un ) , GetY ( max_un ) , 4 , true ) ;
13035: LD_EXP 65
13039: PPUSH
13040: LD_VAR 0 5
13044: PPUSH
13045: CALL_OW 250
13049: PPUSH
13050: LD_VAR 0 5
13054: PPUSH
13055: CALL_OW 251
13059: PPUSH
13060: LD_INT 4
13062: PPUSH
13063: LD_INT 1
13065: PPUSH
13066: CALL_OW 50
// Wait ( 0 0$3 ) ;
13070: LD_INT 105
13072: PPUSH
13073: CALL_OW 67
// enable ( Mikhail_placed ) ;
13077: LD_EXP 35
13081: ENABLE_MARKED
// ComMoveUnit ( Mikhail , max_un ) ;
13082: LD_EXP 65
13086: PPUSH
13087: LD_VAR 0 5
13091: PPUSH
13092: CALL_OW 112
// ComStop ( max_un ) ;
13096: LD_VAR 0 5
13100: PPUSH
13101: CALL_OW 141
// Followed := max_un ;
13105: LD_ADDR_LOC 2
13109: PUSH
13110: LD_VAR 0 5
13114: ST_TO_ADDR
// result := true ;
13115: LD_ADDR_VAR 0 1
13119: PUSH
13120: LD_INT 1
13122: ST_TO_ADDR
// end else
13123: GO 13133
// result := false ;
13125: LD_ADDR_VAR 0 1
13129: PUSH
13130: LD_INT 0
13132: ST_TO_ADDR
// end ;
13133: LD_VAR 0 1
13137: RET
// function Try1 ; begin
13138: LD_INT 0
13140: PPUSH
// if IsOk ( AmME1 ) and not ( IsDying ( AmME1 ) ) then
13141: LD_EXP 13
13145: PPUSH
13146: CALL_OW 302
13150: PUSH
13151: LD_EXP 13
13155: PPUSH
13156: CALL_OW 303
13160: NOT
13161: AND
13162: IFFALSE 13254
// begin PlaceUnitXYR ( Mikhail , GetX ( AmME1 ) , GetY ( AmME1 ) , 4 , true ) ;
13164: LD_EXP 65
13168: PPUSH
13169: LD_EXP 13
13173: PPUSH
13174: CALL_OW 250
13178: PPUSH
13179: LD_EXP 13
13183: PPUSH
13184: CALL_OW 251
13188: PPUSH
13189: LD_INT 4
13191: PPUSH
13192: LD_INT 1
13194: PPUSH
13195: CALL_OW 50
// Wait ( 0 0$3 ) ;
13199: LD_INT 105
13201: PPUSH
13202: CALL_OW 67
// enable ( Mikhail_placed ) ;
13206: LD_EXP 35
13210: ENABLE_MARKED
// ComMoveUnit ( Mikhail , AmME1 ) ;
13211: LD_EXP 65
13215: PPUSH
13216: LD_EXP 13
13220: PPUSH
13221: CALL_OW 112
// ComStop ( AmME1 ) ;
13225: LD_EXP 13
13229: PPUSH
13230: CALL_OW 141
// Followed := AmME1 ;
13234: LD_ADDR_LOC 2
13238: PUSH
13239: LD_EXP 13
13243: ST_TO_ADDR
// result := true ;
13244: LD_ADDR_VAR 0 1
13248: PUSH
13249: LD_INT 1
13251: ST_TO_ADDR
// end else
13252: GO 13262
// result := false ;
13254: LD_ADDR_VAR 0 1
13258: PUSH
13259: LD_INT 0
13261: ST_TO_ADDR
// end ;
13262: LD_VAR 0 1
13266: RET
// function Try2 ; begin
13267: LD_INT 0
13269: PPUSH
// if IsOk ( AmFE2 ) and not ( IsDying ( AmFE2 ) ) then
13270: LD_EXP 14
13274: PPUSH
13275: CALL_OW 302
13279: PUSH
13280: LD_EXP 14
13284: PPUSH
13285: CALL_OW 303
13289: NOT
13290: AND
13291: IFFALSE 13383
// begin PlaceUnitXYR ( Mikhail , GetX ( AmFE2 ) , GetY ( AmFE2 ) , 3 , true ) ;
13293: LD_EXP 65
13297: PPUSH
13298: LD_EXP 14
13302: PPUSH
13303: CALL_OW 250
13307: PPUSH
13308: LD_EXP 14
13312: PPUSH
13313: CALL_OW 251
13317: PPUSH
13318: LD_INT 3
13320: PPUSH
13321: LD_INT 1
13323: PPUSH
13324: CALL_OW 50
// Wait ( 0 0$3 ) ;
13328: LD_INT 105
13330: PPUSH
13331: CALL_OW 67
// enable ( Mikhail_placed ) ;
13335: LD_EXP 35
13339: ENABLE_MARKED
// ComMoveUnit ( Mikhail , AmFE2 ) ;
13340: LD_EXP 65
13344: PPUSH
13345: LD_EXP 14
13349: PPUSH
13350: CALL_OW 112
// ComStop ( AmFE2 ) ;
13354: LD_EXP 14
13358: PPUSH
13359: CALL_OW 141
// Followed := AmFE2 ;
13363: LD_ADDR_LOC 2
13367: PUSH
13368: LD_EXP 14
13372: ST_TO_ADDR
// result := true ;
13373: LD_ADDR_VAR 0 1
13377: PUSH
13378: LD_INT 1
13380: ST_TO_ADDR
// end else
13381: GO 13391
// result := false ;
13383: LD_ADDR_VAR 0 1
13387: PUSH
13388: LD_INT 0
13390: ST_TO_ADDR
// end ;
13391: LD_VAR 0 1
13395: RET
// every 0 0$5 trigger Time_of_capture + 0 0$20 < tick do var r , cont ;
13396: LD_EXP 30
13400: PUSH
13401: LD_INT 700
13403: PLUS
13404: PUSH
13405: LD_OWVAR 1
13409: LESS
13410: IFFALSE 13555
13412: GO 13414
13414: DISABLE
13415: LD_INT 0
13417: PPUSH
13418: PPUSH
// begin r = Rand ( 0 , 1 ) ;
13419: LD_ADDR_VAR 0 1
13423: PUSH
13424: LD_INT 0
13426: PPUSH
13427: LD_INT 1
13429: PPUSH
13430: CALL_OW 12
13434: ST_TO_ADDR
// cont = false ;
13435: LD_ADDR_VAR 0 2
13439: PUSH
13440: LD_INT 0
13442: ST_TO_ADDR
// count = count + 1 ;
13443: LD_ADDR_EXP 77
13447: PUSH
13448: LD_EXP 77
13452: PUSH
13453: LD_INT 1
13455: PLUS
13456: ST_TO_ADDR
// if IsOk ( AmME1 ) or IsOk ( AmFE2 ) then
13457: LD_EXP 13
13461: PPUSH
13462: CALL_OW 302
13466: PUSH
13467: LD_EXP 14
13471: PPUSH
13472: CALL_OW 302
13476: OR
13477: IFFALSE 13533
// if r then
13479: LD_VAR 0 1
13483: IFFALSE 13509
// begin if not ( Try1 ) then
13485: CALL 13138 0 0
13489: NOT
13490: IFFALSE 13507
// if not ( Try2 ) then
13492: CALL 13267 0 0
13496: NOT
13497: IFFALSE 13507
// cont = true end else
13499: LD_ADDR_VAR 0 2
13503: PUSH
13504: LD_INT 1
13506: ST_TO_ADDR
13507: GO 13531
// begin if not ( Try2 ) then
13509: CALL 13267 0 0
13513: NOT
13514: IFFALSE 13531
// if not ( Try1 ) then
13516: CALL 13138 0 0
13520: NOT
13521: IFFALSE 13531
// cont = true ;
13523: LD_ADDR_VAR 0 2
13527: PUSH
13528: LD_INT 1
13530: ST_TO_ADDR
// end else
13531: GO 13548
// begin if not ( PlaceMikhail ) then
13533: CALL 12848 0 0
13537: NOT
13538: IFFALSE 13548
// cont = true ;
13540: LD_ADDR_VAR 0 2
13544: PUSH
13545: LD_INT 1
13547: ST_TO_ADDR
// end ; if cont then
13548: LD_VAR 0 2
13552: IFFALSE 13555
// enable ;
13554: ENABLE
// end ;
13555: PPOPN 2
13557: END
// every 0 0$1 marked 3 do
13558: GO 13560
13560: DISABLE
// begin if GetClass ( Mikhail ) <> class_mechanic then
13561: LD_EXP 65
13565: PPUSH
13566: CALL_OW 257
13570: PUSH
13571: LD_INT 3
13573: NONEQUAL
13574: IFFALSE 13588
// SetClass ( Mikhail , class_mechanic ) ;
13576: LD_EXP 65
13580: PPUSH
13581: LD_INT 3
13583: PPUSH
13584: CALL_OW 336
// enable ;
13588: ENABLE
// end ;
13589: END
// every 0 0$0.5 marked 3 do var answer , all , i ;
13590: GO 13592
13592: DISABLE
13593: LD_INT 0
13595: PPUSH
13596: PPUSH
13597: PPUSH
// begin if FilterAllUnits ( [ f_side , americans ] ) > 1 then
13598: LD_INT 22
13600: PUSH
13601: LD_EXP 3
13605: PUSH
13606: EMPTY
13607: LIST
13608: LIST
13609: PPUSH
13610: CALL_OW 69
13614: PUSH
13615: LD_INT 1
13617: GREATER
13618: IFFALSE 14457
// begin if FilterAllUnits ( [ [ f_side , americans ] , [ f_dist , Mikhail , 15 ] ] ) > 0 then
13620: LD_INT 22
13622: PUSH
13623: LD_EXP 3
13627: PUSH
13628: EMPTY
13629: LIST
13630: LIST
13631: PUSH
13632: LD_INT 91
13634: PUSH
13635: LD_EXP 65
13639: PUSH
13640: LD_INT 15
13642: PUSH
13643: EMPTY
13644: LIST
13645: LIST
13646: LIST
13647: PUSH
13648: EMPTY
13649: LIST
13650: LIST
13651: PPUSH
13652: CALL_OW 69
13656: PUSH
13657: LD_INT 0
13659: GREATER
13660: IFFALSE 14456
// begin all = FilterAllUnits ( [ [ f_side , americans ] , [ f_dist , Mikhail , 15 ] ] ) ;
13662: LD_ADDR_VAR 0 2
13666: PUSH
13667: LD_INT 22
13669: PUSH
13670: LD_EXP 3
13674: PUSH
13675: EMPTY
13676: LIST
13677: LIST
13678: PUSH
13679: LD_INT 91
13681: PUSH
13682: LD_EXP 65
13686: PUSH
13687: LD_INT 15
13689: PUSH
13690: EMPTY
13691: LIST
13692: LIST
13693: LIST
13694: PUSH
13695: EMPTY
13696: LIST
13697: LIST
13698: PPUSH
13699: CALL_OW 69
13703: ST_TO_ADDR
// AddComHold ( all ) ;
13704: LD_VAR 0 2
13708: PPUSH
13709: CALL_OW 200
// AddComHold ( Followed ) ;
13713: LD_LOC 2
13717: PPUSH
13718: CALL_OW 200
// AddComTurnUnit ( all , Mikhail ) ;
13722: LD_VAR 0 2
13726: PPUSH
13727: LD_EXP 65
13731: PPUSH
13732: CALL_OW 179
// AddComTurnUnit ( Followed , Mikhail ) ;
13736: LD_LOC 2
13740: PPUSH
13741: LD_EXP 65
13745: PPUSH
13746: CALL_OW 179
// while GetDistUnits ( Mikhail , Followed ) > 6 do
13750: LD_EXP 65
13754: PPUSH
13755: LD_LOC 2
13759: PPUSH
13760: CALL_OW 296
13764: PUSH
13765: LD_INT 6
13767: GREATER
13768: IFFALSE 13779
// wait ( 0 0$0.5 ) ;
13770: LD_INT 18
13772: PPUSH
13773: CALL_OW 67
13777: GO 13750
// DialogueOn ;
13779: CALL_OW 6
// CenterOnUnits ( [ Mikhail , Followed ] ) ;
13783: LD_EXP 65
13787: PUSH
13788: LD_LOC 2
13792: PUSH
13793: EMPTY
13794: LIST
13795: LIST
13796: PPUSH
13797: CALL_OW 85
// Say ( Mikhail , D4-Mikh-1 ) ;
13801: LD_EXP 65
13805: PPUSH
13806: LD_STRING D4-Mikh-1
13808: PPUSH
13809: CALL_OW 88
// if IsOk ( AmME1 ) or IsOk ( AmFE2 ) then
13813: LD_EXP 13
13817: PPUSH
13818: CALL_OW 302
13822: PUSH
13823: LD_EXP 14
13827: PPUSH
13828: CALL_OW 302
13832: OR
13833: IFFALSE 13987
// begin if Followed = AmME1 then
13835: LD_LOC 2
13839: PUSH
13840: LD_EXP 13
13844: EQUAL
13845: IFFALSE 13861
// Say ( AmME1 , D4-Sol1-1 ) else
13847: LD_EXP 13
13851: PPUSH
13852: LD_STRING D4-Sol1-1
13854: PPUSH
13855: CALL_OW 88
13859: GO 13873
// Say ( AmFE2 , D4-FSol1-1 ) ;
13861: LD_EXP 14
13865: PPUSH
13866: LD_STRING D4-FSol1-1
13868: PPUSH
13869: CALL_OW 88
// Say ( Mikhail , D4-Mikh-2 ) ;
13873: LD_EXP 65
13877: PPUSH
13878: LD_STRING D4-Mikh-2
13880: PPUSH
13881: CALL_OW 88
// if Followed = AmME1 then
13885: LD_LOC 2
13889: PUSH
13890: LD_EXP 13
13894: EQUAL
13895: IFFALSE 13911
// Say ( AmME1 , D4-Sol1-2 ) else
13897: LD_EXP 13
13901: PPUSH
13902: LD_STRING D4-Sol1-2
13904: PPUSH
13905: CALL_OW 88
13909: GO 13923
// Say ( AmFE2 , D4-FSol1-2 ) ;
13911: LD_EXP 14
13915: PPUSH
13916: LD_STRING D4-FSol1-2
13918: PPUSH
13919: CALL_OW 88
// Say ( Mikhail , D4-Mikh-3 ) ;
13923: LD_EXP 65
13927: PPUSH
13928: LD_STRING D4-Mikh-3
13930: PPUSH
13931: CALL_OW 88
// if Followed = AmME1 then
13935: LD_LOC 2
13939: PUSH
13940: LD_EXP 13
13944: EQUAL
13945: IFFALSE 13961
// Say ( AmME1 , D4-Sol1-3 ) else
13947: LD_EXP 13
13951: PPUSH
13952: LD_STRING D4-Sol1-3
13954: PPUSH
13955: CALL_OW 88
13959: GO 13973
// Say ( AmFE2 , D4-FSol1-3 ) ;
13961: LD_EXP 14
13965: PPUSH
13966: LD_STRING D4-FSol1-3
13968: PPUSH
13969: CALL_OW 88
// Say ( Mikhail , D4-Mikh-4 ) ;
13973: LD_EXP 65
13977: PPUSH
13978: LD_STRING D4-Mikh-4
13980: PPUSH
13981: CALL_OW 88
// end else
13985: GO 14178
// begin i = Nearest ( Mikhail , FilterAllUnits ( [ f_side , americans ] ) ) ;
13987: LD_ADDR_VAR 0 3
13991: PUSH
13992: LD_EXP 65
13996: PPUSH
13997: LD_INT 22
13999: PUSH
14000: LD_EXP 3
14004: PUSH
14005: EMPTY
14006: LIST
14007: LIST
14008: PPUSH
14009: CALL_OW 69
14013: PPUSH
14014: CALL 10219 0 2
14018: ST_TO_ADDR
// if GetSex ( i ) = sex_male then
14019: LD_VAR 0 3
14023: PPUSH
14024: CALL_OW 258
14028: PUSH
14029: LD_INT 1
14031: EQUAL
14032: IFFALSE 14048
// Say ( i , D4-Sol1-1 ) else
14034: LD_VAR 0 3
14038: PPUSH
14039: LD_STRING D4-Sol1-1
14041: PPUSH
14042: CALL_OW 88
14046: GO 14060
// Say ( i , D4-FSol1-1 ) ;
14048: LD_VAR 0 3
14052: PPUSH
14053: LD_STRING D4-FSol1-1
14055: PPUSH
14056: CALL_OW 88
// Say ( Mikhail , D4-Mikh-2 ) ;
14060: LD_EXP 65
14064: PPUSH
14065: LD_STRING D4-Mikh-2
14067: PPUSH
14068: CALL_OW 88
// if GetSex ( i ) = sex_male then
14072: LD_VAR 0 3
14076: PPUSH
14077: CALL_OW 258
14081: PUSH
14082: LD_INT 1
14084: EQUAL
14085: IFFALSE 14101
// Say ( i , D4-Sol1-2 ) else
14087: LD_VAR 0 3
14091: PPUSH
14092: LD_STRING D4-Sol1-2
14094: PPUSH
14095: CALL_OW 88
14099: GO 14113
// Say ( i , D4-FSol1-2 ) ;
14101: LD_VAR 0 3
14105: PPUSH
14106: LD_STRING D4-FSol1-2
14108: PPUSH
14109: CALL_OW 88
// Say ( Mikhail , D4-Mikh-3 ) ;
14113: LD_EXP 65
14117: PPUSH
14118: LD_STRING D4-Mikh-3
14120: PPUSH
14121: CALL_OW 88
// if GetSex ( i ) = sex_male then
14125: LD_VAR 0 3
14129: PPUSH
14130: CALL_OW 258
14134: PUSH
14135: LD_INT 1
14137: EQUAL
14138: IFFALSE 14154
// Say ( i , D4-Sol1-3 ) else
14140: LD_VAR 0 3
14144: PPUSH
14145: LD_STRING D4-Sol1-3
14147: PPUSH
14148: CALL_OW 88
14152: GO 14166
// Say ( i , D4-FSol1-3 ) ;
14154: LD_VAR 0 3
14158: PPUSH
14159: LD_STRING D4-FSol1-3
14161: PPUSH
14162: CALL_OW 88
// Say ( Mikhail , D4-Mikh-4 ) ;
14166: LD_EXP 65
14170: PPUSH
14171: LD_STRING D4-Mikh-4
14173: PPUSH
14174: CALL_OW 88
// end ; answer = Query ( Qs1 ) ;
14178: LD_ADDR_VAR 0 1
14182: PUSH
14183: LD_STRING Qs1
14185: PPUSH
14186: CALL_OW 97
14190: ST_TO_ADDR
// DialogueOff ;
14191: CALL_OW 7
// case answer of 1 :
14195: LD_VAR 0 1
14199: PUSH
14200: LD_INT 1
14202: DOUBLE
14203: EQUAL
14204: IFTRUE 14208
14206: GO 14279
14208: POP
// begin SetAttitude ( americans , russians1 , att_enemy , true ) ;
14209: LD_EXP 3
14213: PPUSH
14214: LD_EXP 6
14218: PPUSH
14219: LD_INT 2
14221: PPUSH
14222: LD_INT 1
14224: PPUSH
14225: CALL_OW 80
// ComAttackUnit ( Followed , Mikhail ) ;
14229: LD_LOC 2
14233: PPUSH
14234: LD_EXP 65
14238: PPUSH
14239: CALL_OW 115
// ComFree ( Mikhail ) ;
14243: LD_EXP 65
14247: PPUSH
14248: CALL_OW 139
// Mikhails_outcome = - 1 ;
14252: LD_ADDR_LOC 3
14256: PUSH
14257: LD_INT 1
14259: NEG
14260: ST_TO_ADDR
// Mikhail_status := 2 ;
14261: LD_ADDR_LOC 4
14265: PUSH
14266: LD_INT 2
14268: ST_TO_ADDR
// mikhail_marked_for_death = true ;
14269: LD_ADDR_EXP 42
14273: PUSH
14274: LD_INT 1
14276: ST_TO_ADDR
// end ; 2 :
14277: GO 14454
14279: LD_INT 2
14281: DOUBLE
14282: EQUAL
14283: IFTRUE 14287
14285: GO 14396
14287: POP
// begin DoNotAttack ( russians , Followed ) ;
14288: LD_EXP 5
14292: PPUSH
14293: LD_LOC 2
14297: PPUSH
14298: CALL_OW 471
// enable ( Mikhail_captured ) ;
14302: LD_EXP 36
14306: ENABLE_MARKED
// enable ( tigers_allowed ) ;
14307: LD_EXP 81
14311: ENABLE_MARKED
// ComMoveUnit ( Mikhail , Followed ) ;
14312: LD_EXP 65
14316: PPUSH
14317: LD_LOC 2
14321: PPUSH
14322: CALL_OW 112
// while GetDistUnits ( Mikhail , John ) > 5 do
14326: LD_EXP 65
14330: PPUSH
14331: LD_EXP 7
14335: PPUSH
14336: CALL_OW 296
14340: PUSH
14341: LD_INT 5
14343: GREATER
14344: IFFALSE 14369
// begin ComMoveUnit ( Followed , John ) ;
14346: LD_LOC 2
14350: PPUSH
14351: LD_EXP 7
14355: PPUSH
14356: CALL_OW 112
// Wait ( 0 0$1 ) ;
14360: LD_INT 35
14362: PPUSH
14363: CALL_OW 67
// end ;
14367: GO 14326
// ComStop ( Followed ) ;
14369: LD_LOC 2
14373: PPUSH
14374: CALL_OW 141
// Mikhails_outcome = 1 ;
14378: LD_ADDR_LOC 3
14382: PUSH
14383: LD_INT 1
14385: ST_TO_ADDR
// Mikhail_status := 5 ;
14386: LD_ADDR_LOC 4
14390: PUSH
14391: LD_INT 5
14393: ST_TO_ADDR
// end ; 3 :
14394: GO 14454
14396: LD_INT 3
14398: DOUBLE
14399: EQUAL
14400: IFTRUE 14404
14402: GO 14453
14404: POP
// begin ComMoveXY ( Mikhail , 4 , 6 ) ;
14405: LD_EXP 65
14409: PPUSH
14410: LD_INT 4
14412: PPUSH
14413: LD_INT 6
14415: PPUSH
14416: CALL_OW 111
// AddComHold ( Mikhail ) ;
14420: LD_EXP 65
14424: PPUSH
14425: CALL_OW 200
// enable ( remove_mikhail ) ;
14429: LD_EXP 43
14433: ENABLE_MARKED
// Mikhails_outcome = - 1 ;
14434: LD_ADDR_LOC 3
14438: PUSH
14439: LD_INT 1
14441: NEG
14442: ST_TO_ADDR
// Mikhail_status := 1 ;
14443: LD_ADDR_LOC 4
14447: PUSH
14448: LD_INT 1
14450: ST_TO_ADDR
// end ; end ;
14451: GO 14454
14453: POP
// end else
14454: GO 14457
// enable ;
14456: ENABLE
// end ; end ;
14457: PPOPN 3
14459: END
// every 0 0$1 trigger mikhail_marked_for_death do var started_running ;
14460: LD_EXP 42
14464: IFFALSE 14696
14466: GO 14468
14468: DISABLE
14469: LD_INT 0
14471: PPUSH
// begin started_running = false ;
14472: LD_ADDR_VAR 0 1
14476: PUSH
14477: LD_INT 0
14479: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
14480: LD_INT 35
14482: PPUSH
14483: CALL_OW 67
// if IsDead ( Mikhail ) then
14487: LD_EXP 65
14491: PPUSH
14492: CALL_OW 301
14496: IFFALSE 14500
// exit ;
14498: GO 14696
// if not started_running then
14500: LD_VAR 0 1
14504: NOT
14505: IFFALSE 14565
// if FilterAllUnits ( [ [ f_side , americans ] , [ f_dist , Mikhail , 10 ] , [ f_not , [ f_inside ] ] ] ) > 0 then
14507: LD_INT 22
14509: PUSH
14510: LD_EXP 3
14514: PUSH
14515: EMPTY
14516: LIST
14517: LIST
14518: PUSH
14519: LD_INT 91
14521: PUSH
14522: LD_EXP 65
14526: PUSH
14527: LD_INT 10
14529: PUSH
14530: EMPTY
14531: LIST
14532: LIST
14533: LIST
14534: PUSH
14535: LD_INT 3
14537: PUSH
14538: LD_INT 54
14540: PUSH
14541: EMPTY
14542: LIST
14543: PUSH
14544: EMPTY
14545: LIST
14546: LIST
14547: PUSH
14548: EMPTY
14549: LIST
14550: LIST
14551: LIST
14552: PPUSH
14553: CALL_OW 69
14557: PUSH
14558: LD_INT 0
14560: GREATER
14561: IFFALSE 14565
// continue ;
14563: GO 14480
// started_running = true ;
14565: LD_ADDR_VAR 0 1
14569: PUSH
14570: LD_INT 1
14572: ST_TO_ADDR
// if GetDistUnitXY ( Mikhail , 4 , 6 ) <= 1 or GetDistUnitXY ( Mikhail , 91 , 1 ) <= 1 then
14573: LD_EXP 65
14577: PPUSH
14578: LD_INT 4
14580: PPUSH
14581: LD_INT 6
14583: PPUSH
14584: CALL_OW 297
14588: PUSH
14589: LD_INT 1
14591: LESSEQUAL
14592: PUSH
14593: LD_EXP 65
14597: PPUSH
14598: LD_INT 91
14600: PPUSH
14601: LD_INT 1
14603: PPUSH
14604: CALL_OW 297
14608: PUSH
14609: LD_INT 1
14611: LESSEQUAL
14612: OR
14613: IFFALSE 14626
// begin RemoveUnit ( Mikhail ) ;
14615: LD_EXP 65
14619: PPUSH
14620: CALL_OW 64
// exit ;
14624: GO 14696
// end ; if GetDistUnitXY ( Mikhail , 4 , 6 ) < GetDistUnitXY ( Mikhail , 91 , 1 ) then
14626: LD_EXP 65
14630: PPUSH
14631: LD_INT 4
14633: PPUSH
14634: LD_INT 6
14636: PPUSH
14637: CALL_OW 297
14641: PUSH
14642: LD_EXP 65
14646: PPUSH
14647: LD_INT 91
14649: PPUSH
14650: LD_INT 1
14652: PPUSH
14653: CALL_OW 297
14657: LESS
14658: IFFALSE 14677
// ComMoveXY ( Mikhail , 4 , 6 ) else
14660: LD_EXP 65
14664: PPUSH
14665: LD_INT 4
14667: PPUSH
14668: LD_INT 6
14670: PPUSH
14671: CALL_OW 111
14675: GO 14692
// ComMoveXY ( Mikhail , 91 , 1 ) ;
14677: LD_EXP 65
14681: PPUSH
14682: LD_INT 91
14684: PPUSH
14685: LD_INT 1
14687: PPUSH
14688: CALL_OW 111
// until false ;
14692: LD_INT 0
14694: IFFALSE 14480
// end ;
14696: PPOPN 1
14698: END
// every 0 0$0.5 trigger IsAt ( Mikhail , 4 , 6 ) marked 11 do
14699: LD_EXP 65
14703: PPUSH
14704: LD_INT 4
14706: PPUSH
14707: LD_INT 6
14709: PPUSH
14710: CALL_OW 307
14714: IFFALSE 14728
14716: GO 14718
14718: DISABLE
// begin RemoveUnit ( Mikhail ) ;
14719: LD_EXP 65
14723: PPUSH
14724: CALL_OW 64
// end ;
14728: END
// every 0 0$2 marked 4 do var Alive , Speaker ;
14729: GO 14731
14731: DISABLE
14732: LD_INT 0
14734: PPUSH
14735: PPUSH
// begin if IsOk ( Mikhail ) and GetDistUnits ( John , Mikhail ) < 6 then
14736: LD_EXP 65
14740: PPUSH
14741: CALL_OW 302
14745: PUSH
14746: LD_EXP 7
14750: PPUSH
14751: LD_EXP 65
14755: PPUSH
14756: CALL_OW 296
14760: PUSH
14761: LD_INT 6
14763: LESS
14764: AND
14765: IFFALSE 15321
// begin enable ( conversation ) ;
14767: LD_EXP 44
14771: ENABLE_MARKED
// ComTurnUnit ( Mikhail , John ) ;
14772: LD_EXP 65
14776: PPUSH
14777: LD_EXP 7
14781: PPUSH
14782: CALL_OW 119
// DialogueOn ;
14786: CALL_OW 6
// ComMoveUnit ( Mikhail , John ) ;
14790: LD_EXP 65
14794: PPUSH
14795: LD_EXP 7
14799: PPUSH
14800: CALL_OW 112
// Say ( John , D4b-JMM-1 ) ;
14804: LD_EXP 7
14808: PPUSH
14809: LD_STRING D4b-JMM-1
14811: PPUSH
14812: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-1 ) ;
14816: LD_EXP 65
14820: PPUSH
14821: LD_STRING D4b-Mikh-1
14823: PPUSH
14824: CALL_OW 88
// Say ( John , D4b-JMM-2 ) ;
14828: LD_EXP 7
14832: PPUSH
14833: LD_STRING D4b-JMM-2
14835: PPUSH
14836: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-2 ) ;
14840: LD_EXP 65
14844: PPUSH
14845: LD_STRING D4b-Mikh-2
14847: PPUSH
14848: CALL_OW 88
// Say ( John , D4b-JMM-3 ) ;
14852: LD_EXP 7
14856: PPUSH
14857: LD_STRING D4b-JMM-3
14859: PPUSH
14860: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-3 ) ;
14864: LD_EXP 65
14868: PPUSH
14869: LD_STRING D4b-Mikh-3
14871: PPUSH
14872: CALL_OW 88
// Say ( John , D4b-JMM-4 ) ;
14876: LD_EXP 7
14880: PPUSH
14881: LD_STRING D4b-JMM-4
14883: PPUSH
14884: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-4 ) ;
14888: LD_EXP 65
14892: PPUSH
14893: LD_STRING D4b-Mikh-4
14895: PPUSH
14896: CALL_OW 88
// Say ( John , D4b-JMM-5 ) ;
14900: LD_EXP 7
14904: PPUSH
14905: LD_STRING D4b-JMM-5
14907: PPUSH
14908: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-5 ) ;
14912: LD_EXP 65
14916: PPUSH
14917: LD_STRING D4b-Mikh-5
14919: PPUSH
14920: CALL_OW 88
// Say ( John , D4b-JMM-6 ) ;
14924: LD_EXP 7
14928: PPUSH
14929: LD_STRING D4b-JMM-6
14931: PPUSH
14932: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-6 ) ;
14936: LD_EXP 65
14940: PPUSH
14941: LD_STRING D4b-Mikh-6
14943: PPUSH
14944: CALL_OW 88
// Say ( John , D4b-JMM-7 ) ;
14948: LD_EXP 7
14952: PPUSH
14953: LD_STRING D4b-JMM-7
14955: PPUSH
14956: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-7 ) ;
14960: LD_EXP 65
14964: PPUSH
14965: LD_STRING D4b-Mikh-7
14967: PPUSH
14968: CALL_OW 88
// Alive = UnitFilter ( [ AmME1 , AmFE2 , AmMSo3 , Nick ] , [ f_ok ] ) ;
14972: LD_ADDR_VAR 0 1
14976: PUSH
14977: LD_EXP 13
14981: PUSH
14982: LD_EXP 14
14986: PUSH
14987: LD_EXP 15
14991: PUSH
14992: LD_EXP 11
14996: PUSH
14997: EMPTY
14998: LIST
14999: LIST
15000: LIST
15001: LIST
15002: PPUSH
15003: LD_INT 50
15005: PUSH
15006: EMPTY
15007: LIST
15008: PPUSH
15009: CALL_OW 72
15013: ST_TO_ADDR
// if Alive > 0 then
15014: LD_VAR 0 1
15018: PUSH
15019: LD_INT 0
15021: GREATER
15022: IFFALSE 15048
// Speaker = Alive [ Rand ( 1 , Alive ) ] ;
15024: LD_ADDR_VAR 0 2
15028: PUSH
15029: LD_VAR 0 1
15033: PUSH
15034: LD_INT 1
15036: PPUSH
15037: LD_VAR 0 1
15041: PPUSH
15042: CALL_OW 12
15046: ARRAY
15047: ST_TO_ADDR
// if GetSex ( Speaker ) = sex_male then
15048: LD_VAR 0 2
15052: PPUSH
15053: CALL_OW 258
15057: PUSH
15058: LD_INT 1
15060: EQUAL
15061: IFFALSE 15077
// Say ( Speaker , D4b-Sol1-7 ) else
15063: LD_VAR 0 2
15067: PPUSH
15068: LD_STRING D4b-Sol1-7
15070: PPUSH
15071: CALL_OW 88
15075: GO 15089
// Say ( Speaker , D4b-FSol1-7 ) ;
15077: LD_VAR 0 2
15081: PPUSH
15082: LD_STRING D4b-FSol1-7
15084: PPUSH
15085: CALL_OW 88
// Say ( John , D4b-JMM-8 ) ;
15089: LD_EXP 7
15093: PPUSH
15094: LD_STRING D4b-JMM-8
15096: PPUSH
15097: CALL_OW 88
// Alive = UnitFilter ( [ AmME1 , AmFE2 , AmMSo3 , Nick ] , [ f_ok ] ) ;
15101: LD_ADDR_VAR 0 1
15105: PUSH
15106: LD_EXP 13
15110: PUSH
15111: LD_EXP 14
15115: PUSH
15116: LD_EXP 15
15120: PUSH
15121: LD_EXP 11
15125: PUSH
15126: EMPTY
15127: LIST
15128: LIST
15129: LIST
15130: LIST
15131: PPUSH
15132: LD_INT 50
15134: PUSH
15135: EMPTY
15136: LIST
15137: PPUSH
15138: CALL_OW 72
15142: ST_TO_ADDR
// if Alive > 0 then
15143: LD_VAR 0 1
15147: PUSH
15148: LD_INT 0
15150: GREATER
15151: IFFALSE 15177
// Speaker = Alive [ Rand ( 1 , Alive ) ] ;
15153: LD_ADDR_VAR 0 2
15157: PUSH
15158: LD_VAR 0 1
15162: PUSH
15163: LD_INT 1
15165: PPUSH
15166: LD_VAR 0 1
15170: PPUSH
15171: CALL_OW 12
15175: ARRAY
15176: ST_TO_ADDR
// if GetSex ( Speaker ) = sex_male then
15177: LD_VAR 0 2
15181: PPUSH
15182: CALL_OW 258
15186: PUSH
15187: LD_INT 1
15189: EQUAL
15190: IFFALSE 15206
// Say ( Speaker , D4b-Sol1-8 ) else
15192: LD_VAR 0 2
15196: PPUSH
15197: LD_STRING D4b-Sol1-8
15199: PPUSH
15200: CALL_OW 88
15204: GO 15218
// Say ( Speaker , D4b-FSol1-8 ) ;
15206: LD_VAR 0 2
15210: PPUSH
15211: LD_STRING D4b-FSol1-8
15213: PPUSH
15214: CALL_OW 88
// Say ( John , D4b-JMM-9 ) ;
15218: LD_EXP 7
15222: PPUSH
15223: LD_STRING D4b-JMM-9
15225: PPUSH
15226: CALL_OW 88
// DialogueOff ;
15230: CALL_OW 7
// ChangeMissionObjectives ( M3 ) ;
15234: LD_STRING M3
15236: PPUSH
15237: CALL_OW 337
// enable ( depot ) ;
15241: LD_EXP 38
15245: ENABLE_MARKED
// disable ( conversation ) ;
15246: LD_EXP 44
15250: DISABLE_MARKED
// ComMoveUnit ( Mikhail , Followed ) ;
15251: LD_EXP 65
15255: PPUSH
15256: LD_LOC 2
15260: PPUSH
15261: CALL_OW 112
// repeat ComMoveXY ( Followed , 50 , 13 ) ;
15265: LD_LOC 2
15269: PPUSH
15270: LD_INT 50
15272: PPUSH
15273: LD_INT 13
15275: PPUSH
15276: CALL_OW 111
// Wait ( 0 0$1 ) ;
15280: LD_INT 35
15282: PPUSH
15283: CALL_OW 67
// until GetDistUnits ( dep1 , Mikhail ) < 5 ;
15287: LD_INT 1
15289: PPUSH
15290: LD_EXP 65
15294: PPUSH
15295: CALL_OW 296
15299: PUSH
15300: LD_INT 5
15302: LESS
15303: IFFALSE 15265
// NormalAttack ( russians , Followed ) ;
15305: LD_EXP 5
15309: PPUSH
15310: LD_LOC 2
15314: PPUSH
15315: CALL_OW 472
// end else
15319: GO 15322
// enable ;
15321: ENABLE
// end ;
15322: PPOPN 2
15324: END
// every 0 0$1 trigger GetDistUnits ( Followed , John ) > 5 marked 12 do
15325: LD_LOC 2
15329: PPUSH
15330: LD_EXP 7
15334: PPUSH
15335: CALL_OW 296
15339: PUSH
15340: LD_INT 5
15342: GREATER
15343: IFFALSE 15372
15345: GO 15347
15347: DISABLE
// begin ComStop ( Followed ) ;
15348: LD_LOC 2
15352: PPUSH
15353: CALL_OW 141
// ComMoveUnit ( Followed , John ) ;
15357: LD_LOC 2
15361: PPUSH
15362: LD_EXP 7
15366: PPUSH
15367: CALL_OW 112
// enable ;
15371: ENABLE
// end ;
15372: END
// every 0 0$0.5 marked 8 do
15373: GO 15375
15375: DISABLE
// begin if IsOk ( Mikhail ) and GetDistUnits ( dep1 , Mikhail ) < 10 then
15376: LD_EXP 65
15380: PPUSH
15381: CALL_OW 302
15385: PUSH
15386: LD_INT 1
15388: PPUSH
15389: LD_EXP 65
15393: PPUSH
15394: CALL_OW 296
15398: PUSH
15399: LD_INT 10
15401: LESS
15402: AND
15403: IFFALSE 15505
// begin ComMoveXY ( Mikhail , 52 , 13 ) ;
15405: LD_EXP 65
15409: PPUSH
15410: LD_INT 52
15412: PPUSH
15413: LD_INT 13
15415: PPUSH
15416: CALL_OW 111
// AddComHold ( Mikhail ) ;
15420: LD_EXP 65
15424: PPUSH
15425: CALL_OW 200
// WaitTask ( Mikhail , 0.5 ) ;
15429: LD_EXP 65
15433: PPUSH
15434: LD_REAL  5.00000000000000E-0001
15437: PPUSH
15438: CALL 3368 0 2
// SetSide ( Mikhail , americans ) ;
15442: LD_EXP 65
15446: PPUSH
15447: LD_EXP 3
15451: PPUSH
15452: CALL_OW 235
// repeat ComEnterUnit ( Mikhail , dep1 ) ;
15456: LD_EXP 65
15460: PPUSH
15461: LD_INT 1
15463: PPUSH
15464: CALL_OW 120
// Wait ( 1 ) ;
15468: LD_INT 1
15470: PPUSH
15471: CALL_OW 67
// until IsInUnit ( Mikhail ) = dep1 ;
15475: LD_EXP 65
15479: PPUSH
15480: CALL_OW 310
15484: PUSH
15485: LD_INT 1
15487: EQUAL
15488: IFFALSE 15456
// Mikhail_in_depot = true ;
15490: LD_ADDR_EXP 39
15494: PUSH
15495: LD_INT 1
15497: ST_TO_ADDR
// enable ( great_escape ) ;
15498: LD_EXP 40
15502: ENABLE_MARKED
// end else
15503: GO 15506
// enable ;
15505: ENABLE
// end ;
15506: END
// every 0 0$4 marked 9 do var AmVehicles , AmV1 , AmV2 , Un , Humans_In_Depot_Left , Buildings_In_Depot_Left , Vehicles_In_Depot_Left , Humans_In_Depot_Right , Buildings_In_Depot_Right , Vehicles_In_Depot_Right , Humans_In_Depot_Back , Buildings_In_Depot_Back , Vehicles_In_Depot_Back ;
15507: GO 15509
15509: DISABLE
15510: LD_INT 0
15512: PPUSH
15513: PPUSH
15514: PPUSH
15515: PPUSH
15516: PPUSH
15517: PPUSH
15518: PPUSH
15519: PPUSH
15520: PPUSH
15521: PPUSH
15522: PPUSH
15523: PPUSH
15524: PPUSH
// begin AmV1 = 0 ;
15525: LD_ADDR_VAR 0 2
15529: PUSH
15530: LD_INT 0
15532: ST_TO_ADDR
// AmV2 = 0 ;
15533: LD_ADDR_VAR 0 3
15537: PUSH
15538: LD_INT 0
15540: ST_TO_ADDR
// AmVehicles = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_vehicle ] ] ) ;
15541: LD_ADDR_VAR 0 1
15545: PUSH
15546: LD_INT 22
15548: PUSH
15549: LD_EXP 3
15553: PUSH
15554: EMPTY
15555: LIST
15556: LIST
15557: PUSH
15558: LD_INT 21
15560: PUSH
15561: LD_INT 2
15563: PUSH
15564: EMPTY
15565: LIST
15566: LIST
15567: PUSH
15568: EMPTY
15569: LIST
15570: LIST
15571: PPUSH
15572: CALL_OW 69
15576: ST_TO_ADDR
// if AmVehicles ^ [ ] > 0 then
15577: LD_VAR 0 1
15581: PUSH
15582: EMPTY
15583: ADD
15584: PUSH
15585: LD_INT 0
15587: GREATER
15588: IFFALSE 15604
// AmV1 = AmVehicles [ 1 ] ;
15590: LD_ADDR_VAR 0 2
15594: PUSH
15595: LD_VAR 0 1
15599: PUSH
15600: LD_INT 1
15602: ARRAY
15603: ST_TO_ADDR
// if AmVehicles ^ [ ] > 1 then
15604: LD_VAR 0 1
15608: PUSH
15609: EMPTY
15610: ADD
15611: PUSH
15612: LD_INT 1
15614: GREATER
15615: IFFALSE 15631
// AmV2 = AmVehicles [ 2 ] ;
15617: LD_ADDR_VAR 0 3
15621: PUSH
15622: LD_VAR 0 1
15626: PUSH
15627: LD_INT 2
15629: ARRAY
15630: ST_TO_ADDR
// Humans_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
15631: LD_ADDR_VAR 0 5
15635: PUSH
15636: LD_INT 20
15638: PPUSH
15639: LD_INT 22
15641: PUSH
15642: LD_EXP 3
15646: PUSH
15647: EMPTY
15648: LIST
15649: LIST
15650: PUSH
15651: LD_INT 21
15653: PUSH
15654: LD_INT 1
15656: PUSH
15657: EMPTY
15658: LIST
15659: LIST
15660: PUSH
15661: LD_INT 50
15663: PUSH
15664: EMPTY
15665: LIST
15666: PUSH
15667: EMPTY
15668: LIST
15669: LIST
15670: LIST
15671: PPUSH
15672: CALL_OW 70
15676: ST_TO_ADDR
// Buildings_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
15677: LD_ADDR_VAR 0 6
15681: PUSH
15682: LD_INT 20
15684: PPUSH
15685: LD_INT 22
15687: PUSH
15688: LD_EXP 3
15692: PUSH
15693: EMPTY
15694: LIST
15695: LIST
15696: PUSH
15697: LD_INT 21
15699: PUSH
15700: LD_INT 3
15702: PUSH
15703: EMPTY
15704: LIST
15705: LIST
15706: PUSH
15707: LD_INT 50
15709: PUSH
15710: EMPTY
15711: LIST
15712: PUSH
15713: EMPTY
15714: LIST
15715: LIST
15716: LIST
15717: PPUSH
15718: CALL_OW 70
15722: ST_TO_ADDR
// Vehicles_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
15723: LD_ADDR_VAR 0 7
15727: PUSH
15728: LD_INT 20
15730: PPUSH
15731: LD_INT 22
15733: PUSH
15734: LD_EXP 3
15738: PUSH
15739: EMPTY
15740: LIST
15741: LIST
15742: PUSH
15743: LD_INT 21
15745: PUSH
15746: LD_INT 2
15748: PUSH
15749: EMPTY
15750: LIST
15751: LIST
15752: PUSH
15753: LD_INT 50
15755: PUSH
15756: EMPTY
15757: LIST
15758: PUSH
15759: EMPTY
15760: LIST
15761: LIST
15762: LIST
15763: PPUSH
15764: CALL_OW 70
15768: ST_TO_ADDR
// for Un in Buildings_In_Depot_Left do
15769: LD_ADDR_VAR 0 4
15773: PUSH
15774: LD_VAR 0 6
15778: PUSH
15779: FOR_IN
15780: IFFALSE 15805
// Humans_In_Depot_Left = Humans_In_Depot_Left ^ UnitsInside ( Un ) ;
15782: LD_ADDR_VAR 0 5
15786: PUSH
15787: LD_VAR 0 5
15791: PUSH
15792: LD_VAR 0 4
15796: PPUSH
15797: CALL_OW 313
15801: ADD
15802: ST_TO_ADDR
15803: GO 15779
15805: POP
15806: POP
// for Un in Vehicles_In_Depot_Left do
15807: LD_ADDR_VAR 0 4
15811: PUSH
15812: LD_VAR 0 7
15816: PUSH
15817: FOR_IN
15818: IFFALSE 15843
// Humans_In_Depot_Left = Humans_In_Depot_Left ^ UnitsInside ( Un ) ;
15820: LD_ADDR_VAR 0 5
15824: PUSH
15825: LD_VAR 0 5
15829: PUSH
15830: LD_VAR 0 4
15834: PPUSH
15835: CALL_OW 313
15839: ADD
15840: ST_TO_ADDR
15841: GO 15817
15843: POP
15844: POP
// Humans_In_Depot_Left = Humans_In_Depot_Left diff Mikhail ;
15845: LD_ADDR_VAR 0 5
15849: PUSH
15850: LD_VAR 0 5
15854: PUSH
15855: LD_EXP 65
15859: DIFF
15860: ST_TO_ADDR
// Humans_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
15861: LD_ADDR_VAR 0 8
15865: PUSH
15866: LD_INT 21
15868: PPUSH
15869: LD_INT 22
15871: PUSH
15872: LD_EXP 3
15876: PUSH
15877: EMPTY
15878: LIST
15879: LIST
15880: PUSH
15881: LD_INT 21
15883: PUSH
15884: LD_INT 1
15886: PUSH
15887: EMPTY
15888: LIST
15889: LIST
15890: PUSH
15891: LD_INT 50
15893: PUSH
15894: EMPTY
15895: LIST
15896: PUSH
15897: EMPTY
15898: LIST
15899: LIST
15900: LIST
15901: PPUSH
15902: CALL_OW 70
15906: ST_TO_ADDR
// Buildings_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
15907: LD_ADDR_VAR 0 9
15911: PUSH
15912: LD_INT 21
15914: PPUSH
15915: LD_INT 22
15917: PUSH
15918: LD_EXP 3
15922: PUSH
15923: EMPTY
15924: LIST
15925: LIST
15926: PUSH
15927: LD_INT 21
15929: PUSH
15930: LD_INT 3
15932: PUSH
15933: EMPTY
15934: LIST
15935: LIST
15936: PUSH
15937: LD_INT 50
15939: PUSH
15940: EMPTY
15941: LIST
15942: PUSH
15943: EMPTY
15944: LIST
15945: LIST
15946: LIST
15947: PPUSH
15948: CALL_OW 70
15952: ST_TO_ADDR
// Vehicles_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
15953: LD_ADDR_VAR 0 10
15957: PUSH
15958: LD_INT 21
15960: PPUSH
15961: LD_INT 22
15963: PUSH
15964: LD_EXP 3
15968: PUSH
15969: EMPTY
15970: LIST
15971: LIST
15972: PUSH
15973: LD_INT 21
15975: PUSH
15976: LD_INT 2
15978: PUSH
15979: EMPTY
15980: LIST
15981: LIST
15982: PUSH
15983: LD_INT 50
15985: PUSH
15986: EMPTY
15987: LIST
15988: PUSH
15989: EMPTY
15990: LIST
15991: LIST
15992: LIST
15993: PPUSH
15994: CALL_OW 70
15998: ST_TO_ADDR
// for Un in Buildings_In_Depot_Right do
15999: LD_ADDR_VAR 0 4
16003: PUSH
16004: LD_VAR 0 9
16008: PUSH
16009: FOR_IN
16010: IFFALSE 16035
// Humans_In_Depot_Right = Humans_In_Depot_Right ^ UnitsInside ( Un ) ;
16012: LD_ADDR_VAR 0 8
16016: PUSH
16017: LD_VAR 0 8
16021: PUSH
16022: LD_VAR 0 4
16026: PPUSH
16027: CALL_OW 313
16031: ADD
16032: ST_TO_ADDR
16033: GO 16009
16035: POP
16036: POP
// for Un in Vehicles_In_Depot_Right do
16037: LD_ADDR_VAR 0 4
16041: PUSH
16042: LD_VAR 0 10
16046: PUSH
16047: FOR_IN
16048: IFFALSE 16073
// Humans_In_Depot_Right = Humans_In_Depot_Right ^ UnitsInside ( Un ) ;
16050: LD_ADDR_VAR 0 8
16054: PUSH
16055: LD_VAR 0 8
16059: PUSH
16060: LD_VAR 0 4
16064: PPUSH
16065: CALL_OW 313
16069: ADD
16070: ST_TO_ADDR
16071: GO 16047
16073: POP
16074: POP
// Humans_In_Depot_Right = Humans_In_Depot_Right diff Mikhail ;
16075: LD_ADDR_VAR 0 8
16079: PUSH
16080: LD_VAR 0 8
16084: PUSH
16085: LD_EXP 65
16089: DIFF
16090: ST_TO_ADDR
// Humans_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
16091: LD_ADDR_VAR 0 11
16095: PUSH
16096: LD_INT 19
16098: PPUSH
16099: LD_INT 22
16101: PUSH
16102: LD_EXP 3
16106: PUSH
16107: EMPTY
16108: LIST
16109: LIST
16110: PUSH
16111: LD_INT 21
16113: PUSH
16114: LD_INT 1
16116: PUSH
16117: EMPTY
16118: LIST
16119: LIST
16120: PUSH
16121: LD_INT 50
16123: PUSH
16124: EMPTY
16125: LIST
16126: PUSH
16127: EMPTY
16128: LIST
16129: LIST
16130: LIST
16131: PPUSH
16132: CALL_OW 70
16136: ST_TO_ADDR
// Buildings_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
16137: LD_ADDR_VAR 0 12
16141: PUSH
16142: LD_INT 19
16144: PPUSH
16145: LD_INT 22
16147: PUSH
16148: LD_EXP 3
16152: PUSH
16153: EMPTY
16154: LIST
16155: LIST
16156: PUSH
16157: LD_INT 21
16159: PUSH
16160: LD_INT 3
16162: PUSH
16163: EMPTY
16164: LIST
16165: LIST
16166: PUSH
16167: LD_INT 50
16169: PUSH
16170: EMPTY
16171: LIST
16172: PUSH
16173: EMPTY
16174: LIST
16175: LIST
16176: LIST
16177: PPUSH
16178: CALL_OW 70
16182: ST_TO_ADDR
// Vehicles_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
16183: LD_ADDR_VAR 0 13
16187: PUSH
16188: LD_INT 19
16190: PPUSH
16191: LD_INT 22
16193: PUSH
16194: LD_EXP 3
16198: PUSH
16199: EMPTY
16200: LIST
16201: LIST
16202: PUSH
16203: LD_INT 21
16205: PUSH
16206: LD_INT 2
16208: PUSH
16209: EMPTY
16210: LIST
16211: LIST
16212: PUSH
16213: LD_INT 50
16215: PUSH
16216: EMPTY
16217: LIST
16218: PUSH
16219: EMPTY
16220: LIST
16221: LIST
16222: LIST
16223: PPUSH
16224: CALL_OW 70
16228: ST_TO_ADDR
// for Un in Buildings_In_Depot_Back do
16229: LD_ADDR_VAR 0 4
16233: PUSH
16234: LD_VAR 0 12
16238: PUSH
16239: FOR_IN
16240: IFFALSE 16265
// Humans_In_Depot_Back = Humans_In_Depot_Back ^ UnitsInside ( Un ) ;
16242: LD_ADDR_VAR 0 11
16246: PUSH
16247: LD_VAR 0 11
16251: PUSH
16252: LD_VAR 0 4
16256: PPUSH
16257: CALL_OW 313
16261: ADD
16262: ST_TO_ADDR
16263: GO 16239
16265: POP
16266: POP
// for Un in Vehicles_In_Depot_Back do
16267: LD_ADDR_VAR 0 4
16271: PUSH
16272: LD_VAR 0 13
16276: PUSH
16277: FOR_IN
16278: IFFALSE 16303
// Humans_In_Depot_Back = Humans_In_Depot_Back ^ UnitsInside ( Un ) ;
16280: LD_ADDR_VAR 0 11
16284: PUSH
16285: LD_VAR 0 11
16289: PUSH
16290: LD_VAR 0 4
16294: PPUSH
16295: CALL_OW 313
16299: ADD
16300: ST_TO_ADDR
16301: GO 16277
16303: POP
16304: POP
// Humans_In_Depot_Back = Humans_In_Depot_Back diff Mikhail ;
16305: LD_ADDR_VAR 0 11
16309: PUSH
16310: LD_VAR 0 11
16314: PUSH
16315: LD_EXP 65
16319: DIFF
16320: ST_TO_ADDR
// if ( Humans_In_Depot_Left = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
16321: LD_VAR 0 5
16325: PUSH
16326: LD_INT 0
16328: EQUAL
16329: PUSH
16330: LD_INT 1
16332: PPUSH
16333: CALL_OW 313
16337: PUSH
16338: LD_INT 2
16340: LESS
16341: AND
16342: IFFALSE 16486
// begin Mikhails_Escape_Disabled = false ;
16344: LD_ADDR_EXP 91
16348: PUSH
16349: LD_INT 0
16351: ST_TO_ADDR
// target_of_escape = [ 4 , 6 ] ;
16352: LD_ADDR_LOC 10
16356: PUSH
16357: LD_INT 4
16359: PUSH
16360: LD_INT 6
16362: PUSH
16363: EMPTY
16364: LIST
16365: LIST
16366: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
16367: LD_EXP 65
16371: PPUSH
16372: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
16376: LD_EXP 65
16380: PPUSH
16381: LD_EXP 6
16385: PPUSH
16386: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
16390: LD_EXP 65
16394: PPUSH
16395: LD_INT 52
16397: PPUSH
16398: LD_INT 13
16400: PPUSH
16401: LD_INT 0
16403: PPUSH
16404: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
16408: LD_ADDR_EXP 50
16412: PUSH
16413: LD_EXP 65
16417: PPUSH
16418: CALL_OW 256
16422: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
16423: LD_EXP 45
16427: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
16428: LD_EXP 3
16432: PPUSH
16433: LD_EXP 6
16437: PPUSH
16438: LD_INT 2
16440: PPUSH
16441: LD_INT 1
16443: PPUSH
16444: CALL_OW 80
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16448: LD_EXP 65
16452: PPUSH
16453: LD_LOC 10
16457: PUSH
16458: LD_INT 1
16460: ARRAY
16461: PPUSH
16462: LD_LOC 10
16466: PUSH
16467: LD_INT 2
16469: ARRAY
16470: PPUSH
16471: CALL_OW 171
// AddComHold ( Mikhail ) ;
16475: LD_EXP 65
16479: PPUSH
16480: CALL_OW 200
// end else
16484: GO 16862
// if ( Humans_In_Depot_Right = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
16486: LD_VAR 0 8
16490: PUSH
16491: LD_INT 0
16493: EQUAL
16494: PUSH
16495: LD_INT 1
16497: PPUSH
16498: CALL_OW 313
16502: PUSH
16503: LD_INT 2
16505: LESS
16506: AND
16507: IFFALSE 16681
// begin Mikhails_Escape_Disabled = false ;
16509: LD_ADDR_EXP 91
16513: PUSH
16514: LD_INT 0
16516: ST_TO_ADDR
// target_of_escape = [ 61 , 1 ] ;
16517: LD_ADDR_LOC 10
16521: PUSH
16522: LD_INT 61
16524: PUSH
16525: LD_INT 1
16527: PUSH
16528: EMPTY
16529: LIST
16530: LIST
16531: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
16532: LD_EXP 65
16536: PPUSH
16537: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
16541: LD_EXP 65
16545: PPUSH
16546: LD_EXP 6
16550: PPUSH
16551: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
16555: LD_EXP 65
16559: PPUSH
16560: LD_INT 52
16562: PPUSH
16563: LD_INT 13
16565: PPUSH
16566: LD_INT 0
16568: PPUSH
16569: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
16573: LD_ADDR_EXP 50
16577: PUSH
16578: LD_EXP 65
16582: PPUSH
16583: CALL_OW 256
16587: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
16588: LD_EXP 45
16592: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
16593: LD_EXP 3
16597: PPUSH
16598: LD_EXP 6
16602: PPUSH
16603: LD_INT 2
16605: PPUSH
16606: LD_INT 1
16608: PPUSH
16609: CALL_OW 80
// AddComMoveXY ( Mikhail , 57 , 11 ) ;
16613: LD_EXP 65
16617: PPUSH
16618: LD_INT 57
16620: PPUSH
16621: LD_INT 11
16623: PPUSH
16624: CALL_OW 171
// AddComMoveXY ( Mikhail , 63 , 9 ) ;
16628: LD_EXP 65
16632: PPUSH
16633: LD_INT 63
16635: PPUSH
16636: LD_INT 9
16638: PPUSH
16639: CALL_OW 171
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16643: LD_EXP 65
16647: PPUSH
16648: LD_LOC 10
16652: PUSH
16653: LD_INT 1
16655: ARRAY
16656: PPUSH
16657: LD_LOC 10
16661: PUSH
16662: LD_INT 2
16664: ARRAY
16665: PPUSH
16666: CALL_OW 171
// AddComHold ( Mikhail ) ;
16670: LD_EXP 65
16674: PPUSH
16675: CALL_OW 200
// end else
16679: GO 16862
// if ( Humans_In_Depot_Back = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
16681: LD_VAR 0 11
16685: PUSH
16686: LD_INT 0
16688: EQUAL
16689: PUSH
16690: LD_INT 1
16692: PPUSH
16693: CALL_OW 313
16697: PUSH
16698: LD_INT 2
16700: LESS
16701: AND
16702: IFFALSE 16861
// begin Mikhails_Escape_Disabled = false ;
16704: LD_ADDR_EXP 91
16708: PUSH
16709: LD_INT 0
16711: ST_TO_ADDR
// target_of_escape = [ 47 , 1 ] ;
16712: LD_ADDR_LOC 10
16716: PUSH
16717: LD_INT 47
16719: PUSH
16720: LD_INT 1
16722: PUSH
16723: EMPTY
16724: LIST
16725: LIST
16726: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
16727: LD_EXP 65
16731: PPUSH
16732: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
16736: LD_EXP 65
16740: PPUSH
16741: LD_EXP 6
16745: PPUSH
16746: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
16750: LD_EXP 65
16754: PPUSH
16755: LD_INT 52
16757: PPUSH
16758: LD_INT 13
16760: PPUSH
16761: LD_INT 0
16763: PPUSH
16764: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
16768: LD_ADDR_EXP 50
16772: PUSH
16773: LD_EXP 65
16777: PPUSH
16778: CALL_OW 256
16782: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
16783: LD_EXP 45
16787: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
16788: LD_EXP 3
16792: PPUSH
16793: LD_EXP 6
16797: PPUSH
16798: LD_INT 2
16800: PPUSH
16801: LD_INT 1
16803: PPUSH
16804: CALL_OW 80
// AddComMoveXY ( Mikhail , 49 , 7 ) ;
16808: LD_EXP 65
16812: PPUSH
16813: LD_INT 49
16815: PPUSH
16816: LD_INT 7
16818: PPUSH
16819: CALL_OW 171
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16823: LD_EXP 65
16827: PPUSH
16828: LD_LOC 10
16832: PUSH
16833: LD_INT 1
16835: ARRAY
16836: PPUSH
16837: LD_LOC 10
16841: PUSH
16842: LD_INT 2
16844: ARRAY
16845: PPUSH
16846: CALL_OW 171
// AddComHold ( Mikhail ) ;
16850: LD_EXP 65
16854: PPUSH
16855: CALL_OW 200
// end else
16859: GO 16862
// enable ;
16861: ENABLE
// end ;
16862: PPOPN 13
16864: END
// every 0 0$1 trigger IsOk ( Mikhail ) and not ( IsBusy ( Mikhail ) ) marked 13 do
16865: LD_EXP 65
16869: PPUSH
16870: CALL_OW 302
16874: PUSH
16875: LD_EXP 65
16879: PPUSH
16880: CALL_OW 315
16884: NOT
16885: AND
16886: IFFALSE 16918
16888: GO 16890
16890: DISABLE
// begin ComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16891: LD_EXP 65
16895: PPUSH
16896: LD_LOC 10
16900: PUSH
16901: LD_INT 1
16903: ARRAY
16904: PPUSH
16905: LD_LOC 10
16909: PUSH
16910: LD_INT 2
16912: ARRAY
16913: PPUSH
16914: CALL_OW 111
// end ;
16918: END
// every 0 0$2 trigger Mikhails_outcome = - 2 and Mikhails_lives = 1000 do var NearSol ;
16919: LD_LOC 3
16923: PUSH
16924: LD_INT 2
16926: NEG
16927: EQUAL
16928: PUSH
16929: LD_EXP 50
16933: PUSH
16934: LD_INT 1000
16936: EQUAL
16937: AND
16938: IFFALSE 17212
16940: GO 16942
16942: DISABLE
16943: LD_INT 0
16945: PPUSH
// begin if GetDistUnits ( John , dep1 ) < 6 then
16946: LD_EXP 7
16950: PPUSH
16951: LD_INT 1
16953: PPUSH
16954: CALL_OW 296
16958: PUSH
16959: LD_INT 6
16961: LESS
16962: IFFALSE 17211
// begin NearSol = NearestUnitToXY ( FilterAllUnits ( [ [ f_side , americans ] , [ f_sex , sex_male ] ] ) diff [ John , Cyrus ] , 52 , 13 ) ;
16964: LD_ADDR_VAR 0 1
16968: PUSH
16969: LD_INT 22
16971: PUSH
16972: LD_EXP 3
16976: PUSH
16977: EMPTY
16978: LIST
16979: LIST
16980: PUSH
16981: LD_INT 26
16983: PUSH
16984: LD_INT 1
16986: PUSH
16987: EMPTY
16988: LIST
16989: LIST
16990: PUSH
16991: EMPTY
16992: LIST
16993: LIST
16994: PPUSH
16995: CALL_OW 69
16999: PUSH
17000: LD_EXP 7
17004: PUSH
17005: LD_EXP 8
17009: PUSH
17010: EMPTY
17011: LIST
17012: LIST
17013: DIFF
17014: PPUSH
17015: LD_INT 52
17017: PPUSH
17018: LD_INT 13
17020: PPUSH
17021: CALL_OW 73
17025: ST_TO_ADDR
// CenterOnUnits ( dep1 ) ;
17026: LD_INT 1
17028: PPUSH
17029: CALL_OW 85
// ComMoveXY ( John , 52 , 13 ) ;
17033: LD_EXP 7
17037: PPUSH
17038: LD_INT 52
17040: PPUSH
17041: LD_INT 13
17043: PPUSH
17044: CALL_OW 111
// DialogueOn ;
17048: CALL_OW 6
// Say ( John , D7-JMM-1 ) ;
17052: LD_EXP 7
17056: PPUSH
17057: LD_STRING D7-JMM-1
17059: PPUSH
17060: CALL_OW 88
// if NearSol then
17064: LD_VAR 0 1
17068: IFFALSE 17130
// begin Say ( NearSol , D7-Sol1-1 ) ;
17070: LD_VAR 0 1
17074: PPUSH
17075: LD_STRING D7-Sol1-1
17077: PPUSH
17078: CALL_OW 88
// Say ( John , D7-JMM-2 ) ;
17082: LD_EXP 7
17086: PPUSH
17087: LD_STRING D7-JMM-2
17089: PPUSH
17090: CALL_OW 88
// Say ( NearSOl , D7-Sol1-2 ) ;
17094: LD_VAR 0 1
17098: PPUSH
17099: LD_STRING D7-Sol1-2
17101: PPUSH
17102: CALL_OW 88
// Say ( John , D7-JMM-3 ) ;
17106: LD_EXP 7
17110: PPUSH
17111: LD_STRING D7-JMM-3
17113: PPUSH
17114: CALL_OW 88
// Say ( NearSol , D7-Sol1-3 ) ;
17118: LD_VAR 0 1
17122: PPUSH
17123: LD_STRING D7-Sol1-3
17125: PPUSH
17126: CALL_OW 88
// end ; if IsOk ( Cyrus ) and IsOk ( Lisa ) then
17130: LD_EXP 8
17134: PPUSH
17135: CALL_OW 302
17139: PUSH
17140: LD_EXP 12
17144: PPUSH
17145: CALL_OW 302
17149: AND
17150: IFFALSE 17205
// begin Say ( Cyrus , D7-Cyrus-3 ) ;
17152: LD_EXP 8
17156: PPUSH
17157: LD_STRING D7-Cyrus-3
17159: PPUSH
17160: CALL_OW 88
// if NearSol then
17164: LD_VAR 0 1
17168: IFFALSE 17205
// begin Say ( NearSol , D7-Sol1-4 ) ;
17170: LD_VAR 0 1
17174: PPUSH
17175: LD_STRING D7-Sol1-4
17177: PPUSH
17178: CALL_OW 88
// if IsOk ( Lisa ) then
17182: LD_EXP 12
17186: PPUSH
17187: CALL_OW 302
17191: IFFALSE 17205
// Say ( Lisa , D7-Lisa-4 ) ;
17193: LD_EXP 12
17197: PPUSH
17198: LD_STRING D7-Lisa-4
17200: PPUSH
17201: CALL_OW 88
// end ; end ; DialogueOff ;
17205: CALL_OW 7
// end else
17209: GO 17212
// enable ;
17211: ENABLE
// end ;
17212: PPOPN 1
17214: END
// every 0 0$1 trigger ( GetLives ( Mikhail ) < Mikhails_lives ) and rep marked 13 do
17215: LD_EXP 65
17219: PPUSH
17220: CALL_OW 256
17224: PUSH
17225: LD_EXP 50
17229: LESS
17230: PUSH
17231: LD_EXP 49
17235: AND
17236: IFFALSE 17381
17238: GO 17240
17240: DISABLE
// begin if IsOk ( Mikhail ) then
17241: LD_EXP 65
17245: PPUSH
17246: CALL_OW 302
17250: IFFALSE 17381
// begin attacker = Nearest ( Mikhail , FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] ] ) ) ;
17252: LD_ADDR_LOC 11
17256: PUSH
17257: LD_EXP 65
17261: PPUSH
17262: LD_INT 22
17264: PUSH
17265: LD_EXP 3
17269: PUSH
17270: EMPTY
17271: LIST
17272: LIST
17273: PUSH
17274: LD_INT 21
17276: PUSH
17277: LD_INT 1
17279: PUSH
17280: EMPTY
17281: LIST
17282: LIST
17283: PUSH
17284: EMPTY
17285: LIST
17286: LIST
17287: PPUSH
17288: CALL_OW 69
17292: PPUSH
17293: CALL 10219 0 2
17297: ST_TO_ADDR
// if GetSex ( attacker ) = sex_male then
17298: LD_LOC 11
17302: PPUSH
17303: CALL_OW 258
17307: PUSH
17308: LD_INT 1
17310: EQUAL
17311: IFFALSE 17340
// begin Say ( attacker , D7a-Sol1-1 ) ;
17313: LD_LOC 11
17317: PPUSH
17318: LD_STRING D7a-Sol1-1
17320: PPUSH
17321: CALL_OW 88
// enable ( firing1 ) ;
17325: LD_EXP 51
17329: ENABLE_MARKED
// rep = false ;
17330: LD_ADDR_EXP 49
17334: PUSH
17335: LD_INT 0
17337: ST_TO_ADDR
// end else
17338: GO 17365
// begin Say ( attacker , D7a-FSol1-1 ) ;
17340: LD_LOC 11
17344: PPUSH
17345: LD_STRING D7a-FSol1-1
17347: PPUSH
17348: CALL_OW 88
// enable ( firing2 ) ;
17352: LD_EXP 52
17356: ENABLE_MARKED
// rep = false ;
17357: LD_ADDR_EXP 49
17361: PUSH
17362: LD_INT 0
17364: ST_TO_ADDR
// end ; Mikhails_lives = GetLives ( Mikhail ) ;
17365: LD_ADDR_EXP 50
17369: PUSH
17370: LD_EXP 65
17374: PPUSH
17375: CALL_OW 256
17379: ST_TO_ADDR
// enable ;
17380: ENABLE
// end ; end ;
17381: END
// every 0 0$1 marked 14 do
17382: GO 17384
17384: DISABLE
// begin if IsDead ( Mikhail ) then
17385: LD_EXP 65
17389: PPUSH
17390: CALL_OW 301
17394: IFFALSE 17408
// Say ( attacker , D7a-Sol1-1a ) ;
17396: LD_LOC 11
17400: PPUSH
17401: LD_STRING D7a-Sol1-1a
17403: PPUSH
17404: CALL_OW 88
// end ;
17408: END
// every 0 0$1 marked 15 do
17409: GO 17411
17411: DISABLE
// begin if IsDead ( Mikhail ) then
17412: LD_EXP 65
17416: PPUSH
17417: CALL_OW 301
17421: IFFALSE 17435
// Say ( attacker , D7a-FSol1-1a ) ;
17423: LD_LOC 11
17427: PPUSH
17428: LD_STRING D7a-FSol1-1a
17430: PPUSH
17431: CALL_OW 88
// end ;
17435: END
// every 0 0$3 trigger ( GetLives ( dep1 ) < Dep1_lives or GetLives ( dep2 ) < Dep2_lives ) and not ( battle ) do
17436: LD_INT 1
17438: PPUSH
17439: CALL_OW 256
17443: PUSH
17444: LD_EXP 47
17448: LESS
17449: PUSH
17450: LD_INT 10
17452: PPUSH
17453: CALL_OW 256
17457: PUSH
17458: LD_EXP 48
17462: LESS
17463: OR
17464: PUSH
17465: LD_EXP 75
17469: NOT
17470: AND
17471: IFFALSE 17582
17473: GO 17475
17475: DISABLE
// begin if ( GetLives ( dep1 ) < Dep1_lives and GetDistUnits ( dep1 , John ) < 20 ) or ( GetLives ( dep2 ) < Dep2_lives and GetDistUnits ( dep2 , John ) < 20 ) then
17476: LD_INT 1
17478: PPUSH
17479: CALL_OW 256
17483: PUSH
17484: LD_EXP 47
17488: LESS
17489: PUSH
17490: LD_INT 1
17492: PPUSH
17493: LD_EXP 7
17497: PPUSH
17498: CALL_OW 296
17502: PUSH
17503: LD_INT 20
17505: LESS
17506: AND
17507: PUSH
17508: LD_INT 10
17510: PPUSH
17511: CALL_OW 256
17515: PUSH
17516: LD_EXP 48
17520: LESS
17521: PUSH
17522: LD_INT 10
17524: PPUSH
17525: LD_EXP 7
17529: PPUSH
17530: CALL_OW 296
17534: PUSH
17535: LD_INT 20
17537: LESS
17538: AND
17539: OR
17540: IFFALSE 17556
// Say ( John , D8-JMM-1 ) else
17542: LD_EXP 7
17546: PPUSH
17547: LD_STRING D8-JMM-1
17549: PPUSH
17550: CALL_OW 88
17554: GO 17582
// begin Dep1_lives = GetLives ( dep1 ) ;
17556: LD_ADDR_EXP 47
17560: PUSH
17561: LD_INT 1
17563: PPUSH
17564: CALL_OW 256
17568: ST_TO_ADDR
// Dep2_lives = GetLives ( dep2 ) ;
17569: LD_ADDR_EXP 48
17573: PUSH
17574: LD_INT 10
17576: PPUSH
17577: CALL_OW 256
17581: ST_TO_ADDR
// end ; end ;
17582: END
// function place_tiger ( name , area ) ; var i , x_sour , y_sour ; begin
17583: LD_INT 0
17585: PPUSH
17586: PPUSH
17587: PPUSH
17588: PPUSH
// InitUc ;
17589: CALL_OW 18
// InitHc ;
17593: CALL_OW 19
// hc_sex = sex_male ;
17597: LD_ADDR_OWVAR 27
17601: PUSH
17602: LD_INT 1
17604: ST_TO_ADDR
// uc_side = 0 ;
17605: LD_ADDR_OWVAR 20
17609: PUSH
17610: LD_INT 0
17612: ST_TO_ADDR
// uc_nation = nation_nature ;
17613: LD_ADDR_OWVAR 21
17617: PUSH
17618: LD_INT 0
17620: ST_TO_ADDR
// hc_class = class_tiger ;
17621: LD_ADDR_OWVAR 28
17625: PUSH
17626: LD_INT 14
17628: ST_TO_ADDR
// hc_skills = [ Tiger_skill , 0 , 0 , 0 ] ;
17629: LD_ADDR_OWVAR 31
17633: PUSH
17634: LD_EXP 103
17638: PUSH
17639: LD_INT 0
17641: PUSH
17642: LD_INT 0
17644: PUSH
17645: LD_INT 0
17647: PUSH
17648: EMPTY
17649: LIST
17650: LIST
17651: LIST
17652: LIST
17653: ST_TO_ADDR
// hc_agressivity = 50 ;
17654: LD_ADDR_OWVAR 35
17658: PUSH
17659: LD_INT 50
17661: ST_TO_ADDR
// i = 5 ;
17662: LD_ADDR_VAR 0 4
17666: PUSH
17667: LD_INT 5
17669: ST_TO_ADDR
// repeat i = i - 1 ;
17670: LD_ADDR_VAR 0 4
17674: PUSH
17675: LD_VAR 0 4
17679: PUSH
17680: LD_INT 1
17682: MINUS
17683: ST_TO_ADDR
// sour = RandHexArea ( area , false ) ;
17684: LD_ADDR_LOC 9
17688: PUSH
17689: LD_VAR 0 2
17693: PPUSH
17694: LD_INT 0
17696: PPUSH
17697: CALL_OW 16
17701: ST_TO_ADDR
// until not ( SeeXY ( americans , sour [ 1 ] , sour [ 2 ] ) ) or i < 1 ;
17702: LD_EXP 3
17706: PPUSH
17707: LD_LOC 9
17711: PUSH
17712: LD_INT 1
17714: ARRAY
17715: PPUSH
17716: LD_LOC 9
17720: PUSH
17721: LD_INT 2
17723: ARRAY
17724: PPUSH
17725: CALL_OW 293
17729: NOT
17730: PUSH
17731: LD_VAR 0 4
17735: PUSH
17736: LD_INT 1
17738: LESS
17739: OR
17740: IFFALSE 17670
// name = CreateHuman ;
17742: LD_ADDR_VAR 0 1
17746: PUSH
17747: CALL_OW 44
17751: ST_TO_ADDR
// if not ( SeeXY ( americans , sour [ 1 ] , sour [ 2 ] ) ) then
17752: LD_EXP 3
17756: PPUSH
17757: LD_LOC 9
17761: PUSH
17762: LD_INT 1
17764: ARRAY
17765: PPUSH
17766: LD_LOC 9
17770: PUSH
17771: LD_INT 2
17773: ARRAY
17774: PPUSH
17775: CALL_OW 293
17779: NOT
17780: IFFALSE 17812
// PlaceUnitXY ( name , sour [ 1 ] , sour [ 2 ] , false ) ;
17782: LD_VAR 0 1
17786: PPUSH
17787: LD_LOC 9
17791: PUSH
17792: LD_INT 1
17794: ARRAY
17795: PPUSH
17796: LD_LOC 9
17800: PUSH
17801: LD_INT 2
17803: ARRAY
17804: PPUSH
17805: LD_INT 0
17807: PPUSH
17808: CALL_OW 48
// if not ( IsOk ( name ) ) then
17812: LD_VAR 0 1
17816: PPUSH
17817: CALL_OW 302
17821: NOT
17822: IFFALSE 17843
// begin DestroyUnit ( name ) ;
17824: LD_VAR 0 1
17828: PPUSH
17829: CALL_OW 65
// result = 0 ;
17833: LD_ADDR_VAR 0 3
17837: PUSH
17838: LD_INT 0
17840: ST_TO_ADDR
// end else
17841: GO 17851
// result = 1 ;
17843: LD_ADDR_VAR 0 3
17847: PUSH
17848: LD_INT 1
17850: ST_TO_ADDR
// end ;
17851: LD_VAR 0 3
17855: RET
// every 2 2$0 marked 18 do var i ;
17856: GO 17858
17858: DISABLE
17859: LD_INT 0
17861: PPUSH
// begin for i = 1 to Difficulty do
17862: LD_ADDR_VAR 0 1
17866: PUSH
17867: DOUBLE
17868: LD_INT 1
17870: DEC
17871: ST_TO_ADDR
17872: LD_OWVAR 67
17876: PUSH
17877: FOR_TO
17878: IFFALSE 17982
// begin hc_sex = sex_male ;
17880: LD_ADDR_OWVAR 27
17884: PUSH
17885: LD_INT 1
17887: ST_TO_ADDR
// uc_side = 0 ;
17888: LD_ADDR_OWVAR 20
17892: PUSH
17893: LD_INT 0
17895: ST_TO_ADDR
// uc_nation = nation_nature ;
17896: LD_ADDR_OWVAR 21
17900: PUSH
17901: LD_INT 0
17903: ST_TO_ADDR
// hc_class = class_tiger ;
17904: LD_ADDR_OWVAR 28
17908: PUSH
17909: LD_INT 14
17911: ST_TO_ADDR
// hc_skills = [ Tiger_skill , 0 , 0 , 0 ] ;
17912: LD_ADDR_OWVAR 31
17916: PUSH
17917: LD_EXP 103
17921: PUSH
17922: LD_INT 0
17924: PUSH
17925: LD_INT 0
17927: PUSH
17928: LD_INT 0
17930: PUSH
17931: EMPTY
17932: LIST
17933: LIST
17934: LIST
17935: LIST
17936: ST_TO_ADDR
// hc_agressivity = 5 + 15 * Difficulty ;
17937: LD_ADDR_OWVAR 35
17941: PUSH
17942: LD_INT 5
17944: PUSH
17945: LD_INT 15
17947: PUSH
17948: LD_OWVAR 67
17952: MUL
17953: PLUS
17954: ST_TO_ADDR
// tiger = CreateHuman ;
17955: LD_ADDR_LOC 8
17959: PUSH
17960: CALL_OW 44
17964: ST_TO_ADDR
// PlaceUnitArea ( tiger , wood , false ) ;
17965: LD_LOC 8
17969: PPUSH
17970: LD_INT 3
17972: PPUSH
17973: LD_INT 0
17975: PPUSH
17976: CALL_OW 49
// end ;
17980: GO 17877
17982: POP
17983: POP
// end ;
17984: PPOPN 1
17986: END
// every 6 6$0 trigger Rand ( 1 , number_of_crates ) = 1 do
17987: LD_INT 1
17989: PPUSH
17990: LD_EXP 76
17994: PPUSH
17995: CALL_OW 12
17999: PUSH
18000: LD_INT 1
18002: EQUAL
18003: IFFALSE 18019
18005: GO 18007
18007: DISABLE
// begin CreateCratesAnywhere ( 3 , true ) ;
18008: LD_INT 3
18010: PPUSH
18011: LD_INT 1
18013: PPUSH
18014: CALL_OW 57
// enable ;
18018: ENABLE
// end ;
18019: END
// every 0 0$0.1 marked 19 do
18020: GO 18022
18022: DISABLE
// begin ComMoveXY ( tigers , 98 , 2 ) ;
18023: LD_EXP 70
18027: PPUSH
18028: LD_INT 98
18030: PPUSH
18031: LD_INT 2
18033: PPUSH
18034: CALL_OW 111
// for tiger in tigers do
18038: LD_ADDR_LOC 8
18042: PUSH
18043: LD_EXP 70
18047: PUSH
18048: FOR_IN
18049: IFFALSE 18074
// begin WaitTask ( tiger , 1 ) ;
18051: LD_LOC 8
18055: PPUSH
18056: LD_INT 1
18058: PPUSH
18059: CALL 3368 0 2
// RemoveUnit ( tiger ) ;
18063: LD_LOC 8
18067: PPUSH
18068: CALL_OW 64
// end ;
18072: GO 18048
18074: POP
18075: POP
// end ;
18076: END
// every 0 0$3 trigger tick > Time_of_attack do var Un ;
18077: LD_OWVAR 1
18081: PUSH
18082: LD_EXP 26
18086: GREATER
18087: IFFALSE 18487
18089: GO 18091
18091: DISABLE
18092: LD_INT 0
18094: PPUSH
// begin if Attack_canceled then
18095: LD_EXP 93
18099: IFFALSE 18175
// begin DialogueOn ;
18101: CALL_OW 6
// SayRadio ( Powell , D6-Pow-1 ) ;
18105: LD_EXP 16
18109: PPUSH
18110: LD_STRING D6-Pow-1
18112: PPUSH
18113: CALL_OW 94
// Say ( John , D6-JMM-1 ) ;
18117: LD_EXP 7
18121: PPUSH
18122: LD_STRING D6-JMM-1
18124: PPUSH
18125: CALL_OW 88
// SayRadio ( Powell , D6-Pow-2 ) ;
18129: LD_EXP 16
18133: PPUSH
18134: LD_STRING D6-Pow-2
18136: PPUSH
18137: CALL_OW 94
// Say ( John , D6-JMM-2 ) ;
18141: LD_EXP 7
18145: PPUSH
18146: LD_STRING D6-JMM-2
18148: PPUSH
18149: CALL_OW 88
// DialogueOff ;
18153: CALL_OW 7
// battle = false ;
18157: LD_ADDR_EXP 75
18161: PUSH
18162: LD_INT 0
18164: ST_TO_ADDR
// end_of_m = 1 ;
18165: LD_ADDR_LOC 5
18169: PUSH
18170: LD_INT 1
18172: ST_TO_ADDR
// end else
18173: GO 18487
// begin disable ( tigers_allowed ) ;
18175: LD_EXP 81
18179: DISABLE_MARKED
// enable ( remove_tigers ) ;
18180: LD_EXP 82
18184: ENABLE_MARKED
// rsol = [ [ rsol1 , rsol2 ] , [ rsol1 , rsol2 , rsol3 , rsol4 ] , [ rsol1 , rsol2 , rsol3 , rsol4 , rsol5 , rsol6 ] ] [ Difficulty ] ;
18185: LD_ADDR_LOC 6
18189: PUSH
18190: LD_EXP 55
18194: PUSH
18195: LD_EXP 56
18199: PUSH
18200: EMPTY
18201: LIST
18202: LIST
18203: PUSH
18204: LD_EXP 55
18208: PUSH
18209: LD_EXP 56
18213: PUSH
18214: LD_EXP 57
18218: PUSH
18219: LD_EXP 58
18223: PUSH
18224: EMPTY
18225: LIST
18226: LIST
18227: LIST
18228: LIST
18229: PUSH
18230: LD_EXP 55
18234: PUSH
18235: LD_EXP 56
18239: PUSH
18240: LD_EXP 57
18244: PUSH
18245: LD_EXP 58
18249: PUSH
18250: LD_EXP 59
18254: PUSH
18255: LD_EXP 60
18259: PUSH
18260: EMPTY
18261: LIST
18262: LIST
18263: LIST
18264: LIST
18265: LIST
18266: LIST
18267: PUSH
18268: EMPTY
18269: LIST
18270: LIST
18271: LIST
18272: PUSH
18273: LD_OWVAR 67
18277: ARRAY
18278: ST_TO_ADDR
// rv = [ [ rv1 ] , [ rv1 ] , [ rv1 , rv2 ] ] [ Difficulty ] ;
18279: LD_ADDR_LOC 7
18283: PUSH
18284: LD_EXP 63
18288: PUSH
18289: EMPTY
18290: LIST
18291: PUSH
18292: LD_EXP 63
18296: PUSH
18297: EMPTY
18298: LIST
18299: PUSH
18300: LD_EXP 63
18304: PUSH
18305: LD_EXP 64
18309: PUSH
18310: EMPTY
18311: LIST
18312: LIST
18313: PUSH
18314: EMPTY
18315: LIST
18316: LIST
18317: LIST
18318: PUSH
18319: LD_OWVAR 67
18323: ARRAY
18324: ST_TO_ADDR
// while not ( PlaceUnitArea ( rv1 , prijezd , false ) ) do
18325: LD_EXP 63
18329: PPUSH
18330: LD_INT 10
18332: PPUSH
18333: LD_INT 0
18335: PPUSH
18336: CALL_OW 49
18340: NOT
18341: IFFALSE 18352
// wait ( 0 0$0.5 ) ;
18343: LD_INT 18
18345: PPUSH
18346: CALL_OW 67
18350: GO 18325
// if Difficulty > 2 then
18352: LD_OWVAR 67
18356: PUSH
18357: LD_INT 2
18359: GREATER
18360: IFFALSE 18389
// while not ( PlaceUnitArea ( rv2 , prijezd , false ) ) do
18362: LD_EXP 64
18366: PPUSH
18367: LD_INT 10
18369: PPUSH
18370: LD_INT 0
18372: PPUSH
18373: CALL_OW 49
18377: NOT
18378: IFFALSE 18389
// wait ( 0 0$0.5 ) ;
18380: LD_INT 18
18382: PPUSH
18383: CALL_OW 67
18387: GO 18362
// AddComAgressiveMove ( rv , 16 , 7 ) ;
18389: LD_LOC 7
18393: PPUSH
18394: LD_INT 16
18396: PPUSH
18397: LD_INT 7
18399: PPUSH
18400: CALL_OW 174
// for Un in rsol do
18404: LD_ADDR_VAR 0 1
18408: PUSH
18409: LD_LOC 6
18413: PUSH
18414: FOR_IN
18415: IFFALSE 18434
// PlaceUnitArea ( Un , prijezd , false ) ;
18417: LD_VAR 0 1
18421: PPUSH
18422: LD_INT 10
18424: PPUSH
18425: LD_INT 0
18427: PPUSH
18428: CALL_OW 49
18432: GO 18414
18434: POP
18435: POP
// AddComAgressiveMove ( rsol , 16 , 7 ) ;
18436: LD_LOC 6
18440: PPUSH
18441: LD_INT 16
18443: PPUSH
18444: LD_INT 7
18446: PPUSH
18447: CALL_OW 174
// Say ( rsol1 , D9-Rus3-1 ) ;
18451: LD_EXP 55
18455: PPUSH
18456: LD_STRING D9-Rus3-1
18458: PPUSH
18459: CALL_OW 88
// Say ( rsol2 , D9-Russ-1 ) ;
18463: LD_EXP 56
18467: PPUSH
18468: LD_STRING D9-Russ-1
18470: PPUSH
18471: CALL_OW 88
// Hint ( Boj ) ;
18475: LD_STRING Boj
18477: PPUSH
18478: CALL_OW 339
// enable ( russians_attack ) ;
18482: LD_EXP 53
18486: ENABLE_MARKED
// end ; end ;
18487: PPOPN 1
18489: END
// every 0 0$1 marked 16 do var breastworks , target , b , min ;
18490: GO 18492
18492: DISABLE
18493: LD_INT 0
18495: PPUSH
18496: PPUSH
18497: PPUSH
18498: PPUSH
// begin battle = true ;
18499: LD_ADDR_EXP 75
18503: PUSH
18504: LD_INT 1
18506: ST_TO_ADDR
// target = 1 ;
18507: LD_ADDR_VAR 0 2
18511: PUSH
18512: LD_INT 1
18514: ST_TO_ADDR
// min = 1000 ;
18515: LD_ADDR_VAR 0 4
18519: PUSH
18520: LD_INT 1000
18522: ST_TO_ADDR
// wait ( 0 0$5 * ( 4 - Difficulty ) ) ;
18523: LD_INT 175
18525: PUSH
18526: LD_INT 4
18528: PUSH
18529: LD_OWVAR 67
18533: MINUS
18534: MUL
18535: PPUSH
18536: CALL_OW 67
// breastworks = FilterUnitsInArea ( North , [ [ f_btype , b_breastwork ] , [ f_side , americans ] ] ) ;
18540: LD_ADDR_VAR 0 1
18544: PUSH
18545: LD_INT 2
18547: PPUSH
18548: LD_INT 30
18550: PUSH
18551: LD_INT 31
18553: PUSH
18554: EMPTY
18555: LIST
18556: LIST
18557: PUSH
18558: LD_INT 22
18560: PUSH
18561: LD_EXP 3
18565: PUSH
18566: EMPTY
18567: LIST
18568: LIST
18569: PUSH
18570: EMPTY
18571: LIST
18572: LIST
18573: PPUSH
18574: CALL_OW 70
18578: ST_TO_ADDR
// if breastworks = 0 then
18579: LD_VAR 0 1
18583: PUSH
18584: LD_INT 0
18586: EQUAL
18587: IFFALSE 18612
// ComAgressiveMove ( rsol ^ rv , 56 , 11 ) else
18589: LD_LOC 6
18593: PUSH
18594: LD_LOC 7
18598: ADD
18599: PPUSH
18600: LD_INT 56
18602: PPUSH
18603: LD_INT 11
18605: PPUSH
18606: CALL_OW 114
18610: GO 19194
// begin for b in breastworks do
18612: LD_ADDR_VAR 0 3
18616: PUSH
18617: LD_VAR 0 1
18621: PUSH
18622: FOR_IN
18623: IFFALSE 18671
// if min > GetDistUnitXY ( b , 36 , 0 ) then
18625: LD_VAR 0 4
18629: PUSH
18630: LD_VAR 0 3
18634: PPUSH
18635: LD_INT 36
18637: PPUSH
18638: LD_INT 0
18640: PPUSH
18641: CALL_OW 297
18645: GREATER
18646: IFFALSE 18669
// min = GetDistUnitXY ( b , 36 , 0 ) ;
18648: LD_ADDR_VAR 0 4
18652: PUSH
18653: LD_VAR 0 3
18657: PPUSH
18658: LD_INT 36
18660: PPUSH
18661: LD_INT 0
18663: PPUSH
18664: CALL_OW 297
18668: ST_TO_ADDR
18669: GO 18622
18671: POP
18672: POP
// for b in breastworks do
18673: LD_ADDR_VAR 0 3
18677: PUSH
18678: LD_VAR 0 1
18682: PUSH
18683: FOR_IN
18684: IFFALSE 18740
// if min > GetDistUnitXY ( b , 47 , 18 ) then
18686: LD_VAR 0 4
18690: PUSH
18691: LD_VAR 0 3
18695: PPUSH
18696: LD_INT 47
18698: PPUSH
18699: LD_INT 18
18701: PPUSH
18702: CALL_OW 297
18706: GREATER
18707: IFFALSE 18738
// begin min = GetDistUnitXY ( b , 47 , 18 ) ;
18709: LD_ADDR_VAR 0 4
18713: PUSH
18714: LD_VAR 0 3
18718: PPUSH
18719: LD_INT 47
18721: PPUSH
18722: LD_INT 18
18724: PPUSH
18725: CALL_OW 297
18729: ST_TO_ADDR
// target = 2 ;
18730: LD_ADDR_VAR 0 2
18734: PUSH
18735: LD_INT 2
18737: ST_TO_ADDR
// end ;
18738: GO 18683
18740: POP
18741: POP
// for b in breastworks do
18742: LD_ADDR_VAR 0 3
18746: PUSH
18747: LD_VAR 0 1
18751: PUSH
18752: FOR_IN
18753: IFFALSE 18809
// if min > GetDistUnitXY ( b , 62 , 23 ) then
18755: LD_VAR 0 4
18759: PUSH
18760: LD_VAR 0 3
18764: PPUSH
18765: LD_INT 62
18767: PPUSH
18768: LD_INT 23
18770: PPUSH
18771: CALL_OW 297
18775: GREATER
18776: IFFALSE 18807
// begin min = GetDistUnitXY ( b , 62 , 23 ) ;
18778: LD_ADDR_VAR 0 4
18782: PUSH
18783: LD_VAR 0 3
18787: PPUSH
18788: LD_INT 62
18790: PPUSH
18791: LD_INT 23
18793: PPUSH
18794: CALL_OW 297
18798: ST_TO_ADDR
// target = 3 ;
18799: LD_ADDR_VAR 0 2
18803: PUSH
18804: LD_INT 3
18806: ST_TO_ADDR
// end ;
18807: GO 18752
18809: POP
18810: POP
// case target of 1 :
18811: LD_VAR 0 2
18815: PUSH
18816: LD_INT 1
18818: DOUBLE
18819: EQUAL
18820: IFTRUE 18824
18822: GO 18922
18824: POP
// begin AddComAgressiveMove ( rsol ^ rv , 16 , 2 ) ;
18825: LD_LOC 6
18829: PUSH
18830: LD_LOC 7
18834: ADD
18835: PPUSH
18836: LD_INT 16
18838: PPUSH
18839: LD_INT 2
18841: PPUSH
18842: CALL_OW 174
// wait ( 0 0$3 ) ;
18846: LD_INT 105
18848: PPUSH
18849: CALL_OW 67
// AddComAgressiveMove ( rsol , 36 , 0 ) ;
18853: LD_LOC 6
18857: PPUSH
18858: LD_INT 36
18860: PPUSH
18861: LD_INT 0
18863: PPUSH
18864: CALL_OW 174
// AddComAgressiveMove ( rsol , 51 , 4 ) ;
18868: LD_LOC 6
18872: PPUSH
18873: LD_INT 51
18875: PPUSH
18876: LD_INT 4
18878: PPUSH
18879: CALL_OW 174
// wait ( 0 0$3 ) ;
18883: LD_INT 105
18885: PPUSH
18886: CALL_OW 67
// AddComAgressiveMove ( rv , 36 , 0 ) ;
18890: LD_LOC 7
18894: PPUSH
18895: LD_INT 36
18897: PPUSH
18898: LD_INT 0
18900: PPUSH
18901: CALL_OW 174
// AddComAgressiveMove ( rv , 51 , 4 ) ;
18905: LD_LOC 7
18909: PPUSH
18910: LD_INT 51
18912: PPUSH
18913: LD_INT 4
18915: PPUSH
18916: CALL_OW 174
// end ; 2 :
18920: GO 19194
18922: LD_INT 2
18924: DOUBLE
18925: EQUAL
18926: IFTRUE 18930
18928: GO 19074
18930: POP
// begin if Rand ( 1 , 2 ) = 1 then
18931: LD_INT 1
18933: PPUSH
18934: LD_INT 2
18936: PPUSH
18937: CALL_OW 12
18941: PUSH
18942: LD_INT 1
18944: EQUAL
18945: IFFALSE 19014
// begin AddComAgressiveMove ( rsol ^ rv , 35 , 25 ) ;
18947: LD_LOC 6
18951: PUSH
18952: LD_LOC 7
18956: ADD
18957: PPUSH
18958: LD_INT 35
18960: PPUSH
18961: LD_INT 25
18963: PPUSH
18964: CALL_OW 174
// wait ( 0 0$5 ) ;
18968: LD_INT 175
18970: PPUSH
18971: CALL_OW 67
// AddComAgressiveMove ( rsol , 47 , 18 ) ;
18975: LD_LOC 6
18979: PPUSH
18980: LD_INT 47
18982: PPUSH
18983: LD_INT 18
18985: PPUSH
18986: CALL_OW 174
// wait ( 0 0$2 ) ;
18990: LD_INT 70
18992: PPUSH
18993: CALL_OW 67
// AddComAgressiveMove ( rv , 47 , 18 ) ;
18997: LD_LOC 7
19001: PPUSH
19002: LD_INT 47
19004: PPUSH
19005: LD_INT 18
19007: PPUSH
19008: CALL_OW 174
// end else
19012: GO 19051
// begin AddComAgressiveMove ( rsol , 47 , 18 ) ;
19014: LD_LOC 6
19018: PPUSH
19019: LD_INT 47
19021: PPUSH
19022: LD_INT 18
19024: PPUSH
19025: CALL_OW 174
// wait ( 0 0$3 ) ;
19029: LD_INT 105
19031: PPUSH
19032: CALL_OW 67
// AddComAgressiveMove ( rv , 47 , 18 ) ;
19036: LD_LOC 7
19040: PPUSH
19041: LD_INT 47
19043: PPUSH
19044: LD_INT 18
19046: PPUSH
19047: CALL_OW 174
// end ; AddComAgressiveMove ( rsol ^ rv , 51 , 13 ) ;
19051: LD_LOC 6
19055: PUSH
19056: LD_LOC 7
19060: ADD
19061: PPUSH
19062: LD_INT 51
19064: PPUSH
19065: LD_INT 13
19067: PPUSH
19068: CALL_OW 174
// end ; 3 :
19072: GO 19194
19074: LD_INT 3
19076: DOUBLE
19077: EQUAL
19078: IFTRUE 19082
19080: GO 19193
19082: POP
// begin AddComAgressiveMove ( rsol ^ rv , 35 , 25 ) ;
19083: LD_LOC 6
19087: PUSH
19088: LD_LOC 7
19092: ADD
19093: PPUSH
19094: LD_INT 35
19096: PPUSH
19097: LD_INT 25
19099: PPUSH
19100: CALL_OW 174
// wait ( 0 0$5 ) ;
19104: LD_INT 175
19106: PPUSH
19107: CALL_OW 67
// AddComAgressiveMove ( rsol ^ rv , 56 , 37 ) ;
19111: LD_LOC 6
19115: PUSH
19116: LD_LOC 7
19120: ADD
19121: PPUSH
19122: LD_INT 56
19124: PPUSH
19125: LD_INT 37
19127: PPUSH
19128: CALL_OW 174
// wait ( 0 0$5 ) ;
19132: LD_INT 175
19134: PPUSH
19135: CALL_OW 67
// AddComAgressiveMove ( rsol , 62 , 23 ) ;
19139: LD_LOC 6
19143: PPUSH
19144: LD_INT 62
19146: PPUSH
19147: LD_INT 23
19149: PPUSH
19150: CALL_OW 174
// wait ( 0 0$2 ) ;
19154: LD_INT 70
19156: PPUSH
19157: CALL_OW 67
// AddComAgressiveMove ( rv , 62 , 23 ) ;
19161: LD_LOC 7
19165: PPUSH
19166: LD_INT 62
19168: PPUSH
19169: LD_INT 23
19171: PPUSH
19172: CALL_OW 174
// AddComAgressiveMove ( rv , 55 , 10 ) ;
19176: LD_LOC 7
19180: PPUSH
19181: LD_INT 55
19183: PPUSH
19184: LD_INT 10
19186: PPUSH
19187: CALL_OW 174
// end ; end ;
19191: GO 19194
19193: POP
// end ; enable ( russians_attack1 ) ;
19194: LD_EXP 54
19198: ENABLE_MARKED
// end ;
19199: PPOPN 4
19201: END
// every 0 0$3 marked 17 do
19202: GO 19204
19204: DISABLE
// begin if IsOk ( rdrv1 ) then
19205: LD_EXP 61
19209: PPUSH
19210: CALL_OW 302
19214: IFFALSE 19336
// begin if not ( IsBusy ( rv1 ) ) and WantsToAttack ( rv1 ) = 0 and Attacks ( rv1 ) = 0 and IsOk ( dep1 ) then
19216: LD_EXP 63
19220: PPUSH
19221: CALL_OW 315
19225: NOT
19226: PUSH
19227: LD_EXP 63
19231: PPUSH
19232: CALL_OW 319
19236: PUSH
19237: LD_INT 0
19239: EQUAL
19240: AND
19241: PUSH
19242: LD_EXP 63
19246: PPUSH
19247: CALL_OW 320
19251: PUSH
19252: LD_INT 0
19254: EQUAL
19255: AND
19256: PUSH
19257: LD_INT 1
19259: PPUSH
19260: CALL_OW 302
19264: AND
19265: IFFALSE 19336
// if GetDistUnits ( rv1 , dep1 ) < 7 and UnitsInside ( dep1 ) = 0 then
19267: LD_EXP 63
19271: PPUSH
19272: LD_INT 1
19274: PPUSH
19275: CALL_OW 296
19279: PUSH
19280: LD_INT 7
19282: LESS
19283: PUSH
19284: LD_INT 1
19286: PPUSH
19287: CALL_OW 313
19291: PUSH
19292: LD_INT 0
19294: EQUAL
19295: AND
19296: IFFALSE 19321
// begin AddComExitVehicle ( rv1 ) ;
19298: LD_EXP 63
19302: PPUSH
19303: CALL_OW 181
// AddComEnterUnit ( rdrv1 , dep1 ) ;
19307: LD_EXP 61
19311: PPUSH
19312: LD_INT 1
19314: PPUSH
19315: CALL_OW 180
// end else
19319: GO 19336
// ComAgressiveMove ( rv1 , 51 , 14 ) ;
19321: LD_EXP 63
19325: PPUSH
19326: LD_INT 51
19328: PPUSH
19329: LD_INT 14
19331: PPUSH
19332: CALL_OW 114
// end ; enable ;
19336: ENABLE
// end ;
19337: END
// every 0 0$5 trigger ( UnitFilter ( rsol ^ [ rdrv1 , rdrv2 ] , [ f_alive ] ) ) = 0 marked 17 do
19338: LD_LOC 6
19342: PUSH
19343: LD_EXP 61
19347: PUSH
19348: LD_EXP 62
19352: PUSH
19353: EMPTY
19354: LIST
19355: LIST
19356: ADD
19357: PPUSH
19358: LD_INT 51
19360: PUSH
19361: EMPTY
19362: LIST
19363: PPUSH
19364: CALL_OW 72
19368: PUSH
19369: LD_INT 0
19371: EQUAL
19372: IFFALSE 19457
19374: GO 19376
19376: DISABLE
// begin disable ;
19377: DISABLE
// Wait ( 0 0$5 ) ;
19378: LD_INT 175
19380: PPUSH
19381: CALL_OW 67
// DialogueOn ;
19385: CALL_OW 6
// SayRadio ( Powell , D6-Pow-1 ) ;
19389: LD_EXP 16
19393: PPUSH
19394: LD_STRING D6-Pow-1
19396: PPUSH
19397: CALL_OW 94
// Say ( John , D6-JMM-1 ) ;
19401: LD_EXP 7
19405: PPUSH
19406: LD_STRING D6-JMM-1
19408: PPUSH
19409: CALL_OW 88
// SayRadio ( Powell , D6-Pow-2 ) ;
19413: LD_EXP 16
19417: PPUSH
19418: LD_STRING D6-Pow-2
19420: PPUSH
19421: CALL_OW 94
// Say ( John , D6-JMM-2 ) ;
19425: LD_EXP 7
19429: PPUSH
19430: LD_STRING D6-JMM-2
19432: PPUSH
19433: CALL_OW 88
// DialogueOff ;
19437: CALL_OW 7
// battle = false ;
19441: LD_ADDR_EXP 75
19445: PUSH
19446: LD_INT 0
19448: ST_TO_ADDR
// end_of_m = 1 ;
19449: LD_ADDR_LOC 5
19453: PUSH
19454: LD_INT 1
19456: ST_TO_ADDR
// end ;
19457: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_or , [ f_side , americans ] , [ f_side , americans1 ] ] , [ f_alive ] , f_not , [ f_ok ] ] ) do
19458: LD_INT 2
19460: PUSH
19461: LD_INT 22
19463: PUSH
19464: LD_EXP 3
19468: PUSH
19469: EMPTY
19470: LIST
19471: LIST
19472: PUSH
19473: LD_INT 22
19475: PUSH
19476: LD_EXP 4
19480: PUSH
19481: EMPTY
19482: LIST
19483: LIST
19484: PUSH
19485: EMPTY
19486: LIST
19487: LIST
19488: LIST
19489: PUSH
19490: LD_INT 51
19492: PUSH
19493: EMPTY
19494: LIST
19495: PUSH
19496: LD_INT 3
19498: PUSH
19499: LD_INT 50
19501: PUSH
19502: EMPTY
19503: LIST
19504: PUSH
19505: EMPTY
19506: LIST
19507: LIST
19508: LIST
19509: LIST
19510: PPUSH
19511: CALL_OW 69
19515: IFFALSE 19527
19517: GO 19519
19519: DISABLE
// begin Hint ( RedArentDead ) ;
19520: LD_STRING RedArentDead
19522: PPUSH
19523: CALL_OW 339
// end ;
19527: END
// every 0 0$2 trigger IsInUnit ( John ) do
19528: LD_EXP 7
19532: PPUSH
19533: CALL_OW 310
19537: IFFALSE 19573
19539: GO 19541
19541: DISABLE
// begin if GetType ( IsInUnit ( John ) ) = unit_vehicle then
19542: LD_EXP 7
19546: PPUSH
19547: CALL_OW 310
19551: PPUSH
19552: CALL_OW 247
19556: PUSH
19557: LD_INT 2
19559: EQUAL
19560: IFFALSE 19572
// JMMInVehicle := true else
19562: LD_ADDR_EXP 118
19566: PUSH
19567: LD_INT 1
19569: ST_TO_ADDR
19570: GO 19573
// enable ;
19572: ENABLE
// end ;
19573: END
// every 0 0$2 + 0 0$1 trigger IsInUnit ( Cyrus ) do
19574: LD_EXP 8
19578: PPUSH
19579: CALL_OW 310
19583: IFFALSE 19619
19585: GO 19587
19587: DISABLE
// begin if GetType ( IsInUnit ( Cyrus ) ) = unit_vehicle then
19588: LD_EXP 8
19592: PPUSH
19593: CALL_OW 310
19597: PPUSH
19598: CALL_OW 247
19602: PUSH
19603: LD_INT 2
19605: EQUAL
19606: IFFALSE 19618
// CyrusInVehicle := true else
19608: LD_ADDR_EXP 119
19612: PUSH
19613: LD_INT 1
19615: ST_TO_ADDR
19616: GO 19619
// enable ;
19618: ENABLE
// end ;
19619: END
// every 0 0$1 trigger IsAt ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) marked 13 do
19620: LD_EXP 65
19624: PPUSH
19625: LD_LOC 10
19629: PUSH
19630: LD_INT 1
19632: ARRAY
19633: PPUSH
19634: LD_LOC 10
19638: PUSH
19639: LD_INT 2
19641: ARRAY
19642: PPUSH
19643: CALL_OW 307
19647: IFFALSE 19685
19649: GO 19651
19651: DISABLE
// begin RemoveUnit ( Mikhail ) ;
19652: LD_EXP 65
19656: PPUSH
19657: CALL_OW 64
// Mikhails_outcome = - 2 ;
19661: LD_ADDR_LOC 3
19665: PUSH
19666: LD_INT 2
19668: NEG
19669: ST_TO_ADDR
// Mikhail_status = 4 ;
19670: LD_ADDR_LOC 4
19674: PUSH
19675: LD_INT 4
19677: ST_TO_ADDR
// ChangeMissionObjectives ( M3a ) ;
19678: LD_STRING M3a
19680: PPUSH
19681: CALL_OW 337
// end ;
19685: END
// every 0 0$3 trigger IsDead ( Mikhail ) marked 13 do
19686: LD_EXP 65
19690: PPUSH
19691: CALL_OW 301
19695: IFFALSE 19723
19697: GO 19699
19699: DISABLE
// begin Mikhails_outcome = 2 ;
19700: LD_ADDR_LOC 3
19704: PUSH
19705: LD_INT 2
19707: ST_TO_ADDR
// Mikhail_status = 3 ;
19708: LD_ADDR_LOC 4
19712: PUSH
19713: LD_INT 3
19715: ST_TO_ADDR
// ChangeMissionObjectives ( M3a ) ;
19716: LD_STRING M3a
19718: PPUSH
19719: CALL_OW 337
// end ;
19723: END
// every 0 0$10 marked 20 do var my_depots , my_eng ;
19724: GO 19726
19726: DISABLE
19727: LD_INT 0
19729: PPUSH
19730: PPUSH
// begin my_depots = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_btype , b_depot ] , [ f_side , americans ] ] ) ;
19731: LD_ADDR_VAR 0 1
19735: PUSH
19736: LD_INT 21
19738: PUSH
19739: LD_INT 3
19741: PUSH
19742: EMPTY
19743: LIST
19744: LIST
19745: PUSH
19746: LD_INT 30
19748: PUSH
19749: LD_INT 0
19751: PUSH
19752: EMPTY
19753: LIST
19754: LIST
19755: PUSH
19756: LD_INT 22
19758: PUSH
19759: LD_EXP 3
19763: PUSH
19764: EMPTY
19765: LIST
19766: LIST
19767: PUSH
19768: EMPTY
19769: LIST
19770: LIST
19771: LIST
19772: PPUSH
19773: CALL_OW 69
19777: ST_TO_ADDR
// my_eng = FilterAllUnits ( [ [ f_type , unit_human ] , [ f_class , class_engineer ] , [ f_side , americans ] ] ) ;
19778: LD_ADDR_VAR 0 2
19782: PUSH
19783: LD_INT 21
19785: PUSH
19786: LD_INT 1
19788: PUSH
19789: EMPTY
19790: LIST
19791: LIST
19792: PUSH
19793: LD_INT 25
19795: PUSH
19796: LD_INT 2
19798: PUSH
19799: EMPTY
19800: LIST
19801: LIST
19802: PUSH
19803: LD_INT 22
19805: PUSH
19806: LD_EXP 3
19810: PUSH
19811: EMPTY
19812: LIST
19813: LIST
19814: PUSH
19815: EMPTY
19816: LIST
19817: LIST
19818: LIST
19819: PPUSH
19820: CALL_OW 69
19824: ST_TO_ADDR
// if my_depots = 0 and my_eng = 0 then
19825: LD_VAR 0 1
19829: PUSH
19830: LD_INT 0
19832: EQUAL
19833: PUSH
19834: LD_VAR 0 2
19838: PUSH
19839: LD_INT 0
19841: EQUAL
19842: AND
19843: IFFALSE 19858
// begin YouLost ( Engineer ) ;
19845: LD_STRING Engineer
19847: PPUSH
19848: CALL_OW 104
// ExitGame ;
19852: CALL_OW 341
// end else
19856: GO 19859
// enable ;
19858: ENABLE
// end ;
19859: PPOPN 2
19861: END
// every 0 0$5 trigger IsDead ( John ) do
19862: LD_EXP 7
19866: PPUSH
19867: CALL_OW 301
19871: IFFALSE 19887
19873: GO 19875
19875: DISABLE
// begin YouLost ( JMM ) ;
19876: LD_STRING JMM
19878: PPUSH
19879: CALL_OW 104
// ExitGame ;
19883: CALL_OW 341
// end ;
19887: END
// every 0 0$5 trigger IsDead ( dep1 ) or IsDead ( dep2 ) do
19888: LD_INT 1
19890: PPUSH
19891: CALL_OW 301
19895: PUSH
19896: LD_INT 10
19898: PPUSH
19899: CALL_OW 301
19903: OR
19904: IFFALSE 19916
19906: GO 19908
19908: DISABLE
// begin YouLost ( DepotDestroyed ) ;
19909: LD_STRING DepotDestroyed
19911: PPUSH
19912: CALL_OW 104
// end ;
19916: END
// every 0 0$2 trigger GetSide ( dep1 ) = russians marked 17 do
19917: LD_INT 1
19919: PPUSH
19920: CALL_OW 255
19924: PUSH
19925: LD_EXP 5
19929: EQUAL
19930: IFFALSE 19967
19932: GO 19934
19934: DISABLE
// begin wait ( 0 0$30 ) ;
19935: LD_INT 1050
19937: PPUSH
19938: CALL_OW 67
// if GetSide ( dep1 ) = russians then
19942: LD_INT 1
19944: PPUSH
19945: CALL_OW 255
19949: PUSH
19950: LD_EXP 5
19954: EQUAL
19955: IFFALSE 19966
// YouLost ( DepotCaptured ) else
19957: LD_STRING DepotCaptured
19959: PPUSH
19960: CALL_OW 104
19964: GO 19967
// enable ;
19966: ENABLE
// end ;
19967: END
// every 0 0$1 trigger end_of_m do var m , medal1 , medal2 , medal3 ;
19968: LD_LOC 5
19972: IFFALSE 20545
19974: GO 19976
19976: DISABLE
19977: LD_INT 0
19979: PPUSH
19980: PPUSH
19981: PPUSH
19982: PPUSH
// begin medal1 := false ;
19983: LD_ADDR_VAR 0 2
19987: PUSH
19988: LD_INT 0
19990: ST_TO_ADDR
// medal2 := false ;
19991: LD_ADDR_VAR 0 3
19995: PUSH
19996: LD_INT 0
19998: ST_TO_ADDR
// medal3 := false ;
19999: LD_ADDR_VAR 0 4
20003: PUSH
20004: LD_INT 0
20006: ST_TO_ADDR
// if GetSide ( Mikhail ) = americans then
20007: LD_EXP 65
20011: PPUSH
20012: CALL_OW 255
20016: PUSH
20017: LD_EXP 3
20021: EQUAL
20022: IFFALSE 20038
// SetSide ( Mikhail , russians1 ) ;
20024: LD_EXP 65
20028: PPUSH
20029: LD_EXP 6
20033: PPUSH
20034: CALL_OW 235
// if lost_units < 3 then
20038: LD_EXP 90
20042: PUSH
20043: LD_INT 3
20045: LESS
20046: IFFALSE 20066
// begin m = 1 ;
20048: LD_ADDR_VAR 0 1
20052: PUSH
20053: LD_INT 1
20055: ST_TO_ADDR
// medal1 := true ;
20056: LD_ADDR_VAR 0 2
20060: PUSH
20061: LD_INT 1
20063: ST_TO_ADDR
// end else
20064: GO 20075
// m := - 1 ;
20066: LD_ADDR_VAR 0 1
20070: PUSH
20071: LD_INT 1
20073: NEG
20074: ST_TO_ADDR
// if Mikhails_outcome then
20075: LD_LOC 3
20079: IFFALSE 20089
// medal2 := true ;
20081: LD_ADDR_VAR 0 3
20085: PUSH
20086: LD_INT 1
20088: ST_TO_ADDR
// if Mikhails_outcome = 1 and GetLives ( Mikhail ) = 0 then
20089: LD_LOC 3
20093: PUSH
20094: LD_INT 1
20096: EQUAL
20097: PUSH
20098: LD_EXP 65
20102: PPUSH
20103: CALL_OW 256
20107: PUSH
20108: LD_INT 0
20110: EQUAL
20111: AND
20112: IFFALSE 20123
// Mikhails_outcome = - 1 ;
20114: LD_ADDR_LOC 3
20118: PUSH
20119: LD_INT 1
20121: NEG
20122: ST_TO_ADDR
// if GetResourceType ( dep1 , mat_cans ) >= 150 then
20123: LD_INT 1
20125: PPUSH
20126: LD_INT 1
20128: PPUSH
20129: CALL_OW 275
20133: PUSH
20134: LD_INT 150
20136: GREATEREQUAL
20137: IFFALSE 20159
// begin AddMedal ( Cans , 1 ) ;
20139: LD_STRING Cans
20141: PPUSH
20142: LD_INT 1
20144: PPUSH
20145: CALL_OW 101
// medal3 := true ;
20149: LD_ADDR_VAR 0 4
20153: PUSH
20154: LD_INT 1
20156: ST_TO_ADDR
// end else
20157: GO 20170
// AddMedal ( Cans , - 1 ) ;
20159: LD_STRING Cans
20161: PPUSH
20162: LD_INT 1
20164: NEG
20165: PPUSH
20166: CALL_OW 101
// AddMedal ( Deaths , m ) ;
20170: LD_STRING Deaths
20172: PPUSH
20173: LD_VAR 0 1
20177: PPUSH
20178: CALL_OW 101
// AddMedal ( Prisoner , Mikhails_outcome ) ;
20182: LD_STRING Prisoner
20184: PPUSH
20185: LD_LOC 3
20189: PPUSH
20190: CALL_OW 101
// SA_EndMission ( 1 , 2 , medal1 , medal2 , medal3 ) ;
20194: LD_INT 1
20196: PPUSH
20197: LD_INT 2
20199: PPUSH
20200: LD_VAR 0 2
20204: PPUSH
20205: LD_VAR 0 3
20209: PPUSH
20210: LD_VAR 0 4
20214: PPUSH
20215: CALL 23210 0 5
// GiveMedals ( MAIN ) ;
20219: LD_STRING MAIN
20221: PPUSH
20222: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_alive ] , [ f_side , americans ] , [ f_type , unit_human ] ] ) ) ;
20226: LD_INT 51
20228: PUSH
20229: EMPTY
20230: LIST
20231: PUSH
20232: LD_INT 22
20234: PUSH
20235: LD_EXP 3
20239: PUSH
20240: EMPTY
20241: LIST
20242: LIST
20243: PUSH
20244: LD_INT 21
20246: PUSH
20247: LD_INT 1
20249: PUSH
20250: EMPTY
20251: LIST
20252: LIST
20253: PUSH
20254: EMPTY
20255: LIST
20256: LIST
20257: LIST
20258: PPUSH
20259: CALL_OW 69
20263: PPUSH
20264: CALL_OW 43
// SaveCharacters ( John , JMM ) ;
20268: LD_EXP 7
20272: PPUSH
20273: LD_STRING JMM
20275: PPUSH
20276: CALL_OW 38
// SaveCharacters ( Bobby , Bobby ) ;
20280: LD_EXP 9
20284: PPUSH
20285: LD_STRING Bobby
20287: PPUSH
20288: CALL_OW 38
// SaveCharacters ( Cyrus , Cyrus ) ;
20292: LD_EXP 8
20296: PPUSH
20297: LD_STRING Cyrus
20299: PPUSH
20300: CALL_OW 38
// SaveCharacters ( Lisa , Lisa ) ;
20304: LD_EXP 12
20308: PPUSH
20309: LD_STRING Lisa
20311: PPUSH
20312: CALL_OW 38
// if GetSide ( Khatam ) <> americans then
20316: LD_EXP 10
20320: PPUSH
20321: CALL_OW 255
20325: PUSH
20326: LD_EXP 3
20330: NONEQUAL
20331: IFFALSE 20345
// SetLives ( Khatam , 0 ) ;
20333: LD_EXP 10
20337: PPUSH
20338: LD_INT 0
20340: PPUSH
20341: CALL_OW 234
// SaveCharacters ( Khatam , Khatam ) ;
20345: LD_EXP 10
20349: PPUSH
20350: LD_STRING Khatam
20352: PPUSH
20353: CALL_OW 38
// if not ( Mikhail_status in [ 1 , 4 , 5 ] ) then
20357: LD_LOC 4
20361: PUSH
20362: LD_INT 1
20364: PUSH
20365: LD_INT 4
20367: PUSH
20368: LD_INT 5
20370: PUSH
20371: EMPTY
20372: LIST
20373: LIST
20374: LIST
20375: IN
20376: NOT
20377: IFFALSE 20391
// SetLives ( Mikhail , 0 ) ;
20379: LD_EXP 65
20383: PPUSH
20384: LD_INT 0
20386: PPUSH
20387: CALL_OW 234
// SaveCharacters ( Mikhail , Mikhail ) ;
20391: LD_EXP 65
20395: PPUSH
20396: LD_STRING Mikhail
20398: PPUSH
20399: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_ok ] , [ f_side , americans ] , [ f_type , unit_human ] ] ) diff [ John , Bobby , Cyrus , Lisa , Khatam , Mikhail ] , other_survivors ) ;
20403: LD_INT 50
20405: PUSH
20406: EMPTY
20407: LIST
20408: PUSH
20409: LD_INT 22
20411: PUSH
20412: LD_EXP 3
20416: PUSH
20417: EMPTY
20418: LIST
20419: LIST
20420: PUSH
20421: LD_INT 21
20423: PUSH
20424: LD_INT 1
20426: PUSH
20427: EMPTY
20428: LIST
20429: LIST
20430: PUSH
20431: EMPTY
20432: LIST
20433: LIST
20434: LIST
20435: PPUSH
20436: CALL_OW 69
20440: PUSH
20441: LD_EXP 7
20445: PUSH
20446: LD_EXP 9
20450: PUSH
20451: LD_EXP 8
20455: PUSH
20456: LD_EXP 12
20460: PUSH
20461: LD_EXP 10
20465: PUSH
20466: LD_EXP 65
20470: PUSH
20471: EMPTY
20472: LIST
20473: LIST
20474: LIST
20475: LIST
20476: LIST
20477: LIST
20478: DIFF
20479: PPUSH
20480: LD_STRING other_survivors
20482: PPUSH
20483: CALL_OW 38
// SaveVariable ( GetResourceType ( dep1 , mat_cans ) , us2cans ) ;
20487: LD_INT 1
20489: PPUSH
20490: LD_INT 1
20492: PPUSH
20493: CALL_OW 275
20497: PPUSH
20498: LD_STRING us2cans
20500: PPUSH
20501: CALL_OW 39
// SaveVariable ( JMMInVehicle , us2JMMInVehicle ) ;
20505: LD_EXP 118
20509: PPUSH
20510: LD_STRING us2JMMInVehicle
20512: PPUSH
20513: CALL_OW 39
// SaveVariable ( CyrusInVehicle , us2CyrusInVehicle ) ;
20517: LD_EXP 119
20521: PPUSH
20522: LD_STRING us2CyrusInVehicle
20524: PPUSH
20525: CALL_OW 39
// SaveVariable ( Mikhail_status , us2mikhail_state ) ;
20529: LD_LOC 4
20533: PPUSH
20534: LD_STRING us2mikhail_state
20536: PPUSH
20537: CALL_OW 39
// YouWin ;
20541: CALL_OW 103
// end ;
20545: PPOPN 4
20547: END
// on DialogueSkipped ( i ) do begin Skip = true ;
20548: LD_ADDR_EXP 102
20552: PUSH
20553: LD_INT 1
20555: ST_TO_ADDR
// end ;
20556: PPOPN 1
20558: END
// on LeaveBuilding ( building , Un ) do var answer ;
20559: LD_INT 0
20561: PPUSH
// begin if ( building = dep1 ) and ( Un = Mikhail ) and Mikhails_Escape_Disabled then
20562: LD_VAR 0 1
20566: PUSH
20567: LD_INT 1
20569: EQUAL
20570: PUSH
20571: LD_VAR 0 2
20575: PUSH
20576: LD_EXP 65
20580: EQUAL
20581: AND
20582: PUSH
20583: LD_EXP 91
20587: AND
20588: IFFALSE 20962
// begin SetSide ( Mikhail , russians1 ) ;
20590: LD_EXP 65
20594: PPUSH
20595: LD_EXP 6
20599: PPUSH
20600: CALL_OW 235
// Mikhail_in_depot = false ;
20604: LD_ADDR_EXP 39
20608: PUSH
20609: LD_INT 0
20611: ST_TO_ADDR
// answer = Query ( QMikh2 ) ;
20612: LD_ADDR_VAR 0 3
20616: PUSH
20617: LD_STRING QMikh2
20619: PPUSH
20620: CALL_OW 97
20624: ST_TO_ADDR
// case answer of 1 :
20625: LD_VAR 0 3
20629: PUSH
20630: LD_INT 1
20632: DOUBLE
20633: EQUAL
20634: IFTRUE 20638
20636: GO 20772
20638: POP
// begin Mikhails_Escape_Disabled = false ;
20639: LD_ADDR_EXP 91
20643: PUSH
20644: LD_INT 0
20646: ST_TO_ADDR
// target_of_escape = [ 4 , 6 ] ;
20647: LD_ADDR_LOC 10
20651: PUSH
20652: LD_INT 4
20654: PUSH
20655: LD_INT 6
20657: PUSH
20658: EMPTY
20659: LIST
20660: LIST
20661: ST_TO_ADDR
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
20662: LD_EXP 65
20666: PPUSH
20667: LD_INT 52
20669: PPUSH
20670: LD_INT 13
20672: PPUSH
20673: LD_INT 0
20675: PPUSH
20676: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
20680: LD_ADDR_EXP 50
20684: PUSH
20685: LD_EXP 65
20689: PPUSH
20690: CALL_OW 256
20694: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
20695: LD_EXP 45
20699: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
20700: LD_EXP 3
20704: PPUSH
20705: LD_EXP 6
20709: PPUSH
20710: LD_INT 2
20712: PPUSH
20713: LD_INT 1
20715: PPUSH
20716: CALL_OW 80
// SetSide ( Mikhail , russians1 ) ;
20720: LD_EXP 65
20724: PPUSH
20725: LD_EXP 6
20729: PPUSH
20730: CALL_OW 235
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
20734: LD_EXP 65
20738: PPUSH
20739: LD_LOC 10
20743: PUSH
20744: LD_INT 1
20746: ARRAY
20747: PPUSH
20748: LD_LOC 10
20752: PUSH
20753: LD_INT 2
20755: ARRAY
20756: PPUSH
20757: CALL_OW 171
// AddComHold ( Mikhail ) ;
20761: LD_EXP 65
20765: PPUSH
20766: CALL_OW 200
// end ; 2 :
20770: GO 20962
20772: LD_INT 2
20774: DOUBLE
20775: EQUAL
20776: IFTRUE 20780
20778: GO 20904
20780: POP
// begin disable ( great_escape ) ;
20781: LD_EXP 40
20785: DISABLE_MARKED
// wait ( 0 0$2 ) ;
20786: LD_INT 70
20788: PPUSH
20789: CALL_OW 67
// repeat ComMoveXY ( Mikhail , 52 , 13 ) ;
20793: LD_EXP 65
20797: PPUSH
20798: LD_INT 52
20800: PPUSH
20801: LD_INT 13
20803: PPUSH
20804: CALL_OW 111
// AddComHold ( Mikhail ) ;
20808: LD_EXP 65
20812: PPUSH
20813: CALL_OW 200
// wait ( 0 0$0.5 ) ;
20817: LD_INT 18
20819: PPUSH
20820: CALL_OW 67
// until IsAt ( Mikhail , 52 , 13 ) ;
20824: LD_EXP 65
20828: PPUSH
20829: LD_INT 52
20831: PPUSH
20832: LD_INT 13
20834: PPUSH
20835: CALL_OW 307
20839: IFFALSE 20793
// SetSide ( Mikhail , americans ) ;
20841: LD_EXP 65
20845: PPUSH
20846: LD_EXP 3
20850: PPUSH
20851: CALL_OW 235
// repeat ComEnterUnit ( Mikhail , dep1 ) ;
20855: LD_EXP 65
20859: PPUSH
20860: LD_INT 1
20862: PPUSH
20863: CALL_OW 120
// Wait ( 1 ) ;
20867: LD_INT 1
20869: PPUSH
20870: CALL_OW 67
// until IsInUnit ( Mikhail ) = dep1 ;
20874: LD_EXP 65
20878: PPUSH
20879: CALL_OW 310
20883: PUSH
20884: LD_INT 1
20886: EQUAL
20887: IFFALSE 20855
// Mikhail_in_depot = true ;
20889: LD_ADDR_EXP 39
20893: PUSH
20894: LD_INT 1
20896: ST_TO_ADDR
// enable ( great_escape ) ;
20897: LD_EXP 40
20901: ENABLE_MARKED
// end ; 3 :
20902: GO 20962
20904: LD_INT 3
20906: DOUBLE
20907: EQUAL
20908: IFTRUE 20912
20910: GO 20961
20912: POP
// begin ComMoveXY ( Mikhail , 4 , 6 ) ;
20913: LD_EXP 65
20917: PPUSH
20918: LD_INT 4
20920: PPUSH
20921: LD_INT 6
20923: PPUSH
20924: CALL_OW 111
// AddComHold ( Mikhail ) ;
20928: LD_EXP 65
20932: PPUSH
20933: CALL_OW 200
// enable ( remove_mikhail ) ;
20937: LD_EXP 43
20941: ENABLE_MARKED
// Mikhails_outcome = - 1 ;
20942: LD_ADDR_LOC 3
20946: PUSH
20947: LD_INT 1
20949: NEG
20950: ST_TO_ADDR
// Mikhail_status := 1 ;
20951: LD_ADDR_LOC 4
20955: PUSH
20956: LD_INT 1
20958: ST_TO_ADDR
// end ; end ;
20959: GO 20962
20961: POP
// end ; end ;
20962: PPOPN 3
20964: END
// on BuildingCaptured ( build , origside , eng ) do begin if ( build = lab1 ) and ( origside = russians ) then
20965: LD_VAR 0 1
20969: PUSH
20970: LD_INT 23
20972: EQUAL
20973: PUSH
20974: LD_VAR 0 2
20978: PUSH
20979: LD_EXP 5
20983: EQUAL
20984: AND
20985: IFFALSE 20995
// begin Hint ( Lab ) ;
20987: LD_STRING Lab
20989: PPUSH
20990: CALL_OW 339
// disable ;
20994: DISABLE
// end ; end ;
20995: PPOPN 3
20997: END
// on HumanDestroyed ( un , side , nation , x , y , direction , sex , class ) do begin if side = americans then
20998: LD_VAR 0 2
21002: PUSH
21003: LD_EXP 3
21007: EQUAL
21008: IFFALSE 21024
// lost_units = lost_units + 1 ;
21010: LD_ADDR_EXP 90
21014: PUSH
21015: LD_EXP 90
21019: PUSH
21020: LD_INT 1
21022: PLUS
21023: ST_TO_ADDR
// end ; end_of_file
21024: PPOPN 8
21026: END
// export count5 ; export Brestworks ; export RusN_States ; export RusN ; export function InitNorthBase ; var Un ; begin
21027: LD_INT 0
21029: PPUSH
21030: PPUSH
// RusN_States = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
21031: LD_ADDR_EXP 122
21035: PUSH
21036: LD_INT 0
21038: PUSH
21039: LD_INT 0
21041: PUSH
21042: LD_INT 0
21044: PUSH
21045: LD_INT 0
21047: PUSH
21048: LD_INT 0
21050: PUSH
21051: LD_INT 0
21053: PUSH
21054: LD_INT 0
21056: PUSH
21057: LD_INT 0
21059: PUSH
21060: LD_INT 0
21062: PUSH
21063: LD_INT 0
21065: PUSH
21066: LD_INT 0
21068: PUSH
21069: EMPTY
21070: LIST
21071: LIST
21072: LIST
21073: LIST
21074: LIST
21075: LIST
21076: LIST
21077: LIST
21078: LIST
21079: LIST
21080: LIST
21081: ST_TO_ADDR
// RusN = [ RusNSo1 , RusNSo2 , RusNSo3 , RusNSo4 , guard1 , guard2 , RusNE1 , RusNSc1 , RusNSo5 , RusNSo6 ] ;
21082: LD_ADDR_EXP 123
21086: PUSH
21087: LD_INT 3
21089: PUSH
21090: LD_INT 14
21092: PUSH
21093: LD_INT 27
21095: PUSH
21096: LD_INT 28
21098: PUSH
21099: LD_INT 11
21101: PUSH
21102: LD_INT 12
21104: PUSH
21105: LD_INT 26
21107: PUSH
21108: LD_INT 25
21110: PUSH
21111: LD_INT 24
21113: PUSH
21114: LD_INT 31
21116: PUSH
21117: EMPTY
21118: LIST
21119: LIST
21120: LIST
21121: LIST
21122: LIST
21123: LIST
21124: LIST
21125: LIST
21126: LIST
21127: LIST
21128: ST_TO_ADDR
// count5 = 0 ;
21129: LD_ADDR_EXP 120
21133: PUSH
21134: LD_INT 0
21136: ST_TO_ADDR
// Brestworks = [ Brw1 , Brw2 ] ;
21137: LD_ADDR_EXP 121
21141: PUSH
21142: LD_INT 29
21144: PUSH
21145: LD_INT 9
21147: PUSH
21148: EMPTY
21149: LIST
21150: LIST
21151: ST_TO_ADDR
// for Un in RusN do
21152: LD_ADDR_VAR 0 2
21156: PUSH
21157: LD_EXP 123
21161: PUSH
21162: FOR_IN
21163: IFFALSE 21176
// ComRemember ( Un ) ;
21165: LD_VAR 0 2
21169: PPUSH
21170: CALL_OW 143
21174: GO 21162
21176: POP
21177: POP
// if not ( IsDead ( Brw1 ) ) then
21178: LD_INT 29
21180: PPUSH
21181: CALL_OW 301
21185: NOT
21186: IFFALSE 21198
// ComEnterUnit ( Guard1 , Brw1 ) ;
21188: LD_INT 11
21190: PPUSH
21191: LD_INT 29
21193: PPUSH
21194: CALL_OW 120
// if not ( IsDead ( Brw2 ) ) then
21198: LD_INT 9
21200: PPUSH
21201: CALL_OW 301
21205: NOT
21206: IFFALSE 21218
// ComEnterUnit ( Guard2 , Brw2 ) ;
21208: LD_INT 12
21210: PPUSH
21211: LD_INT 9
21213: PPUSH
21214: CALL_OW 120
// if not ( IsDead ( Brw3 ) ) then
21218: LD_INT 30
21220: PPUSH
21221: CALL_OW 301
21225: NOT
21226: IFFALSE 21238
// ComEnterUnit ( Guard3 , Brw3 ) ;
21228: LD_INT 7
21230: PPUSH
21231: LD_INT 30
21233: PPUSH
21234: CALL_OW 120
// end ;
21238: LD_VAR 0 1
21242: RET
// export function WaitJob ( list_of_units , reaction ) ; var i , busy ; begin
21243: LD_INT 0
21245: PPUSH
21246: PPUSH
21247: PPUSH
// wait ( 2 ) ;
21248: LD_INT 2
21250: PPUSH
21251: CALL_OW 67
// repeat busy = false ;
21255: LD_ADDR_VAR 0 5
21259: PUSH
21260: LD_INT 0
21262: ST_TO_ADDR
// for i in list_of_units do
21263: LD_ADDR_VAR 0 4
21267: PUSH
21268: LD_VAR 0 1
21272: PUSH
21273: FOR_IN
21274: IFFALSE 21308
// if IsOk ( i ) then
21276: LD_VAR 0 4
21280: PPUSH
21281: CALL_OW 302
21285: IFFALSE 21306
// if IsBusy ( i ) then
21287: LD_VAR 0 4
21291: PPUSH
21292: CALL_OW 315
21296: IFFALSE 21306
// busy = true ;
21298: LD_ADDR_VAR 0 5
21302: PUSH
21303: LD_INT 1
21305: ST_TO_ADDR
21306: GO 21273
21308: POP
21309: POP
// if busy then
21310: LD_VAR 0 5
21314: IFFALSE 21329
// wait ( 0 0$1 * reaction ) ;
21316: LD_INT 35
21318: PUSH
21319: LD_VAR 0 2
21323: MUL
21324: PPUSH
21325: CALL_OW 67
// until not ( busy ) ;
21329: LD_VAR 0 5
21333: NOT
21334: IFFALSE 21255
// end ;
21336: LD_VAR 0 3
21340: RET
// function WaitNearUnit ( target_unit , dist , list_of_units , reaction ) ; var i , are_near ; begin
21341: LD_INT 0
21343: PPUSH
21344: PPUSH
21345: PPUSH
// wait ( 2 ) ;
21346: LD_INT 2
21348: PPUSH
21349: CALL_OW 67
// repeat are_near = true ;
21353: LD_ADDR_VAR 0 7
21357: PUSH
21358: LD_INT 1
21360: ST_TO_ADDR
// for i in list_of_units do
21361: LD_ADDR_VAR 0 6
21365: PUSH
21366: LD_VAR 0 3
21370: PUSH
21371: FOR_IN
21372: IFFALSE 21428
// if IsOk ( i ) and IsOk ( target_unit ) then
21374: LD_VAR 0 6
21378: PPUSH
21379: CALL_OW 302
21383: PUSH
21384: LD_VAR 0 1
21388: PPUSH
21389: CALL_OW 302
21393: AND
21394: IFFALSE 21426
// if GetDistUnits ( target_unit , i ) > dist then
21396: LD_VAR 0 1
21400: PPUSH
21401: LD_VAR 0 6
21405: PPUSH
21406: CALL_OW 296
21410: PUSH
21411: LD_VAR 0 2
21415: GREATER
21416: IFFALSE 21426
// are_near = false ;
21418: LD_ADDR_VAR 0 7
21422: PUSH
21423: LD_INT 0
21425: ST_TO_ADDR
21426: GO 21371
21428: POP
21429: POP
// if not ( are_near ) then
21430: LD_VAR 0 7
21434: NOT
21435: IFFALSE 21450
// wait ( 0 0$1 * reaction ) ;
21437: LD_INT 35
21439: PUSH
21440: LD_VAR 0 4
21444: MUL
21445: PPUSH
21446: CALL_OW 67
// until are_near ;
21450: LD_VAR 0 7
21454: IFFALSE 21353
// end ;
21456: LD_VAR 0 5
21460: RET
// every 0 0$1 do var Un , hlp ;
21461: GO 21463
21463: DISABLE
21464: LD_INT 0
21466: PPUSH
21467: PPUSH
// begin hlp = UnitFilter ( RusN , [ [ f_alive ] , [ f_placed ] ] ) ;
21468: LD_ADDR_VAR 0 2
21472: PUSH
21473: LD_EXP 123
21477: PPUSH
21478: LD_INT 51
21480: PUSH
21481: EMPTY
21482: LIST
21483: PUSH
21484: LD_INT 52
21486: PUSH
21487: EMPTY
21488: LIST
21489: PUSH
21490: EMPTY
21491: LIST
21492: LIST
21493: PPUSH
21494: CALL_OW 72
21498: ST_TO_ADDR
// RusN = hlp ;
21499: LD_ADDR_EXP 123
21503: PUSH
21504: LD_VAR 0 2
21508: ST_TO_ADDR
// for Un in RusN do
21509: LD_ADDR_VAR 0 1
21513: PUSH
21514: LD_EXP 123
21518: PUSH
21519: FOR_IN
21520: IFFALSE 21553
// if ( GetDistUnits ( Un , Dep1 ) ) > Attack_Distance then
21522: LD_VAR 0 1
21526: PPUSH
21527: LD_INT 1
21529: PPUSH
21530: CALL_OW 296
21534: PUSH
21535: LD_EXP 85
21539: GREATER
21540: IFFALSE 21551
// ComReturn ( Un ) ;
21542: LD_VAR 0 1
21546: PPUSH
21547: CALL_OW 144
21551: GO 21519
21553: POP
21554: POP
// if RusN <> 0 then
21555: LD_EXP 123
21559: PUSH
21560: LD_INT 0
21562: NONEQUAL
21563: IFFALSE 21566
// enable ;
21565: ENABLE
// end ;
21566: PPOPN 2
21568: END
// function Go_to_physician ( ill_unit ) ; var start_posX , start_posY ; begin
21569: LD_INT 0
21571: PPUSH
21572: PPUSH
21573: PPUSH
// if IsOk ( RusNSc1 ) and IsLive ( ill_unit ) then
21574: LD_INT 25
21576: PPUSH
21577: CALL_OW 302
21581: PUSH
21582: LD_VAR 0 1
21586: PPUSH
21587: CALL_OW 300
21591: AND
21592: IFFALSE 21782
// begin start_posX = GetX ( ill_unit ) ;
21594: LD_ADDR_VAR 0 3
21598: PUSH
21599: LD_VAR 0 1
21603: PPUSH
21604: CALL_OW 250
21608: ST_TO_ADDR
// start_posY = GetY ( ill_unit ) ;
21609: LD_ADDR_VAR 0 4
21613: PUSH
21614: LD_VAR 0 1
21618: PPUSH
21619: CALL_OW 251
21623: ST_TO_ADDR
// ComMoveXY ( ill_unit , 54 , 16 ) ;
21624: LD_VAR 0 1
21628: PPUSH
21629: LD_INT 54
21631: PPUSH
21632: LD_INT 16
21634: PPUSH
21635: CALL_OW 111
// AddComMoveUnit ( ill_unit , RusNSc1 ) ;
21639: LD_VAR 0 1
21643: PPUSH
21644: LD_INT 25
21646: PPUSH
21647: CALL_OW 172
// WaitNearUnit ( RusNSc1 , 2 , [ ill_unit ] , 0.5 ) ;
21651: LD_INT 25
21653: PPUSH
21654: LD_INT 2
21656: PPUSH
21657: LD_VAR 0 1
21661: PUSH
21662: EMPTY
21663: LIST
21664: PPUSH
21665: LD_REAL  5.00000000000000E-0001
21668: PPUSH
21669: CALL 21341 0 4
// while ( RusN_States [ 9 ] <> 0 ) do
21673: LD_EXP 122
21677: PUSH
21678: LD_INT 9
21680: ARRAY
21681: PUSH
21682: LD_INT 0
21684: NONEQUAL
21685: IFFALSE 21696
// wait ( 1 ) ;
21687: LD_INT 1
21689: PPUSH
21690: CALL_OW 67
21694: GO 21673
// Replace ( RusN_States , 9 , 1 ) ;
21696: LD_EXP 122
21700: PPUSH
21701: LD_INT 9
21703: PPUSH
21704: LD_INT 1
21706: PPUSH
21707: CALL_OW 1
// ComHeal ( RusNSc1 , ill_unit ) ;
21711: LD_INT 25
21713: PPUSH
21714: LD_VAR 0 1
21718: PPUSH
21719: CALL_OW 128
// WaitJob ( RusNSc1 , 0.5 ) ;
21723: LD_INT 25
21725: PPUSH
21726: LD_REAL  5.00000000000000E-0001
21729: PPUSH
21730: CALL 21243 0 2
// AddComReturn ( RusNSc1 ) ;
21734: LD_INT 25
21736: PPUSH
21737: CALL_OW 204
// AddComHold ( RusNSc1 ) ;
21741: LD_INT 25
21743: PPUSH
21744: CALL_OW 200
// Replace ( RusN_States , 9 , 0 ) ;
21748: LD_EXP 122
21752: PPUSH
21753: LD_INT 9
21755: PPUSH
21756: LD_INT 0
21758: PPUSH
21759: CALL_OW 1
// AddComMoveXY ( ill_unit , start_posX , start_posY ) ;
21763: LD_VAR 0 1
21767: PPUSH
21768: LD_VAR 0 3
21772: PPUSH
21773: LD_VAR 0 4
21777: PPUSH
21778: CALL_OW 171
// end ; end ;
21782: LD_VAR 0 2
21786: RET
// function Healing_Person ( person , lives ) ; begin
21787: LD_INT 0
21789: PPUSH
// if GetLives ( person ) < lives then
21790: LD_VAR 0 1
21794: PPUSH
21795: CALL_OW 256
21799: PUSH
21800: LD_VAR 0 2
21804: LESS
21805: IFFALSE 22190
// begin if person = RusNSo1 then
21807: LD_VAR 0 1
21811: PUSH
21812: LD_INT 3
21814: EQUAL
21815: IFFALSE 21834
// Replace ( RusN_States , 1 , 2 ) else
21817: LD_EXP 122
21821: PPUSH
21822: LD_INT 1
21824: PPUSH
21825: LD_INT 2
21827: PPUSH
21828: CALL_OW 1
21832: GO 21994
// if person = RusNSo2 then
21834: LD_VAR 0 1
21838: PUSH
21839: LD_INT 14
21841: EQUAL
21842: IFFALSE 21861
// Replace ( RusN_States , 2 , 2 ) else
21844: LD_EXP 122
21848: PPUSH
21849: LD_INT 2
21851: PPUSH
21852: LD_INT 2
21854: PPUSH
21855: CALL_OW 1
21859: GO 21994
// if person = RusNSo3 then
21861: LD_VAR 0 1
21865: PUSH
21866: LD_INT 27
21868: EQUAL
21869: IFFALSE 21888
// Replace ( RusN_States , 3 , 2 ) else
21871: LD_EXP 122
21875: PPUSH
21876: LD_INT 3
21878: PPUSH
21879: LD_INT 2
21881: PPUSH
21882: CALL_OW 1
21886: GO 21994
// if person = RusNSo4 then
21888: LD_VAR 0 1
21892: PUSH
21893: LD_INT 28
21895: EQUAL
21896: IFFALSE 21915
// Replace ( RusN_States , 4 , 2 ) else
21898: LD_EXP 122
21902: PPUSH
21903: LD_INT 4
21905: PPUSH
21906: LD_INT 2
21908: PPUSH
21909: CALL_OW 1
21913: GO 21994
// if person = RusNE1 then
21915: LD_VAR 0 1
21919: PUSH
21920: LD_INT 26
21922: EQUAL
21923: IFFALSE 21942
// Replace ( RusN_States , 8 , 2 ) else
21925: LD_EXP 122
21929: PPUSH
21930: LD_INT 8
21932: PPUSH
21933: LD_INT 2
21935: PPUSH
21936: CALL_OW 1
21940: GO 21994
// if person = RusNSo5 then
21942: LD_VAR 0 1
21946: PUSH
21947: LD_INT 24
21949: EQUAL
21950: IFFALSE 21969
// Replace ( RusN_States , 10 , 2 ) else
21952: LD_EXP 122
21956: PPUSH
21957: LD_INT 10
21959: PPUSH
21960: LD_INT 2
21962: PPUSH
21963: CALL_OW 1
21967: GO 21994
// if person = RusNSo6 then
21969: LD_VAR 0 1
21973: PUSH
21974: LD_INT 31
21976: EQUAL
21977: IFFALSE 21994
// Replace ( RusN_States , 11 , 2 ) ;
21979: LD_EXP 122
21983: PPUSH
21984: LD_INT 11
21986: PPUSH
21987: LD_INT 2
21989: PPUSH
21990: CALL_OW 1
// Go_to_physician ( person ) ;
21994: LD_VAR 0 1
21998: PPUSH
21999: CALL 21569 0 1
// if person = RusNSo1 then
22003: LD_VAR 0 1
22007: PUSH
22008: LD_INT 3
22010: EQUAL
22011: IFFALSE 22030
// Replace ( RusN_States , 1 , 0 ) else
22013: LD_EXP 122
22017: PPUSH
22018: LD_INT 1
22020: PPUSH
22021: LD_INT 0
22023: PPUSH
22024: CALL_OW 1
22028: GO 22190
// if person = RusNSo2 then
22030: LD_VAR 0 1
22034: PUSH
22035: LD_INT 14
22037: EQUAL
22038: IFFALSE 22057
// Replace ( RusN_States , 2 , 0 ) else
22040: LD_EXP 122
22044: PPUSH
22045: LD_INT 2
22047: PPUSH
22048: LD_INT 0
22050: PPUSH
22051: CALL_OW 1
22055: GO 22190
// if person = RusNSo3 then
22057: LD_VAR 0 1
22061: PUSH
22062: LD_INT 27
22064: EQUAL
22065: IFFALSE 22084
// Replace ( RusN_States , 3 , 0 ) else
22067: LD_EXP 122
22071: PPUSH
22072: LD_INT 3
22074: PPUSH
22075: LD_INT 0
22077: PPUSH
22078: CALL_OW 1
22082: GO 22190
// if person = RusNSo4 then
22084: LD_VAR 0 1
22088: PUSH
22089: LD_INT 28
22091: EQUAL
22092: IFFALSE 22111
// Replace ( RusN_States , 4 , 0 ) else
22094: LD_EXP 122
22098: PPUSH
22099: LD_INT 4
22101: PPUSH
22102: LD_INT 0
22104: PPUSH
22105: CALL_OW 1
22109: GO 22190
// if person = RusNE1 then
22111: LD_VAR 0 1
22115: PUSH
22116: LD_INT 26
22118: EQUAL
22119: IFFALSE 22138
// Replace ( RusN_States , 8 , 0 ) else
22121: LD_EXP 122
22125: PPUSH
22126: LD_INT 8
22128: PPUSH
22129: LD_INT 0
22131: PPUSH
22132: CALL_OW 1
22136: GO 22190
// if person = RusNSo5 then
22138: LD_VAR 0 1
22142: PUSH
22143: LD_INT 24
22145: EQUAL
22146: IFFALSE 22165
// Replace ( RusN_States , 10 , 0 ) else
22148: LD_EXP 122
22152: PPUSH
22153: LD_INT 10
22155: PPUSH
22156: LD_INT 0
22158: PPUSH
22159: CALL_OW 1
22163: GO 22190
// if person = RusNSo6 then
22165: LD_VAR 0 1
22169: PUSH
22170: LD_INT 31
22172: EQUAL
22173: IFFALSE 22190
// Replace ( RusN_States , 11 , 0 ) ;
22175: LD_EXP 122
22179: PPUSH
22180: LD_INT 11
22182: PPUSH
22183: LD_INT 0
22185: PPUSH
22186: CALL_OW 1
// end ; end ;
22190: LD_VAR 0 3
22194: RET
// function Select_Unit_With_Min_Lives ( list_of_units , at_least ) ; var i , j , lives , selected_unit , min ; begin
22195: LD_INT 0
22197: PPUSH
22198: PPUSH
22199: PPUSH
22200: PPUSH
22201: PPUSH
22202: PPUSH
// selected_unit = 0 ;
22203: LD_ADDR_VAR 0 7
22207: PUSH
22208: LD_INT 0
22210: ST_TO_ADDR
// j = 0 ;
22211: LD_ADDR_VAR 0 5
22215: PUSH
22216: LD_INT 0
22218: ST_TO_ADDR
// min = 1000 ;
22219: LD_ADDR_VAR 0 8
22223: PUSH
22224: LD_INT 1000
22226: ST_TO_ADDR
// for i in list_of_units do
22227: LD_ADDR_VAR 0 4
22231: PUSH
22232: LD_VAR 0 1
22236: PUSH
22237: FOR_IN
22238: IFFALSE 22315
// begin j = j + 1 ;
22240: LD_ADDR_VAR 0 5
22244: PUSH
22245: LD_VAR 0 5
22249: PUSH
22250: LD_INT 1
22252: PLUS
22253: ST_TO_ADDR
// lives = GetLives ( i ) ;
22254: LD_ADDR_VAR 0 6
22258: PUSH
22259: LD_VAR 0 4
22263: PPUSH
22264: CALL_OW 256
22268: ST_TO_ADDR
// if ( lives > at_least ) and ( lives < min ) then
22269: LD_VAR 0 6
22273: PUSH
22274: LD_VAR 0 2
22278: GREATER
22279: PUSH
22280: LD_VAR 0 6
22284: PUSH
22285: LD_VAR 0 8
22289: LESS
22290: AND
22291: IFFALSE 22313
// begin min = lives ;
22293: LD_ADDR_VAR 0 8
22297: PUSH
22298: LD_VAR 0 6
22302: ST_TO_ADDR
// selected_unit = j ;
22303: LD_ADDR_VAR 0 7
22307: PUSH
22308: LD_VAR 0 5
22312: ST_TO_ADDR
// end ; end ;
22313: GO 22237
22315: POP
22316: POP
// result = selected_unit ;
22317: LD_ADDR_VAR 0 3
22321: PUSH
22322: LD_VAR 0 7
22326: ST_TO_ADDR
// end ;
22327: LD_VAR 0 3
22331: RET
// every 0 0$1 do var un_min_lives ;
22332: GO 22334
22334: DISABLE
22335: LD_INT 0
22337: PPUSH
// begin case RusN_States [ 8 ] of 0 :
22338: LD_EXP 122
22342: PUSH
22343: LD_INT 8
22345: ARRAY
22346: PUSH
22347: LD_INT 0
22349: DOUBLE
22350: EQUAL
22351: IFTRUE 22355
22353: GO 22457
22355: POP
// begin Healing_Person ( RusNE1 , 600 ) ;
22356: LD_INT 26
22358: PPUSH
22359: LD_INT 600
22361: PPUSH
22362: CALL 21787 0 2
// if count5 = 0 then
22366: LD_EXP 120
22370: PUSH
22371: LD_INT 0
22373: EQUAL
22374: IFFALSE 22455
// begin un_min_lives = Select_Unit_With_Min_Lives ( Brestworks , 100 ) ;
22376: LD_ADDR_VAR 0 1
22380: PUSH
22381: LD_EXP 121
22385: PPUSH
22386: LD_INT 100
22388: PPUSH
22389: CALL 22195 0 2
22393: ST_TO_ADDR
// if GetLives ( Brestworks [ un_min_lives ] ) < 1000 then
22394: LD_EXP 121
22398: PUSH
22399: LD_VAR 0 1
22403: ARRAY
22404: PPUSH
22405: CALL_OW 256
22409: PUSH
22410: LD_INT 1000
22412: LESS
22413: IFFALSE 22455
// begin ComStop ( RusNE1 ) ;
22415: LD_INT 26
22417: PPUSH
22418: CALL_OW 141
// ComRepairBuilding ( RusNE1 , Brestworks [ un_min_lives ] ) ;
22422: LD_INT 26
22424: PPUSH
22425: LD_EXP 121
22429: PUSH
22430: LD_VAR 0 1
22434: ARRAY
22435: PPUSH
22436: CALL_OW 130
// Replace ( RusN_States , 8 , 1 ) ;
22440: LD_EXP 122
22444: PPUSH
22445: LD_INT 8
22447: PPUSH
22448: LD_INT 1
22450: PPUSH
22451: CALL_OW 1
// end ; end ; end ; 1 :
22455: GO 22511
22457: LD_INT 1
22459: DOUBLE
22460: EQUAL
22461: IFTRUE 22465
22463: GO 22510
22465: POP
// begin Healing_Person ( RusNE1 , 600 ) ;
22466: LD_INT 26
22468: PPUSH
22469: LD_INT 600
22471: PPUSH
22472: CALL 21787 0 2
// if not ( IsBusy ( RusNE1 ) ) then
22476: LD_INT 26
22478: PPUSH
22479: CALL_OW 315
22483: NOT
22484: IFFALSE 22508
// begin ComReturn ( RusNE1 ) ;
22486: LD_INT 26
22488: PPUSH
22489: CALL_OW 144
// Replace ( RusN_States , 8 , 0 ) ;
22493: LD_EXP 122
22497: PPUSH
22498: LD_INT 8
22500: PPUSH
22501: LD_INT 0
22503: PPUSH
22504: CALL_OW 1
// end ; end ; end ;
22508: GO 22511
22510: POP
// if IsLive ( RusNE1 ) then
22511: LD_INT 26
22513: PPUSH
22514: CALL_OW 300
22518: IFFALSE 22521
// enable ;
22520: ENABLE
// end ;
22521: PPOPN 1
22523: END
// every 0 0$1 do
22524: GO 22526
22526: DISABLE
// begin case RusN_States [ 5 ] of 0 :
22527: LD_EXP 122
22531: PUSH
22532: LD_INT 5
22534: ARRAY
22535: PUSH
22536: LD_INT 0
22538: DOUBLE
22539: EQUAL
22540: IFTRUE 22544
22542: GO 22572
22544: POP
// if not ( IsOk ( Brw1 ) ) then
22545: LD_INT 29
22547: PPUSH
22548: CALL_OW 302
22552: NOT
22553: IFFALSE 22570
// Replace ( RusN_States , 5 , 1 ) ; 1 :
22555: LD_EXP 122
22559: PPUSH
22560: LD_INT 5
22562: PPUSH
22563: LD_INT 1
22565: PPUSH
22566: CALL_OW 1
22570: GO 22639
22572: LD_INT 1
22574: DOUBLE
22575: EQUAL
22576: IFTRUE 22580
22578: GO 22638
22580: POP
// begin if GetLives ( [ guard1 ] ) < Lives_to_Retreat then
22581: LD_INT 11
22583: PUSH
22584: EMPTY
22585: LIST
22586: PPUSH
22587: CALL_OW 256
22591: PUSH
22592: LD_EXP 89
22596: LESS
22597: IFFALSE 22636
// begin Replace ( RusN_States , 5 , 2 ) ;
22599: LD_EXP 122
22603: PPUSH
22604: LD_INT 5
22606: PPUSH
22607: LD_INT 2
22609: PPUSH
22610: CALL_OW 1
// Go_to_physician ( guard1 ) ;
22614: LD_INT 11
22616: PPUSH
22617: CALL 21569 0 1
// Replace ( RusN_States , 5 , 1 ) ;
22621: LD_EXP 122
22625: PPUSH
22626: LD_INT 5
22628: PPUSH
22629: LD_INT 1
22631: PPUSH
22632: CALL_OW 1
// end ; end ; end ;
22636: GO 22639
22638: POP
// if IsLive ( guard1 ) then
22639: LD_INT 11
22641: PPUSH
22642: CALL_OW 300
22646: IFFALSE 22649
// enable ;
22648: ENABLE
// end ;
22649: END
// every 0 0$1 do
22650: GO 22652
22652: DISABLE
// begin case RusN_States [ 6 ] of 0 :
22653: LD_EXP 122
22657: PUSH
22658: LD_INT 6
22660: ARRAY
22661: PUSH
22662: LD_INT 0
22664: DOUBLE
22665: EQUAL
22666: IFTRUE 22670
22668: GO 22698
22670: POP
// if not ( IsOk ( Brw2 ) ) then
22671: LD_INT 9
22673: PPUSH
22674: CALL_OW 302
22678: NOT
22679: IFFALSE 22696
// Replace ( RusN_States , 6 , 1 ) ; 1 :
22681: LD_EXP 122
22685: PPUSH
22686: LD_INT 6
22688: PPUSH
22689: LD_INT 1
22691: PPUSH
22692: CALL_OW 1
22696: GO 22765
22698: LD_INT 1
22700: DOUBLE
22701: EQUAL
22702: IFTRUE 22706
22704: GO 22764
22706: POP
// begin if GetLives ( [ guard2 ] ) < Lives_to_Retreat then
22707: LD_INT 12
22709: PUSH
22710: EMPTY
22711: LIST
22712: PPUSH
22713: CALL_OW 256
22717: PUSH
22718: LD_EXP 89
22722: LESS
22723: IFFALSE 22762
// begin Replace ( RusN_States , 6 , 2 ) ;
22725: LD_EXP 122
22729: PPUSH
22730: LD_INT 6
22732: PPUSH
22733: LD_INT 2
22735: PPUSH
22736: CALL_OW 1
// Go_to_physician ( guard2 ) ;
22740: LD_INT 12
22742: PPUSH
22743: CALL 21569 0 1
// Replace ( RusN_States , 6 , 1 ) ;
22747: LD_EXP 122
22751: PPUSH
22752: LD_INT 6
22754: PPUSH
22755: LD_INT 1
22757: PPUSH
22758: CALL_OW 1
// end ; end ; end ;
22762: GO 22765
22764: POP
// if IsLive ( guard2 ) then
22765: LD_INT 12
22767: PPUSH
22768: CALL_OW 300
22772: IFFALSE 22775
// enable ;
22774: ENABLE
// end ;
22775: END
// every 0 0$1 do
22776: GO 22778
22778: DISABLE
// begin case RusN_States [ 7 ] of 0 :
22779: LD_EXP 122
22783: PUSH
22784: LD_INT 7
22786: ARRAY
22787: PUSH
22788: LD_INT 0
22790: DOUBLE
22791: EQUAL
22792: IFTRUE 22796
22794: GO 22824
22796: POP
// if not ( IsOk ( Brw3 ) ) then
22797: LD_INT 30
22799: PPUSH
22800: CALL_OW 302
22804: NOT
22805: IFFALSE 22822
// Replace ( RusN_States , 7 , 1 ) ; 1 :
22807: LD_EXP 122
22811: PPUSH
22812: LD_INT 7
22814: PPUSH
22815: LD_INT 1
22817: PPUSH
22818: CALL_OW 1
22822: GO 22891
22824: LD_INT 1
22826: DOUBLE
22827: EQUAL
22828: IFTRUE 22832
22830: GO 22890
22832: POP
// begin if GetLives ( [ guard3 ] ) < Lives_to_Retreat then
22833: LD_INT 7
22835: PUSH
22836: EMPTY
22837: LIST
22838: PPUSH
22839: CALL_OW 256
22843: PUSH
22844: LD_EXP 89
22848: LESS
22849: IFFALSE 22888
// begin Replace ( RusN_States , 7 , 2 ) ;
22851: LD_EXP 122
22855: PPUSH
22856: LD_INT 7
22858: PPUSH
22859: LD_INT 2
22861: PPUSH
22862: CALL_OW 1
// Go_to_physician ( guard3 ) ;
22866: LD_INT 7
22868: PPUSH
22869: CALL 21569 0 1
// Replace ( RusN_States , 7 , 1 ) ;
22873: LD_EXP 122
22877: PPUSH
22878: LD_INT 7
22880: PPUSH
22881: LD_INT 1
22883: PPUSH
22884: CALL_OW 1
// end ; end ; end ;
22888: GO 22891
22890: POP
// if IsLive ( guard3 ) then
22891: LD_INT 7
22893: PPUSH
22894: CALL_OW 300
22898: IFFALSE 22901
// enable ;
22900: ENABLE
// end ;
22901: END
// every 0 0$1 do
22902: GO 22904
22904: DISABLE
// begin if RusN_States [ 1 ] = 0 then
22905: LD_EXP 122
22909: PUSH
22910: LD_INT 1
22912: ARRAY
22913: PUSH
22914: LD_INT 0
22916: EQUAL
22917: IFFALSE 22931
// Healing_Person ( RusNSo1 , Lives_to_Retreat ) ;
22919: LD_INT 3
22921: PPUSH
22922: LD_EXP 89
22926: PPUSH
22927: CALL 21787 0 2
// if IsLive ( RusNSo1 ) then
22931: LD_INT 3
22933: PPUSH
22934: CALL_OW 300
22938: IFFALSE 22941
// enable ;
22940: ENABLE
// end ;
22941: END
// every 0 0$1 do
22942: GO 22944
22944: DISABLE
// begin if RusN_States [ 2 ] = 0 then
22945: LD_EXP 122
22949: PUSH
22950: LD_INT 2
22952: ARRAY
22953: PUSH
22954: LD_INT 0
22956: EQUAL
22957: IFFALSE 22971
// Healing_Person ( RusNSo2 , Lives_to_Retreat ) ;
22959: LD_INT 14
22961: PPUSH
22962: LD_EXP 89
22966: PPUSH
22967: CALL 21787 0 2
// if IsLive ( RusNSo2 ) then
22971: LD_INT 14
22973: PPUSH
22974: CALL_OW 300
22978: IFFALSE 22981
// enable ;
22980: ENABLE
// end ;
22981: END
// every 0 0$1 do
22982: GO 22984
22984: DISABLE
// begin if RusN_States [ 3 ] = 0 then
22985: LD_EXP 122
22989: PUSH
22990: LD_INT 3
22992: ARRAY
22993: PUSH
22994: LD_INT 0
22996: EQUAL
22997: IFFALSE 23011
// Healing_Person ( RusNSo3 , Lives_to_Retreat ) ;
22999: LD_INT 27
23001: PPUSH
23002: LD_EXP 89
23006: PPUSH
23007: CALL 21787 0 2
// if IsLive ( RusNSo3 ) then
23011: LD_INT 27
23013: PPUSH
23014: CALL_OW 300
23018: IFFALSE 23021
// enable ;
23020: ENABLE
// end ;
23021: END
// every 0 0$1 do
23022: GO 23024
23024: DISABLE
// begin if RusN_States [ 4 ] = 0 then
23025: LD_EXP 122
23029: PUSH
23030: LD_INT 4
23032: ARRAY
23033: PUSH
23034: LD_INT 0
23036: EQUAL
23037: IFFALSE 23051
// Healing_Person ( RusNSo4 , Lives_to_Retreat ) ;
23039: LD_INT 28
23041: PPUSH
23042: LD_EXP 89
23046: PPUSH
23047: CALL 21787 0 2
// if IsLive ( RusNSo4 ) then
23051: LD_INT 28
23053: PPUSH
23054: CALL_OW 300
23058: IFFALSE 23061
// enable ;
23060: ENABLE
// end ;
23061: END
// every 0 0$1 do
23062: GO 23064
23064: DISABLE
// begin if RusN_States [ 10 ] = 0 then
23065: LD_EXP 122
23069: PUSH
23070: LD_INT 10
23072: ARRAY
23073: PUSH
23074: LD_INT 0
23076: EQUAL
23077: IFFALSE 23091
// Healing_Person ( RusNSo5 , Lives_to_Retreat ) ;
23079: LD_INT 24
23081: PPUSH
23082: LD_EXP 89
23086: PPUSH
23087: CALL 21787 0 2
// if IsLive ( RusNSo5 ) then
23091: LD_INT 24
23093: PPUSH
23094: CALL_OW 300
23098: IFFALSE 23101
// enable ;
23100: ENABLE
// end ;
23101: END
// every 0 0$1 do
23102: GO 23104
23104: DISABLE
// begin if RusN_States [ 11 ] = 0 then
23105: LD_EXP 122
23109: PUSH
23110: LD_INT 11
23112: ARRAY
23113: PUSH
23114: LD_INT 0
23116: EQUAL
23117: IFFALSE 23131
// Healing_Person ( RusNSo6 , Lives_to_Retreat ) ;
23119: LD_INT 31
23121: PPUSH
23122: LD_EXP 89
23126: PPUSH
23127: CALL 21787 0 2
// if IsLive ( RusNSo6 ) then
23131: LD_INT 31
23133: PPUSH
23134: CALL_OW 300
23138: IFFALSE 23141
// enable ;
23140: ENABLE
// end ;
23141: END
// every 0 0$1 + 0 0$0.5 do
23142: GO 23144
23144: DISABLE
// begin count5 = ( count5 + 1 ) mod 5 ;
23145: LD_ADDR_EXP 120
23149: PUSH
23150: LD_EXP 120
23154: PUSH
23155: LD_INT 1
23157: PLUS
23158: PUSH
23159: LD_INT 5
23161: MOD
23162: ST_TO_ADDR
// enable ;
23163: ENABLE
// end ; end_of_file
23164: END
// export function SA_MikhailKilled ; begin
23165: LD_INT 0
23167: PPUSH
// SetAchievement ( ACH_NOM ) ;
23168: LD_STRING ACH_NOM
23170: PPUSH
23171: CALL_OW 543
// end ;
23175: LD_VAR 0 1
23179: RET
// export function SA_Negligence ; begin
23180: LD_INT 0
23182: PPUSH
// SetAchievement ( ACH_NEG ) ;
23183: LD_STRING ACH_NEG
23185: PPUSH
23186: CALL_OW 543
// end ;
23190: LD_VAR 0 1
23194: RET
// export function SA_NothingHere ; begin
23195: LD_INT 0
23197: PPUSH
// SetAchievement ( ACH_NHC ) ;
23198: LD_STRING ACH_NHC
23200: PPUSH
23201: CALL_OW 543
// end ; end_of_file
23205: LD_VAR 0 1
23209: RET
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
23210: LD_INT 0
23212: PPUSH
23213: PPUSH
// if not missionNumber then
23214: LD_VAR 0 2
23218: NOT
23219: IFFALSE 23223
// exit ;
23221: GO 23353
// achiv := false ;
23223: LD_ADDR_VAR 0 7
23227: PUSH
23228: LD_INT 0
23230: ST_TO_ADDR
// case campaignNumber of 1 :
23231: LD_VAR 0 1
23235: PUSH
23236: LD_INT 1
23238: DOUBLE
23239: EQUAL
23240: IFTRUE 23244
23242: GO 23255
23244: POP
// achiv := ACH_GOTA ; 2 :
23245: LD_ADDR_VAR 0 7
23249: PUSH
23250: LD_STRING ACH_GOTA
23252: ST_TO_ADDR
23253: GO 23305
23255: LD_INT 2
23257: DOUBLE
23258: EQUAL
23259: IFTRUE 23263
23261: GO 23266
23263: POP
// ; 3 :
23264: GO 23305
23266: LD_INT 3
23268: DOUBLE
23269: EQUAL
23270: IFTRUE 23274
23272: GO 23285
23274: POP
// achiv := ACH_MOTSU ; 4 :
23275: LD_ADDR_VAR 0 7
23279: PUSH
23280: LD_STRING ACH_MOTSU
23282: ST_TO_ADDR
23283: GO 23305
23285: LD_INT 4
23287: DOUBLE
23288: EQUAL
23289: IFTRUE 23293
23291: GO 23304
23293: POP
// achiv := ACH_LOP ; end ;
23294: LD_ADDR_VAR 0 7
23298: PUSH
23299: LD_STRING ACH_LOP
23301: ST_TO_ADDR
23302: GO 23305
23304: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
23305: LD_OWVAR 67
23309: PUSH
23310: LD_INT 3
23312: EQUAL
23313: PUSH
23314: LD_VAR 0 7
23318: AND
23319: PUSH
23320: LD_VAR 0 3
23324: AND
23325: PUSH
23326: LD_VAR 0 4
23330: AND
23331: PUSH
23332: LD_VAR 0 5
23336: AND
23337: IFFALSE 23353
// SetAchievementEX ( achiv , missionNumber ) ;
23339: LD_VAR 0 7
23343: PPUSH
23344: LD_VAR 0 2
23348: PPUSH
23349: CALL_OW 564
// end ;
23353: LD_VAR 0 6
23357: RET
// export function SA_BehemothConstructed ; begin
23358: LD_INT 0
23360: PPUSH
// SetAchievement ( ACH_SMC ) ;
23361: LD_STRING ACH_SMC
23363: PPUSH
23364: CALL_OW 543
// end ;
23368: LD_VAR 0 1
23372: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
23373: LD_VAR 0 2
23377: PUSH
23378: LD_INT 1
23380: DOUBLE
23381: EQUAL
23382: IFTRUE 23386
23384: GO 23393
23386: POP
// HackUnlimitedResources ; 2 :
23387: CALL 23577 0 0
23391: GO 23574
23393: LD_INT 2
23395: DOUBLE
23396: EQUAL
23397: IFTRUE 23401
23399: GO 23408
23401: POP
// HackSetLevel10 ; 3 :
23402: CALL 23710 0 0
23406: GO 23574
23408: LD_INT 3
23410: DOUBLE
23411: EQUAL
23412: IFTRUE 23416
23414: GO 23423
23416: POP
// HackSetLevel10YourUnits ; 4 :
23417: CALL 23795 0 0
23421: GO 23574
23423: LD_INT 4
23425: DOUBLE
23426: EQUAL
23427: IFTRUE 23431
23429: GO 23453
23431: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
23432: LD_VAR 0 3
23436: PPUSH
23437: LD_VAR 0 4
23441: PPUSH
23442: LD_VAR 0 5
23446: PPUSH
23447: CALL 23885 0 3
23451: GO 23574
23453: LD_INT 5
23455: DOUBLE
23456: EQUAL
23457: IFTRUE 23461
23459: GO 23468
23461: POP
// HackSpawnVehicle ; 6 :
23462: CALL 23946 0 0
23466: GO 23574
23468: LD_INT 6
23470: DOUBLE
23471: EQUAL
23472: IFTRUE 23476
23474: GO 23483
23476: POP
// HackInvincible ; 7 :
23477: CALL 24492 0 0
23481: GO 23574
23483: LD_INT 7
23485: DOUBLE
23486: EQUAL
23487: IFTRUE 23491
23489: GO 23498
23491: POP
// HackInvisible ; 8 :
23492: CALL 24603 0 0
23496: GO 23574
23498: LD_INT 8
23500: DOUBLE
23501: EQUAL
23502: IFTRUE 23506
23504: GO 23513
23506: POP
// HackChangeYourSide ; 9 :
23507: CALL 24660 0 0
23511: GO 23574
23513: LD_INT 9
23515: DOUBLE
23516: EQUAL
23517: IFTRUE 23521
23519: GO 23528
23521: POP
// HackChangeUnitSide ; 10 :
23522: CALL 24702 0 0
23526: GO 23574
23528: LD_INT 10
23530: DOUBLE
23531: EQUAL
23532: IFTRUE 23536
23534: GO 23543
23536: POP
// HackFog ; 11 :
23537: CALL 24803 0 0
23541: GO 23574
23543: LD_INT 11
23545: DOUBLE
23546: EQUAL
23547: IFTRUE 23551
23549: GO 23558
23551: POP
// HackApeman ; 12 :
23552: CALL 24818 0 0
23556: GO 23574
23558: LD_INT 12
23560: DOUBLE
23561: EQUAL
23562: IFTRUE 23566
23564: GO 23573
23566: POP
// HackBoom ; end ;
23567: CALL 24903 0 0
23571: GO 23574
23573: POP
// end ;
23574: PPOPN 6
23576: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
23577: LD_INT 0
23579: PPUSH
23580: PPUSH
23581: PPUSH
23582: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
23583: LD_ADDR_VAR 0 4
23587: PUSH
23588: LD_INT 22
23590: PUSH
23591: LD_OWVAR 2
23595: PUSH
23596: EMPTY
23597: LIST
23598: LIST
23599: PUSH
23600: LD_INT 2
23602: PUSH
23603: LD_INT 30
23605: PUSH
23606: LD_INT 0
23608: PUSH
23609: EMPTY
23610: LIST
23611: LIST
23612: PUSH
23613: LD_INT 30
23615: PUSH
23616: LD_INT 1
23618: PUSH
23619: EMPTY
23620: LIST
23621: LIST
23622: PUSH
23623: EMPTY
23624: LIST
23625: LIST
23626: LIST
23627: PUSH
23628: EMPTY
23629: LIST
23630: LIST
23631: PPUSH
23632: CALL_OW 69
23636: ST_TO_ADDR
// if not tmp then
23637: LD_VAR 0 4
23641: NOT
23642: IFFALSE 23646
// exit ;
23644: GO 23705
// for i in tmp do
23646: LD_ADDR_VAR 0 2
23650: PUSH
23651: LD_VAR 0 4
23655: PUSH
23656: FOR_IN
23657: IFFALSE 23703
// for j = 1 to 3 do
23659: LD_ADDR_VAR 0 3
23663: PUSH
23664: DOUBLE
23665: LD_INT 1
23667: DEC
23668: ST_TO_ADDR
23669: LD_INT 3
23671: PUSH
23672: FOR_TO
23673: IFFALSE 23699
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
23675: LD_VAR 0 2
23679: PPUSH
23680: CALL_OW 274
23684: PPUSH
23685: LD_VAR 0 3
23689: PPUSH
23690: LD_INT 99999
23692: PPUSH
23693: CALL_OW 277
23697: GO 23672
23699: POP
23700: POP
23701: GO 23656
23703: POP
23704: POP
// end ;
23705: LD_VAR 0 1
23709: RET
// export function HackSetLevel10 ; var i , j ; begin
23710: LD_INT 0
23712: PPUSH
23713: PPUSH
23714: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
23715: LD_ADDR_VAR 0 2
23719: PUSH
23720: LD_INT 21
23722: PUSH
23723: LD_INT 1
23725: PUSH
23726: EMPTY
23727: LIST
23728: LIST
23729: PPUSH
23730: CALL_OW 69
23734: PUSH
23735: FOR_IN
23736: IFFALSE 23788
// if IsSelected ( i ) then
23738: LD_VAR 0 2
23742: PPUSH
23743: CALL_OW 306
23747: IFFALSE 23786
// begin for j := 1 to 4 do
23749: LD_ADDR_VAR 0 3
23753: PUSH
23754: DOUBLE
23755: LD_INT 1
23757: DEC
23758: ST_TO_ADDR
23759: LD_INT 4
23761: PUSH
23762: FOR_TO
23763: IFFALSE 23784
// SetSkill ( i , j , 10 ) ;
23765: LD_VAR 0 2
23769: PPUSH
23770: LD_VAR 0 3
23774: PPUSH
23775: LD_INT 10
23777: PPUSH
23778: CALL_OW 237
23782: GO 23762
23784: POP
23785: POP
// end ;
23786: GO 23735
23788: POP
23789: POP
// end ;
23790: LD_VAR 0 1
23794: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
23795: LD_INT 0
23797: PPUSH
23798: PPUSH
23799: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
23800: LD_ADDR_VAR 0 2
23804: PUSH
23805: LD_INT 22
23807: PUSH
23808: LD_OWVAR 2
23812: PUSH
23813: EMPTY
23814: LIST
23815: LIST
23816: PUSH
23817: LD_INT 21
23819: PUSH
23820: LD_INT 1
23822: PUSH
23823: EMPTY
23824: LIST
23825: LIST
23826: PUSH
23827: EMPTY
23828: LIST
23829: LIST
23830: PPUSH
23831: CALL_OW 69
23835: PUSH
23836: FOR_IN
23837: IFFALSE 23878
// begin for j := 1 to 4 do
23839: LD_ADDR_VAR 0 3
23843: PUSH
23844: DOUBLE
23845: LD_INT 1
23847: DEC
23848: ST_TO_ADDR
23849: LD_INT 4
23851: PUSH
23852: FOR_TO
23853: IFFALSE 23874
// SetSkill ( i , j , 10 ) ;
23855: LD_VAR 0 2
23859: PPUSH
23860: LD_VAR 0 3
23864: PPUSH
23865: LD_INT 10
23867: PPUSH
23868: CALL_OW 237
23872: GO 23852
23874: POP
23875: POP
// end ;
23876: GO 23836
23878: POP
23879: POP
// end ;
23880: LD_VAR 0 1
23884: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
23885: LD_INT 0
23887: PPUSH
// uc_side := your_side ;
23888: LD_ADDR_OWVAR 20
23892: PUSH
23893: LD_OWVAR 2
23897: ST_TO_ADDR
// uc_nation := nation ;
23898: LD_ADDR_OWVAR 21
23902: PUSH
23903: LD_VAR 0 1
23907: ST_TO_ADDR
// InitHc ;
23908: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
23912: LD_INT 0
23914: PPUSH
23915: LD_VAR 0 2
23919: PPUSH
23920: LD_VAR 0 3
23924: PPUSH
23925: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
23929: CALL_OW 44
23933: PPUSH
23934: LD_INT 1
23936: PPUSH
23937: CALL_OW 51
// end ;
23941: LD_VAR 0 4
23945: RET
// export function HackSpawnVehicle ; begin
23946: LD_INT 0
23948: PPUSH
// uc_side := your_side ;
23949: LD_ADDR_OWVAR 20
23953: PUSH
23954: LD_OWVAR 2
23958: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
23959: LD_ADDR_OWVAR 21
23963: PUSH
23964: LD_INT 1
23966: PPUSH
23967: LD_INT 3
23969: PPUSH
23970: CALL_OW 12
23974: ST_TO_ADDR
// InitVc ;
23975: CALL_OW 20
// case uc_nation of 1 :
23979: LD_OWVAR 21
23983: PUSH
23984: LD_INT 1
23986: DOUBLE
23987: EQUAL
23988: IFTRUE 23992
23990: GO 24136
23992: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
23993: LD_ADDR_OWVAR 37
23997: PUSH
23998: LD_INT 1
24000: PUSH
24001: LD_INT 2
24003: PUSH
24004: LD_INT 3
24006: PUSH
24007: LD_INT 4
24009: PUSH
24010: LD_INT 5
24012: PUSH
24013: EMPTY
24014: LIST
24015: LIST
24016: LIST
24017: LIST
24018: LIST
24019: PUSH
24020: LD_INT 1
24022: PPUSH
24023: LD_INT 5
24025: PPUSH
24026: CALL_OW 12
24030: ARRAY
24031: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
24032: LD_ADDR_OWVAR 39
24036: PUSH
24037: LD_INT 1
24039: PPUSH
24040: LD_INT 3
24042: PPUSH
24043: CALL_OW 12
24047: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
24048: LD_ADDR_OWVAR 38
24052: PUSH
24053: LD_INT 1
24055: PUSH
24056: LD_INT 2
24058: PUSH
24059: LD_INT 3
24061: PUSH
24062: EMPTY
24063: LIST
24064: LIST
24065: LIST
24066: PUSH
24067: LD_INT 1
24069: PPUSH
24070: LD_INT 3
24072: PPUSH
24073: CALL_OW 12
24077: ARRAY
24078: 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 ) ] ;
24079: LD_ADDR_OWVAR 40
24083: PUSH
24084: LD_INT 2
24086: PUSH
24087: LD_INT 4
24089: PUSH
24090: LD_INT 5
24092: PUSH
24093: LD_INT 3
24095: PUSH
24096: LD_INT 7
24098: PUSH
24099: LD_INT 8
24101: PUSH
24102: LD_INT 9
24104: PUSH
24105: LD_INT 10
24107: PUSH
24108: LD_INT 6
24110: PUSH
24111: EMPTY
24112: LIST
24113: LIST
24114: LIST
24115: LIST
24116: LIST
24117: LIST
24118: LIST
24119: LIST
24120: LIST
24121: PUSH
24122: LD_INT 1
24124: PPUSH
24125: LD_INT 9
24127: PPUSH
24128: CALL_OW 12
24132: ARRAY
24133: ST_TO_ADDR
// end ; 2 :
24134: GO 24401
24136: LD_INT 2
24138: DOUBLE
24139: EQUAL
24140: IFTRUE 24144
24142: GO 24268
24144: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
24145: LD_ADDR_OWVAR 37
24149: PUSH
24150: LD_INT 11
24152: PUSH
24153: LD_INT 12
24155: PUSH
24156: LD_INT 13
24158: PUSH
24159: LD_INT 14
24161: PUSH
24162: EMPTY
24163: LIST
24164: LIST
24165: LIST
24166: LIST
24167: PUSH
24168: LD_INT 1
24170: PPUSH
24171: LD_INT 4
24173: PPUSH
24174: CALL_OW 12
24178: ARRAY
24179: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
24180: LD_ADDR_OWVAR 39
24184: PUSH
24185: LD_INT 1
24187: PPUSH
24188: LD_INT 3
24190: PPUSH
24191: CALL_OW 12
24195: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
24196: LD_ADDR_OWVAR 38
24200: PUSH
24201: LD_INT 1
24203: PUSH
24204: LD_INT 2
24206: PUSH
24207: LD_INT 5
24209: PUSH
24210: EMPTY
24211: LIST
24212: LIST
24213: LIST
24214: PUSH
24215: LD_INT 1
24217: PPUSH
24218: LD_INT 3
24220: PPUSH
24221: CALL_OW 12
24225: ARRAY
24226: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
24227: LD_ADDR_OWVAR 40
24231: PUSH
24232: LD_INT 24
24234: PUSH
24235: LD_INT 26
24237: PUSH
24238: LD_INT 27
24240: PUSH
24241: LD_INT 28
24243: PUSH
24244: LD_INT 29
24246: PUSH
24247: EMPTY
24248: LIST
24249: LIST
24250: LIST
24251: LIST
24252: LIST
24253: PUSH
24254: LD_INT 1
24256: PPUSH
24257: LD_INT 5
24259: PPUSH
24260: CALL_OW 12
24264: ARRAY
24265: ST_TO_ADDR
// end ; 3 :
24266: GO 24401
24268: LD_INT 3
24270: DOUBLE
24271: EQUAL
24272: IFTRUE 24276
24274: GO 24400
24276: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
24277: LD_ADDR_OWVAR 37
24281: PUSH
24282: LD_INT 21
24284: PUSH
24285: LD_INT 23
24287: PUSH
24288: LD_INT 22
24290: PUSH
24291: LD_INT 24
24293: PUSH
24294: EMPTY
24295: LIST
24296: LIST
24297: LIST
24298: LIST
24299: PUSH
24300: LD_INT 1
24302: PPUSH
24303: LD_INT 4
24305: PPUSH
24306: CALL_OW 12
24310: ARRAY
24311: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
24312: LD_ADDR_OWVAR 39
24316: PUSH
24317: LD_INT 1
24319: PPUSH
24320: LD_INT 3
24322: PPUSH
24323: CALL_OW 12
24327: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
24328: LD_ADDR_OWVAR 38
24332: PUSH
24333: LD_INT 1
24335: PUSH
24336: LD_INT 3
24338: PUSH
24339: EMPTY
24340: LIST
24341: LIST
24342: PUSH
24343: LD_INT 1
24345: PPUSH
24346: LD_INT 2
24348: PPUSH
24349: CALL_OW 12
24353: ARRAY
24354: 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 ) ] ;
24355: LD_ADDR_OWVAR 40
24359: PUSH
24360: LD_INT 42
24362: PUSH
24363: LD_INT 43
24365: PUSH
24366: LD_INT 44
24368: PUSH
24369: LD_INT 46
24371: PUSH
24372: LD_INT 48
24374: PUSH
24375: LD_INT 47
24377: PUSH
24378: EMPTY
24379: LIST
24380: LIST
24381: LIST
24382: LIST
24383: LIST
24384: LIST
24385: PUSH
24386: LD_INT 1
24388: PPUSH
24389: LD_INT 6
24391: PPUSH
24392: CALL_OW 12
24396: ARRAY
24397: ST_TO_ADDR
// end ; end ;
24398: GO 24401
24400: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
24401: CALL_OW 45
24405: PPUSH
24406: LD_INT 1
24408: PPUSH
24409: CALL_OW 51
// end ;
24413: LD_VAR 0 1
24417: RET
// export invincible ; every 1 do
24418: GO 24420
24420: DISABLE
// invincible := [ ] ;
24421: LD_ADDR_EXP 124
24425: PUSH
24426: EMPTY
24427: ST_TO_ADDR
24428: END
// every 10 do var i ;
24429: GO 24431
24431: DISABLE
24432: LD_INT 0
24434: PPUSH
// begin enable ;
24435: ENABLE
// if not invincible then
24436: LD_EXP 124
24440: NOT
24441: IFFALSE 24445
// exit ;
24443: GO 24489
// for i in invincible do
24445: LD_ADDR_VAR 0 1
24449: PUSH
24450: LD_EXP 124
24454: PUSH
24455: FOR_IN
24456: IFFALSE 24487
// if GetLives ( i ) < 1000 then
24458: LD_VAR 0 1
24462: PPUSH
24463: CALL_OW 256
24467: PUSH
24468: LD_INT 1000
24470: LESS
24471: IFFALSE 24485
// SetLives ( i , 1000 ) ;
24473: LD_VAR 0 1
24477: PPUSH
24478: LD_INT 1000
24480: PPUSH
24481: CALL_OW 234
24485: GO 24455
24487: POP
24488: POP
// end ;
24489: PPOPN 1
24491: END
// export function HackInvincible ; var i ; begin
24492: LD_INT 0
24494: PPUSH
24495: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
24496: LD_ADDR_VAR 0 2
24500: PUSH
24501: LD_INT 2
24503: PUSH
24504: LD_INT 21
24506: PUSH
24507: LD_INT 1
24509: PUSH
24510: EMPTY
24511: LIST
24512: LIST
24513: PUSH
24514: LD_INT 21
24516: PUSH
24517: LD_INT 2
24519: PUSH
24520: EMPTY
24521: LIST
24522: LIST
24523: PUSH
24524: EMPTY
24525: LIST
24526: LIST
24527: LIST
24528: PPUSH
24529: CALL_OW 69
24533: PUSH
24534: FOR_IN
24535: IFFALSE 24596
// if IsSelected ( i ) then
24537: LD_VAR 0 2
24541: PPUSH
24542: CALL_OW 306
24546: IFFALSE 24594
// begin if i in invincible then
24548: LD_VAR 0 2
24552: PUSH
24553: LD_EXP 124
24557: IN
24558: IFFALSE 24578
// invincible := invincible diff i else
24560: LD_ADDR_EXP 124
24564: PUSH
24565: LD_EXP 124
24569: PUSH
24570: LD_VAR 0 2
24574: DIFF
24575: ST_TO_ADDR
24576: GO 24594
// invincible := invincible union i ;
24578: LD_ADDR_EXP 124
24582: PUSH
24583: LD_EXP 124
24587: PUSH
24588: LD_VAR 0 2
24592: UNION
24593: ST_TO_ADDR
// end ;
24594: GO 24534
24596: POP
24597: POP
// end ;
24598: LD_VAR 0 1
24602: RET
// export function HackInvisible ; var i , j ; begin
24603: LD_INT 0
24605: PPUSH
24606: PPUSH
24607: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
24608: LD_ADDR_VAR 0 2
24612: PUSH
24613: LD_INT 21
24615: PUSH
24616: LD_INT 1
24618: PUSH
24619: EMPTY
24620: LIST
24621: LIST
24622: PPUSH
24623: CALL_OW 69
24627: PUSH
24628: FOR_IN
24629: IFFALSE 24653
// if IsSelected ( i ) then
24631: LD_VAR 0 2
24635: PPUSH
24636: CALL_OW 306
24640: IFFALSE 24651
// begin ComForceInvisible ( i ) ;
24642: LD_VAR 0 2
24646: PPUSH
24647: CALL_OW 496
// end ;
24651: GO 24628
24653: POP
24654: POP
// end ;
24655: LD_VAR 0 1
24659: RET
// export function HackChangeYourSide ; begin
24660: LD_INT 0
24662: PPUSH
// if your_side = 8 then
24663: LD_OWVAR 2
24667: PUSH
24668: LD_INT 8
24670: EQUAL
24671: IFFALSE 24683
// your_side := 0 else
24673: LD_ADDR_OWVAR 2
24677: PUSH
24678: LD_INT 0
24680: ST_TO_ADDR
24681: GO 24697
// your_side := your_side + 1 ;
24683: LD_ADDR_OWVAR 2
24687: PUSH
24688: LD_OWVAR 2
24692: PUSH
24693: LD_INT 1
24695: PLUS
24696: ST_TO_ADDR
// end ;
24697: LD_VAR 0 1
24701: RET
// export function HackChangeUnitSide ; var i , j ; begin
24702: LD_INT 0
24704: PPUSH
24705: PPUSH
24706: PPUSH
// for i in all_units do
24707: LD_ADDR_VAR 0 2
24711: PUSH
24712: LD_OWVAR 3
24716: PUSH
24717: FOR_IN
24718: IFFALSE 24796
// if IsSelected ( i ) then
24720: LD_VAR 0 2
24724: PPUSH
24725: CALL_OW 306
24729: IFFALSE 24794
// begin j := GetSide ( i ) ;
24731: LD_ADDR_VAR 0 3
24735: PUSH
24736: LD_VAR 0 2
24740: PPUSH
24741: CALL_OW 255
24745: ST_TO_ADDR
// if j = 8 then
24746: LD_VAR 0 3
24750: PUSH
24751: LD_INT 8
24753: EQUAL
24754: IFFALSE 24766
// j := 0 else
24756: LD_ADDR_VAR 0 3
24760: PUSH
24761: LD_INT 0
24763: ST_TO_ADDR
24764: GO 24780
// j := j + 1 ;
24766: LD_ADDR_VAR 0 3
24770: PUSH
24771: LD_VAR 0 3
24775: PUSH
24776: LD_INT 1
24778: PLUS
24779: ST_TO_ADDR
// SetSide ( i , j ) ;
24780: LD_VAR 0 2
24784: PPUSH
24785: LD_VAR 0 3
24789: PPUSH
24790: CALL_OW 235
// end ;
24794: GO 24717
24796: POP
24797: POP
// end ;
24798: LD_VAR 0 1
24802: RET
// export function HackFog ; begin
24803: LD_INT 0
24805: PPUSH
// FogOff ( true ) ;
24806: LD_INT 1
24808: PPUSH
24809: CALL_OW 344
// end ;
24813: LD_VAR 0 1
24817: RET
// export function HackApeman ; begin
24818: LD_INT 0
24820: PPUSH
// uc_side := your_side ;
24821: LD_ADDR_OWVAR 20
24825: PUSH
24826: LD_OWVAR 2
24830: ST_TO_ADDR
// uc_nation := 0 ;
24831: LD_ADDR_OWVAR 21
24835: PUSH
24836: LD_INT 0
24838: ST_TO_ADDR
// hc_name :=  ;
24839: LD_ADDR_OWVAR 26
24843: PUSH
24844: LD_STRING 
24846: ST_TO_ADDR
// hc_gallery :=  ;
24847: LD_ADDR_OWVAR 33
24851: PUSH
24852: LD_STRING 
24854: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
24855: LD_ADDR_OWVAR 31
24859: PUSH
24860: LD_INT 0
24862: PUSH
24863: LD_INT 0
24865: PUSH
24866: LD_INT 0
24868: PUSH
24869: LD_INT 0
24871: PUSH
24872: EMPTY
24873: LIST
24874: LIST
24875: LIST
24876: LIST
24877: ST_TO_ADDR
// hc_class := class_apeman ;
24878: LD_ADDR_OWVAR 28
24882: PUSH
24883: LD_INT 12
24885: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
24886: CALL_OW 44
24890: PPUSH
24891: LD_INT 1
24893: PPUSH
24894: CALL_OW 51
// end ;
24898: LD_VAR 0 1
24902: RET
// export function HackBoom ; begin
24903: LD_INT 0
24905: PPUSH
// uc_side := your_side ;
24906: LD_ADDR_OWVAR 20
24910: PUSH
24911: LD_OWVAR 2
24915: ST_TO_ADDR
// uc_nation := 1 ;
24916: LD_ADDR_OWVAR 21
24920: PUSH
24921: LD_INT 1
24923: ST_TO_ADDR
// vc_chassis := us_morphling ;
24924: LD_ADDR_OWVAR 37
24928: PUSH
24929: LD_INT 5
24931: ST_TO_ADDR
// vc_engine := engine_siberite ;
24932: LD_ADDR_OWVAR 39
24936: PUSH
24937: LD_INT 3
24939: ST_TO_ADDR
// vc_control := control_computer ;
24940: LD_ADDR_OWVAR 38
24944: PUSH
24945: LD_INT 3
24947: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
24948: LD_ADDR_OWVAR 40
24952: PUSH
24953: LD_INT 8
24955: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
24956: CALL_OW 45
24960: PPUSH
24961: LD_INT 1
24963: PPUSH
24964: CALL_OW 51
// end ;
24968: LD_VAR 0 1
24972: RET
