// export test ; 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 ; 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 101
   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 103
  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 104
  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 105
  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 74
 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 77
 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 78
 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 83
 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 84
 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 85
 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 109
 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 109
 306: PUSH
 307: LD_INT 1
 309: ARRAY
 310: PPUSH
 311: LD_EXP 109
 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 86
 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 87
 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 92
 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 68
 418: PUSH
 419: LD_EXP 69
 423: PUSH
 424: LD_EXP 70
 428: PUSH
 429: LD_EXP 71
 433: PUSH
 434: LD_EXP 72
 438: PUSH
 439: EMPTY
 440: LIST
 441: LIST
 442: LIST
 443: LIST
 444: ST_TO_ADDR
// americans = 1 ;
 445: LD_ADDR_EXP 2
 449: PUSH
 450: LD_INT 1
 452: ST_TO_ADDR
// americans1 = 4 ;
 453: LD_ADDR_EXP 3
 457: PUSH
 458: LD_INT 4
 460: ST_TO_ADDR
// russians = 3 ;
 461: LD_ADDR_EXP 4
 465: PUSH
 466: LD_INT 3
 468: ST_TO_ADDR
// russians1 = 6 ;
 469: LD_ADDR_EXP 5
 473: PUSH
 474: LD_INT 6
 476: ST_TO_ADDR
// SetAttitude ( americans , russians , att_enemy , true ) ;
 477: LD_EXP 2
 481: PPUSH
 482: LD_EXP 4
 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 2
 501: PPUSH
 502: LD_EXP 5
 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 5
 521: PPUSH
 522: LD_EXP 2
 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 4
 541: PPUSH
 542: LD_EXP 5
 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 2
 561: PPUSH
 562: LD_EXP 3
 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 106
 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 107
 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 107
 615: PPUSH
 616: CALL_OW 143
// ComFree ( RusNorth ) ;
 620: LD_EXP 107
 624: PPUSH
 625: CALL_OW 139
// Dep1_lives = 1000 ;
 629: LD_ADDR_EXP 45
 633: PUSH
 634: LD_INT 1000
 636: ST_TO_ADDR
// Dep2_lives = 1000 ;
 637: LD_ADDR_EXP 46
 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 4
 682: ST_TO_ADDR
// SetFuel ( vehicle1 , vehicle1_fuel ) ;
 683: LD_INT 5
 685: PPUSH
 686: LD_EXP 77
 690: PPUSH
 691: CALL_OW 240
// SetFuel ( vehicle2 , vehicle2_fuel ) ;
 695: LD_INT 4
 697: PPUSH
 698: LD_EXP 78
 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 64
 743: PUSH
 744: CALL_OW 45
 748: ST_TO_ADDR
// vehicle4 = CreateVehicle ;
 749: LD_ADDR_EXP 65
 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 61
 771: PUSH
 772: CALL_OW 45
 776: ST_TO_ADDR
// SetLives ( rv1 , vehicle_lives ) ;
 777: LD_EXP 61
 781: PPUSH
 782: LD_EXP 105
 786: PPUSH
 787: CALL_OW 234
// rv2 = CreateVehicle ;
 791: LD_ADDR_EXP 62
 795: PUSH
 796: CALL_OW 45
 800: ST_TO_ADDR
// Time_of_visit = 550 550$0 ;
 801: LD_ADDR_EXP 24
 805: PUSH
 806: LD_INT 1155000
 808: ST_TO_ADDR
// Time_of_attack = 550 550$0 ;
 809: LD_ADDR_EXP 25
 813: PUSH
 814: LD_INT 1155000
 816: ST_TO_ADDR
// Time_of_capture = 550 550$0 ;
 817: LD_ADDR_EXP 29
 821: PUSH
 822: LD_INT 1155000
 824: ST_TO_ADDR
// flee = 0 ;
 825: LD_ADDR_EXP 28
 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 103
 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 66
 901: PUSH
 902: CALL_OW 44
 906: ST_TO_ADDR
// PlaceHumanInUnit ( driver3 , vehicle3 ) ;
 907: LD_EXP 66
 911: PPUSH
 912: LD_EXP 64
 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 67
 933: PUSH
 934: CALL_OW 44
 938: ST_TO_ADDR
// PlaceHumanInUnit ( driver4 , vehicle4 ) ;
 939: LD_EXP 67
 943: PPUSH
 944: LD_EXP 65
 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 103
 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 59
1002: PUSH
1003: CALL_OW 44
1007: ST_TO_ADDR
// rdrv2 = CreateHuman ;
1008: LD_ADDR_EXP 60
1012: PUSH
1013: CALL_OW 44
1017: ST_TO_ADDR
// PlaceHumanInUnit ( rdrv1 , rv1 ) ;
1018: LD_EXP 59
1022: PPUSH
1023: LD_EXP 61
1027: PPUSH
1028: CALL_OW 52
// PlaceHumanInUnit ( rdrv2 , rv2 ) ;
1032: LD_EXP 60
1036: PPUSH
1037: LD_EXP 62
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 104
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 53
1091: PUSH
1092: CALL_OW 44
1096: ST_TO_ADDR
// rsol4 = CreateHuman ;
1097: LD_ADDR_EXP 56
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 104
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 55
1140: PUSH
1141: CALL_OW 44
1145: ST_TO_ADDR
// rsol5 = CreateHuman ;
1146: LD_ADDR_EXP 57
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 104
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 54
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 104
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 58
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 5
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 63
1267: PUSH
1268: CALL_OW 44
1272: ST_TO_ADDR
// Mikhail_in_depot = false ;
1273: LD_ADDR_EXP 38
1277: PUSH
1278: LD_INT 0
1280: ST_TO_ADDR
// Mikhails_lives = 1000 ;
1281: LD_ADDR_EXP 48
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 2
1322: ST_TO_ADDR
// Lives_JMM = LoadVariable ( lives_jmm , 1000 ) ;
1323: LD_ADDR_EXP 112
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 113
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 114
1359: PUSH
1360: LD_STRING lives_cyrus
1362: PPUSH
1363: LD_INT 1000
1365: PPUSH
1366: CALL_OW 30
1370: ST_TO_ADDR
// John = CreateCharacter ( JMM ) ;
1371: LD_ADDR_EXP 6
1375: PUSH
1376: LD_STRING JMM
1378: PPUSH
1379: CALL_OW 34
1383: ST_TO_ADDR
// SetLives ( John , Lives_JMM ) ;
1384: LD_EXP 6
1388: PPUSH
1389: LD_EXP 112
1393: PPUSH
1394: CALL_OW 234
// if not John then
1398: LD_EXP 6
1402: NOT
1403: IFFALSE 1418
// BuildQuery ( Error: John Macmillan not found!!! , [ OK ] ) ;
1405: LD_STRING Error: John Macmillan not found!!!
1407: PPUSH
1408: LD_STRING OK
1410: PUSH
1411: EMPTY
1412: LIST
1413: PPUSH
1414: CALL_OW 99
// Powell = CreateCharacter ( Powell ) ;
1418: LD_ADDR_EXP 15
1422: PUSH
1423: LD_STRING Powell
1425: PPUSH
1426: CALL_OW 34
1430: ST_TO_ADDR
// if not Powell then
1431: LD_EXP 15
1435: NOT
1436: IFFALSE 1451
// BuildQuery ( Error: Powell not found!!! , [ OK ] ) ;
1438: LD_STRING Error: Powell not found!!!
1440: PPUSH
1441: LD_STRING OK
1443: PUSH
1444: EMPTY
1445: LIST
1446: PPUSH
1447: CALL_OW 99
// Bobby = CreateCharacter ( Bobby ) ;
1451: LD_ADDR_EXP 8
1455: PUSH
1456: LD_STRING Bobby
1458: PPUSH
1459: CALL_OW 34
1463: ST_TO_ADDR
// if Bobby then
1464: LD_EXP 8
1468: IFFALSE 1484
// SetLives ( Bobby , Lives_Bobby ) ;
1470: LD_EXP 8
1474: PPUSH
1475: LD_EXP 113
1479: PPUSH
1480: CALL_OW 234
// Cyrus = CreateCharacter ( Cyrus ) ;
1484: LD_ADDR_EXP 7
1488: PUSH
1489: LD_STRING Cyrus
1491: PPUSH
1492: CALL_OW 34
1496: ST_TO_ADDR
// if Cyrus then
1497: LD_EXP 7
1501: IFFALSE 1517
// SetLives ( Cyrus , Lives_Cyrus ) ;
1503: LD_EXP 7
1507: PPUSH
1508: LD_EXP 114
1512: PPUSH
1513: CALL_OW 234
// uc_side = americans1 ;
1517: LD_ADDR_OWVAR 20
1521: PUSH
1522: LD_EXP 3
1526: ST_TO_ADDR
// Lisa = NewCharacter ( Lisa ) ;
1527: LD_ADDR_EXP 11
1531: PUSH
1532: LD_STRING Lisa
1534: PPUSH
1535: CALL_OW 25
1539: ST_TO_ADDR
// uc_side = americans1 ;
1540: LD_ADDR_OWVAR 20
1544: PUSH
1545: LD_EXP 3
1549: ST_TO_ADDR
// Khatam = NewCharacter ( Khatam ) ;
1550: LD_ADDR_EXP 9
1554: PUSH
1555: LD_STRING Khatam
1557: PPUSH
1558: CALL_OW 25
1562: ST_TO_ADDR
// SetClass ( Khatam , class_scientistic ) ;
1563: LD_EXP 9
1567: PPUSH
1568: LD_INT 4
1570: PPUSH
1571: CALL_OW 336
// Khatam_met_MM = false ;
1575: LD_ADDR_EXP 33
1579: PUSH
1580: LD_INT 0
1582: ST_TO_ADDR
// uc_side = americans1 ;
1583: LD_ADDR_OWVAR 20
1587: PUSH
1588: LD_EXP 3
1592: ST_TO_ADDR
// hc_sex = sex_male ;
1593: LD_ADDR_OWVAR 27
1597: PUSH
1598: LD_INT 1
1600: ST_TO_ADDR
// hc_class = class_engineer ;
1601: LD_ADDR_OWVAR 28
1605: PUSH
1606: LD_INT 2
1608: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 0 ] ;
1609: LD_ADDR_OWVAR 31
1613: PUSH
1614: LD_INT 1
1616: PUSH
1617: LD_INT 2
1619: PUSH
1620: LD_INT 1
1622: PUSH
1623: LD_INT 0
1625: PUSH
1626: EMPTY
1627: LIST
1628: LIST
1629: LIST
1630: LIST
1631: ST_TO_ADDR
// hc_name =  ;
1632: LD_ADDR_OWVAR 26
1636: PUSH
1637: LD_STRING 
1639: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
1640: LD_ADDR_OWVAR 29
1644: PUSH
1645: LD_INT 10
1647: PUSH
1648: LD_INT 10
1650: PUSH
1651: EMPTY
1652: LIST
1653: LIST
1654: ST_TO_ADDR
// AmME1 = CreateHuman ;
1655: LD_ADDR_EXP 12
1659: PUSH
1660: CALL_OW 44
1664: ST_TO_ADDR
// hc_sex = sex_female ;
1665: LD_ADDR_OWVAR 27
1669: PUSH
1670: LD_INT 2
1672: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 2 , 1 ] ;
1673: LD_ADDR_OWVAR 31
1677: PUSH
1678: LD_INT 1
1680: PUSH
1681: LD_INT 1
1683: PUSH
1684: LD_INT 2
1686: PUSH
1687: LD_INT 1
1689: PUSH
1690: EMPTY
1691: LIST
1692: LIST
1693: LIST
1694: LIST
1695: ST_TO_ADDR
// hc_name =  ;
1696: LD_ADDR_OWVAR 26
1700: PUSH
1701: LD_STRING 
1703: ST_TO_ADDR
// AmFE2 = CreateHuman ;
1704: LD_ADDR_EXP 13
1708: PUSH
1709: CALL_OW 44
1713: ST_TO_ADDR
// hc_sex = sex_male ;
1714: LD_ADDR_OWVAR 27
1718: PUSH
1719: LD_INT 1
1721: ST_TO_ADDR
// hc_class = class_soldier ;
1722: LD_ADDR_OWVAR 28
1726: PUSH
1727: LD_INT 1
1729: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 1 , 0 ] ;
1730: LD_ADDR_OWVAR 31
1734: PUSH
1735: LD_INT 2
1737: PUSH
1738: LD_INT 1
1740: PUSH
1741: LD_INT 1
1743: PUSH
1744: LD_INT 0
1746: PUSH
1747: EMPTY
1748: LIST
1749: LIST
1750: LIST
1751: LIST
1752: ST_TO_ADDR
// hc_name =  ;
1753: LD_ADDR_OWVAR 26
1757: PUSH
1758: LD_STRING 
1760: ST_TO_ADDR
// AmMSo3 = CreateHuman ;
1761: LD_ADDR_EXP 14
1765: PUSH
1766: CALL_OW 44
1770: ST_TO_ADDR
// if John then
1771: LD_EXP 6
1775: IFFALSE 1795
// PlaceUnitXY ( John , 44 , 72 , false ) ;
1777: LD_EXP 6
1781: PPUSH
1782: LD_INT 44
1784: PPUSH
1785: LD_INT 72
1787: PPUSH
1788: LD_INT 0
1790: PPUSH
1791: CALL_OW 48
// if Bobby then
1795: LD_EXP 8
1799: IFFALSE 1819
// PlaceUnitXY ( Bobby , 43 , 74 , false ) ;
1801: LD_EXP 8
1805: PPUSH
1806: LD_INT 43
1808: PPUSH
1809: LD_INT 74
1811: PPUSH
1812: LD_INT 0
1814: PPUSH
1815: CALL_OW 48
// if Cyrus then
1819: LD_EXP 7
1823: IFFALSE 1843
// PlaceUnitXY ( Cyrus , 47 , 76 , false ) ;
1825: LD_EXP 7
1829: PPUSH
1830: LD_INT 47
1832: PPUSH
1833: LD_INT 76
1835: PPUSH
1836: LD_INT 0
1838: PPUSH
1839: CALL_OW 48
// PlaceUnitXY ( Lisa , 30 , 55 , false ) ;
1843: LD_EXP 11
1847: PPUSH
1848: LD_INT 30
1850: PPUSH
1851: LD_INT 55
1853: PPUSH
1854: LD_INT 0
1856: PPUSH
1857: CALL_OW 48
// ComCrawl ( Lisa ) ;
1861: LD_EXP 11
1865: PPUSH
1866: CALL_OW 137
// AddComHold ( Lisa ) ;
1870: LD_EXP 11
1874: PPUSH
1875: CALL_OW 200
// AddComTurnXY ( Lisa , 34 , 60 ) ;
1879: LD_EXP 11
1883: PPUSH
1884: LD_INT 34
1886: PPUSH
1887: LD_INT 60
1889: PPUSH
1890: CALL_OW 178
// PlaceUnitXY ( AmME1 , 31 , 50 , false ) ;
1894: LD_EXP 12
1898: PPUSH
1899: LD_INT 31
1901: PPUSH
1902: LD_INT 50
1904: PPUSH
1905: LD_INT 0
1907: PPUSH
1908: CALL_OW 48
// ComCrawl ( AmME1 ) ;
1912: LD_EXP 12
1916: PPUSH
1917: CALL_OW 137
// AddComHold ( AmME1 ) ;
1921: LD_EXP 12
1925: PPUSH
1926: CALL_OW 200
// AddComTurnXY ( AmME1 , 34 , 50 ) ;
1930: LD_EXP 12
1934: PPUSH
1935: LD_INT 34
1937: PPUSH
1938: LD_INT 50
1940: PPUSH
1941: CALL_OW 178
// PlaceUnitXY ( AmFE2 , 33 , 51 , false ) ;
1945: LD_EXP 13
1949: PPUSH
1950: LD_INT 33
1952: PPUSH
1953: LD_INT 51
1955: PPUSH
1956: LD_INT 0
1958: PPUSH
1959: CALL_OW 48
// ComCrawl ( AmFE2 ) ;
1963: LD_EXP 13
1967: PPUSH
1968: CALL_OW 137
// AddComHold ( AmFE2 ) ;
1972: LD_EXP 13
1976: PPUSH
1977: CALL_OW 200
// AddComTurnXY ( AmFE2 , 34 , 50 ) ;
1981: LD_EXP 13
1985: PPUSH
1986: LD_INT 34
1988: PPUSH
1989: LD_INT 50
1991: PPUSH
1992: CALL_OW 178
// ComFree ( [ John , Bobby , Cyrus ] ) ;
1996: LD_EXP 6
2000: PUSH
2001: LD_EXP 8
2005: PUSH
2006: LD_EXP 7
2010: PUSH
2011: EMPTY
2012: LIST
2013: LIST
2014: LIST
2015: PPUSH
2016: CALL_OW 139
// Nick = 0 ;
2020: LD_ADDR_EXP 10
2024: PUSH
2025: LD_INT 0
2027: ST_TO_ADDR
// if not Cyrus and not Bobby then
2028: LD_EXP 7
2032: NOT
2033: PUSH
2034: LD_EXP 8
2038: NOT
2039: AND
2040: IFFALSE 2183
// begin uc_side = americans1 ;
2042: LD_ADDR_OWVAR 20
2046: PUSH
2047: LD_EXP 3
2051: ST_TO_ADDR
// uc_nation = nation_american ;
2052: LD_ADDR_OWVAR 21
2056: PUSH
2057: LD_INT 1
2059: ST_TO_ADDR
// hc_sex = sex_male ;
2060: LD_ADDR_OWVAR 27
2064: PUSH
2065: LD_INT 1
2067: ST_TO_ADDR
// hc_class = class_soldier ;
2068: LD_ADDR_OWVAR 28
2072: PUSH
2073: LD_INT 1
2075: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 1 , 0 ] ;
2076: LD_ADDR_OWVAR 31
2080: PUSH
2081: LD_INT 1
2083: PUSH
2084: LD_INT 1
2086: PUSH
2087: LD_INT 1
2089: PUSH
2090: LD_INT 0
2092: PUSH
2093: EMPTY
2094: LIST
2095: LIST
2096: LIST
2097: LIST
2098: ST_TO_ADDR
// hc_name =  ;
2099: LD_ADDR_OWVAR 26
2103: PUSH
2104: LD_STRING 
2106: ST_TO_ADDR
// hc_attr = [ 11 , 8 ] ;
2107: LD_ADDR_OWVAR 29
2111: PUSH
2112: LD_INT 11
2114: PUSH
2115: LD_INT 8
2117: PUSH
2118: EMPTY
2119: LIST
2120: LIST
2121: ST_TO_ADDR
// Nick = CreateHuman ;
2122: LD_ADDR_EXP 10
2126: PUSH
2127: CALL_OW 44
2131: ST_TO_ADDR
// PlaceUnitXY ( Nick , 32 , 49 , false ) ;
2132: LD_EXP 10
2136: PPUSH
2137: LD_INT 32
2139: PPUSH
2140: LD_INT 49
2142: PPUSH
2143: LD_INT 0
2145: PPUSH
2146: CALL_OW 48
// comCrawl ( Nick ) ;
2150: LD_EXP 10
2154: PPUSH
2155: CALL_OW 137
// AddComHold ( Nick ) ;
2159: LD_EXP 10
2163: PPUSH
2164: CALL_OW 200
// AddComTurnXY ( Nick , 34 , 50 ) ;
2168: LD_EXP 10
2172: PPUSH
2173: LD_INT 34
2175: PPUSH
2176: LD_INT 50
2178: PPUSH
2179: CALL_OW 178
// end ; hc_sex = sex_male ;
2183: LD_ADDR_OWVAR 27
2187: PUSH
2188: LD_INT 1
2190: ST_TO_ADDR
// hc_class = class_soldier ;
2191: LD_ADDR_OWVAR 28
2195: PUSH
2196: LD_INT 1
2198: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 1 ] ;
2199: LD_ADDR_OWVAR 31
2203: PUSH
2204: LD_INT 1
2206: PUSH
2207: LD_INT 2
2209: PUSH
2210: LD_INT 1
2212: PUSH
2213: LD_INT 1
2215: PUSH
2216: EMPTY
2217: LIST
2218: LIST
2219: LIST
2220: LIST
2221: ST_TO_ADDR
// hc_name =  ;
2222: LD_ADDR_OWVAR 26
2226: PUSH
2227: LD_STRING 
2229: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
2230: LD_ADDR_OWVAR 29
2234: PUSH
2235: LD_INT 10
2237: PUSH
2238: LD_INT 10
2240: PUSH
2241: EMPTY
2242: LIST
2243: LIST
2244: ST_TO_ADDR
// uc_direction = 1 ;
2245: LD_ADDR_OWVAR 24
2249: PUSH
2250: LD_INT 1
2252: ST_TO_ADDR
// AmR1 = CreateHuman ;
2253: LD_ADDR_EXP 20
2257: PUSH
2258: CALL_OW 44
2262: ST_TO_ADDR
// hc_name =  ;
2263: LD_ADDR_OWVAR 26
2267: PUSH
2268: LD_STRING 
2270: ST_TO_ADDR
// uc_direction = 1 ;
2271: LD_ADDR_OWVAR 24
2275: PUSH
2276: LD_INT 1
2278: ST_TO_ADDR
// AmR2 = CreateHuman ;
2279: LD_ADDR_EXP 21
2283: PUSH
2284: CALL_OW 44
2288: ST_TO_ADDR
// uc_side = russians ;
2289: LD_ADDR_OWVAR 20
2293: PUSH
2294: LD_EXP 4
2298: ST_TO_ADDR
// uc_nation = nation_russian ;
2299: LD_ADDR_OWVAR 21
2303: PUSH
2304: LD_INT 3
2306: ST_TO_ADDR
// hc_sex = sex_male ;
2307: LD_ADDR_OWVAR 27
2311: PUSH
2312: LD_INT 1
2314: ST_TO_ADDR
// hc_class = class_soldier ;
2315: LD_ADDR_OWVAR 28
2319: PUSH
2320: LD_INT 1
2322: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 0 , 0 ] ;
2323: LD_ADDR_OWVAR 31
2327: PUSH
2328: LD_INT 2
2330: PUSH
2331: LD_INT 1
2333: PUSH
2334: LD_INT 0
2336: PUSH
2337: LD_INT 0
2339: PUSH
2340: EMPTY
2341: LIST
2342: LIST
2343: LIST
2344: LIST
2345: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
2346: LD_ADDR_OWVAR 29
2350: PUSH
2351: LD_INT 10
2353: PUSH
2354: LD_INT 10
2356: PUSH
2357: EMPTY
2358: LIST
2359: LIST
2360: ST_TO_ADDR
// hc_name =  ;
2361: LD_ADDR_OWVAR 26
2365: PUSH
2366: LD_STRING 
2368: ST_TO_ADDR
// uc_direction = 4 ;
2369: LD_ADDR_OWVAR 24
2373: PUSH
2374: LD_INT 4
2376: ST_TO_ADDR
// RuR1 = CreateHuman ;
2377: LD_ADDR_EXP 22
2381: PUSH
2382: CALL_OW 44
2386: ST_TO_ADDR
// SetLives ( RuR1 , RuR_lives ) ;
2387: LD_EXP 22
2391: PPUSH
2392: LD_EXP 92
2396: PPUSH
2397: CALL_OW 234
// hc_name =  ;
2401: LD_ADDR_OWVAR 26
2405: PUSH
2406: LD_STRING 
2408: ST_TO_ADDR
// uc_direction = 4 ;
2409: LD_ADDR_OWVAR 24
2413: PUSH
2414: LD_INT 4
2416: ST_TO_ADDR
// RuR2 = CreateHuman ;
2417: LD_ADDR_EXP 23
2421: PUSH
2422: CALL_OW 44
2426: ST_TO_ADDR
// SetLives ( RuR2 , RuR_lives ) ;
2427: LD_EXP 23
2431: PPUSH
2432: LD_EXP 92
2436: PPUSH
2437: CALL_OW 234
// SetSkill ( RusNE1 , skill_engineering , eng_skill ) ;
2441: LD_INT 26
2443: PPUSH
2444: LD_INT 2
2446: PPUSH
2447: LD_EXP 84
2451: PPUSH
2452: CALL_OW 237
// SetSkill ( RusNSc1 , skill_scientistic , sc_skill ) ;
2456: LD_INT 25
2458: PPUSH
2459: LD_INT 4
2461: PPUSH
2462: LD_EXP 85
2466: PPUSH
2467: CALL_OW 237
// SetSkill ( guard1 , skill_combat , guard_skill ) ;
2471: LD_INT 11
2473: PPUSH
2474: LD_INT 1
2476: PPUSH
2477: LD_EXP 86
2481: PPUSH
2482: CALL_OW 237
// SetSkill ( guard2 , skill_combat , guard_skill ) ;
2486: LD_INT 12
2488: PPUSH
2489: LD_INT 1
2491: PPUSH
2492: LD_EXP 86
2496: PPUSH
2497: CALL_OW 237
// SetSkill ( guard3 , skill_combat , guard_skill ) ;
2501: LD_INT 7
2503: PPUSH
2504: LD_INT 1
2506: PPUSH
2507: LD_EXP 86
2511: PPUSH
2512: CALL_OW 237
// case Difficulty of 1 :
2516: LD_OWVAR 67
2520: PUSH
2521: LD_INT 1
2523: DOUBLE
2524: EQUAL
2525: IFTRUE 2529
2527: GO 2605
2529: POP
// begin SetLives ( BrW1 , 600 ) ;
2530: LD_INT 29
2532: PPUSH
2533: LD_INT 600
2535: PPUSH
2536: CALL_OW 234
// DestroyUnit ( BrW3 ) ;
2540: LD_INT 30
2542: PPUSH
2543: CALL_OW 65
// DestroyUnit ( Brw2 ) ;
2547: LD_INT 9
2549: PPUSH
2550: CALL_OW 65
// DestroyUnit ( RusNSo4 ) ;
2554: LD_INT 28
2556: PPUSH
2557: CALL_OW 65
// DestroyUnit ( RusNSo5 ) ;
2561: LD_INT 24
2563: PPUSH
2564: CALL_OW 65
// DestroyUnit ( RusNSo6 ) ;
2568: LD_INT 31
2570: PPUSH
2571: CALL_OW 65
// DestroyUnit ( RusNE1 ) ;
2575: LD_INT 26
2577: PPUSH
2578: CALL_OW 65
// DestroyUnit ( guard2 ) ;
2582: LD_INT 12
2584: PPUSH
2585: CALL_OW 65
// DestroyUnit ( guard3 ) ;
2589: LD_INT 7
2591: PPUSH
2592: CALL_OW 65
// DestroyUnit ( RusNSo3 ) ;
2596: LD_INT 27
2598: PPUSH
2599: CALL_OW 65
// end ; 2 :
2603: GO 2680
2605: LD_INT 2
2607: DOUBLE
2608: EQUAL
2609: IFTRUE 2613
2611: GO 2668
2613: POP
// begin SetLives ( BrW3 , 700 ) ;
2614: LD_INT 30
2616: PPUSH
2617: LD_INT 700
2619: PPUSH
2620: CALL_OW 234
// DestroyUnit ( Brw2 ) ;
2624: LD_INT 9
2626: PPUSH
2627: CALL_OW 65
// DestroyUnit ( RusNSo4 ) ;
2631: LD_INT 28
2633: PPUSH
2634: CALL_OW 65
// DestroyUnit ( RusNSo5 ) ;
2638: LD_INT 24
2640: PPUSH
2641: CALL_OW 65
// DestroyUnit ( RusNSo6 ) ;
2645: LD_INT 31
2647: PPUSH
2648: CALL_OW 65
// DestroyUnit ( RusNE1 ) ;
2652: LD_INT 26
2654: PPUSH
2655: CALL_OW 65
// DestroyUnit ( guard2 ) ;
2659: LD_INT 12
2661: PPUSH
2662: CALL_OW 65
// end ; 3 :
2666: GO 2680
2668: LD_INT 3
2670: DOUBLE
2671: EQUAL
2672: IFTRUE 2676
2674: GO 2679
2676: POP
// begin end ; end ;
2677: GO 2680
2679: POP
// battle = false ;
2680: LD_ADDR_EXP 73
2684: PUSH
2685: LD_INT 0
2687: ST_TO_ADDR
// count = 0 ;
2688: LD_ADDR_EXP 75
2692: PUSH
2693: LD_INT 0
2695: ST_TO_ADDR
// sergej_succeeds = 0 ;
2696: LD_ADDR_EXP 76
2700: PUSH
2701: LD_INT 0
2703: ST_TO_ADDR
// Khatam_met_americans = 1 ;
2704: LD_ADDR_EXP 32
2708: PUSH
2709: LD_INT 1
2711: ST_TO_ADDR
// disable ( Khatam_met_americans ) ;
2712: LD_EXP 32
2716: DISABLE_MARKED
// escape_flag = false ;
2717: LD_ADDR_EXP 27
2721: PUSH
2722: LD_INT 0
2724: ST_TO_ADDR
// vehicle_goes = 2 ;
2725: LD_ADDR_EXP 26
2729: PUSH
2730: LD_INT 2
2732: ST_TO_ADDR
// disable ( vehicle_goes ) ;
2733: LD_EXP 26
2737: DISABLE_MARKED
// Mikhail_placed = 3 ;
2738: LD_ADDR_EXP 34
2742: PUSH
2743: LD_INT 3
2745: ST_TO_ADDR
// disable ( mikhail_placed ) ;
2746: LD_EXP 34
2750: DISABLE_MARKED
// Mikhail_captured = 4 ;
2751: LD_ADDR_EXP 35
2755: PUSH
2756: LD_INT 4
2758: ST_TO_ADDR
// disable ( Mikhail_captured ) ;
2759: LD_EXP 35
2763: DISABLE_MARKED
// vehicles_detected = 5 ;
2764: LD_ADDR_EXP 30
2768: PUSH
2769: LD_INT 5
2771: ST_TO_ADDR
// disable ( vehicles_detected ) ;
2772: LD_EXP 30
2776: DISABLE_MARKED
// uncanny_vehicles = 6 ;
2777: LD_ADDR_EXP 31
2781: PUSH
2782: LD_INT 6
2784: ST_TO_ADDR
// depot = 8 ;
2785: LD_ADDR_EXP 37
2789: PUSH
2790: LD_INT 8
2792: ST_TO_ADDR
// disable ( depot ) ;
2793: LD_EXP 37
2797: DISABLE_MARKED
// great_escape = 9 ;
2798: LD_ADDR_EXP 39
2802: PUSH
2803: LD_INT 9
2805: ST_TO_ADDR
// disable ( great_escape ) ;
2806: LD_EXP 39
2810: DISABLE_MARKED
// attack = 10 ;
2811: LD_ADDR_EXP 40
2815: PUSH
2816: LD_INT 10
2818: ST_TO_ADDR
// disable ( attack ) ;
2819: LD_EXP 40
2823: DISABLE_MARKED
// remove_mikhail = 11 ;
2824: LD_ADDR_EXP 41
2828: PUSH
2829: LD_INT 11
2831: ST_TO_ADDR
// disable ( remove_mikhail ) ;
2832: LD_EXP 41
2836: DISABLE_MARKED
// conversation = 12 ;
2837: LD_ADDR_EXP 42
2841: PUSH
2842: LD_INT 12
2844: ST_TO_ADDR
// disable ( conversation ) ;
2845: LD_EXP 42
2849: DISABLE_MARKED
// Mikhails_escape = 13 ;
2850: LD_ADDR_EXP 43
2854: PUSH
2855: LD_INT 13
2857: ST_TO_ADDR
// disable ( Mikhails_escape ) ;
2858: LD_EXP 43
2862: DISABLE_MARKED
// rep = true ;
2863: LD_ADDR_EXP 47
2867: PUSH
2868: LD_INT 1
2870: ST_TO_ADDR
// firing1 = 14 ;
2871: LD_ADDR_EXP 49
2875: PUSH
2876: LD_INT 14
2878: ST_TO_ADDR
// disable ( firing1 ) ;
2879: LD_EXP 49
2883: DISABLE_MARKED
// firing2 = 15 ;
2884: LD_ADDR_EXP 50
2888: PUSH
2889: LD_INT 15
2891: ST_TO_ADDR
// disable ( firing2 ) ;
2892: LD_EXP 50
2896: DISABLE_MARKED
// russians_attack = 16 ;
2897: LD_ADDR_EXP 51
2901: PUSH
2902: LD_INT 16
2904: ST_TO_ADDR
// disable ( russians_attack ) ;
2905: LD_EXP 51
2909: DISABLE_MARKED
// russians_attack1 = 17 ;
2910: LD_ADDR_EXP 52
2914: PUSH
2915: LD_INT 17
2917: ST_TO_ADDR
// disable ( russians_attack1 ) ;
2918: LD_EXP 52
2922: DISABLE_MARKED
// tigers_allowed = 18 ;
2923: LD_ADDR_EXP 79
2927: PUSH
2928: LD_INT 18
2930: ST_TO_ADDR
// disable ( tigers_allowed ) ;
2931: LD_EXP 79
2935: DISABLE_MARKED
// remove_tigers = 19 ;
2936: LD_ADDR_EXP 80
2940: PUSH
2941: LD_INT 19
2943: ST_TO_ADDR
// disable ( remove_tigers ) ;
2944: LD_EXP 80
2948: DISABLE_MARKED
// Engineers_not_dead = 20 ;
2949: LD_ADDR_EXP 81
2953: PUSH
2954: LD_INT 20
2956: ST_TO_ADDR
// disable ( Engineers_not_dead ) ;
2957: LD_EXP 81
2961: DISABLE_MARKED
// East_guard_seen = 21 ;
2962: LD_ADDR_EXP 94
2966: PUSH
2967: LD_INT 21
2969: ST_TO_ADDR
// enable ( East_guard_seen ) ;
2970: LD_EXP 94
2974: ENABLE_MARKED
// JMMInVehicle := false ;
2975: LD_ADDR_EXP 116
2979: PUSH
2980: LD_INT 0
2982: ST_TO_ADDR
// CyrusInVehicle := false ;
2983: LD_ADDR_EXP 117
2987: PUSH
2988: LD_INT 0
2990: ST_TO_ADDR
// Dialogue_Number = 0 ;
2991: LD_ADDR_EXP 99
2995: PUSH
2996: LD_INT 0
2998: ST_TO_ADDR
// Skip = false ;
2999: LD_ADDR_EXP 100
3003: PUSH
3004: LD_INT 0
3006: ST_TO_ADDR
// JMM_saw_east_guard = false ;
3007: LD_ADDR_EXP 93
3011: PUSH
3012: LD_INT 0
3014: ST_TO_ADDR
// Attack_canceled = false ;
3015: LD_ADDR_EXP 91
3019: PUSH
3020: LD_INT 0
3022: ST_TO_ADDR
// lost_units = 0 ;
3023: LD_ADDR_EXP 88
3027: PUSH
3028: LD_INT 0
3030: ST_TO_ADDR
// First_Capture = true ;
3031: LD_ADDR_EXP 82
3035: PUSH
3036: LD_INT 1
3038: ST_TO_ADDR
// vehicle1_new = 0 ;
3039: LD_ADDR_EXP 95
3043: PUSH
3044: LD_INT 0
3046: ST_TO_ADDR
// vehicle2_new = 0 ;
3047: LD_ADDR_EXP 96
3051: PUSH
3052: LD_INT 0
3054: ST_TO_ADDR
// escape_dialogue = false ;
3055: LD_ADDR_EXP 97
3059: PUSH
3060: LD_INT 0
3062: ST_TO_ADDR
// vehicle_goes_flag = true ;
3063: LD_ADDR_EXP 98
3067: PUSH
3068: LD_INT 1
3070: ST_TO_ADDR
// Tested_Americans = [ ] ;
3071: LD_ADDR_EXP 111
3075: PUSH
3076: EMPTY
3077: ST_TO_ADDR
// Init_Lives = [ ] ;
3078: LD_ADDR_EXP 110
3082: PUSH
3083: EMPTY
3084: ST_TO_ADDR
// Mikhails_Escape_Disabled = true ;
3085: LD_ADDR_EXP 89
3089: PUSH
3090: LD_INT 1
3092: ST_TO_ADDR
// Initial_Lives = GetLives ( [ John , Cyrus , Bobby , Khatam , Lisa , AmME1 , AmFE2 , AmMSo3 , Nick ] ) ;
3093: LD_ADDR_EXP 90
3097: PUSH
3098: LD_EXP 6
3102: PUSH
3103: LD_EXP 7
3107: PUSH
3108: LD_EXP 8
3112: PUSH
3113: LD_EXP 9
3117: PUSH
3118: LD_EXP 11
3122: PUSH
3123: LD_EXP 12
3127: PUSH
3128: LD_EXP 13
3132: PUSH
3133: LD_EXP 14
3137: PUSH
3138: LD_EXP 10
3142: PUSH
3143: EMPTY
3144: LIST
3145: LIST
3146: LIST
3147: LIST
3148: LIST
3149: LIST
3150: LIST
3151: LIST
3152: LIST
3153: PPUSH
3154: CALL_OW 256
3158: ST_TO_ADDR
// CenterOnXY ( 41 , 65 ) ;
3159: LD_INT 41
3161: PPUSH
3162: LD_INT 65
3164: PPUSH
3165: CALL_OW 84
// end ;
3169: LD_VAR 0 1
3173: RET
// starting begin RandomizeAll ;
3174: CALL_OW 11
// test = 0 ;
3178: LD_ADDR_EXP 1
3182: PUSH
3183: LD_INT 0
3185: ST_TO_ADDR
// Prepare_difficulty ;
3186: CALL 0 0 0
// InitNorthBase ;
3190: CALL 20482 0 0
// Init ;
3194: CALL 411 0 0
// end ; end_of_file
3198: 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
3199: LD_INT 0
3201: PPUSH
3202: PPUSH
3203: PPUSH
// wait ( 2 ) ;
3204: LD_INT 2
3206: PPUSH
3207: CALL_OW 67
// repeat busy = false ;
3211: LD_ADDR_VAR 0 5
3215: PUSH
3216: LD_INT 0
3218: ST_TO_ADDR
// for i in list_of_units do
3219: LD_ADDR_VAR 0 4
3223: PUSH
3224: LD_VAR 0 1
3228: PUSH
3229: FOR_IN
3230: IFFALSE 3264
// if IsOk ( i ) then
3232: LD_VAR 0 4
3236: PPUSH
3237: CALL_OW 302
3241: IFFALSE 3262
// if HasTask ( i ) then
3243: LD_VAR 0 4
3247: PPUSH
3248: CALL_OW 314
3252: IFFALSE 3262
// busy = true ;
3254: LD_ADDR_VAR 0 5
3258: PUSH
3259: LD_INT 1
3261: ST_TO_ADDR
3262: GO 3229
3264: POP
3265: POP
// if busy then
3266: LD_VAR 0 5
3270: IFFALSE 3285
// wait ( 0 0$1 * reaction ) ;
3272: LD_INT 35
3274: PUSH
3275: LD_VAR 0 2
3279: MUL
3280: PPUSH
3281: CALL_OW 67
// until not ( busy ) ;
3285: LD_VAR 0 5
3289: NOT
3290: IFFALSE 3211
// end ;
3292: LD_VAR 0 3
3296: RET
// every 0 0$1 trigger not ( test ) do var sold , alive , Un , hlp ;
3297: LD_EXP 1
3301: NOT
3302: IFFALSE 6723
3304: GO 3306
3306: DISABLE
3307: LD_INT 0
3309: PPUSH
3310: PPUSH
3311: PPUSH
3312: PPUSH
// begin hlp = tick ;
3313: LD_ADDR_VAR 0 4
3317: PUSH
3318: LD_OWVAR 1
3322: ST_TO_ADDR
// IngameOn ;
3323: CALL_OW 8
// Dialogue_Number = 1 ;
3327: LD_ADDR_EXP 99
3331: PUSH
3332: LD_INT 1
3334: ST_TO_ADDR
// if IsOk ( Bobby ) or IsOk ( Cyrus ) then
3335: LD_EXP 8
3339: PPUSH
3340: CALL_OW 302
3344: PUSH
3345: LD_EXP 7
3349: PPUSH
3350: CALL_OW 302
3354: OR
3355: IFFALSE 5405
// begin alive = [ ] ;
3357: LD_ADDR_VAR 0 2
3361: PUSH
3362: EMPTY
3363: ST_TO_ADDR
// Speaker = [ ] ;
3364: LD_ADDR_EXP 115
3368: PUSH
3369: EMPTY
3370: ST_TO_ADDR
// if IsOk ( Bobby ) then
3371: LD_EXP 8
3375: PPUSH
3376: CALL_OW 302
3380: IFFALSE 3398
// alive = alive ^ Bobby ;
3382: LD_ADDR_VAR 0 2
3386: PUSH
3387: LD_VAR 0 2
3391: PUSH
3392: LD_EXP 8
3396: ADD
3397: ST_TO_ADDR
// if IsOk ( Cyrus ) then
3398: LD_EXP 7
3402: PPUSH
3403: CALL_OW 302
3407: IFFALSE 3425
// alive = alive ^ Cyrus ;
3409: LD_ADDR_VAR 0 2
3413: PUSH
3414: LD_VAR 0 2
3418: PUSH
3419: LD_EXP 7
3423: ADD
3424: ST_TO_ADDR
// if IsOk ( Bobby ) and not ( Skip ) then
3425: LD_EXP 8
3429: PPUSH
3430: CALL_OW 302
3434: PUSH
3435: LD_EXP 100
3439: NOT
3440: AND
3441: IFFALSE 3484
// if IsOk ( Cyrus ) then
3443: LD_EXP 7
3447: PPUSH
3448: CALL_OW 302
3452: IFFALSE 3470
// AddComTurnUnit ( Bobby , Cyrus ) else
3454: LD_EXP 8
3458: PPUSH
3459: LD_EXP 7
3463: PPUSH
3464: CALL_OW 179
3468: GO 3484
// AddComTurnUnit ( Bobby , John ) ;
3470: LD_EXP 8
3474: PPUSH
3475: LD_EXP 6
3479: PPUSH
3480: CALL_OW 179
// if IsOk ( Bobby ) and not ( Skip ) then
3484: LD_EXP 8
3488: PPUSH
3489: CALL_OW 302
3493: PUSH
3494: LD_EXP 100
3498: NOT
3499: AND
3500: IFFALSE 3514
// AddComWait ( Bobby , 0 0$1 ) ;
3502: LD_EXP 8
3506: PPUSH
3507: LD_INT 35
3509: PPUSH
3510: CALL_OW 202
// if IsOk ( Bobby ) and not ( Skip ) then
3514: LD_EXP 8
3518: PPUSH
3519: CALL_OW 302
3523: PUSH
3524: LD_EXP 100
3528: NOT
3529: AND
3530: IFFALSE 3547
// AddComMoveXY ( Bobby , 39 , 67 ) ;
3532: LD_EXP 8
3536: PPUSH
3537: LD_INT 39
3539: PPUSH
3540: LD_INT 67
3542: PPUSH
3543: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
3547: LD_EXP 8
3551: PPUSH
3552: CALL_OW 302
3556: PUSH
3557: LD_EXP 100
3561: NOT
3562: AND
3563: IFFALSE 3579
// AddComTurnUnit ( Bobby , John ) ;
3565: LD_EXP 8
3569: PPUSH
3570: LD_EXP 6
3574: PPUSH
3575: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
3579: LD_EXP 7
3583: PPUSH
3584: CALL_OW 302
3588: PUSH
3589: LD_EXP 100
3593: NOT
3594: AND
3595: IFFALSE 3609
// ComWait ( Cyrus , 0 0$0.5 ) ;
3597: LD_EXP 7
3601: PPUSH
3602: LD_INT 18
3604: PPUSH
3605: CALL_OW 142
// if IsOk ( Cyrus ) and not ( Skip ) then
3609: LD_EXP 7
3613: PPUSH
3614: CALL_OW 302
3618: PUSH
3619: LD_EXP 100
3623: NOT
3624: AND
3625: IFFALSE 3642
// AddComMoveXY ( Cyrus , 41 , 71 ) ;
3627: LD_EXP 7
3631: PPUSH
3632: LD_INT 41
3634: PPUSH
3635: LD_INT 71
3637: PPUSH
3638: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
3642: LD_EXP 7
3646: PPUSH
3647: CALL_OW 302
3651: PUSH
3652: LD_EXP 100
3656: NOT
3657: AND
3658: IFFALSE 3672
// AddComWait ( Cyrus , 0 0$1 ) ;
3660: LD_EXP 7
3664: PPUSH
3665: LD_INT 35
3667: PPUSH
3668: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
3672: LD_EXP 6
3676: PPUSH
3677: CALL_OW 302
3681: PUSH
3682: LD_EXP 100
3686: NOT
3687: AND
3688: IFFALSE 3705
// ComMoveXY ( John , 47 , 68 ) ;
3690: LD_EXP 6
3694: PPUSH
3695: LD_INT 47
3697: PPUSH
3698: LD_INT 68
3700: PPUSH
3701: CALL_OW 111
// if IsOk ( John ) and not ( Skip ) then
3705: LD_EXP 6
3709: PPUSH
3710: CALL_OW 302
3714: PUSH
3715: LD_EXP 100
3719: NOT
3720: AND
3721: IFFALSE 3764
// if IsOk ( Bobby ) then
3723: LD_EXP 8
3727: PPUSH
3728: CALL_OW 302
3732: IFFALSE 3750
// AddComTurnUnit ( John , Bobby ) else
3734: LD_EXP 6
3738: PPUSH
3739: LD_EXP 8
3743: PPUSH
3744: CALL_OW 179
3748: GO 3764
// AddComTurnUnit ( John , Cyrus ) ;
3750: LD_EXP 6
3754: PPUSH
3755: LD_EXP 7
3759: PPUSH
3760: CALL_OW 179
// Un = alive [ Rand ( 1 , alive ) ] ;
3764: LD_ADDR_VAR 0 3
3768: PUSH
3769: LD_VAR 0 2
3773: PUSH
3774: LD_INT 1
3776: PPUSH
3777: LD_VAR 0 2
3781: PPUSH
3782: CALL_OW 12
3786: ARRAY
3787: ST_TO_ADDR
// if not ( Skip ) then
3788: LD_EXP 100
3792: NOT
3793: IFFALSE 3830
// if ( Un = Bobby ) and IsOk ( Bobby ) then
3795: LD_VAR 0 3
3799: PUSH
3800: LD_EXP 8
3804: EQUAL
3805: PUSH
3806: LD_EXP 8
3810: PPUSH
3811: CALL_OW 302
3815: AND
3816: IFFALSE 3830
// Say ( Bobby , D1a-Bobby-1 ) ;
3818: LD_EXP 8
3822: PPUSH
3823: LD_STRING D1a-Bobby-1
3825: PPUSH
3826: CALL_OW 88
// if not ( Skip ) then
3830: LD_EXP 100
3834: NOT
3835: IFFALSE 3872
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
3837: LD_VAR 0 3
3841: PUSH
3842: LD_EXP 7
3846: EQUAL
3847: PUSH
3848: LD_EXP 7
3852: PPUSH
3853: CALL_OW 302
3857: AND
3858: IFFALSE 3872
// Say ( Cyrus , D1a-Cyrus-1 ) ;
3860: LD_EXP 7
3864: PPUSH
3865: LD_STRING D1a-Cyrus-1
3867: PPUSH
3868: CALL_OW 88
// if IsOk ( Bobby ) and not ( Skip ) then
3872: LD_EXP 8
3876: PPUSH
3877: CALL_OW 302
3881: PUSH
3882: LD_EXP 100
3886: NOT
3887: AND
3888: IFFALSE 3905
// ComMoveXY ( Bobby , 47 , 70 ) ;
3890: LD_EXP 8
3894: PPUSH
3895: LD_INT 47
3897: PPUSH
3898: LD_INT 70
3900: PPUSH
3901: CALL_OW 111
// if IsOk ( Bobby ) and not ( Skip ) then
3905: LD_EXP 8
3909: PPUSH
3910: CALL_OW 302
3914: PUSH
3915: LD_EXP 100
3919: NOT
3920: AND
3921: IFFALSE 3935
// AddComWait ( Bobby , 0 0$0.5 ) ;
3923: LD_EXP 8
3927: PPUSH
3928: LD_INT 18
3930: PPUSH
3931: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
3935: LD_EXP 7
3939: PPUSH
3940: CALL_OW 302
3944: PUSH
3945: LD_EXP 100
3949: NOT
3950: AND
3951: IFFALSE 3968
// AddComMoveXY ( Cyrus , 43 , 69 ) ;
3953: LD_EXP 7
3957: PPUSH
3958: LD_INT 43
3960: PPUSH
3961: LD_INT 69
3963: PPUSH
3964: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
3968: LD_EXP 7
3972: PPUSH
3973: CALL_OW 302
3977: PUSH
3978: LD_EXP 100
3982: NOT
3983: AND
3984: IFFALSE 3998
// AddComWait ( Cyrus , 0 0$0.5 ) ;
3986: LD_EXP 7
3990: PPUSH
3991: LD_INT 18
3993: PPUSH
3994: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
3998: LD_EXP 7
4002: PPUSH
4003: CALL_OW 302
4007: PUSH
4008: LD_EXP 100
4012: NOT
4013: AND
4014: IFFALSE 4057
// if IsOk ( Bobby ) then
4016: LD_EXP 8
4020: PPUSH
4021: CALL_OW 302
4025: IFFALSE 4043
// AddComTurnUnit ( Cyrus , Bobby ) else
4027: LD_EXP 7
4031: PPUSH
4032: LD_EXP 8
4036: PPUSH
4037: CALL_OW 179
4041: GO 4057
// AddComTurnUnit ( Cyrus , John ) ;
4043: LD_EXP 7
4047: PPUSH
4048: LD_EXP 6
4052: PPUSH
4053: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4057: LD_EXP 6
4061: PPUSH
4062: CALL_OW 302
4066: PUSH
4067: LD_EXP 100
4071: NOT
4072: AND
4073: IFFALSE 4087
// AddComWait ( John , 0 0$5 ) ;
4075: LD_EXP 6
4079: PPUSH
4080: LD_INT 175
4082: PPUSH
4083: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4087: LD_EXP 6
4091: PPUSH
4092: CALL_OW 302
4096: PUSH
4097: LD_EXP 100
4101: NOT
4102: AND
4103: IFFALSE 4120
// AddComMoveXY ( John , 36 , 63 ) ;
4105: LD_EXP 6
4109: PPUSH
4110: LD_INT 36
4112: PPUSH
4113: LD_INT 63
4115: PPUSH
4116: CALL_OW 171
// if IsOk ( John ) and not ( Skip ) then
4120: LD_EXP 6
4124: PPUSH
4125: CALL_OW 302
4129: PUSH
4130: LD_EXP 100
4134: NOT
4135: AND
4136: IFFALSE 4179
// if IsOk ( Cyrus ) then
4138: LD_EXP 7
4142: PPUSH
4143: CALL_OW 302
4147: IFFALSE 4165
// AddComTurnUnit ( John , Cyrus ) else
4149: LD_EXP 6
4153: PPUSH
4154: LD_EXP 7
4158: PPUSH
4159: CALL_OW 179
4163: GO 4179
// AddComTurnUnit ( John , Bobby ) ;
4165: LD_EXP 6
4169: PPUSH
4170: LD_EXP 8
4174: PPUSH
4175: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4179: LD_EXP 6
4183: PPUSH
4184: CALL_OW 302
4188: PUSH
4189: LD_EXP 100
4193: NOT
4194: AND
4195: IFFALSE 4209
// Say ( John , D1a-JMM-1 ) ;
4197: LD_EXP 6
4201: PPUSH
4202: LD_STRING D1a-JMM-1
4204: PPUSH
4205: CALL_OW 88
// Un = alive [ Rand ( 1 , alive ) ] ;
4209: LD_ADDR_VAR 0 3
4213: PUSH
4214: LD_VAR 0 2
4218: PUSH
4219: LD_INT 1
4221: PPUSH
4222: LD_VAR 0 2
4226: PPUSH
4227: CALL_OW 12
4231: ARRAY
4232: ST_TO_ADDR
// if not ( Skip ) then
4233: LD_EXP 100
4237: NOT
4238: IFFALSE 4275
// if ( Un = Bobby ) and IsOk ( Bobby ) then
4240: LD_VAR 0 3
4244: PUSH
4245: LD_EXP 8
4249: EQUAL
4250: PUSH
4251: LD_EXP 8
4255: PPUSH
4256: CALL_OW 302
4260: AND
4261: IFFALSE 4275
// Say ( Bobby , D1a-Bobby-2 ) ;
4263: LD_EXP 8
4267: PPUSH
4268: LD_STRING D1a-Bobby-2
4270: PPUSH
4271: CALL_OW 88
// if not ( Skip ) then
4275: LD_EXP 100
4279: NOT
4280: IFFALSE 4317
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
4282: LD_VAR 0 3
4286: PUSH
4287: LD_EXP 7
4291: EQUAL
4292: PUSH
4293: LD_EXP 7
4297: PPUSH
4298: CALL_OW 302
4302: AND
4303: IFFALSE 4317
// Say ( Cyrus , D1a-Cyrus-2 ) ;
4305: LD_EXP 7
4309: PPUSH
4310: LD_STRING D1a-Cyrus-2
4312: PPUSH
4313: CALL_OW 88
// CenterOnUnits ( [ John , Lisa ] ) ;
4317: LD_EXP 6
4321: PUSH
4322: LD_EXP 11
4326: PUSH
4327: EMPTY
4328: LIST
4329: LIST
4330: PPUSH
4331: CALL_OW 85
// if IsOk ( Bobby ) and not ( Skip ) then
4335: LD_EXP 8
4339: PPUSH
4340: CALL_OW 302
4344: PUSH
4345: LD_EXP 100
4349: NOT
4350: AND
4351: IFFALSE 4367
// AddComTurnUnit ( Bobby , John ) ;
4353: LD_EXP 8
4357: PPUSH
4358: LD_EXP 6
4362: PPUSH
4363: CALL_OW 179
// if IsOk ( Bobby ) and not ( Skip ) then
4367: LD_EXP 8
4371: PPUSH
4372: CALL_OW 302
4376: PUSH
4377: LD_EXP 100
4381: NOT
4382: AND
4383: IFFALSE 4400
// AddComMoveXY ( Bobby , 42 , 69 ) ;
4385: LD_EXP 8
4389: PPUSH
4390: LD_INT 42
4392: PPUSH
4393: LD_INT 69
4395: PPUSH
4396: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
4400: LD_EXP 8
4404: PPUSH
4405: CALL_OW 302
4409: PUSH
4410: LD_EXP 100
4414: NOT
4415: AND
4416: IFFALSE 4430
// AddComWait ( Bobby , 0 0$0.3 ) ;
4418: LD_EXP 8
4422: PPUSH
4423: LD_INT 10
4425: PPUSH
4426: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4430: LD_EXP 7
4434: PPUSH
4435: CALL_OW 302
4439: PUSH
4440: LD_EXP 100
4444: NOT
4445: AND
4446: IFFALSE 4460
// AddComWait ( Cyrus , 0 0$2 ) ;
4448: LD_EXP 7
4452: PPUSH
4453: LD_INT 70
4455: PPUSH
4456: CALL_OW 202
// if IsOk ( Cyrus ) and not ( Skip ) then
4460: LD_EXP 7
4464: PPUSH
4465: CALL_OW 302
4469: PUSH
4470: LD_EXP 100
4474: NOT
4475: AND
4476: IFFALSE 4493
// AddComMoveXY ( Cyrus , 37 , 66 ) ;
4478: LD_EXP 7
4482: PPUSH
4483: LD_INT 37
4485: PPUSH
4486: LD_INT 66
4488: PPUSH
4489: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
4493: LD_EXP 7
4497: PPUSH
4498: CALL_OW 302
4502: PUSH
4503: LD_EXP 100
4507: NOT
4508: AND
4509: IFFALSE 4525
// AddComTurnUnit ( Cyrus , John ) ;
4511: LD_EXP 7
4515: PPUSH
4516: LD_EXP 6
4520: PPUSH
4521: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4525: LD_EXP 6
4529: PPUSH
4530: CALL_OW 302
4534: PUSH
4535: LD_EXP 100
4539: NOT
4540: AND
4541: IFFALSE 4555
// AddComWait ( John , 0 0$3 ) ;
4543: LD_EXP 6
4547: PPUSH
4548: LD_INT 105
4550: PPUSH
4551: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4555: LD_EXP 6
4559: PPUSH
4560: CALL_OW 302
4564: PUSH
4565: LD_EXP 100
4569: NOT
4570: AND
4571: IFFALSE 4587
// AddComTurnUnit ( John , Lisa ) ;
4573: LD_EXP 6
4577: PPUSH
4578: LD_EXP 11
4582: PPUSH
4583: CALL_OW 179
// if IsOk ( John ) and not ( Skip ) then
4587: LD_EXP 6
4591: PPUSH
4592: CALL_OW 302
4596: PUSH
4597: LD_EXP 100
4601: NOT
4602: AND
4603: IFFALSE 4617
// AddComWait ( John , 0 0$1 ) ;
4605: LD_EXP 6
4609: PPUSH
4610: LD_INT 35
4612: PPUSH
4613: CALL_OW 202
// if IsOk ( John ) and not ( Skip ) then
4617: LD_EXP 6
4621: PPUSH
4622: CALL_OW 302
4626: PUSH
4627: LD_EXP 100
4631: NOT
4632: AND
4633: IFFALSE 4644
// AddComHold ( John ) ;
4635: LD_EXP 6
4639: PPUSH
4640: CALL_OW 200
// if IsOk ( John ) and not ( Skip ) then
4644: LD_EXP 6
4648: PPUSH
4649: CALL_OW 302
4653: PUSH
4654: LD_EXP 100
4658: NOT
4659: AND
4660: IFFALSE 4674
// Say ( John , D1a-JMM-2 ) ;
4662: LD_EXP 6
4666: PPUSH
4667: LD_STRING D1a-JMM-2
4669: PPUSH
4670: CALL_OW 88
// if IsOk ( John ) and not ( Skip ) then
4674: LD_EXP 6
4678: PPUSH
4679: CALL_OW 302
4683: PUSH
4684: LD_EXP 100
4688: NOT
4689: AND
4690: IFFALSE 4704
// ComWait ( John , 0 0$0.5 ) ;
4692: LD_EXP 6
4696: PPUSH
4697: LD_INT 18
4699: PPUSH
4700: CALL_OW 142
// if IsOk ( John ) and not ( Skip ) then
4704: LD_EXP 6
4708: PPUSH
4709: CALL_OW 302
4713: PUSH
4714: LD_EXP 100
4718: NOT
4719: AND
4720: IFFALSE 4736
// AddComTurnUnit ( John , Lisa ) ;
4722: LD_EXP 6
4726: PPUSH
4727: LD_EXP 11
4731: PPUSH
4732: CALL_OW 179
// if not ( IsAt ( John , 36 , 63 ) ) then
4736: LD_EXP 6
4740: PPUSH
4741: LD_INT 36
4743: PPUSH
4744: LD_INT 63
4746: PPUSH
4747: CALL_OW 307
4751: NOT
4752: IFFALSE 4783
// begin ComMoveXY ( John , 36 , 63 ) ;
4754: LD_EXP 6
4758: PPUSH
4759: LD_INT 36
4761: PPUSH
4762: LD_INT 63
4764: PPUSH
4765: CALL_OW 111
// AddComTurnUnit ( John , Lisa ) ;
4769: LD_EXP 6
4773: PPUSH
4774: LD_EXP 11
4778: PPUSH
4779: CALL_OW 179
// end ; if IsOk ( Bobby ) and not ( Skip ) then
4783: LD_EXP 8
4787: PPUSH
4788: CALL_OW 302
4792: PUSH
4793: LD_EXP 100
4797: NOT
4798: AND
4799: IFFALSE 4813
// ComWait ( Bobby , 0 0$1 ) ;
4801: LD_EXP 8
4805: PPUSH
4806: LD_INT 35
4808: PPUSH
4809: CALL_OW 142
// if IsOk ( Bobby ) and not ( Skip ) then
4813: LD_EXP 8
4817: PPUSH
4818: CALL_OW 302
4822: PUSH
4823: LD_EXP 100
4827: NOT
4828: AND
4829: IFFALSE 4845
// AddComTurnUnit ( Bobby , Lisa ) ;
4831: LD_EXP 8
4835: PPUSH
4836: LD_EXP 11
4840: PPUSH
4841: CALL_OW 179
// if IsOk ( Bobby ) and not ( IsAt ( Bobby , 36 , 61 ) ) then
4845: LD_EXP 8
4849: PPUSH
4850: CALL_OW 302
4854: PUSH
4855: LD_EXP 8
4859: PPUSH
4860: LD_INT 36
4862: PPUSH
4863: LD_INT 61
4865: PPUSH
4866: CALL_OW 307
4870: NOT
4871: AND
4872: IFFALSE 4889
// AddComMoveXY ( Bobby , 36 , 61 ) ;
4874: LD_EXP 8
4878: PPUSH
4879: LD_INT 36
4881: PPUSH
4882: LD_INT 61
4884: PPUSH
4885: CALL_OW 171
// if IsOk ( Bobby ) and not ( Skip ) then
4889: LD_EXP 8
4893: PPUSH
4894: CALL_OW 302
4898: PUSH
4899: LD_EXP 100
4903: NOT
4904: AND
4905: IFFALSE 4919
// AddComWait ( Bobby , 0 0$0.5 ) ;
4907: LD_EXP 8
4911: PPUSH
4912: LD_INT 18
4914: PPUSH
4915: CALL_OW 202
// if IsOk ( Bobby ) and not ( Skip ) then
4919: LD_EXP 8
4923: PPUSH
4924: CALL_OW 302
4928: PUSH
4929: LD_EXP 100
4933: NOT
4934: AND
4935: IFFALSE 4951
// AddComTurnUnit ( Bobby , Lisa ) ;
4937: LD_EXP 8
4941: PPUSH
4942: LD_EXP 11
4946: PPUSH
4947: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
4951: LD_EXP 7
4955: PPUSH
4956: CALL_OW 302
4960: PUSH
4961: LD_EXP 100
4965: NOT
4966: AND
4967: IFFALSE 4981
// ComWait ( Cyrus , 0 0$1 ) ;
4969: LD_EXP 7
4973: PPUSH
4974: LD_INT 35
4976: PPUSH
4977: CALL_OW 142
// if IsOk ( Cyrus ) and not ( Skip ) then
4981: LD_EXP 7
4985: PPUSH
4986: CALL_OW 302
4990: PUSH
4991: LD_EXP 100
4995: NOT
4996: AND
4997: IFFALSE 5013
// AddComTurnUnit ( Cyrus , Lisa ) ;
4999: LD_EXP 7
5003: PPUSH
5004: LD_EXP 11
5008: PPUSH
5009: CALL_OW 179
// if IsOk ( Cyrus ) and not ( Skip ) then
5013: LD_EXP 7
5017: PPUSH
5018: CALL_OW 302
5022: PUSH
5023: LD_EXP 100
5027: NOT
5028: AND
5029: IFFALSE 5043
// AddComWait ( Cyrus , 0 0$1 ) ;
5031: LD_EXP 7
5035: PPUSH
5036: LD_INT 35
5038: PPUSH
5039: CALL_OW 202
// if IsOk ( Cyrus ) and not ( IsAt ( Cyrus , 35 , 63 ) ) then
5043: LD_EXP 7
5047: PPUSH
5048: CALL_OW 302
5052: PUSH
5053: LD_EXP 7
5057: PPUSH
5058: LD_INT 35
5060: PPUSH
5061: LD_INT 63
5063: PPUSH
5064: CALL_OW 307
5068: NOT
5069: AND
5070: IFFALSE 5087
// AddComMoveXY ( Cyrus , 35 , 63 ) ;
5072: LD_EXP 7
5076: PPUSH
5077: LD_INT 35
5079: PPUSH
5080: LD_INT 63
5082: PPUSH
5083: CALL_OW 171
// if IsOk ( Cyrus ) and not ( Skip ) then
5087: LD_EXP 7
5091: PPUSH
5092: CALL_OW 302
5096: PUSH
5097: LD_EXP 100
5101: NOT
5102: AND
5103: IFFALSE 5119
// AddComTurnUnit ( Cyrus , Lisa ) ;
5105: LD_EXP 7
5109: PPUSH
5110: LD_EXP 11
5114: PPUSH
5115: CALL_OW 179
// if IsOk ( Lisa ) and not ( Skip ) then
5119: LD_EXP 11
5123: PPUSH
5124: CALL_OW 302
5128: PUSH
5129: LD_EXP 100
5133: NOT
5134: AND
5135: IFFALSE 5146
// CenterOnUnits ( Lisa ) ;
5137: LD_EXP 11
5141: PPUSH
5142: CALL_OW 85
// if IsOk ( Lisa ) and not ( Skip ) then
5146: LD_EXP 11
5150: PPUSH
5151: CALL_OW 302
5155: PUSH
5156: LD_EXP 100
5160: NOT
5161: AND
5162: IFFALSE 5176
// ComWait ( Lisa , 0 0$2 ) ;
5164: LD_EXP 11
5168: PPUSH
5169: LD_INT 70
5171: PPUSH
5172: CALL_OW 142
// AddComWalk ( Lisa ) ;
5176: LD_EXP 11
5180: PPUSH
5181: CALL_OW 198
// AddComMoveXY ( Lisa , 33 , 59 ) ;
5185: LD_EXP 11
5189: PPUSH
5190: LD_INT 33
5192: PPUSH
5193: LD_INT 59
5195: PPUSH
5196: CALL_OW 171
// AddComTurnUnit ( Lisa , John ) ;
5200: LD_EXP 11
5204: PPUSH
5205: LD_EXP 6
5209: PPUSH
5210: CALL_OW 179
// if not ( Skip ) then
5214: LD_EXP 100
5218: NOT
5219: IFFALSE 5233
// ComWait ( AmME1 , 0 0$3 ) ;
5221: LD_EXP 12
5225: PPUSH
5226: LD_INT 105
5228: PPUSH
5229: CALL_OW 142
// AddComWalk ( AmME1 ) ;
5233: LD_EXP 12
5237: PPUSH
5238: CALL_OW 198
// AddComMoveXY ( AmME1 , 31 , 58 ) ;
5242: LD_EXP 12
5246: PPUSH
5247: LD_INT 31
5249: PPUSH
5250: LD_INT 58
5252: PPUSH
5253: CALL_OW 171
// AddComTurnUnit ( AmME1 , John ) ;
5257: LD_EXP 12
5261: PPUSH
5262: LD_EXP 6
5266: PPUSH
5267: CALL_OW 179
// if not ( Skip ) then
5271: LD_EXP 100
5275: NOT
5276: IFFALSE 5290
// ComWait ( AmFE2 , 0 0$3 ) ;
5278: LD_EXP 13
5282: PPUSH
5283: LD_INT 105
5285: PPUSH
5286: CALL_OW 142
// AddComWalk ( AmFE2 ) ;
5290: LD_EXP 13
5294: PPUSH
5295: CALL_OW 198
// AddComMoveXY ( AmFE2 , 33 , 56 ) ;
5299: LD_EXP 13
5303: PPUSH
5304: LD_INT 33
5306: PPUSH
5307: LD_INT 56
5309: PPUSH
5310: CALL_OW 171
// AddComTurnUnit ( AmFE2 , John ) ;
5314: LD_EXP 13
5318: PPUSH
5319: LD_EXP 6
5323: PPUSH
5324: CALL_OW 179
// if Nick then
5328: LD_EXP 10
5332: IFFALSE 5391
// begin if not ( Skip ) then
5334: LD_EXP 100
5338: NOT
5339: IFFALSE 5353
// ComWait ( Nick , 0 0$2 ) ;
5341: LD_EXP 10
5345: PPUSH
5346: LD_INT 70
5348: PPUSH
5349: CALL_OW 142
// AddComWalk ( Nick ) ;
5353: LD_EXP 10
5357: PPUSH
5358: CALL_OW 198
// AddComMoveXY ( Nick , 34 , 57 ) ;
5362: LD_EXP 10
5366: PPUSH
5367: LD_INT 34
5369: PPUSH
5370: LD_INT 57
5372: PPUSH
5373: CALL_OW 171
// AddComTurnUnit ( Nick , John ) ;
5377: LD_EXP 10
5381: PPUSH
5382: LD_EXP 6
5386: PPUSH
5387: CALL_OW 179
// end ; Say ( Lisa , D1a-Lisa-2 ) ;
5391: LD_EXP 11
5395: PPUSH
5396: LD_STRING D1a-Lisa-2
5398: PPUSH
5399: CALL_OW 88
// end else
5403: GO 6132
// begin ComMoveXY ( John , 49 , 66 ) ;
5405: LD_EXP 6
5409: PPUSH
5410: LD_INT 49
5412: PPUSH
5413: LD_INT 66
5415: PPUSH
5416: CALL_OW 111
// AddComWait ( John , 0 0$0.5 ) ;
5420: LD_EXP 6
5424: PPUSH
5425: LD_INT 18
5427: PPUSH
5428: CALL_OW 202
// if not ( Skip ) then
5432: LD_EXP 100
5436: NOT
5437: IFFALSE 5446
// Wait ( 0 0$3 ) ;
5439: LD_INT 105
5441: PPUSH
5442: CALL_OW 67
// if not ( Skip ) then
5446: LD_EXP 100
5450: NOT
5451: IFFALSE 5465
// Say ( John , D1b-JMM-1 ) ;
5453: LD_EXP 6
5457: PPUSH
5458: LD_STRING D1b-JMM-1
5460: PPUSH
5461: CALL_OW 88
// if not ( Skip ) then
5465: LD_EXP 100
5469: NOT
5470: IFFALSE 5487
// AddComTurnXY ( John , 54 , 71 ) ;
5472: LD_EXP 6
5476: PPUSH
5477: LD_INT 54
5479: PPUSH
5480: LD_INT 71
5482: PPUSH
5483: CALL_OW 178
// if not ( Skip ) then
5487: LD_EXP 100
5491: NOT
5492: IFFALSE 5506
// AddComWait ( John , 0 0$0.7 ) ;
5494: LD_EXP 6
5498: PPUSH
5499: LD_INT 24
5501: PPUSH
5502: CALL_OW 202
// if not ( Skip ) then
5506: LD_EXP 100
5510: NOT
5511: IFFALSE 5528
// AddComTurnXY ( John , 55 , 63 ) ;
5513: LD_EXP 6
5517: PPUSH
5518: LD_INT 55
5520: PPUSH
5521: LD_INT 63
5523: PPUSH
5524: CALL_OW 178
// if not ( Skip ) then
5528: LD_EXP 100
5532: NOT
5533: IFFALSE 5547
// AddComWait ( John , 0 0$0.7 ) ;
5535: LD_EXP 6
5539: PPUSH
5540: LD_INT 24
5542: PPUSH
5543: CALL_OW 202
// if not ( Skip ) then
5547: LD_EXP 100
5551: NOT
5552: IFFALSE 5569
// AddComMoveXY ( John , 45 , 62 ) ;
5554: LD_EXP 6
5558: PPUSH
5559: LD_INT 45
5561: PPUSH
5562: LD_INT 62
5564: PPUSH
5565: CALL_OW 171
// if not ( Skip ) then
5569: LD_EXP 100
5573: NOT
5574: IFFALSE 5591
// AddComTurnXY ( John , 52 , 60 ) ;
5576: LD_EXP 6
5580: PPUSH
5581: LD_INT 52
5583: PPUSH
5584: LD_INT 60
5586: PPUSH
5587: CALL_OW 178
// if not ( Skip ) then
5591: LD_EXP 100
5595: NOT
5596: IFFALSE 5610
// AddComWait ( John , 0 0$1 ) ;
5598: LD_EXP 6
5602: PPUSH
5603: LD_INT 35
5605: PPUSH
5606: CALL_OW 202
// if not ( Skip ) then
5610: LD_EXP 100
5614: NOT
5615: IFFALSE 5632
// AddComTurnXY ( John , 37 , 48 ) ;
5617: LD_EXP 6
5621: PPUSH
5622: LD_INT 37
5624: PPUSH
5625: LD_INT 48
5627: PPUSH
5628: CALL_OW 178
// if not ( Skip ) then
5632: LD_EXP 100
5636: NOT
5637: IFFALSE 5651
// AddComWait ( John , 0 0$0.5 ) ;
5639: LD_EXP 6
5643: PPUSH
5644: LD_INT 18
5646: PPUSH
5647: CALL_OW 202
// if not ( Skip ) then
5651: LD_EXP 100
5655: NOT
5656: IFFALSE 5673
// AddComTurnXY ( John , 36 , 60 ) ;
5658: LD_EXP 6
5662: PPUSH
5663: LD_INT 36
5665: PPUSH
5666: LD_INT 60
5668: PPUSH
5669: CALL_OW 178
// if not ( Skip ) then
5673: LD_EXP 100
5677: NOT
5678: IFFALSE 5692
// AddComWait ( John , 0 0$1 ) ;
5680: LD_EXP 6
5684: PPUSH
5685: LD_INT 35
5687: PPUSH
5688: CALL_OW 202
// if not ( Skip ) then
5692: LD_EXP 100
5696: NOT
5697: IFFALSE 5714
// AddComMoveXY ( John , 41 , 65 ) ;
5699: LD_EXP 6
5703: PPUSH
5704: LD_INT 41
5706: PPUSH
5707: LD_INT 65
5709: PPUSH
5710: CALL_OW 171
// AddComMoveXY ( John , 36 , 61 ) ;
5714: LD_EXP 6
5718: PPUSH
5719: LD_INT 36
5721: PPUSH
5722: LD_INT 61
5724: PPUSH
5725: CALL_OW 171
// if not ( Skip ) then
5729: LD_EXP 100
5733: NOT
5734: IFFALSE 5751
// AddComTurnXY ( John , 29 , 54 ) ;
5736: LD_EXP 6
5740: PPUSH
5741: LD_INT 29
5743: PPUSH
5744: LD_INT 54
5746: PPUSH
5747: CALL_OW 178
// while not ( GetDistUnitXY ( John , 36 , 61 ) < 2 ) do
5751: LD_EXP 6
5755: PPUSH
5756: LD_INT 36
5758: PPUSH
5759: LD_INT 61
5761: PPUSH
5762: CALL_OW 297
5766: PUSH
5767: LD_INT 2
5769: LESS
5770: NOT
5771: IFFALSE 5782
// Wait ( 0 0$0.2 ) ;
5773: LD_INT 7
5775: PPUSH
5776: CALL_OW 67
5780: GO 5751
// if not ( Skip ) then
5782: LD_EXP 100
5786: NOT
5787: IFFALSE 5798
// AddComCrawl ( John ) ;
5789: LD_EXP 6
5793: PPUSH
5794: CALL_OW 197
// CenterOnXY ( GetX ( Lisa ) - 1 , GetY ( Lisa ) - 3 ) ;
5798: LD_EXP 11
5802: PPUSH
5803: CALL_OW 250
5807: PUSH
5808: LD_INT 1
5810: MINUS
5811: PPUSH
5812: LD_EXP 11
5816: PPUSH
5817: CALL_OW 251
5821: PUSH
5822: LD_INT 3
5824: MINUS
5825: PPUSH
5826: CALL_OW 84
// Say ( John , D1b-JMM-1a ) ;
5830: LD_EXP 6
5834: PPUSH
5835: LD_STRING D1b-JMM-1a
5837: PPUSH
5838: CALL_OW 88
// if not ( Skip ) then
5842: LD_EXP 100
5846: NOT
5847: IFFALSE 5861
// ComWait ( John , 0 0$3 ) ;
5849: LD_EXP 6
5853: PPUSH
5854: LD_INT 105
5856: PPUSH
5857: CALL_OW 142
// AddComWalk ( John ) ;
5861: LD_EXP 6
5865: PPUSH
5866: CALL_OW 198
// AddComTurnUnit ( John , Lisa ) ;
5870: LD_EXP 6
5874: PPUSH
5875: LD_EXP 11
5879: PPUSH
5880: CALL_OW 179
// if not ( Skip ) then
5884: LD_EXP 100
5888: NOT
5889: IFFALSE 5903
// ComWait ( Lisa , 0 0$0.5 ) ;
5891: LD_EXP 11
5895: PPUSH
5896: LD_INT 18
5898: PPUSH
5899: CALL_OW 142
// AddComWalk ( Lisa ) ;
5903: LD_EXP 11
5907: PPUSH
5908: CALL_OW 198
// AddComMoveXY ( Lisa , 33 , 59 ) ;
5912: LD_EXP 11
5916: PPUSH
5917: LD_INT 33
5919: PPUSH
5920: LD_INT 59
5922: PPUSH
5923: CALL_OW 171
// AddComTurnUnit ( Lisa , John ) ;
5927: LD_EXP 11
5931: PPUSH
5932: LD_EXP 6
5936: PPUSH
5937: CALL_OW 179
// if not ( Skip ) then
5941: LD_EXP 100
5945: NOT
5946: IFFALSE 5960
// ComWait ( AmME1 , 0 0$1 ) ;
5948: LD_EXP 12
5952: PPUSH
5953: LD_INT 35
5955: PPUSH
5956: CALL_OW 142
// AddComWalk ( AmME1 ) ;
5960: LD_EXP 12
5964: PPUSH
5965: CALL_OW 198
// AddComMoveXY ( AmME1 , 31 , 58 ) ;
5969: LD_EXP 12
5973: PPUSH
5974: LD_INT 31
5976: PPUSH
5977: LD_INT 58
5979: PPUSH
5980: CALL_OW 171
// AddComTurnUnit ( AmME1 , John ) ;
5984: LD_EXP 12
5988: PPUSH
5989: LD_EXP 6
5993: PPUSH
5994: CALL_OW 179
// if not ( Skip ) then
5998: LD_EXP 100
6002: NOT
6003: IFFALSE 6017
// ComWait ( AmFE2 , 0 0$1 ) ;
6005: LD_EXP 13
6009: PPUSH
6010: LD_INT 35
6012: PPUSH
6013: CALL_OW 142
// AddComWalk ( AmFE2 ) ;
6017: LD_EXP 13
6021: PPUSH
6022: CALL_OW 198
// AddComMoveXY ( AmFE2 , 33 , 56 ) ;
6026: LD_EXP 13
6030: PPUSH
6031: LD_INT 33
6033: PPUSH
6034: LD_INT 56
6036: PPUSH
6037: CALL_OW 171
// AddComTurnUnit ( AmFE2 , John ) ;
6041: LD_EXP 13
6045: PPUSH
6046: LD_EXP 6
6050: PPUSH
6051: CALL_OW 179
// if Nick then
6055: LD_EXP 10
6059: IFFALSE 6099
// begin AddComWalk ( Nick ) ;
6061: LD_EXP 10
6065: PPUSH
6066: CALL_OW 198
// AddComMoveXY ( Nick , 34 , 57 ) ;
6070: LD_EXP 10
6074: PPUSH
6075: LD_INT 34
6077: PPUSH
6078: LD_INT 57
6080: PPUSH
6081: CALL_OW 171
// AddComTurnUnit ( Nick , John ) ;
6085: LD_EXP 10
6089: PPUSH
6090: LD_EXP 6
6094: PPUSH
6095: CALL_OW 179
// end ; if not ( Skip ) then
6099: LD_EXP 100
6103: NOT
6104: IFFALSE 6113
// Wait ( 0 0$1 ) ;
6106: LD_INT 35
6108: PPUSH
6109: CALL_OW 67
// if not ( Skip ) then
6113: LD_EXP 100
6117: NOT
6118: IFFALSE 6132
// Say ( Lisa , D1b-Lisa-1 ) ;
6120: LD_EXP 11
6124: PPUSH
6125: LD_STRING D1b-Lisa-1
6127: PPUSH
6128: CALL_OW 88
// end ; if not ( Skip ) then
6132: LD_EXP 100
6136: NOT
6137: IFFALSE 6151
// Say ( John , D1-JMM-1 ) ;
6139: LD_EXP 6
6143: PPUSH
6144: LD_STRING D1-JMM-1
6146: PPUSH
6147: CALL_OW 88
// if not ( Skip ) then
6151: LD_EXP 100
6155: NOT
6156: IFFALSE 6170
// Say ( Lisa , D1-Lisa-1 ) ;
6158: LD_EXP 11
6162: PPUSH
6163: LD_STRING D1-Lisa-1
6165: PPUSH
6166: CALL_OW 88
// if not ( Skip ) then
6170: LD_EXP 100
6174: NOT
6175: IFFALSE 6189
// Say ( John , D1-JMM-2 ) ;
6177: LD_EXP 6
6181: PPUSH
6182: LD_STRING D1-JMM-2
6184: PPUSH
6185: CALL_OW 88
// if not ( Skip ) then
6189: LD_EXP 100
6193: NOT
6194: IFFALSE 6208
// SayRadio ( Powell , D1-Pow-2 ) ;
6196: LD_EXP 15
6200: PPUSH
6201: LD_STRING D1-Pow-2
6203: PPUSH
6204: CALL_OW 94
// if not ( Skip ) and IsOk ( Cyrus ) then
6208: LD_EXP 100
6212: NOT
6213: PUSH
6214: LD_EXP 7
6218: PPUSH
6219: CALL_OW 302
6223: AND
6224: IFFALSE 6250
// begin Say ( Cyrus , D1-Cyrus-2 ) ;
6226: LD_EXP 7
6230: PPUSH
6231: LD_STRING D1-Cyrus-2
6233: PPUSH
6234: CALL_OW 88
// Say ( John , D1-JMM-3 ) ;
6238: LD_EXP 6
6242: PPUSH
6243: LD_STRING D1-JMM-3
6245: PPUSH
6246: CALL_OW 88
// end ; if not ( Skip ) then
6250: LD_EXP 100
6254: NOT
6255: IFFALSE 6269
// SayRadio ( Powell , D1-Pow-3 ) ;
6257: LD_EXP 15
6261: PPUSH
6262: LD_STRING D1-Pow-3
6264: PPUSH
6265: CALL_OW 94
// if not ( Skip ) then
6269: LD_EXP 100
6273: NOT
6274: IFFALSE 6288
// Say ( John , D1-JMM-4 ) ;
6276: LD_EXP 6
6280: PPUSH
6281: LD_STRING D1-JMM-4
6283: PPUSH
6284: CALL_OW 88
// if not ( Skip ) then
6288: LD_EXP 100
6292: NOT
6293: IFFALSE 6307
// SayRadio ( Powell , D1-Pow-4 ) ;
6295: LD_EXP 15
6299: PPUSH
6300: LD_STRING D1-Pow-4
6302: PPUSH
6303: CALL_OW 94
// if not ( Skip ) then
6307: LD_EXP 100
6311: NOT
6312: IFFALSE 6326
// SayRadio ( Powell , D1-Pow-4a ) ;
6314: LD_EXP 15
6318: PPUSH
6319: LD_STRING D1-Pow-4a
6321: PPUSH
6322: CALL_OW 94
// alive = [ ] ;
6326: LD_ADDR_VAR 0 2
6330: PUSH
6331: EMPTY
6332: ST_TO_ADDR
// Speaker = [ ] ;
6333: LD_ADDR_EXP 115
6337: PUSH
6338: EMPTY
6339: ST_TO_ADDR
// if IsOk ( Bobby ) then
6340: LD_EXP 8
6344: PPUSH
6345: CALL_OW 302
6349: IFFALSE 6367
// alive = alive ^ Bobby ;
6351: LD_ADDR_VAR 0 2
6355: PUSH
6356: LD_VAR 0 2
6360: PUSH
6361: LD_EXP 8
6365: ADD
6366: ST_TO_ADDR
// if IsOk ( Cyrus ) then
6367: LD_EXP 7
6371: PPUSH
6372: CALL_OW 302
6376: IFFALSE 6394
// alive = alive ^ Cyrus ;
6378: LD_ADDR_VAR 0 2
6382: PUSH
6383: LD_VAR 0 2
6387: PUSH
6388: LD_EXP 7
6392: ADD
6393: ST_TO_ADDR
// if ( IsOk ( Bobby ) or IsOk ( Cyrus ) ) then
6394: LD_EXP 8
6398: PPUSH
6399: CALL_OW 302
6403: PUSH
6404: LD_EXP 7
6408: PPUSH
6409: CALL_OW 302
6413: OR
6414: IFFALSE 6440
// Un = alive [ Rand ( 1 , alive ) ] ;
6416: LD_ADDR_VAR 0 3
6420: PUSH
6421: LD_VAR 0 2
6425: PUSH
6426: LD_INT 1
6428: PPUSH
6429: LD_VAR 0 2
6433: PPUSH
6434: CALL_OW 12
6438: ARRAY
6439: ST_TO_ADDR
// if alive <> 0 then
6440: LD_VAR 0 2
6444: PUSH
6445: LD_INT 0
6447: NONEQUAL
6448: IFFALSE 6553
// begin if not ( Skip ) then
6450: LD_EXP 100
6454: NOT
6455: IFFALSE 6511
// if ( Un = Bobby ) and IsOk ( Bobby ) then
6457: LD_VAR 0 3
6461: PUSH
6462: LD_EXP 8
6466: EQUAL
6467: PUSH
6468: LD_EXP 8
6472: PPUSH
6473: CALL_OW 302
6477: AND
6478: IFFALSE 6511
// begin Say ( Bobby , D1-Bobby-4 ) ;
6480: LD_EXP 8
6484: PPUSH
6485: LD_STRING D1-Bobby-4
6487: PPUSH
6488: CALL_OW 88
// if not ( Skip ) then
6492: LD_EXP 100
6496: NOT
6497: IFFALSE 6511
// Say ( Lisa , D1-Lisa-4 ) ;
6499: LD_EXP 11
6503: PPUSH
6504: LD_STRING D1-Lisa-4
6506: PPUSH
6507: CALL_OW 88
// end ; if not ( Skip ) then
6511: LD_EXP 100
6515: NOT
6516: IFFALSE 6553
// if ( Un = Cyrus ) and IsOk ( Cyrus ) then
6518: LD_VAR 0 3
6522: PUSH
6523: LD_EXP 7
6527: EQUAL
6528: PUSH
6529: LD_EXP 7
6533: PPUSH
6534: CALL_OW 302
6538: AND
6539: IFFALSE 6553
// Say ( Cyrus , D1-Cyrus-4 ) ;
6541: LD_EXP 7
6545: PPUSH
6546: LD_STRING D1-Cyrus-4
6548: PPUSH
6549: CALL_OW 88
// end ; if not ( Skip ) then
6553: LD_EXP 100
6557: NOT
6558: IFFALSE 6572
// Say ( John , D1-JMM-5 ) ;
6560: LD_EXP 6
6564: PPUSH
6565: LD_STRING D1-JMM-5
6567: PPUSH
6568: CALL_OW 88
// sold = FilterUnitsInArea ( Start , [ f_side , americans ] ) ;
6572: LD_ADDR_VAR 0 1
6576: PUSH
6577: LD_INT 8
6579: PPUSH
6580: LD_INT 22
6582: PUSH
6583: LD_EXP 2
6587: PUSH
6588: EMPTY
6589: LIST
6590: LIST
6591: PPUSH
6592: CALL_OW 70
6596: ST_TO_ADDR
// IngameOff ;
6597: CALL_OW 9
// tick = hlp ;
6601: LD_ADDR_OWVAR 1
6605: PUSH
6606: LD_VAR 0 4
6610: ST_TO_ADDR
// Skip = false ;
6611: LD_ADDR_EXP 100
6615: PUSH
6616: LD_INT 0
6618: ST_TO_ADDR
// ComFree ( sold ) ;
6619: LD_VAR 0 1
6623: PPUSH
6624: CALL_OW 139
// ComFree ( John ) ;
6628: LD_EXP 6
6632: PPUSH
6633: CALL_OW 139
// wait ( 0 0$1 ) ;
6637: LD_INT 35
6639: PPUSH
6640: CALL_OW 67
// ChangeMissionObjectives ( M1 ) ;
6644: LD_STRING M1
6646: PPUSH
6647: CALL_OW 337
// SaveForQuickRestart ;
6651: CALL_OW 22
// Hint ( Engineers ) ;
6655: LD_STRING Engineers
6657: PPUSH
6658: CALL_OW 339
// Hint ( Groups ) ;
6662: LD_STRING Groups
6664: PPUSH
6665: CALL_OW 339
// SetSide ( [ Lisa , AmME1 , AmFE2 ] , americans ) ;
6669: LD_EXP 11
6673: PUSH
6674: LD_EXP 12
6678: PUSH
6679: LD_EXP 13
6683: PUSH
6684: EMPTY
6685: LIST
6686: LIST
6687: LIST
6688: PPUSH
6689: LD_EXP 2
6693: PPUSH
6694: CALL_OW 235
// if Nick then
6698: LD_EXP 10
6702: IFFALSE 6718
// SetSide ( Nick , americans ) ;
6704: LD_EXP 10
6708: PPUSH
6709: LD_EXP 2
6713: PPUSH
6714: CALL_OW 235
// enable ( Engineers_not_dead ) ;
6718: LD_EXP 81
6722: ENABLE_MARKED
// end ;
6723: PPOPN 4
6725: END
// every 0 0$1 trigger ( SeeArea ( americans , Dead_Am_1 ) > 0 ) do
6726: LD_EXP 2
6730: PPUSH
6731: LD_INT 18
6733: PPUSH
6734: CALL_OW 294
6738: PUSH
6739: LD_INT 0
6741: GREATER
6742: IFFALSE 7088
6744: GO 6746
6746: DISABLE
// begin hc_sex = sex_male ;
6747: LD_ADDR_OWVAR 27
6751: PUSH
6752: LD_INT 1
6754: ST_TO_ADDR
// hc_class = class_soldier ;
6755: LD_ADDR_OWVAR 28
6759: PUSH
6760: LD_INT 1
6762: ST_TO_ADDR
// hc_skills = [ 1 , 2 , 1 , 1 ] ;
6763: LD_ADDR_OWVAR 31
6767: PUSH
6768: LD_INT 1
6770: PUSH
6771: LD_INT 2
6773: PUSH
6774: LD_INT 1
6776: PUSH
6777: LD_INT 1
6779: PUSH
6780: EMPTY
6781: LIST
6782: LIST
6783: LIST
6784: LIST
6785: ST_TO_ADDR
// hc_name =  ;
6786: LD_ADDR_OWVAR 26
6790: PUSH
6791: LD_STRING 
6793: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
6794: LD_ADDR_OWVAR 29
6798: PUSH
6799: LD_INT 10
6801: PUSH
6802: LD_INT 10
6804: PUSH
6805: EMPTY
6806: LIST
6807: LIST
6808: ST_TO_ADDR
// uc_side = americans1 ;
6809: LD_ADDR_OWVAR 20
6813: PUSH
6814: LD_EXP 3
6818: ST_TO_ADDR
// uc_nation = nation_american ;
6819: LD_ADDR_OWVAR 21
6823: PUSH
6824: LD_INT 1
6826: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
6827: LD_INT 0
6829: PPUSH
6830: LD_INT 1
6832: PPUSH
6833: LD_INT 0
6835: PPUSH
6836: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
6840: LD_ADDR_OWVAR 24
6844: PUSH
6845: LD_INT 1
6847: PPUSH
6848: LD_INT 6
6850: PPUSH
6851: CALL_OW 12
6855: ST_TO_ADDR
// AmD1 = CreateHuman ;
6856: LD_ADDR_EXP 16
6860: PUSH
6861: CALL_OW 44
6865: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
6866: LD_INT 0
6868: PPUSH
6869: LD_INT 1
6871: PPUSH
6872: LD_INT 0
6874: PPUSH
6875: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
6879: LD_ADDR_OWVAR 24
6883: PUSH
6884: LD_INT 1
6886: PPUSH
6887: LD_INT 6
6889: PPUSH
6890: CALL_OW 12
6894: ST_TO_ADDR
// AmD2 = CreateHuman ;
6895: LD_ADDR_EXP 17
6899: PUSH
6900: CALL_OW 44
6904: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
6905: LD_INT 0
6907: PPUSH
6908: LD_INT 1
6910: PPUSH
6911: LD_INT 0
6913: PPUSH
6914: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
6918: LD_ADDR_OWVAR 24
6922: PUSH
6923: LD_INT 1
6925: PPUSH
6926: LD_INT 6
6928: PPUSH
6929: CALL_OW 12
6933: ST_TO_ADDR
// AmD3 = CreateHuman ;
6934: LD_ADDR_EXP 18
6938: PUSH
6939: CALL_OW 44
6943: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , 0 ) ;
6944: LD_INT 0
6946: PPUSH
6947: LD_INT 1
6949: PPUSH
6950: LD_INT 0
6952: PPUSH
6953: CALL_OW 380
// uc_direction = Rand ( 1 , 6 ) ;
6957: LD_ADDR_OWVAR 24
6961: PUSH
6962: LD_INT 1
6964: PPUSH
6965: LD_INT 6
6967: PPUSH
6968: CALL_OW 12
6972: ST_TO_ADDR
// AmD4 = CreateHuman ;
6973: LD_ADDR_EXP 19
6977: PUSH
6978: CALL_OW 44
6982: ST_TO_ADDR
// SetLives ( [ AmD1 , AmD2 , AmD3 , AmD4 ] , 0 ) ;
6983: LD_EXP 16
6987: PUSH
6988: LD_EXP 17
6992: PUSH
6993: LD_EXP 18
6997: PUSH
6998: LD_EXP 19
7002: PUSH
7003: EMPTY
7004: LIST
7005: LIST
7006: LIST
7007: LIST
7008: PPUSH
7009: LD_INT 0
7011: PPUSH
7012: CALL_OW 234
// PlaceUnitXY ( AmD1 , 27 , 15 , false ) ;
7016: LD_EXP 16
7020: PPUSH
7021: LD_INT 27
7023: PPUSH
7024: LD_INT 15
7026: PPUSH
7027: LD_INT 0
7029: PPUSH
7030: CALL_OW 48
// PlaceUnitXY ( AmD2 , 25 , 13 , false ) ;
7034: LD_EXP 17
7038: PPUSH
7039: LD_INT 25
7041: PPUSH
7042: LD_INT 13
7044: PPUSH
7045: LD_INT 0
7047: PPUSH
7048: CALL_OW 48
// PlaceUnitXY ( AmD3 , 29 , 16 , false ) ;
7052: LD_EXP 18
7056: PPUSH
7057: LD_INT 29
7059: PPUSH
7060: LD_INT 16
7062: PPUSH
7063: LD_INT 0
7065: PPUSH
7066: CALL_OW 48
// PlaceUnitXY ( AmD4 , 27 , 14 , false ) ;
7070: LD_EXP 19
7074: PPUSH
7075: LD_INT 27
7077: PPUSH
7078: LD_INT 14
7080: PPUSH
7081: LD_INT 0
7083: PPUSH
7084: CALL_OW 48
// end ;
7088: 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 ;
7089: LD_EXP 2
7093: PPUSH
7094: LD_INT 27
7096: PPUSH
7097: LD_INT 15
7099: PPUSH
7100: CALL_OW 293
7104: PUSH
7105: LD_EXP 2
7109: PPUSH
7110: LD_INT 25
7112: PPUSH
7113: LD_INT 13
7115: PPUSH
7116: CALL_OW 293
7120: OR
7121: PUSH
7122: LD_EXP 2
7126: PPUSH
7127: LD_INT 29
7129: PPUSH
7130: LD_INT 16
7132: PPUSH
7133: CALL_OW 293
7137: OR
7138: PUSH
7139: LD_EXP 2
7143: PPUSH
7144: LD_INT 28
7146: PPUSH
7147: LD_INT 14
7149: PPUSH
7150: CALL_OW 293
7154: OR
7155: IFFALSE 8014
7157: GO 7159
7159: DISABLE
7160: LD_INT 0
7162: PPUSH
7163: PPUSH
7164: PPUSH
// begin InGameOn ;
7165: CALL_OW 8
// CenterOnXY ( 27 , 15 ) ;
7169: LD_INT 27
7171: PPUSH
7172: LD_INT 15
7174: PPUSH
7175: CALL_OW 84
// if IsOk ( John ) then
7179: LD_EXP 6
7183: PPUSH
7184: CALL_OW 302
7188: IFFALSE 7229
// begin ComWalk ( John ) ;
7190: LD_EXP 6
7194: PPUSH
7195: CALL_OW 138
// ComMoveXY ( John , 24 , 14 ) ;
7199: LD_EXP 6
7203: PPUSH
7204: LD_INT 24
7206: PPUSH
7207: LD_INT 14
7209: PPUSH
7210: CALL_OW 111
// AddComTurnXY ( John , 27 , 15 ) ;
7214: LD_EXP 6
7218: PPUSH
7219: LD_INT 27
7221: PPUSH
7222: LD_INT 15
7224: PPUSH
7225: CALL_OW 178
// end ; if IsOk ( Lisa ) then
7229: LD_EXP 11
7233: PPUSH
7234: CALL_OW 302
7238: IFFALSE 7279
// begin ComWalk ( Lisa ) ;
7240: LD_EXP 11
7244: PPUSH
7245: CALL_OW 138
// ComMoveXY ( Lisa , 27 , 13 ) ;
7249: LD_EXP 11
7253: PPUSH
7254: LD_INT 27
7256: PPUSH
7257: LD_INT 13
7259: PPUSH
7260: CALL_OW 111
// AddComTurnXY ( Lisa , 28 , 14 ) ;
7264: LD_EXP 11
7268: PPUSH
7269: LD_INT 28
7271: PPUSH
7272: LD_INT 14
7274: PPUSH
7275: CALL_OW 178
// end ; if IsOk ( Bobby ) then
7279: LD_EXP 8
7283: PPUSH
7284: CALL_OW 302
7288: IFFALSE 7329
// begin ComWalk ( Bobby ) ;
7290: LD_EXP 8
7294: PPUSH
7295: CALL_OW 138
// ComMoveXY ( Bobby , 30 , 18 ) ;
7299: LD_EXP 8
7303: PPUSH
7304: LD_INT 30
7306: PPUSH
7307: LD_INT 18
7309: PPUSH
7310: CALL_OW 111
// AddComTurnXY ( Bobby , 29 , 16 ) ;
7314: LD_EXP 8
7318: PPUSH
7319: LD_INT 29
7321: PPUSH
7322: LD_INT 16
7324: PPUSH
7325: CALL_OW 178
// end ; if IsOk ( Cyrus ) then
7329: LD_EXP 7
7333: PPUSH
7334: CALL_OW 302
7338: IFFALSE 7379
// begin ComWalk ( Cyrus ) ;
7340: LD_EXP 7
7344: PPUSH
7345: CALL_OW 138
// ComMoveXY ( Cyrus , 27 , 16 ) ;
7349: LD_EXP 7
7353: PPUSH
7354: LD_INT 27
7356: PPUSH
7357: LD_INT 16
7359: PPUSH
7360: CALL_OW 111
// AddComTurnXY ( Cyrus , 27 , 15 ) ;
7364: LD_EXP 7
7368: PPUSH
7369: LD_INT 27
7371: PPUSH
7372: LD_INT 15
7374: PPUSH
7375: CALL_OW 178
// end ; if IsOk ( AmME1 ) then
7379: LD_EXP 12
7383: PPUSH
7384: CALL_OW 302
7388: IFFALSE 7429
// begin ComWalk ( AmME1 ) ;
7390: LD_EXP 12
7394: PPUSH
7395: CALL_OW 138
// ComMoveXY ( AmME1 , 27 , 14 ) ;
7399: LD_EXP 12
7403: PPUSH
7404: LD_INT 27
7406: PPUSH
7407: LD_INT 14
7409: PPUSH
7410: CALL_OW 111
// AddComTurnXY ( AmME1 , 28 , 14 ) ;
7414: LD_EXP 12
7418: PPUSH
7419: LD_INT 28
7421: PPUSH
7422: LD_INT 14
7424: PPUSH
7425: CALL_OW 178
// end ; if IsOk ( AmFE2 ) then
7429: LD_EXP 13
7433: PPUSH
7434: CALL_OW 302
7438: IFFALSE 7479
// begin ComWalk ( AmFE2 ) ;
7440: LD_EXP 13
7444: PPUSH
7445: CALL_OW 138
// ComMoveXY ( AmFE2 , 23 , 14 ) ;
7449: LD_EXP 13
7453: PPUSH
7454: LD_INT 23
7456: PPUSH
7457: LD_INT 14
7459: PPUSH
7460: CALL_OW 111
// AddComTurnXY ( AmFE2 , 25 , 13 ) ;
7464: LD_EXP 13
7468: PPUSH
7469: LD_INT 25
7471: PPUSH
7472: LD_INT 13
7474: PPUSH
7475: CALL_OW 178
// end ; if IsOk ( Khatam ) then
7479: LD_EXP 9
7483: PPUSH
7484: CALL_OW 302
7488: IFFALSE 7529
// begin ComWalk ( Khatam ) ;
7490: LD_EXP 9
7494: PPUSH
7495: CALL_OW 138
// ComMoveXY ( Khatam , 25 , 14 ) ;
7499: LD_EXP 9
7503: PPUSH
7504: LD_INT 25
7506: PPUSH
7507: LD_INT 14
7509: PPUSH
7510: CALL_OW 111
// AddComTurnXY ( Khatam , 25 , 13 ) ;
7514: LD_EXP 9
7518: PPUSH
7519: LD_INT 25
7521: PPUSH
7522: LD_INT 13
7524: PPUSH
7525: CALL_OW 178
// end ; if IsOk ( Nick ) then
7529: LD_EXP 10
7533: PPUSH
7534: CALL_OW 302
7538: IFFALSE 7579
// begin ComWalk ( Nick ) ;
7540: LD_EXP 10
7544: PPUSH
7545: CALL_OW 138
// ComMoveXY ( Nick , 24 , 16 ) ;
7549: LD_EXP 10
7553: PPUSH
7554: LD_INT 24
7556: PPUSH
7557: LD_INT 16
7559: PPUSH
7560: CALL_OW 111
// AddComTurnXY ( Nick , 25 , 13 ) ;
7564: LD_EXP 10
7568: PPUSH
7569: LD_INT 25
7571: PPUSH
7572: LD_INT 13
7574: PPUSH
7575: CALL_OW 178
// end ; alive = [ ] ;
7579: LD_ADDR_VAR 0 1
7583: PUSH
7584: EMPTY
7585: ST_TO_ADDR
// if IsOk ( Lisa ) then
7586: LD_EXP 11
7590: PPUSH
7591: CALL_OW 302
7595: IFFALSE 7613
// alive = alive ^ Lisa ;
7597: LD_ADDR_VAR 0 1
7601: PUSH
7602: LD_VAR 0 1
7606: PUSH
7607: LD_EXP 11
7611: ADD
7612: ST_TO_ADDR
// if IsOk ( Bobby ) then
7613: LD_EXP 8
7617: PPUSH
7618: CALL_OW 302
7622: IFFALSE 7640
// alive = alive ^ Bobby ;
7624: LD_ADDR_VAR 0 1
7628: PUSH
7629: LD_VAR 0 1
7633: PUSH
7634: LD_EXP 8
7638: ADD
7639: ST_TO_ADDR
// if IsOk ( Cyrus ) then
7640: LD_EXP 7
7644: PPUSH
7645: CALL_OW 302
7649: IFFALSE 7667
// alive = alive ^ Cyrus ;
7651: LD_ADDR_VAR 0 1
7655: PUSH
7656: LD_VAR 0 1
7660: PUSH
7661: LD_EXP 7
7665: ADD
7666: ST_TO_ADDR
// if IsOk ( AmME1 ) then
7667: LD_EXP 12
7671: PPUSH
7672: CALL_OW 302
7676: IFFALSE 7694
// alive = alive ^ AmME1 ;
7678: LD_ADDR_VAR 0 1
7682: PUSH
7683: LD_VAR 0 1
7687: PUSH
7688: LD_EXP 12
7692: ADD
7693: ST_TO_ADDR
// if IsOk ( AmFE2 ) then
7694: LD_EXP 13
7698: PPUSH
7699: CALL_OW 302
7703: IFFALSE 7721
// alive = alive ^ AmFE2 ;
7705: LD_ADDR_VAR 0 1
7709: PUSH
7710: LD_VAR 0 1
7714: PUSH
7715: LD_EXP 13
7719: ADD
7720: ST_TO_ADDR
// speaker = alive [ Rand ( 1 , alive ) ] ;
7721: LD_ADDR_VAR 0 2
7725: PUSH
7726: LD_VAR 0 1
7730: PUSH
7731: LD_INT 1
7733: PPUSH
7734: LD_VAR 0 1
7738: PPUSH
7739: CALL_OW 12
7743: ARRAY
7744: ST_TO_ADDR
// case speaker of Lisa :
7745: LD_VAR 0 2
7749: PUSH
7750: LD_EXP 11
7754: DOUBLE
7755: EQUAL
7756: IFTRUE 7760
7758: GO 7775
7760: POP
// Say ( Lisa , DCorpses-Lisa-1 ) ; Bobby :
7761: LD_EXP 11
7765: PPUSH
7766: LD_STRING DCorpses-Lisa-1
7768: PPUSH
7769: CALL_OW 88
7773: GO 7876
7775: LD_EXP 8
7779: DOUBLE
7780: EQUAL
7781: IFTRUE 7785
7783: GO 7800
7785: POP
// Say ( Bobby , DCorpses-Bobby-1 ) ; Cyrus :
7786: LD_EXP 8
7790: PPUSH
7791: LD_STRING DCorpses-Bobby-1
7793: PPUSH
7794: CALL_OW 88
7798: GO 7876
7800: LD_EXP 7
7804: DOUBLE
7805: EQUAL
7806: IFTRUE 7810
7808: GO 7825
7810: POP
// Say ( Cyrus , DCorpses-Cyrus-1 ) ; AmME1 :
7811: LD_EXP 7
7815: PPUSH
7816: LD_STRING DCorpses-Cyrus-1
7818: PPUSH
7819: CALL_OW 88
7823: GO 7876
7825: LD_EXP 12
7829: DOUBLE
7830: EQUAL
7831: IFTRUE 7835
7833: GO 7850
7835: POP
// Say ( AmME1 , DCorpses-Sol1-1 ) ; AmFE2 :
7836: LD_EXP 12
7840: PPUSH
7841: LD_STRING DCorpses-Sol1-1
7843: PPUSH
7844: CALL_OW 88
7848: GO 7876
7850: LD_EXP 13
7854: DOUBLE
7855: EQUAL
7856: IFTRUE 7860
7858: GO 7875
7860: POP
// Say ( AmFE2 , DCorpses-FSol1-1 ) ; end ;
7861: LD_EXP 13
7865: PPUSH
7866: LD_STRING DCorpses-FSol1-1
7868: PPUSH
7869: CALL_OW 88
7873: GO 7876
7875: POP
// Say ( John , DCorpses-JMM-1 ) ;
7876: LD_EXP 6
7880: PPUSH
7881: LD_STRING DCorpses-JMM-1
7883: PPUSH
7884: CALL_OW 88
// if IsOk ( Khatam ) then
7888: LD_EXP 9
7892: PPUSH
7893: CALL_OW 302
7897: IFFALSE 7911
// Say ( Khatam , DCorpses-Khat-1 ) ;
7899: LD_EXP 9
7903: PPUSH
7904: LD_STRING DCorpses-Khat-1
7906: PPUSH
7907: CALL_OW 88
// IngameOff ;
7911: CALL_OW 9
// Say ( John , DCorpses-JMM-2 ) ;
7915: LD_EXP 6
7919: PPUSH
7920: LD_STRING DCorpses-JMM-2
7922: PPUSH
7923: CALL_OW 88
// Tested_Americans = [ John , Lisa , Bobby , Cyrus , Khatam , AmME1 , AmFE2 ] ;
7927: LD_ADDR_EXP 111
7931: PUSH
7932: LD_EXP 6
7936: PUSH
7937: LD_EXP 11
7941: PUSH
7942: LD_EXP 8
7946: PUSH
7947: LD_EXP 7
7951: PUSH
7952: LD_EXP 9
7956: PUSH
7957: LD_EXP 12
7961: PUSH
7962: LD_EXP 13
7966: PUSH
7967: EMPTY
7968: LIST
7969: LIST
7970: LIST
7971: LIST
7972: LIST
7973: LIST
7974: LIST
7975: ST_TO_ADDR
// for Un in Tested_Americans do
7976: LD_ADDR_VAR 0 3
7980: PUSH
7981: LD_EXP 111
7985: PUSH
7986: FOR_IN
7987: IFFALSE 8012
// Init_Lives = Init_Lives ^ GetLives ( Un ) ;
7989: LD_ADDR_EXP 110
7993: PUSH
7994: LD_EXP 110
7998: PUSH
7999: LD_VAR 0 3
8003: PPUSH
8004: CALL_OW 256
8008: ADD
8009: ST_TO_ADDR
8010: GO 7986
8012: POP
8013: POP
// end ;
8014: PPOPN 3
8016: END
// every 0 0$4 do var all , i , pom ;
8017: GO 8019
8019: DISABLE
8020: LD_INT 0
8022: PPUSH
8023: PPUSH
8024: PPUSH
// begin pom = true ;
8025: LD_ADDR_VAR 0 3
8029: PUSH
8030: LD_INT 1
8032: ST_TO_ADDR
// if GetLives ( [ John , Cyrus , Bobby , Khatam , Lisa , AmME1 , AmFE2 , AmMSo3 , Nick ] ) < Initial_Lives - 1 then
8033: LD_EXP 6
8037: PUSH
8038: LD_EXP 7
8042: PUSH
8043: LD_EXP 8
8047: PUSH
8048: LD_EXP 9
8052: PUSH
8053: LD_EXP 11
8057: PUSH
8058: LD_EXP 12
8062: PUSH
8063: LD_EXP 13
8067: PUSH
8068: LD_EXP 14
8072: PUSH
8073: LD_EXP 10
8077: PUSH
8078: EMPTY
8079: LIST
8080: LIST
8081: LIST
8082: LIST
8083: LIST
8084: LIST
8085: LIST
8086: LIST
8087: LIST
8088: PPUSH
8089: CALL_OW 256
8093: PUSH
8094: LD_EXP 90
8098: PUSH
8099: LD_INT 1
8101: MINUS
8102: LESS
8103: IFFALSE 8135
// begin if holdfreemode then
8105: LD_OWVAR 73
8109: IFFALSE 8120
// Hint ( Hold2 ) else
8111: LD_STRING Hold2
8113: PPUSH
8114: CALL_OW 339
8118: GO 8127
// Hint ( Hold ) ;
8120: LD_STRING Hold
8122: PPUSH
8123: CALL_OW 339
// pom = false ;
8127: LD_ADDR_VAR 0 3
8131: PUSH
8132: LD_INT 0
8134: ST_TO_ADDR
// end ; if pom then
8135: LD_VAR 0 3
8139: IFFALSE 8142
// enable ;
8141: ENABLE
// end ;
8142: PPOPN 3
8144: END
// function Retreat ; var Un , i , Lives_Decreased ; begin
8145: LD_INT 0
8147: PPUSH
8148: PPUSH
8149: PPUSH
8150: PPUSH
// i = 1 ;
8151: LD_ADDR_VAR 0 3
8155: PUSH
8156: LD_INT 1
8158: ST_TO_ADDR
// for Un in Tested_Americans do
8159: LD_ADDR_VAR 0 2
8163: PUSH
8164: LD_EXP 111
8168: PUSH
8169: FOR_IN
8170: IFFALSE 8219
// begin if GetLives ( Un ) <> Init_Lives [ i ] then
8172: LD_VAR 0 2
8176: PPUSH
8177: CALL_OW 256
8181: PUSH
8182: LD_EXP 110
8186: PUSH
8187: LD_VAR 0 3
8191: ARRAY
8192: NONEQUAL
8193: IFFALSE 8203
// Lives_Decreased = true ;
8195: LD_ADDR_VAR 0 4
8199: PUSH
8200: LD_INT 1
8202: ST_TO_ADDR
// i = i + 1 ;
8203: LD_ADDR_VAR 0 3
8207: PUSH
8208: LD_VAR 0 3
8212: PUSH
8213: LD_INT 1
8215: PLUS
8216: ST_TO_ADDR
// end ;
8217: GO 8169
8219: POP
8220: 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
8221: LD_EXP 2
8225: PPUSH
8226: LD_INT 29
8228: PPUSH
8229: CALL_OW 292
8233: PUSH
8234: LD_EXP 2
8238: PPUSH
8239: LD_INT 9
8241: PPUSH
8242: CALL_OW 292
8246: OR
8247: PUSH
8248: LD_EXP 2
8252: PPUSH
8253: LD_INT 30
8255: PPUSH
8256: CALL_OW 292
8260: OR
8261: PUSH
8262: LD_INT 22
8264: PUSH
8265: LD_EXP 2
8269: PUSH
8270: EMPTY
8271: LIST
8272: LIST
8273: PUSH
8274: LD_INT 21
8276: PUSH
8277: LD_INT 2
8279: PUSH
8280: EMPTY
8281: LIST
8282: LIST
8283: PUSH
8284: EMPTY
8285: LIST
8286: LIST
8287: PPUSH
8288: CALL_OW 69
8292: PUSH
8293: LD_INT 0
8295: EQUAL
8296: AND
8297: PUSH
8298: LD_VAR 0 4
8302: AND
8303: PUSH
8304: LD_EXP 6
8308: PPUSH
8309: LD_INT 17
8311: PPUSH
8312: CALL_OW 308
8316: NOT
8317: AND
8318: IFFALSE 8330
// result = 1 else
8320: LD_ADDR_VAR 0 1
8324: PUSH
8325: LD_INT 1
8327: ST_TO_ADDR
8328: GO 8338
// result = 0 ;
8330: LD_ADDR_VAR 0 1
8334: PUSH
8335: LD_INT 0
8337: ST_TO_ADDR
// end ;
8338: LD_VAR 0 1
8342: RET
// every 0 0$2 trigger Retreat do
8343: CALL 8145 0 0
8347: IFFALSE 8372
8349: GO 8351
8351: DISABLE
// begin Byl_u_zakladny1 = true ;
8352: LD_ADDR_LOC 1
8356: PUSH
8357: LD_INT 1
8359: ST_TO_ADDR
// Say ( John , DX1-JMM-1 ) ;
8360: LD_EXP 6
8364: PPUSH
8365: LD_STRING DX1-JMM-1
8367: PPUSH
8368: CALL_OW 88
// end ;
8372: 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 ;
8373: LD_EXP 2
8377: PPUSH
8378: LD_INT 75
8380: PPUSH
8381: LD_INT 70
8383: PPUSH
8384: CALL_OW 293
8388: PUSH
8389: LD_EXP 2
8393: PPUSH
8394: LD_INT 77
8396: PPUSH
8397: LD_INT 73
8399: PPUSH
8400: CALL_OW 293
8404: OR
8405: PUSH
8406: LD_EXP 2
8410: PPUSH
8411: LD_INT 77
8413: PPUSH
8414: LD_INT 69
8416: PPUSH
8417: CALL_OW 293
8421: OR
8422: PUSH
8423: LD_EXP 2
8427: PPUSH
8428: LD_INT 78
8430: PPUSH
8431: LD_INT 71
8433: PPUSH
8434: CALL_OW 293
8438: OR
8439: IFFALSE 8908
8441: GO 8443
8443: DISABLE
8444: LD_INT 0
8446: PPUSH
8447: PPUSH
// begin PlaceUnitXY ( AmR1 , 75 , 70 , false ) ;
8448: LD_EXP 20
8452: PPUSH
8453: LD_INT 75
8455: PPUSH
8456: LD_INT 70
8458: PPUSH
8459: LD_INT 0
8461: PPUSH
8462: CALL_OW 48
// SetLives ( AmR1 , 500 ) ;
8466: LD_EXP 20
8470: PPUSH
8471: LD_INT 500
8473: PPUSH
8474: CALL_OW 234
// PlaceUnitXY ( AmR2 , 77 , 73 , false ) ;
8478: LD_EXP 21
8482: PPUSH
8483: LD_INT 77
8485: PPUSH
8486: LD_INT 73
8488: PPUSH
8489: LD_INT 0
8491: PPUSH
8492: CALL_OW 48
// SetLives ( AmR2 , 0 ) ;
8496: LD_EXP 21
8500: PPUSH
8501: LD_INT 0
8503: PPUSH
8504: CALL_OW 234
// PlaceUnitXY ( RuR1 , 77 , 69 , false ) ;
8508: LD_EXP 22
8512: PPUSH
8513: LD_INT 77
8515: PPUSH
8516: LD_INT 69
8518: PPUSH
8519: LD_INT 0
8521: PPUSH
8522: CALL_OW 48
// PlaceUnitXY ( RuR2 , 78 , 71 , false ) ;
8526: LD_EXP 23
8530: PPUSH
8531: LD_INT 78
8533: PPUSH
8534: LD_INT 71
8536: PPUSH
8537: LD_INT 0
8539: PPUSH
8540: CALL_OW 48
// ComAttackUnit ( [ RuR1 , RuR2 ] , AmR1 ) ;
8544: LD_EXP 22
8548: PUSH
8549: LD_EXP 23
8553: PUSH
8554: EMPTY
8555: LIST
8556: LIST
8557: PPUSH
8558: LD_EXP 20
8562: PPUSH
8563: CALL_OW 115
// Uns = FilterAllUnits ( [ [ f_side , americans ] , [ f_distxy , 77 , 71 , 20 ] ] ) diff [ John , Lisa , Khatam ] ;
8567: LD_ADDR_VAR 0 1
8571: PUSH
8572: LD_INT 22
8574: PUSH
8575: LD_EXP 2
8579: PUSH
8580: EMPTY
8581: LIST
8582: LIST
8583: PUSH
8584: LD_INT 92
8586: PUSH
8587: LD_INT 77
8589: PUSH
8590: LD_INT 71
8592: PUSH
8593: LD_INT 20
8595: PUSH
8596: EMPTY
8597: LIST
8598: LIST
8599: LIST
8600: LIST
8601: PUSH
8602: EMPTY
8603: LIST
8604: LIST
8605: PPUSH
8606: CALL_OW 69
8610: PUSH
8611: LD_EXP 6
8615: PUSH
8616: LD_EXP 11
8620: PUSH
8621: LD_EXP 9
8625: PUSH
8626: EMPTY
8627: LIST
8628: LIST
8629: LIST
8630: DIFF
8631: ST_TO_ADDR
// if Uns <> 0 then
8632: LD_VAR 0 1
8636: PUSH
8637: LD_INT 0
8639: NONEQUAL
8640: IFFALSE 8678
// begin Un = Uns [ Rand ( 1 , Uns ) ] ;
8642: LD_ADDR_VAR 0 2
8646: PUSH
8647: LD_VAR 0 1
8651: PUSH
8652: LD_INT 1
8654: PPUSH
8655: LD_VAR 0 1
8659: PPUSH
8660: CALL_OW 12
8664: ARRAY
8665: ST_TO_ADDR
// Say ( Un , DF-Sol1-1 ) ;
8666: LD_VAR 0 2
8670: PPUSH
8671: LD_STRING DF-Sol1-1
8673: PPUSH
8674: CALL_OW 88
// end ; Say ( John , DF-JMM-1 ) ;
8678: LD_EXP 6
8682: PPUSH
8683: LD_STRING DF-JMM-1
8685: PPUSH
8686: CALL_OW 88
// while IsOk ( RuR1 ) or IsOk ( RuR2 ) do
8690: LD_EXP 22
8694: PPUSH
8695: CALL_OW 302
8699: PUSH
8700: LD_EXP 23
8704: PPUSH
8705: CALL_OW 302
8709: OR
8710: IFFALSE 8721
// Wait ( 0 0$1 ) ;
8712: LD_INT 35
8714: PPUSH
8715: CALL_OW 67
8719: GO 8690
// if not ( IsDead ( AmR1 ) ) then
8721: LD_EXP 20
8725: PPUSH
8726: CALL_OW 301
8730: NOT
8731: IFFALSE 8819
// begin SetSide ( AmR1 , americans ) ;
8733: LD_EXP 20
8737: PPUSH
8738: LD_EXP 2
8742: PPUSH
8743: CALL_OW 235
// Uns = FilterAllUnits ( [ [ f_side , americans ] , [ f_class , class_scientistic ] ] ) ;
8747: LD_ADDR_VAR 0 1
8751: PUSH
8752: LD_INT 22
8754: PUSH
8755: LD_EXP 2
8759: PUSH
8760: EMPTY
8761: LIST
8762: LIST
8763: PUSH
8764: LD_INT 25
8766: PUSH
8767: LD_INT 4
8769: PUSH
8770: EMPTY
8771: LIST
8772: LIST
8773: PUSH
8774: EMPTY
8775: LIST
8776: LIST
8777: PPUSH
8778: CALL_OW 69
8782: ST_TO_ADDR
// if Uns <> 0 then
8783: LD_VAR 0 1
8787: PUSH
8788: LD_INT 0
8790: NONEQUAL
8791: IFFALSE 8807
// Say ( John , DFa-JMM-1 ) else
8793: LD_EXP 6
8797: PPUSH
8798: LD_STRING DFa-JMM-1
8800: PPUSH
8801: CALL_OW 88
8805: GO 8819
// Say ( John , DFa-JMM-1a ) ;
8807: LD_EXP 6
8811: PPUSH
8812: LD_STRING DFa-JMM-1a
8814: PPUSH
8815: CALL_OW 88
// end ; while not ( IsOk ( AmR1 ) or IsDead ( AmR1 ) ) do
8819: LD_EXP 20
8823: PPUSH
8824: CALL_OW 302
8828: PUSH
8829: LD_EXP 20
8833: PPUSH
8834: CALL_OW 301
8838: OR
8839: NOT
8840: IFFALSE 8851
// Wait ( 0 0$1 ) ;
8842: LD_INT 35
8844: PPUSH
8845: CALL_OW 67
8849: GO 8819
// if IsOk ( AmR1 ) then
8851: LD_EXP 20
8855: PPUSH
8856: CALL_OW 302
8860: IFFALSE 8908
// begin Say ( AmR1 , DFb-Sol1-1 ) ;
8862: LD_EXP 20
8866: PPUSH
8867: LD_STRING DFb-Sol1-1
8869: PPUSH
8870: CALL_OW 88
// ComMoveXY ( AmR1 , 77 , 73 ) ;
8874: LD_EXP 20
8878: PPUSH
8879: LD_INT 77
8881: PPUSH
8882: LD_INT 73
8884: PPUSH
8885: CALL_OW 111
// Wait ( 0 0$2 ) ;
8889: LD_INT 70
8891: PPUSH
8892: CALL_OW 67
// Say ( AmR1 , DFb-Sol1-1a ) ;
8896: LD_EXP 20
8900: PPUSH
8901: LD_STRING DFb-Sol1-1a
8903: PPUSH
8904: CALL_OW 88
// end ; end ;
8908: PPOPN 2
8910: END
// every 0 0$2 trigger See ( americans , dep1 ) or See ( americans , dep2 ) do
8911: LD_EXP 2
8915: PPUSH
8916: LD_INT 1
8918: PPUSH
8919: CALL_OW 292
8923: PUSH
8924: LD_EXP 2
8928: PPUSH
8929: LD_INT 10
8931: PPUSH
8932: CALL_OW 292
8936: OR
8937: IFFALSE 8949
8939: GO 8941
8941: DISABLE
// begin Hint ( CapturingBuilding ) ;
8942: LD_STRING CapturingBuilding
8944: PPUSH
8945: CALL_OW 339
// end ;
8949: END
// function see_vehicle ; begin
8950: LD_INT 0
8952: PPUSH
// if ( See ( americans , vehicle1 ) or See ( americans , vehicle2 ) ) then
8953: LD_EXP 2
8957: PPUSH
8958: LD_INT 5
8960: PPUSH
8961: CALL_OW 292
8965: PUSH
8966: LD_EXP 2
8970: PPUSH
8971: LD_INT 4
8973: PPUSH
8974: CALL_OW 292
8978: OR
8979: IFFALSE 8996
// begin result = 1 ;
8981: LD_ADDR_VAR 0 1
8985: PUSH
8986: LD_INT 1
8988: ST_TO_ADDR
// enable ( vehicles_detected ) ;
8989: LD_EXP 30
8993: ENABLE_MARKED
// end else
8994: GO 9004
// result = 0 ;
8996: LD_ADDR_VAR 0 1
9000: PUSH
9001: LD_INT 0
9003: ST_TO_ADDR
// end ;
9004: LD_VAR 0 1
9008: RET
// function see_vehicle1 ; begin
9009: LD_INT 0
9011: PPUSH
// if ( See ( americans , vehicle1 ) or See ( americans , vehicle2 ) ) then
9012: LD_EXP 2
9016: PPUSH
9017: LD_INT 5
9019: PPUSH
9020: CALL_OW 292
9024: PUSH
9025: LD_EXP 2
9029: PPUSH
9030: LD_INT 4
9032: PPUSH
9033: CALL_OW 292
9037: OR
9038: IFFALSE 9050
// begin result = 1 ;
9040: LD_ADDR_VAR 0 1
9044: PUSH
9045: LD_INT 1
9047: ST_TO_ADDR
// end else
9048: GO 9058
// result = 0 ;
9050: LD_ADDR_VAR 0 1
9054: PUSH
9055: LD_INT 0
9057: ST_TO_ADDR
// end ;
9058: LD_VAR 0 1
9062: RET
// function guardians_are_death ; begin
9063: LD_INT 0
9065: PPUSH
// if not ( IsOk ( RusESo1 ) or IsOk ( RusESo2 ) or IsOK ( RusEM1 ) ) then
9066: LD_INT 13
9068: PPUSH
9069: CALL_OW 302
9073: PUSH
9074: LD_INT 8
9076: PPUSH
9077: CALL_OW 302
9081: OR
9082: PUSH
9083: LD_INT 6
9085: PPUSH
9086: CALL_OW 302
9090: OR
9091: NOT
9092: IFFALSE 9104
// result = 1 else
9094: LD_ADDR_VAR 0 1
9098: PUSH
9099: LD_INT 1
9101: ST_TO_ADDR
9102: GO 9112
// result = 0 ;
9104: LD_ADDR_VAR 0 1
9108: PUSH
9109: LD_INT 0
9111: ST_TO_ADDR
// end ;
9112: LD_VAR 0 1
9116: RET
// every 0 0$1 trigger ( see_vehicle and not ( JMM_saw_east_guard ) ) marked 21 do
9117: CALL 8950 0 0
9121: PUSH
9122: LD_EXP 93
9126: NOT
9127: AND
9128: IFFALSE 9153
9130: GO 9132
9132: DISABLE
// begin JMM_saw_east_guard = true ;
9133: LD_ADDR_EXP 93
9137: PUSH
9138: LD_INT 1
9140: ST_TO_ADDR
// Say ( John , DX3-JMM-1 ) ;
9141: LD_EXP 6
9145: PPUSH
9146: LD_STRING DX3-JMM-1
9148: PPUSH
9149: CALL_OW 88
// end ;
9153: END
// every 0 0$2 trigger IsOk ( RusEM1 ) and IsDrivenBy ( vehicle1 ) = RusEM1 do
9154: LD_INT 6
9156: PPUSH
9157: CALL_OW 302
9161: PUSH
9162: LD_INT 5
9164: PPUSH
9165: CALL_OW 311
9169: PUSH
9170: LD_INT 6
9172: EQUAL
9173: AND
9174: IFFALSE 9187
9176: GO 9178
9178: DISABLE
// begin sergej_succeeds = 1 ;
9179: LD_ADDR_EXP 76
9183: PUSH
9184: LD_INT 1
9186: ST_TO_ADDR
// end ;
9187: END
// every 0 0$1 trigger FilterUnitsInArea ( Dohled , [ [ f_see , russians ] , [ f_side , americans ] ] ) > 0 do
9188: LD_INT 9
9190: PPUSH
9191: LD_INT 101
9193: PUSH
9194: LD_EXP 4
9198: PUSH
9199: EMPTY
9200: LIST
9201: LIST
9202: PUSH
9203: LD_INT 22
9205: PUSH
9206: LD_EXP 2
9210: PUSH
9211: EMPTY
9212: LIST
9213: LIST
9214: PUSH
9215: EMPTY
9216: LIST
9217: LIST
9218: PPUSH
9219: CALL_OW 70
9223: PUSH
9224: LD_INT 0
9226: GREATER
9227: IFFALSE 9345
9229: GO 9231
9231: DISABLE
// begin ComFree ( RusEast ) ;
9232: LD_EXP 106
9236: PPUSH
9237: CALL_OW 139
// disable ( East_guard_seen ) ;
9241: LD_EXP 94
9245: DISABLE_MARKED
// DialogueOn ;
9246: CALL_OW 6
// SayNoFace ( RusESo2 , DX3-Rus1-1 ) ;
9250: LD_INT 8
9252: PPUSH
9253: LD_STRING DX3-Rus1-1
9255: PPUSH
9256: CALL_OW 89
// DialogueOff ;
9260: CALL_OW 7
// if not ( JMM_saw_east_guard ) then
9264: LD_EXP 93
9268: NOT
9269: IFFALSE 9340
// begin JMM_saw_east_guard = true ;
9271: LD_ADDR_EXP 93
9275: PUSH
9276: LD_INT 1
9278: ST_TO_ADDR
// DialogueOn ;
9279: CALL_OW 6
// Say ( John , DX3-JMM-1 ) ;
9283: LD_EXP 6
9287: PPUSH
9288: LD_STRING DX3-JMM-1
9290: PPUSH
9291: CALL_OW 88
// DialogueOff ;
9295: CALL_OW 7
// PlaceSeeing ( 117 , 41 , americans , - 6 ) ;
9299: LD_INT 117
9301: PPUSH
9302: LD_INT 41
9304: PPUSH
9305: LD_EXP 2
9309: PPUSH
9310: LD_INT 6
9312: NEG
9313: PPUSH
9314: CALL_OW 330
// Wait ( 0 0$10 ) ;
9318: LD_INT 350
9320: PPUSH
9321: CALL_OW 67
// RemoveSeeing ( 117 , 41 , americans ) ;
9325: LD_INT 117
9327: PPUSH
9328: LD_INT 41
9330: PPUSH
9331: LD_EXP 2
9335: PPUSH
9336: CALL_OW 331
// end ; enable ( attack ) ;
9340: LD_EXP 40
9344: ENABLE_MARKED
// end ;
9345: END
// every 0 0$5 trigger see_vehicle1 and guardians_are_death marked 6 do
9346: CALL 9009 0 0
9350: PUSH
9351: CALL 9063 0 0
9355: AND
9356: IFFALSE 9435
9358: GO 9360
9360: DISABLE
// begin DialogueOn ;
9361: CALL_OW 6
// if IsOk ( Bobby ) then
9365: LD_EXP 8
9369: PPUSH
9370: CALL_OW 302
9374: IFFALSE 9390
// Say ( Bobby , DX2-Bobby-1 ) else
9376: LD_EXP 8
9380: PPUSH
9381: LD_STRING DX2-Bobby-1
9383: PPUSH
9384: CALL_OW 88
9388: GO 9402
// Say ( John , DX2-JMM-1 ) ;
9390: LD_EXP 6
9394: PPUSH
9395: LD_STRING DX2-JMM-1
9397: PPUSH
9398: CALL_OW 88
// if ( Byl_u_zakladny1 and IsOk ( Bobby ) ) then
9402: LD_LOC 1
9406: PUSH
9407: LD_EXP 8
9411: PPUSH
9412: CALL_OW 302
9416: AND
9417: IFFALSE 9431
// Say ( John , DX2-JMM-1a ) ;
9419: LD_EXP 6
9423: PPUSH
9424: LD_STRING DX2-JMM-1a
9426: PPUSH
9427: CALL_OW 88
// DialogueOff ;
9431: CALL_OW 7
// end ;
9435: END
// every 0 0$2 trigger see_vehicle1 and guardians_are_death do
9436: CALL 9009 0 0
9440: PUSH
9441: CALL 9063 0 0
9445: AND
9446: IFFALSE 9485
9448: GO 9450
9450: DISABLE
// begin if IsOk ( vehicle1 ) and IsOk ( Vehicle2 ) then
9451: LD_INT 5
9453: PPUSH
9454: CALL_OW 302
9458: PUSH
9459: LD_INT 4
9461: PPUSH
9462: CALL_OW 302
9466: AND
9467: IFFALSE 9478
// Hint ( CapturingVehicles1 ) else
9469: LD_STRING CapturingVehicles1
9471: PPUSH
9472: CALL_OW 339
9476: GO 9485
// Hint ( CapturingVehicles2 ) ;
9478: LD_STRING CapturingVehicles2
9480: PPUSH
9481: CALL_OW 339
// end ;
9485: END
// on VehicleCaptured ( vehnew , vehold , origside , hum ) marked 5 do var InV1 , InV2 ;
9486: LD_INT 0
9488: PPUSH
9489: PPUSH
// begin if ( ( vehold = vehicle1 ) or ( vehold = vehicle2 ) ) and ( hum <> RusEM1 ) and First_Capture then
9490: LD_VAR 0 2
9494: PUSH
9495: LD_INT 5
9497: EQUAL
9498: PUSH
9499: LD_VAR 0 2
9503: PUSH
9504: LD_INT 4
9506: EQUAL
9507: OR
9508: PUSH
9509: LD_VAR 0 4
9513: PUSH
9514: LD_INT 6
9516: NONEQUAL
9517: AND
9518: PUSH
9519: LD_EXP 82
9523: AND
9524: IFFALSE 9771
// begin First_Capture = false ;
9526: LD_ADDR_EXP 82
9530: PUSH
9531: LD_INT 0
9533: ST_TO_ADDR
// disable ( uncanny_vehicles ) ;
9534: LD_EXP 31
9538: DISABLE_MARKED
// DialogueOn ;
9539: CALL_OW 6
// if ( ( hum = John ) and IsOk ( Lisa ) ) then
9543: LD_VAR 0 4
9547: PUSH
9548: LD_EXP 6
9552: EQUAL
9553: PUSH
9554: LD_EXP 11
9558: PPUSH
9559: CALL_OW 302
9563: AND
9564: IFFALSE 9599
// begin Say ( Lisa , DX2b-Lisa-1 ) ;
9566: LD_EXP 11
9570: PPUSH
9571: LD_STRING DX2b-Lisa-1
9573: PPUSH
9574: CALL_OW 88
// Say ( John , DX2b-JMM-1 ) ;
9578: LD_EXP 6
9582: PPUSH
9583: LD_STRING DX2b-JMM-1
9585: PPUSH
9586: CALL_OW 88
// Hint ( ControllingVehicles ) ;
9590: LD_STRING ControllingVehicles
9592: PPUSH
9593: CALL_OW 339
// end else
9597: GO 9749
// begin Say ( John , DX2a-JMM-1 ) ;
9599: LD_EXP 6
9603: PPUSH
9604: LD_STRING DX2a-JMM-1
9606: PPUSH
9607: CALL_OW 88
// if hum = Lisa then
9611: LD_VAR 0 4
9615: PUSH
9616: LD_EXP 11
9620: EQUAL
9621: IFFALSE 9637
// Say ( Lisa , DX2a-Lisa-1 ) else
9623: LD_EXP 11
9627: PPUSH
9628: LD_STRING DX2a-Lisa-1
9630: PPUSH
9631: CALL_OW 88
9635: GO 9730
// if hum = Bobby then
9637: LD_VAR 0 4
9641: PUSH
9642: LD_EXP 8
9646: EQUAL
9647: IFFALSE 9663
// Say ( Bobby , DX2a-Bobby-1 ) else
9649: LD_EXP 8
9653: PPUSH
9654: LD_STRING DX2a-Bobby-1
9656: PPUSH
9657: CALL_OW 88
9661: GO 9730
// if hum = Cyrus then
9663: LD_VAR 0 4
9667: PUSH
9668: LD_EXP 7
9672: EQUAL
9673: IFFALSE 9689
// Say ( Cyrus , DX2a-Cyrus-1 ) else
9675: LD_EXP 7
9679: PPUSH
9680: LD_STRING DX2a-Cyrus-1
9682: PPUSH
9683: CALL_OW 88
9687: GO 9730
// if ( GetSex ( hum ) = Sex_Male ) then
9689: LD_VAR 0 4
9693: PPUSH
9694: CALL_OW 258
9698: PUSH
9699: LD_INT 1
9701: EQUAL
9702: IFFALSE 9718
// Say ( hum , DX2a-Sol1-1 ) else
9704: LD_VAR 0 4
9708: PPUSH
9709: LD_STRING DX2a-Sol1-1
9711: PPUSH
9712: CALL_OW 88
9716: GO 9730
// Say ( hum , DX2a-FSol1-1 ) ;
9718: LD_VAR 0 4
9722: PPUSH
9723: LD_STRING DX2a-FSol1-1
9725: PPUSH
9726: CALL_OW 88
// Say ( John , DX2a-JMM-2 ) ;
9730: LD_EXP 6
9734: PPUSH
9735: LD_STRING DX2a-JMM-2
9737: PPUSH
9738: CALL_OW 88
// Hint ( ControllingVehicles ) ;
9742: LD_STRING ControllingVehicles
9744: PPUSH
9745: CALL_OW 339
// end ; DialogueOff ;
9749: CALL_OW 7
// if sergej_succeeds = 0 then
9753: LD_EXP 76
9757: PUSH
9758: LD_INT 0
9760: EQUAL
9761: IFFALSE 9771
// sergej_succeeds = 2 ;
9763: LD_ADDR_EXP 76
9767: PUSH
9768: LD_INT 2
9770: ST_TO_ADDR
// end ; if ( vehold = vehicle1 ) then
9771: LD_VAR 0 2
9775: PUSH
9776: LD_INT 5
9778: EQUAL
9779: IFFALSE 9791
// vehicle1_new = vehnew ;
9781: LD_ADDR_EXP 95
9785: PUSH
9786: LD_VAR 0 1
9790: ST_TO_ADDR
// if ( vehold = vehicle2 ) then
9791: LD_VAR 0 2
9795: PUSH
9796: LD_INT 4
9798: EQUAL
9799: IFFALSE 9811
// vehicle2_new = vehnew ;
9801: LD_ADDR_EXP 96
9805: PUSH
9806: LD_VAR 0 1
9810: ST_TO_ADDR
// end ;
9811: PPOPN 6
9813: 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
9814: LD_EXP 95
9818: PPUSH
9819: CALL_OW 302
9823: PUSH
9824: LD_EXP 95
9828: PPUSH
9829: LD_INT 1
9831: PPUSH
9832: CALL_OW 308
9836: NOT
9837: AND
9838: PUSH
9839: LD_EXP 96
9843: PPUSH
9844: CALL_OW 302
9848: PUSH
9849: LD_EXP 96
9853: PPUSH
9854: LD_INT 1
9856: PPUSH
9857: CALL_OW 308
9861: NOT
9862: AND
9863: OR
9864: IFFALSE 9876
9866: GO 9868
9868: DISABLE
// begin Hint ( VehicleState ) ;
9869: LD_STRING VehicleState
9871: PPUSH
9872: CALL_OW 339
// end ;
9876: END
// every 0 0$1 trigger GetLives ( RusEM1 ) < 1000 do
9877: LD_INT 6
9879: PPUSH
9880: CALL_OW 256
9884: PUSH
9885: LD_INT 1000
9887: LESS
9888: IFFALSE 9910
9890: GO 9892
9892: DISABLE
// begin if not ( IsBusy ( RusEM1 ) ) then
9893: LD_INT 6
9895: PPUSH
9896: CALL_OW 315
9900: NOT
9901: IFFALSE 9910
// ComFree ( RusEM1 ) ;
9903: LD_INT 6
9905: PPUSH
9906: CALL_OW 139
// end ;
9910: END
// every 0 0$3 trigger FilterUnitsInArea ( Before_River , [ f_side , americans ] ) <> 0 do var Uns , Un ;
9911: LD_INT 24
9913: PPUSH
9914: LD_INT 22
9916: PUSH
9917: LD_EXP 2
9921: PUSH
9922: EMPTY
9923: LIST
9924: LIST
9925: PPUSH
9926: CALL_OW 70
9930: PUSH
9931: LD_INT 0
9933: NONEQUAL
9934: IFFALSE 10011
9936: GO 9938
9938: DISABLE
9939: LD_INT 0
9941: PPUSH
9942: PPUSH
// begin Uns = FilterUnitsInArea ( Before_River , [ [ f_side , americans ] ] ) ;
9943: LD_ADDR_VAR 0 1
9947: PUSH
9948: LD_INT 24
9950: PPUSH
9951: LD_INT 22
9953: PUSH
9954: LD_EXP 2
9958: PUSH
9959: EMPTY
9960: LIST
9961: LIST
9962: PUSH
9963: EMPTY
9964: LIST
9965: PPUSH
9966: CALL_OW 70
9970: ST_TO_ADDR
// for Un in Uns do
9971: LD_ADDR_VAR 0 2
9975: PUSH
9976: LD_VAR 0 1
9980: PUSH
9981: FOR_IN
9982: IFFALSE 10008
// if IsSelected ( Un ) then
9984: LD_VAR 0 2
9988: PPUSH
9989: CALL_OW 306
9993: IFFALSE 10006
// begin Hint ( Rivers ) ;
9995: LD_STRING Rivers
9997: PPUSH
9998: CALL_OW 339
// exit ;
10002: POP
10003: POP
10004: GO 10011
// end ;
10006: GO 9981
10008: POP
10009: POP
// enable ;
10010: ENABLE
// end ;
10011: PPOPN 2
10013: END
// every 0 0$0.1 marked 10 do
10014: GO 10016
10016: DISABLE
// begin AddComEnterUnit ( RusEM1 , vehicle1 ) ;
10017: LD_INT 6
10019: PPUSH
10020: LD_INT 5
10022: PPUSH
10023: CALL_OW 180
// AddComFree ( RusEM1 ) ;
10027: LD_INT 6
10029: PPUSH
10030: CALL_OW 199
// end ;
10034: END
// function Nearest ( un , units ) ; var nearest_dist , nearest_un , sold , dist ; begin
10035: LD_INT 0
10037: PPUSH
10038: PPUSH
10039: PPUSH
10040: PPUSH
10041: PPUSH
// nearest_dist = 1000 ;
10042: LD_ADDR_VAR 0 4
10046: PUSH
10047: LD_INT 1000
10049: ST_TO_ADDR
// nearest_un = un ;
10050: LD_ADDR_VAR 0 5
10054: PUSH
10055: LD_VAR 0 1
10059: ST_TO_ADDR
// for sold in units do
10060: LD_ADDR_VAR 0 6
10064: PUSH
10065: LD_VAR 0 2
10069: PUSH
10070: FOR_IN
10071: IFFALSE 10127
// begin dist = GetDistUnits ( un , sold ) ;
10073: LD_ADDR_VAR 0 7
10077: PUSH
10078: LD_VAR 0 1
10082: PPUSH
10083: LD_VAR 0 6
10087: PPUSH
10088: CALL_OW 296
10092: ST_TO_ADDR
// if dist < nearest_dist then
10093: LD_VAR 0 7
10097: PUSH
10098: LD_VAR 0 4
10102: LESS
10103: IFFALSE 10125
// begin nearest_un = sold ;
10105: LD_ADDR_VAR 0 5
10109: PUSH
10110: LD_VAR 0 6
10114: ST_TO_ADDR
// nearest_dist = dist ;
10115: LD_ADDR_VAR 0 4
10119: PUSH
10120: LD_VAR 0 7
10124: ST_TO_ADDR
// end ; end ;
10125: GO 10070
10127: POP
10128: POP
// result := nearest_un ;
10129: LD_ADDR_VAR 0 3
10133: PUSH
10134: LD_VAR 0 5
10138: ST_TO_ADDR
// end ;
10139: LD_VAR 0 3
10143: RET
// function FindMostIll ( Uns ) ; var TheMostIll , Un ; begin
10144: LD_INT 0
10146: PPUSH
10147: PPUSH
10148: PPUSH
// TheMostIll = Uns [ 1 ] ;
10149: LD_ADDR_VAR 0 3
10153: PUSH
10154: LD_VAR 0 1
10158: PUSH
10159: LD_INT 1
10161: ARRAY
10162: ST_TO_ADDR
// for Un in Uns do
10163: LD_ADDR_VAR 0 4
10167: PUSH
10168: LD_VAR 0 1
10172: PUSH
10173: FOR_IN
10174: IFFALSE 10210
// if GetLives ( Un ) < GetLives ( TheMostIll ) then
10176: LD_VAR 0 4
10180: PPUSH
10181: CALL_OW 256
10185: PUSH
10186: LD_VAR 0 3
10190: PPUSH
10191: CALL_OW 256
10195: LESS
10196: IFFALSE 10208
// TheMostIll = Un ;
10198: LD_ADDR_VAR 0 3
10202: PUSH
10203: LD_VAR 0 4
10207: ST_TO_ADDR
10208: GO 10173
10210: POP
10211: POP
// result = TheMostIll ;
10212: LD_ADDR_VAR 0 2
10216: PUSH
10217: LD_VAR 0 3
10221: ST_TO_ADDR
// end ;
10222: LD_VAR 0 2
10226: RET
// every 0 0$0.5 trigger SeeXY ( americans , 25 , 32 ) do var Uns , Un , Ill , The_Most_Ill ;
10227: LD_EXP 2
10231: PPUSH
10232: LD_INT 25
10234: PPUSH
10235: LD_INT 32
10237: PPUSH
10238: CALL_OW 293
10242: IFFALSE 10795
10244: GO 10246
10246: DISABLE
10247: LD_INT 0
10249: PPUSH
10250: PPUSH
10251: PPUSH
10252: PPUSH
// begin IngameOn ;
10253: CALL_OW 8
// PlaceUnitXYR ( Khatam , 25 , 31 , 1 , false ) ;
10257: LD_EXP 9
10261: PPUSH
10262: LD_INT 25
10264: PPUSH
10265: LD_INT 31
10267: PPUSH
10268: LD_INT 1
10270: PPUSH
10271: LD_INT 0
10273: PPUSH
10274: CALL_OW 50
// CenterOnUnits ( Khatam ) ;
10278: LD_EXP 9
10282: PPUSH
10283: CALL_OW 85
// Uns = FilterAllUnits ( [ [ f_side , americans ] ] ) ;
10287: LD_ADDR_VAR 0 1
10291: PUSH
10292: LD_INT 22
10294: PUSH
10295: LD_EXP 2
10299: PUSH
10300: EMPTY
10301: LIST
10302: LIST
10303: PUSH
10304: EMPTY
10305: LIST
10306: PPUSH
10307: CALL_OW 69
10311: ST_TO_ADDR
// for Un in Uns do
10312: LD_ADDR_VAR 0 2
10316: PUSH
10317: LD_VAR 0 1
10321: PUSH
10322: FOR_IN
10323: IFFALSE 10365
// begin ComWait ( Un , 0 0$1 * Rand ( 5 , 15 ) ) ;
10325: LD_VAR 0 2
10329: PPUSH
10330: LD_INT 35
10332: PUSH
10333: LD_INT 5
10335: PPUSH
10336: LD_INT 15
10338: PPUSH
10339: CALL_OW 12
10343: MUL
10344: PPUSH
10345: CALL_OW 142
// ComTurnUnit ( Un , Khatam ) ;
10349: LD_VAR 0 2
10353: PPUSH
10354: LD_EXP 9
10358: PPUSH
10359: CALL_OW 119
// end ;
10363: GO 10322
10365: POP
10366: POP
// AddComMoveUnit ( Khatam , Nearest ( Khatam , FilterAllUnits ( [ f_side , americans ] ) diff [ Khatam ] ) ) ;
10367: LD_EXP 9
10371: PPUSH
10372: LD_EXP 9
10376: PPUSH
10377: LD_INT 22
10379: PUSH
10380: LD_EXP 2
10384: PUSH
10385: EMPTY
10386: LIST
10387: LIST
10388: PPUSH
10389: CALL_OW 69
10393: PUSH
10394: LD_EXP 9
10398: PUSH
10399: EMPTY
10400: LIST
10401: DIFF
10402: PPUSH
10403: CALL 10035 0 2
10407: PPUSH
10408: CALL_OW 172
// Say ( Khatam , D2a-Khat-1 ) ;
10412: LD_EXP 9
10416: PPUSH
10417: LD_STRING D2a-Khat-1
10419: PPUSH
10420: CALL_OW 88
// if GetDistUnits ( Khatam , John ) < 15 and GetDistUnits ( Khatam , John ) > 5 then
10424: LD_EXP 9
10428: PPUSH
10429: LD_EXP 6
10433: PPUSH
10434: CALL_OW 296
10438: PUSH
10439: LD_INT 15
10441: LESS
10442: PUSH
10443: LD_EXP 9
10447: PPUSH
10448: LD_EXP 6
10452: PPUSH
10453: CALL_OW 296
10457: PUSH
10458: LD_INT 5
10460: GREATER
10461: AND
10462: IFFALSE 10478
// AddComMoveUnit ( Khatam , John ) ;
10464: LD_EXP 9
10468: PPUSH
10469: LD_EXP 6
10473: PPUSH
10474: CALL_OW 172
// Say ( John , D2a-JMM-1 ) ;
10478: LD_EXP 6
10482: PPUSH
10483: LD_STRING D2a-JMM-1
10485: PPUSH
10486: CALL_OW 88
// IngameOff ;
10490: CALL_OW 9
// DialogueOn ;
10494: CALL_OW 6
// interface_hidden = true ;
10498: LD_ADDR_OWVAR 54
10502: PUSH
10503: LD_INT 1
10505: ST_TO_ADDR
// Say ( Khatam , D2a-Khat-2 ) ;
10506: LD_EXP 9
10510: PPUSH
10511: LD_STRING D2a-Khat-2
10513: PPUSH
10514: CALL_OW 88
// Say ( John , D2a-JMM-2 ) ;
10518: LD_EXP 6
10522: PPUSH
10523: LD_STRING D2a-JMM-2
10525: PPUSH
10526: CALL_OW 88
// Say ( Khatam , D2a-Khat-3 ) ;
10530: LD_EXP 9
10534: PPUSH
10535: LD_STRING D2a-Khat-3
10537: PPUSH
10538: CALL_OW 88
// Say ( John , D2a-JMM-3 ) ;
10542: LD_EXP 6
10546: PPUSH
10547: LD_STRING D2a-JMM-3
10549: PPUSH
10550: CALL_OW 88
// Say ( Khatam , D2a-Khat-4 ) ;
10554: LD_EXP 9
10558: PPUSH
10559: LD_STRING D2a-Khat-4
10561: PPUSH
10562: CALL_OW 88
// Say ( John , D2a-JMM-4 ) ;
10566: LD_EXP 6
10570: PPUSH
10571: LD_STRING D2a-JMM-4
10573: PPUSH
10574: CALL_OW 88
// Say ( Khatam , D2a-Khat-5 ) ;
10578: LD_EXP 9
10582: PPUSH
10583: LD_STRING D2a-Khat-5
10585: PPUSH
10586: CALL_OW 88
// Say ( John , D2a-JMM-5 ) ;
10590: LD_EXP 6
10594: PPUSH
10595: LD_STRING D2a-JMM-5
10597: PPUSH
10598: CALL_OW 88
// interface_hidden = false ;
10602: LD_ADDR_OWVAR 54
10606: PUSH
10607: LD_INT 0
10609: ST_TO_ADDR
// DialogueOff ;
10610: CALL_OW 7
// ComFree ( Uns ) ;
10614: LD_VAR 0 1
10618: PPUSH
10619: CALL_OW 139
// ComFree ( Khatam ) ;
10623: LD_EXP 9
10627: PPUSH
10628: CALL_OW 139
// SetSide ( Khatam , americans ) ;
10632: LD_EXP 9
10636: PPUSH
10637: LD_EXP 2
10641: PPUSH
10642: CALL_OW 235
// Ill = UnitFilter ( [ John , Cyrus , Bobby , Nick , Lisa , AmME1 , AmFE2 , AmMSo3 ] , [ f_ok ] ) ;
10646: LD_ADDR_VAR 0 3
10650: PUSH
10651: LD_EXP 6
10655: PUSH
10656: LD_EXP 7
10660: PUSH
10661: LD_EXP 8
10665: PUSH
10666: LD_EXP 10
10670: PUSH
10671: LD_EXP 11
10675: PUSH
10676: LD_EXP 12
10680: PUSH
10681: LD_EXP 13
10685: PUSH
10686: LD_EXP 14
10690: PUSH
10691: EMPTY
10692: LIST
10693: LIST
10694: LIST
10695: LIST
10696: LIST
10697: LIST
10698: LIST
10699: LIST
10700: PPUSH
10701: LD_INT 50
10703: PUSH
10704: EMPTY
10705: LIST
10706: PPUSH
10707: CALL_OW 72
10711: ST_TO_ADDR
// The_Most_Ill = FindMostIll ( Ill ) ;
10712: LD_ADDR_VAR 0 4
10716: PUSH
10717: LD_VAR 0 3
10721: PPUSH
10722: CALL 10144 0 1
10726: ST_TO_ADDR
// if GetLives ( The_Most_Ill ) < 1000 and IsLive ( The_Most_Ill ) then
10727: LD_VAR 0 4
10731: PPUSH
10732: CALL_OW 256
10736: PUSH
10737: LD_INT 1000
10739: LESS
10740: PUSH
10741: LD_VAR 0 4
10745: PPUSH
10746: CALL_OW 300
10750: AND
10751: IFFALSE 10788
// begin ComHeal ( Khatam , The_Most_Ill ) ;
10753: LD_EXP 9
10757: PPUSH
10758: LD_VAR 0 4
10762: PPUSH
10763: CALL_OW 128
// Say ( Khatam , D2b-Khat-1 ) ;
10767: LD_EXP 9
10771: PPUSH
10772: LD_STRING D2b-Khat-1
10774: PPUSH
10775: CALL_OW 88
// Hint ( Scientists1 ) ;
10779: LD_STRING Scientists1
10781: PPUSH
10782: CALL_OW 339
// end else
10786: GO 10795
// Hint ( Scientists2 ) ;
10788: LD_STRING Scientists2
10790: PPUSH
10791: CALL_OW 339
// end ;
10795: PPOPN 4
10797: END
// function Set_times ; var Time_to_visit , i ; begin
10798: LD_INT 0
10800: PPUSH
10801: PPUSH
10802: PPUSH
// Time_of_capture = tick ;
10803: LD_ADDR_EXP 29
10807: PUSH
10808: LD_OWVAR 1
10812: ST_TO_ADDR
// i = ( 27 - ( Time_of_capture ) / 1 1$0 ) / ( 2 + Difficulty ) ;
10813: LD_ADDR_VAR 0 3
10817: PUSH
10818: LD_INT 27
10820: PUSH
10821: LD_EXP 29
10825: PUSH
10826: LD_INT 2100
10828: DIVREAL
10829: MINUS
10830: PUSH
10831: LD_INT 2
10833: PUSH
10834: LD_OWVAR 67
10838: PLUS
10839: DIVREAL
10840: ST_TO_ADDR
// if i < 1.5 then
10841: LD_VAR 0 3
10845: PUSH
10846: LD_REAL  1.50000000000000E+0000
10849: LESS
10850: IFFALSE 10861
// i = 1.5 ;
10852: LD_ADDR_VAR 0 3
10856: PUSH
10857: LD_REAL  1.50000000000000E+0000
10860: ST_TO_ADDR
// if i > 4 then
10861: LD_VAR 0 3
10865: PUSH
10866: LD_INT 4
10868: GREATER
10869: IFFALSE 10879
// i = 4 ;
10871: LD_ADDR_VAR 0 3
10875: PUSH
10876: LD_INT 4
10878: ST_TO_ADDR
// Time_to_visit = ( i * 1 1$0 ) div 1 ;
10879: LD_ADDR_VAR 0 2
10883: PUSH
10884: LD_VAR 0 3
10888: PUSH
10889: LD_INT 2100
10891: MUL
10892: PUSH
10893: LD_INT 1
10895: DIV
10896: ST_TO_ADDR
// Time_of_visit = Time_of_capture + Time_to_visit ;
10897: LD_ADDR_EXP 24
10901: PUSH
10902: LD_EXP 29
10906: PUSH
10907: LD_VAR 0 2
10911: PLUS
10912: ST_TO_ADDR
// Time_of_attack = Time_of_visit + 5 5$30 + ( 3 - Difficulty ) * ( 2 2$00 ) ;
10913: LD_ADDR_EXP 25
10917: PUSH
10918: LD_EXP 24
10922: PUSH
10923: LD_INT 11550
10925: PLUS
10926: PUSH
10927: LD_INT 3
10929: PUSH
10930: LD_OWVAR 67
10934: MINUS
10935: PUSH
10936: LD_INT 4200
10938: MUL
10939: PLUS
10940: ST_TO_ADDR
// ChangeMissionObjectives ( M2 ) ;
10941: LD_STRING M2
10943: PPUSH
10944: CALL_OW 337
// Say ( John , D3b-JMM-1 ) ;
10948: LD_EXP 6
10952: PPUSH
10953: LD_STRING D3b-JMM-1
10955: PPUSH
10956: CALL_OW 88
// end ;
10960: LD_VAR 0 1
10964: RET
// every 0 0$2 trigger GetSide ( Arm1 ) = americans do
10965: LD_INT 2
10967: PPUSH
10968: CALL_OW 255
10972: PUSH
10973: LD_EXP 2
10977: EQUAL
10978: IFFALSE 10990
10980: GO 10982
10982: DISABLE
// begin Hint ( Armoury ) ;
10983: LD_STRING Armoury
10985: PPUSH
10986: CALL_OW 339
// end ;
10990: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , americans ] , [ f_btype , b_breastwork ] ] ) > 0 do
10991: LD_INT 22
10993: PUSH
10994: LD_EXP 2
10998: PUSH
10999: EMPTY
11000: LIST
11001: LIST
11002: PUSH
11003: LD_INT 30
11005: PUSH
11006: LD_INT 31
11008: PUSH
11009: EMPTY
11010: LIST
11011: LIST
11012: PUSH
11013: EMPTY
11014: LIST
11015: LIST
11016: PPUSH
11017: CALL_OW 69
11021: PUSH
11022: LD_INT 0
11024: GREATER
11025: IFFALSE 11037
11027: GO 11029
11029: DISABLE
// begin Hint ( Breastworks ) ;
11030: LD_STRING Breastworks
11032: PPUSH
11033: CALL_OW 339
// end ;
11037: END
// every 0 0$3 trigger GetSide ( dep1 ) = americans do
11038: LD_INT 1
11040: PPUSH
11041: CALL_OW 255
11045: PUSH
11046: LD_EXP 2
11050: EQUAL
11051: IFFALSE 11252
11053: GO 11055
11055: DISABLE
// begin DialogueOn ;
11056: CALL_OW 6
// if GetSide ( dep2 ) = americans then
11060: LD_INT 10
11062: PPUSH
11063: CALL_OW 255
11067: PUSH
11068: LD_EXP 2
11072: EQUAL
11073: IFFALSE 11183
// begin Say ( John , D3a-JMM-1 ) ;
11075: LD_EXP 6
11079: PPUSH
11080: LD_STRING D3a-JMM-1
11082: PPUSH
11083: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-1 ) ;
11087: LD_EXP 15
11091: PPUSH
11092: LD_STRING D3a-Pow-1
11094: PPUSH
11095: CALL_OW 94
// Say ( John , D3a-JMM-2 ) ;
11099: LD_EXP 6
11103: PPUSH
11104: LD_STRING D3a-JMM-2
11106: PPUSH
11107: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-2 ) ;
11111: LD_EXP 15
11115: PPUSH
11116: LD_STRING D3a-Pow-2
11118: PPUSH
11119: CALL_OW 94
// Say ( John , D3a-JMM-3 ) ;
11123: LD_EXP 6
11127: PPUSH
11128: LD_STRING D3a-JMM-3
11130: PPUSH
11131: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-3 ) ;
11135: LD_EXP 15
11139: PPUSH
11140: LD_STRING D3a-Pow-3
11142: PPUSH
11143: CALL_OW 94
// Say ( John , D3a-JMM-4 ) ;
11147: LD_EXP 6
11151: PPUSH
11152: LD_STRING D3a-JMM-4
11154: PPUSH
11155: CALL_OW 88
// DialogueOff ;
11159: CALL_OW 7
// Hint ( Depot2 ) ;
11163: LD_STRING Depot2
11165: PPUSH
11166: CALL_OW 339
// Hint ( Transporting ) ;
11170: LD_STRING Transporting
11172: PPUSH
11173: CALL_OW 339
// Set_times ;
11177: CALL 10798 0 0
// end else
11181: GO 11252
// begin Wait ( 2 * 0 0$1 ) ;
11183: LD_INT 2
11185: PUSH
11186: LD_INT 35
11188: MUL
11189: PPUSH
11190: CALL_OW 67
// Say ( John , D3-JMM-1 ) ;
11194: LD_EXP 6
11198: PPUSH
11199: LD_STRING D3-JMM-1
11201: PPUSH
11202: CALL_OW 88
// SayRadio ( Powell , D3-Pow-1 ) ;
11206: LD_EXP 15
11210: PPUSH
11211: LD_STRING D3-Pow-1
11213: PPUSH
11214: CALL_OW 94
// if IsOk ( Cyrus ) then
11218: LD_EXP 7
11222: PPUSH
11223: CALL_OW 302
11227: IFFALSE 11241
// Say ( Cyrus , D3-Cyrus-1 ) ;
11229: LD_EXP 7
11233: PPUSH
11234: LD_STRING D3-Cyrus-1
11236: PPUSH
11237: CALL_OW 88
// DialogueOff ;
11241: CALL_OW 7
// Hint ( Depot ) ;
11245: LD_STRING Depot
11247: PPUSH
11248: CALL_OW 339
// end ; end ;
11252: END
// every 0 0$3 trigger GetSide ( dep2 ) = americans do
11253: LD_INT 10
11255: PPUSH
11256: CALL_OW 255
11260: PUSH
11261: LD_EXP 2
11265: EQUAL
11266: IFFALSE 11467
11268: GO 11270
11270: DISABLE
// begin DialogueOn ;
11271: CALL_OW 6
// if GetSide ( dep1 ) = americans then
11275: LD_INT 1
11277: PPUSH
11278: CALL_OW 255
11282: PUSH
11283: LD_EXP 2
11287: EQUAL
11288: IFFALSE 11398
// begin Say ( John , D3a-JMM-1 ) ;
11290: LD_EXP 6
11294: PPUSH
11295: LD_STRING D3a-JMM-1
11297: PPUSH
11298: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-1 ) ;
11302: LD_EXP 15
11306: PPUSH
11307: LD_STRING D3a-Pow-1
11309: PPUSH
11310: CALL_OW 94
// Say ( John , D3a-JMM-2 ) ;
11314: LD_EXP 6
11318: PPUSH
11319: LD_STRING D3a-JMM-2
11321: PPUSH
11322: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-2 ) ;
11326: LD_EXP 15
11330: PPUSH
11331: LD_STRING D3a-Pow-2
11333: PPUSH
11334: CALL_OW 94
// Say ( John , D3a-JMM-3 ) ;
11338: LD_EXP 6
11342: PPUSH
11343: LD_STRING D3a-JMM-3
11345: PPUSH
11346: CALL_OW 88
// SayRadio ( Powell , D3a-Pow-3 ) ;
11350: LD_EXP 15
11354: PPUSH
11355: LD_STRING D3a-Pow-3
11357: PPUSH
11358: CALL_OW 94
// Say ( John , D3a-JMM-4 ) ;
11362: LD_EXP 6
11366: PPUSH
11367: LD_STRING D3a-JMM-4
11369: PPUSH
11370: CALL_OW 88
// DialogueOff ;
11374: CALL_OW 7
// Hint ( Depot2 ) ;
11378: LD_STRING Depot2
11380: PPUSH
11381: CALL_OW 339
// Hint ( Transporting ) ;
11385: LD_STRING Transporting
11387: PPUSH
11388: CALL_OW 339
// Set_times ;
11392: CALL 10798 0 0
// end else
11396: GO 11467
// begin Wait ( 2 * 0 0$1 ) ;
11398: LD_INT 2
11400: PUSH
11401: LD_INT 35
11403: MUL
11404: PPUSH
11405: CALL_OW 67
// Say ( John , D3-JMM-1 ) ;
11409: LD_EXP 6
11413: PPUSH
11414: LD_STRING D3-JMM-1
11416: PPUSH
11417: CALL_OW 88
// SayRadio ( Powell , D3-Pow-1 ) ;
11421: LD_EXP 15
11425: PPUSH
11426: LD_STRING D3-Pow-1
11428: PPUSH
11429: CALL_OW 94
// if IsOk ( Cyrus ) then
11433: LD_EXP 7
11437: PPUSH
11438: CALL_OW 302
11442: IFFALSE 11456
// Say ( Cyrus , D3-Cyrus-1 ) ;
11444: LD_EXP 7
11448: PPUSH
11449: LD_STRING D3-Cyrus-1
11451: PPUSH
11452: CALL_OW 88
// DialogueOff ;
11456: CALL_OW 7
// Hint ( Depot ) ;
11460: LD_STRING Depot
11462: PPUSH
11463: CALL_OW 339
// end ; end ;
11467: END
// every 0 0$5 trigger GetResourceType ( GetBase ( GetUnitNumber ( 52 , 10 ) ) , mat_cans ) > 20 do
11468: LD_INT 52
11470: PPUSH
11471: LD_INT 10
11473: PPUSH
11474: CALL_OW 438
11478: PPUSH
11479: CALL_OW 274
11483: PPUSH
11484: LD_INT 1
11486: PPUSH
11487: CALL_OW 275
11491: PUSH
11492: LD_INT 20
11494: GREATER
11495: IFFALSE 11507
11497: GO 11499
11499: DISABLE
// begin Hint ( Building ) ;
11500: LD_STRING Building
11502: PPUSH
11503: CALL_OW 339
// end ;
11507: END
// on BuildingStarted ( build , hum ) do begin Hint ( Building2 ) ;
11508: LD_STRING Building2
11510: PPUSH
11511: CALL_OW 339
// disable ;
11515: DISABLE
// end ;
11516: PPOPN 2
11518: END
// every 0 0$0.5 trigger escape_flag do
11519: LD_EXP 27
11523: IFFALSE 11584
11525: GO 11527
11527: DISABLE
// begin if FilterUnitsInArea ( prijezd , [ f_side , americans ] ) > 0 then
11528: LD_INT 10
11530: PPUSH
11531: LD_INT 22
11533: PUSH
11534: LD_EXP 2
11538: PUSH
11539: EMPTY
11540: LIST
11541: LIST
11542: PPUSH
11543: CALL_OW 70
11547: PUSH
11548: LD_INT 0
11550: GREATER
11551: IFFALSE 11583
// ComMoveXY ( FilterUnitsInArea ( prijezd , [ f_side , americans ] ) , 7 , 13 ) ;
11553: LD_INT 10
11555: PPUSH
11556: LD_INT 22
11558: PUSH
11559: LD_EXP 2
11563: PUSH
11564: EMPTY
11565: LIST
11566: LIST
11567: PPUSH
11568: CALL_OW 70
11572: PPUSH
11573: LD_INT 7
11575: PPUSH
11576: LD_INT 13
11578: PPUSH
11579: CALL_OW 111
// enable ;
11583: ENABLE
// end ;
11584: END
// function Escape ; begin
11585: LD_INT 0
11587: PPUSH
// wait ( 0 0$1 ) ;
11588: LD_INT 35
11590: PPUSH
11591: CALL_OW 67
// ComStop ( [ vehicle3 , vehicle4 ] ) ;
11595: LD_EXP 64
11599: PUSH
11600: LD_EXP 65
11604: PUSH
11605: EMPTY
11606: LIST
11607: LIST
11608: PPUSH
11609: CALL_OW 141
// wait ( 0 0$1 ) ;
11613: LD_INT 35
11615: PPUSH
11616: CALL_OW 67
// if IsOk ( vehicle3 ) then
11620: LD_EXP 64
11624: PPUSH
11625: CALL_OW 302
11629: IFFALSE 11646
// ComMoveXY ( vehicle3 , 3 , 6 ) ;
11631: LD_EXP 64
11635: PPUSH
11636: LD_INT 3
11638: PPUSH
11639: LD_INT 6
11641: PPUSH
11642: CALL_OW 111
// if IsOk ( vehicle4 ) then
11646: LD_EXP 65
11650: PPUSH
11651: CALL_OW 302
11655: IFFALSE 11672
// ComMoveXY ( vehicle4 , 4 , 8 ) ;
11657: LD_EXP 65
11661: PPUSH
11662: LD_INT 4
11664: PPUSH
11665: LD_INT 8
11667: PPUSH
11668: CALL_OW 111
// if IsOk ( Mikhail ) and not ( Mikhail_in_depot ) then
11672: LD_EXP 63
11676: PPUSH
11677: CALL_OW 302
11681: PUSH
11682: LD_EXP 38
11686: NOT
11687: AND
11688: IFFALSE 11780
// begin target_of_escape = [ 4 , 6 ] ;
11690: LD_ADDR_LOC 10
11694: PUSH
11695: LD_INT 4
11697: PUSH
11698: LD_INT 6
11700: PUSH
11701: EMPTY
11702: LIST
11703: LIST
11704: ST_TO_ADDR
// SetSide ( Mikhail , russians1 ) ;
11705: LD_EXP 63
11709: PPUSH
11710: LD_EXP 5
11714: PPUSH
11715: CALL_OW 235
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
11719: LD_EXP 63
11723: PPUSH
11724: LD_LOC 10
11728: PUSH
11729: LD_INT 1
11731: ARRAY
11732: PPUSH
11733: LD_LOC 10
11737: PUSH
11738: LD_INT 2
11740: ARRAY
11741: PPUSH
11742: CALL_OW 171
// AddComHold ( Mikhail ) ;
11746: LD_EXP 63
11750: PPUSH
11751: CALL_OW 200
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
11755: LD_EXP 2
11759: PPUSH
11760: LD_EXP 5
11764: PPUSH
11765: LD_INT 2
11767: PPUSH
11768: LD_INT 1
11770: PPUSH
11771: CALL_OW 80
// enable ( Mikhails_escape ) ;
11775: LD_EXP 43
11779: ENABLE_MARKED
// end ; escape_flag = true ;
11780: LD_ADDR_EXP 27
11784: PUSH
11785: LD_INT 1
11787: ST_TO_ADDR
// escape_dialogue = true ;
11788: LD_ADDR_EXP 97
11792: PUSH
11793: LD_INT 1
11795: ST_TO_ADDR
// Say ( driver3 , D5-Rus2-1a ) ;
11796: LD_EXP 66
11800: PPUSH
11801: LD_STRING D5-Rus2-1a
11803: PPUSH
11804: CALL_OW 88
// escape_dialogue = false ;
11808: LD_ADDR_EXP 97
11812: PUSH
11813: LD_INT 0
11815: ST_TO_ADDR
// end ;
11816: LD_VAR 0 1
11820: RET
// every 0 0$3 trigger tick > Time_of_visit do var e ;
11821: LD_OWVAR 1
11825: PUSH
11826: LD_EXP 24
11830: GREATER
11831: IFFALSE 12061
11833: GO 11835
11835: DISABLE
11836: LD_INT 0
11838: PPUSH
// begin if FilterUnitsInArea ( Prijezd , [ ] ) > 0 then
11839: LD_INT 10
11841: PPUSH
11842: EMPTY
11843: PPUSH
11844: CALL_OW 70
11848: PUSH
11849: LD_INT 0
11851: GREATER
11852: IFFALSE 11885
// begin ComMoveXY ( FilterUnitsInArea ( prijezd , [ ] ) , 16 , 7 ) ;
11854: LD_INT 10
11856: PPUSH
11857: EMPTY
11858: PPUSH
11859: CALL_OW 70
11863: PPUSH
11864: LD_INT 16
11866: PPUSH
11867: LD_INT 7
11869: PPUSH
11870: CALL_OW 111
// wait ( 4 * 0 0$1 ) ;
11874: LD_INT 4
11876: PUSH
11877: LD_INT 35
11879: MUL
11880: PPUSH
11881: CALL_OW 67
// end ; PlaceUnitXY ( vehicle3 , 5 , 5 , false ) ;
11885: LD_EXP 64
11889: PPUSH
11890: LD_INT 5
11892: PPUSH
11893: LD_INT 5
11895: PPUSH
11896: LD_INT 0
11898: PPUSH
11899: CALL_OW 48
// PlaceUnitXY ( vehicle4 , 6 , 8 , false ) ;
11903: LD_EXP 65
11907: PPUSH
11908: LD_INT 6
11910: PPUSH
11911: LD_INT 8
11913: PPUSH
11914: LD_INT 0
11916: PPUSH
11917: CALL_OW 48
// ComMoveXY ( vehicle3 , 66 , 15 ) ;
11921: LD_EXP 64
11925: PPUSH
11926: LD_INT 66
11928: PPUSH
11929: LD_INT 15
11931: PPUSH
11932: CALL_OW 111
// ComMoveXY ( vehicle4 , 67 , 20 ) ;
11936: LD_EXP 65
11940: PPUSH
11941: LD_INT 67
11943: PPUSH
11944: LD_INT 20
11946: PPUSH
11947: CALL_OW 111
// if See ( americans , vehicle3 ) or See ( americans , vehicle4 ) then
11951: LD_EXP 2
11955: PPUSH
11956: LD_EXP 64
11960: PPUSH
11961: CALL_OW 292
11965: PUSH
11966: LD_EXP 2
11970: PPUSH
11971: LD_EXP 65
11975: PPUSH
11976: CALL_OW 292
11980: OR
11981: IFFALSE 12008
// if not ( escape_flag ) then
11983: LD_EXP 27
11987: NOT
11988: IFFALSE 12000
// e = true else
11990: LD_ADDR_VAR 0 1
11994: PUSH
11995: LD_INT 1
11997: ST_TO_ADDR
11998: GO 12008
// e = false ;
12000: LD_ADDR_VAR 0 1
12004: PUSH
12005: LD_INT 0
12007: ST_TO_ADDR
// wait ( 0 0$7 ) ;
12008: LD_INT 245
12010: PPUSH
12011: CALL_OW 67
// if e then
12015: LD_VAR 0 1
12019: IFFALSE 12025
// Escape ;
12021: CALL 11585 0 0
// if vehicle_goes_flag then
12025: LD_EXP 98
12029: IFFALSE 12036
// enable ( vehicle_goes ) ;
12031: LD_EXP 26
12035: ENABLE_MARKED
// wait ( 0 0$3 ) ;
12036: LD_INT 105
12038: PPUSH
12039: CALL_OW 67
// CenterOnUnits ( [ vehicle3 , vehicle4 ] ) ;
12043: LD_EXP 64
12047: PUSH
12048: LD_EXP 65
12052: PUSH
12053: EMPTY
12054: LIST
12055: LIST
12056: PPUSH
12057: CALL_OW 85
// end ;
12061: PPOPN 1
12063: END
// every 0 0$2 marked 2 do
12064: GO 12066
12066: 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
12067: LD_EXP 64
12071: PPUSH
12072: LD_INT 66
12074: PPUSH
12075: LD_INT 15
12077: PPUSH
12078: CALL_OW 297
12082: PUSH
12083: LD_INT 5
12085: LESS
12086: PUSH
12087: LD_EXP 2
12091: PPUSH
12092: LD_EXP 64
12096: PPUSH
12097: CALL_OW 292
12101: PUSH
12102: LD_EXP 64
12106: PPUSH
12107: CALL_OW 256
12111: PUSH
12112: LD_INT 1000
12114: LESS
12115: OR
12116: AND
12117: PUSH
12118: LD_EXP 65
12122: PPUSH
12123: LD_INT 67
12125: PPUSH
12126: LD_INT 20
12128: PPUSH
12129: CALL_OW 297
12133: PUSH
12134: LD_INT 5
12136: LESS
12137: PUSH
12138: LD_EXP 2
12142: PPUSH
12143: LD_EXP 65
12147: PPUSH
12148: CALL_OW 292
12152: PUSH
12153: LD_EXP 64
12157: PPUSH
12158: CALL_OW 256
12162: PUSH
12163: LD_INT 1000
12165: LESS
12166: OR
12167: AND
12168: OR
12169: PUSH
12170: LD_EXP 64
12174: PPUSH
12175: CALL_OW 256
12179: PUSH
12180: LD_INT 500
12182: LESS
12183: OR
12184: PUSH
12185: LD_EXP 65
12189: PPUSH
12190: CALL_OW 256
12194: PUSH
12195: LD_INT 500
12197: LESS
12198: OR
12199: IFFALSE 12214
// begin if not ( escape_flag ) then
12201: LD_EXP 27
12205: NOT
12206: IFFALSE 12212
// Escape ;
12208: CALL 11585 0 0
// end else
12212: GO 12215
// enable ;
12214: ENABLE
// end ;
12215: END
// every 0 0$2 + 0 0$1 trigger IsOk ( vehicle3 ) and not ( escape_flag ) marked 2 do
12216: LD_EXP 64
12220: PPUSH
12221: CALL_OW 302
12225: PUSH
12226: LD_EXP 27
12230: NOT
12231: AND
12232: IFFALSE 12288
12234: GO 12236
12236: DISABLE
// begin if GetDistUnits ( vehicle3 , dep1 ) < 25 then
12237: LD_EXP 64
12241: PPUSH
12242: LD_INT 1
12244: PPUSH
12245: CALL_OW 296
12249: PUSH
12250: LD_INT 25
12252: LESS
12253: IFFALSE 12287
// begin CenterOnUnits ( [ vehicle3 , vehicle4 ] ) ;
12255: LD_EXP 64
12259: PUSH
12260: LD_EXP 65
12264: PUSH
12265: EMPTY
12266: LIST
12267: LIST
12268: PPUSH
12269: CALL_OW 85
// Say ( driver3 , D5-Rus2-1 ) ;
12273: LD_EXP 66
12277: PPUSH
12278: LD_STRING D5-Rus2-1
12280: PPUSH
12281: CALL_OW 88
// end else
12285: GO 12288
// enable ;
12287: ENABLE
// end ;
12288: END
// every 0 0$1 trigger escape_flag do var rus ;
12289: LD_EXP 27
12293: IFFALSE 12655
12295: GO 12297
12297: DISABLE
12298: LD_INT 0
12300: PPUSH
// begin if IsInArea ( vehicle3 , prijezd ) and ( IsInUnit ( driver3 ) > 0 ) then
12301: LD_EXP 64
12305: PPUSH
12306: LD_INT 10
12308: PPUSH
12309: CALL_OW 308
12313: PUSH
12314: LD_EXP 66
12318: PPUSH
12319: CALL_OW 310
12323: PUSH
12324: LD_INT 0
12326: GREATER
12327: AND
12328: IFFALSE 12386
// begin flee = flee + 1 ;
12330: LD_ADDR_EXP 28
12334: PUSH
12335: LD_EXP 28
12339: PUSH
12340: LD_INT 1
12342: PLUS
12343: ST_TO_ADDR
// DestroyUnit ( vehicle3 ) ;
12344: LD_EXP 64
12348: PPUSH
12349: CALL_OW 65
// if not ( IsOk ( vehicle4 ) ) then
12353: LD_EXP 65
12357: PPUSH
12358: CALL_OW 302
12362: NOT
12363: IFFALSE 12386
// begin disable ( vehicle_goes ) ;
12365: LD_EXP 26
12369: DISABLE_MARKED
// escape_flag = false ;
12370: LD_ADDR_EXP 27
12374: PUSH
12375: LD_INT 0
12377: ST_TO_ADDR
// vehicle_goes_flag = false ;
12378: LD_ADDR_EXP 98
12382: PUSH
12383: LD_INT 0
12385: ST_TO_ADDR
// end ; end ; if IsInArea ( vehicle4 , prijezd ) and ( IsInUnit ( driver4 ) > 0 ) then
12386: LD_EXP 65
12390: PPUSH
12391: LD_INT 10
12393: PPUSH
12394: CALL_OW 308
12398: PUSH
12399: LD_EXP 67
12403: PPUSH
12404: CALL_OW 310
12408: PUSH
12409: LD_INT 0
12411: GREATER
12412: AND
12413: IFFALSE 12471
// begin flee = flee + 1 ;
12415: LD_ADDR_EXP 28
12419: PUSH
12420: LD_EXP 28
12424: PUSH
12425: LD_INT 1
12427: PLUS
12428: ST_TO_ADDR
// DestroyUnit ( vehicle4 ) ;
12429: LD_EXP 65
12433: PPUSH
12434: CALL_OW 65
// if not ( IsOk ( vehicle3 ) ) then
12438: LD_EXP 64
12442: PPUSH
12443: CALL_OW 302
12447: NOT
12448: IFFALSE 12471
// begin disable ( vehicle_goes ) ;
12450: LD_EXP 26
12454: DISABLE_MARKED
// escape_flag = false ;
12455: LD_ADDR_EXP 27
12459: PUSH
12460: LD_INT 0
12462: ST_TO_ADDR
// vehicle_goes_flag = false ;
12463: LD_ADDR_EXP 98
12467: PUSH
12468: LD_INT 0
12470: ST_TO_ADDR
// end ; end ; if not ( IsOk ( vehicle3 ) or IsOk ( vehicle4 ) ) and flee = 0 then
12471: LD_EXP 64
12475: PPUSH
12476: CALL_OW 302
12480: PUSH
12481: LD_EXP 65
12485: PPUSH
12486: CALL_OW 302
12490: OR
12491: NOT
12492: PUSH
12493: LD_EXP 28
12497: PUSH
12498: LD_INT 0
12500: EQUAL
12501: AND
12502: IFFALSE 12534
// begin escape_flag = false ;
12504: LD_ADDR_EXP 27
12508: PUSH
12509: LD_INT 0
12511: ST_TO_ADDR
// Time_of_attack = Time_of_attack + 1 1$0 ;
12512: LD_ADDR_EXP 25
12516: PUSH
12517: LD_EXP 25
12521: PUSH
12522: LD_INT 2100
12524: PLUS
12525: ST_TO_ADDR
// Attack_canceled = true ;
12526: LD_ADDR_EXP 91
12530: PUSH
12531: LD_INT 1
12533: ST_TO_ADDR
// end ; if escape_flag = false and IsOk ( AmME1 ) then
12534: LD_EXP 27
12538: PUSH
12539: LD_INT 0
12541: EQUAL
12542: PUSH
12543: LD_EXP 12
12547: PPUSH
12548: CALL_OW 302
12552: AND
12553: IFFALSE 12648
// begin while escape_dialogue do
12555: LD_EXP 97
12559: IFFALSE 12570
// Wait ( 0 0$1 ) ;
12561: LD_INT 35
12563: PPUSH
12564: CALL_OW 67
12568: GO 12555
// case flee of 1 :
12570: LD_EXP 28
12574: PUSH
12575: LD_INT 1
12577: DOUBLE
12578: EQUAL
12579: IFTRUE 12583
12581: GO 12610
12583: POP
// begin Say ( AmME1 , D5a-Sol1-1 ) ;
12584: LD_EXP 12
12588: PPUSH
12589: LD_STRING D5a-Sol1-1
12591: PPUSH
12592: CALL_OW 88
// Say ( John , D5a-JMM-1 ) ;
12596: LD_EXP 6
12600: PPUSH
12601: LD_STRING D5a-JMM-1
12603: PPUSH
12604: CALL_OW 88
// end ; 2 :
12608: GO 12646
12610: LD_INT 2
12612: DOUBLE
12613: EQUAL
12614: IFTRUE 12618
12616: GO 12645
12618: POP
// begin Say ( AmME1 , D5a-Sol1-1a ) ;
12619: LD_EXP 12
12623: PPUSH
12624: LD_STRING D5a-Sol1-1a
12626: PPUSH
12627: CALL_OW 88
// Say ( John , D5a-JMM-1 ) ;
12631: LD_EXP 6
12635: PPUSH
12636: LD_STRING D5a-JMM-1
12638: PPUSH
12639: CALL_OW 88
// end ; end ;
12643: GO 12646
12645: POP
// end else
12646: GO 12655
// if escape_flag then
12648: LD_EXP 27
12652: IFFALSE 12655
// enable ;
12654: ENABLE
// end ;
12655: PPOPN 1
12657: END
// function PlaceMikhail ; var AllAmUn , i , max , max_un ; begin
12658: LD_INT 0
12660: PPUSH
12661: PPUSH
12662: PPUSH
12663: PPUSH
12664: PPUSH
// AllAmUn := FilterAllUnits ( [ [ f_side , americans ] , [ f_ok ] , [ f_type , unit_human ] ] ) ;
12665: LD_ADDR_VAR 0 2
12669: PUSH
12670: LD_INT 22
12672: PUSH
12673: LD_EXP 2
12677: PUSH
12678: EMPTY
12679: LIST
12680: LIST
12681: PUSH
12682: LD_INT 50
12684: PUSH
12685: EMPTY
12686: LIST
12687: PUSH
12688: LD_INT 21
12690: PUSH
12691: LD_INT 1
12693: PUSH
12694: EMPTY
12695: LIST
12696: LIST
12697: PUSH
12698: EMPTY
12699: LIST
12700: LIST
12701: LIST
12702: PPUSH
12703: CALL_OW 69
12707: ST_TO_ADDR
// if AllAmUn = 1 then
12708: LD_VAR 0 2
12712: PUSH
12713: LD_INT 1
12715: EQUAL
12716: IFFALSE 12784
// begin PlaceUnitXYR ( Mikhail , GetX ( John ) , GetY ( John ) , 5 , true ) ;
12718: LD_EXP 63
12722: PPUSH
12723: LD_EXP 6
12727: PPUSH
12728: CALL_OW 250
12732: PPUSH
12733: LD_EXP 6
12737: PPUSH
12738: CALL_OW 251
12742: PPUSH
12743: LD_INT 5
12745: PPUSH
12746: LD_INT 1
12748: PPUSH
12749: CALL_OW 50
// Wait ( 0 0$3 ) ;
12753: LD_INT 105
12755: PPUSH
12756: CALL_OW 67
// ComAttackUnit ( Mikhail , John ) ;
12760: LD_EXP 63
12764: PPUSH
12765: LD_EXP 6
12769: PPUSH
12770: CALL_OW 115
// result = true ;
12774: LD_ADDR_VAR 0 1
12778: PUSH
12779: LD_INT 1
12781: ST_TO_ADDR
// end else
12782: GO 12943
// if AllAmUn > 1 then
12784: LD_VAR 0 2
12788: PUSH
12789: LD_INT 1
12791: GREATER
12792: IFFALSE 12935
// begin for i in AllAmUn do
12794: LD_ADDR_VAR 0 3
12798: PUSH
12799: LD_VAR 0 2
12803: PUSH
12804: FOR_IN
12805: IFFALSE 12843
// begin if not ( IsDying ( i ) ) and ( i <> John ) then
12807: LD_VAR 0 3
12811: PPUSH
12812: CALL_OW 303
12816: NOT
12817: PUSH
12818: LD_VAR 0 3
12822: PUSH
12823: LD_EXP 6
12827: NONEQUAL
12828: AND
12829: IFFALSE 12841
// max_un := i ;
12831: LD_ADDR_VAR 0 5
12835: PUSH
12836: LD_VAR 0 3
12840: ST_TO_ADDR
// end ;
12841: GO 12804
12843: POP
12844: POP
// PlaceUnitXYR ( Mikhail , GetX ( max_un ) , GetY ( max_un ) , 4 , true ) ;
12845: LD_EXP 63
12849: PPUSH
12850: LD_VAR 0 5
12854: PPUSH
12855: CALL_OW 250
12859: PPUSH
12860: LD_VAR 0 5
12864: PPUSH
12865: CALL_OW 251
12869: PPUSH
12870: LD_INT 4
12872: PPUSH
12873: LD_INT 1
12875: PPUSH
12876: CALL_OW 50
// Wait ( 0 0$3 ) ;
12880: LD_INT 105
12882: PPUSH
12883: CALL_OW 67
// enable ( Mikhail_placed ) ;
12887: LD_EXP 34
12891: ENABLE_MARKED
// ComMoveUnit ( Mikhail , max_un ) ;
12892: LD_EXP 63
12896: PPUSH
12897: LD_VAR 0 5
12901: PPUSH
12902: CALL_OW 112
// ComStop ( max_un ) ;
12906: LD_VAR 0 5
12910: PPUSH
12911: CALL_OW 141
// Followed := max_un ;
12915: LD_ADDR_LOC 2
12919: PUSH
12920: LD_VAR 0 5
12924: ST_TO_ADDR
// result := true ;
12925: LD_ADDR_VAR 0 1
12929: PUSH
12930: LD_INT 1
12932: ST_TO_ADDR
// end else
12933: GO 12943
// result := false ;
12935: LD_ADDR_VAR 0 1
12939: PUSH
12940: LD_INT 0
12942: ST_TO_ADDR
// end ;
12943: LD_VAR 0 1
12947: RET
// function Try1 ; begin
12948: LD_INT 0
12950: PPUSH
// if IsOk ( AmME1 ) and not ( IsDying ( AmME1 ) ) then
12951: LD_EXP 12
12955: PPUSH
12956: CALL_OW 302
12960: PUSH
12961: LD_EXP 12
12965: PPUSH
12966: CALL_OW 303
12970: NOT
12971: AND
12972: IFFALSE 13064
// begin PlaceUnitXYR ( Mikhail , GetX ( AmME1 ) , GetY ( AmME1 ) , 4 , true ) ;
12974: LD_EXP 63
12978: PPUSH
12979: LD_EXP 12
12983: PPUSH
12984: CALL_OW 250
12988: PPUSH
12989: LD_EXP 12
12993: PPUSH
12994: CALL_OW 251
12998: PPUSH
12999: LD_INT 4
13001: PPUSH
13002: LD_INT 1
13004: PPUSH
13005: CALL_OW 50
// Wait ( 0 0$3 ) ;
13009: LD_INT 105
13011: PPUSH
13012: CALL_OW 67
// enable ( Mikhail_placed ) ;
13016: LD_EXP 34
13020: ENABLE_MARKED
// ComMoveUnit ( Mikhail , AmME1 ) ;
13021: LD_EXP 63
13025: PPUSH
13026: LD_EXP 12
13030: PPUSH
13031: CALL_OW 112
// ComStop ( AmME1 ) ;
13035: LD_EXP 12
13039: PPUSH
13040: CALL_OW 141
// Followed := AmME1 ;
13044: LD_ADDR_LOC 2
13048: PUSH
13049: LD_EXP 12
13053: ST_TO_ADDR
// result := true ;
13054: LD_ADDR_VAR 0 1
13058: PUSH
13059: LD_INT 1
13061: ST_TO_ADDR
// end else
13062: GO 13072
// result := false ;
13064: LD_ADDR_VAR 0 1
13068: PUSH
13069: LD_INT 0
13071: ST_TO_ADDR
// end ;
13072: LD_VAR 0 1
13076: RET
// function Try2 ; begin
13077: LD_INT 0
13079: PPUSH
// if IsOk ( AmFE2 ) and not ( IsDying ( AmFE2 ) ) then
13080: LD_EXP 13
13084: PPUSH
13085: CALL_OW 302
13089: PUSH
13090: LD_EXP 13
13094: PPUSH
13095: CALL_OW 303
13099: NOT
13100: AND
13101: IFFALSE 13193
// begin PlaceUnitXYR ( Mikhail , GetX ( AmFE2 ) , GetY ( AmFE2 ) , 3 , true ) ;
13103: LD_EXP 63
13107: PPUSH
13108: LD_EXP 13
13112: PPUSH
13113: CALL_OW 250
13117: PPUSH
13118: LD_EXP 13
13122: PPUSH
13123: CALL_OW 251
13127: PPUSH
13128: LD_INT 3
13130: PPUSH
13131: LD_INT 1
13133: PPUSH
13134: CALL_OW 50
// Wait ( 0 0$3 ) ;
13138: LD_INT 105
13140: PPUSH
13141: CALL_OW 67
// enable ( Mikhail_placed ) ;
13145: LD_EXP 34
13149: ENABLE_MARKED
// ComMoveUnit ( Mikhail , AmFE2 ) ;
13150: LD_EXP 63
13154: PPUSH
13155: LD_EXP 13
13159: PPUSH
13160: CALL_OW 112
// ComStop ( AmFE2 ) ;
13164: LD_EXP 13
13168: PPUSH
13169: CALL_OW 141
// Followed := AmFE2 ;
13173: LD_ADDR_LOC 2
13177: PUSH
13178: LD_EXP 13
13182: ST_TO_ADDR
// result := true ;
13183: LD_ADDR_VAR 0 1
13187: PUSH
13188: LD_INT 1
13190: ST_TO_ADDR
// end else
13191: GO 13201
// result := false ;
13193: LD_ADDR_VAR 0 1
13197: PUSH
13198: LD_INT 0
13200: ST_TO_ADDR
// end ;
13201: LD_VAR 0 1
13205: RET
// every 0 0$5 trigger Time_of_capture + 0 0$20 < tick do var r , cont ;
13206: LD_EXP 29
13210: PUSH
13211: LD_INT 700
13213: PLUS
13214: PUSH
13215: LD_OWVAR 1
13219: LESS
13220: IFFALSE 13365
13222: GO 13224
13224: DISABLE
13225: LD_INT 0
13227: PPUSH
13228: PPUSH
// begin r = Rand ( 0 , 1 ) ;
13229: LD_ADDR_VAR 0 1
13233: PUSH
13234: LD_INT 0
13236: PPUSH
13237: LD_INT 1
13239: PPUSH
13240: CALL_OW 12
13244: ST_TO_ADDR
// cont = false ;
13245: LD_ADDR_VAR 0 2
13249: PUSH
13250: LD_INT 0
13252: ST_TO_ADDR
// count = count + 1 ;
13253: LD_ADDR_EXP 75
13257: PUSH
13258: LD_EXP 75
13262: PUSH
13263: LD_INT 1
13265: PLUS
13266: ST_TO_ADDR
// if IsOk ( AmME1 ) or IsOk ( AmFE2 ) then
13267: LD_EXP 12
13271: PPUSH
13272: CALL_OW 302
13276: PUSH
13277: LD_EXP 13
13281: PPUSH
13282: CALL_OW 302
13286: OR
13287: IFFALSE 13343
// if r then
13289: LD_VAR 0 1
13293: IFFALSE 13319
// begin if not ( Try1 ) then
13295: CALL 12948 0 0
13299: NOT
13300: IFFALSE 13317
// if not ( Try2 ) then
13302: CALL 13077 0 0
13306: NOT
13307: IFFALSE 13317
// cont = true end else
13309: LD_ADDR_VAR 0 2
13313: PUSH
13314: LD_INT 1
13316: ST_TO_ADDR
13317: GO 13341
// begin if not ( Try2 ) then
13319: CALL 13077 0 0
13323: NOT
13324: IFFALSE 13341
// if not ( Try1 ) then
13326: CALL 12948 0 0
13330: NOT
13331: IFFALSE 13341
// cont = true ;
13333: LD_ADDR_VAR 0 2
13337: PUSH
13338: LD_INT 1
13340: ST_TO_ADDR
// end else
13341: GO 13358
// begin if not ( PlaceMikhail ) then
13343: CALL 12658 0 0
13347: NOT
13348: IFFALSE 13358
// cont = true ;
13350: LD_ADDR_VAR 0 2
13354: PUSH
13355: LD_INT 1
13357: ST_TO_ADDR
// end ; if cont then
13358: LD_VAR 0 2
13362: IFFALSE 13365
// enable ;
13364: ENABLE
// end ;
13365: PPOPN 2
13367: END
// every 0 0$1 marked 3 do
13368: GO 13370
13370: DISABLE
// begin if GetClass ( Mikhail ) <> class_mechanic then
13371: LD_EXP 63
13375: PPUSH
13376: CALL_OW 257
13380: PUSH
13381: LD_INT 3
13383: NONEQUAL
13384: IFFALSE 13398
// SetClass ( Mikhail , class_mechanic ) ;
13386: LD_EXP 63
13390: PPUSH
13391: LD_INT 3
13393: PPUSH
13394: CALL_OW 336
// enable ;
13398: ENABLE
// end ;
13399: END
// every 0 0$0.5 marked 3 do var answer , all , i ;
13400: GO 13402
13402: DISABLE
13403: LD_INT 0
13405: PPUSH
13406: PPUSH
13407: PPUSH
// begin if FilterAllUnits ( [ f_side , americans ] ) > 1 then
13408: LD_INT 22
13410: PUSH
13411: LD_EXP 2
13415: PUSH
13416: EMPTY
13417: LIST
13418: LIST
13419: PPUSH
13420: CALL_OW 69
13424: PUSH
13425: LD_INT 1
13427: GREATER
13428: IFFALSE 14250
// begin if FilterAllUnits ( [ [ f_side , americans ] , [ f_dist , Mikhail , 15 ] ] ) > 0 then
13430: LD_INT 22
13432: PUSH
13433: LD_EXP 2
13437: PUSH
13438: EMPTY
13439: LIST
13440: LIST
13441: PUSH
13442: LD_INT 91
13444: PUSH
13445: LD_EXP 63
13449: PUSH
13450: LD_INT 15
13452: PUSH
13453: EMPTY
13454: LIST
13455: LIST
13456: LIST
13457: PUSH
13458: EMPTY
13459: LIST
13460: LIST
13461: PPUSH
13462: CALL_OW 69
13466: PUSH
13467: LD_INT 0
13469: GREATER
13470: IFFALSE 14249
// begin all = FilterAllUnits ( [ [ f_side , americans ] , [ f_dist , Mikhail , 15 ] ] ) ;
13472: LD_ADDR_VAR 0 2
13476: PUSH
13477: LD_INT 22
13479: PUSH
13480: LD_EXP 2
13484: PUSH
13485: EMPTY
13486: LIST
13487: LIST
13488: PUSH
13489: LD_INT 91
13491: PUSH
13492: LD_EXP 63
13496: PUSH
13497: LD_INT 15
13499: PUSH
13500: EMPTY
13501: LIST
13502: LIST
13503: LIST
13504: PUSH
13505: EMPTY
13506: LIST
13507: LIST
13508: PPUSH
13509: CALL_OW 69
13513: ST_TO_ADDR
// AddComHold ( all ) ;
13514: LD_VAR 0 2
13518: PPUSH
13519: CALL_OW 200
// AddComHold ( Followed ) ;
13523: LD_LOC 2
13527: PPUSH
13528: CALL_OW 200
// AddComTurnUnit ( all , Mikhail ) ;
13532: LD_VAR 0 2
13536: PPUSH
13537: LD_EXP 63
13541: PPUSH
13542: CALL_OW 179
// AddComTurnUnit ( Followed , Mikhail ) ;
13546: LD_LOC 2
13550: PPUSH
13551: LD_EXP 63
13555: PPUSH
13556: CALL_OW 179
// while GetDistUnits ( Mikhail , Followed ) > 6 do
13560: LD_EXP 63
13564: PPUSH
13565: LD_LOC 2
13569: PPUSH
13570: CALL_OW 296
13574: PUSH
13575: LD_INT 6
13577: GREATER
13578: IFFALSE 13589
// wait ( 0 0$0.5 ) ;
13580: LD_INT 18
13582: PPUSH
13583: CALL_OW 67
13587: GO 13560
// DialogueOn ;
13589: CALL_OW 6
// CenterOnUnits ( [ Mikhail , Followed ] ) ;
13593: LD_EXP 63
13597: PUSH
13598: LD_LOC 2
13602: PUSH
13603: EMPTY
13604: LIST
13605: LIST
13606: PPUSH
13607: CALL_OW 85
// Say ( Mikhail , D4-Mikh-1 ) ;
13611: LD_EXP 63
13615: PPUSH
13616: LD_STRING D4-Mikh-1
13618: PPUSH
13619: CALL_OW 88
// if IsOk ( AmME1 ) or IsOk ( AmFE2 ) then
13623: LD_EXP 12
13627: PPUSH
13628: CALL_OW 302
13632: PUSH
13633: LD_EXP 13
13637: PPUSH
13638: CALL_OW 302
13642: OR
13643: IFFALSE 13797
// begin if Followed = AmME1 then
13645: LD_LOC 2
13649: PUSH
13650: LD_EXP 12
13654: EQUAL
13655: IFFALSE 13671
// Say ( AmME1 , D4-Sol1-1 ) else
13657: LD_EXP 12
13661: PPUSH
13662: LD_STRING D4-Sol1-1
13664: PPUSH
13665: CALL_OW 88
13669: GO 13683
// Say ( AmFE2 , D4-FSol1-1 ) ;
13671: LD_EXP 13
13675: PPUSH
13676: LD_STRING D4-FSol1-1
13678: PPUSH
13679: CALL_OW 88
// Say ( Mikhail , D4-Mikh-2 ) ;
13683: LD_EXP 63
13687: PPUSH
13688: LD_STRING D4-Mikh-2
13690: PPUSH
13691: CALL_OW 88
// if Followed = AmME1 then
13695: LD_LOC 2
13699: PUSH
13700: LD_EXP 12
13704: EQUAL
13705: IFFALSE 13721
// Say ( AmME1 , D4-Sol1-2 ) else
13707: LD_EXP 12
13711: PPUSH
13712: LD_STRING D4-Sol1-2
13714: PPUSH
13715: CALL_OW 88
13719: GO 13733
// Say ( AmFE2 , D4-FSol1-2 ) ;
13721: LD_EXP 13
13725: PPUSH
13726: LD_STRING D4-FSol1-2
13728: PPUSH
13729: CALL_OW 88
// Say ( Mikhail , D4-Mikh-3 ) ;
13733: LD_EXP 63
13737: PPUSH
13738: LD_STRING D4-Mikh-3
13740: PPUSH
13741: CALL_OW 88
// if Followed = AmME1 then
13745: LD_LOC 2
13749: PUSH
13750: LD_EXP 12
13754: EQUAL
13755: IFFALSE 13771
// Say ( AmME1 , D4-Sol1-3 ) else
13757: LD_EXP 12
13761: PPUSH
13762: LD_STRING D4-Sol1-3
13764: PPUSH
13765: CALL_OW 88
13769: GO 13783
// Say ( AmFE2 , D4-FSol1-3 ) ;
13771: LD_EXP 13
13775: PPUSH
13776: LD_STRING D4-FSol1-3
13778: PPUSH
13779: CALL_OW 88
// Say ( Mikhail , D4-Mikh-4 ) ;
13783: LD_EXP 63
13787: PPUSH
13788: LD_STRING D4-Mikh-4
13790: PPUSH
13791: CALL_OW 88
// end else
13795: GO 13988
// begin i = Nearest ( Mikhail , FilterAllUnits ( [ f_side , americans ] ) ) ;
13797: LD_ADDR_VAR 0 3
13801: PUSH
13802: LD_EXP 63
13806: PPUSH
13807: LD_INT 22
13809: PUSH
13810: LD_EXP 2
13814: PUSH
13815: EMPTY
13816: LIST
13817: LIST
13818: PPUSH
13819: CALL_OW 69
13823: PPUSH
13824: CALL 10035 0 2
13828: ST_TO_ADDR
// if GetSex ( i ) = sex_male then
13829: LD_VAR 0 3
13833: PPUSH
13834: CALL_OW 258
13838: PUSH
13839: LD_INT 1
13841: EQUAL
13842: IFFALSE 13858
// Say ( i , D4-Sol1-1 ) else
13844: LD_VAR 0 3
13848: PPUSH
13849: LD_STRING D4-Sol1-1
13851: PPUSH
13852: CALL_OW 88
13856: GO 13870
// Say ( i , D4-FSol1-1 ) ;
13858: LD_VAR 0 3
13862: PPUSH
13863: LD_STRING D4-FSol1-1
13865: PPUSH
13866: CALL_OW 88
// Say ( Mikhail , D4-Mikh-2 ) ;
13870: LD_EXP 63
13874: PPUSH
13875: LD_STRING D4-Mikh-2
13877: PPUSH
13878: CALL_OW 88
// if GetSex ( i ) = sex_male then
13882: LD_VAR 0 3
13886: PPUSH
13887: CALL_OW 258
13891: PUSH
13892: LD_INT 1
13894: EQUAL
13895: IFFALSE 13911
// Say ( i , D4-Sol1-2 ) else
13897: LD_VAR 0 3
13901: PPUSH
13902: LD_STRING D4-Sol1-2
13904: PPUSH
13905: CALL_OW 88
13909: GO 13923
// Say ( i , D4-FSol1-2 ) ;
13911: LD_VAR 0 3
13915: PPUSH
13916: LD_STRING D4-FSol1-2
13918: PPUSH
13919: CALL_OW 88
// Say ( Mikhail , D4-Mikh-3 ) ;
13923: LD_EXP 63
13927: PPUSH
13928: LD_STRING D4-Mikh-3
13930: PPUSH
13931: CALL_OW 88
// if GetSex ( i ) = sex_male then
13935: LD_VAR 0 3
13939: PPUSH
13940: CALL_OW 258
13944: PUSH
13945: LD_INT 1
13947: EQUAL
13948: IFFALSE 13964
// Say ( i , D4-Sol1-3 ) else
13950: LD_VAR 0 3
13954: PPUSH
13955: LD_STRING D4-Sol1-3
13957: PPUSH
13958: CALL_OW 88
13962: GO 13976
// Say ( i , D4-FSol1-3 ) ;
13964: LD_VAR 0 3
13968: PPUSH
13969: LD_STRING D4-FSol1-3
13971: PPUSH
13972: CALL_OW 88
// Say ( Mikhail , D4-Mikh-4 ) ;
13976: LD_EXP 63
13980: PPUSH
13981: LD_STRING D4-Mikh-4
13983: PPUSH
13984: CALL_OW 88
// end ; answer = Query ( Qs1 ) ;
13988: LD_ADDR_VAR 0 1
13992: PUSH
13993: LD_STRING Qs1
13995: PPUSH
13996: CALL_OW 97
14000: ST_TO_ADDR
// DialogueOff ;
14001: CALL_OW 7
// case answer of 1 :
14005: LD_VAR 0 1
14009: PUSH
14010: LD_INT 1
14012: DOUBLE
14013: EQUAL
14014: IFTRUE 14018
14016: GO 14072
14018: POP
// begin SetAttitude ( americans , russians1 , att_enemy , true ) ;
14019: LD_EXP 2
14023: PPUSH
14024: LD_EXP 5
14028: PPUSH
14029: LD_INT 2
14031: PPUSH
14032: LD_INT 1
14034: PPUSH
14035: CALL_OW 80
// ComAttackUnit ( Followed , Mikhail ) ;
14039: LD_LOC 2
14043: PPUSH
14044: LD_EXP 63
14048: PPUSH
14049: CALL_OW 115
// Mikhails_outcome = - 1 ;
14053: LD_ADDR_LOC 3
14057: PUSH
14058: LD_INT 1
14060: NEG
14061: ST_TO_ADDR
// Mikhail_status := 2 ;
14062: LD_ADDR_LOC 4
14066: PUSH
14067: LD_INT 2
14069: ST_TO_ADDR
// end ; 2 :
14070: GO 14247
14072: LD_INT 2
14074: DOUBLE
14075: EQUAL
14076: IFTRUE 14080
14078: GO 14189
14080: POP
// begin DoNotAttack ( russians , Followed ) ;
14081: LD_EXP 4
14085: PPUSH
14086: LD_LOC 2
14090: PPUSH
14091: CALL_OW 471
// enable ( Mikhail_captured ) ;
14095: LD_EXP 35
14099: ENABLE_MARKED
// enable ( tigers_allowed ) ;
14100: LD_EXP 79
14104: ENABLE_MARKED
// ComMoveUnit ( Mikhail , Followed ) ;
14105: LD_EXP 63
14109: PPUSH
14110: LD_LOC 2
14114: PPUSH
14115: CALL_OW 112
// while GetDistUnits ( Mikhail , John ) > 5 do
14119: LD_EXP 63
14123: PPUSH
14124: LD_EXP 6
14128: PPUSH
14129: CALL_OW 296
14133: PUSH
14134: LD_INT 5
14136: GREATER
14137: IFFALSE 14162
// begin ComMoveUnit ( Followed , John ) ;
14139: LD_LOC 2
14143: PPUSH
14144: LD_EXP 6
14148: PPUSH
14149: CALL_OW 112
// Wait ( 0 0$1 ) ;
14153: LD_INT 35
14155: PPUSH
14156: CALL_OW 67
// end ;
14160: GO 14119
// ComStop ( Followed ) ;
14162: LD_LOC 2
14166: PPUSH
14167: CALL_OW 141
// Mikhails_outcome = 1 ;
14171: LD_ADDR_LOC 3
14175: PUSH
14176: LD_INT 1
14178: ST_TO_ADDR
// Mikhail_status := 5 ;
14179: LD_ADDR_LOC 4
14183: PUSH
14184: LD_INT 5
14186: ST_TO_ADDR
// end ; 3 :
14187: GO 14247
14189: LD_INT 3
14191: DOUBLE
14192: EQUAL
14193: IFTRUE 14197
14195: GO 14246
14197: POP
// begin ComMoveXY ( Mikhail , 4 , 6 ) ;
14198: LD_EXP 63
14202: PPUSH
14203: LD_INT 4
14205: PPUSH
14206: LD_INT 6
14208: PPUSH
14209: CALL_OW 111
// AddComHold ( Mikhail ) ;
14213: LD_EXP 63
14217: PPUSH
14218: CALL_OW 200
// enable ( remove_mikhail ) ;
14222: LD_EXP 41
14226: ENABLE_MARKED
// Mikhails_outcome = - 1 ;
14227: LD_ADDR_LOC 3
14231: PUSH
14232: LD_INT 1
14234: NEG
14235: ST_TO_ADDR
// Mikhail_status := 1 ;
14236: LD_ADDR_LOC 4
14240: PUSH
14241: LD_INT 1
14243: ST_TO_ADDR
// end ; end ;
14244: GO 14247
14246: POP
// end else
14247: GO 14250
// enable ;
14249: ENABLE
// end ; end ;
14250: PPOPN 3
14252: END
// every 0 0$0.5 trigger IsAt ( Mikhail , 4 , 6 ) marked 11 do
14253: LD_EXP 63
14257: PPUSH
14258: LD_INT 4
14260: PPUSH
14261: LD_INT 6
14263: PPUSH
14264: CALL_OW 307
14268: IFFALSE 14282
14270: GO 14272
14272: DISABLE
// begin RemoveUnit ( Mikhail ) ;
14273: LD_EXP 63
14277: PPUSH
14278: CALL_OW 64
// end ;
14282: END
// every 0 0$2 marked 4 do var Alive , Speaker ;
14283: GO 14285
14285: DISABLE
14286: LD_INT 0
14288: PPUSH
14289: PPUSH
// begin if IsOk ( Mikhail ) and GetDistUnits ( John , Mikhail ) < 6 then
14290: LD_EXP 63
14294: PPUSH
14295: CALL_OW 302
14299: PUSH
14300: LD_EXP 6
14304: PPUSH
14305: LD_EXP 63
14309: PPUSH
14310: CALL_OW 296
14314: PUSH
14315: LD_INT 6
14317: LESS
14318: AND
14319: IFFALSE 14875
// begin enable ( conversation ) ;
14321: LD_EXP 42
14325: ENABLE_MARKED
// ComTurnUnit ( Mikhail , John ) ;
14326: LD_EXP 63
14330: PPUSH
14331: LD_EXP 6
14335: PPUSH
14336: CALL_OW 119
// DialogueOn ;
14340: CALL_OW 6
// ComMoveUnit ( Mikhail , John ) ;
14344: LD_EXP 63
14348: PPUSH
14349: LD_EXP 6
14353: PPUSH
14354: CALL_OW 112
// Say ( John , D4b-JMM-1 ) ;
14358: LD_EXP 6
14362: PPUSH
14363: LD_STRING D4b-JMM-1
14365: PPUSH
14366: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-1 ) ;
14370: LD_EXP 63
14374: PPUSH
14375: LD_STRING D4b-Mikh-1
14377: PPUSH
14378: CALL_OW 88
// Say ( John , D4b-JMM-2 ) ;
14382: LD_EXP 6
14386: PPUSH
14387: LD_STRING D4b-JMM-2
14389: PPUSH
14390: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-2 ) ;
14394: LD_EXP 63
14398: PPUSH
14399: LD_STRING D4b-Mikh-2
14401: PPUSH
14402: CALL_OW 88
// Say ( John , D4b-JMM-3 ) ;
14406: LD_EXP 6
14410: PPUSH
14411: LD_STRING D4b-JMM-3
14413: PPUSH
14414: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-3 ) ;
14418: LD_EXP 63
14422: PPUSH
14423: LD_STRING D4b-Mikh-3
14425: PPUSH
14426: CALL_OW 88
// Say ( John , D4b-JMM-4 ) ;
14430: LD_EXP 6
14434: PPUSH
14435: LD_STRING D4b-JMM-4
14437: PPUSH
14438: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-4 ) ;
14442: LD_EXP 63
14446: PPUSH
14447: LD_STRING D4b-Mikh-4
14449: PPUSH
14450: CALL_OW 88
// Say ( John , D4b-JMM-5 ) ;
14454: LD_EXP 6
14458: PPUSH
14459: LD_STRING D4b-JMM-5
14461: PPUSH
14462: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-5 ) ;
14466: LD_EXP 63
14470: PPUSH
14471: LD_STRING D4b-Mikh-5
14473: PPUSH
14474: CALL_OW 88
// Say ( John , D4b-JMM-6 ) ;
14478: LD_EXP 6
14482: PPUSH
14483: LD_STRING D4b-JMM-6
14485: PPUSH
14486: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-6 ) ;
14490: LD_EXP 63
14494: PPUSH
14495: LD_STRING D4b-Mikh-6
14497: PPUSH
14498: CALL_OW 88
// Say ( John , D4b-JMM-7 ) ;
14502: LD_EXP 6
14506: PPUSH
14507: LD_STRING D4b-JMM-7
14509: PPUSH
14510: CALL_OW 88
// Say ( Mikhail , D4b-Mikh-7 ) ;
14514: LD_EXP 63
14518: PPUSH
14519: LD_STRING D4b-Mikh-7
14521: PPUSH
14522: CALL_OW 88
// Alive = UnitFilter ( [ AmME1 , AmFE2 , AmMSo3 , Nick ] , [ f_ok ] ) ;
14526: LD_ADDR_VAR 0 1
14530: PUSH
14531: LD_EXP 12
14535: PUSH
14536: LD_EXP 13
14540: PUSH
14541: LD_EXP 14
14545: PUSH
14546: LD_EXP 10
14550: PUSH
14551: EMPTY
14552: LIST
14553: LIST
14554: LIST
14555: LIST
14556: PPUSH
14557: LD_INT 50
14559: PUSH
14560: EMPTY
14561: LIST
14562: PPUSH
14563: CALL_OW 72
14567: ST_TO_ADDR
// if Alive > 0 then
14568: LD_VAR 0 1
14572: PUSH
14573: LD_INT 0
14575: GREATER
14576: IFFALSE 14602
// Speaker = Alive [ Rand ( 1 , Alive ) ] ;
14578: LD_ADDR_VAR 0 2
14582: PUSH
14583: LD_VAR 0 1
14587: PUSH
14588: LD_INT 1
14590: PPUSH
14591: LD_VAR 0 1
14595: PPUSH
14596: CALL_OW 12
14600: ARRAY
14601: ST_TO_ADDR
// if GetSex ( Speaker ) = sex_male then
14602: LD_VAR 0 2
14606: PPUSH
14607: CALL_OW 258
14611: PUSH
14612: LD_INT 1
14614: EQUAL
14615: IFFALSE 14631
// Say ( Speaker , D4b-Sol1-7 ) else
14617: LD_VAR 0 2
14621: PPUSH
14622: LD_STRING D4b-Sol1-7
14624: PPUSH
14625: CALL_OW 88
14629: GO 14643
// Say ( Speaker , D4b-FSol1-7 ) ;
14631: LD_VAR 0 2
14635: PPUSH
14636: LD_STRING D4b-FSol1-7
14638: PPUSH
14639: CALL_OW 88
// Say ( John , D4b-JMM-8 ) ;
14643: LD_EXP 6
14647: PPUSH
14648: LD_STRING D4b-JMM-8
14650: PPUSH
14651: CALL_OW 88
// Alive = UnitFilter ( [ AmME1 , AmFE2 , AmMSo3 , Nick ] , [ f_ok ] ) ;
14655: LD_ADDR_VAR 0 1
14659: PUSH
14660: LD_EXP 12
14664: PUSH
14665: LD_EXP 13
14669: PUSH
14670: LD_EXP 14
14674: PUSH
14675: LD_EXP 10
14679: PUSH
14680: EMPTY
14681: LIST
14682: LIST
14683: LIST
14684: LIST
14685: PPUSH
14686: LD_INT 50
14688: PUSH
14689: EMPTY
14690: LIST
14691: PPUSH
14692: CALL_OW 72
14696: ST_TO_ADDR
// if Alive > 0 then
14697: LD_VAR 0 1
14701: PUSH
14702: LD_INT 0
14704: GREATER
14705: IFFALSE 14731
// Speaker = Alive [ Rand ( 1 , Alive ) ] ;
14707: LD_ADDR_VAR 0 2
14711: PUSH
14712: LD_VAR 0 1
14716: PUSH
14717: LD_INT 1
14719: PPUSH
14720: LD_VAR 0 1
14724: PPUSH
14725: CALL_OW 12
14729: ARRAY
14730: ST_TO_ADDR
// if GetSex ( Speaker ) = sex_male then
14731: LD_VAR 0 2
14735: PPUSH
14736: CALL_OW 258
14740: PUSH
14741: LD_INT 1
14743: EQUAL
14744: IFFALSE 14760
// Say ( Speaker , D4b-Sol1-8 ) else
14746: LD_VAR 0 2
14750: PPUSH
14751: LD_STRING D4b-Sol1-8
14753: PPUSH
14754: CALL_OW 88
14758: GO 14772
// Say ( Speaker , D4b-FSol1-8 ) ;
14760: LD_VAR 0 2
14764: PPUSH
14765: LD_STRING D4b-FSol1-8
14767: PPUSH
14768: CALL_OW 88
// Say ( John , D4b-JMM-9 ) ;
14772: LD_EXP 6
14776: PPUSH
14777: LD_STRING D4b-JMM-9
14779: PPUSH
14780: CALL_OW 88
// DialogueOff ;
14784: CALL_OW 7
// ChangeMissionObjectives ( M3 ) ;
14788: LD_STRING M3
14790: PPUSH
14791: CALL_OW 337
// enable ( depot ) ;
14795: LD_EXP 37
14799: ENABLE_MARKED
// disable ( conversation ) ;
14800: LD_EXP 42
14804: DISABLE_MARKED
// ComMoveUnit ( Mikhail , Followed ) ;
14805: LD_EXP 63
14809: PPUSH
14810: LD_LOC 2
14814: PPUSH
14815: CALL_OW 112
// repeat ComMoveXY ( Followed , 50 , 13 ) ;
14819: LD_LOC 2
14823: PPUSH
14824: LD_INT 50
14826: PPUSH
14827: LD_INT 13
14829: PPUSH
14830: CALL_OW 111
// Wait ( 0 0$1 ) ;
14834: LD_INT 35
14836: PPUSH
14837: CALL_OW 67
// until GetDistUnits ( dep1 , Mikhail ) < 5 ;
14841: LD_INT 1
14843: PPUSH
14844: LD_EXP 63
14848: PPUSH
14849: CALL_OW 296
14853: PUSH
14854: LD_INT 5
14856: LESS
14857: IFFALSE 14819
// NormalAttack ( russians , Followed ) ;
14859: LD_EXP 4
14863: PPUSH
14864: LD_LOC 2
14868: PPUSH
14869: CALL_OW 472
// end else
14873: GO 14876
// enable ;
14875: ENABLE
// end ;
14876: PPOPN 2
14878: END
// every 0 0$1 trigger GetDistUnits ( Followed , John ) > 5 marked 12 do
14879: LD_LOC 2
14883: PPUSH
14884: LD_EXP 6
14888: PPUSH
14889: CALL_OW 296
14893: PUSH
14894: LD_INT 5
14896: GREATER
14897: IFFALSE 14926
14899: GO 14901
14901: DISABLE
// begin ComStop ( Followed ) ;
14902: LD_LOC 2
14906: PPUSH
14907: CALL_OW 141
// ComMoveUnit ( Followed , John ) ;
14911: LD_LOC 2
14915: PPUSH
14916: LD_EXP 6
14920: PPUSH
14921: CALL_OW 112
// enable ;
14925: ENABLE
// end ;
14926: END
// every 0 0$0.5 marked 8 do
14927: GO 14929
14929: DISABLE
// begin if IsOk ( Mikhail ) and GetDistUnits ( dep1 , Mikhail ) < 10 then
14930: LD_EXP 63
14934: PPUSH
14935: CALL_OW 302
14939: PUSH
14940: LD_INT 1
14942: PPUSH
14943: LD_EXP 63
14947: PPUSH
14948: CALL_OW 296
14952: PUSH
14953: LD_INT 10
14955: LESS
14956: AND
14957: IFFALSE 15059
// begin ComMoveXY ( Mikhail , 52 , 13 ) ;
14959: LD_EXP 63
14963: PPUSH
14964: LD_INT 52
14966: PPUSH
14967: LD_INT 13
14969: PPUSH
14970: CALL_OW 111
// AddComHold ( Mikhail ) ;
14974: LD_EXP 63
14978: PPUSH
14979: CALL_OW 200
// WaitTask ( Mikhail , 0.5 ) ;
14983: LD_EXP 63
14987: PPUSH
14988: LD_REAL  5.00000000000000E-0001
14991: PPUSH
14992: CALL 3199 0 2
// SetSide ( Mikhail , americans ) ;
14996: LD_EXP 63
15000: PPUSH
15001: LD_EXP 2
15005: PPUSH
15006: CALL_OW 235
// repeat ComEnterUnit ( Mikhail , dep1 ) ;
15010: LD_EXP 63
15014: PPUSH
15015: LD_INT 1
15017: PPUSH
15018: CALL_OW 120
// Wait ( 1 ) ;
15022: LD_INT 1
15024: PPUSH
15025: CALL_OW 67
// until IsInUnit ( Mikhail ) = dep1 ;
15029: LD_EXP 63
15033: PPUSH
15034: CALL_OW 310
15038: PUSH
15039: LD_INT 1
15041: EQUAL
15042: IFFALSE 15010
// Mikhail_in_depot = true ;
15044: LD_ADDR_EXP 38
15048: PUSH
15049: LD_INT 1
15051: ST_TO_ADDR
// enable ( great_escape ) ;
15052: LD_EXP 39
15056: ENABLE_MARKED
// end else
15057: GO 15060
// enable ;
15059: ENABLE
// end ;
15060: 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 ;
15061: GO 15063
15063: DISABLE
15064: LD_INT 0
15066: PPUSH
15067: PPUSH
15068: PPUSH
15069: PPUSH
15070: PPUSH
15071: PPUSH
15072: PPUSH
15073: PPUSH
15074: PPUSH
15075: PPUSH
15076: PPUSH
15077: PPUSH
15078: PPUSH
// begin AmV1 = 0 ;
15079: LD_ADDR_VAR 0 2
15083: PUSH
15084: LD_INT 0
15086: ST_TO_ADDR
// AmV2 = 0 ;
15087: LD_ADDR_VAR 0 3
15091: PUSH
15092: LD_INT 0
15094: ST_TO_ADDR
// AmVehicles = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_vehicle ] ] ) ;
15095: LD_ADDR_VAR 0 1
15099: PUSH
15100: LD_INT 22
15102: PUSH
15103: LD_EXP 2
15107: PUSH
15108: EMPTY
15109: LIST
15110: LIST
15111: PUSH
15112: LD_INT 21
15114: PUSH
15115: LD_INT 2
15117: PUSH
15118: EMPTY
15119: LIST
15120: LIST
15121: PUSH
15122: EMPTY
15123: LIST
15124: LIST
15125: PPUSH
15126: CALL_OW 69
15130: ST_TO_ADDR
// if AmVehicles ^ [ ] > 0 then
15131: LD_VAR 0 1
15135: PUSH
15136: EMPTY
15137: ADD
15138: PUSH
15139: LD_INT 0
15141: GREATER
15142: IFFALSE 15158
// AmV1 = AmVehicles [ 1 ] ;
15144: LD_ADDR_VAR 0 2
15148: PUSH
15149: LD_VAR 0 1
15153: PUSH
15154: LD_INT 1
15156: ARRAY
15157: ST_TO_ADDR
// if AmVehicles ^ [ ] > 1 then
15158: LD_VAR 0 1
15162: PUSH
15163: EMPTY
15164: ADD
15165: PUSH
15166: LD_INT 1
15168: GREATER
15169: IFFALSE 15185
// AmV2 = AmVehicles [ 2 ] ;
15171: LD_ADDR_VAR 0 3
15175: PUSH
15176: LD_VAR 0 1
15180: PUSH
15181: LD_INT 2
15183: ARRAY
15184: ST_TO_ADDR
// Humans_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
15185: LD_ADDR_VAR 0 5
15189: PUSH
15190: LD_INT 20
15192: PPUSH
15193: LD_INT 22
15195: PUSH
15196: LD_EXP 2
15200: PUSH
15201: EMPTY
15202: LIST
15203: LIST
15204: PUSH
15205: LD_INT 21
15207: PUSH
15208: LD_INT 1
15210: PUSH
15211: EMPTY
15212: LIST
15213: LIST
15214: PUSH
15215: LD_INT 50
15217: PUSH
15218: EMPTY
15219: LIST
15220: PUSH
15221: EMPTY
15222: LIST
15223: LIST
15224: LIST
15225: PPUSH
15226: CALL_OW 70
15230: ST_TO_ADDR
// Buildings_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
15231: LD_ADDR_VAR 0 6
15235: PUSH
15236: LD_INT 20
15238: PPUSH
15239: LD_INT 22
15241: PUSH
15242: LD_EXP 2
15246: PUSH
15247: EMPTY
15248: LIST
15249: LIST
15250: PUSH
15251: LD_INT 21
15253: PUSH
15254: LD_INT 3
15256: PUSH
15257: EMPTY
15258: LIST
15259: LIST
15260: PUSH
15261: LD_INT 50
15263: PUSH
15264: EMPTY
15265: LIST
15266: PUSH
15267: EMPTY
15268: LIST
15269: LIST
15270: LIST
15271: PPUSH
15272: CALL_OW 70
15276: ST_TO_ADDR
// Vehicles_In_Depot_Left = FilterUnitsInArea ( Dep_Left , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
15277: LD_ADDR_VAR 0 7
15281: PUSH
15282: LD_INT 20
15284: PPUSH
15285: LD_INT 22
15287: PUSH
15288: LD_EXP 2
15292: PUSH
15293: EMPTY
15294: LIST
15295: LIST
15296: PUSH
15297: LD_INT 21
15299: PUSH
15300: LD_INT 2
15302: PUSH
15303: EMPTY
15304: LIST
15305: LIST
15306: PUSH
15307: LD_INT 50
15309: PUSH
15310: EMPTY
15311: LIST
15312: PUSH
15313: EMPTY
15314: LIST
15315: LIST
15316: LIST
15317: PPUSH
15318: CALL_OW 70
15322: ST_TO_ADDR
// for Un in Buildings_In_Depot_Left do
15323: LD_ADDR_VAR 0 4
15327: PUSH
15328: LD_VAR 0 6
15332: PUSH
15333: FOR_IN
15334: IFFALSE 15359
// Humans_In_Depot_Left = Humans_In_Depot_Left ^ UnitsInside ( Un ) ;
15336: LD_ADDR_VAR 0 5
15340: PUSH
15341: LD_VAR 0 5
15345: PUSH
15346: LD_VAR 0 4
15350: PPUSH
15351: CALL_OW 313
15355: ADD
15356: ST_TO_ADDR
15357: GO 15333
15359: POP
15360: POP
// for Un in Vehicles_In_Depot_Left do
15361: LD_ADDR_VAR 0 4
15365: PUSH
15366: LD_VAR 0 7
15370: PUSH
15371: FOR_IN
15372: IFFALSE 15397
// Humans_In_Depot_Left = Humans_In_Depot_Left ^ UnitsInside ( Un ) ;
15374: LD_ADDR_VAR 0 5
15378: PUSH
15379: LD_VAR 0 5
15383: PUSH
15384: LD_VAR 0 4
15388: PPUSH
15389: CALL_OW 313
15393: ADD
15394: ST_TO_ADDR
15395: GO 15371
15397: POP
15398: POP
// Humans_In_Depot_Left = Humans_In_Depot_Left diff Mikhail ;
15399: LD_ADDR_VAR 0 5
15403: PUSH
15404: LD_VAR 0 5
15408: PUSH
15409: LD_EXP 63
15413: DIFF
15414: ST_TO_ADDR
// Humans_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
15415: LD_ADDR_VAR 0 8
15419: PUSH
15420: LD_INT 21
15422: PPUSH
15423: LD_INT 22
15425: PUSH
15426: LD_EXP 2
15430: PUSH
15431: EMPTY
15432: LIST
15433: LIST
15434: PUSH
15435: LD_INT 21
15437: PUSH
15438: LD_INT 1
15440: PUSH
15441: EMPTY
15442: LIST
15443: LIST
15444: PUSH
15445: LD_INT 50
15447: PUSH
15448: EMPTY
15449: LIST
15450: PUSH
15451: EMPTY
15452: LIST
15453: LIST
15454: LIST
15455: PPUSH
15456: CALL_OW 70
15460: ST_TO_ADDR
// Buildings_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
15461: LD_ADDR_VAR 0 9
15465: PUSH
15466: LD_INT 21
15468: PPUSH
15469: LD_INT 22
15471: PUSH
15472: LD_EXP 2
15476: PUSH
15477: EMPTY
15478: LIST
15479: LIST
15480: PUSH
15481: LD_INT 21
15483: PUSH
15484: LD_INT 3
15486: PUSH
15487: EMPTY
15488: LIST
15489: LIST
15490: PUSH
15491: LD_INT 50
15493: PUSH
15494: EMPTY
15495: LIST
15496: PUSH
15497: EMPTY
15498: LIST
15499: LIST
15500: LIST
15501: PPUSH
15502: CALL_OW 70
15506: ST_TO_ADDR
// Vehicles_In_Depot_Right = FilterUnitsInArea ( Dep_Right , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
15507: LD_ADDR_VAR 0 10
15511: PUSH
15512: LD_INT 21
15514: PPUSH
15515: LD_INT 22
15517: PUSH
15518: LD_EXP 2
15522: PUSH
15523: EMPTY
15524: LIST
15525: LIST
15526: PUSH
15527: LD_INT 21
15529: PUSH
15530: LD_INT 2
15532: PUSH
15533: EMPTY
15534: LIST
15535: LIST
15536: PUSH
15537: LD_INT 50
15539: PUSH
15540: EMPTY
15541: LIST
15542: PUSH
15543: EMPTY
15544: LIST
15545: LIST
15546: LIST
15547: PPUSH
15548: CALL_OW 70
15552: ST_TO_ADDR
// for Un in Buildings_In_Depot_Right do
15553: LD_ADDR_VAR 0 4
15557: PUSH
15558: LD_VAR 0 9
15562: PUSH
15563: FOR_IN
15564: IFFALSE 15589
// Humans_In_Depot_Right = Humans_In_Depot_Right ^ UnitsInside ( Un ) ;
15566: LD_ADDR_VAR 0 8
15570: PUSH
15571: LD_VAR 0 8
15575: PUSH
15576: LD_VAR 0 4
15580: PPUSH
15581: CALL_OW 313
15585: ADD
15586: ST_TO_ADDR
15587: GO 15563
15589: POP
15590: POP
// for Un in Vehicles_In_Depot_Right do
15591: LD_ADDR_VAR 0 4
15595: PUSH
15596: LD_VAR 0 10
15600: PUSH
15601: FOR_IN
15602: IFFALSE 15627
// Humans_In_Depot_Right = Humans_In_Depot_Right ^ UnitsInside ( Un ) ;
15604: LD_ADDR_VAR 0 8
15608: PUSH
15609: LD_VAR 0 8
15613: PUSH
15614: LD_VAR 0 4
15618: PPUSH
15619: CALL_OW 313
15623: ADD
15624: ST_TO_ADDR
15625: GO 15601
15627: POP
15628: POP
// Humans_In_Depot_Right = Humans_In_Depot_Right diff Mikhail ;
15629: LD_ADDR_VAR 0 8
15633: PUSH
15634: LD_VAR 0 8
15638: PUSH
15639: LD_EXP 63
15643: DIFF
15644: ST_TO_ADDR
// Humans_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
15645: LD_ADDR_VAR 0 11
15649: PUSH
15650: LD_INT 19
15652: PPUSH
15653: LD_INT 22
15655: PUSH
15656: LD_EXP 2
15660: PUSH
15661: EMPTY
15662: LIST
15663: LIST
15664: PUSH
15665: LD_INT 21
15667: PUSH
15668: LD_INT 1
15670: PUSH
15671: EMPTY
15672: LIST
15673: LIST
15674: PUSH
15675: LD_INT 50
15677: PUSH
15678: EMPTY
15679: LIST
15680: PUSH
15681: EMPTY
15682: LIST
15683: LIST
15684: LIST
15685: PPUSH
15686: CALL_OW 70
15690: ST_TO_ADDR
// Buildings_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_building ] , [ f_ok ] ] ) ;
15691: LD_ADDR_VAR 0 12
15695: PUSH
15696: LD_INT 19
15698: PPUSH
15699: LD_INT 22
15701: PUSH
15702: LD_EXP 2
15706: PUSH
15707: EMPTY
15708: LIST
15709: LIST
15710: PUSH
15711: LD_INT 21
15713: PUSH
15714: LD_INT 3
15716: PUSH
15717: EMPTY
15718: LIST
15719: LIST
15720: PUSH
15721: LD_INT 50
15723: PUSH
15724: EMPTY
15725: LIST
15726: PUSH
15727: EMPTY
15728: LIST
15729: LIST
15730: LIST
15731: PPUSH
15732: CALL_OW 70
15736: ST_TO_ADDR
// Vehicles_In_Depot_Back = FilterUnitsInArea ( Dep_Back , [ [ f_side , americans ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) ;
15737: LD_ADDR_VAR 0 13
15741: PUSH
15742: LD_INT 19
15744: PPUSH
15745: LD_INT 22
15747: PUSH
15748: LD_EXP 2
15752: PUSH
15753: EMPTY
15754: LIST
15755: LIST
15756: PUSH
15757: LD_INT 21
15759: PUSH
15760: LD_INT 2
15762: PUSH
15763: EMPTY
15764: LIST
15765: LIST
15766: PUSH
15767: LD_INT 50
15769: PUSH
15770: EMPTY
15771: LIST
15772: PUSH
15773: EMPTY
15774: LIST
15775: LIST
15776: LIST
15777: PPUSH
15778: CALL_OW 70
15782: ST_TO_ADDR
// for Un in Buildings_In_Depot_Back do
15783: LD_ADDR_VAR 0 4
15787: PUSH
15788: LD_VAR 0 12
15792: PUSH
15793: FOR_IN
15794: IFFALSE 15819
// Humans_In_Depot_Back = Humans_In_Depot_Back ^ UnitsInside ( Un ) ;
15796: LD_ADDR_VAR 0 11
15800: PUSH
15801: LD_VAR 0 11
15805: PUSH
15806: LD_VAR 0 4
15810: PPUSH
15811: CALL_OW 313
15815: ADD
15816: ST_TO_ADDR
15817: GO 15793
15819: POP
15820: POP
// for Un in Vehicles_In_Depot_Back do
15821: LD_ADDR_VAR 0 4
15825: PUSH
15826: LD_VAR 0 13
15830: PUSH
15831: FOR_IN
15832: IFFALSE 15857
// Humans_In_Depot_Back = Humans_In_Depot_Back ^ UnitsInside ( Un ) ;
15834: LD_ADDR_VAR 0 11
15838: PUSH
15839: LD_VAR 0 11
15843: PUSH
15844: LD_VAR 0 4
15848: PPUSH
15849: CALL_OW 313
15853: ADD
15854: ST_TO_ADDR
15855: GO 15831
15857: POP
15858: POP
// Humans_In_Depot_Back = Humans_In_Depot_Back diff Mikhail ;
15859: LD_ADDR_VAR 0 11
15863: PUSH
15864: LD_VAR 0 11
15868: PUSH
15869: LD_EXP 63
15873: DIFF
15874: ST_TO_ADDR
// if ( Humans_In_Depot_Left = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
15875: LD_VAR 0 5
15879: PUSH
15880: LD_INT 0
15882: EQUAL
15883: PUSH
15884: LD_INT 1
15886: PPUSH
15887: CALL_OW 313
15891: PUSH
15892: LD_INT 2
15894: LESS
15895: AND
15896: IFFALSE 16040
// begin Mikhails_Escape_Disabled = false ;
15898: LD_ADDR_EXP 89
15902: PUSH
15903: LD_INT 0
15905: ST_TO_ADDR
// target_of_escape = [ 4 , 6 ] ;
15906: LD_ADDR_LOC 10
15910: PUSH
15911: LD_INT 4
15913: PUSH
15914: LD_INT 6
15916: PUSH
15917: EMPTY
15918: LIST
15919: LIST
15920: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
15921: LD_EXP 63
15925: PPUSH
15926: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
15930: LD_EXP 63
15934: PPUSH
15935: LD_EXP 5
15939: PPUSH
15940: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
15944: LD_EXP 63
15948: PPUSH
15949: LD_INT 52
15951: PPUSH
15952: LD_INT 13
15954: PPUSH
15955: LD_INT 0
15957: PPUSH
15958: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
15962: LD_ADDR_EXP 48
15966: PUSH
15967: LD_EXP 63
15971: PPUSH
15972: CALL_OW 256
15976: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
15977: LD_EXP 43
15981: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
15982: LD_EXP 2
15986: PPUSH
15987: LD_EXP 5
15991: PPUSH
15992: LD_INT 2
15994: PPUSH
15995: LD_INT 1
15997: PPUSH
15998: CALL_OW 80
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16002: LD_EXP 63
16006: PPUSH
16007: LD_LOC 10
16011: PUSH
16012: LD_INT 1
16014: ARRAY
16015: PPUSH
16016: LD_LOC 10
16020: PUSH
16021: LD_INT 2
16023: ARRAY
16024: PPUSH
16025: CALL_OW 171
// AddComHold ( Mikhail ) ;
16029: LD_EXP 63
16033: PPUSH
16034: CALL_OW 200
// end else
16038: GO 16416
// if ( Humans_In_Depot_Right = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
16040: LD_VAR 0 8
16044: PUSH
16045: LD_INT 0
16047: EQUAL
16048: PUSH
16049: LD_INT 1
16051: PPUSH
16052: CALL_OW 313
16056: PUSH
16057: LD_INT 2
16059: LESS
16060: AND
16061: IFFALSE 16235
// begin Mikhails_Escape_Disabled = false ;
16063: LD_ADDR_EXP 89
16067: PUSH
16068: LD_INT 0
16070: ST_TO_ADDR
// target_of_escape = [ 61 , 1 ] ;
16071: LD_ADDR_LOC 10
16075: PUSH
16076: LD_INT 61
16078: PUSH
16079: LD_INT 1
16081: PUSH
16082: EMPTY
16083: LIST
16084: LIST
16085: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
16086: LD_EXP 63
16090: PPUSH
16091: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
16095: LD_EXP 63
16099: PPUSH
16100: LD_EXP 5
16104: PPUSH
16105: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
16109: LD_EXP 63
16113: PPUSH
16114: LD_INT 52
16116: PPUSH
16117: LD_INT 13
16119: PPUSH
16120: LD_INT 0
16122: PPUSH
16123: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
16127: LD_ADDR_EXP 48
16131: PUSH
16132: LD_EXP 63
16136: PPUSH
16137: CALL_OW 256
16141: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
16142: LD_EXP 43
16146: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
16147: LD_EXP 2
16151: PPUSH
16152: LD_EXP 5
16156: PPUSH
16157: LD_INT 2
16159: PPUSH
16160: LD_INT 1
16162: PPUSH
16163: CALL_OW 80
// AddComMoveXY ( Mikhail , 57 , 11 ) ;
16167: LD_EXP 63
16171: PPUSH
16172: LD_INT 57
16174: PPUSH
16175: LD_INT 11
16177: PPUSH
16178: CALL_OW 171
// AddComMoveXY ( Mikhail , 63 , 9 ) ;
16182: LD_EXP 63
16186: PPUSH
16187: LD_INT 63
16189: PPUSH
16190: LD_INT 9
16192: PPUSH
16193: CALL_OW 171
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16197: LD_EXP 63
16201: PPUSH
16202: LD_LOC 10
16206: PUSH
16207: LD_INT 1
16209: ARRAY
16210: PPUSH
16211: LD_LOC 10
16215: PUSH
16216: LD_INT 2
16218: ARRAY
16219: PPUSH
16220: CALL_OW 171
// AddComHold ( Mikhail ) ;
16224: LD_EXP 63
16228: PPUSH
16229: CALL_OW 200
// end else
16233: GO 16416
// if ( Humans_In_Depot_Back = 0 ) and ( UnitsInside ( dep1 ) < 2 ) then
16235: LD_VAR 0 11
16239: PUSH
16240: LD_INT 0
16242: EQUAL
16243: PUSH
16244: LD_INT 1
16246: PPUSH
16247: CALL_OW 313
16251: PUSH
16252: LD_INT 2
16254: LESS
16255: AND
16256: IFFALSE 16415
// begin Mikhails_Escape_Disabled = false ;
16258: LD_ADDR_EXP 89
16262: PUSH
16263: LD_INT 0
16265: ST_TO_ADDR
// target_of_escape = [ 47 , 1 ] ;
16266: LD_ADDR_LOC 10
16270: PUSH
16271: LD_INT 47
16273: PUSH
16274: LD_INT 1
16276: PUSH
16277: EMPTY
16278: LIST
16279: LIST
16280: ST_TO_ADDR
// RemoveUnit ( Mikhail ) ;
16281: LD_EXP 63
16285: PPUSH
16286: CALL_OW 64
// SetSide ( Mikhail , russians1 ) ;
16290: LD_EXP 63
16294: PPUSH
16295: LD_EXP 5
16299: PPUSH
16300: CALL_OW 235
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
16304: LD_EXP 63
16308: PPUSH
16309: LD_INT 52
16311: PPUSH
16312: LD_INT 13
16314: PPUSH
16315: LD_INT 0
16317: PPUSH
16318: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
16322: LD_ADDR_EXP 48
16326: PUSH
16327: LD_EXP 63
16331: PPUSH
16332: CALL_OW 256
16336: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
16337: LD_EXP 43
16341: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
16342: LD_EXP 2
16346: PPUSH
16347: LD_EXP 5
16351: PPUSH
16352: LD_INT 2
16354: PPUSH
16355: LD_INT 1
16357: PPUSH
16358: CALL_OW 80
// AddComMoveXY ( Mikhail , 49 , 7 ) ;
16362: LD_EXP 63
16366: PPUSH
16367: LD_INT 49
16369: PPUSH
16370: LD_INT 7
16372: PPUSH
16373: CALL_OW 171
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16377: LD_EXP 63
16381: PPUSH
16382: LD_LOC 10
16386: PUSH
16387: LD_INT 1
16389: ARRAY
16390: PPUSH
16391: LD_LOC 10
16395: PUSH
16396: LD_INT 2
16398: ARRAY
16399: PPUSH
16400: CALL_OW 171
// AddComHold ( Mikhail ) ;
16404: LD_EXP 63
16408: PPUSH
16409: CALL_OW 200
// end else
16413: GO 16416
// enable ;
16415: ENABLE
// end ;
16416: PPOPN 13
16418: END
// every 0 0$1 trigger IsOk ( Mikhail ) and not ( IsBusy ( Mikhail ) ) marked 13 do
16419: LD_EXP 63
16423: PPUSH
16424: CALL_OW 302
16428: PUSH
16429: LD_EXP 63
16433: PPUSH
16434: CALL_OW 315
16438: NOT
16439: AND
16440: IFFALSE 16472
16442: GO 16444
16444: DISABLE
// begin ComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
16445: LD_EXP 63
16449: PPUSH
16450: LD_LOC 10
16454: PUSH
16455: LD_INT 1
16457: ARRAY
16458: PPUSH
16459: LD_LOC 10
16463: PUSH
16464: LD_INT 2
16466: ARRAY
16467: PPUSH
16468: CALL_OW 111
// end ;
16472: END
// every 0 0$2 trigger Mikhails_outcome = - 2 and Mikhails_lives = 1000 do var NearSol ;
16473: LD_LOC 3
16477: PUSH
16478: LD_INT 2
16480: NEG
16481: EQUAL
16482: PUSH
16483: LD_EXP 48
16487: PUSH
16488: LD_INT 1000
16490: EQUAL
16491: AND
16492: IFFALSE 16766
16494: GO 16496
16496: DISABLE
16497: LD_INT 0
16499: PPUSH
// begin if GetDistUnits ( John , dep1 ) < 6 then
16500: LD_EXP 6
16504: PPUSH
16505: LD_INT 1
16507: PPUSH
16508: CALL_OW 296
16512: PUSH
16513: LD_INT 6
16515: LESS
16516: IFFALSE 16765
// begin NearSol = NearestUnitToXY ( FilterAllUnits ( [ [ f_side , americans ] , [ f_sex , sex_male ] ] ) diff [ John , Cyrus ] , 52 , 13 ) ;
16518: LD_ADDR_VAR 0 1
16522: PUSH
16523: LD_INT 22
16525: PUSH
16526: LD_EXP 2
16530: PUSH
16531: EMPTY
16532: LIST
16533: LIST
16534: PUSH
16535: LD_INT 26
16537: PUSH
16538: LD_INT 1
16540: PUSH
16541: EMPTY
16542: LIST
16543: LIST
16544: PUSH
16545: EMPTY
16546: LIST
16547: LIST
16548: PPUSH
16549: CALL_OW 69
16553: PUSH
16554: LD_EXP 6
16558: PUSH
16559: LD_EXP 7
16563: PUSH
16564: EMPTY
16565: LIST
16566: LIST
16567: DIFF
16568: PPUSH
16569: LD_INT 52
16571: PPUSH
16572: LD_INT 13
16574: PPUSH
16575: CALL_OW 73
16579: ST_TO_ADDR
// CenterOnUnits ( dep1 ) ;
16580: LD_INT 1
16582: PPUSH
16583: CALL_OW 85
// ComMoveXY ( John , 52 , 13 ) ;
16587: LD_EXP 6
16591: PPUSH
16592: LD_INT 52
16594: PPUSH
16595: LD_INT 13
16597: PPUSH
16598: CALL_OW 111
// DialogueOn ;
16602: CALL_OW 6
// Say ( John , D7-JMM-1 ) ;
16606: LD_EXP 6
16610: PPUSH
16611: LD_STRING D7-JMM-1
16613: PPUSH
16614: CALL_OW 88
// if NearSol then
16618: LD_VAR 0 1
16622: IFFALSE 16684
// begin Say ( NearSol , D7-Sol1-1 ) ;
16624: LD_VAR 0 1
16628: PPUSH
16629: LD_STRING D7-Sol1-1
16631: PPUSH
16632: CALL_OW 88
// Say ( John , D7-JMM-2 ) ;
16636: LD_EXP 6
16640: PPUSH
16641: LD_STRING D7-JMM-2
16643: PPUSH
16644: CALL_OW 88
// Say ( NearSOl , D7-Sol1-2 ) ;
16648: LD_VAR 0 1
16652: PPUSH
16653: LD_STRING D7-Sol1-2
16655: PPUSH
16656: CALL_OW 88
// Say ( John , D7-JMM-3 ) ;
16660: LD_EXP 6
16664: PPUSH
16665: LD_STRING D7-JMM-3
16667: PPUSH
16668: CALL_OW 88
// Say ( NearSol , D7-Sol1-3 ) ;
16672: LD_VAR 0 1
16676: PPUSH
16677: LD_STRING D7-Sol1-3
16679: PPUSH
16680: CALL_OW 88
// end ; if IsOk ( Cyrus ) and IsOk ( Lisa ) then
16684: LD_EXP 7
16688: PPUSH
16689: CALL_OW 302
16693: PUSH
16694: LD_EXP 11
16698: PPUSH
16699: CALL_OW 302
16703: AND
16704: IFFALSE 16759
// begin Say ( Cyrus , D7-Cyrus-3 ) ;
16706: LD_EXP 7
16710: PPUSH
16711: LD_STRING D7-Cyrus-3
16713: PPUSH
16714: CALL_OW 88
// if NearSol then
16718: LD_VAR 0 1
16722: IFFALSE 16759
// begin Say ( NearSol , D7-Sol1-4 ) ;
16724: LD_VAR 0 1
16728: PPUSH
16729: LD_STRING D7-Sol1-4
16731: PPUSH
16732: CALL_OW 88
// if IsOk ( Lisa ) then
16736: LD_EXP 11
16740: PPUSH
16741: CALL_OW 302
16745: IFFALSE 16759
// Say ( Lisa , D7-Lisa-4 ) ;
16747: LD_EXP 11
16751: PPUSH
16752: LD_STRING D7-Lisa-4
16754: PPUSH
16755: CALL_OW 88
// end ; end ; DialogueOff ;
16759: CALL_OW 7
// end else
16763: GO 16766
// enable ;
16765: ENABLE
// end ;
16766: PPOPN 1
16768: END
// every 0 0$1 trigger ( GetLives ( Mikhail ) < Mikhails_lives ) and rep marked 13 do
16769: LD_EXP 63
16773: PPUSH
16774: CALL_OW 256
16778: PUSH
16779: LD_EXP 48
16783: LESS
16784: PUSH
16785: LD_EXP 47
16789: AND
16790: IFFALSE 16935
16792: GO 16794
16794: DISABLE
// begin if IsOk ( Mikhail ) then
16795: LD_EXP 63
16799: PPUSH
16800: CALL_OW 302
16804: IFFALSE 16935
// begin attacker = Nearest ( Mikhail , FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] ] ) ) ;
16806: LD_ADDR_LOC 11
16810: PUSH
16811: LD_EXP 63
16815: PPUSH
16816: LD_INT 22
16818: PUSH
16819: LD_EXP 2
16823: PUSH
16824: EMPTY
16825: LIST
16826: LIST
16827: PUSH
16828: LD_INT 21
16830: PUSH
16831: LD_INT 1
16833: PUSH
16834: EMPTY
16835: LIST
16836: LIST
16837: PUSH
16838: EMPTY
16839: LIST
16840: LIST
16841: PPUSH
16842: CALL_OW 69
16846: PPUSH
16847: CALL 10035 0 2
16851: ST_TO_ADDR
// if GetSex ( attacker ) = sex_male then
16852: LD_LOC 11
16856: PPUSH
16857: CALL_OW 258
16861: PUSH
16862: LD_INT 1
16864: EQUAL
16865: IFFALSE 16894
// begin Say ( attacker , D7a-Sol1-1 ) ;
16867: LD_LOC 11
16871: PPUSH
16872: LD_STRING D7a-Sol1-1
16874: PPUSH
16875: CALL_OW 88
// enable ( firing1 ) ;
16879: LD_EXP 49
16883: ENABLE_MARKED
// rep = false ;
16884: LD_ADDR_EXP 47
16888: PUSH
16889: LD_INT 0
16891: ST_TO_ADDR
// end else
16892: GO 16919
// begin Say ( attacker , D7a-FSol1-1 ) ;
16894: LD_LOC 11
16898: PPUSH
16899: LD_STRING D7a-FSol1-1
16901: PPUSH
16902: CALL_OW 88
// enable ( firing2 ) ;
16906: LD_EXP 50
16910: ENABLE_MARKED
// rep = false ;
16911: LD_ADDR_EXP 47
16915: PUSH
16916: LD_INT 0
16918: ST_TO_ADDR
// end ; Mikhails_lives = GetLives ( Mikhail ) ;
16919: LD_ADDR_EXP 48
16923: PUSH
16924: LD_EXP 63
16928: PPUSH
16929: CALL_OW 256
16933: ST_TO_ADDR
// enable ;
16934: ENABLE
// end ; end ;
16935: END
// every 0 0$1 marked 14 do
16936: GO 16938
16938: DISABLE
// begin if IsDead ( Mikhail ) then
16939: LD_EXP 63
16943: PPUSH
16944: CALL_OW 301
16948: IFFALSE 16962
// Say ( attacker , D7a-Sol1-1a ) ;
16950: LD_LOC 11
16954: PPUSH
16955: LD_STRING D7a-Sol1-1a
16957: PPUSH
16958: CALL_OW 88
// end ;
16962: END
// every 0 0$1 marked 15 do
16963: GO 16965
16965: DISABLE
// begin if IsDead ( Mikhail ) then
16966: LD_EXP 63
16970: PPUSH
16971: CALL_OW 301
16975: IFFALSE 16989
// Say ( attacker , D7a-FSol1-1a ) ;
16977: LD_LOC 11
16981: PPUSH
16982: LD_STRING D7a-FSol1-1a
16984: PPUSH
16985: CALL_OW 88
// end ;
16989: END
// every 0 0$3 trigger ( GetLives ( dep1 ) < Dep1_lives or GetLives ( dep2 ) < Dep2_lives ) and not ( battle ) do
16990: LD_INT 1
16992: PPUSH
16993: CALL_OW 256
16997: PUSH
16998: LD_EXP 45
17002: LESS
17003: PUSH
17004: LD_INT 10
17006: PPUSH
17007: CALL_OW 256
17011: PUSH
17012: LD_EXP 46
17016: LESS
17017: OR
17018: PUSH
17019: LD_EXP 73
17023: NOT
17024: AND
17025: IFFALSE 17136
17027: GO 17029
17029: DISABLE
// begin if ( GetLives ( dep1 ) < Dep1_lives and GetDistUnits ( dep1 , John ) < 20 ) or ( GetLives ( dep2 ) < Dep2_lives and GetDistUnits ( dep2 , John ) < 20 ) then
17030: LD_INT 1
17032: PPUSH
17033: CALL_OW 256
17037: PUSH
17038: LD_EXP 45
17042: LESS
17043: PUSH
17044: LD_INT 1
17046: PPUSH
17047: LD_EXP 6
17051: PPUSH
17052: CALL_OW 296
17056: PUSH
17057: LD_INT 20
17059: LESS
17060: AND
17061: PUSH
17062: LD_INT 10
17064: PPUSH
17065: CALL_OW 256
17069: PUSH
17070: LD_EXP 46
17074: LESS
17075: PUSH
17076: LD_INT 10
17078: PPUSH
17079: LD_EXP 6
17083: PPUSH
17084: CALL_OW 296
17088: PUSH
17089: LD_INT 20
17091: LESS
17092: AND
17093: OR
17094: IFFALSE 17110
// Say ( John , D8-JMM-1 ) else
17096: LD_EXP 6
17100: PPUSH
17101: LD_STRING D8-JMM-1
17103: PPUSH
17104: CALL_OW 88
17108: GO 17136
// begin Dep1_lives = GetLives ( dep1 ) ;
17110: LD_ADDR_EXP 45
17114: PUSH
17115: LD_INT 1
17117: PPUSH
17118: CALL_OW 256
17122: ST_TO_ADDR
// Dep2_lives = GetLives ( dep2 ) ;
17123: LD_ADDR_EXP 46
17127: PUSH
17128: LD_INT 10
17130: PPUSH
17131: CALL_OW 256
17135: ST_TO_ADDR
// end ; end ;
17136: END
// function place_tiger ( name , area ) ; var i , x_sour , y_sour ; begin
17137: LD_INT 0
17139: PPUSH
17140: PPUSH
17141: PPUSH
17142: PPUSH
// InitUc ;
17143: CALL_OW 18
// InitHc ;
17147: CALL_OW 19
// hc_sex = sex_male ;
17151: LD_ADDR_OWVAR 27
17155: PUSH
17156: LD_INT 1
17158: ST_TO_ADDR
// uc_side = 0 ;
17159: LD_ADDR_OWVAR 20
17163: PUSH
17164: LD_INT 0
17166: ST_TO_ADDR
// uc_nation = nation_nature ;
17167: LD_ADDR_OWVAR 21
17171: PUSH
17172: LD_INT 0
17174: ST_TO_ADDR
// hc_class = class_tiger ;
17175: LD_ADDR_OWVAR 28
17179: PUSH
17180: LD_INT 14
17182: ST_TO_ADDR
// hc_skills = [ Tiger_skill , 0 , 0 , 0 ] ;
17183: LD_ADDR_OWVAR 31
17187: PUSH
17188: LD_EXP 101
17192: PUSH
17193: LD_INT 0
17195: PUSH
17196: LD_INT 0
17198: PUSH
17199: LD_INT 0
17201: PUSH
17202: EMPTY
17203: LIST
17204: LIST
17205: LIST
17206: LIST
17207: ST_TO_ADDR
// hc_agressivity = 50 ;
17208: LD_ADDR_OWVAR 35
17212: PUSH
17213: LD_INT 50
17215: ST_TO_ADDR
// i = 5 ;
17216: LD_ADDR_VAR 0 4
17220: PUSH
17221: LD_INT 5
17223: ST_TO_ADDR
// repeat i = i - 1 ;
17224: LD_ADDR_VAR 0 4
17228: PUSH
17229: LD_VAR 0 4
17233: PUSH
17234: LD_INT 1
17236: MINUS
17237: ST_TO_ADDR
// sour = RandHexArea ( area , false ) ;
17238: LD_ADDR_LOC 9
17242: PUSH
17243: LD_VAR 0 2
17247: PPUSH
17248: LD_INT 0
17250: PPUSH
17251: CALL_OW 16
17255: ST_TO_ADDR
// until not ( SeeXY ( americans , sour [ 1 ] , sour [ 2 ] ) ) or i < 1 ;
17256: LD_EXP 2
17260: PPUSH
17261: LD_LOC 9
17265: PUSH
17266: LD_INT 1
17268: ARRAY
17269: PPUSH
17270: LD_LOC 9
17274: PUSH
17275: LD_INT 2
17277: ARRAY
17278: PPUSH
17279: CALL_OW 293
17283: NOT
17284: PUSH
17285: LD_VAR 0 4
17289: PUSH
17290: LD_INT 1
17292: LESS
17293: OR
17294: IFFALSE 17224
// name = CreateHuman ;
17296: LD_ADDR_VAR 0 1
17300: PUSH
17301: CALL_OW 44
17305: ST_TO_ADDR
// if not ( SeeXY ( americans , sour [ 1 ] , sour [ 2 ] ) ) then
17306: LD_EXP 2
17310: PPUSH
17311: LD_LOC 9
17315: PUSH
17316: LD_INT 1
17318: ARRAY
17319: PPUSH
17320: LD_LOC 9
17324: PUSH
17325: LD_INT 2
17327: ARRAY
17328: PPUSH
17329: CALL_OW 293
17333: NOT
17334: IFFALSE 17366
// PlaceUnitXY ( name , sour [ 1 ] , sour [ 2 ] , false ) ;
17336: LD_VAR 0 1
17340: PPUSH
17341: LD_LOC 9
17345: PUSH
17346: LD_INT 1
17348: ARRAY
17349: PPUSH
17350: LD_LOC 9
17354: PUSH
17355: LD_INT 2
17357: ARRAY
17358: PPUSH
17359: LD_INT 0
17361: PPUSH
17362: CALL_OW 48
// if not ( IsOk ( name ) ) then
17366: LD_VAR 0 1
17370: PPUSH
17371: CALL_OW 302
17375: NOT
17376: IFFALSE 17397
// begin DestroyUnit ( name ) ;
17378: LD_VAR 0 1
17382: PPUSH
17383: CALL_OW 65
// result = 0 ;
17387: LD_ADDR_VAR 0 3
17391: PUSH
17392: LD_INT 0
17394: ST_TO_ADDR
// end else
17395: GO 17405
// result = 1 ;
17397: LD_ADDR_VAR 0 3
17401: PUSH
17402: LD_INT 1
17404: ST_TO_ADDR
// end ;
17405: LD_VAR 0 3
17409: RET
// every 2 2$0 marked 18 do var i ;
17410: GO 17412
17412: DISABLE
17413: LD_INT 0
17415: PPUSH
// begin for i = 1 to Difficulty do
17416: LD_ADDR_VAR 0 1
17420: PUSH
17421: DOUBLE
17422: LD_INT 1
17424: DEC
17425: ST_TO_ADDR
17426: LD_OWVAR 67
17430: PUSH
17431: FOR_TO
17432: IFFALSE 17536
// begin hc_sex = sex_male ;
17434: LD_ADDR_OWVAR 27
17438: PUSH
17439: LD_INT 1
17441: ST_TO_ADDR
// uc_side = 0 ;
17442: LD_ADDR_OWVAR 20
17446: PUSH
17447: LD_INT 0
17449: ST_TO_ADDR
// uc_nation = nation_nature ;
17450: LD_ADDR_OWVAR 21
17454: PUSH
17455: LD_INT 0
17457: ST_TO_ADDR
// hc_class = class_tiger ;
17458: LD_ADDR_OWVAR 28
17462: PUSH
17463: LD_INT 14
17465: ST_TO_ADDR
// hc_skills = [ Tiger_skill , 0 , 0 , 0 ] ;
17466: LD_ADDR_OWVAR 31
17470: PUSH
17471: LD_EXP 101
17475: PUSH
17476: LD_INT 0
17478: PUSH
17479: LD_INT 0
17481: PUSH
17482: LD_INT 0
17484: PUSH
17485: EMPTY
17486: LIST
17487: LIST
17488: LIST
17489: LIST
17490: ST_TO_ADDR
// hc_agressivity = 5 + 15 * Difficulty ;
17491: LD_ADDR_OWVAR 35
17495: PUSH
17496: LD_INT 5
17498: PUSH
17499: LD_INT 15
17501: PUSH
17502: LD_OWVAR 67
17506: MUL
17507: PLUS
17508: ST_TO_ADDR
// tiger = CreateHuman ;
17509: LD_ADDR_LOC 8
17513: PUSH
17514: CALL_OW 44
17518: ST_TO_ADDR
// PlaceUnitArea ( tiger , wood , false ) ;
17519: LD_LOC 8
17523: PPUSH
17524: LD_INT 3
17526: PPUSH
17527: LD_INT 0
17529: PPUSH
17530: CALL_OW 49
// end ;
17534: GO 17431
17536: POP
17537: POP
// end ;
17538: PPOPN 1
17540: END
// every 6 6$0 trigger Rand ( 1 , number_of_crates ) = 1 do
17541: LD_INT 1
17543: PPUSH
17544: LD_EXP 74
17548: PPUSH
17549: CALL_OW 12
17553: PUSH
17554: LD_INT 1
17556: EQUAL
17557: IFFALSE 17573
17559: GO 17561
17561: DISABLE
// begin CreateCratesAnywhere ( 3 , true ) ;
17562: LD_INT 3
17564: PPUSH
17565: LD_INT 1
17567: PPUSH
17568: CALL_OW 57
// enable ;
17572: ENABLE
// end ;
17573: END
// every 0 0$0.1 marked 19 do
17574: GO 17576
17576: DISABLE
// begin ComMoveXY ( tigers , 98 , 2 ) ;
17577: LD_EXP 68
17581: PPUSH
17582: LD_INT 98
17584: PPUSH
17585: LD_INT 2
17587: PPUSH
17588: CALL_OW 111
// for tiger in tigers do
17592: LD_ADDR_LOC 8
17596: PUSH
17597: LD_EXP 68
17601: PUSH
17602: FOR_IN
17603: IFFALSE 17628
// begin WaitTask ( tiger , 1 ) ;
17605: LD_LOC 8
17609: PPUSH
17610: LD_INT 1
17612: PPUSH
17613: CALL 3199 0 2
// RemoveUnit ( tiger ) ;
17617: LD_LOC 8
17621: PPUSH
17622: CALL_OW 64
// end ;
17626: GO 17602
17628: POP
17629: POP
// end ;
17630: END
// every 0 0$3 trigger tick > Time_of_attack do var Un ;
17631: LD_OWVAR 1
17635: PUSH
17636: LD_EXP 25
17640: GREATER
17641: IFFALSE 18041
17643: GO 17645
17645: DISABLE
17646: LD_INT 0
17648: PPUSH
// begin if Attack_canceled then
17649: LD_EXP 91
17653: IFFALSE 17729
// begin DialogueOn ;
17655: CALL_OW 6
// SayRadio ( Powell , D6-Pow-1 ) ;
17659: LD_EXP 15
17663: PPUSH
17664: LD_STRING D6-Pow-1
17666: PPUSH
17667: CALL_OW 94
// Say ( John , D6-JMM-1 ) ;
17671: LD_EXP 6
17675: PPUSH
17676: LD_STRING D6-JMM-1
17678: PPUSH
17679: CALL_OW 88
// SayRadio ( Powell , D6-Pow-2 ) ;
17683: LD_EXP 15
17687: PPUSH
17688: LD_STRING D6-Pow-2
17690: PPUSH
17691: CALL_OW 94
// Say ( John , D6-JMM-2 ) ;
17695: LD_EXP 6
17699: PPUSH
17700: LD_STRING D6-JMM-2
17702: PPUSH
17703: CALL_OW 88
// DialogueOff ;
17707: CALL_OW 7
// battle = false ;
17711: LD_ADDR_EXP 73
17715: PUSH
17716: LD_INT 0
17718: ST_TO_ADDR
// end_of_m = 1 ;
17719: LD_ADDR_LOC 5
17723: PUSH
17724: LD_INT 1
17726: ST_TO_ADDR
// end else
17727: GO 18041
// begin disable ( tigers_allowed ) ;
17729: LD_EXP 79
17733: DISABLE_MARKED
// enable ( remove_tigers ) ;
17734: LD_EXP 80
17738: ENABLE_MARKED
// rsol = [ [ rsol1 , rsol2 ] , [ rsol1 , rsol2 , rsol3 , rsol4 ] , [ rsol1 , rsol2 , rsol3 , rsol4 , rsol5 , rsol6 ] ] [ Difficulty ] ;
17739: LD_ADDR_LOC 6
17743: PUSH
17744: LD_EXP 53
17748: PUSH
17749: LD_EXP 54
17753: PUSH
17754: EMPTY
17755: LIST
17756: LIST
17757: PUSH
17758: LD_EXP 53
17762: PUSH
17763: LD_EXP 54
17767: PUSH
17768: LD_EXP 55
17772: PUSH
17773: LD_EXP 56
17777: PUSH
17778: EMPTY
17779: LIST
17780: LIST
17781: LIST
17782: LIST
17783: PUSH
17784: LD_EXP 53
17788: PUSH
17789: LD_EXP 54
17793: PUSH
17794: LD_EXP 55
17798: PUSH
17799: LD_EXP 56
17803: PUSH
17804: LD_EXP 57
17808: PUSH
17809: LD_EXP 58
17813: PUSH
17814: EMPTY
17815: LIST
17816: LIST
17817: LIST
17818: LIST
17819: LIST
17820: LIST
17821: PUSH
17822: EMPTY
17823: LIST
17824: LIST
17825: LIST
17826: PUSH
17827: LD_OWVAR 67
17831: ARRAY
17832: ST_TO_ADDR
// rv = [ [ rv1 ] , [ rv1 ] , [ rv1 , rv2 ] ] [ Difficulty ] ;
17833: LD_ADDR_LOC 7
17837: PUSH
17838: LD_EXP 61
17842: PUSH
17843: EMPTY
17844: LIST
17845: PUSH
17846: LD_EXP 61
17850: PUSH
17851: EMPTY
17852: LIST
17853: PUSH
17854: LD_EXP 61
17858: PUSH
17859: LD_EXP 62
17863: PUSH
17864: EMPTY
17865: LIST
17866: LIST
17867: PUSH
17868: EMPTY
17869: LIST
17870: LIST
17871: LIST
17872: PUSH
17873: LD_OWVAR 67
17877: ARRAY
17878: ST_TO_ADDR
// while not ( PlaceUnitArea ( rv1 , prijezd , false ) ) do
17879: LD_EXP 61
17883: PPUSH
17884: LD_INT 10
17886: PPUSH
17887: LD_INT 0
17889: PPUSH
17890: CALL_OW 49
17894: NOT
17895: IFFALSE 17906
// wait ( 0 0$0.5 ) ;
17897: LD_INT 18
17899: PPUSH
17900: CALL_OW 67
17904: GO 17879
// if Difficulty > 2 then
17906: LD_OWVAR 67
17910: PUSH
17911: LD_INT 2
17913: GREATER
17914: IFFALSE 17943
// while not ( PlaceUnitArea ( rv2 , prijezd , false ) ) do
17916: LD_EXP 62
17920: PPUSH
17921: LD_INT 10
17923: PPUSH
17924: LD_INT 0
17926: PPUSH
17927: CALL_OW 49
17931: NOT
17932: IFFALSE 17943
// wait ( 0 0$0.5 ) ;
17934: LD_INT 18
17936: PPUSH
17937: CALL_OW 67
17941: GO 17916
// AddComAgressiveMove ( rv , 16 , 7 ) ;
17943: LD_LOC 7
17947: PPUSH
17948: LD_INT 16
17950: PPUSH
17951: LD_INT 7
17953: PPUSH
17954: CALL_OW 174
// for Un in rsol do
17958: LD_ADDR_VAR 0 1
17962: PUSH
17963: LD_LOC 6
17967: PUSH
17968: FOR_IN
17969: IFFALSE 17988
// PlaceUnitArea ( Un , prijezd , false ) ;
17971: LD_VAR 0 1
17975: PPUSH
17976: LD_INT 10
17978: PPUSH
17979: LD_INT 0
17981: PPUSH
17982: CALL_OW 49
17986: GO 17968
17988: POP
17989: POP
// AddComAgressiveMove ( rsol , 16 , 7 ) ;
17990: LD_LOC 6
17994: PPUSH
17995: LD_INT 16
17997: PPUSH
17998: LD_INT 7
18000: PPUSH
18001: CALL_OW 174
// Say ( rsol1 , D9-Rus3-1 ) ;
18005: LD_EXP 53
18009: PPUSH
18010: LD_STRING D9-Rus3-1
18012: PPUSH
18013: CALL_OW 88
// Say ( rsol2 , D9-Russ-1 ) ;
18017: LD_EXP 54
18021: PPUSH
18022: LD_STRING D9-Russ-1
18024: PPUSH
18025: CALL_OW 88
// Hint ( Boj ) ;
18029: LD_STRING Boj
18031: PPUSH
18032: CALL_OW 339
// enable ( russians_attack ) ;
18036: LD_EXP 51
18040: ENABLE_MARKED
// end ; end ;
18041: PPOPN 1
18043: END
// every 0 0$1 marked 16 do var breastworks , target , b , min ;
18044: GO 18046
18046: DISABLE
18047: LD_INT 0
18049: PPUSH
18050: PPUSH
18051: PPUSH
18052: PPUSH
// begin battle = true ;
18053: LD_ADDR_EXP 73
18057: PUSH
18058: LD_INT 1
18060: ST_TO_ADDR
// target = 1 ;
18061: LD_ADDR_VAR 0 2
18065: PUSH
18066: LD_INT 1
18068: ST_TO_ADDR
// min = 1000 ;
18069: LD_ADDR_VAR 0 4
18073: PUSH
18074: LD_INT 1000
18076: ST_TO_ADDR
// wait ( 0 0$5 * ( 4 - Difficulty ) ) ;
18077: LD_INT 175
18079: PUSH
18080: LD_INT 4
18082: PUSH
18083: LD_OWVAR 67
18087: MINUS
18088: MUL
18089: PPUSH
18090: CALL_OW 67
// breastworks = FilterUnitsInArea ( North , [ [ f_btype , b_breastwork ] , [ f_side , americans ] ] ) ;
18094: LD_ADDR_VAR 0 1
18098: PUSH
18099: LD_INT 2
18101: PPUSH
18102: LD_INT 30
18104: PUSH
18105: LD_INT 31
18107: PUSH
18108: EMPTY
18109: LIST
18110: LIST
18111: PUSH
18112: LD_INT 22
18114: PUSH
18115: LD_EXP 2
18119: PUSH
18120: EMPTY
18121: LIST
18122: LIST
18123: PUSH
18124: EMPTY
18125: LIST
18126: LIST
18127: PPUSH
18128: CALL_OW 70
18132: ST_TO_ADDR
// if breastworks = 0 then
18133: LD_VAR 0 1
18137: PUSH
18138: LD_INT 0
18140: EQUAL
18141: IFFALSE 18166
// ComAgressiveMove ( rsol ^ rv , 56 , 11 ) else
18143: LD_LOC 6
18147: PUSH
18148: LD_LOC 7
18152: ADD
18153: PPUSH
18154: LD_INT 56
18156: PPUSH
18157: LD_INT 11
18159: PPUSH
18160: CALL_OW 114
18164: GO 18748
// begin for b in breastworks do
18166: LD_ADDR_VAR 0 3
18170: PUSH
18171: LD_VAR 0 1
18175: PUSH
18176: FOR_IN
18177: IFFALSE 18225
// if min > GetDistUnitXY ( b , 36 , 0 ) then
18179: LD_VAR 0 4
18183: PUSH
18184: LD_VAR 0 3
18188: PPUSH
18189: LD_INT 36
18191: PPUSH
18192: LD_INT 0
18194: PPUSH
18195: CALL_OW 297
18199: GREATER
18200: IFFALSE 18223
// min = GetDistUnitXY ( b , 36 , 0 ) ;
18202: LD_ADDR_VAR 0 4
18206: PUSH
18207: LD_VAR 0 3
18211: PPUSH
18212: LD_INT 36
18214: PPUSH
18215: LD_INT 0
18217: PPUSH
18218: CALL_OW 297
18222: ST_TO_ADDR
18223: GO 18176
18225: POP
18226: POP
// for b in breastworks do
18227: LD_ADDR_VAR 0 3
18231: PUSH
18232: LD_VAR 0 1
18236: PUSH
18237: FOR_IN
18238: IFFALSE 18294
// if min > GetDistUnitXY ( b , 47 , 18 ) then
18240: LD_VAR 0 4
18244: PUSH
18245: LD_VAR 0 3
18249: PPUSH
18250: LD_INT 47
18252: PPUSH
18253: LD_INT 18
18255: PPUSH
18256: CALL_OW 297
18260: GREATER
18261: IFFALSE 18292
// begin min = GetDistUnitXY ( b , 47 , 18 ) ;
18263: LD_ADDR_VAR 0 4
18267: PUSH
18268: LD_VAR 0 3
18272: PPUSH
18273: LD_INT 47
18275: PPUSH
18276: LD_INT 18
18278: PPUSH
18279: CALL_OW 297
18283: ST_TO_ADDR
// target = 2 ;
18284: LD_ADDR_VAR 0 2
18288: PUSH
18289: LD_INT 2
18291: ST_TO_ADDR
// end ;
18292: GO 18237
18294: POP
18295: POP
// for b in breastworks do
18296: LD_ADDR_VAR 0 3
18300: PUSH
18301: LD_VAR 0 1
18305: PUSH
18306: FOR_IN
18307: IFFALSE 18363
// if min > GetDistUnitXY ( b , 62 , 23 ) then
18309: LD_VAR 0 4
18313: PUSH
18314: LD_VAR 0 3
18318: PPUSH
18319: LD_INT 62
18321: PPUSH
18322: LD_INT 23
18324: PPUSH
18325: CALL_OW 297
18329: GREATER
18330: IFFALSE 18361
// begin min = GetDistUnitXY ( b , 62 , 23 ) ;
18332: LD_ADDR_VAR 0 4
18336: PUSH
18337: LD_VAR 0 3
18341: PPUSH
18342: LD_INT 62
18344: PPUSH
18345: LD_INT 23
18347: PPUSH
18348: CALL_OW 297
18352: ST_TO_ADDR
// target = 3 ;
18353: LD_ADDR_VAR 0 2
18357: PUSH
18358: LD_INT 3
18360: ST_TO_ADDR
// end ;
18361: GO 18306
18363: POP
18364: POP
// case target of 1 :
18365: LD_VAR 0 2
18369: PUSH
18370: LD_INT 1
18372: DOUBLE
18373: EQUAL
18374: IFTRUE 18378
18376: GO 18476
18378: POP
// begin AddComAgressiveMove ( rsol ^ rv , 16 , 2 ) ;
18379: LD_LOC 6
18383: PUSH
18384: LD_LOC 7
18388: ADD
18389: PPUSH
18390: LD_INT 16
18392: PPUSH
18393: LD_INT 2
18395: PPUSH
18396: CALL_OW 174
// wait ( 0 0$3 ) ;
18400: LD_INT 105
18402: PPUSH
18403: CALL_OW 67
// AddComAgressiveMove ( rsol , 36 , 0 ) ;
18407: LD_LOC 6
18411: PPUSH
18412: LD_INT 36
18414: PPUSH
18415: LD_INT 0
18417: PPUSH
18418: CALL_OW 174
// AddComAgressiveMove ( rsol , 51 , 4 ) ;
18422: LD_LOC 6
18426: PPUSH
18427: LD_INT 51
18429: PPUSH
18430: LD_INT 4
18432: PPUSH
18433: CALL_OW 174
// wait ( 0 0$3 ) ;
18437: LD_INT 105
18439: PPUSH
18440: CALL_OW 67
// AddComAgressiveMove ( rv , 36 , 0 ) ;
18444: LD_LOC 7
18448: PPUSH
18449: LD_INT 36
18451: PPUSH
18452: LD_INT 0
18454: PPUSH
18455: CALL_OW 174
// AddComAgressiveMove ( rv , 51 , 4 ) ;
18459: LD_LOC 7
18463: PPUSH
18464: LD_INT 51
18466: PPUSH
18467: LD_INT 4
18469: PPUSH
18470: CALL_OW 174
// end ; 2 :
18474: GO 18748
18476: LD_INT 2
18478: DOUBLE
18479: EQUAL
18480: IFTRUE 18484
18482: GO 18628
18484: POP
// begin if Rand ( 1 , 2 ) = 1 then
18485: LD_INT 1
18487: PPUSH
18488: LD_INT 2
18490: PPUSH
18491: CALL_OW 12
18495: PUSH
18496: LD_INT 1
18498: EQUAL
18499: IFFALSE 18568
// begin AddComAgressiveMove ( rsol ^ rv , 35 , 25 ) ;
18501: LD_LOC 6
18505: PUSH
18506: LD_LOC 7
18510: ADD
18511: PPUSH
18512: LD_INT 35
18514: PPUSH
18515: LD_INT 25
18517: PPUSH
18518: CALL_OW 174
// wait ( 0 0$5 ) ;
18522: LD_INT 175
18524: PPUSH
18525: CALL_OW 67
// AddComAgressiveMove ( rsol , 47 , 18 ) ;
18529: LD_LOC 6
18533: PPUSH
18534: LD_INT 47
18536: PPUSH
18537: LD_INT 18
18539: PPUSH
18540: CALL_OW 174
// wait ( 0 0$2 ) ;
18544: LD_INT 70
18546: PPUSH
18547: CALL_OW 67
// AddComAgressiveMove ( rv , 47 , 18 ) ;
18551: LD_LOC 7
18555: PPUSH
18556: LD_INT 47
18558: PPUSH
18559: LD_INT 18
18561: PPUSH
18562: CALL_OW 174
// end else
18566: GO 18605
// begin AddComAgressiveMove ( rsol , 47 , 18 ) ;
18568: LD_LOC 6
18572: PPUSH
18573: LD_INT 47
18575: PPUSH
18576: LD_INT 18
18578: PPUSH
18579: CALL_OW 174
// wait ( 0 0$3 ) ;
18583: LD_INT 105
18585: PPUSH
18586: CALL_OW 67
// AddComAgressiveMove ( rv , 47 , 18 ) ;
18590: LD_LOC 7
18594: PPUSH
18595: LD_INT 47
18597: PPUSH
18598: LD_INT 18
18600: PPUSH
18601: CALL_OW 174
// end ; AddComAgressiveMove ( rsol ^ rv , 51 , 13 ) ;
18605: LD_LOC 6
18609: PUSH
18610: LD_LOC 7
18614: ADD
18615: PPUSH
18616: LD_INT 51
18618: PPUSH
18619: LD_INT 13
18621: PPUSH
18622: CALL_OW 174
// end ; 3 :
18626: GO 18748
18628: LD_INT 3
18630: DOUBLE
18631: EQUAL
18632: IFTRUE 18636
18634: GO 18747
18636: POP
// begin AddComAgressiveMove ( rsol ^ rv , 35 , 25 ) ;
18637: LD_LOC 6
18641: PUSH
18642: LD_LOC 7
18646: ADD
18647: PPUSH
18648: LD_INT 35
18650: PPUSH
18651: LD_INT 25
18653: PPUSH
18654: CALL_OW 174
// wait ( 0 0$5 ) ;
18658: LD_INT 175
18660: PPUSH
18661: CALL_OW 67
// AddComAgressiveMove ( rsol ^ rv , 56 , 37 ) ;
18665: LD_LOC 6
18669: PUSH
18670: LD_LOC 7
18674: ADD
18675: PPUSH
18676: LD_INT 56
18678: PPUSH
18679: LD_INT 37
18681: PPUSH
18682: CALL_OW 174
// wait ( 0 0$5 ) ;
18686: LD_INT 175
18688: PPUSH
18689: CALL_OW 67
// AddComAgressiveMove ( rsol , 62 , 23 ) ;
18693: LD_LOC 6
18697: PPUSH
18698: LD_INT 62
18700: PPUSH
18701: LD_INT 23
18703: PPUSH
18704: CALL_OW 174
// wait ( 0 0$2 ) ;
18708: LD_INT 70
18710: PPUSH
18711: CALL_OW 67
// AddComAgressiveMove ( rv , 62 , 23 ) ;
18715: LD_LOC 7
18719: PPUSH
18720: LD_INT 62
18722: PPUSH
18723: LD_INT 23
18725: PPUSH
18726: CALL_OW 174
// AddComAgressiveMove ( rv , 55 , 10 ) ;
18730: LD_LOC 7
18734: PPUSH
18735: LD_INT 55
18737: PPUSH
18738: LD_INT 10
18740: PPUSH
18741: CALL_OW 174
// end ; end ;
18745: GO 18748
18747: POP
// end ; enable ( russians_attack1 ) ;
18748: LD_EXP 52
18752: ENABLE_MARKED
// end ;
18753: PPOPN 4
18755: END
// every 0 0$3 marked 17 do
18756: GO 18758
18758: DISABLE
// begin if IsOk ( rdrv1 ) then
18759: LD_EXP 59
18763: PPUSH
18764: CALL_OW 302
18768: IFFALSE 18890
// begin if not ( IsBusy ( rv1 ) ) and WantsToAttack ( rv1 ) = 0 and Attacks ( rv1 ) = 0 and IsOk ( dep1 ) then
18770: LD_EXP 61
18774: PPUSH
18775: CALL_OW 315
18779: NOT
18780: PUSH
18781: LD_EXP 61
18785: PPUSH
18786: CALL_OW 319
18790: PUSH
18791: LD_INT 0
18793: EQUAL
18794: AND
18795: PUSH
18796: LD_EXP 61
18800: PPUSH
18801: CALL_OW 320
18805: PUSH
18806: LD_INT 0
18808: EQUAL
18809: AND
18810: PUSH
18811: LD_INT 1
18813: PPUSH
18814: CALL_OW 302
18818: AND
18819: IFFALSE 18890
// if GetDistUnits ( rv1 , dep1 ) < 7 and UnitsInside ( dep1 ) = 0 then
18821: LD_EXP 61
18825: PPUSH
18826: LD_INT 1
18828: PPUSH
18829: CALL_OW 296
18833: PUSH
18834: LD_INT 7
18836: LESS
18837: PUSH
18838: LD_INT 1
18840: PPUSH
18841: CALL_OW 313
18845: PUSH
18846: LD_INT 0
18848: EQUAL
18849: AND
18850: IFFALSE 18875
// begin AddComExitVehicle ( rv1 ) ;
18852: LD_EXP 61
18856: PPUSH
18857: CALL_OW 181
// AddComEnterUnit ( rdrv1 , dep1 ) ;
18861: LD_EXP 59
18865: PPUSH
18866: LD_INT 1
18868: PPUSH
18869: CALL_OW 180
// end else
18873: GO 18890
// ComAgressiveMove ( rv1 , 51 , 14 ) ;
18875: LD_EXP 61
18879: PPUSH
18880: LD_INT 51
18882: PPUSH
18883: LD_INT 14
18885: PPUSH
18886: CALL_OW 114
// end ; enable ;
18890: ENABLE
// end ;
18891: END
// every 0 0$5 trigger ( UnitFilter ( rsol ^ [ rdrv1 , rdrv2 ] , [ f_alive ] ) ) = 0 marked 17 do
18892: LD_LOC 6
18896: PUSH
18897: LD_EXP 59
18901: PUSH
18902: LD_EXP 60
18906: PUSH
18907: EMPTY
18908: LIST
18909: LIST
18910: ADD
18911: PPUSH
18912: LD_INT 51
18914: PUSH
18915: EMPTY
18916: LIST
18917: PPUSH
18918: CALL_OW 72
18922: PUSH
18923: LD_INT 0
18925: EQUAL
18926: IFFALSE 19011
18928: GO 18930
18930: DISABLE
// begin disable ;
18931: DISABLE
// Wait ( 0 0$5 ) ;
18932: LD_INT 175
18934: PPUSH
18935: CALL_OW 67
// DialogueOn ;
18939: CALL_OW 6
// SayRadio ( Powell , D6-Pow-1 ) ;
18943: LD_EXP 15
18947: PPUSH
18948: LD_STRING D6-Pow-1
18950: PPUSH
18951: CALL_OW 94
// Say ( John , D6-JMM-1 ) ;
18955: LD_EXP 6
18959: PPUSH
18960: LD_STRING D6-JMM-1
18962: PPUSH
18963: CALL_OW 88
// SayRadio ( Powell , D6-Pow-2 ) ;
18967: LD_EXP 15
18971: PPUSH
18972: LD_STRING D6-Pow-2
18974: PPUSH
18975: CALL_OW 94
// Say ( John , D6-JMM-2 ) ;
18979: LD_EXP 6
18983: PPUSH
18984: LD_STRING D6-JMM-2
18986: PPUSH
18987: CALL_OW 88
// DialogueOff ;
18991: CALL_OW 7
// battle = false ;
18995: LD_ADDR_EXP 73
18999: PUSH
19000: LD_INT 0
19002: ST_TO_ADDR
// end_of_m = 1 ;
19003: LD_ADDR_LOC 5
19007: PUSH
19008: LD_INT 1
19010: ST_TO_ADDR
// end ;
19011: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_or , [ f_side , americans ] , [ f_side , americans1 ] ] , [ f_alive ] , f_not , [ f_ok ] ] ) do
19012: LD_INT 2
19014: PUSH
19015: LD_INT 22
19017: PUSH
19018: LD_EXP 2
19022: PUSH
19023: EMPTY
19024: LIST
19025: LIST
19026: PUSH
19027: LD_INT 22
19029: PUSH
19030: LD_EXP 3
19034: PUSH
19035: EMPTY
19036: LIST
19037: LIST
19038: PUSH
19039: EMPTY
19040: LIST
19041: LIST
19042: LIST
19043: PUSH
19044: LD_INT 51
19046: PUSH
19047: EMPTY
19048: LIST
19049: PUSH
19050: LD_INT 3
19052: PUSH
19053: LD_INT 50
19055: PUSH
19056: EMPTY
19057: LIST
19058: PUSH
19059: EMPTY
19060: LIST
19061: LIST
19062: LIST
19063: LIST
19064: PPUSH
19065: CALL_OW 69
19069: IFFALSE 19081
19071: GO 19073
19073: DISABLE
// begin Hint ( RedArentDead ) ;
19074: LD_STRING RedArentDead
19076: PPUSH
19077: CALL_OW 339
// end ;
19081: END
// every 0 0$2 trigger IsInUnit ( John ) do
19082: LD_EXP 6
19086: PPUSH
19087: CALL_OW 310
19091: IFFALSE 19127
19093: GO 19095
19095: DISABLE
// begin if GetType ( IsInUnit ( John ) ) = unit_vehicle then
19096: LD_EXP 6
19100: PPUSH
19101: CALL_OW 310
19105: PPUSH
19106: CALL_OW 247
19110: PUSH
19111: LD_INT 2
19113: EQUAL
19114: IFFALSE 19126
// JMMInVehicle := true else
19116: LD_ADDR_EXP 116
19120: PUSH
19121: LD_INT 1
19123: ST_TO_ADDR
19124: GO 19127
// enable ;
19126: ENABLE
// end ;
19127: END
// every 0 0$2 + 0 0$1 trigger IsInUnit ( Cyrus ) do
19128: LD_EXP 7
19132: PPUSH
19133: CALL_OW 310
19137: IFFALSE 19173
19139: GO 19141
19141: DISABLE
// begin if GetType ( IsInUnit ( Cyrus ) ) = unit_vehicle then
19142: LD_EXP 7
19146: PPUSH
19147: CALL_OW 310
19151: PPUSH
19152: CALL_OW 247
19156: PUSH
19157: LD_INT 2
19159: EQUAL
19160: IFFALSE 19172
// CyrusInVehicle := true else
19162: LD_ADDR_EXP 117
19166: PUSH
19167: LD_INT 1
19169: ST_TO_ADDR
19170: GO 19173
// enable ;
19172: ENABLE
// end ;
19173: END
// every 0 0$1 trigger IsAt ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) marked 13 do
19174: LD_EXP 63
19178: PPUSH
19179: LD_LOC 10
19183: PUSH
19184: LD_INT 1
19186: ARRAY
19187: PPUSH
19188: LD_LOC 10
19192: PUSH
19193: LD_INT 2
19195: ARRAY
19196: PPUSH
19197: CALL_OW 307
19201: IFFALSE 19239
19203: GO 19205
19205: DISABLE
// begin RemoveUnit ( Mikhail ) ;
19206: LD_EXP 63
19210: PPUSH
19211: CALL_OW 64
// Mikhails_outcome = - 2 ;
19215: LD_ADDR_LOC 3
19219: PUSH
19220: LD_INT 2
19222: NEG
19223: ST_TO_ADDR
// Mikhail_status = 4 ;
19224: LD_ADDR_LOC 4
19228: PUSH
19229: LD_INT 4
19231: ST_TO_ADDR
// ChangeMissionObjectives ( M3a ) ;
19232: LD_STRING M3a
19234: PPUSH
19235: CALL_OW 337
// end ;
19239: END
// every 0 0$3 trigger IsDead ( Mikhail ) marked 13 do
19240: LD_EXP 63
19244: PPUSH
19245: CALL_OW 301
19249: IFFALSE 19277
19251: GO 19253
19253: DISABLE
// begin Mikhails_outcome = 2 ;
19254: LD_ADDR_LOC 3
19258: PUSH
19259: LD_INT 2
19261: ST_TO_ADDR
// Mikhail_status = 3 ;
19262: LD_ADDR_LOC 4
19266: PUSH
19267: LD_INT 3
19269: ST_TO_ADDR
// ChangeMissionObjectives ( M3a ) ;
19270: LD_STRING M3a
19272: PPUSH
19273: CALL_OW 337
// end ;
19277: END
// every 0 0$10 marked 20 do var my_depots , my_eng ;
19278: GO 19280
19280: DISABLE
19281: LD_INT 0
19283: PPUSH
19284: PPUSH
// begin my_depots = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_btype , b_depot ] , [ f_side , americans ] ] ) ;
19285: LD_ADDR_VAR 0 1
19289: PUSH
19290: LD_INT 21
19292: PUSH
19293: LD_INT 3
19295: PUSH
19296: EMPTY
19297: LIST
19298: LIST
19299: PUSH
19300: LD_INT 30
19302: PUSH
19303: LD_INT 0
19305: PUSH
19306: EMPTY
19307: LIST
19308: LIST
19309: PUSH
19310: LD_INT 22
19312: PUSH
19313: LD_EXP 2
19317: PUSH
19318: EMPTY
19319: LIST
19320: LIST
19321: PUSH
19322: EMPTY
19323: LIST
19324: LIST
19325: LIST
19326: PPUSH
19327: CALL_OW 69
19331: ST_TO_ADDR
// my_eng = FilterAllUnits ( [ [ f_type , unit_human ] , [ f_class , class_engineer ] , [ f_side , americans ] ] ) ;
19332: LD_ADDR_VAR 0 2
19336: PUSH
19337: LD_INT 21
19339: PUSH
19340: LD_INT 1
19342: PUSH
19343: EMPTY
19344: LIST
19345: LIST
19346: PUSH
19347: LD_INT 25
19349: PUSH
19350: LD_INT 2
19352: PUSH
19353: EMPTY
19354: LIST
19355: LIST
19356: PUSH
19357: LD_INT 22
19359: PUSH
19360: LD_EXP 2
19364: PUSH
19365: EMPTY
19366: LIST
19367: LIST
19368: PUSH
19369: EMPTY
19370: LIST
19371: LIST
19372: LIST
19373: PPUSH
19374: CALL_OW 69
19378: ST_TO_ADDR
// if my_depots = 0 and my_eng = 0 then
19379: LD_VAR 0 1
19383: PUSH
19384: LD_INT 0
19386: EQUAL
19387: PUSH
19388: LD_VAR 0 2
19392: PUSH
19393: LD_INT 0
19395: EQUAL
19396: AND
19397: IFFALSE 19412
// begin YouLost ( Engineer ) ;
19399: LD_STRING Engineer
19401: PPUSH
19402: CALL_OW 104
// ExitGame ;
19406: CALL_OW 341
// end else
19410: GO 19413
// enable ;
19412: ENABLE
// end ;
19413: PPOPN 2
19415: END
// every 0 0$5 trigger IsDead ( John ) do
19416: LD_EXP 6
19420: PPUSH
19421: CALL_OW 301
19425: IFFALSE 19441
19427: GO 19429
19429: DISABLE
// begin YouLost ( JMM ) ;
19430: LD_STRING JMM
19432: PPUSH
19433: CALL_OW 104
// ExitGame ;
19437: CALL_OW 341
// end ;
19441: END
// every 0 0$5 trigger IsDead ( dep1 ) or IsDead ( dep2 ) do
19442: LD_INT 1
19444: PPUSH
19445: CALL_OW 301
19449: PUSH
19450: LD_INT 10
19452: PPUSH
19453: CALL_OW 301
19457: OR
19458: IFFALSE 19470
19460: GO 19462
19462: DISABLE
// begin YouLost ( DepotDestroyed ) ;
19463: LD_STRING DepotDestroyed
19465: PPUSH
19466: CALL_OW 104
// end ;
19470: END
// every 0 0$2 trigger GetSide ( dep1 ) = russians marked 17 do
19471: LD_INT 1
19473: PPUSH
19474: CALL_OW 255
19478: PUSH
19479: LD_EXP 4
19483: EQUAL
19484: IFFALSE 19521
19486: GO 19488
19488: DISABLE
// begin wait ( 0 0$30 ) ;
19489: LD_INT 1050
19491: PPUSH
19492: CALL_OW 67
// if GetSide ( dep1 ) = russians then
19496: LD_INT 1
19498: PPUSH
19499: CALL_OW 255
19503: PUSH
19504: LD_EXP 4
19508: EQUAL
19509: IFFALSE 19520
// YouLost ( DepotCaptured ) else
19511: LD_STRING DepotCaptured
19513: PPUSH
19514: CALL_OW 104
19518: GO 19521
// enable ;
19520: ENABLE
// end ;
19521: END
// every 0 0$1 trigger end_of_m do var m ;
19522: LD_LOC 5
19526: IFFALSE 20000
19528: GO 19530
19530: DISABLE
19531: LD_INT 0
19533: PPUSH
// begin if GetSide ( Mikhail ) = americans then
19534: LD_EXP 63
19538: PPUSH
19539: CALL_OW 255
19543: PUSH
19544: LD_EXP 2
19548: EQUAL
19549: IFFALSE 19565
// SetSide ( Mikhail , russians1 ) ;
19551: LD_EXP 63
19555: PPUSH
19556: LD_EXP 5
19560: PPUSH
19561: CALL_OW 235
// if lost_units < 3 then
19565: LD_EXP 88
19569: PUSH
19570: LD_INT 3
19572: LESS
19573: IFFALSE 19585
// m = 1 else
19575: LD_ADDR_VAR 0 1
19579: PUSH
19580: LD_INT 1
19582: ST_TO_ADDR
19583: GO 19594
// m := - 1 ;
19585: LD_ADDR_VAR 0 1
19589: PUSH
19590: LD_INT 1
19592: NEG
19593: ST_TO_ADDR
// if Mikhails_outcome = 1 and GetLives ( Mikhail ) = 0 then
19594: LD_LOC 3
19598: PUSH
19599: LD_INT 1
19601: EQUAL
19602: PUSH
19603: LD_EXP 63
19607: PPUSH
19608: CALL_OW 256
19612: PUSH
19613: LD_INT 0
19615: EQUAL
19616: AND
19617: IFFALSE 19628
// Mikhails_outcome = - 1 ;
19619: LD_ADDR_LOC 3
19623: PUSH
19624: LD_INT 1
19626: NEG
19627: ST_TO_ADDR
// AddMedal ( Cans , GetResourceType ( dep1 , mat_cans ) >= 150 ) ;
19628: LD_STRING Cans
19630: PPUSH
19631: LD_INT 1
19633: PPUSH
19634: LD_INT 1
19636: PPUSH
19637: CALL_OW 275
19641: PUSH
19642: LD_INT 150
19644: GREATEREQUAL
19645: PPUSH
19646: CALL_OW 101
// AddMedal ( Deaths , m ) ;
19650: LD_STRING Deaths
19652: PPUSH
19653: LD_VAR 0 1
19657: PPUSH
19658: CALL_OW 101
// AddMedal ( Prisoner , Mikhails_outcome ) ;
19662: LD_STRING Prisoner
19664: PPUSH
19665: LD_LOC 3
19669: PPUSH
19670: CALL_OW 101
// GiveMedals ( MAIN ) ;
19674: LD_STRING MAIN
19676: PPUSH
19677: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_alive ] , [ f_side , americans ] , [ f_type , unit_human ] ] ) ) ;
19681: LD_INT 51
19683: PUSH
19684: EMPTY
19685: LIST
19686: PUSH
19687: LD_INT 22
19689: PUSH
19690: LD_EXP 2
19694: PUSH
19695: EMPTY
19696: LIST
19697: LIST
19698: PUSH
19699: LD_INT 21
19701: PUSH
19702: LD_INT 1
19704: PUSH
19705: EMPTY
19706: LIST
19707: LIST
19708: PUSH
19709: EMPTY
19710: LIST
19711: LIST
19712: LIST
19713: PPUSH
19714: CALL_OW 69
19718: PPUSH
19719: CALL_OW 43
// SaveCharacters ( John , JMM ) ;
19723: LD_EXP 6
19727: PPUSH
19728: LD_STRING JMM
19730: PPUSH
19731: CALL_OW 38
// SaveCharacters ( Bobby , Bobby ) ;
19735: LD_EXP 8
19739: PPUSH
19740: LD_STRING Bobby
19742: PPUSH
19743: CALL_OW 38
// SaveCharacters ( Cyrus , Cyrus ) ;
19747: LD_EXP 7
19751: PPUSH
19752: LD_STRING Cyrus
19754: PPUSH
19755: CALL_OW 38
// SaveCharacters ( Lisa , Lisa ) ;
19759: LD_EXP 11
19763: PPUSH
19764: LD_STRING Lisa
19766: PPUSH
19767: CALL_OW 38
// if GetSide ( Khatam ) <> americans then
19771: LD_EXP 9
19775: PPUSH
19776: CALL_OW 255
19780: PUSH
19781: LD_EXP 2
19785: NONEQUAL
19786: IFFALSE 19800
// SetLives ( Khatam , 0 ) ;
19788: LD_EXP 9
19792: PPUSH
19793: LD_INT 0
19795: PPUSH
19796: CALL_OW 234
// SaveCharacters ( Khatam , Khatam ) ;
19800: LD_EXP 9
19804: PPUSH
19805: LD_STRING Khatam
19807: PPUSH
19808: CALL_OW 38
// if not ( Mikhail_status in [ 1 , 4 , 5 ] ) then
19812: LD_LOC 4
19816: PUSH
19817: LD_INT 1
19819: PUSH
19820: LD_INT 4
19822: PUSH
19823: LD_INT 5
19825: PUSH
19826: EMPTY
19827: LIST
19828: LIST
19829: LIST
19830: IN
19831: NOT
19832: IFFALSE 19846
// SetLives ( Mikhail , 0 ) ;
19834: LD_EXP 63
19838: PPUSH
19839: LD_INT 0
19841: PPUSH
19842: CALL_OW 234
// SaveCharacters ( Mikhail , Mikhail ) ;
19846: LD_EXP 63
19850: PPUSH
19851: LD_STRING Mikhail
19853: PPUSH
19854: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_ok ] , [ f_side , americans ] , [ f_type , unit_human ] ] ) diff [ John , Bobby , Cyrus , Lisa , Khatam , Mikhail ] , other_survivors ) ;
19858: LD_INT 50
19860: PUSH
19861: EMPTY
19862: LIST
19863: PUSH
19864: LD_INT 22
19866: PUSH
19867: LD_EXP 2
19871: PUSH
19872: EMPTY
19873: LIST
19874: LIST
19875: PUSH
19876: LD_INT 21
19878: PUSH
19879: LD_INT 1
19881: PUSH
19882: EMPTY
19883: LIST
19884: LIST
19885: PUSH
19886: EMPTY
19887: LIST
19888: LIST
19889: LIST
19890: PPUSH
19891: CALL_OW 69
19895: PUSH
19896: LD_EXP 6
19900: PUSH
19901: LD_EXP 8
19905: PUSH
19906: LD_EXP 7
19910: PUSH
19911: LD_EXP 11
19915: PUSH
19916: LD_EXP 9
19920: PUSH
19921: LD_EXP 63
19925: PUSH
19926: EMPTY
19927: LIST
19928: LIST
19929: LIST
19930: LIST
19931: LIST
19932: LIST
19933: DIFF
19934: PPUSH
19935: LD_STRING other_survivors
19937: PPUSH
19938: CALL_OW 38
// SaveVariable ( GetResourceType ( dep1 , mat_cans ) , us2cans ) ;
19942: LD_INT 1
19944: PPUSH
19945: LD_INT 1
19947: PPUSH
19948: CALL_OW 275
19952: PPUSH
19953: LD_STRING us2cans
19955: PPUSH
19956: CALL_OW 39
// SaveVariable ( JMMInVehicle , us2JMMInVehicle ) ;
19960: LD_EXP 116
19964: PPUSH
19965: LD_STRING us2JMMInVehicle
19967: PPUSH
19968: CALL_OW 39
// SaveVariable ( CyrusInVehicle , us2CyrusInVehicle ) ;
19972: LD_EXP 117
19976: PPUSH
19977: LD_STRING us2CyrusInVehicle
19979: PPUSH
19980: CALL_OW 39
// SaveVariable ( Mikhail_status , us2mikhail_state ) ;
19984: LD_LOC 4
19988: PPUSH
19989: LD_STRING us2mikhail_state
19991: PPUSH
19992: CALL_OW 39
// YouWin ;
19996: CALL_OW 103
// end ;
20000: PPOPN 1
20002: END
// on DialogueSkipped ( i ) do begin Skip = true ;
20003: LD_ADDR_EXP 100
20007: PUSH
20008: LD_INT 1
20010: ST_TO_ADDR
// end ;
20011: PPOPN 1
20013: END
// on LeaveBuilding ( building , Un ) do var answer ;
20014: LD_INT 0
20016: PPUSH
// begin if ( building = dep1 ) and ( Un = Mikhail ) and Mikhails_Escape_Disabled then
20017: LD_VAR 0 1
20021: PUSH
20022: LD_INT 1
20024: EQUAL
20025: PUSH
20026: LD_VAR 0 2
20030: PUSH
20031: LD_EXP 63
20035: EQUAL
20036: AND
20037: PUSH
20038: LD_EXP 89
20042: AND
20043: IFFALSE 20417
// begin SetSide ( Mikhail , russians1 ) ;
20045: LD_EXP 63
20049: PPUSH
20050: LD_EXP 5
20054: PPUSH
20055: CALL_OW 235
// Mikhail_in_depot = false ;
20059: LD_ADDR_EXP 38
20063: PUSH
20064: LD_INT 0
20066: ST_TO_ADDR
// answer = Query ( QMikh2 ) ;
20067: LD_ADDR_VAR 0 3
20071: PUSH
20072: LD_STRING QMikh2
20074: PPUSH
20075: CALL_OW 97
20079: ST_TO_ADDR
// case answer of 1 :
20080: LD_VAR 0 3
20084: PUSH
20085: LD_INT 1
20087: DOUBLE
20088: EQUAL
20089: IFTRUE 20093
20091: GO 20227
20093: POP
// begin Mikhails_Escape_Disabled = false ;
20094: LD_ADDR_EXP 89
20098: PUSH
20099: LD_INT 0
20101: ST_TO_ADDR
// target_of_escape = [ 4 , 6 ] ;
20102: LD_ADDR_LOC 10
20106: PUSH
20107: LD_INT 4
20109: PUSH
20110: LD_INT 6
20112: PUSH
20113: EMPTY
20114: LIST
20115: LIST
20116: ST_TO_ADDR
// PlaceUnitXY ( Mikhail , 52 , 13 , false ) ;
20117: LD_EXP 63
20121: PPUSH
20122: LD_INT 52
20124: PPUSH
20125: LD_INT 13
20127: PPUSH
20128: LD_INT 0
20130: PPUSH
20131: CALL_OW 48
// Mikhails_lives = GetLives ( Mikhail ) ;
20135: LD_ADDR_EXP 48
20139: PUSH
20140: LD_EXP 63
20144: PPUSH
20145: CALL_OW 256
20149: ST_TO_ADDR
// enable ( Mikhails_escape ) ;
20150: LD_EXP 43
20154: ENABLE_MARKED
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
20155: LD_EXP 2
20159: PPUSH
20160: LD_EXP 5
20164: PPUSH
20165: LD_INT 2
20167: PPUSH
20168: LD_INT 1
20170: PPUSH
20171: CALL_OW 80
// SetSide ( Mikhail , russians1 ) ;
20175: LD_EXP 63
20179: PPUSH
20180: LD_EXP 5
20184: PPUSH
20185: CALL_OW 235
// AddComMoveXY ( Mikhail , target_of_escape [ 1 ] , target_of_escape [ 2 ] ) ;
20189: LD_EXP 63
20193: PPUSH
20194: LD_LOC 10
20198: PUSH
20199: LD_INT 1
20201: ARRAY
20202: PPUSH
20203: LD_LOC 10
20207: PUSH
20208: LD_INT 2
20210: ARRAY
20211: PPUSH
20212: CALL_OW 171
// AddComHold ( Mikhail ) ;
20216: LD_EXP 63
20220: PPUSH
20221: CALL_OW 200
// end ; 2 :
20225: GO 20417
20227: LD_INT 2
20229: DOUBLE
20230: EQUAL
20231: IFTRUE 20235
20233: GO 20359
20235: POP
// begin disable ( great_escape ) ;
20236: LD_EXP 39
20240: DISABLE_MARKED
// wait ( 0 0$2 ) ;
20241: LD_INT 70
20243: PPUSH
20244: CALL_OW 67
// repeat ComMoveXY ( Mikhail , 52 , 13 ) ;
20248: LD_EXP 63
20252: PPUSH
20253: LD_INT 52
20255: PPUSH
20256: LD_INT 13
20258: PPUSH
20259: CALL_OW 111
// AddComHold ( Mikhail ) ;
20263: LD_EXP 63
20267: PPUSH
20268: CALL_OW 200
// wait ( 0 0$0.5 ) ;
20272: LD_INT 18
20274: PPUSH
20275: CALL_OW 67
// until IsAt ( Mikhail , 52 , 13 ) ;
20279: LD_EXP 63
20283: PPUSH
20284: LD_INT 52
20286: PPUSH
20287: LD_INT 13
20289: PPUSH
20290: CALL_OW 307
20294: IFFALSE 20248
// SetSide ( Mikhail , americans ) ;
20296: LD_EXP 63
20300: PPUSH
20301: LD_EXP 2
20305: PPUSH
20306: CALL_OW 235
// repeat ComEnterUnit ( Mikhail , dep1 ) ;
20310: LD_EXP 63
20314: PPUSH
20315: LD_INT 1
20317: PPUSH
20318: CALL_OW 120
// Wait ( 1 ) ;
20322: LD_INT 1
20324: PPUSH
20325: CALL_OW 67
// until IsInUnit ( Mikhail ) = dep1 ;
20329: LD_EXP 63
20333: PPUSH
20334: CALL_OW 310
20338: PUSH
20339: LD_INT 1
20341: EQUAL
20342: IFFALSE 20310
// Mikhail_in_depot = true ;
20344: LD_ADDR_EXP 38
20348: PUSH
20349: LD_INT 1
20351: ST_TO_ADDR
// enable ( great_escape ) ;
20352: LD_EXP 39
20356: ENABLE_MARKED
// end ; 3 :
20357: GO 20417
20359: LD_INT 3
20361: DOUBLE
20362: EQUAL
20363: IFTRUE 20367
20365: GO 20416
20367: POP
// begin ComMoveXY ( Mikhail , 4 , 6 ) ;
20368: LD_EXP 63
20372: PPUSH
20373: LD_INT 4
20375: PPUSH
20376: LD_INT 6
20378: PPUSH
20379: CALL_OW 111
// AddComHold ( Mikhail ) ;
20383: LD_EXP 63
20387: PPUSH
20388: CALL_OW 200
// enable ( remove_mikhail ) ;
20392: LD_EXP 41
20396: ENABLE_MARKED
// Mikhails_outcome = - 1 ;
20397: LD_ADDR_LOC 3
20401: PUSH
20402: LD_INT 1
20404: NEG
20405: ST_TO_ADDR
// Mikhail_status := 1 ;
20406: LD_ADDR_LOC 4
20410: PUSH
20411: LD_INT 1
20413: ST_TO_ADDR
// end ; end ;
20414: GO 20417
20416: POP
// end ; end ;
20417: PPOPN 3
20419: END
// on BuildingCaptured ( build , origside , eng ) do begin if ( build = lab1 ) and ( origside = russians ) then
20420: LD_VAR 0 1
20424: PUSH
20425: LD_INT 23
20427: EQUAL
20428: PUSH
20429: LD_VAR 0 2
20433: PUSH
20434: LD_EXP 4
20438: EQUAL
20439: AND
20440: IFFALSE 20450
// begin Hint ( Lab ) ;
20442: LD_STRING Lab
20444: PPUSH
20445: CALL_OW 339
// disable ;
20449: DISABLE
// end ; end ;
20450: PPOPN 3
20452: END
// on HumanDestroyed ( un , side , nation , x , y , direction , sex , class ) do begin if side = americans then
20453: LD_VAR 0 2
20457: PUSH
20458: LD_EXP 2
20462: EQUAL
20463: IFFALSE 20479
// lost_units = lost_units + 1 ;
20465: LD_ADDR_EXP 88
20469: PUSH
20470: LD_EXP 88
20474: PUSH
20475: LD_INT 1
20477: PLUS
20478: ST_TO_ADDR
// end ; end_of_file
20479: PPOPN 8
20481: END
// export count5 ; export Brestworks ; export RusN_States ; export RusN ; export function InitNorthBase ; var Un ; begin
20482: LD_INT 0
20484: PPUSH
20485: PPUSH
// RusN_States = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
20486: LD_ADDR_EXP 120
20490: PUSH
20491: LD_INT 0
20493: PUSH
20494: LD_INT 0
20496: PUSH
20497: LD_INT 0
20499: PUSH
20500: LD_INT 0
20502: PUSH
20503: LD_INT 0
20505: PUSH
20506: LD_INT 0
20508: PUSH
20509: LD_INT 0
20511: PUSH
20512: LD_INT 0
20514: PUSH
20515: LD_INT 0
20517: PUSH
20518: LD_INT 0
20520: PUSH
20521: LD_INT 0
20523: PUSH
20524: EMPTY
20525: LIST
20526: LIST
20527: LIST
20528: LIST
20529: LIST
20530: LIST
20531: LIST
20532: LIST
20533: LIST
20534: LIST
20535: LIST
20536: ST_TO_ADDR
// RusN = [ RusNSo1 , RusNSo2 , RusNSo3 , RusNSo4 , guard1 , guard2 , RusNE1 , RusNSc1 , RusNSo5 , RusNSo6 ] ;
20537: LD_ADDR_EXP 121
20541: PUSH
20542: LD_INT 3
20544: PUSH
20545: LD_INT 14
20547: PUSH
20548: LD_INT 27
20550: PUSH
20551: LD_INT 28
20553: PUSH
20554: LD_INT 11
20556: PUSH
20557: LD_INT 12
20559: PUSH
20560: LD_INT 26
20562: PUSH
20563: LD_INT 25
20565: PUSH
20566: LD_INT 24
20568: PUSH
20569: LD_INT 31
20571: PUSH
20572: EMPTY
20573: LIST
20574: LIST
20575: LIST
20576: LIST
20577: LIST
20578: LIST
20579: LIST
20580: LIST
20581: LIST
20582: LIST
20583: ST_TO_ADDR
// count5 = 0 ;
20584: LD_ADDR_EXP 118
20588: PUSH
20589: LD_INT 0
20591: ST_TO_ADDR
// Brestworks = [ Brw1 , Brw2 ] ;
20592: LD_ADDR_EXP 119
20596: PUSH
20597: LD_INT 29
20599: PUSH
20600: LD_INT 9
20602: PUSH
20603: EMPTY
20604: LIST
20605: LIST
20606: ST_TO_ADDR
// for Un in RusN do
20607: LD_ADDR_VAR 0 2
20611: PUSH
20612: LD_EXP 121
20616: PUSH
20617: FOR_IN
20618: IFFALSE 20631
// ComRemember ( Un ) ;
20620: LD_VAR 0 2
20624: PPUSH
20625: CALL_OW 143
20629: GO 20617
20631: POP
20632: POP
// if not ( IsDead ( Brw1 ) ) then
20633: LD_INT 29
20635: PPUSH
20636: CALL_OW 301
20640: NOT
20641: IFFALSE 20653
// ComEnterUnit ( Guard1 , Brw1 ) ;
20643: LD_INT 11
20645: PPUSH
20646: LD_INT 29
20648: PPUSH
20649: CALL_OW 120
// if not ( IsDead ( Brw2 ) ) then
20653: LD_INT 9
20655: PPUSH
20656: CALL_OW 301
20660: NOT
20661: IFFALSE 20673
// ComEnterUnit ( Guard2 , Brw2 ) ;
20663: LD_INT 12
20665: PPUSH
20666: LD_INT 9
20668: PPUSH
20669: CALL_OW 120
// if not ( IsDead ( Brw3 ) ) then
20673: LD_INT 30
20675: PPUSH
20676: CALL_OW 301
20680: NOT
20681: IFFALSE 20693
// ComEnterUnit ( Guard3 , Brw3 ) ;
20683: LD_INT 7
20685: PPUSH
20686: LD_INT 30
20688: PPUSH
20689: CALL_OW 120
// end ;
20693: LD_VAR 0 1
20697: RET
// export function WaitJob ( list_of_units , reaction ) ; var i , busy ; begin
20698: LD_INT 0
20700: PPUSH
20701: PPUSH
20702: PPUSH
// wait ( 2 ) ;
20703: LD_INT 2
20705: PPUSH
20706: CALL_OW 67
// repeat busy = false ;
20710: LD_ADDR_VAR 0 5
20714: PUSH
20715: LD_INT 0
20717: ST_TO_ADDR
// for i in list_of_units do
20718: LD_ADDR_VAR 0 4
20722: PUSH
20723: LD_VAR 0 1
20727: PUSH
20728: FOR_IN
20729: IFFALSE 20763
// if IsOk ( i ) then
20731: LD_VAR 0 4
20735: PPUSH
20736: CALL_OW 302
20740: IFFALSE 20761
// if IsBusy ( i ) then
20742: LD_VAR 0 4
20746: PPUSH
20747: CALL_OW 315
20751: IFFALSE 20761
// busy = true ;
20753: LD_ADDR_VAR 0 5
20757: PUSH
20758: LD_INT 1
20760: ST_TO_ADDR
20761: GO 20728
20763: POP
20764: POP
// if busy then
20765: LD_VAR 0 5
20769: IFFALSE 20784
// wait ( 0 0$1 * reaction ) ;
20771: LD_INT 35
20773: PUSH
20774: LD_VAR 0 2
20778: MUL
20779: PPUSH
20780: CALL_OW 67
// until not ( busy ) ;
20784: LD_VAR 0 5
20788: NOT
20789: IFFALSE 20710
// end ;
20791: LD_VAR 0 3
20795: RET
// function WaitNearUnit ( target_unit , dist , list_of_units , reaction ) ; var i , are_near ; begin
20796: LD_INT 0
20798: PPUSH
20799: PPUSH
20800: PPUSH
// wait ( 2 ) ;
20801: LD_INT 2
20803: PPUSH
20804: CALL_OW 67
// repeat are_near = true ;
20808: LD_ADDR_VAR 0 7
20812: PUSH
20813: LD_INT 1
20815: ST_TO_ADDR
// for i in list_of_units do
20816: LD_ADDR_VAR 0 6
20820: PUSH
20821: LD_VAR 0 3
20825: PUSH
20826: FOR_IN
20827: IFFALSE 20883
// if IsOk ( i ) and IsOk ( target_unit ) then
20829: LD_VAR 0 6
20833: PPUSH
20834: CALL_OW 302
20838: PUSH
20839: LD_VAR 0 1
20843: PPUSH
20844: CALL_OW 302
20848: AND
20849: IFFALSE 20881
// if GetDistUnits ( target_unit , i ) > dist then
20851: LD_VAR 0 1
20855: PPUSH
20856: LD_VAR 0 6
20860: PPUSH
20861: CALL_OW 296
20865: PUSH
20866: LD_VAR 0 2
20870: GREATER
20871: IFFALSE 20881
// are_near = false ;
20873: LD_ADDR_VAR 0 7
20877: PUSH
20878: LD_INT 0
20880: ST_TO_ADDR
20881: GO 20826
20883: POP
20884: POP
// if not ( are_near ) then
20885: LD_VAR 0 7
20889: NOT
20890: IFFALSE 20905
// wait ( 0 0$1 * reaction ) ;
20892: LD_INT 35
20894: PUSH
20895: LD_VAR 0 4
20899: MUL
20900: PPUSH
20901: CALL_OW 67
// until are_near ;
20905: LD_VAR 0 7
20909: IFFALSE 20808
// end ;
20911: LD_VAR 0 5
20915: RET
// every 0 0$1 do var Un , hlp ;
20916: GO 20918
20918: DISABLE
20919: LD_INT 0
20921: PPUSH
20922: PPUSH
// begin hlp = UnitFilter ( RusN , [ [ f_alive ] , [ f_placed ] ] ) ;
20923: LD_ADDR_VAR 0 2
20927: PUSH
20928: LD_EXP 121
20932: PPUSH
20933: LD_INT 51
20935: PUSH
20936: EMPTY
20937: LIST
20938: PUSH
20939: LD_INT 52
20941: PUSH
20942: EMPTY
20943: LIST
20944: PUSH
20945: EMPTY
20946: LIST
20947: LIST
20948: PPUSH
20949: CALL_OW 72
20953: ST_TO_ADDR
// RusN = hlp ;
20954: LD_ADDR_EXP 121
20958: PUSH
20959: LD_VAR 0 2
20963: ST_TO_ADDR
// for Un in RusN do
20964: LD_ADDR_VAR 0 1
20968: PUSH
20969: LD_EXP 121
20973: PUSH
20974: FOR_IN
20975: IFFALSE 21008
// if ( GetDistUnits ( Un , Dep1 ) ) > Attack_Distance then
20977: LD_VAR 0 1
20981: PPUSH
20982: LD_INT 1
20984: PPUSH
20985: CALL_OW 296
20989: PUSH
20990: LD_EXP 83
20994: GREATER
20995: IFFALSE 21006
// ComReturn ( Un ) ;
20997: LD_VAR 0 1
21001: PPUSH
21002: CALL_OW 144
21006: GO 20974
21008: POP
21009: POP
// if RusN <> 0 then
21010: LD_EXP 121
21014: PUSH
21015: LD_INT 0
21017: NONEQUAL
21018: IFFALSE 21021
// enable ;
21020: ENABLE
// end ;
21021: PPOPN 2
21023: END
// function Go_to_physician ( ill_unit ) ; var start_posX , start_posY ; begin
21024: LD_INT 0
21026: PPUSH
21027: PPUSH
21028: PPUSH
// if IsOk ( RusNSc1 ) and IsLive ( ill_unit ) then
21029: LD_INT 25
21031: PPUSH
21032: CALL_OW 302
21036: PUSH
21037: LD_VAR 0 1
21041: PPUSH
21042: CALL_OW 300
21046: AND
21047: IFFALSE 21237
// begin start_posX = GetX ( ill_unit ) ;
21049: LD_ADDR_VAR 0 3
21053: PUSH
21054: LD_VAR 0 1
21058: PPUSH
21059: CALL_OW 250
21063: ST_TO_ADDR
// start_posY = GetY ( ill_unit ) ;
21064: LD_ADDR_VAR 0 4
21068: PUSH
21069: LD_VAR 0 1
21073: PPUSH
21074: CALL_OW 251
21078: ST_TO_ADDR
// ComMoveXY ( ill_unit , 54 , 16 ) ;
21079: LD_VAR 0 1
21083: PPUSH
21084: LD_INT 54
21086: PPUSH
21087: LD_INT 16
21089: PPUSH
21090: CALL_OW 111
// AddComMoveUnit ( ill_unit , RusNSc1 ) ;
21094: LD_VAR 0 1
21098: PPUSH
21099: LD_INT 25
21101: PPUSH
21102: CALL_OW 172
// WaitNearUnit ( RusNSc1 , 2 , [ ill_unit ] , 0.5 ) ;
21106: LD_INT 25
21108: PPUSH
21109: LD_INT 2
21111: PPUSH
21112: LD_VAR 0 1
21116: PUSH
21117: EMPTY
21118: LIST
21119: PPUSH
21120: LD_REAL  5.00000000000000E-0001
21123: PPUSH
21124: CALL 20796 0 4
// while ( RusN_States [ 9 ] <> 0 ) do
21128: LD_EXP 120
21132: PUSH
21133: LD_INT 9
21135: ARRAY
21136: PUSH
21137: LD_INT 0
21139: NONEQUAL
21140: IFFALSE 21151
// wait ( 1 ) ;
21142: LD_INT 1
21144: PPUSH
21145: CALL_OW 67
21149: GO 21128
// Replace ( RusN_States , 9 , 1 ) ;
21151: LD_EXP 120
21155: PPUSH
21156: LD_INT 9
21158: PPUSH
21159: LD_INT 1
21161: PPUSH
21162: CALL_OW 1
// ComHeal ( RusNSc1 , ill_unit ) ;
21166: LD_INT 25
21168: PPUSH
21169: LD_VAR 0 1
21173: PPUSH
21174: CALL_OW 128
// WaitJob ( RusNSc1 , 0.5 ) ;
21178: LD_INT 25
21180: PPUSH
21181: LD_REAL  5.00000000000000E-0001
21184: PPUSH
21185: CALL 20698 0 2
// AddComReturn ( RusNSc1 ) ;
21189: LD_INT 25
21191: PPUSH
21192: CALL_OW 204
// AddComHold ( RusNSc1 ) ;
21196: LD_INT 25
21198: PPUSH
21199: CALL_OW 200
// Replace ( RusN_States , 9 , 0 ) ;
21203: LD_EXP 120
21207: PPUSH
21208: LD_INT 9
21210: PPUSH
21211: LD_INT 0
21213: PPUSH
21214: CALL_OW 1
// AddComMoveXY ( ill_unit , start_posX , start_posY ) ;
21218: LD_VAR 0 1
21222: PPUSH
21223: LD_VAR 0 3
21227: PPUSH
21228: LD_VAR 0 4
21232: PPUSH
21233: CALL_OW 171
// end ; end ;
21237: LD_VAR 0 2
21241: RET
// function Healing_Person ( person , lives ) ; begin
21242: LD_INT 0
21244: PPUSH
// if GetLives ( person ) < lives then
21245: LD_VAR 0 1
21249: PPUSH
21250: CALL_OW 256
21254: PUSH
21255: LD_VAR 0 2
21259: LESS
21260: IFFALSE 21645
// begin if person = RusNSo1 then
21262: LD_VAR 0 1
21266: PUSH
21267: LD_INT 3
21269: EQUAL
21270: IFFALSE 21289
// Replace ( RusN_States , 1 , 2 ) else
21272: LD_EXP 120
21276: PPUSH
21277: LD_INT 1
21279: PPUSH
21280: LD_INT 2
21282: PPUSH
21283: CALL_OW 1
21287: GO 21449
// if person = RusNSo2 then
21289: LD_VAR 0 1
21293: PUSH
21294: LD_INT 14
21296: EQUAL
21297: IFFALSE 21316
// Replace ( RusN_States , 2 , 2 ) else
21299: LD_EXP 120
21303: PPUSH
21304: LD_INT 2
21306: PPUSH
21307: LD_INT 2
21309: PPUSH
21310: CALL_OW 1
21314: GO 21449
// if person = RusNSo3 then
21316: LD_VAR 0 1
21320: PUSH
21321: LD_INT 27
21323: EQUAL
21324: IFFALSE 21343
// Replace ( RusN_States , 3 , 2 ) else
21326: LD_EXP 120
21330: PPUSH
21331: LD_INT 3
21333: PPUSH
21334: LD_INT 2
21336: PPUSH
21337: CALL_OW 1
21341: GO 21449
// if person = RusNSo4 then
21343: LD_VAR 0 1
21347: PUSH
21348: LD_INT 28
21350: EQUAL
21351: IFFALSE 21370
// Replace ( RusN_States , 4 , 2 ) else
21353: LD_EXP 120
21357: PPUSH
21358: LD_INT 4
21360: PPUSH
21361: LD_INT 2
21363: PPUSH
21364: CALL_OW 1
21368: GO 21449
// if person = RusNE1 then
21370: LD_VAR 0 1
21374: PUSH
21375: LD_INT 26
21377: EQUAL
21378: IFFALSE 21397
// Replace ( RusN_States , 8 , 2 ) else
21380: LD_EXP 120
21384: PPUSH
21385: LD_INT 8
21387: PPUSH
21388: LD_INT 2
21390: PPUSH
21391: CALL_OW 1
21395: GO 21449
// if person = RusNSo5 then
21397: LD_VAR 0 1
21401: PUSH
21402: LD_INT 24
21404: EQUAL
21405: IFFALSE 21424
// Replace ( RusN_States , 10 , 2 ) else
21407: LD_EXP 120
21411: PPUSH
21412: LD_INT 10
21414: PPUSH
21415: LD_INT 2
21417: PPUSH
21418: CALL_OW 1
21422: GO 21449
// if person = RusNSo6 then
21424: LD_VAR 0 1
21428: PUSH
21429: LD_INT 31
21431: EQUAL
21432: IFFALSE 21449
// Replace ( RusN_States , 11 , 2 ) ;
21434: LD_EXP 120
21438: PPUSH
21439: LD_INT 11
21441: PPUSH
21442: LD_INT 2
21444: PPUSH
21445: CALL_OW 1
// Go_to_physician ( person ) ;
21449: LD_VAR 0 1
21453: PPUSH
21454: CALL 21024 0 1
// if person = RusNSo1 then
21458: LD_VAR 0 1
21462: PUSH
21463: LD_INT 3
21465: EQUAL
21466: IFFALSE 21485
// Replace ( RusN_States , 1 , 0 ) else
21468: LD_EXP 120
21472: PPUSH
21473: LD_INT 1
21475: PPUSH
21476: LD_INT 0
21478: PPUSH
21479: CALL_OW 1
21483: GO 21645
// if person = RusNSo2 then
21485: LD_VAR 0 1
21489: PUSH
21490: LD_INT 14
21492: EQUAL
21493: IFFALSE 21512
// Replace ( RusN_States , 2 , 0 ) else
21495: LD_EXP 120
21499: PPUSH
21500: LD_INT 2
21502: PPUSH
21503: LD_INT 0
21505: PPUSH
21506: CALL_OW 1
21510: GO 21645
// if person = RusNSo3 then
21512: LD_VAR 0 1
21516: PUSH
21517: LD_INT 27
21519: EQUAL
21520: IFFALSE 21539
// Replace ( RusN_States , 3 , 0 ) else
21522: LD_EXP 120
21526: PPUSH
21527: LD_INT 3
21529: PPUSH
21530: LD_INT 0
21532: PPUSH
21533: CALL_OW 1
21537: GO 21645
// if person = RusNSo4 then
21539: LD_VAR 0 1
21543: PUSH
21544: LD_INT 28
21546: EQUAL
21547: IFFALSE 21566
// Replace ( RusN_States , 4 , 0 ) else
21549: LD_EXP 120
21553: PPUSH
21554: LD_INT 4
21556: PPUSH
21557: LD_INT 0
21559: PPUSH
21560: CALL_OW 1
21564: GO 21645
// if person = RusNE1 then
21566: LD_VAR 0 1
21570: PUSH
21571: LD_INT 26
21573: EQUAL
21574: IFFALSE 21593
// Replace ( RusN_States , 8 , 0 ) else
21576: LD_EXP 120
21580: PPUSH
21581: LD_INT 8
21583: PPUSH
21584: LD_INT 0
21586: PPUSH
21587: CALL_OW 1
21591: GO 21645
// if person = RusNSo5 then
21593: LD_VAR 0 1
21597: PUSH
21598: LD_INT 24
21600: EQUAL
21601: IFFALSE 21620
// Replace ( RusN_States , 10 , 0 ) else
21603: LD_EXP 120
21607: PPUSH
21608: LD_INT 10
21610: PPUSH
21611: LD_INT 0
21613: PPUSH
21614: CALL_OW 1
21618: GO 21645
// if person = RusNSo6 then
21620: LD_VAR 0 1
21624: PUSH
21625: LD_INT 31
21627: EQUAL
21628: IFFALSE 21645
// Replace ( RusN_States , 11 , 0 ) ;
21630: LD_EXP 120
21634: PPUSH
21635: LD_INT 11
21637: PPUSH
21638: LD_INT 0
21640: PPUSH
21641: CALL_OW 1
// end ; end ;
21645: LD_VAR 0 3
21649: RET
// function Select_Unit_With_Min_Lives ( list_of_units , at_least ) ; var i , j , lives , selected_unit , min ; begin
21650: LD_INT 0
21652: PPUSH
21653: PPUSH
21654: PPUSH
21655: PPUSH
21656: PPUSH
21657: PPUSH
// selected_unit = 0 ;
21658: LD_ADDR_VAR 0 7
21662: PUSH
21663: LD_INT 0
21665: ST_TO_ADDR
// j = 0 ;
21666: LD_ADDR_VAR 0 5
21670: PUSH
21671: LD_INT 0
21673: ST_TO_ADDR
// min = 1000 ;
21674: LD_ADDR_VAR 0 8
21678: PUSH
21679: LD_INT 1000
21681: ST_TO_ADDR
// for i in list_of_units do
21682: LD_ADDR_VAR 0 4
21686: PUSH
21687: LD_VAR 0 1
21691: PUSH
21692: FOR_IN
21693: IFFALSE 21770
// begin j = j + 1 ;
21695: LD_ADDR_VAR 0 5
21699: PUSH
21700: LD_VAR 0 5
21704: PUSH
21705: LD_INT 1
21707: PLUS
21708: ST_TO_ADDR
// lives = GetLives ( i ) ;
21709: LD_ADDR_VAR 0 6
21713: PUSH
21714: LD_VAR 0 4
21718: PPUSH
21719: CALL_OW 256
21723: ST_TO_ADDR
// if ( lives > at_least ) and ( lives < min ) then
21724: LD_VAR 0 6
21728: PUSH
21729: LD_VAR 0 2
21733: GREATER
21734: PUSH
21735: LD_VAR 0 6
21739: PUSH
21740: LD_VAR 0 8
21744: LESS
21745: AND
21746: IFFALSE 21768
// begin min = lives ;
21748: LD_ADDR_VAR 0 8
21752: PUSH
21753: LD_VAR 0 6
21757: ST_TO_ADDR
// selected_unit = j ;
21758: LD_ADDR_VAR 0 7
21762: PUSH
21763: LD_VAR 0 5
21767: ST_TO_ADDR
// end ; end ;
21768: GO 21692
21770: POP
21771: POP
// result = selected_unit ;
21772: LD_ADDR_VAR 0 3
21776: PUSH
21777: LD_VAR 0 7
21781: ST_TO_ADDR
// end ;
21782: LD_VAR 0 3
21786: RET
// every 0 0$1 do var un_min_lives ;
21787: GO 21789
21789: DISABLE
21790: LD_INT 0
21792: PPUSH
// begin case RusN_States [ 8 ] of 0 :
21793: LD_EXP 120
21797: PUSH
21798: LD_INT 8
21800: ARRAY
21801: PUSH
21802: LD_INT 0
21804: DOUBLE
21805: EQUAL
21806: IFTRUE 21810
21808: GO 21912
21810: POP
// begin Healing_Person ( RusNE1 , 600 ) ;
21811: LD_INT 26
21813: PPUSH
21814: LD_INT 600
21816: PPUSH
21817: CALL 21242 0 2
// if count5 = 0 then
21821: LD_EXP 118
21825: PUSH
21826: LD_INT 0
21828: EQUAL
21829: IFFALSE 21910
// begin un_min_lives = Select_Unit_With_Min_Lives ( Brestworks , 100 ) ;
21831: LD_ADDR_VAR 0 1
21835: PUSH
21836: LD_EXP 119
21840: PPUSH
21841: LD_INT 100
21843: PPUSH
21844: CALL 21650 0 2
21848: ST_TO_ADDR
// if GetLives ( Brestworks [ un_min_lives ] ) < 1000 then
21849: LD_EXP 119
21853: PUSH
21854: LD_VAR 0 1
21858: ARRAY
21859: PPUSH
21860: CALL_OW 256
21864: PUSH
21865: LD_INT 1000
21867: LESS
21868: IFFALSE 21910
// begin ComStop ( RusNE1 ) ;
21870: LD_INT 26
21872: PPUSH
21873: CALL_OW 141
// ComRepairBuilding ( RusNE1 , Brestworks [ un_min_lives ] ) ;
21877: LD_INT 26
21879: PPUSH
21880: LD_EXP 119
21884: PUSH
21885: LD_VAR 0 1
21889: ARRAY
21890: PPUSH
21891: CALL_OW 130
// Replace ( RusN_States , 8 , 1 ) ;
21895: LD_EXP 120
21899: PPUSH
21900: LD_INT 8
21902: PPUSH
21903: LD_INT 1
21905: PPUSH
21906: CALL_OW 1
// end ; end ; end ; 1 :
21910: GO 21966
21912: LD_INT 1
21914: DOUBLE
21915: EQUAL
21916: IFTRUE 21920
21918: GO 21965
21920: POP
// begin Healing_Person ( RusNE1 , 600 ) ;
21921: LD_INT 26
21923: PPUSH
21924: LD_INT 600
21926: PPUSH
21927: CALL 21242 0 2
// if not ( IsBusy ( RusNE1 ) ) then
21931: LD_INT 26
21933: PPUSH
21934: CALL_OW 315
21938: NOT
21939: IFFALSE 21963
// begin ComReturn ( RusNE1 ) ;
21941: LD_INT 26
21943: PPUSH
21944: CALL_OW 144
// Replace ( RusN_States , 8 , 0 ) ;
21948: LD_EXP 120
21952: PPUSH
21953: LD_INT 8
21955: PPUSH
21956: LD_INT 0
21958: PPUSH
21959: CALL_OW 1
// end ; end ; end ;
21963: GO 21966
21965: POP
// if IsLive ( RusNE1 ) then
21966: LD_INT 26
21968: PPUSH
21969: CALL_OW 300
21973: IFFALSE 21976
// enable ;
21975: ENABLE
// end ;
21976: PPOPN 1
21978: END
// every 0 0$1 do
21979: GO 21981
21981: DISABLE
// begin case RusN_States [ 5 ] of 0 :
21982: LD_EXP 120
21986: PUSH
21987: LD_INT 5
21989: ARRAY
21990: PUSH
21991: LD_INT 0
21993: DOUBLE
21994: EQUAL
21995: IFTRUE 21999
21997: GO 22027
21999: POP
// if not ( IsOk ( Brw1 ) ) then
22000: LD_INT 29
22002: PPUSH
22003: CALL_OW 302
22007: NOT
22008: IFFALSE 22025
// Replace ( RusN_States , 5 , 1 ) ; 1 :
22010: LD_EXP 120
22014: PPUSH
22015: LD_INT 5
22017: PPUSH
22018: LD_INT 1
22020: PPUSH
22021: CALL_OW 1
22025: GO 22094
22027: LD_INT 1
22029: DOUBLE
22030: EQUAL
22031: IFTRUE 22035
22033: GO 22093
22035: POP
// begin if GetLives ( [ guard1 ] ) < Lives_to_Retreat then
22036: LD_INT 11
22038: PUSH
22039: EMPTY
22040: LIST
22041: PPUSH
22042: CALL_OW 256
22046: PUSH
22047: LD_EXP 87
22051: LESS
22052: IFFALSE 22091
// begin Replace ( RusN_States , 5 , 2 ) ;
22054: LD_EXP 120
22058: PPUSH
22059: LD_INT 5
22061: PPUSH
22062: LD_INT 2
22064: PPUSH
22065: CALL_OW 1
// Go_to_physician ( guard1 ) ;
22069: LD_INT 11
22071: PPUSH
22072: CALL 21024 0 1
// Replace ( RusN_States , 5 , 1 ) ;
22076: LD_EXP 120
22080: PPUSH
22081: LD_INT 5
22083: PPUSH
22084: LD_INT 1
22086: PPUSH
22087: CALL_OW 1
// end ; end ; end ;
22091: GO 22094
22093: POP
// if IsLive ( guard1 ) then
22094: LD_INT 11
22096: PPUSH
22097: CALL_OW 300
22101: IFFALSE 22104
// enable ;
22103: ENABLE
// end ;
22104: END
// every 0 0$1 do
22105: GO 22107
22107: DISABLE
// begin case RusN_States [ 6 ] of 0 :
22108: LD_EXP 120
22112: PUSH
22113: LD_INT 6
22115: ARRAY
22116: PUSH
22117: LD_INT 0
22119: DOUBLE
22120: EQUAL
22121: IFTRUE 22125
22123: GO 22153
22125: POP
// if not ( IsOk ( Brw2 ) ) then
22126: LD_INT 9
22128: PPUSH
22129: CALL_OW 302
22133: NOT
22134: IFFALSE 22151
// Replace ( RusN_States , 6 , 1 ) ; 1 :
22136: LD_EXP 120
22140: PPUSH
22141: LD_INT 6
22143: PPUSH
22144: LD_INT 1
22146: PPUSH
22147: CALL_OW 1
22151: GO 22220
22153: LD_INT 1
22155: DOUBLE
22156: EQUAL
22157: IFTRUE 22161
22159: GO 22219
22161: POP
// begin if GetLives ( [ guard2 ] ) < Lives_to_Retreat then
22162: LD_INT 12
22164: PUSH
22165: EMPTY
22166: LIST
22167: PPUSH
22168: CALL_OW 256
22172: PUSH
22173: LD_EXP 87
22177: LESS
22178: IFFALSE 22217
// begin Replace ( RusN_States , 6 , 2 ) ;
22180: LD_EXP 120
22184: PPUSH
22185: LD_INT 6
22187: PPUSH
22188: LD_INT 2
22190: PPUSH
22191: CALL_OW 1
// Go_to_physician ( guard2 ) ;
22195: LD_INT 12
22197: PPUSH
22198: CALL 21024 0 1
// Replace ( RusN_States , 6 , 1 ) ;
22202: LD_EXP 120
22206: PPUSH
22207: LD_INT 6
22209: PPUSH
22210: LD_INT 1
22212: PPUSH
22213: CALL_OW 1
// end ; end ; end ;
22217: GO 22220
22219: POP
// if IsLive ( guard2 ) then
22220: LD_INT 12
22222: PPUSH
22223: CALL_OW 300
22227: IFFALSE 22230
// enable ;
22229: ENABLE
// end ;
22230: END
// every 0 0$1 do
22231: GO 22233
22233: DISABLE
// begin case RusN_States [ 7 ] of 0 :
22234: LD_EXP 120
22238: PUSH
22239: LD_INT 7
22241: ARRAY
22242: PUSH
22243: LD_INT 0
22245: DOUBLE
22246: EQUAL
22247: IFTRUE 22251
22249: GO 22279
22251: POP
// if not ( IsOk ( Brw3 ) ) then
22252: LD_INT 30
22254: PPUSH
22255: CALL_OW 302
22259: NOT
22260: IFFALSE 22277
// Replace ( RusN_States , 7 , 1 ) ; 1 :
22262: LD_EXP 120
22266: PPUSH
22267: LD_INT 7
22269: PPUSH
22270: LD_INT 1
22272: PPUSH
22273: CALL_OW 1
22277: GO 22346
22279: LD_INT 1
22281: DOUBLE
22282: EQUAL
22283: IFTRUE 22287
22285: GO 22345
22287: POP
// begin if GetLives ( [ guard3 ] ) < Lives_to_Retreat then
22288: LD_INT 7
22290: PUSH
22291: EMPTY
22292: LIST
22293: PPUSH
22294: CALL_OW 256
22298: PUSH
22299: LD_EXP 87
22303: LESS
22304: IFFALSE 22343
// begin Replace ( RusN_States , 7 , 2 ) ;
22306: LD_EXP 120
22310: PPUSH
22311: LD_INT 7
22313: PPUSH
22314: LD_INT 2
22316: PPUSH
22317: CALL_OW 1
// Go_to_physician ( guard3 ) ;
22321: LD_INT 7
22323: PPUSH
22324: CALL 21024 0 1
// Replace ( RusN_States , 7 , 1 ) ;
22328: LD_EXP 120
22332: PPUSH
22333: LD_INT 7
22335: PPUSH
22336: LD_INT 1
22338: PPUSH
22339: CALL_OW 1
// end ; end ; end ;
22343: GO 22346
22345: POP
// if IsLive ( guard3 ) then
22346: LD_INT 7
22348: PPUSH
22349: CALL_OW 300
22353: IFFALSE 22356
// enable ;
22355: ENABLE
// end ;
22356: END
// every 0 0$1 do
22357: GO 22359
22359: DISABLE
// begin if RusN_States [ 1 ] = 0 then
22360: LD_EXP 120
22364: PUSH
22365: LD_INT 1
22367: ARRAY
22368: PUSH
22369: LD_INT 0
22371: EQUAL
22372: IFFALSE 22386
// Healing_Person ( RusNSo1 , Lives_to_Retreat ) ;
22374: LD_INT 3
22376: PPUSH
22377: LD_EXP 87
22381: PPUSH
22382: CALL 21242 0 2
// if IsLive ( RusNSo1 ) then
22386: LD_INT 3
22388: PPUSH
22389: CALL_OW 300
22393: IFFALSE 22396
// enable ;
22395: ENABLE
// end ;
22396: END
// every 0 0$1 do
22397: GO 22399
22399: DISABLE
// begin if RusN_States [ 2 ] = 0 then
22400: LD_EXP 120
22404: PUSH
22405: LD_INT 2
22407: ARRAY
22408: PUSH
22409: LD_INT 0
22411: EQUAL
22412: IFFALSE 22426
// Healing_Person ( RusNSo2 , Lives_to_Retreat ) ;
22414: LD_INT 14
22416: PPUSH
22417: LD_EXP 87
22421: PPUSH
22422: CALL 21242 0 2
// if IsLive ( RusNSo2 ) then
22426: LD_INT 14
22428: PPUSH
22429: CALL_OW 300
22433: IFFALSE 22436
// enable ;
22435: ENABLE
// end ;
22436: END
// every 0 0$1 do
22437: GO 22439
22439: DISABLE
// begin if RusN_States [ 3 ] = 0 then
22440: LD_EXP 120
22444: PUSH
22445: LD_INT 3
22447: ARRAY
22448: PUSH
22449: LD_INT 0
22451: EQUAL
22452: IFFALSE 22466
// Healing_Person ( RusNSo3 , Lives_to_Retreat ) ;
22454: LD_INT 27
22456: PPUSH
22457: LD_EXP 87
22461: PPUSH
22462: CALL 21242 0 2
// if IsLive ( RusNSo3 ) then
22466: LD_INT 27
22468: PPUSH
22469: CALL_OW 300
22473: IFFALSE 22476
// enable ;
22475: ENABLE
// end ;
22476: END
// every 0 0$1 do
22477: GO 22479
22479: DISABLE
// begin if RusN_States [ 4 ] = 0 then
22480: LD_EXP 120
22484: PUSH
22485: LD_INT 4
22487: ARRAY
22488: PUSH
22489: LD_INT 0
22491: EQUAL
22492: IFFALSE 22506
// Healing_Person ( RusNSo4 , Lives_to_Retreat ) ;
22494: LD_INT 28
22496: PPUSH
22497: LD_EXP 87
22501: PPUSH
22502: CALL 21242 0 2
// if IsLive ( RusNSo4 ) then
22506: LD_INT 28
22508: PPUSH
22509: CALL_OW 300
22513: IFFALSE 22516
// enable ;
22515: ENABLE
// end ;
22516: END
// every 0 0$1 do
22517: GO 22519
22519: DISABLE
// begin if RusN_States [ 10 ] = 0 then
22520: LD_EXP 120
22524: PUSH
22525: LD_INT 10
22527: ARRAY
22528: PUSH
22529: LD_INT 0
22531: EQUAL
22532: IFFALSE 22546
// Healing_Person ( RusNSo5 , Lives_to_Retreat ) ;
22534: LD_INT 24
22536: PPUSH
22537: LD_EXP 87
22541: PPUSH
22542: CALL 21242 0 2
// if IsLive ( RusNSo5 ) then
22546: LD_INT 24
22548: PPUSH
22549: CALL_OW 300
22553: IFFALSE 22556
// enable ;
22555: ENABLE
// end ;
22556: END
// every 0 0$1 do
22557: GO 22559
22559: DISABLE
// begin if RusN_States [ 11 ] = 0 then
22560: LD_EXP 120
22564: PUSH
22565: LD_INT 11
22567: ARRAY
22568: PUSH
22569: LD_INT 0
22571: EQUAL
22572: IFFALSE 22586
// Healing_Person ( RusNSo6 , Lives_to_Retreat ) ;
22574: LD_INT 31
22576: PPUSH
22577: LD_EXP 87
22581: PPUSH
22582: CALL 21242 0 2
// if IsLive ( RusNSo6 ) then
22586: LD_INT 31
22588: PPUSH
22589: CALL_OW 300
22593: IFFALSE 22596
// enable ;
22595: ENABLE
// end ;
22596: END
// every 0 0$1 + 0 0$0.5 do
22597: GO 22599
22599: DISABLE
// begin count5 = ( count5 + 1 ) mod 5 ;
22600: LD_ADDR_EXP 118
22604: PUSH
22605: LD_EXP 118
22609: PUSH
22610: LD_INT 1
22612: PLUS
22613: PUSH
22614: LD_INT 5
22616: MOD
22617: ST_TO_ADDR
// enable ;
22618: ENABLE
// end ;
22619: END
